blog
Written Content
posts
- Reading git range-diff output: It's simpler than I thought! (2024-12-11)
- Bisecting GHC is easier than I thought: Practical lessons from building a compiler (2024-12-05)
- Announcing git-prole: Create multiple checkouts for one repository with Git worktrees (2024-10-22)
- Giving My Student Loan Servicer a $560 Interest-Free Loan: I finished paying off my student loans. They took another $560 anyways. (2024-08-20)
- Announcing ghciwatch 1.0: Load a GHCi session for a Haskell project and reload it when source files change (2024-07-15)
- Why Git's diff3 merge conflicts are confusing: The first section in a diff3 merge conflict is your branch in a merge, but their branch in a rebase (2024-03-28)
- Rust for Haskellers: A 5-minute intro to Rust for Haskellers who want to get stuff done (2023-07-07)
- No Good Soap Dish: The problems you want it to solve cannot be solved. (2022-09-20)
- So You Want to Ship a Command-Line Tool for macOS: It's one executable, how hard could it be? (2022-09-07)
- transgender surgery is way too hard to get: you do not need 14 pages of paperwork and dozens of documents to talk to me about a surgical procedure (2022-06-11)
- Git GUIs and why I don't like them: Here's why I don't like several Git GUIs (2022-05-05)
- installing nixos doesn't have to hurt: there's lots of low-hanging fruit to work on (2022-03-18)
- against discord channels: i just wanna talk to my friends, please don't make me click 300 little tabs to do it (2021-11-02)
- type-driven computing: towards a more cohesive computing experience (2021-02-01)
- Slack’s threads are terrible for accessibility: Slack’s threads might as well not exist (2020-10-23)
- Open letter: Brandeis is failing its disabled students: The last time I met with you, I was told that “there’s not a brick that doesn’t move” when it comes to accessibility. Here are some bricks. Let’s get moving. (2020-02-07)
- Introduction to functional programming in Java (2020-01-10)