Mastodon

Articles


Running Your Own AS: An IXP over VXLAN, IPv4 on the Overlay, and a Config Spring Clean

Part 5 of the AS201379 journey: joining EVIX, an internet exchange that hands out VXLAN tunnels instead of switch ports, carrying a routed IPv4 /29 across the IPv6 overlay with PF policy routing, the dual-FIB routing that makes a VPS work as both a normal host and a routed AS site, moving the downstream MikroTik onto WireGuard, and a long-overdue cleanup of four routers’ worth of accumulated configuration.

Building My Own TV Station: ErsatzTV in a FreeBSD Jail, With Intel Hardware Transcoding

Being ill for a week taught me that a large Jellyfin library is not entertainment, it is homework. ErsatzTV turns a media library back into linear television with real channels and schedules, but it only ships for Linux, Windows, and macOS. It is a .NET application driving ffmpeg, so I built it in a FreeBSD Bastille jail instead. One missing conditional was all that stood between FreeBSD and Intel VAAPI hardware acceleration.

Android Development on Fedora 44 Without Installing an Android Development Stack

I wanted to build a native Android companion for Kollect without filling Fedora 44 with a JDK, Gradle, Android SDKs, build tools, emulator images, and assorted mobile-development debris. My complete Android toolchain now lives in an Ubuntu 24.04 Distrobox instead. It builds the APK, talks to my phone over wireless ADB, runs the Android emulator, and even lets Kollect enrich links for free with Gemini Nano through Android AICore.


Kollect: The Native KDE Link Collector I Built for Myself

Kollect is a small native Plasma 6 application I wrote to get interesting links out of browser tabs and into a durable collection. It uses Kirigami and C++ on the desktop, plain TOML files by default, optional multi-user server storage, OpenRouter-powered metadata, KWallet for secrets, and a proper Fedora RPM. The source is not public, but the design is worth documenting.


chana_masala.sh: A Recipe as a Shell Script

Some years ago a chana masala arrived in a HelloFresh box and never left the household again. It has since been refactored, hardened, and put under version control. Here is the current release: a chickpea curry for hungry IT people, documented the only way I know how - as a bash script with a proper runbook attached.

A Caching FreeBSD Mirror for DN42: nginx proxy_store, pf, and a Dual-Homed VM

Patching FreeBSD machines inside the DN42 overlay network without giving them clearnet access - a dual-homed VM that lazily caches pkg.freebsd.org, update.freebsd.org, and release tarballs from ftp.freebsd.org with nginx proxy_store, follows CDN redirects server-side, and serves everything over IPv6 into the mesh. Now also available as a public DN42 service at bsdmirror.chofstede.dn42.

Upgrading FreeBSD 15.0-RELEASE to 15.1-RELEASE: The Official Paths

FreeBSD 15.1-RELEASE is here, and the official upgrade instructions depend on whether your system uses distribution sets or packaged base. This guide walks through both supported paths, covers the boot-loader update, and explains the configuration merging process - all based on the official 15.1 upgrading documentation.

FreeBSD Foundationals: The Boot Process - From the Loader to Boot Environments

The third in the FreeBSD Foundationals series. This one covers how FreeBSD actually boots: the stages from power-on to login, BIOS vs UEFI, the loader and loader.conf, the difference between read-only tunables and runtime sysctls, the modern way to load kernel modules with kld_list, managing it all safely with sysrc, a practical security-hardening baseline, and - the headline act - boot environments with bectl, the undo button that turns a broken upgrade into a thirty-second reboot.