Ben Congdon

  1. When Red Buttons Aren't Enough

    On June 12, 2025, most of GCP went offline. This led to downstream outages in a multitude of websites and services, such as Cloudflare, Spotify, OpenAI, Anthropic, Replit, and many others. With a few days of hindsight, GCP published a quite detailed postmortem. Frankly, I’m impressed by the depth of…

    Published

  2. Why Developer Tools?

    I had the realization a year or so ago that much of the high-impact work I’ve done in my career has been related – directly or indirectly – to building developer tooling. I did not plan this, at all, but I’m quite happy to have found impact in this niche. My first job outside of school was writing a…

    Published

  3. The Models Want to Reason

    Since I wrote about COCONUT, Meta’s paper on reasoning in latent space, there’s been a wave in publicly accessible research into reasoning models. The most notable example, which overshadows everything else to the point of feeling like I almost don’t need to mention it as I write this in mid Feb 2025…

    Published

  4. How I Use AI: Early 2025

    Previously: Mid 2024 The landscape of AI tooling continues to shift, even in the past half year. This is not unexpected. This post is an updated snapshot of the “state of things I use”. Tools Work Copilot Edits: This feels roughly 85% as effective as Cursor, but the ability to incorporate enterprise…

    Published

  5. AI Slop, Suspicion, and Writing Back

    The impetus for this post was my recent realization that I’ve developed an involuntary reflex for spotting AI-generated content. The tells are subtle now, but (sadly? tellingly?) this sort of content is seemingly everywhere now once you start looking. The Rise of AI Slop One bit of hipster cred I get…

    Published

  6. Chain of Continuous Thoughts

    Recent advances in LLMs have demonstrated increasingly powerful reasoning capabilities, primarily through eliciting chain-of-thought outputs from models. While these methods have proven effective, they rely on discrete, tokenized representations of reasoning steps. A recent research paper from Meta introduces…

    Published

  7. Lake Union's Lonely Trolley: SLU Streetcar Ridership

    I lived in the Eastlake neighborhood of Seattle for several years. Eastlake, by its name, sits on the east side of Lake Union. As a runner, I spent many mornings running along the lake, passing by the South Lake Union Streetcar. Each time I ran past the streetcar, what consistently struck me as odd was…

    Published

  8. TaskWarrior

    I haven’t been writing much recently (sound of crickets coming from this year’s blog archive), but this is such an OnBrand™ post that I couldn’t not write it. At work, I’ve been shifting into more of a TL role, and as such I’ve been tracking an increasingly large number of streams of information. We…

    Published

  9. How I Use AI: Mid-2024

    I’ve been in a mode of trying lots of new AI tools for the past year or two, and feel like it’s useful to take an occasional snapshot of the “state of things I use”, as I expect this to continue to change pretty rapidly. Claude 3.5 Sonnet (via API Console or LLM): I currently find Claude 3.5 Sonnet to…

    Published

  10. Avoid Load-bearing Shell Scripts

    I’ve recently been contemplating a recurring pattern that I’ve observed in several teams I’ve worked on – the ‘Load-Bearing Script.’ The outline of this pattern goes like this: A team member writes a portion of a system as a shell script for a quick prototype. That shell script, initially quite simple…

    Published

  11. Soft Boredom

    I recently read Pema Chödrön’s Living Beautifully, and I was struck by the following passage: Chögyam Trungpa demonstrated the co-emergent nature of feelings in a teaching on boredom-on how we feel when nothing’s happening. Hot boredom, he said, is a restless, impatient, I-want-to-get-out of here feeling…

    Published

  12. Mental Models: Slack

    Two of my all-time favorite articles about managing one’s energy and time relate to the notion of maintaining “Slack” in one’s life. The first, Slack, by Zvi Mowshowitz, directly describes the Slack concept that I refer to in this post. The second, Sabbath hard and go home, expands on this notion in…

    Published

  13. The Soul of an Old Machine

    I recently got an M2 MacBook Air to replace my 2014 MacBook Pro. Apple offered to recycle my old machine (and give me a token $90 off my new laptop as a trade-in), which I gladly opted-in to. However, when it got time to actually wipe my old laptop and trade it in, I couldn’t help but get a little sentimental…

    Published

  14. Scala Pitfall: Parameterless Function Calls and Misplaced vals

    I’ve been using Scala for the better part of a year, and it’s mostly been an enjoyable experience. Scala fits in a comfortable position in the programming latent space somewhere in between Java, Python, JavaScript, and Rust. However, Scala is definitely a a “big” language – it has lots of language features…

    Published

  15. On Prompt Engineering

    [P]hysics simulates how events play out according to physical law. GPT simulates how texts play out according to the rules and genres of language. – Scott Alexander (Source) 1. Whence Prompt Engineering The notion of “prompt engineering” has been rattling around in my head for the last several months…

    Published

  16. 2022 in Review

    Previously: 2021, 2020, 2019, 2018, 2017 Another year come and gone. For me, 2022 had the feeling of being the first real “post-pandemic” year (despite the fact that I caught COVID in July). There clearly was a vibe shift this year, as the pandemic became less of a headline story, the war in Ukraine…

    Published

  17. My Favorite Books of 2022

    Previous book lists: 2021, 2020, 2019, 2018. My Reading List has a full log of the books I read. Another year, another slate of books to reflect back over! I read about as many books this year as I usually do (perhaps slightly fewer), but many more of them were read as audiobooks than I usually do. Non…

    Published

  18. On Personal Predictions

    For the last couple years, I’ve maintained a spreadsheet of personal predictions. It’s been a useful practice that I would recommend. “Personal” in this context has 2 meanings: first, that I don’t preregister or publicly publish these predictions; second, that the content of some of the predictions is…

    Published

  19. In Praise of Stacked PRs

    “Stacked PRs” is the practice of breaking up a large change into smaller, individually reviewable PRs which can depend on each other, forming a DAG: I wrote about this in my post about git-branchless, but I think the practice itself deserves its own post. Why am I so enthusiastic about stacked PRs? They…

    Published

  20. So long, and thanks for all the Gophers!

    In some ✨personal news✨, I’ve recently left Google. It was a great ~3 year ride, and I couldn’t have asked for a better place to begin my career. Obligatory badge-and-laptop goodbye photo Whenever I’d interview candidates for Google, a frequent question was “What’s the best part of working there?”. Invariably…

    Published

  21. Mental Model: Difficult Problems vs. Hard Work

    In “Difficult Problems and Hard Work”, David McIver writes: An idiosyncratic distinction I find useful (though don’t reliably stick to) is that there is hard work and difficult problems, and these are not all that closely related. The distinction is roughly that something is hard work if you have to…

    Published

  22. You Need to be Wrong (Sometimes)

    To be a well-calibrated predictor, you need to to be wrong (sometimes). “Well-calibrated” means that if you predict something occurs with X% probability, then that event actually occurs X% of the time. Since predictions are often made on one-off events, another way of expressing calibration is that X…

    Published

  23. Mental Model: Stages of Change

    A useful mental model for reasoning about behavior change is the Transtheoretical model – sometimes also known as the “Stages of Change” model. This model describes the phases of human behavior change: Precontemplation (“not ready”) – “People are not intending to take action in the foreseeable future…

    Published

  24. NYC 2022 Observations

    I spent a week in NYC earlier this month. Here are some unprocessed impressions I had of of the city, as of Summer 2022. (Disclaimer: Many of these are probably so obvious as to be uninteresting) Transit Google Maps’ subway directions work great in NYC. The schedules/transfers were accurate, and the…

    Published

  25. Tools for Making Difficult Decisions

    The most difficult decisions are when one needs to choose between options that are equally good or equally bad. This is nearly tautological: if you’re choosing between a good option and a bad option, just choose the good option. Similarly, if there is a clear “lesser of two evils”, then that is the obvious…

    Published

  26. Manifold Markets

    I’ve been playing around with Manifold Markets recently. Manifold is a fake money prediction market platform whose differentiator is that it allows anyone to create arbitrary prediction markets. Unlike other platforms1, that moderate market creation and resolution criteria, Manifold users can make whatever…

    Published

  27. One Weird Trick

    Over the past few months, I’ve been hard at work trying to reduce the latency of workflows for one of the APIs that my team owns. Last week, I discovered a small change that had a larger impact on reducing latency than 3 months of work. Somewhat embarrassingly, that change was effectively “don’t call…

    Published

  28. Kindle Snippets Viewer

    TL;DR: I wrote a little web app to view Kindle Highlights; you can check it out here. One of my favorite features of reading books on Kindle is that you can highlight interesting quotes as you read, and revisit those highlights later. Your Kindle highlights are saved to The Cloud™️ for books that you’ve…

    Published

  29. List of Lists of 2022 Predictions

    Life can only be understood backwards; but it must be lived forwards. - Søren Kierkegaard ‘Tis the season for prognosticating 2022. It seems like January now brings a deluge of folks registering predictions for the upcoming year (and, even better, scoring their previous predictions!). I’m becoming more…

    Published

  30. 2021 in Review

    Previously: 2020, 2019, 2018, 2017 To expect the unexpected shows a thoroughly modern intellect. - Oscar Wilde From the record-breaking heat wave to the record-breaking cold-snap during which I’m now writing this post, 2021 in Seattle was truly a land of contrasts. More seriously, 2021 is a strange year…

    Published

  31. My Favorite Books of 2021

    Previous book lists: 2020, 2019, 2018. My Reading List has a full log of the books I read. Fiction The Overstory (Richard Powers) The Overstory is a story about trees, the people that endeavor to protect them, and how rooted human culture is in nature (pun intended). The story is told from half a dozen…

    Published

  32. Branchless Git

    Git is a (in)famously polarizing tool, and there are as many distinct Git workflows as there are developers that use Git. However, since Git has the most mindshare of any extant VCS tool, it’s worth finding ways to make it more comfortable to use. One Git usage pattern that I think is underused is the…

    Published

  33. Using Embedding to Disambiguate Types in Go

    A few weeks ago, I stumbled upon a trick to use Go’s type system to disambiguate between variants of credentials on a RPC service I work with. The premise of the example is that we’re writing an RPC request handler that needs to perform two outbound RPCs – one to an external service that uses user credentials…

    Published

  34. Recently - October 2021

    WFH, Month 19 I was pretty heads-down on work this month. I’m working on a relatively greenfield project that’s had some fun opportunities to make architectural decisions. It’s very satisfying work, but it’s the type of work that stays stuck in your head, making it hard to switch out of “work mode” at…

    Published

  35. Features of Excellent Code Review Tools

    Last week, I onboarded onto a new code review system. In learning how to review code in this new tool, I got to thinking about best features of previous code review systems I’ve used. What follows is an opinionated (and very incomplete) list of what I think are “table stakes” for code review in 2021…

    Published

  36. Recently - September 2021

    New Tools This month I put some time into writing a couple more Datasette-adjacent tools: (See previous Datasette posts) instapaper-to-sqlite - 📑 Export your Instapaper bookmarks to SQLite overcast-to-sqlite - 🎧 Download your Overcast listening history to sqlite Instapaper: For a while, I’ve been using…

    Published

  37. Preventing Link Rot in my Obsidian Vault

    As I’ve written in the past, I’ve been using Obsidian to store notes, links, and other “outboard brain” type information that I want to keep track of. As my Obsidian vault grows, one thing that becomes more of a risk is the potential for link rot. Much has been written about the problem of link rot,…

    Published

  38. Recently - August 2021

    August was a fun month for me. I’ve picked up a new habit of taking pen-and-paper notes while reading non-fiction, and it’s been pretty engaging. So far, I’ve noticed that I retain content a lot better when I take notes, though it does take substantially longer to get through books this way. I don’t…

    Published

  39. B-Trees: More Than I Thought I'd Want to Know

    Recently, I’ve been reading through the excellent Database Internals (Alex Petrov, 2019). The first half of the book is dedicated to the implementation of database storage engines – the subsystem(s) of a DBMS that handles long-term persistence of data. A surprising amount of this section discusses the…

    Published

  40. DIY Air Quality Sensor

    It’s shaping up to be another intense season for wildfires on the West Coast. Last year, we had about 2 weeks where the air quality was bad enough that we needed to limit our time outdoors. It’s been on my mind to stock up with supplies for wildfire season. Air filters (for reducing the amount of smoke…

    Published

  41. Recently - July

    I skipped the June edition of these retrospective posts, but in the spirit of not breaking a habit more than once, I’m back with July! I was hoping that COVID was pretty much “over”, but with the delta variant and my work pushing back our return-to-office until mid-October… the pandemic is very much…

    Published

  42. 2,000 Days Later

    On January 1, 2016, I started a daily journaling habit. As of today, I now have 2000 daily entries – a continuous run for over 5 years1. 🎉 My “journal” started as an accidental offshoot of one of my early Quantified Self projects. The goal was to keep a log of how I was feeling each day, so I could…

    Published

  43. Schedule Your Emails

    One of my favorite features in Gmail is the ability to schedule an email to be sent in the future. Other email clients, like Thunderbird1, have this capability as well. I think of this feature not as “scheduling an email to be sent at a specific time”, but rather as “deferring sending the email for a…

    Published

  44. Recently - May

    COVID: May was a good month on the COVID front in Washington. Vaccines were generally available – and at least 56% of adults have gotten their first dose. Washington is on track to “reopen” completely by June 30th. All good news! Things are progressing faster and with fewer negative surprises than I…

    Published

  45. Building a Raft

    Over the past couple weeks, I’ve been working on an implementation of the Raft distributed consensus algorithm written in Go. It’s been a great exercise in “grokking by doing”. It’s one thing to understand an algorithm, and another thing to implement a correct instance of it. The Raft Mascot I’ve been…

    Published

  46. Backing up my Google Takeout data

    For various reasons, it’s probably a good idea to keep backups of data that is stored in The Cloud™️. I have a bunch of data in my Google account from years of usage – photos and email primarily, but also a bunch of other digital detritus that would make me sad if it went away. Google Takeout is a pretty…

    Published

  47. Recently - April

    It finally seems like we’re nearing the end of the acute phase of the pandemic in the US. 🙂 Vaccines are now available to all adults, which is months ahead of what I was expecting earlier this year. There are still reasons to be concerned about the global state of the pandemic, but at least locally…

    Published

  48. Book Review: Gödel, Escher, Bach

    Gödel, Escher, Bach: an Eternal Golden Braid (Douglas Hofstadter, 1979) is a book that’s been sitting on my shelf for years, never quite getting to the top of my “to read” list because of it’s intimidating length and density. On a lark, I gave the first chapter a read, and got sucked in within the first…

    Published

  49. Two Types of Infinity

    This is the third post inspired by my current read-through of Gödel, Escher, Bach. See also “A Hand-wavy Proof for the Infinitude of Prime Numbers” and “Three Layers of Information”. One of the most interesting concepts I remember from my Introduction to Number Theory course in college was the notion…

    Published

  50. Recently - February 28

    There’s not as much to write about this month (fortunately?). The US vaccine rollout continues to hum along – I already have a family member who’s received both doses of the vaccine, and another family member who’s scheduled for their first appointment. I still think it’ll be some time before I am able…

    Published