Posts by category

distributed computing

A CAP tradeoff in the wild

There’s a classic tradeoff between safety and liveness in the context of replicated data systems, originally proposed by Eric Brewer and later made precise b...

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

Who invented vector clocks?

Back in spring 2020, I was wrapping up the distributed systems course I was teaching, and for the last lecture, decided to spend a little time poking at the ...

CSE138 returns to Twitch today!

TL;DR: Starting today, March 30, 2021, I’m live-streaming my undergraduate distributed systems course on Twitch every Tuesday and Thursday for the next ten w...

Twitch plays CSE138

For obvious reasons, this quarter I’m teaching my undergrad distributed systems course, CSE138, to over 100 students remotely instead of in person.

Call for submissions: PaPoC 2018

I’m serving on the program committee for the 2018 Workshop on Principles and Practice of Consistency for Distributed Data, co-located with EuroSys ‘18 in Por...

Notes on Halide and Distributed Halide

Halide is a newish domain-specific language for writing high-performance image processing pipelines, originally created by a group of researchers at MIT and ...

The saga of Accumulo bug 4379

Not too long ago, I was setting up an installation of the Accumulo distributed database. At some point in the process, I ran Accumulo’s bin/bootstrap_config...

What even is OpenStack?

A few days ago, I needed to learn what OpenStack is. Here’s what I’ve learned so far.

A few notes from PaPoC 2015

I spent last week in beautiful Bordeaux, France, attending EuroSys 2015 and the affiliated PaPoC workshop. This was my first EuroSys, as well as my first no...

What isn’t a key-value store?

