Ditch your (mut)ex, you deserve better
Mutexes are unreliable tools, let's explore better alternatives.
Mutexes are unreliable tools, let's explore better alternatives.
Monads are one way to sequence effects, but they're not the only way!
Monads are a useful tool, but what costs do we pay for their expressive power?
A nifty trick for debugging your tables easier.
Weak Caching for Strong Apps
Techniques for lateralizing nested code
Unit tests aren't the only way.
Some things other languages should steal from Unison
Building an efficient and scalable type search for Unison
Herein we look at how, for certain situations, GADTs can sometimes provide a cleaner approach than typeclasses.
Lenses are commonly used for getting and setting fields on records, but they're actually much more adaptable than that! This post dives into the idea of 'virtual fields' using optics.
Discovering applications of filterable optics
Implementations of various silly job interview questions in Haskell
We rebuild the core behaviour of 'jq' using standard Haskell combinators and optics
An introduction to kaleidoscopes
A profunctor implementation of algebraic lenses
Day 4 of Advent of Code solved with optics
Day 3 of Advent of Code solved with optics
Day two of Advent of Code solved with optics
Day one of Advent of Code solved using optics
An exploration into high-performance Haskell by cloning the wc utility
Optics + Regex: greater than the sum of their parts.
Build a static site using Haskell, Shake and Pandoc!
Configuring editor support for Haskell (hie-core 2019)
Collecting options for your application from multiple sources using Higher Kinded Data
We learn a method to mock multiple effects when writing tests without an exponential explosion of instances.
We explore the applications and implementation of a generalized version of Reader/Writer monads.
Exploring writing multiple versions of your application in a typesafe way using data-kinds and functional dependencies
We explore a merge-sort monoid
How to use finger trees to solve problems by choosing the appropriate monoid measure.
A guide to using Postman for API exploration and testing
A guide to using a google sheets spreadsheet as a BigQuery datasource
Using Fix and Free datatypes to represent compiler ASTs
Avoid using IO or MonadIO directly
Upgrading your type programming game
Quick ~100 line implementation of Conway's game of life in Haskell
Representable Functors can be used to create Map-like data structures or perform Radix-like sorts.
Building adjunctions from Free and Forgetful Functors
Using Adjunctions and Representable to build a Battleship game
Using Representable and Cofree to build a zipper datatype
How to set up your Haskell project to distribute via Homebrew
Discovering an isomorphism between the Kleisli version of Endomorphisms to the mtl StateT transformer.
Tail Recursion in python without introspection
Starting with the interface can make things easier for everyone
Let's re-visit truthy/falsy.
Use Auto-env to streamline your workflow.
Semantic versioning helps, use it!
I've open-sourced the code that I use to generate this blog.
When did schooling become more important than skill? Should we really be discriminating against people based on the school they went to?
Check out the Duckling project