Announcing jj-stack: stacked GitHub pull requests for Jujutsu

I’m pleased to announce jj-stack, a new tool for managing stacked GitHub pull requests quickly and safely with Jujutsu. Stacked changes let you (or your agent) split a large body of work into small, independently reviewable changes without waiting for each one to be reviewed or merged. I built this because I wanted the stacked-review workflow I’d grown used to, with the local editing experience I’ve found so delightful in Jujutsu. ...

14 September 2026 · 10 min · Bryan O'Sullivan

How my e-reader lost its stripes

I’ve been a lifelong reader, which has proved a fragile habit in our era of endless trivial distraction. While books and e-ink readers solve the problem of competition for attention, they can’t compete with a phone for convenience. That tiny device in my pocket has made reading both easier and more vulnerable to displacement whenever a notification pops up. A few days ago, I learned for the first time about a recent generation of tiny e-ink readers. Since they’re cheap, it was easy to give into curiosity: I bought an Xteink X3. Not only is it astonishingly tiny, I could immediately install the delightful open-source CrossPoint firmware. I was very quickly able to install a few books. I also appreciated being able to install custom fonts, though I was a little surprised by their indifferent rendering (foreshadowing…). ...

10 September 2026 · 14 min · Bryan O'Sullivan

Sometimes, the old ways are the best

Over the past few months, the Sigma engineering team at Facebook has rolled out a major Haskell project: a rewrite of Sigma, an important weapon in our armory for fighting spam and malware. Sigma has a mission-critical job, and it needs to scale: its growing workload currently sees it handling tens of millions of requests per minute. The rewrite of Sigma in Haskell, using the Haxl library that Simon Marlow developed, has been a success. Throughput is higher than under its predecessor, and CPU usage is lower. Sweet! ...

13 May 2015 · 3 min · Bryan O'Sullivan

criterion 1.0

Almost five years after I initially released criterion, I’m delighted to announce a major release with a large number of appealing new features. As always, you can install the latest goodness using cabal install criterion, or fetch the source from github. Please let me know if you find criterion useful! New documentation I built both a home page and a thorough tutorial for criterion. I’ve also extended the inline documentation and added a number of new examples. ...

8 August 2014 · 2 min · Bryan O'Sullivan

Win bigger statistical fights with a better jackknife

(Summary: I’ve developed some algorithms for a statistical technique called the jackknife that run in O(n) time instead of O(n²).) In statistics, an estimation technique called “the jackknife” has been widely used for over half a century. It’s a mainstay for taking a quick look at the quality of an estimator of a sample. (An estimator is a summary function over a sample, such as its mean or variance.) Suppose we have a noisy sample. Our first stopping point might be to look at the variance of the sample, to get a sense of how much the values in the sample “spread out” around the average. ...

11 June 2014 · 12 min · Bryan O'Sullivan

A major upgrade to attoparsec: more speed, more power

I’m pleased to introduce the third generation of my attoparsec parsing library. With a major change to its internals, it is both faster and more powerful than previous versions, while remaining backwards compatible. Comparing to C Let’s start with a speed comparison between the hand-written C code that powers Node.js’s HTTP parser and an idiomatic Haskell parser that uses attoparsec. There are good reasons to take these numbers with a fistful of salt, so imagine huge error bars, warning signs, and whatnot-but they’re still interesting. ...

31 May 2014 · 11 min · Bryan O'Sullivan

Top Haskell packages seen through graph centrality beer goggles

I threw together a little code tonight to calculate the Katz centrality of packages on Hackage. This is a measure that states that a package is important if an important package depends on it. The definition is recursive, as is the matrix computation that converges towards a fixpoint to calculate it. Here are the top hundred Hackage packages as calculated by this method, along with their numeric measures of centrality, to which I’ve given the slightly catchier name “mojo” here. ...

18 May 2014 · 2 min · Bryan O'Sullivan

Once more into the teach, dear friends

Since the beginning of April, David Mazières and I have been back in the saddle teaching CS240H at Stanford again. If you’re tuning in recently, David and I both love systems programming, and we particularly get a kick out of doing it in Haskell. Let me state this more plainly: Haskell is an excellent systems programming language. Our aim with this class is to teach both enough advanced Haskell that students really get a feel for how different it is from other programming languages, and to apply this leverage to the kinds of problems that people typically think of as “systemsy”: How do I write solid concurrent software? How do I design it cleanly? What do I do to make it fast? How do I talk to other stuff, like databases and web servers? ...

14 May 2014 · 3 min · Bryan O'Sullivan

Where credit belongs for Hack

It’s been exciting to see the positive reception in the tech press and the open source community to Hack, the new programming language that my team at Facebook released last week. At the same time, one part of that coverage has made me wince: a couple of articles give the impression that I created Hack, but I didn’t. What I do is manage the Hack team, and since I’m incredibly proud of the work they do, I’d like to shine a little light on the people who really deserve the credit. ...

28 March 2014 · 3 min · Bryan O'Sullivan

Book review: Parallel and Concurrent Programming in Haskell

It’s time someone finally wrote a proper review of Simon Marlow’s amazing book, Parallel and Concurrent Programming in Haskell. I am really not the right person to tackle this job objectively, because I have known Simon for 20 years and I currently happen to be his boss at Facebook. Nevertheless, I fly my flag of editorial bias proudly, and in any case a moment’s glance at Simon’s book will convince you that the absurdly purple review I am about to write is entirely justified. ...

19 March 2014 · 8 min · Bryan O'Sullivan