Hello, World

Here is where I write going forward. My little place of what is supposed to be a decentralized web. Little experiments in computer science, debugging, code, infrastructure. Whatever I feel like. If it ever evolves into something good. I’ll write my name on it. For now, it’s just ineptitude. ...

November 28, 2025 · 2 min

Quick Pods

Sometimes you just need a quick pod of a given Linux flavour to test a quick scenario: kubectl run debian-container -n default --rm -it --image=debian:stable -- bash kubectl run circle-container -n default --rm -it --image=cimg/base:2026.01 -- bash kubectl run go-container -n default --rm -it --image=cimg/go:1.25.5 -- bash kubectl run ubuntu-container -n default --rm -it --image=ubuntu:26.04 -- bash Also, the CLI to get just load balancers is annoying: ...

January 10, 2026 · 1 min

macOS: Flush the DNS cache

This is common knowledge… but I don’t need to do it enough to have it memorized… and I’m tired of looking it up! So I’m writing it down here: sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder There! Now it’s written down on the web in one more place… 🙄

December 10, 2025 · 1 min

Condition Evaluation Utility

After you run a command in UNIX shell (bourne, bash, etc), $? has the exit code (return value) of the prior run command: $? Expands to the exit status of the most recent pipeline. Shell scripting is a bit weird in that the return value of a program is evaluated as true if it’s 0 and false if it’s non-zero. This is useful as by convention unix commands return 0 on success or any other integer code to map to specific error conditions. ...

December 6, 2025 · 5 min

Upgrading FreeBSD Bastille Jails

Upgrading BastilleBSD jails… Mostly uneventful… I did need a rescue from pkg-static before pkg update/upgrade would work. root@bastille-host:/ # bastille list JID Name Boot Prio State Type IP Address Published Ports Release Tags 1 random-jail on 99 Up thin 192.168.27.10 - 14.3-RELEASE-p6 - root@bastille-host:/ # bastille stop random-jail [random-jail]: random-jail: removed root@bastille-host:/ # vi /usr/local/bastille/jails/random-jail/fstab root@bastille-host:/usr/local/bastille/jails/random-jail # bastille start random-jail [random-jail]: random-jail: created root@bastille-host:/usr/local/bastille/jails/random-jail # root@bastille-host:/ # bastille list JID Name Boot Prio State Type IP Address Published Ports Release Tags 1 random-jail on 99 Up thin 192.168.27.10 - 15.0-RELEASE - root@bastille-host:/ # bastille console random-jail [random-jail]: root@random-jail:~ # pkg update ld-elf.so.1: Shared object "libutil.so.9" not found, required by "pkg" root@random-jail:~ # pkg-static bootstrap pkg-static: Warning: Major OS version upgrade detected. Running "pkg bootstrap -f" recommended pkg(8) already installed, use -f to force. root@random-jail:~ # pkg-static bootstrap -f pkg-static: Warning: Major OS version upgrade detected. Running "pkg bootstrap -f" recommended pkg(8) is already installed. Forcing reinstallation through pkg(7). The package management tool is not yet installed on your system. Do you want to fetch and install it now? [y/N]: y Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/FreeBSD:15:amd64/quarterly, please wait... Verifying signature with trusted certificate pkg.freebsd.org.2013102301... done [random-jail] Installing pkg-2.4.2... package pkg is already installed, forced install [random-jail] Extracting pkg-2.4.2: 100% Then out with the old base: ...

December 5, 2025 · 2 min

1Password ssh agent config...

If you’re doing SSH keys right… they tend to accumulate… Keys unique to various environments or even specific hosts Rotation (new keys generated, old keys deprecated and phased out) They just pile-up and quickly! This leads to eventual sadness: sign_and_send_pubkey: signing failed for ED25519 "key-abc" from agent: agent refused operation Received disconnect from 10.x.x.1 port 22:2: Too many authentication failures I’ve mentioned this problem to ChatGPT from time to time and it has historically hallucinated promising but ultimately disapointingly nonsense “solutions.” ...

December 3, 2025 · 2 min

FreeBSD 15.0-RELEASE

Upgraded my FreeBSD system to 15.0-RELEASE Watch out for that second run of freebsd-update that removes the prior libs… Seems that broke sudo as the pkg didn’t get upgraded (yet). FreeBSD 15.0-RELEASE (GENERIC) releng/15.0-n280995-7aedc8de6446 % uptime 8:42PM up 54 mins, 4 users, load averages: 0.65, 0.96, 1.33 % sudo bastille list ld-elf.so.1: Shared object "libutil.so.9" not found, required by "sudo" % Deleting and re-installing pulled in the compatibility packages and got things sorted: ...

December 1, 2025 · 2 min

Automation, I dig it!

…and just like that, we’re live with automated publishing. I commit to git and a CICD pipeline authenticates over OIDC and deploys to an S3 bucket that serves as an origin for CloudFront. The domain is hosted on Route53 using DNS records created and maintained by Terraform. I push… content gets published. What more can you want? I think this is going to work out just fine, indeed!

November 29, 2025 · 1 min

Assemble an MS-DOS .COM binary with DEBUG.EXE

The 8-Bit Guy has a video where he demonstrates the assembler built right into the monitor ROM on a C64. This fascinated me and made me wonder… If I was stuck on an old MS-DOS machine and wanted to assemble a binary… Could I do it? Byte by byte? With what tool? Those of us stuck with “IBM compatible” PCs didn’t have no fancy monitor ROMs. Turns out MS-DOS’ DEBUG.EXE is and was entirely up for the job. ...

November 11, 2025 · 1 min

ARM code for IPv4 Subnetting

ARM ASM code to find the network of an IP ...

December 30, 2024 · 1 min