F
Feed Atlas
OPML directory + server-side RSS reader

evanhahn.com

SiteRSSBlogs
Back

Latest posts

  • The two kinds of error
    Mar 01, 2026

    In short: in my mind, errors are divided into two categories. Expected errors (think “user entered invalid data”), which are part of normal operation, aren’t the developer’s fault, and should be handled. Unexpected errors (think “null pointer exception”) are the developer’s fault, likely indicate a bug, and are allowed to crash. Error handling is an important, but often neglected, part of programm

  • Notes from February 2026
    Feb 28, 2026

    Things I did and saw this February. Things I made I shipped my first feature at Ghost: Inbox Links. When a member enters their email to log in or sign up, we now show a button that takes them straight to their inbox. In addition to shipping a neat feature, I also enjoyed learning about MX records and RFC-compliant email address parsing. The source code for the main logic is here. I was surprised t

  • Introducing gzpeek, a tool to parse gzip metadata
    Feb 26, 2026

    In short: gzip streams contain metadata, like the operating system that did the compression. I built a tool to read this metadata. I love reading specifications for file formats. They always have little surprises. I had assumed that the gzip format was strictly used for compression. My guess was: a few bytes of bookkeeping, the compressed data, and maybe a checksum. But then I read the spec. The g

  • Track Zelda release anniversaries in your calendar
    Feb 21, 2026

    The original Legend of Zelda came out 40 years ago today. With other birthdays on the horizon, like Twilight Princess’s 20th in November, I wanted a calendar that showed the anniversary of every Zelda game. So I made one. Subscribe to this URL in your calendar app: https://evanhahn.com/tape/zelda_anniversaries.ics Once you do, you’ll get calendar events on the anniversary of each game’s release.

  • Notes from January 2026
    Jan 31, 2026

    Happy new year! Here are some of my notes from the first month of 2026. New job at Ghost! I started a new job as a Staff Engineer at Ghost this month. According to our homepage, Ghost is “for professional publishers to create, share, and grow a business around their content.” I’m looking forward to building software for independent journalists. This is also the third time in a row I’ve chosen to w

  • An LLM that's 7500× stupider
    Jan 27, 2026

    The Kimi K2.5 large language model was just released. It has 1 trillion parameters. Roughly speaking, the more parameters, the smarter the model. So it’s pretty smart, and is probably considered “state of the art”. But while the world is playing with fancy trillion-parameter chatbots, I was using smollm2:135m. As the name implies, it has just 135 million parameters. Compared to the state of the ar

  • A mental math heuristic to convert between Fahrenheit and Celsius
    Jan 17, 2026

    I sometimes have to convert between Fahrenheit and Celsius. The actual formula is hard to do in my head, but someone once told me a useful approximation: To convert from Celsius to Fahrenheit, double it and add 30. To convert from Fahrenheit to Celsius, subtract 30 and halve it (the reverse). For example, if it’s 12ºC, this heuristic would return 54ºF. (12 × 2) + 30 = 54. The actual amount is not

  • I set all 376 Vim options and I'm still a fool
    Jan 16, 2026

    I set all of Vim’s configuration options. I still feel far from mastery. First impressions of Vim: wow I first saw someone use Vim during an internship in 2012. I had been coding for many years and I fancied myself pretty good at shortcuts, but I was quickly humbled. I watched in awe as experienced users zipped around the code. A single keystroke could move the cursor halfway across the file to ex

  • Notes from "On Writing Well"
    Jan 04, 2026

    I’ve been trying to improve my writing so I read On Writing Well by William Zinsser. My main takeaways: Clear thinking is a prerequisite for clear writing. How do you avoid cluttered writing? “The answer is to clear our heads of clutter. Clear thinking becomes clear writing; one can’t exist without the other. It’s impossible for a muddy thinker to write good English.” Reduce scope. Zinsser hammers

  • Notes from December 2025
    Dec 31, 2025

    Here are my notes from the final month of 2025. Little things I did I predict that Mastodon will outlive Bluesky because the latter is corporate-controlled. We’ll see if my prediction is correct in about 25 years. I’ve been working on a mystery project that uses Pyodide, the WebAssembly-powered Python distribution. After much toil I figured out how to make it do relative imports. I made a little a