A new week, a new JSON performance improvement

It’s been a few weeks since I last wrote about the aeson library for working with JSON in Haskell, but this isn’t because I’ve been idle. In fact, just tonight I put out a new release. Where the previous releases focused on parsing performance, this one focuses on encoding performance. And the performance news is good: on real-world data, I’ve improved encoding performance by about a factor of 4. Why don’t we let the graphs do the talking. ...

22 March 2011 · 1 min · Bryan O'Sullivan

A little care and feeding can go a long way

Sometimes, when a software package meets a certain level of maturity (or the desire to hack on it fades sufficiently), it’s tempting to consider it “done”. Here’s a little tale of when done isn’t really done. About a week ago, I received a message from Finlay Thompson asking about my Haskell statistics package: he wanted to know how to generate pseudo-random variables using it. I redirected him from that to my mwc-random package, where my pseudo-random number generation code lives. ...

18 March 2011 · 4 min · Bryan O'Sullivan

CPS is great! CPS is terrible!

Every functional programmer worth their salt seems to end up with at least a few stories to tell about programming in CPS, also known as continuation passing style. Here’s my latest one. As a user of it, you can’t tell that my attoparsec parsing library is implemented almost entirely using explicit continuations. Every combinator accepts two continuations: the failure continuation is invoked if the current function fails the success continuation is invoked if the current function succeeds ...

25 February 2011 · 3 min · Bryan O'Sullivan

Faster, better, cleaner: new aeson and attoparsec releases

I’ve spent some time over the past few weeks improving the performance of the attoparsec parsing library, and of the aeson JSON library. Since they’ve now reached a new plateau of performance and stability, I thought this would be a good time to release new versions. The major advance in the new version of aeson is a considerable speed improvement. [!Performance improvement](https://web.archive.org/web/20110807204254/http://www.serpentine.com/wordpress/wp-content/uploads/2011/02/flump.png) The datasets I’m using are Twitter search results, from the Twitter JSON search API. For mostly-English results, 0.2.0.0 is up to 30% faster than before, while on Japanese data (which makes heavy use of Unicode escapes), I’ve bumped performance by more than 50%. ...

25 February 2011 · 2 min · Bryan O'Sullivan

So I went and started a company

I’m delighted to say that after a couple of years of a break from the startup world (which I’ve inhabited for most of the past decade), I’ve decided to throw my hat back into the ring. Together with Bethanye Blount, I’ve started a company named MailRank. We’re working on helping people to manage the all-too-common problem of email overload. You can read a little more about what we’re up to in our initial announcement, and we’ll have more details to share soon. ...

28 January 2011 · 1 min · Bryan O'Sullivan

A small matter of illegal characters

29 November 2010 · 0 min · Bryan O'Sullivan

GHC 7 I/O manager status update

27 November 2010 · 0 min · Bryan O'Sullivan

text 0.10.0.0 is here

22 October 2010 · 0 min · Bryan O'Sullivan

How to migrate from darcs to Mercurial or git

21 October 2010 · 0 min · Bryan O'Sullivan

A brief tale of faster equality

19 October 2010 · 0 min · Bryan O'Sullivan