Posts are available in full in this site’s web feed. (Learn more about web feeds.)
Posts
-
Linux keyboard LED control
-
RSS for Hannah
-
(Type) Checking the LLM Some environments are better suited for Copilot than others
-
The iPad and computing
-
Shell startup precomputation
-
Custom APK Repositories
-
Local symlinks as HTTP redirects in S3
-
Web Archiving
-
I was featured in Paged Out!
-
Multilinks
-
Copyright is for the Public
-
Process substitution in Python
-
Improving argparse documentation generation
-
Just let me write code, dammit!
-
Batch Cocktails
-
ZSA Voyager
-
Progfiguration is programmatic
-
"I can't write this"
-
List CSS variables in JavaScript
-
Hugo development snippets
-
Python zip applications and static includes
-
Progfiguration public release
-
Public comment period open
-
The Aeropress and grinders
-
Python pdoc: recursively generating argparse help
-
Home clusters
-
Command line -like interfaces for mobile apps
-
The command line is cheap
-
git back A useful custom git subcommand
-
Convert SSH ed25519 key to Onion Service key
-
magicrun(): Run a command, print stdout/stderr in real time, and save it for later
-
A shrine to privacy
-
Fun with iframes
-
Archiving Tweets to HTML
-
Running Wiki.js on Fly.io with Litestream backups
-
Dark Mode
-
New project pages
-
Cistercian numerals are good for dates
-
Site design updates
-
A failed experiment: Python Pillow and a Cistercian font
-
hugo-theme-cistercian
-
Interpersonal: A connection to the IndieWeb
-
Through the Looking Glass
-
Slippery Slopes and Bright Lines Device-side CSAM scanning is a retreat to a strategically weaker position for end-user privacy contra nonconsensual search by law enforcement.
-
I do Pilates in bed
-
set -eu is the lesser of two evils, if you have to write shell at all
-
Formulae Technica
-
Hugo: Injecting an external file into a page with syntax highlighting
-
Hugo Redirects and Partial Functions
-
How I write shell scripts
-
RSS styles
-
Inline FontAwesome SVGs in Hugo
-
Hardened 1Password emergency kit
-
Let's Encrypt DNS challenges for appliances behind a firewall
-
Secret control panels
-
Biblemunger 2.0
-
Fortunate
-
Interviewed by ZSA, the makers of the ErgoDox-EZ
-
Count like a Cistercian
-
keymap.click 1.0
-
keymap.click development preview
-
deskmx: Never unplug your headphones again
-
An Ansible filter is a pure function
-
sparkles emoji dot ico
-
A random failure: Problems upgrading Ansible and Python The story of a data loss bug I caused at work, how I fixed it, and some surprising behavior in Python and Ansible.
-
Hack: saving QMK firmware source to the keyboard
-
Windows, IKEv2, and error 13801
-
Python, argparse, and custom actions and types
-
CherryPy: Override the base URL behind a reverse proxy
-
LockableSqliteConnection
-
Python bullshit I'm proud of
-
CherryPy: Cookies with HTTP basic authentication
-
Announcing Caryatid
-
Creating a Linux livecd
-
Mozilla, SSL, and NSS
-
Deploying SSL certificates
-
Windows, symlinks, and pain
-
DEFCON19 lanyard and PDP-8 assembly, part 2
-
DEFCON19 lanyard and PDP-8 assembly, part 1
-
DEFCON19 - In my day, you just walked into a bank with a gun and got money