Archive
Here you can find all my previous posts:
- Why Monad Transformers Matter July 01, 2023
- Monad Transformers 101 June 10, 2023
- Drawing Trees Functionally: Reingold and Tilford, 1981 April 22, 2023
- Writing Servant combinators for fun and profit February 28, 2023
- Why continuation-passing style works, and the Cont monad May 02, 2022
- Getting better type errors by typing literally everything August 09, 2020
- Deriving the Writer monad from first principles July 26, 2020
- Deriving the Reader monad from first principles July 19, 2020
- Deriving the State monad from first principles July 12, 2020
- Reanimate: a tutorial on making programmatic animations May 31, 2020
- Reanimate: swearing at bad documentation May 10, 2020
- Permissive, then restrictive: concrete solutions and examples May 03, 2020
- Permissive, then restrictive: learning how to design Haskell programs April 19, 2020
- Things software engineers trip up on when learning Haskell April 12, 2020
- The road to proficient Haskell January 11, 2020
- Try the advanced stuff January 05, 2020
- Abstracting out common columns in Opaleye December 28, 2019
- Which type-safe database library should you use? December 14, 2019
- How does Haskell make your life easier? November 30, 2019
- A list of Haskell articles on good design, good testing November 24, 2019
- A dead-simple web stack in Haskell November 16, 2019
- A cheatsheet to JSON handling with Aeson October 19, 2019
- How to do basic error handling and logging in Haskell October 12, 2019
- You are already smart enough to write Haskell October 05, 2019
- Figuring out how to use Beam for DB migrations September 27, 2019
- A cheatsheet to the time library September 16, 2019
- How I read Haskell documentation June 06, 2019
- String interpolation and overlapping instances 101 May 27, 2019
- Exercises for understanding lenses April 25, 2019
- A cheatsheet to regexes in Haskell April 11, 2019
- Deploying Haskell applications with ECS, Docker, and Nix April 09, 2019
- Hosting a static site using Hakyll and AWS January 21, 2019