The Curious Engineer

All blogs / Essays / personal

Ben Congdon

benjamincongdon.me/blog

Essays / personalSoftware / engineering practiceAI / ML

Posts
204 from 7 Jan 2016 to 19 Oct 2026
Posting
weekly (36 in the last year)
Kind
personal blog
Feed
https://benjamincongdon.me/blog/feed.xml

2026 6

  1. Agentic Monitoring
  2. This place is not a place of honor
  3. Thoughts on Marginal Token Spend
  4. Tokenmaxxing is Goodharting
  5. Feature Flagging at Databricks
  6. 2025 in Review

2025 37

  1. On Not Running While Injured
  2. Software Engineering in 2026
  3. Watches
  4. Notes from Early Flight Training
  5. On (and Contra) Chalmers on LLM Interlocutors
  6. My Favorite Books of 2023-2025
  7. A Time of Wonders
  8. RAII Guards and Newtypes in Rust
  9. Letters Are Still an Option
  10. An Inconvenient Truth
  11. The South Flow SeaTac Arrival Corridor
  12. My Favorite Music of 2025
  13. Collecting Shibboleths
  14. Book Review: I Am a Strange Loop
  15. What Are You Trying to Say?
  16. Day 15 of Daily Writing
  17. Book Review: The Demon in the Machine
  18. Chorus is Good Software
  19. The Coming Need for Formal Specification
  20. Zip Files as (Simple) Key-Value Stores
  21. What I Look For in AI-Assisted PRs
  22. SWIM: Outsourced Heartbeats
  23. The Decline of the Software Drafter?
  24. Embodied Cognition and the "Tokenverse"
  25. Book Review: Antimemetics
  26. TIL: SQLite's 'WITHOUT ROWID'
  27. Race Report: Seattle Marathon 2025
  28. Technical Escape Velocity
  29. Why Magnetos
  30. Schedule Recurring Calls With Your Far-Away Friends
  31. Fifty Bits of Career Advice
  32. The Agency Gap
  33. When Red Buttons Aren't Enough
  34. Why Developer Tools?
  35. The Models Want to Reason
  36. How I Use AI: Early 2025
  37. AI Slop, Suspicion, and Writing Back

2024 4

  1. Chain of Continuous Thoughts
  2. Lake Union's Lonely Trolley: SLU Streetcar Ridership
  3. TaskWarrior
  4. How I Use AI: Mid-2024

2023 6

  1. Avoid Load-bearing Shell Scripts
  2. Soft Boredom
  3. Mental Models: Slack
  4. The Soul of an Old Machine
  5. Scala Pitfall: Parameterless Function Calls and Misplaced vals
  6. On Prompt Engineering

2022 14

  1. 2022 in Review
  2. My Favorite Books of 2022
  3. On Personal Predictions
  4. In Praise of Stacked PRs
  5. So long, and thanks for all the Gophers!
  6. Mental Model: Difficult Problems vs. Hard Work
  7. You Need to be Wrong (Sometimes)
  8. Mental Model: Stages of Change
  9. NYC 2022 Observations
  10. Tools for Making Difficult Decisions
  11. Manifold Markets
  12. One Weird Trick
  13. Kindle Snippets Viewer
  14. List of Lists of 2022 Predictions

2021 26

  1. 2021 in Review
  2. My Favorite Books of 2021
  3. Branchless Git
  4. Using Embedding to Disambiguate Types in Go
  5. Recently - October 2021
  6. Features of Excellent Code Review Tools
  7. Recently - September 2021
  8. Preventing Link Rot in my Obsidian Vault
  9. Recently - August 2021
  10. B-Trees: More Than I Thought I’d Want to Know
  11. DIY Air Quality Sensor
  12. Recently - July
  13. 2,000 Days Later
  14. Schedule Your Emails
  15. Recently - May
  16. Building a Raft
  17. Backing up my Google Takeout data
  18. Recently - April
  19. Book Review: Gödel, Escher, Bach
  20. Two Types of Infinity
  21. Recently - February 28
  22. Three Layers of Information
  23. A Hand-wavy Proof for the Infinitude of Prime Numbers
  24. Recently - January 31
  25. A Tour of Go 1.16’s io/fs package
  26. My Organization Stack

