• Faster ordered maps for Java

    Sorted maps are useful alternatives to standard unordered hashmaps. Not only do they tend to make your programs more deterministic, they also make some kinds of queries very efficient. For example, one thing we frequently want to do at work is find the most recent observation of a sparse timeseries as of a particular time. If the series is represented as an ordered mapping from time to value, then this this question is easily answered in log time by a bisection on the mapping.

    Read on →

  • 4 things you didn't know you could do with Java

    Java is often described as a simple programming language. While this is arguably true, it has still retained the ability to surprise me after using it full time for years.

    Read on →

  • A Cambridge Computer Science degree summarised in 58 crib sheets

    From 2005 to 2008 I was an undergraduate studying Computer Science at Cambridge. My method of preparing for the exams was to summarise each lecture course into just a few sides of A4, which I’d then commit to memory in their entirety.

    Read on →

  • Datastructures for external memory

    Something I recently became interested in is map data structures for external memory — i.e. ways of storing indexed data that are optimized for storage on disk.

    Read on →

  • Compression of floating point timeseries

    I recently had cause to investigate fast methods of storing and transferring financial timeseries. Naively, timeseries can be represented in memory or on disk as simple dense arrays of floating point numbers. This is an attractive representation with many nice properties:

    Read on →