So there’s this website called DB-Engines that ranks database systems according to their popularity. (They determine popularity based on various factors, in...

Call for submissions: PaPoC 2015

I’m excited to be serving on the program committee for this year’s Workshop on Principles and Practice of Consistency for Distributed Data (PaPoC). The work...

Two LVars papers at WoDet

In a couple of days, I’m headed to the WoDet workshop, which is co-located with ASPLOS in Salt Lake City this year. WoDet is a workshop devoted to determini...

Disorder and determinism

My research on LVars is all about deterministic parallel programming: writing programs so that they can be scheduled onto parallel hardware with the goal of ...

New paper draft: “Joining Forces”

I’m happy to announce a new draft paper, “Joining Forces: Toward a Unified Account of LVars and Convergent Replicated Data Types”, that my advisor and I just...

Thoughts on CRDTs and threshold reads

Update (November 30, 2013): I updated this post to reflect some of my current thinking on threshold reads for CRDTs and why I think high-water-mark reads are...

What’s the deal with LVars and CRDTs?

Earlier this week, I gave a talk on LVars at RICON West, a distributed systems industry conference. It covered a lot of the same material as my talk at FHPC...

Back to Top ↑

parallelism

I’m speaking at SPLASH 2015

I’m going to be on stage a couple of times at the SPLASH conference this October in Pittsburgh. If you’ll be there, please say hello!

The LVar that was, after all

Last year, I wrote a post about a so-called LVar data structure that, upon closer inspection, turned out not to be an LVar at all. In that post, I proposed ...

Two LVars papers at WoDet

In a couple of days, I’m headed to the WoDet workshop, which is co-located with ASPLOS in Salt Lake City this year. WoDet is a workshop devoted to determini...

Disorder and determinism

My research on LVars is all about deterministic parallel programming: writing programs so that they can be scheduled onto parallel hardware with the goal of ...

How to freeze after writing

Last week at POPL, I presented “Freeze After Writing: Quasi-Deterministic Parallel Programming with LVars”. In this paper, my co-authors Aaron Turon, Neel ...

New paper draft: “Joining Forces”

I’m happy to announce a new draft paper, “Joining Forces: Toward a Unified Account of LVars and Convergent Replicated Data Types”, that my advisor and I just...

The LVar that wasn’t

Suppose we want to write a program in which two threads, say, t1 and t2, each contribute a Boolean value, either True or False, to a shared result. If both ...

What’s the deal with LVars and CRDTs?

Earlier this week, I gave a talk on LVars at RICON West, a distributed systems industry conference. It covered a lot of the same material as my talk at FHPC...

Two LVars papers

Greetings from surprisingly sunny Portland, Oregon: [“LVars: Lattice-based Data Structures for Deterministic Parallelism”]: [FHPC ‘13]: http://hiperfit.dk/...

Writing macros that write Redex

Over the last year or two, I’ve been using PLT Redex more and more often as a tool for my research. Redex is a domain-specific programming language and suit...

A new paper draft, and a debugging story

I’m excited to announce a new paper draft, “LVars: Deterministic Parallelism through Shared Monotonic Data Structures”, that my advisor Ryan and I just submi...

Determinism abides

On a trip to Europe last month, I was scheduled to give three talks about my research on deterministic parallelism. The talks all had the same topic, but wi...

A ten-minute talk about my research

I just had a talk proposal accepted to the student short talk session at POPL, which will be in Rome next week. They’re not messing around when they say “sh...

Back to Top ↑

LVars

How to learn to do determinism proofs

A couple days ago, my advisor asked me what reading material I would suggest to a new student who wants to learn to do determinism proofs like the ones we di...

Frame problems and frame properties

One of the ideas that has been important to me as I’ve worked on LVars is the notion of a frame property. A frame property captures the idea of local reason...

The LVar that was, after all

Last year, I wrote a post about a so-called LVar data structure that, upon closer inspection, turned out not to be an LVar at all. In that post, I proposed ...

Two LVars papers at WoDet

In a couple of days, I’m headed to the WoDet workshop, which is co-located with ASPLOS in Salt Lake City this year. WoDet is a workshop devoted to determini...

Disorder and determinism

My research on LVars is all about deterministic parallel programming: writing programs so that they can be scheduled onto parallel hardware with the goal of ...

How to freeze after writing

Last week at POPL, I presented “Freeze After Writing: Quasi-Deterministic Parallel Programming with LVars”. In this paper, my co-authors Aaron Turon, Neel ...

New paper draft: “Joining Forces”

I’m happy to announce a new draft paper, “Joining Forces: Toward a Unified Account of LVars and Convergent Replicated Data Types”, that my advisor and I just...

The LVar that wasn’t

Suppose we want to write a program in which two threads, say, t1 and t2, each contribute a Boolean value, either True or False, to a shared result. If both ...

Thoughts on CRDTs and threshold reads

Update (November 30, 2013): I updated this post to reflect some of my current thinking on threshold reads for CRDTs and why I think high-water-mark reads are...

What’s the deal with LVars and CRDTs?

Earlier this week, I gave a talk on LVars at RICON West, a distributed systems industry conference. It covered a lot of the same material as my talk at FHPC...

Interpreting LVar effects as resources

Lately I’ve been thinking about an analogy between properties that are and aren’t true of LVar operations, and presence or lack of structural rules in a logi...

Two LVars papers

Greetings from surprisingly sunny Portland, Oregon: [“LVars: Lattice-based Data Structures for Deterministic Parallelism”]: [FHPC ‘13]: http://hiperfit.dk/...

Writing macros that write Redex

Over the last year or two, I’ve been using PLT Redex more and more often as a tool for my research. Redex is a domain-specific programming language and suit...

A new paper draft, and a debugging story

I’m excited to announce a new paper draft, “LVars: Deterministic Parallelism through Shared Monotonic Data Structures”, that my advisor Ryan and I just submi...

Determinism abides

On a trip to Europe last month, I was scheduled to give three talks about my research on deterministic parallelism. The talks all had the same topic, but wi...

A ten-minute talk about my research

I just had a talk proposal accepted to the student short talk session at POPL, which will be in Rome next week. They’re not messing around when they say “sh...

Back to Top ↑

CFP

Call for talk proposals: !!Con West 2020!

!!Con (pronounced “bang bang con”) West is a radically eclectic, radically affordable conference of ten-minute talks about the joy, excitement, and surprise ...

Call for talk proposals: DSLDI 2018

This year, I’m again serving as a co-chair of the Domain-Specific Language Design and Implementation workshop, together with my friend Sam Tobin-Hochstadt. ...

The call for papers formerly known as ICFP

2018 will be my third and final year serving as the publicity chair for ICFP, the International Conference on Functional Programming. So, not too long ago, ...

Call for submissions: PaPoC 2018

I’m serving on the program committee for the 2018 Workshop on Principles and Practice of Consistency for Distributed Data, co-located with EuroSys ‘18 in Por...

Call for talk proposals: DSLDI 2017

This year, Eric Walkingshaw and I are serving as co-chairs of DSLDI, the Domain-Specific Language Design and Implementation workshop, co-located with SPLASH ...

Call for talk proposals: !!Con 2017

!!Con (pronounced “bang bang con”) is a conference of ten-minute talks about the joy, excitement, and surprise of computing. I co-founded !!Con with a group...

Call for talk proposals: OBT 2017

It’s time once again to sound the call for talk proposals for the Off the Beaten Track workshop, the next edition of which will be co-located with POPL 2017 ...

Call for talk proposals: DSLDI 2016

I’m serving on the program committee for this year’s Domain-Specific Language Design and Implementation workshop (DSLDI). The workshop will be co-located wi...

Call for talk proposals: !!Con 2016

For the third year in a row, some good friends and I are organizing !!Con (pronounced bang bang con), a conference consisting entirely of ten-minute talks ab...

Call for papers: IFL 2015

Once again this year, I’m serving on the program committee for IFL, the annual Symposium on Implementation and Application of Functional Languages, and the c...

Call for proposals: !!Con 2015

This year, for the second year in a row, my friends and I are organizing !!Con (pronounced bang bang con), a conference about the joy, excitement, and surpri...

Call for papers: Onward! 2015

The Onward! 2015 conference has opened their call for papers, and I’m very excited to be serving on the program committee this year!

One last CFP to wrap up the year: Tiny ToCS

Tiny Transactions on Computer Science, the premier venue for computer science research of 140 characters or less, is seeking submissions for its third volume...

Call for submissions: PaPoC 2015

I’m excited to be serving on the program committee for this year’s Workshop on Principles and Practice of Consistency for Distributed Data (PaPoC). The work...

Call for papers: IFL 2014

This year, I’m on the program committee for IFL, the annual Symposium on Implementation and Application of Functional Languages. It’ll be held at Northeaste...

Back to Top ↑

academia

Apply to PLMW

The Programming Languages Mentoring Workshop, or PLMW, is a one-day event that’s held on the day before the main conference program starts at the four major ...

My first year as a professor

On July 1, I celebrated my first anniversary of employment as an assistant professor at UC Santa Cruz! As my second year gets under way, now seems like a go...

You don’t need a 4.0 to go to grad school

Recently on Twitter, Justine Sherry pointed out (in response to hearing about a student afraid to minor in art because they thought it would hurt their appli...

Why review papers?

A few days ago, in response to my complaining about all the reviewing I’ve had to do lately, an undergrad researcher friend asked me, “what’s the incentive t...

Back to Top ↑

Haskell

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

Two papers at HATRA

Today my students Gan Shen and Patrick Redmond and I are (virtually) attending the HATRA workshop co-located with SPLASH. HATRA is a relatively new workshop...

How to freeze after writing

Last week at POPL, I presented “Freeze After Writing: Quasi-Deterministic Parallel Programming with LVars”. In this paper, my co-authors Aaron Turon, Neel ...

The LVar that wasn’t

Suppose we want to write a program in which two threads, say, t1 and t2, each contribute a Boolean value, either True or False, to a shared result. If both ...

Write an interpreter: variables

This post is the second in a series. Last time, we started coding up a toy interpreter for a language of arithmetic expressions. This time, we’ll extend th...

Write an interpreter

I spent last week volunteering as a resident at Hacker School, where I helped a number of students write small interpreters. For the most part, the students...

A new paper draft, and a debugging story

I’m excited to announce a new paper draft, “LVars: Deterministic Parallelism through Shared Monotonic Data Structures”, that my advisor Ryan and I just submi...

Back to Top ↑

bangbangcon

!!Con 2021 starts today!

!!Con (pronounced “bang bang con”) is a radically eclectic, radically affordable conference of ten-minute talks about the joy, excitement, and surprise of co...

Call for talk proposals: !!Con West 2020!

!!Con (pronounced “bang bang con”) West is a radically eclectic, radically affordable conference of ten-minute talks about the joy, excitement, and surprise ...

Scaling !!Con

As regular readers of this blog are probably tired of hearing by now, !!Con (“bang bang con”) is a weekend-long conference of ten-minute talks about experien...

Call for talk proposals: !!Con 2017

!!Con (pronounced “bang bang con”) is a conference of ten-minute talks about the joy, excitement, and surprise of computing. I co-founded !!Con with a group...

Help the !!Con 2016 attendees eat breakfast

Update (May 5, 2016): Thanks to everyone who’s offered to chip in and help !!Con out financially! There’s now an easy way to do so as an individual: bangban...

Call for talk proposals: !!Con 2016

For the third year in a row, some good friends and I are organizing !!Con (pronounced bang bang con), a conference consisting entirely of ten-minute talks ab...

Call for proposals: !!Con 2015

This year, for the second year in a row, my friends and I are organizing !!Con (pronounced bang bang con), a conference about the joy, excitement, and surpri...

Back to Top ↑

talks

I’m speaking at SPLASH 2015

I’m going to be on stage a couple of times at the SPLASH conference this October in Pittsburgh. If you’ll be there, please say hello!

How to freeze after writing

Last week at POPL, I presented “Freeze After Writing: Quasi-Deterministic Parallel Programming with LVars”. In this paper, my co-authors Aaron Turon, Neel ...

What’s the deal with LVars and CRDTs?

Earlier this week, I gave a talk on LVars at RICON West, a distributed systems industry conference. It covered a lot of the same material as my talk at FHPC...

Determinism abides

On a trip to Europe last month, I was scheduled to give three talks about my research on deterministic parallelism. The talks all had the same topic, but wi...

Back to Top ↑

personal

My first year as a professor

On July 1, I celebrated my first anniversary of employment as an assistant professor at UC Santa Cruz! As my second year gets under way, now seems like a go...

Participating in ICFP remotely

This year’s International Conference on Functional Programming, or ICFP ‘17 to its friends, will be getting under way in Oxford, UK in just a couple of days....

My first fifteen compilers

Update (July 2019): A revised version of this post now appears on PL Perspectives, the SIGPLAN blog.

s/S/C/

It’s been nearly half a year since it happened, so it’s probably about time I mentioned it: the group I originally joined at Intel Labs, the Programming Syst...

A month of daily check-ins

Some time ago, in response to my asking what I should write about on this blog, Sumana suggested I write about what my typical day is like. I demurred, sayi...

Rejections

Update (June 14, 2017): Updated with rejections from 2016!

Back to Top ↑

SMT

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

Two papers at HATRA

Today my students Gan Shen and Patrick Redmond and I are (virtually) attending the HATRA workshop co-located with SPLASH. HATRA is a relatively new workshop...

Using the simplex algorithm for SMT solving

This year, as I’ve started to dive into neural network verification, I’ve had the chance to learn a little about how SMT solvers are implemented. One thing ...

Back to Top ↑

teaching

Teaching roundup, 2018-2022

I just finished cleaning up some older course websites and (finally!) switching all my stuff to use HTTPS. In honor of that, here’s a roundup of all the cou...

CSE138 returns to Twitch today!

TL;DR: Starting today, March 30, 2021, I’m live-streaming my undergraduate distributed systems course on Twitch every Tuesday and Thursday for the next ten w...

Twitch plays CSE138

For obvious reasons, this quarter I’m teaching my undergrad distributed systems course, CSE138, to over 100 students remotely instead of in person.

My first year as a professor

On July 1, I celebrated my first anniversary of employment as an assistant professor at UC Santa Cruz! As my second year gets under way, now seems like a go...

Back to Top ↑

Intel Labs

s/S/C/

It’s been nearly half a year since it happened, so it’s probably about time I mentioned it: the group I originally joined at Intel Labs, the Programming Syst...

I’m speaking at SPLASH 2015

I’m going to be on stage a couple of times at the SPLASH conference this October in Pittsburgh. If you’ll be there, please say hello!

A month of daily check-ins

Some time ago, in response to my asking what I should write about on this blog, Sumana suggested I write about what my typical day is like. I demurred, sayi...

What I’m doing after graduation

For the last few months, as I’ve been getting ready to finish up grad school, I’ve also spent a lot of time working on figuring out what I’m going to do once...

Back to Top ↑

papers

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

Two papers at HATRA

Today my students Gan Shen and Patrick Redmond and I are (virtually) attending the HATRA workshop co-located with SPLASH. HATRA is a relatively new workshop...

New paper draft: “Joining Forces”

I’m happy to announce a new draft paper, “Joining Forces: Toward a Unified Account of LVars and Convergent Replicated Data Types”, that my advisor and I just...

Two LVars papers

Greetings from surprisingly sunny Portland, Oregon: [“LVars: Lattice-based Data Structures for Deterministic Parallelism”]: [FHPC ‘13]: http://hiperfit.dk/...

A new paper draft, and a debugging story

I’m excited to announce a new paper draft, “LVars: Deterministic Parallelism through Shared Monotonic Data Structures”, that my advisor Ryan and I just submi...

Back to Top ↑

CRDTs

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

A few notes from PaPoC 2015

I spent last week in beautiful Bordeaux, France, attending EuroSys 2015 and the affiliated PaPoC workshop. This was my first EuroSys, as well as my first no...

Two LVars papers at WoDet

In a couple of days, I’m headed to the WoDet workshop, which is co-located with ASPLOS in Salt Lake City this year. WoDet is a workshop devoted to determini...

New paper draft: “Joining Forces”

I’m happy to announce a new draft paper, “Joining Forces: Toward a Unified Account of LVars and Convergent Replicated Data Types”, that my advisor and I just...

Thoughts on CRDTs and threshold reads

Update (November 30, 2013): I updated this post to reflect some of my current thinking on threshold reads for CRDTs and why I think high-water-mark reads are...

What’s the deal with LVars and CRDTs?

Earlier this week, I gave a talk on LVars at RICON West, a distributed systems industry conference. It covered a lot of the same material as my talk at FHPC...

Back to Top ↑

DSLs

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

Call for talk proposals: DSLDI 2018

This year, I’m again serving as a co-chair of the Domain-Specific Language Design and Implementation workshop, together with my friend Sam Tobin-Hochstadt. ...

Notes on Halide and Distributed Halide

Halide is a newish domain-specific language for writing high-performance image processing pipelines, originally created by a group of researchers at MIT and ...

What isn’t a high-performance DSL?

At work, I’ve been participating in a series of broad-ranging discussions about the role that domain-specific languages, or DSLs, can play in helping program...

Call for talk proposals: DSLDI 2017

This year, Eric Walkingshaw and I are serving as co-chairs of DSLDI, the Domain-Specific Language Design and Implementation workshop, co-located with SPLASH ...

Call for talk proposals: DSLDI 2016

I’m serving on the program committee for this year’s Domain-Specific Language Design and Implementation workshop (DSLDI). The workshop will be co-located wi...

Some notes from SPLASH 2015

Last month, I headed to Pittsburgh for SPLASH 2015. Sadly, the trip was brief, since I had to leave the conference early to make it to a friend’s wedding, b...

Embedding, deep and shallow

Not long ago, I wanted to better understand the notions of “deeply” and “shallowly” embedded languages. Here I mean “embedded” in the sense of, say, “domain...

Back to Top ↑

SPLASH

Call for talk proposals: DSLDI 2018

This year, I’m again serving as a co-chair of the Domain-Specific Language Design and Implementation workshop, together with my friend Sam Tobin-Hochstadt. ...

Call for talk proposals: DSLDI 2017

This year, Eric Walkingshaw and I are serving as co-chairs of DSLDI, the Domain-Specific Language Design and Implementation workshop, co-located with SPLASH ...

Call for talk proposals: DSLDI 2016

I’m serving on the program committee for this year’s Domain-Specific Language Design and Implementation workshop (DSLDI). The workshop will be co-located wi...

Some notes from SPLASH 2015

Last month, I headed to Pittsburgh for SPLASH 2015. Sadly, the trip was brief, since I had to leave the conference early to make it to a friend’s wedding, b...

I’m speaking at SPLASH 2015

I’m going to be on stage a couple of times at the SPLASH conference this October in Pittsburgh. If you’ll be there, please say hello!

Call for papers: Onward! 2015

The Onward! 2015 conference has opened their call for papers, and I’m very excited to be serving on the program committee this year!

Back to Top ↑

distributed consistency

A few notes from PaPoC 2015

I spent last week in beautiful Bordeaux, France, attending EuroSys 2015 and the affiliated PaPoC workshop. This was my first EuroSys, as well as my first no...

Call for submissions: PaPoC 2015

I’m excited to be serving on the program committee for this year’s Workshop on Principles and Practice of Consistency for Distributed Data (PaPoC). The work...

What’s the deal with LVars and CRDTs?

Earlier this week, I gave a talk on LVars at RICON West, a distributed systems industry conference. It covered a lot of the same material as my talk at FHPC...

Back to Top ↑

OBT

Call for talk proposals: OBT 2017

It’s time once again to sound the call for talk proposals for the Off the Beaten Track workshop, the next edition of which will be co-located with POPL 2017 ...

Back to Top ↑

Julia

The case of the missing frames

In my last post, I wrote about a wave equation simulation that I spent a lot of time with as part of my ParallelAccelerator for Julia benchmarking effort. T...

The optimization that wasn’t

Between mid-2015 and mid-2017, I spent a lot of time on performance measurement for the ParallelAccelerator package for Julia. I curated a collection of wor...

I’m speaking at SPLASH 2015

I’m going to be on stage a couple of times at the SPLASH conference this October in Pittsburgh. If you’ll be there, please say hello!

Back to Top ↑

ParallelAccelerator

The optimization that wasn’t

Between mid-2015 and mid-2017, I spent a lot of time on performance measurement for the ParallelAccelerator package for Julia. I curated a collection of wor...

What isn’t a high-performance DSL?

At work, I’ve been participating in a series of broad-ranging discussions about the role that domain-specific languages, or DSLs, can play in helping program...

I’m speaking at SPLASH 2015

I’m going to be on stage a couple of times at the SPLASH conference this October in Pittsburgh. If you’ll be there, please say hello!

Back to Top ↑

machine learning

Back to Top ↑

POPL

Apply to PLMW

The Programming Languages Mentoring Workshop, or PLMW, is a one-day event that’s held on the day before the main conference program starts at the four major ...

Call for talk proposals: OBT 2017

It’s time once again to sound the call for talk proposals for the Off the Beaten Track workshop, the next edition of which will be co-located with POPL 2017 ...

How to freeze after writing

Last week at POPL, I presented “Freeze After Writing: Quasi-Deterministic Parallel Programming with LVars”. In this paper, my co-authors Aaron Turon, Neel ...

Determinism abides

On a trip to Europe last month, I was scheduled to give three talks about my research on deterministic parallelism. The talks all had the same topic, but wi...

Back to Top ↑

language implementation

My first fifteen compilers

Update (July 2019): A revised version of this post now appears on PL Perspectives, the SIGPLAN blog.

Embedding, deep and shallow

Not long ago, I wanted to better understand the notions of “deeply” and “shallowly” embedded languages. Here I mean “embedded” in the sense of, say, “domain...

Write an interpreter: variables

This post is the second in a series. Last time, we started coding up a toy interpreter for a language of arithmetic expressions. This time, we’ll extend th...

Write an interpreter

I spent last week volunteering as a resident at Hacker School, where I helped a number of students write small interpreters. For the most part, the students...

Back to Top ↑

neural networks

Back to Top ↑

ICFP

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

The call for papers formerly known as ICFP

2018 will be my third and final year serving as the publicity chair for ICFP, the International Conference on Functional Programming. So, not too long ago, ...

Participating in ICFP remotely

This year’s International Conference on Functional Programming, or ICFP ‘17 to its friends, will be getting under way in Oxford, UK in just a couple of days....

Back to Top ↑

Recurse Center

My adventures with git-filter-branch

Not too long ago, I found myself in a tricky situation with git. I had an enormous git repo containing a few things I wanted to keep and many, many things I...

Write an interpreter

I spent last week volunteering as a resident at Hacker School, where I helped a number of students write small interpreters. For the most part, the students...

Hacker School residency

Update (March 25, 2015): As of today, Hacker School is called the Recurse Center. Everything in this post still applies!

Back to Top ↑

grad school

You don’t need a 4.0 to go to grad school

Recently on Twitter, Justine Sherry pointed out (in response to hearing about a student afraid to minor in art because they thought it would hurt their appli...

Back to Top ↑

adversarial examples

Back to Top ↑

neural network verification

Back to Top ↑

Liquid Haskell

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

Two papers at HATRA

Today my students Gan Shen and Patrick Redmond and I are (virtually) attending the HATRA workshop co-located with SPLASH. HATRA is a relatively new workshop...

Back to Top ↑

refinement types

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

Two papers at HATRA

Today my students Gan Shen and Patrick Redmond and I are (virtually) attending the HATRA workshop co-located with SPLASH. HATRA is a relatively new workshop...

Back to Top ↑

blogging

Back to Top ↑

PLMW

Apply to PLMW

The Programming Languages Mentoring Workshop, or PLMW, is a one-day event that’s held on the day before the main conference program starts at the four major ...

Back to Top ↑

causal delivery

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

Back to Top ↑

Rust

Default methods and negative diffstats

Last week, I made a change to the Rust compiler that I’ve wanted to make for over a year. I was so happy about finally getting this patch in that I couldn’t...

One-character patches

Yesterday, I made my first contribution to Racket in the form of a one-character patch. (It corrected a typo in a menu item for one of the Redex visualizati...

FizzBuzz revisited

One of the cool things about being involved with the development of Rust over the last couple of years has been watching the community grow along with the la...

Back to Top ↑

Racket

One-character patches

Yesterday, I made my first contribution to Racket in the form of a one-character patch. (It corrected a typo in a menu item for one of the Redex visualizati...

Writing macros that write Redex

Over the last year or two, I’ve been using PLT Redex more and more often as a tool for my research. Redex is a domain-specific programming language and suit...

Back to Top ↑

River Trail

What I’m doing after graduation

For the last few months, as I’ve been getting ready to finish up grad school, I’ve also spent a lot of time working on figuring out what I’m going to do once...

Back to Top ↑

captions

Back to Top ↑

IFL

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

Call for papers: IFL 2015

Once again this year, I’m serving on the program committee for IFL, the annual Symposium on Implementation and Application of Functional Languages, and the c...

Call for papers: IFL 2014

This year, I’m on the program committee for IFL, the annual Symposium on Implementation and Application of Functional Languages. It’ll be held at Northeaste...

Back to Top ↑

PaPoC

Call for submissions: PaPoC 2018

I’m serving on the program committee for the 2018 Workshop on Principles and Practice of Consistency for Distributed Data, co-located with EuroSys ‘18 in Por...

A few notes from PaPoC 2015

I spent last week in beautiful Bordeaux, France, attending EuroSys 2015 and the affiliated PaPoC workshop. This was my first EuroSys, as well as my first no...

Call for submissions: PaPoC 2015

I’m excited to be serving on the program committee for this year’s Workshop on Principles and Practice of Consistency for Distributed Data (PaPoC). The work...

Back to Top ↑

DSLDI

Call for talk proposals: DSLDI 2018

This year, I’m again serving as a co-chair of the Domain-Specific Language Design and Implementation workshop, together with my friend Sam Tobin-Hochstadt. ...

Call for talk proposals: DSLDI 2017

This year, Eric Walkingshaw and I are serving as co-chairs of DSLDI, the Domain-Specific Language Design and Implementation workshop, co-located with SPLASH ...

Call for talk proposals: DSLDI 2016

I’m serving on the program committee for this year’s Domain-Specific Language Design and Implementation workshop (DSLDI). The workshop will be co-located wi...

Back to Top ↑

debugging

The case of the missing frames

In my last post, I wrote about a wave equation simulation that I spent a lot of time with as part of my ParallelAccelerator for Julia benchmarking effort. T...

The optimization that wasn’t

Between mid-2015 and mid-2017, I spent a lot of time on performance measurement for the ParallelAccelerator package for Julia. I curated a collection of wor...

My adventures with git-filter-branch

Not too long ago, I found myself in a tricky situation with git. I had an enormous git repo containing a few things I wanted to keep and many, many things I...

Back to Top ↑

UC Santa Cruz

My first year as a professor

On July 1, I celebrated my first anniversary of employment as an assistant professor at UC Santa Cruz! As my second year gets under way, now seems like a go...

Back to Top ↑

choreographic programming

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

An underwhelming conversation with ChatGPT

I’ve been getting underway with a new research project, and after seeing what Crista Lopes had to say recently about the potential of ChatGPT as a research t...

Back to Top ↑

pattern matching

A new paper draft, and a debugging story

I’m excited to announce a new paper draft, “LVars: Deterministic Parallelism through Shared Monotonic Data Structures”, that my advisor Ryan and I just submi...

FizzBuzz revisited

One of the cool things about being involved with the development of Rust over the last couple of years has been watching the community grow along with the la...

Back to Top ↑

write an interpreter

Write an interpreter: variables

This post is the second in a series. Last time, we started coding up a toy interpreter for a language of arithmetic expressions. This time, we’ll extend th...

Write an interpreter

I spent last week volunteering as a resident at Hacker School, where I helped a number of students write small interpreters. For the most part, the students...

Back to Top ↑

FHPC

Some FHPC and Haskell Symposium highlights

I just got home from a great week in Boston, where I attended this year’s ICFP and affiliated events. I presented our first paper on LVars at the FHPC works...

Two LVars papers

Greetings from surprisingly sunny Portland, Oregon: [“LVars: Lattice-based Data Structures for Deterministic Parallelism”]: [FHPC ‘13]: http://hiperfit.dk/...

Back to Top ↑

concurrency

Interpreting LVar effects as resources

Lately I’ve been thinking about an analogy between properties that are and aren’t true of LVar operations, and presence or lack of structural rules in a logi...

Back to Top ↑

substructural logic

My adventures with git-filter-branch

Not too long ago, I found myself in a tricky situation with git. I had an enormous git repo containing a few things I wanted to keep and many, many things I...

Interpreting LVar effects as resources

Lately I’ve been thinking about an analogy between properties that are and aren’t true of LVar operations, and presence or lack of structural rules in a logi...

Back to Top ↑

Haskell Symposium

Some FHPC and Haskell Symposium highlights

I just got home from a great week in Boston, where I attended this year’s ICFP and affiliated events. I presented our first paper on LVars at the FHPC works...

Back to Top ↑

that wasn't

The optimization that wasn’t

Between mid-2015 and mid-2017, I spent a lot of time on performance measurement for the ParallelAccelerator package for Julia. I curated a collection of wor...

The LVar that wasn’t

Suppose we want to write a program in which two threads, say, t1 and t2, each contribute a Boolean value, either True or False, to a shared result. If both ...

Back to Top ↑

PLDI

Back to Top ↑

interviews

Back to Top ↑

Onward!

Some notes from SPLASH 2015

Last month, I headed to Pittsburgh for SPLASH 2015. Sadly, the trip was brief, since I had to leave the conference early to make it to a friend’s wedding, b...

Call for papers: Onward! 2015

The Onward! 2015 conference has opened their call for papers, and I’m very excited to be serving on the program committee this year!

Back to Top ↑

JavaScript

Back to Top ↑

what isn't

What isn’t a high-performance DSL?

At work, I’ve been participating in a series of broad-ranging discussions about the role that domain-specific languages, or DSLs, can play in helping program...

What isn’t a key-value store?

So there’s this website called DB-Engines that ranks database systems according to their popularity. (They determine popularity based on various factors, in...

Back to Top ↑

Python

My adventures with git-filter-branch

Not too long ago, I found myself in a tricky situation with git. I had an enormous git repo containing a few things I wanted to keep and many, many things I...

Back to Top ↑

type checking

Back to Top ↑

decidability

Back to Top ↑

statistics

Back to Top ↑

zines

Back to Top ↑

ten hundred words

Back to Top ↑

Redex

Writing macros that write Redex

Over the last year or two, I’ve been using PLT Redex more and more often as a tool for my research. Redex is a domain-specific programming language and suit...

Back to Top ↑

macros

Writing macros that write Redex

Over the last year or two, I’ve been using PLT Redex more and more often as a tool for my research. Redex is a domain-specific programming language and suit...

Back to Top ↑

default methods

Default methods and negative diffstats

Last week, I made a change to the Rust compiler that I’ve wanted to make for over a year. I was so happy about finally getting this patch in that I couldn’t...

Back to Top ↑

RICON

What’s the deal with LVars and CRDTs?

Earlier this week, I gave a talk on LVars at RICON West, a distributed systems industry conference. It covered a lot of the same material as my talk at FHPC...

Back to Top ↑

Bloom

Disorder and determinism

My research on LVars is all about deterministic parallel programming: writing programs so that they can be scheduled onto parallel hardware with the goal of ...

Back to Top ↑

WoDet

Two LVars papers at WoDet

In a couple of days, I’m headed to the WoDet workshop, which is co-located with ASPLOS in Salt Lake City this year. WoDet is a workshop devoted to determini...

Back to Top ↑

separation logic

Frame problems and frame properties

One of the ideas that has been important to me as I’ve worked on LVars is the notion of a frame property. A frame property captures the idea of local reason...

Back to Top ↑

OOPSLA

Back to Top ↑

energy management

Back to Top ↑

Tiny ToCS

One last CFP to wrap up the year: Tiny ToCS

Tiny Transactions on Computer Science, the premier venue for computer science research of 140 characters or less, is seeking submissions for its third volume...

Back to Top ↑

databases

What isn’t a key-value store?

So there’s this website called DB-Engines that ranks database systems according to their popularity. (They determine popularity based on various factors, in...

Back to Top ↑

determinism

How to learn to do determinism proofs

A couple days ago, my advisor asked me what reading material I would suggest to a new student who wants to learn to do determinism proofs like the ones we di...

Back to Top ↑

matplotlib

Back to Top ↑

refactoring

Refactoring as a way to understand code

Recently, an acquaintance was complaining of a project they were working on that involved reading a mountain of “incidentally complex” code – code that wasn’...

Back to Top ↑

OpenStack

What even is OpenStack?

A few days ago, I needed to learn what OpenStack is. Here’s what I’ve learned so far.

Back to Top ↑

what even is

What even is OpenStack?

A few days ago, I needed to learn what OpenStack is. Here’s what I’ve learned so far.

Back to Top ↑

Java

Back to Top ↑

Ruby

Back to Top ↑

tips

Back to Top ↑

open source

The saga of Accumulo bug 4379

Not too long ago, I was setting up an installation of the Accumulo distributed database. At some point in the process, I ran Accumulo’s bin/bootstrap_config...

Back to Top ↑

Accumulo

The saga of Accumulo bug 4379

Not too long ago, I was setting up an installation of the Accumulo distributed database. At some point in the process, I ran Accumulo’s bin/bootstrap_config...

Back to Top ↑

bug tracking

The saga of Accumulo bug 4379

Not too long ago, I was setting up an installation of the Accumulo distributed database. At some point in the process, I ran Accumulo’s bin/bootstrap_config...

Back to Top ↑

git

My adventures with git-filter-branch

Not too long ago, I found myself in a tricky situation with git. I had an enormous git repo containing a few things I wanted to keep and many, many things I...

Back to Top ↑

Scheme

Back to Top ↑

combinatorics

Back to Top ↑

ECOOP

Back to Top ↑

Halide

Notes on Halide and Distributed Halide

Halide is a newish domain-specific language for writing high-performance image processing pipelines, originally created by a group of researchers at MIT and ...

Back to Top ↑

SysML

Back to Top ↑

SNAPL

Back to Top ↑

HATRA

Two papers at HATRA

Today my students Gan Shen and Patrick Redmond and I are (virtually) attending the HATRA workshop co-located with SPLASH. HATRA is a relatively new workshop...

Back to Top ↑

Agda

Two papers at HATRA

Today my students Gan Shen and Patrick Redmond and I are (virtually) attending the HATRA workshop co-located with SPLASH. HATRA is a relatively new workshop...

Back to Top ↑

typed holes

Two papers at HATRA

Today my students Gan Shen and Patrick Redmond and I are (virtually) attending the HATRA workshop co-located with SPLASH. HATRA is a relatively new workshop...

Back to Top ↑

ChatGPT

An underwhelming conversation with ChatGPT

I’ve been getting underway with a new research project, and after seeing what Crista Lopes had to say recently about the potential of ChatGPT as a research t...

Back to Top ↑

HasChor

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

Back to Top ↑

serverless computing

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

Back to Top ↑

SESAME

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

Back to Top ↑

CALCO

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

Back to Top ↑

coalgebras

Research roundup, 2022-2023

My research group was busy this past year. Here’s a summary of what we’ve been up to in 2022-2023!

Back to Top ↑