F
Feed Atlas
OPML directory + server-side RSS reader

evanhahn.com

SiteRSSBlogs
Back

Latest posts

  • In defense of GitHub's poor uptime
    Apr 10, 2026

    In short: GitHub’s downtime is bad, but uptime numbers can be misleading. It’s not as bad as it looks; more like a D than an F. “Zero nines uptime”? 99.99% uptime, or “four nines”, is a common industry standard. Four nines of uptime is equivalent to 1.008 minutes of downtime per week. GitHub is not meeting that, and it’s frustrating. Even though they’re owned by Microsoft’s, one of the richest com

  • Notes from March 2026
    Mar 31, 2026

    March always seems to be my life’s busiest month. Things I wrote and made “The two kinds of error”: in my mind, software errors are divided into two categories: expected and unexpected errors. I finally wrote up this idea I’ve had for a long time. “All tests pass” is a short story about a strange, and sorta sad, experience I had with a coding agent. Inspired by others, I published a disclaimer abo

  • All tests pass: a short story
    Mar 22, 2026

    One night, I wrote a simple tool to pick a random programming language. After shuffling a few times, I landed on Arturo. I decided to try it for fun. What’s Arturo? Best I understand, Arturo is a stack-based programming language. It’s primarily maintained by Yanis Zafirópulos. They published a vision of the language in 2020. Here’s the stated goal from that post: to make something that I myself wi

  • Little web app to pick a random programming language
    Mar 22, 2026

    I wrote a web app to choose a random programming language. It’s very simple; I hestitate to even call it an “app”! The interesting part was scraping all the languages on Rosetta Code, and even that wasn’t very interesting. But I hope you like it! I learned about a language called Arturo this way, and wrote a short story about that experience.

  • human.json
    Mar 14, 2026

    To quote the human.json Protocol: human.json is a protocol for humans to assert authorship of their site content and vouch for the humanity of others. It uses URL ownership as identity, and trust propagates through a crawlable web of vouches between sites. I think this is a neat idea, so I added it to my site. It’s available at evanhahn.com/human.json. For more, see the human.json documentation. A

  • How I use generative AI on this blog
    Mar 12, 2026

    Inspired by others, I’m publishing how I use generative AI to write this little blog. General feelings on generative AI Generative AI, like any technology, has tradeoffs. I think the cons far outweigh the pros. In other words, the world would be better off without generative AI. Despite this belief, I use it. I’m effectively forced at work, but I also use LLMs to help write this personal blog. I t

  • Introducing llm-eliza
    Mar 08, 2026

    LLM is a popular CLI tool for talking with language models. I built llm-eliza, a plugin to chat with the ELIZA language model. Usage: llm install llm-eliza llm -m eliza "I'm worried about computers." # => What do you think machines have to do with your problem? ELIZA, released in 1966, is a state-of-the-art language model. It offers zero-GPU inference with sub-millisecond semantic throughput, an

  • 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