146 karma · joined March 9, 2014
Does require some NixOS knowledge, but is nice for upgrades.
# uname -a OpenBSD xxx 7.1 GENERIC.MP#3 amd64
# ifconfig em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr x:x:x:x:x description: xxx index 2 priority 0 llprio 3 media: Ethernet autoselect (1000baseT full-duplex) status: active inet x.x.x.x netmask 0xffffff00 broadcast x.x.x.x inet6 fe80::x:x:x%em0 prefixlen 64 scopeid 0x2 inet6 2601:x:x:x::1 prefixlen 64 pltime 301996 vltime 301996
* embedded DSL for describing things with minimal syntax * types to enforce my invariants * immutable data + STM to protect my shared data structures * multithreaded/async code is easy to work with * deterministic outputs given inputs
but it was headaches in a lot of ways:
* exceptions - still not sure I’ve handled all exceptions gracefully * culture - most teammates are intimidated by Haskell (and types) * ecosystem is behind (Rust has exponential usb acceleration vs Haskell’s constant pace)
While I’m proud of the outcome I would have chosen differently now that I’ve seen the other side and have the project done. The inertia I was fighting required far too much energy
[ source: I was a part of those failures ]
Really enjoyed the article. Keep it up!
2. Shower music player