Site map
Primary pages
- About
- Posts
- Projects
- 3D Prints
- Snippets
- Things I Use
- Misc
- Sitemap ← you are here
- RSS Feed (posts)
Posts
- Reverse engineering the Sense API
- Monitoring power draw with WeMo Insight Switches
- Automatic reverse proxying with Docker and nginx
- Why you should be using HTTPS
- Creating an offline GnuPG master key with Yubikey-stored subkeys
- Shoring up SSHd configuration
- Android testing with Espresso and Spoon
- A look at the DNS habits of the top 100k websites
- DNS-over-TLS on the EdgeRouter Lite
- Over-the-top optimisations with Nim
- Understanding Docker volume mounts
- Debugging beyond the debugger
- Obfuscating Kotlin code with ProGuard
- An introduction to containers
- How to break everything by fuzz testing
- Apple, Google and aligned incentives
- Reverse engineering an Arctis Pro Wireless Headset
- On the utility of user stories
- Artisanal Docker images
- Reproducible Builds and Docker Images
- Adventures in IPv6 routing in Docker
- Docker reverse proxying, redux
- Generating infinite avatars
- Upgrading the RAM in a Dell G15 laptop
- Adventures in 3D printing
- Project log: Filament weight display
- HTTP/2 and TLS Server Name Indication
- A year of boardgames
- Further adventures in 3D printing
- How I Get Things Done
- Simple backups with Restic and Hetzner Cloud
- Building a travel toolkit
Poems
Snippets
- Android: Enable SQLite logging
- CSS: Dark mode selector
- CSS: Text area resizing
- Docker: Volumes in a rootless container
- Eleventy: Deploy assets in page bundles
- Eleventy: Render templates in shortcodes and filters
- Eleventy: Use ES modules
- Firefox: Stop searching for single word domains
- Firefox: Stop using certain local fonts
- Git: Ignore revisions in git-blame
- Git: Tidy up merged branches
- Go: Alternative YAML representations
- Go: Check if a string is an integer
- Go: Download a file
- Go: Extracting a Zip file
- Go: Generate a random string
- Go: Gracefully stopping HTTP server
- Go: Handling interrupts
- Go: Listing Files in a directory
- Go: Listing files recursively
- Go: Modify path of a URL
- Go: Read line-by-line
- Go: Reverse Part of a slice
- Go: Tests with golden data
- GTK: Unicode input
- HTML: Provide dark and light mode versions of images
- HTTP: Redirect types
- IDEA: Changing SQL scope
- Java: Class file versions
- JavaScript: Array intersection
- JavaScript: Load JSON
- JavaScript: Remove all child elements
- JavaScript: Run code when document is loaded
- Jetpack Compose: Mix Composables and Views
- Jetpack Compose: Override composition locals
- Nginx: Allow CORS requests from certain origins
- Nginx: Log only partial IP addresses
- Nginx: Redirect to canonical domain
- Nginx: Serve WebP images
- Pacman: Overwriting conflicting files
- PDFTK: Splitting pages out of a PDF
- PostgreSQL: Adding a new user and database
- Systemd: Check calendar event formats
- Systemd: Listing available targets
- Systemd: Passing env vars to a service
- Systemd: Running a service on a cron-like timer
- Thunderbird: Remove signature delimiter
- TLS: Alert codes
- X: Get symbolic names for keycodes
- XXD: Convert hex to binary