Sitemap
This is a list of more-or-less every page on the site, for quick and easy navigation.
Primary pages
- About
- Colophon
- Contact me
- Feeds
- Films
- My interests
- Posts
- 3D Prints
- Projects
- Sitemap ← you are here
- Snippets
- Things I use
Feeds
Keep up-to-date with things I write by subscribing to one of these feeds in an RSS reader. See the feeds page for more information.
Blog posts
Everything I've written on the site. See the posts page for a nicer overview.
- The meaning of life
- Monthly Meanderings: December 2025
- Exposing game servers over Tailscale
- Securing all the things with 1Password
- Thinking more about backups
- Moving back to a dynamic website
- Avoiding the Consequences of Dumb Laws with Tailscale
- Further Adventures in Music Organisation
- Blogging and the Imaginary Quality Bar
- 10 Weeks with an Apple Watch 10
- Making a font of my handwriting
- Fixing a loud PSU fan without dying
- Escaping Spotify the hard way
- How tech companies failed to build the Star Trek computer
- Finding an awkward bug with Claude Code
- How I use Tailscale
- The Ethics of LLMs
- If all you have is a hammer…
- An app can be a ready meal
- Building a new Computer
- Coming around on LLMs
- Home Automation Without the Megacorps
- The Curse of Knowledge and Blogging
- Building a travel toolkit
- Simple backups with Restic and Hetzner Cloud
- How I Get Things Done
- Further adventures in 3D printing
- A year of boardgames
- HTTP/2 and TLS Server Name Indication
- Project log: Filament weight display
- Adventures in 3D printing
- Upgrading the RAM in a Dell G15 laptop
- Generating infinite avatars
- Docker reverse proxying, redux
- Adventures in IPv6 routing in Docker
- Reproducible Builds and Docker Images
- Artisanal Docker images
- On the utility of user stories
- Reverse engineering an Arctis Pro Wireless Headset
- Apple, Google and aligned incentives
- How to break everything by fuzz testing
- An introduction to containers
- Obfuscating Kotlin code with ProGuard
- Debugging beyond the debugger
- Understanding Docker volume mounts
- Over-the-top optimisations with Nim
- DNS-over-TLS on the EdgeRouter Lite
- A look at the DNS habits of the top 100k websites
- Android testing with Espresso and Spoon
- Shoring up SSHd configuration
- Creating an offline GnuPG master key with Yubikey-stored subkeys
- Why you should be using HTTPS
- Automatic reverse proxying with Docker and nginx
- Monitoring power draw with WeMo Insight Switches
- Reverse engineering the Sense API
Snippets
Small code snippets or how-to guides for things I use. See the main snippets page.
- Android ➔ Enable SQLite logging
- CSS ➔ Dark mode selector
- CSS ➔ Lighten or darken colours
- CSS ➔ Text area resizing
- Docker ➔ Find container that owns a volume
- Docker ➔ Volumes in a rootless container
- Eleventy ➔ Deploy assets in page bundles
- Eleventy ➔ Render templates in shortcodes and filters
- Eleventy ➔ Use ES modules
- Firefox ➔ Register domains as secure contexts
- Firefox ➔ Stop searching for single word domains
- Firefox ➔ Stop using certain local fonts
- Git ➔ Ignore revisions in git-blame
- Git ➔ List creation dates of tags
- Git ➔ Rewrite history after enabling transcrypt
- Git ➔ Stop LFS requiring multiple security key touches
- 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 ➔ Mutex with context
- Go ➔ Read line-by-line
- Go ➔ Reverse part of a slice
- Go ➔ Tests with golden data
- Go ➔ Use nested ServeMux with path stripping
- 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
- Nmap ➔ Ping all hosts in a range
- Nmap ➔ Scan all TCP ports
- Pacman ➔ Overwriting conflicting files
- PDFTK ➔ Splitting pages out of a PDF
- PostgreSQL ➔ Adding a new user and database
- Systemd ➔ Check calendar event formats
- Systemd ➔ Find unit that owns a PID
- 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
- zsh ➔ Split data on newlines
Poems
I occasionally write poems. Note that I didn't say "good poems".
Film reviews
I write short reviews of films I watch. See the /films page for more information.
- Upgrade
- Bill & Ted's Excellent Adventure
- Ender's Game
- Arrival
- Bugonia
- Wicked: For Good
- Fackham Hall
- Honey Don't!
- Sanctuary
- Suitable Flesh
- Mad Max Beyond Thunderdome
- Saw
- Ready or Not
- The Phoenician Scheme
- Glass Onion: A Knives Out Mystery
- Predestination
- Starship Troopers
- Mad Max 2
- Mad Max
- Black Hawk Down
- The Old Guard 2
- The Outpost
- A Few Good Men
- Knives Out
- Bottoms
- Okja
- Interstellar
- The Hurt Locker
- Infinity Pool
- G.I. Jane
- Resident Evil
- Apollo 13
- Warfare
- The Old Guard
- Weapons
- Sinners
- KPop Demon Hunters
- Scream VI
- The House of Tomorrow
- Challengers
- The Artifice Girl
- The Adjustment Bureau
- Cruella
- The Fifth Element
- The Naked Gun: From the Files of Police Squad!
- Juno
- Source Code
- District 9
- Jurassic Park III
- Birdman or (The Unexpected Virtue of Ignorance)
- Gravity
- Scary Movie
- Scream
- The Thing
- Sunshine
- The Craft
- IO
- Clueless
- Inception
- Say Anything...
- Cool Runnings
- Halloween
- Scream 4
- Escape Room
- Mickey 17
- Scream 3
- Carrie
- Self Reliance
- The Devil Wears Prada
- Fear the Night
- Snowpiercer
- The Hunt
- Carrie
- Humanist Vampire Seeking Consenting Suicidal Person
- Hundreds of Beavers
- 10 Things I Hate About You
- Presence
- Men in Black 3
- Battle Royale
- V for Vendetta
- Scream 2
- Jaws
- Zootopia
- Babygirl
- X
- Jennifer's Body
- A Quiet Place
- The Beta Test
- Nickel Boys
- The Shining
- Mars Attacks!
- Scream
- Safety Not Guaranteed
- Better Man
- The Parent Trap
- Anora
- Longlegs
- Easy A
- Saturday Night
- Superbad
- Poor Things
- Wonka
- Frequently Asked Questions About Time Travel
- The Grand Budapest Hotel
- The Bling Ring
- Companion
- Warm Bodies
- Ted
- Trolls
- Yes, God, Yes
- They Cloned Tyrone
- The Florida Project
- Goosebumps
- The Theory of Everything
- The NeverEnding Story
- Valerian and the City of a Thousand Planets
- 28 Days Later
- Mystery Team
- Guns Akimbo
- Beverly Hills Cop II
- Men in Black II
- Horrible Bosses
- Aliens
- Sing Sing
- The Hunger Games: Catching Fire
- Hairspray
- Star Trek: Section 31
- It's a Mad, Mad, Mad, Mad World
- The Secret Life of Pets
- Get Away
- How It Ends
- The 2nd
- Dungeons & Dragons: Honor Among Thieves
- Jumanji
- Inside Out 2
- Raya and the Last Dragon
- Be Kind Rewind
- The Wolf of Wall Street
- Admission
- Waitress
- Hackers
- Bad Boys II
- Blue Velvet
- Jules
- Inside Out
- Parasite
- The Big Lebowski
- Rapture-Palooza
- Fight Club
- Emilia Pérez
- Pitch Perfect 3
- Beverly Hills Cop
- Monty Python and the Holy Grail
- Spider-Man: Into the Spider-Verse
- Men in Black
- La La Land
- American Graffiti
- Pitch Perfect 2
- Whiskey Tango Foxtrot
- Space Jam
- High School Musical
- The Martian
- Scott Pilgrim vs. the World
- Waitress: The Musical
- Se7en
- Encanto
- Veronica Mars
- The Mitchells vs. the Machines
- The Voices
- Raiders of the Lost Ark
- 7500
- Coco
- White House Down
- Bad Boys
- Freaky Friday
- The Beekeeper
- Cashback
- Alice, Darling
- The Adam Project
- Psych: The Movie
- Heathers
- Legally Blonde
- Alien
- A Trip to the Moon
- In the Heights
- The Greatest Showman
- TRON: Legacy
- Hamilton
- Crazy, Stupid, Love.
- A Clockwork Orange
- The Hunger Games
- Beauty and the Beast
- Secretary
- The Princess Bride
- Date Night
- Tron
- The Wild Robot
- Olympus Has Fallen
- The Breakfast Club
- Hugo
- Pitch Perfect
- Everything Everywhere All at Once
- Mean Girls
- Mean Girls
- Top Gun: Maverick
- Beetlejuice
- Beetlejuice Beetlejuice
- The Lost World: Jurassic Park
- Nimona
- Zombieland
- Ferris Bueller's Day Off
- Top Gun
- The Matrix
- The Order
- Alita: Battle Angel
- Moon
- Get Smart
- Blade Runner 2049
- Donnie Darko
- Red Notice
- Jurassic Park
- Wallace & Gromit: Vengeance Most Fowl
- Popstar: Never Stop Never Stopping
- The Tomorrow War
- Dune: Part Two
- School of Rock
- Blade Runner
- Weird: The Al Yankovic Story
- Barbie
- The Watch
- Airplane!
- Borderlands
- tick, tick... BOOM!
- Dune
- Easy A
- Inglourious Basterds
- Wicked
Film lists
Lists of films for various purposes.
- 2025 in 2025
- Annoying scores
- Most disappointing sequels
- Scream ranked
- Watched films ranked
- Watched in the cinema
- What did I just watch? (In a good way)