Posts
2026 – 10 posts
- Rewriting Claw's HTML parser for over-the-air updates
- Apologies for the RSS mishap!
- JulyReply - Re: Stuck in draft
- My first spam Webmention
- Keeping AI crawlers off my Forgejo server
- Taming my intimidating RSS reader queue
- I guess I cook now
- Setting up forward auth with Caddy and Pocket ID
- Migrating my website's analytics from Plausible to Umami
- Coming around on the utility of LLMs
2025 – 8 posts
- My experience at droidcon India 2025
- Creating private services on NixOS using Tailscale and Caddy
- Migrating from Gitea to Forgejo the long way
- Mildly overengineering my Glance configuration
- Migrating from Simple Analytics to self-hosted Plausible
- Overengineering an Obsidian dashboard to get better at Marvel Snap
- The Obsidian Migration - One Week Later
- Migrating from Logseq to Obsidian
2024 – 5 posts
- Assorted NixOS things
- Deploying applications to Fly.io without Docker
- Assorted Git things
- A tour of my screenshots folder
- Improving dependency sync speeds for your Gradle project
2023 – 1 posts
2022 – 5 posts
- Writing your own Nix Flake checks
- Mastodon on your own domain without hosting a server, Netlify edition
- Writing Paparazzi tests for your Kotlin Multiplatform projects
- Converting Gradle convention plugins to binary plugins
- Backing up your content from Google Photos
2021 – 7 posts
- Migrating APS to Material You
- Building static Rust binaries for Linux
- Learning Zig - Day 4
- Learning Zig - Day 3
- Learning Zig - Day 2
- First steps with Zig
- Tips and Tricks for GitHub Actions
2020 – 23 posts
- Manually parsing JSON with Moshi
- Android Password Store October release
- Android Password Store September release
- Tools of the trade: SDKMAN!
- Android Password Store August release
- Tools of the trade: fd
- Tools of the trade: fzf
- Tools of the trade: direnv
- Android Password Store 1.10.2 patch release
- Android Password Store 1.10.1 patch release
- Why upgrade Android?
- Android Password Store July release
- Making a Bluetooth adapter work on Linux
- Simple tricks for faster Rust programs
- How Cloudflare proxies CNAME records
- Switching my email to Purelymail
- Dagger the easy way - Part 2
- Sunsetting Viscerion
- Creating a continuously deploying static statuspage with GitHub
- Adding social metadata to your Hugo sites
- Dagger the easy way - Part 1
- Integrating comments in Hugo sites with commento
- My Dagger Story
2019 – 11 posts
- Server-side analytics with Goaccess
- #TeachingKotlin Part 3 - Caveats coming from Java
- Deploying Hugo sites with GitHub Actions
- Publishing an Android library to GitHub Packages
- Why I went back to the Gradle Groovy DSL
- #TeachingKotlin Part 2 - Variables
- #TeachingKotlin Part 1 - Classes and Objects and everything in between
- #TeachingKotlin - Kotlin for Android Java developers
- Tools for effective Rust development
- How to get involved in open source
- I'm gonna blog!
