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.
- Just a nod
- Monthly Meanderings: January 2026
- An interesting Tailscale + Docker gotcha
- Surge protectors: marketing vs reality
- 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.
- Get Out
- Final Destination
- The Faculty
- Knock at the Cabin
- The Cabin in the Woods
- Big Night
- The Silence of the Lambs
- Office Space
- The Net
- Black Swan
- Psych 2: Lassie Come Home
- Blow the Man Down
- 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
- Starship Troopers
- Predestination
- Mad Max
- Mad Max 2
- Black Hawk Down
- The Old Guard 2
- The Outpost
- A Few Good Men
- Knives Out
- Okja
- Bottoms
- Interstellar
- The Hurt Locker
- Infinity Pool
- G.I. Jane
- Resident Evil
- Apollo 13
- The Old Guard
- Warfare
- 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...
- Halloween
- Cool Runnings
- Scream 4
- Escape Room
- Mickey 17
- Carrie
- Scream 3
- Fear the Night
- Self Reliance
- The Devil Wears Prada
- Snowpiercer
- Humanist Vampire Seeking Consenting Suicidal Person
- Carrie
- The Hunt
- Hundreds of Beavers
- 10 Things I Hate About You
- Presence
- Men in Black 3
- Battle Royale
- V for Vendetta
- Scream 2
- Jaws
- Zootopia
- Babygirl
- Jennifer's Body
- X
- A Quiet Place
- Flow
- The Beta Test
- Nickel Boys
- Mars Attacks!
- The Shining
- Scream
- Safety Not Guaranteed
- Better Man
- The Parent Trap
- Anora
- Longlegs
- Saturday Night
- Superbad
- Easy A
- Frequently Asked Questions About Time Travel
- Wonka
- Poor Things
- Companion
- The Bling Ring
- The Grand Budapest Hotel
- Warm Bodies
- Ted
- Yes, God, Yes
- Trolls
- They Cloned Tyrone
- The Florida Project
- Goosebumps
- The Theory of Everything
- The NeverEnding Story
- Valerian and the City of a Thousand Planets
- Guns Akimbo
- 28 Days Later
- Mystery Team
- Beverly Hills Cop II
- Men in Black II
- Aliens
- Horrible Bosses
- Hairspray
- Sing Sing
- The Hunger Games: Catching Fire
- Get Away
- It's a Mad, Mad, Mad, Mad World
- The Secret Life of Pets
- Star Trek: Section 31
- How It Ends
- The 2nd
- Dungeons & Dragons: Honor Among Thieves
- Jumanji
- Inside Out 2
- Raya and the Last Dragon
- Be Kind Rewind
- Admission
- The Wolf of Wall Street
- Waitress
- Hackers
- Blue Velvet
- Inside Out
- Jules
- Bad Boys II
- Rapture-Palooza
- The Big Lebowski
- Fight Club
- Parasite
- Pitch Perfect 3
- Beverly Hills Cop
- Emilia Pérez
- Monty Python and the Holy Grail
- La La Land
- Spider-Man: Into the Spider-Verse
- Men in Black
- Space Jam
- American Graffiti
- Pitch Perfect 2
- Whiskey Tango Foxtrot
- Scott Pilgrim vs. the World
- The Martian
- High School Musical
- Waitress: The Musical
- Veronica Mars
- Se7en
- Encanto
- Raiders of the Lost Ark
- The Voices
- The Mitchells vs. the Machines
- White House Down
- 7500
- Coco
- Freaky Friday
- Bad Boys
- Cashback
- The Beekeeper
- Psych: The Movie
- Heathers
- Alice, Darling
- The Adam Project
- Alien
- Legally Blonde
- TRON: Legacy
- A Trip to the Moon
- In the Heights
- The Greatest Showman
- A Clockwork Orange
- Hamilton
- Crazy, Stupid, Love.
- The Hunger Games
- The Princess Bride
- Beauty and the Beast
- Secretary
- Date Night
- Olympus Has Fallen
- Tron
- The Wild Robot
- Pitch Perfect
- Hugo
- The Breakfast Club
- Top Gun: Maverick
- Mean Girls
- Everything Everywhere All at Once
- Mean Girls
- Beetlejuice
- Beetlejuice Beetlejuice
- The Lost World: Jurassic Park
- Ferris Bueller's Day Off
- Zombieland
- Nimona
- Top Gun
- The Order
- The Matrix
- Alita: Battle Angel
- Moon
- Get Smart
- Blade Runner 2049
- Donnie Darko
- Red Notice
- Jurassic Park
- Popstar: Never Stop Never Stopping
- Dune: Part Two
- The Tomorrow War
- Wallace & Gromit: Vengeance Most Fowl
- School of Rock
- Blade Runner
- Barbie
- Weird: The Al Yankovic Story
- The Watch
- Borderlands
- tick, tick... BOOM!
- Airplane!
- Easy A
- Dune
- 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)