The Curious Engineer

All blogs / Haskell

Chris Penner

chrispenner.ca

The Personal blog and musings of Chris Penner, a designer, developer and future opsimath.

HaskellFunctional / PL theorySoftware / engineering practice

Posts
66 from 19 May 2014 to 11 Nov 2025
Posting
now and then (1 in the last year)
Kind
personal blog
Feed
https://chrispenner.ca/atom.xml

2025 8

  1. Ditch your (mut)ex, you deserve better
  2. Exploring Arrows for sequencing effects
  3. Monads are too powerful: The Expressiveness Spectrum
  4. You should add debug views to your DB
  5. Save memory and CPU with an interning cache
  6. Using traversals to batch database queries
  7. Building Industrial Strength Software without Unit Tests
  8. 3 things other languages should steal from Unison

2024 1

  1. Building Type Search for Unison

2020 6

  1. Simpler and safer API design using GADTs
  2. Virtual Record Fields Using Lenses
  3. Composable filters using Witherable optics
  4. Silly job interview questions in Haskell
  5. Generalizing 'jq' and Traversal Systems using optics and standard monads
  6. Intro to Kaleidoscopes: Optics for aggregating data through Applicatives

2019 10

  1. Algebraic lenses
  2. Advent of Optics: Day 4
  3. Advent of Optics: Day 3
  4. Advent of Optics: Day 2
  5. Advent of Optics: Day 1
  6. Beating C with 80 lines of Haskell: wc
  7. Optics + Regex: Greater than the sum of their parts
  8. Slick 1.0 Release - Now with a quick and easy template!
  9. Haskell IDE Support (hie-core lsp Sept. 2019)
  10. Higher Kinded Option Parsing

2018 8

  1. Mocking Effects using Constraints and Phantom Data Kinds
  2. Update Monads: Variation on State Monads
  3. Typesafe Versioned APIs
  4. Monoidal Sorting
  5. A Practical Introduction to Finger Trees
  6. Postman API Explorer: You've got mail!
  7. Query a Google Sheets Spreadsheet from BigQuery
  8. ASTs with Fix and Free

2017 9

  1. MonadIO Considered Harmful
  2. Type Tac Toe: Advanced Type Safety
  3. Conway's Game of Life using Representable and Comonads
  4. Radix Sort, Trie Trees, and Maps from Representable Functors
  5. Free and Forgetful Functors
  6. Adjunctions and Battleship
  7. Zippers using Representable and Cofree
  8. Shipping Haskell via Homebrew
  9. Kleisli Endomorphisms

2016 3

  1. Tail Recursion In Python
  2. The Interface We Need
  3. Let there be Truth

2015 11

  1. Autoenv Trick
  2. Semantic Versioning
  3. BoxKite: Open-Sourced
  4. Getting Schooled
  5. Gem: Duckling
  6. Worth a Read #4 - Unix Tools
  7. Vim vs. Emacs?
  8. Gem: Font-Awesome
  9. Worth a Read #3 - Typography
  10. Gem: Git
  11. Procedural Generation is the Future

2014 10

  1. Worth a Read #2 - CSS
  2. Gem: Jekyll
  3. Worth a Read #1
  4. Gem: Neovim
  5. You Own Your Data
  6. The Future of Software
  7. Set the Data Free
  8. Legacy in Design
  9. Caps-lock
  10. The Switch To Mac