In this post, I'd like to share some thoughts I've accumulated over the past few years about how to draw better graphs. To get straight to the point, I have two concrete recommendations: normalised data should usually be plotted on a logarithmic scale, andscatter plots can be easier to understand than bar charts. I'll now… Continue reading A plot twist! Drawing better graphs in PL papers
A lot of papers include a graph that benchmarks the performance of a new technique against a technique from previous work. Such a graph might look like this: The graph is rather straightforward to read: when the green bar is higher, the old technique is faster, and when the red bar is higher, the new… Continue reading In praise of scatter plots
Many verification-oriented programming languages have built-in support for attaching loop invariants to loops. A loop invariant is a condition that holds in four different places: immediately before the loop, at the start of each iteration (before evaluating the test condition), at the end of each iteration, and immediately after the loop. Usually, the invariants are… Continue reading Loop invariants – where should we put them?
I had a great time at PLDI 2018 last week. Here is my take on a few of the papers that stood out for me. John Vilk presented a tool called BLeak for finding memory leaks in web browsers. One might think that leak detection is not important in a garbage-collected setting, but Vilk explained… Continue reading Greatest hits of PLDI 2018
I've been working in an Electrical and Electronic Engineering department for more than three years now, but I admit that it's only quite recently that I find myself properly understanding the difference between latency and throughput. These are terms that are used all the time when talking about an electronic circuit. The distinction between them… Continue reading What is the difference between latency and throughput?
I had a great time in Boulder, Colorado at the FCCM 2018 conference last week. Here are a few of the papers that I found particularly interesting: Siddhartha and Kapre's paper, Hoplite-Q: Priority-Aware Routing in FPGA Overlay NoCs, was about how to build a "network-on-chip"; that is, a miniature network that allows the various components of… Continue reading Greatest Hits of FCCM 2018
It's pretty common for database-driven apps to display a "last updated" field. For instance, here is a screenshot of my Mail app on my iPhone, showing that my emails were "Updated Just Now". And here is a screenshot from the RealTimeTrains app, showing that the information was "Updated a few seconds ago". Why do apps… Continue reading Bad UX design: “Updated Just Now”
I transcribed Barry Gray's theme song from Stingray, Aqua Marina, into piano sheet music. There's a vocal part, replete with lyrics, plus a keyboard part comprising a right-hand and chord symbols. It roughly corresponds to what you might find in a musician's "fake book". Available as a pdf file, as an editable Noteworthy Composer file, and an mp3 audio… Continue reading Aqua Marina – piano sheet music
Here are some tips for travelling from Cambridge to London. Prices fairly accurate in April 2015. By coach National Express operates a service between Cambridge and London. It's not a well-used service, chiefly because it takes a good two and a half hours. However, note that if you don't go all the way to Victoria… Continue reading Tips for commuting between Cambridge and London
When designing the English character set, it was quite a bad idea to make the letter O ("oh") look so similar to the number 0 (zero). But what turned a bad situation into an absolute disaster was the convention of pronouncing the number 0 as "oh" - as in "double-oh seven", or the freephone number… Continue reading On the letter O and the number 0