F
Feed Atlas
OPML directory + server-side RSS reader

evanhahn.com

SiteRSSBlogs
Back

Latest posts

  • 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

  • Prediction: Mastodon will outlive Bluesky
    Dec 30, 2025

    Disclaimer: I don’t know what I’m talking about. Mastodon and Bluesky are, in my opinion, superior to the centralized status quo. They’re built on important protocols: ActivityPub for Mastodon and the AT Protocol for Bluesky. These decentralized, interoperable networks sidestep some significant security threats and enable tremendous creativity. I like them both. But between the two, I predict that

  • Notes from "Bad Company: Private Equity and the Death of the American Dream"
    Dec 29, 2025

    Bad Company: Private Equity and the Death of the American Dream is a book about private equity in the United States. My main takeaway: private equity is bad. I also learned a few other straightforward lessons: Private equity has one goal: to maximize shareholder value. As you might imagine, this causes lots of problems. Private equity firms may acquire a business with no intention of keeping it ru

  • How I implemented relative imports with Pyodide
    Dec 11, 2025

    I was recently playing with Pyodide, the WebAssembly Python runtime. I wanted to have my main code import a utility file. Something like this: # in main code import util print(util.triple(5)) # in util.py def triple(n): return n * 3 This took me awhile to figure out! I’m not convinced I have the best solution, but here’s what I did: Fetch util.py with fetch. Save it to Pyodide’s virtual fil

  • I made a little audio speed calculator
    Dec 03, 2025

    I was recently listening to an 8-hour-and-51-minute audiobook, and wanted to know how much time I’d save if I listened to it on 1.5× speed. This math is easy enough; divide 8 hours and 51 minutes by 1.5 to get the new duration: 5 hours and 54 minutes. But I also wanted to: See the final duration along with the time I’d save (with some simple subtraction). Compare different speeds. How much more ti