US cloud act, sovereignty, and why you might need to care
Airbus’s move to European cloud hosting is a reminder that data residency is not the same as digital sovereignty. Where your cloud provider is headquartered, and which laws it answers to, can matter…
Banana Pi R1 Armbian notes
docs linux-sunxi wiki openwrt docs bpi forums other 1 other 2 other 3 Armbian no longer seems to offer BPi R1 images for download, but they’re still compileable using the builder. You can get a…
Shelv - Private Music Player for Your Own Server
I've really been digging Shelv as a way to play music from my home server. Works great on the phone and the desktop, streams right from my Navidrome. Quite nice.
Webmentions + Bridgy
I’m resurrecting an old tag after almost 4 years (!!!) because I wanted to note (to myself mostly) that I’ve added webmentions to my site, as well as proper Bridgy support. I think that means that my…
Meshtastic / Meshcore – Bandpass Filter – Characteristics
Background Filters are a hotly contested topic in the realm of Meshtastic and Meshcore. Often for mesh radios, bandpass filters are the specific type of filters of primary interest. The job of these…
Serving git over HTTP using git-http-backend
My original version of this article was all about the problems I had using git-http-backend to make a git repository available over HTTP with authentication on a Rocky Linux 10 system. Cloning the…
I've Inadvertently Opted Out of Smart Notifications Thanks to GrapheneOS.
I've been running GrapheneOS for a little over a year now and didn't realize much Smart Notifications have changed phone usage. I'm happy I had the chance to opt out of them.
Home Assistant
Getting started with Home Assistant, installing and configuring the Home Assistant Community Store, and then installing an integration for GloBird Energy to track electricity (and later gas) usage.
The Defender's Window
The OpenAI-Hugging Face incident was a watershed moment for cybersecurity because it gave a peek into how the capabilities of a typical threat actor will evolve in upcoming months. I’ve spoken with…
Releasing debvulns-exporter and debvulns CLI 0.2.2
Announcing release debvulns 0.2.2 with enhancements and an updated dashboard
What Is a Shell?
A shell reads commands, starts programs, and connects them together.
AMD Radeon AI PRO R9700 added to FreeBSD Home Server
AMD ROCm, AI inference and compute on FreeBSD via bhyve GPU passthrough, and reducing blower fan noise
Resurrecting a 2017 MacBook Pro With Linux
Years ago, when my old company was decommissioning hardware, I bought the 2017 MacBook Pro from them, the 13" A1708 with function keys instead of the Touch Bar. I bought it because it was really…
Automating phone backups
The problem# Last time, I wrote about figuring out how to access my Android phone's filesystem from the command line. As I said, the actual problem I wanted to solve was to minimize the manual effort…
Renovate: teaching an old dog new tricks
Renovate is a super useful open-source tool that automatically keeps your project’s dependencies up to date (see also STF milestone 1 ). It has broad support for a lot of ecosystems, including Maven…
Bulk-Adding Google Workspace Domain Aliases Without Service-Account Keys
Managing one domain in Google Workspace is straightforward. Managing ten, twenty, or more domains across several brands is where the process starts to hurt. For every domain, an administrator has to p
How I use a BlackOps brain to track my deploys
I asked BlackOps for a brain called Deployment Log, backfilled 34 deploys into it out of the build logs, and it caught a failed build I had never recorded plus a fix I had already made too narrowly.
Porting a Fortran EMP Simulation for Henry Newton
Sometime around 2016, a guy named Henry Newton started showing up to our local meetup in New Orleans. He had a pretty interesting career and some cool stories. The reason he came out, I think other…
NCCL Wire Protocols
How NCCL's wire protocols trade payload bytes against synchronization cost
The Problem About NAT MASQUERADE
While working on multi-homing my ASN network earlier to add Vultr as my secondary upstream, I ran into an issue where my traffic coming out of my Vultr BGP session was seen as coming from…
How to prevent Google Antigravity from accessing .env
How to deny Google Antigravity's agent access to your .env in the IDE and the CLI, how to verify it worked, and the settings around it that matter.
How Fanout Broadcasting Powers Millions of Concurrent WebSocket Connections
How Fanout Broadcasting Powers Millions of Concurrent WebSocket Connections I’ve been working on a chat platform that handles millions of concurrent public chat participants. Early on, I faced…
Your terminal has been editing everything you type
Note: the terminal output in this post is from macOS. Everything here works the same on Linux, but stty -a prints its report in a slightly different layout, and some default flags differ at the…
Week 33, 2026 - Traces as Documentation, the Observability Land Grab and Search I Host Myself
Agents read traces where humans read dashboards. Dynatrace bought Arize for $915M, Nini says my posts are too generic and I moved to a self-hosted SearXNG.
Syncing Gmail with mbsync using OAuth2
I wholeheartedly dislike GMail (ethically, technically, and UX), and for my personal email I have always run my own server. But for work email I don’t have a choice. I am using isync/mbsync to…
The One Letter That Broke My Nextcloud Container
Debugging a Nextcloud deployment on Podman Quadlets that kept breaking every thirty seconds, from a Cloudflare 502, to an Apache 403, to the real culprit: one uppercase letter in a shared SELinux…
My own music streaming
There’s a growing trend of de-Googling, de-Appling, and other de-words these days. That includes de-Spotifying — because of the CEO’s actions, low payouts to artists, and AI taking over…
Applications and a status page
The server’s whitelist has a real front door now: a form that asks the questions worth asking and emails me a link to approve or turn down. There’s also a status page showing which of my…
Add Cloudflare Turnstile to Astro Forms and Workers
How I added Cloudflare Turnstile to an Astro newsletter form and verified tokens in a Worker: keys, CI, deploy order, and DevTools noise.
Running Ollama on iGPU on Linux
How I got 3x inference speed on a five-year-old Intel NUC iGPU
How I Migrated From Authentik to Pocket ID With TinyAuth on NixOS
A while back I wrote about how I set up Authentik forward auth with Traefik on NixOS. It worked, but over time Authentik got a bit heavy for what I actually needed from it, i.e. one identity provider…
FreeBSD Home Server - Part 1: OS Install
FreeBSD Home Server - Part 1: OS Install
Bubblewrap is all you need
You don't need a new sandbox product to keep AI agents out of your secrets. Bubblewrap is a decade old and already does this.
Making stinkarm stink way less, or more?
removing overengineered memory translation, hardening and new table driven armv7 instr decoding
elpacman -- a command-line package manager for Emacs
My home lab machines are running a mix of GNU/Linux, FreeBSD, and macOS and over the years I have accumulated a decent amount of shell scripts and tools, which eventually got refined as my personal…
Paperless cloud backups
I store all of my important (and many not so important) documents in my Paperless-ngx instance running on my homelab. Given this importance, I wanted to add an additional backup of my documents and…
Authenticating to AWS by using a Google Cloud agent identity and AssumeRoleWithWebIdentity
A long time ago, I wrote about how service accounts can authenticate to AWS by using AssumeRoleWithWebIdentity. To allow such federated authentication, we create an AWS role for Open ID Connect…
Data Centers – analysis by Mark J. Welch (Aug 2026)
Enron. That’s the most important keyword when evaluating AI data centers. https://en.wikipedia.org/wiki/Enron_scandal How many of the mega-datacenters are owned, operated, controlled and contracted…
Getting Splunk onto a NixOS Linode
I really like Splunk1, especially for personal projects where usage can fit comfortably into the free tier. I also really like NixOS, and have recently embarked on getting my web stuff onto NixOS.…
I reverse-engineered my HVAC because I couldn’t turn it off reliably
A couple of months ago, I had my HVAC controller replaced in an effort to save on electricity. I controlled the previous board with an IR blaster that I loaded with a full matrix of {mode,fan_speed,…
Agentic Playwright testing with Nix
I don’t do much front-end web development these days, but I enable people who do. I use a lot of coding agents for my daily work with back-end APIs and service meshes. I’ve known for a…
The New Bottlenecks After Coding
They're not really new, we just never really got to them - we just assumed they were there as a force of nature. Let's list them out (I'm sure there are more than this…
Tailscale login is retarded
I was recently forced to sign up for something called Tailscale in order to access a client’s server. I’d never heard of this shit before and was already grumpy they wouldn’t just…
You've reached the end.