Software

  • The Beer Feed

    The Beer Feed is a React.js application that is powered by the Untappd API. It continuously processes the checkin feed for a number of cities and displays only the highly rated checkins and where to find them. You can find the source code available here.

    Live Version

Research

I was previously a graduate student at The Rochester Insitute of Technology
and before that was an undergrad at The University of Minnesota.

  • Software Transactional Memory with Continuations

    Authors: Matthew Le and Matthew Fluet

    Software Transactional Memory (STM) is a concurrency abstraction, where programmers denote transactions with an atomic construct that delimits a collection of reads and writes to shared mutable references. The runtime system then guarantees that all transactions are observed to execute atomically with respect to each other. Traditionally, when the runtime system detects that one transaction conflicts with another, it aborts one of the transactions and restarts its execution from the beginning. This can lead to problems with both execution time and throughput. In this work, we developed a novel approach that uses first-class continuations to restart a conflicting transaction at the point of a conflict, avoiding the re-execution of any work from the beginning of the transaction that has not been compromised. In practice, this allows transactions to complete more quickly, decreasing execution time and increasing throughput.

    Read The Paper
  • Practical and Effective Higher-Order Optimization

    Authors: Lars Bergstrom, Matthew Fluet, Matthew Le, John Reppy, and Nora Sandler.

    Inlining is an optimization that replaces a call to a function with that function's body. Another optimization, copy propagation, replaces a redundant copy of a still-live variable with the original. These two optimizations are practical to implement and effective in first-order languages, but in languages with lexically-scoped first-class functions (aka, closures), these optimizations are not available to code programmed in a higher-order style. With higher-order functions, the analysis challenge has been that the environment at the call site must be the same as at the closure capture location, up to the free variables, or the meaning of the program may change. Olin Shivers' 1991 dissertation called this family of optimizations superĪ’ and he proposed one analysis technique, called reflow, to support these optimizations. Unfortunately, reflow has proven too expensive to implement in practice. This work provides the first practical and effective technique for higher-order inlining and copy propagation, which we call unchanged variable analysis.

    Read The Paper
  • Tracking and Detecting Ocean Eddies

    Ocean eddies are spinning pools of water in the ocean that dominate the ocean's kinetic energy, making them an important phenomenon to monitor. As an undergrad I worked with the Minnesota Expeditions Research group on designing algorithms for detecting and tracking eddies.

    Papers:

    AAAI 2013 ICDM 2013 AAAI 2014

Homebrewing

In addition to developing software, I am also an amateur homebrewer.
Below is an (incomplete) collection of beers that I have made in the past

  • NEIPA 8/30/2020

    Brewed on: August 30, 2020

    More Info
  • Hef 7/23/2020

    Brewed on: July 23, 2020

    More Info
  • NEIPA 6/15/2020

    Brewed on: June 13, 2020

    More Info
  • Belgian Wit

    Brewed on: May 09, 2020

    More Info
  • NEIPA 3/22/2020

    Brewed on: March 22, 2020

    More Info
  • Flanders Red II

    Brewed on: March 15, 2020

    More Info
  • Sour Wheat Beer

    Brewed on: February 04, 2020

    More Info
  • West Coast IPA

    Brewed on: December 29, 2019

    More Info
  • NEIPA 12/2/2019

    Brewed on: December 01, 2019

    More Info
  • Golden Sour

    Brewed on: November 24, 2019

    More Info
  • Sour Saison

    Brewed on: September 29, 2019

    More Info
  • Hef

    Brewed on: September 15, 2019

    More Info
  • Flemish Red

    Brewed on: June 22, 2019

    More Info
  • IPA 5/11/2019

    Brewed on: May 11, 2019

    More Info
  • IPA 02/10/2019

    Brewed on: February 10, 2019

    More Info
  • IPA 12/16/2018

    Brewed on: December 16, 2018

    IPA reusing the Trappist high gravity yeast from the previous batch. Hopped with Huell Mellon and Citra

    More Info
  • Triple

    Brewed on: November 18, 2018

    Classic Belgian Triple fermented with Wyeast Trappist High Gravity. Submitted to Homebrew Alley 2019, scoresheet available here

    More Info
  • Citra Single Hop IPA

    Brewed on: September 29, 2018

    Citra hopped IPA. First experiment with red wheat in IPA recipe.

    More Info
  • Hefeweizen 7/11/2018

    Brewed on: July 11, 2018

    An attempt at a classic Hefeweizen. Brewed during the Summer and fermented hot

    More Info
  • NEIPA 4/7/2018

    Brewed on: April 07, 2018

    Yet another double IPA

    More Info
  • Coffee Stout 1/1/18

    Brewed on: January 01, 2018

    Another iteration of the coffee stout

    More Info
  • Williamsburg Hopped IPA

    Brewed on: September 17, 2017

    An IPA brewed with homegrown hops from a friend in Williamsburg

    More Info
  • Hoptimal Solution

    Brewed on: July 29, 2017

    Third iteration of a New England IPA with a bad pun for a name

    More Info
  • NE IPA 2

    Brewed on: April 22, 2017

    My second take on a New England Style IPA

    More Info
  • Dry Hopped Sour

    Brewed on: January 28, 2017

    A kettle soured beer with a descent amount of dry hops.

    More Info
  • NE IPA

    Brewed on: December 11, 2016

    My first take on a New England style IPA

    More Info
  • Coffee Stout 11/5/2016

    Brewed on: November 05, 2016

    Another iteration of the Coffee Stout. Typical malt bill for a stout with 2 ounces of coffee thrown in at flameout.

    More Info
  • Scraps IPA

    Brewed on: June 05, 2016

    An IPA motivated by an assortment of unused hops in my freezer

    More Info
  • Coffee Stout

    Brewed on: August 22, 2015

    A stout with coffee added during secondary fermentation.

    More Info