Archives
2022 March
2022 February
- Feb 27 - Notes on Optimizing Clojure Code: Type Hints
- Feb 20 - Notes on Optimizing Clojure Code: Reflection
- Feb 13 - Notes on Optimizing Clojure Code: Data Structures
- Feb 06 - Notes on Optimizing Clojure Code: Numerics
2022 January
- Jan 30 - Notes on Optimizing Clojure Code: Example
- Jan 23 - Notes on Optimizing Clojure Code: Measurements
- Jan 16 - Notes on Optimizing Clojure Code: Overview
- Jan 09 - AoC 24, part 2: A proper solution
- Jan 02 - AoC 24, part 1: Did I cheat?
2021 December
- Dec 26 - Graph search: Dijkstra, A*
- Dec 19 - Tools You Should Know About: nix-shell
- Dec 12 - Tools You Should Know About: direnv
- Dec 05 - "The Genuine Sieve of Eratosthenes" in Clojure
2021 November
- Nov 28 - Primes in Clojure part 2: Interop
- Nov 21 - Circular Programming in Clojure
- Nov 14 - The Clojure Promise
- Nov 07 - Computing prime numbers with Clojure
2021 October
- Oct 31 - Bash functions are better than I thought
- Oct 24 - Forwarding emails with SES and Terraform
- Oct 17 - A short overview of DNS
- Oct 10 - Tools You Should Know About: Terraform
- Oct 03 - Monads for Clojure programmers
2021 September
- Sept 26 - Tools You Should Know About: jq
- Sept 19 - The elements of git
- Sept 12 - Tools You Should Know About: tmux
- Sept 05 - Monads, part six: But, really, what is a monad?
2021 August
- Aug 29 - Data-first API design
- Aug 22 - Cheap interpreter, part 10: fastest one yet, then a hundred times faster
- Aug 15 - Cheap interpreter, part 9: even faster register machines
- Aug 08 - Cheap interpreter, part 8: faster register machines
- Aug 01 - Cheap interpreter, part 7: register machines
2021 July
- Jul 25 - Cheap interpreter, part 6: faster stack machines
- Jul 18 - Cheap interpreter, part 5: mea culpa
- Jul 11 - Cheap interpreter, part 4: stack machines
- Jul 04 - Cheap interpreter, part 3: host-language functions
2021 June
- Jun 27 - Cheap interpreter, part 2: tree-walking
- Jun 19 - Cheap interpreter, part 1: overview
- Jun 13 - Church-Turing equivalence
- Jun 06 - What is functional programming?
2021 May
- May 30 - What is imperative programming?
- May 23 - Asking questions as an interviewee
- May 16 - Monads, part five: What if I'm not writing Haskell?
- May 09 - Monads, part four: examples
- May 02 - Monads, part three: monads made easy
2021 April
- Apr 25 - Monads, part two: Okay, I guess, but what is it for?
-
Apr 18 - Monads, part one:
What's a monad? - Apr 11 - Monads, part zero: Flavours of abstractions
- Apr 04 - How to break a computer
2021 March
- Mar 28 - Laziness: Clojure vs Haskell
- Mar 21 - Genetic algorithms
- Mar 14 - Removing a directory
- Mar 07 - Review: Why FP Matters (Hughes)
2021 February
- Feb 28 - Merge sort in Bash
- Feb 21 - Bash redirections
- Feb 14 - Runtime optimization with eval
- Feb 07 - Safer Bash: avoid nesting
2021 January
- Jan 31 - Safer Bash: fail on pipes
- Jan 24 - Safer Bash: no unset
- Jan 17 - Safer Bash: die on error