My very own place to post.
Subscribe to receive updates via email or web feed.
Posts
2024
- 2024 1031 Play Hades and read the Iliad
- 2024 1002 Founders, experts, and bravery debates
- 2024 0922 The old fashioned is a platform
- 2024 0920 Uncensorable pictograms
- 2024 0907 Thou shalt not suffer a bashism to live
- 2024 0906 CSS Timeline
- 2024 0901 New TIL section and multiple web feeds
- 2024 0830 Atlas
- 2024 0823 Generating SVG pie charts in Hugo
- 2024 0812 Action without thinking
- 2024 0724 SVG triangle of compromise (resolved)
- 2024 0719 Concerns about passkeys
- 2024 0717 psyopsOS: a DIY infrastructure example
- 2024 0615 That Pleasurable Buzz of Feeling Slightly Unsettled
- 2024 0611 LDAP migrations
- 2024 0607 Technical solutions to social problems
- 2024 0605 Use the 1Password SSH agent conditionally
- 2024 0322 Linux keyboard LED control
- 2024 0321 RSS for Hannah
- 2024 0317 (Type) Checking the LLM Some environments are better suited for Copilot than others
- 2024 0229 The iPad and computing
- 2024 0214 Shell startup precomputation
- 2024 0213 Custom APK Repositories
- 2024 0208 Local symlinks as HTTP redirects in S3
- 2024 0117 Web Archiving
- 2024 0116 I was featured in Paged Out!
- 2024 0108 Multilinks
- 2024 0101 Copyright is for the Public
2023
- 2023 1216 Process substitution in Python
- 2023 1120 Improving argparse documentation generation
- 2023 1119 Just let me write code, dammit!
- 2023 1118 Batch Cocktails
- 2023 1012 ZSA Voyager
- 2023 1011 Progfiguration is programmatic
- 2023 0919 "I can't write this"
- 2023 0911 List CSS variables in JavaScript
- 2023 0908 Hugo development snippets
- 2023 0907 Python zip applications and static includes
- 2023 0813 Progfiguration public release
- 2023 0811 Public comment period open
- 2023 0806 The Aeropress and grinders
- 2023 0725 Python pdoc: recursively generating argparse help
- 2023 0617 Home clusters
- 2023 0616 Command line -like interfaces for mobile apps
- 2023 0615 The command line is cheap
- 2023 0601 git back A useful custom git subcommand
- 2023 0510 Convert SSH ed25519 key to Onion Service key
- 2023 0422 magicrun(): Run a command, print stdout/stderr in real time, and save it for later
2022
- 2022 1023 A shrine to privacy
- 2022 1007 Fun with iframes
- 2022 0713 Archiving Tweets to HTML
- 2022 0522 Running Wiki.js on Fly.io with Litestream backups
- 2022 0409 Dark Mode
- 2022 0406 New project pages
- 2022 0405 Cistercian numerals are good for dates
- 2022 0404 Business card
- 2022 0403 Site design updates
2021
- 2021 1101 A failed experiment: Python Pillow and a Cistercian font
- 2021 1026 hugo-theme-cistercian
- 2021 1012 Interpersonal: A connection to the IndieWeb
- 2021 0907 Through the Looking Glass
- 2021 0810 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.
- 2021 0720 I do Pilates in bed
- 2021 0701 set -eu is the lesser of two evils, if you have to write shell at all
- 2021 0629 Formulæ Technicæ
- 2021 0628 Hugo: Injecting an external file into a page with syntax highlighting
- 2021 0626 Hugo Redirects and Partial Functions
- 2021 0624 How I write shell scripts
- 2021 0310 RSS styles
- 2021 0308 Inline FontAwesome SVGs in Hugo
- 2021 0301 Hardened 1Password emergency kit
- 2021 0225 Let's Encrypt DNS challenges for appliances behind a firewall
- 2021 0223 Secret control panels
- 2021 0121 Biblemunger 2.0
- 2021 0114 Fortunate
- 2021 0113 Interviewed by ZSA, the makers of the ErgoDox-EZ
- 2021 0111 Count like a Cistercian
2020
- 2020 1028 keymap.click 1.0
- 2020 0811 keymap.click development preview
- 2020 0721 deskmx: Never unplug your headphones again
- 2020 0628 An Ansible filter is a pure function
- 2020 0529 sparkles emoji dot ico
- 2020 0520 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.
- 2020 0118 Hack: saving QMK firmware source to the keyboard
2018
2017
- 2017 0719 Python, argparse, and custom actions and types
- 2017 0426 CherryPy: Override the base URL behind a reverse proxy
- 2017 0426 LockableSqliteConnection
- 2017 0425 CherryPy: Cookies with HTTP basic authentication
- 2017 0425 Python bullshit I'm proud of
- 2017 0405 Announcing Caryatid
2012
- 2012 1205 Creating a Linux livecd
- 2012 0517 Deploying SSL certificates
- 2012 0517 Mozilla, SSL, and NSS