Haxl is a powerful abstraction with IMHO a beatifuly simple implementation.
However for our use case at LumiGuide (reading and writing registers of modbus devices) it wasn't simple enough. We just needed an abstraction for batching and did not need caching and the other features Haxl provides.
So I wrote monad-batcher which as the name implies only provides a batching abstraction (which can also be used to execute commands concurrently). All the other features can be build on top of monad-batcher as separate layers (separation of concerns).
The library is available on Hackage but needs a bit more documentation (a tutorial would be nice):
The nice thing about having many cyclists is that there's a high demand for cycle parking spaces which means you can run a good business guiding cyclists to available space. This is what we do at LumiGuide. See: https://bicycledutch.wordpress.com/2015/06/09/bicycle-parkin...
At LumiGuide we use NixOS on our development machines as well as on all our production servers. I used ansible before but NixOS is on a whole different level.
See the following for a story about a system we just deployed which uses NixOS:
As I mentioned in the reddit comments we're using Haskell for most parts of the system (frontend via GHCJS, web application servers, protocol implementations). For dev-ops we use the Nix ecosystem: NixOS & nixops.
(I'm the CTO of LumiGuide who developed this system).
We're currently not using the system for video surveillance. Images from the cameras are only stored in memory for a short period of time while being processed by our CV algorithm.
However, since bicycle theft is a common theme in the Netherlands, there's strong interest from municipalities for using our system for video surveillance. So we're now researching how to extend our system for doing that.
Nix is Turing-complete. This was even sometimes considered a problem because it makes the language too powerful:
https://nixos.org/~eelco/talks/guix-feb-2018.pdf