2020 44

  1. 2020 in Review
  2. My Favorite Books of 2020
  3. Thoughts on the Oculus Quest 2
  4. Recently - November 30
  5. Recently - November 10
  6. Goodbye IFTTT
  7. Recently - October 25
  8. Recently - October 5
  9. Five iOS 14 Shortcuts Tips
  10. Escargotic Commotion
  11. Recently - September 9
  12. Week Notes - August 23rd
  13. Zavináč, an Onomatological Adventure
  14. Week Notes - August 9
  15. Week Notes - August 2
  16. Sinc Split Mechanical Keyboard Build Log
  17. Week Notes - July 26th
  18. Week Notes - July 19th
  19. Week Notes - July 12th
  20. Building a DIY Pen Plotter: midTbot
  21. Vim Tip: Open Hugo Page in Browser
  22. Week Notes - July 5th
  23. Week Notes - June 28th
  24. Vim Tip: Paste Markdown Link with Automatic Title Fetching
  25. Week Notes - June 21st
  26. Vim Tip: Open Parent Folder in Finder
  27. Week Notes - June 14th
  28. Quarantine Notes - Week 13
  29. Quarantine Notes - Week 12
  30. Quarantine Notes - Week 11
  31. Solving the “Miracle Sudoku” in Prolog
  32. Quarantine Notes - Week 10
  33. Quarantine Notes - Week 9
  34. Quarantine Notes - Week 8
  35. Quarantine Notes - Week 7
  36. Cancelable Reads in Go
  37. Quarantine Notes - Week 6
  38. Quarantine Notes - Week 5
  39. Quarantine Notes - Week 4
  40. Quarantine Notes - Week 3
  41. March Updates
  42. Creating a Podcast Feed from a YouTube Playlist
  43. Desktop of Theseus
  44. Tips for Customizing Hugo RSS Feeds

2019 14

  1. 2019 in Review
  2. My Favorite Books of 2019
  3. Fast Rust Docker Builds with “cargo vendor”
  4. Setting up Cloud Scheduler to Trigger Cloud Run
  5. The Value in Go’s Simplicity
  6. A Gentle Nudge
  7. Summer 2019
  8. Introducing Messy: An iOS Grid Puzzle Game
  9. On Graduating or: What to Optimize For
  10. Finding Flow in Haskell
  11. Don’t Look at the Keys
  12. Generative Doodling
  13. iOS Shortcuts for Data Capture
  14. Getting Started with Golang Google Cloud Functions

2018 16

  1. 2018 in Review
  2. My Favorite Books of 2018
  3. Toward Using the iPad Pro for Development
  4. Brief Reactions to React Hooks
  5. Wordscapes
  6. Live Refreshing Cargo Docs
  7. Clippy’s “cast_lossless” Lint Warning
  8. Tweaks to Improve your Twitter Usage
  9. Inertia and When to Break a Habit
  10. Switching from Jekyll to Hugo
  11. Introducing Corral: A Serverless MapReduce Framework
  12. Counting Scanned Bytes in Go
  13. Python Idioms in Rust
  14. Scraping the Web in Golang with Colly and Goquery
  15. MapReduce on Python is better with MRJob and EMR
  16. 25 Days of using Golang

2017 13

  1. 2017 in Review
  2. Learning to Like Java
  3. Internship 2017: Zillow
  4. Building GitTrophy
  5. GDQStatus SGDQ 2017: The React Rewrite, Architecture Updates, and Lessons Learned
  6. How to Deploy a Secure Static Site to AWS with S3 and CloudFront
  7. My List of Useful Development Tools and Utilities
  8. Deploying Microservices with Docker
  9. Podcasts for 2017
  10. A Better Way to Wrangle Python Environments
  11. Converting My Unused Desktop into a Home Server
  12. Task Automation with Todoist and IFTTT
  13. GDQStat.us AGDQ 2017 Post Mortem

2016 24

  1. Taking on the Synacor Challenge
  2. Turkey and Birthday Cake
  3. Trying My Hand at R
  4. AGDQ 2017 Schedule Analysis
  5. Breaking Up with Wunderlist
  6. The Future of Audio Should be Wireless
  7. Internship 2016
  8. Writing For Its Own Sake
  9. Liquid YAML: Programmatic Data
  10. GDQStat.us: A Postmortem
  11. SGDQ 2016 Schedule Analysis
  12. Username Grab!
  13. Podcast Pileup
  14. Optimizing Personal Websites: An Analysis of the Hackathon Hackers Website List
  15. Wunderschedule and My Productivity Manifesto
  16. (Belated) Hello World!
  17. Running a Factorio Server on DigitalOcean
  18. Why I’m not buying into first generation VR
  19. Custom Python Interpreters
  20. Ex Machina (2015)
  21. Jekyll ‘New Post’ Script
  22. Looking back on 100 days of Coding Everyday
  23. Is Apple going downhill? (2016)
  24. Watch Later, Offline