Blog.

To Void or to void

  • Michael Snoyman
  • 31.07.2017
Let's say we're going to be writing some code that needs to know the current time. It would be inefficient to have to recalculate the current time whenever it's ...
READ MORE

Hiring: Devops Engineers (Phoenix and Telecommute)

  • Michael Snoyman
  • 28.07.2017
FP Complete is an advanced software company specializing in sophisticated server side applications performing scientific data computation. Our toolchain includes ...
READ MORE

The RIO Monad

  • Michael Snoyman
  • 24.07.2017
I'd really intended to write a blog post on a different topic this week. But given that I did some significant refactoring in the Stack codebase related to a number of ...
READ MORE

Announcing: the new unliftio library

  • Michael Snoyman
  • 18.07.2017
For the past few years, Francesco Mazzoli and I have discussed issues around monad transformers—and the need to run their actions in IO—on a fairly regular basis. I ...
READ MORE

Stack's New Extensible Snapshots

  • Michael Snoyman
  • 14.07.2017
NOTE This blog post made the rounds last week before the branch was actually merged and the post was still on a review server. I'm officially publishing it as the pull ...
READ MORE

Iterators and Streams in Rust and Haskell

Streaming data is a problem domain I've played with a lot in Haskell. In Haskell, the closest we come to built-in streaming data support is laziness-by-default, which ...
READ MORE

A Tale of Two Brackets

  • Michael Snoyman
  • 27.06.2017
This is a debugging story told completely out of order. In order to understand the ultimate bug, why it seemed to occur arbitrarily, and the ultimate resolution, there's ...
READ MORE

Understanding ResourceT

  • Michael Snoyman
  • 19.06.2017
This blog post came out of two unrelated sets of questions I received last week about usage of the resourcet library. For those unfamiliar with it, the library is often ...
READ MORE

The ReaderT Design Pattern

  • Michael Snoyman
  • 12.06.2017
Often times I'll receive or read questions online about "design patterns" in Haskell. A common response is that Haskell doesn't have them. What many languages address ...
READ MORE

Hiring: Project Manager, Telecommute

  • Michael Snoyman
  • 13.04.2017
This position has already been filled.
READ MORE