Blog.

Hiring: Devops Engineers (San Diego, Portland, Telecommute)

  • Michael Snoyman
  • 28.03.2017
While this position has already been filled, we continue to seek devops applicants from around the world. Please do send us your CV if you are interested in working with ...
READ MORE

Partial patterns in do blocks: let vs return

  • Michael Snoyman
  • 11.03.2017
This blog post is about a pattern (pun not intended) I've used in my code for a while, and haven't seen discussed explicitly. A prime example is when doing simplistic ...
READ MORE

The typed-process library

  • Michael Snoyman
  • 25.02.2017
In October of last year, I published a new library - typed-process. It builds on top of the veritable process package, and provides an alternative API (which I'll ...
READ MORE

Immutability, Docker, and Haskell's ST type

  • Michael Snoyman
  • 13.02.2017
In managing projects at FP Complete, I get to see both the software development and devops sides of our engineering practice. Over the years, I've been struck by the ...
READ MORE

MonadMask vs MonadBracket

  • Michael Snoyman
  • 06.02.2017
The exceptions package provides three typeclasses for generalizing exception handling to monads beyond IO:
READ MORE

Green Threads are like Garbage Collection

  • Michael Snoyman
  • 07.01.2017
Many common programming languages today eschew manual memory management in preference to garbage collection. While the former certainly has its place in certain use ...
READ MORE

Comparative Concurrency with Haskell

  • Michael Snoyman
  • 22.11.2016
Last week, I was at DevConTLV X and attended a workshop by Aaron Cruz. While the title was a bit of a lie (it wasn't four hours, and we didn't do a chat app), it was a ...
READ MORE

Covariance and Contravariance

  • Michael Snoyman
  • 09.11.2016
Typeclasses such as Bifunctor are often expressed in terms of whether they are covariant or contravariant. While these terms may appear intimidating to the unfamiliar, ...
READ MORE

Exceptions Best Practices in Haskell

  • Michael Snoyman
  • 07.11.2016
Over the years, I've written a number of different documents, tutorials, comments, and libraries on how to do proper exception handling in Haskell. Most of this has ...
READ MORE

Docker demons: PID-1, orphans, zombies, and signals

  • Michael Snoyman
  • 05.10.2016
There are a number of corner cases to consider when dealing with Docker, multiple processes, and signals. Probably the most famous post on this matter is from the ...
READ MORE