• Asynchronous and non-blocking IO

    This post aims to explain the difference between asynchronous and non-blocking IO, with particular reference to their implementation in Java. These two styles of IO API are closely related but have a number of important differences, especially when it comes to OS support.

    Read on →

  • Quirks of the Matlab file format

    The Matlab file format has become something of a standard for data exchange in quant finance circles. It is not only handy for those who are using the Matlab interactive environment itself, but also to users working in a diverse spectrum of language, thanks to widespread availability of libraries for reading and writing the files. The format itself also has the handy property of supporting compression – an essential property for keeping disk usage reasonable with working with the highly compressible data that is typical of financial timeseries.

    Read on →

  • Rpath emulation: absolute DLL references on Windows

    When creating an executable or shared library on Linux, it’s possible to include an ELF RPATH header which tells the dynamic linker where to search for the any shared libraries that you reference. This is a pretty handy feature because it can be used to nail down exactly which shared library you will link against, without leaving anything up to chance at runtime.

    Read on →

  • GHC-specific Alias Analysis for LLVM

    The setup

    Read on →

  • Constraint Kinds for GHC

    I recently implemented a powerful new extension to GHC HEAD called ConstraintKinds. This (Literate Haskell) post will explain what this means, and how we can exploit it to do some cool stuff.

    Read on →