HaskellX 2018

2 minute read

I attended the 2018 Haskell eXchange (HaskellX) conference this week. It’s a two-day conference on the programming language Haskell, and its use in industry. Below a brief summary of some of the talks that I found to be personal highlights, with links to the recordings - check them out! See the full programme here.

  • How to Deploy your Haskell Code Hundreds of Times a Day
    • One of the keynotes, on how code is rapidly deployed to production at FB.
    • In the system described, they do this by pushing all their business logic into libraries which are compiled to shared objects, and then hot-swapping these updated shared objects and loading into the main program on demand.
    • This approach is required for use-cases such as abuse-detection (removing abusive content posted by users) where they need to deploy updated logic/rules/heuristics ASAP in response to some new threat (in seconds), and they cannot tolerate longer times associated with a full deployment (i.e. restarting machines, reconnecting to dependent services, etc).
    • He also mentioned how they have a tool in their code review system that will run the code-presented-for-review against some simulated production traffic replay and report back performance stats. Nice! (Related?)
  • Headfirst into Haskell
    • An honest experience report based on the speaker’s first year working with Haskell.
    • One interesting topic touched on is that of Contempt Culture; for example looking down at people who use other programming languages, and the closed-mindedness that ensues. Contempt Culture disproportionately affects those who are under-represented minorities in Tech, who may have taken non-traditional routes into the industry.
  • Building a Multi-Billion Dollar Cryptocurrency with Haskell
    • The speaker presents his view on what has setup his organisation for success in building their cryptocurrency/platform.
    • Its developed in Haskell, and he describes how that’s made it a success: Haskell programmers tend to be more sympathetic to the world of mathematics and academic rigor, which is necessary in defining and solving the underlying engineering problems that arise when building blockchain systems (engineering problems around distributed systems, networking, etc., as well as finance/economics/regulatory concerns)
  • Liquid Haskell
    • Liquid Haskell is an extension to the Haskell language that allows you to prove things about your code, which are then confirmed at compile time.
    • For example, if you had a function that given a list, returned the head of a list, but wanted it to not throw a runtime exception in the case that the list was empty, then using Liquid Haskell you could: encode as a type the notion of a non-empty list, and then annotate your function with a precondition to say that this function only takes non-empty lists. This check would then instead throw a compile-time error if that condition is violated, which can be dealt with more readily.