There is a very specific, almost poetic flavor of digital closure that occurs when you go to block someone on social media, only to discover they already beat you to the punch. Enter bsky-mutual-blocks: a lightweight browser client designed to check your Bluesky graph, cross-reference block lists, and reveal when the antipathy across the timeline is 100% reciprocal.
Notes about my second app for self-hosting my own personal music server.
Yesterday, I published the last planned release of File Browser. It includes a few security fixes and a notice about the wind-down of the project. Alongside it, I announced that this was the last planned release and updated the repository so that it's ready to be archived on September 1st. For many people this came as a surprise. For those who've been following the project from close by, probably not. Either way, I wanted to write a bit about the decision and how we got to this point.
Rebuilding a classic flash game in Unity. Originally published 16 June 2026 on grahamewatt.com
Dangerously tempting distractions, some of which I may have already started...
A reflection on my first published, fully vibe-coded application.
I want to translate Beowulf as Tolkien would have wanted it.
My SaaS hosting cost comparison for Hetzner, Vercel, and Render: real numbers from running production apps on Hetzner VPS servers with Kamal and PostgreSQL.
I use coding agents — Claude Code, Codex, Cursor — for most of my development. They're good at reading and writing code. They're not good at seeing
trying to be more productive in the next year
Side projects and contributions
Last year, I wrote a bit on maintaining open source projects. At the time, I was struggling with one of my most (unexpectedly) successful side projects, File Browser. Today, I want to give an update on it, since I never wrote again about it. I'm hoping that this post helps explaining the current status of the project.
I work on my websites with a coding agent running in tmux. The usual flow: look at the site in the browser, switch to the terminal, describe what I
shotpath is my Swift CLI for copying new macOS screenshot paths automatically, so I can paste screenshots into Claude Code, Droid, or Codex.
I built MyOG.social, a tool that automatically generates OG images for your pages. OG images are the preview images that show up when you share a link
I've been working on [lan.events](https://beta.lan.events), a platform for organizing and discovering LAN parties and gaming events. I started going to LAN parties as a kid, took a long break as a young adult, then got back into it in 2025 thanks to my friend Ben. We hit DreamHack together, which led me to PDXLAN in the fall.
Transitioning from private to public writing, sharing progress on the Calgary Groups project and plans for the brennan.day website setup.
Over two years ago, I wrote an article where I laid out a few issues with Bosch's eBike Flow app. The first one being that their Apple Health integration is lacking, and does not synchronize information about power and cadence. The second was that their exported FIT files are malformed and cannot be properly imported anywhere. Sadly, it's still the case.
Or: Why I feel like an idiot while coding
I'm building my own personal assistant to help me with my daily tasks.
Last month was Maintainer Month, a month were open source software maintainers are celebrated. A lot of the software in the world - and thus society itself - runs on open source software, which is something not known to a lot of people. During this past month, I read a few posts here and there about people sharing their journey and experience as an open source maintainer, and today I wanted to give my take on it.
Since I started this blog project I've been using a Markdown based WYSIWYG editor. I necessarily had to pick a new framework when I migrated to Vue.
My 2025 roadmap is pretty simple: - [x] Site branding - [x] JSON feed endpoint > I originally intended to publish an Atom Feed but ended up going with JSON Feed since most modern services support it.
It's not over yet, but this goes beyond the depths of my wallet.
My thoughts around how caring, iterating and not striving for perfection leads to great results.
Featuring: Zeitgeist and the job market, dieting, Koyomi, Project ST, and Japan.
November updates are out. This is the conclusion of the major features I intended to develop initially for this blog. Below is a summary of new features and fixes.
As promised in one of my earlier posts I have continued to hack on this website. The early days of this project were pretty rudimentary at best as my git history will happily attest to.
I wrote a file manager so that I could upload photos and it turned out a lot better than I expected. I ended up with this feature list: - Public files - Private files - Automated, time-based...
Before I was a professional programmer programming was much more of a labor of love. I built tools for IRC, mostly scripts and bots for channel management or novelty like slapping someone with...
Hi, I started a side project recently. It's currently an MVP. It’s a monitoring tool for websites and web services. You give it a list of URLs and
Thoughts on the misadventure of udm14, or what I hope to gain from successfully reviving the single-serving site for a couple of weeks.
Alternative title: my skill issues with soldering.
People do fentanyl because they can't get their hands on whatever drug Sony engineers were using.
The triumphs and struggles of self-hosting my own personal music server.
TL;DR: I'm broke, it'll slow things down.
The unexpected moment when an open-source side-project was trending in GitHub in 2017.
It's not actually mandatory but uhh y'know I kinda felt like writing one.
I can't possibly name a project something that isn't an anime girl's name.
Our anniversary party was comprised of solid friends and Lisa Frank Jesus among other things.