All blogs / DevOps / SRE / infrastructure
Chameth.com
Personal homepage of Chris Smith
DevOps / SRE / infrastructureNetworkingSecurityMobile / iOS / AndroidGeneral
- Posts
- 84 from 18 Oct 2016 to 24 Oct 2026
- Posting
- weekly (39 in the last year)
- Kind
- personal blog
- Feed
- https://chameth.com/index.xml
2026 36
- Films
- /interests
- Monthly Meanderings: September 2026
- Apr 10, 2016 Reverse engineering the Sense API Sense is a little device that sits by your bedside and, in conjunction with a little ‘pill’ attached to your pillow, monitors your sleeping patterns and any environmental conditions that might hamper them. Android and iOS apps show you your sleep histor
- Feeds
- /posts
- /projects
- /snippets
- /sitemap
- The expanding scope of coding agents
- May 2, 2016 Monitoring power draw with WeMo Insight Switches I recently picked up a couple of Belkin’s WeMo Insight Switches to monitor power usage for my PC and networking equipment. WeMo is Belkin’s home automation brand, and the switches allow you to toggle power on and off with an app, and monit
- Lego, ACME DNS-01, and negatively-cached surprises
- May 21, 2016 Automatic reverse proxying with Docker and nginx Over the past few weeks I’ve gradually been migrating services from running in LXC containers to Docker containers. It takes a while to get into the right mindset for Docker - thinking of containers as basically immutable - especially whe
- Uses
- Monthly Meanderings: August 2026
- Jun 17, 2016 Why you should be using HTTPS One of my favourite hobbyhorses recently has been the use of HTTPS, or lack thereof. HTTPS is the thing that makes the little padlock appear in your browser, and has existed for over 20 years. In the past, that little padlock was the exclusive preserve of b
- Building a family of single-user services
- Aug 11, 2016 Creating an offline GnuPG master key with Yubikey-stored subkeys I recently noticed that I’d accidentally lost my previous GPG private key — whoops. It was on a drive that I’d since formatted and used for a fair amount of time, so there’s no hope of getting it back (but, on the plus sid
- Oct 18, 2016 Shoring up SSHd configuration I recently came across a useful tool on GitHub called ssh-audit. It’s a small Python script that connects to an SSH server, gathers a bunch of information, and then highlights any problems it has detected. The problems it reports range from potentially weak
- May 16, 2017 Android testing with Espresso and Spoon I’ve been spending some time recently setting up automated testing for our collection of Android apps and libraries at work. We have a mixture of unit tests, integration tests, and UI tests for most projects, and getting them all to run reliably a
- Aug 16, 2017 A look at the DNS habits of the top 100k websites I was thinking about switching DNS providers recently, and found myself whoising random domains and looking at their nameservers. One thing lead to another and I ended up doing a survey of the nameservers of the top 100,000 sites accordi
- Dec 17, 2017 DNS-over-TLS on the EdgeRouter Lite DNS-over-TLS is a fairly recent specification described in RFC7858, which enables DNS clients to communicate with servers over a TLS (encrypted) connection instead of requests and responses being sent in plain text. I won’t ramble on about why it’s a
- Dec 9, 2018 Over-the-top optimisations with Nim For the past few years I’ve been taking part in Eric Wastl’s Advent of Code, a coding challenge that provides a 2-part problem each day from the 1st of December through to Christmas Day. The puzzles are always interesting — especially as they get progr
- Apr 1, 2019 Understanding Docker volume mounts One thing that always confuses me with Docker is how exactly mounting volumes behaves. At a basic level it’s fairly straight forward: you declare a volume in a Dockerfile, and then either explicitly mount something there or docker automatically creates
- /colophon
- May 8, 2019 Debugging beyond the debugger Most programming — and sysadmin — problems can be debugged in a fairly straight forward manner using logs, print statements, educated guesses, or an actual debugger. Sometimes, though, the problem is more elusive. There’s a wider box of tricks that can be em
- Oct 21, 2019 Obfuscating Kotlin code with ProGuard Obfuscating code is the process of modifying source code or build output in order to make it harder for humans to understand. It’s often employed as a tactic to deter reverse engineering of commercial applications or libraries when you have no choic
- Mar 1, 2020 An introduction to containers I’m a huge fan of (software) containers. Most people I know fall in to one of two camps: either they also use, and are fans of, containers, or they haven’t yet really figured them out and view them as some kind of voodoo that they don’t really want or need.
- Apr 26, 2020 How to break everything by fuzz testing Fuzz testing, if you’re not aware, is a form of testing that uses procedurally generated random inputs to see how a program behaves. For instance, if you were fuzz testing a web page renderer you might generate a bunch of HTML - some valid, and so
- Oct 17, 2020 Apple, Google and aligned incentives For the past decade I’ve exclusively used Android phones. I got the HTC Dream (aka the T-Mobile G1) shortly after it came out, and dutifully upgraded every 1-2 years. In that timespan I used Android as the basis for my Master’s Thesis, took a job on
- Jun 12, 2021 Reverse engineering an Arctis Pro Wireless Headset For the last year and a bit, I’ve been using a SteelSeries Arctis Pro Wireless Headset for gaming and talking to friends. It’s a fine headset, but because there’s an always-on receiver there’s no way to detect if the headset is turned o
- Oct 16, 2021 On the utility of user stories User stories are a staple of most agile methodologies. You’d be hard-pressed to find an experienced software developer that’s not come across them at some point in their career. In case you haven’t, they look something like this:
- Feb 5, 2022 Artisanal Docker images I run a fair number of services as docker containers. Recently, I’ve been moving away from pre-built images pulled from Docker Hub in favour of those I’ve hand-crafted myself. If you’re thinking “that sounds like a lot of effort”, you’re right. It also comes with
- Feb 18, 2022 Reproducible Builds and Docker Images Reproducible builds are builds which you are able to reproduce byte-for-byte, given the same source input. Your initial reaction to that statement might be “Aren’t nearly all builds ‘reproducible builds’, then? If I give my compiler a source file it
- Oct 24, 2022 Adventures in IPv6 routing in Docker One of the biggest flaws in Docker’s design is that it wasn’t created with IPv6 in mind. Out of the box Docker assigns each container a private IPv4 address, and they won’t be able to reach IPv6-only services. While incoming connections might work, t
- Dec 6, 2022 Docker reverse proxying, redux Six years ago, I described my system for configuring a reverse proxy for docker containers. It involved six containers including a key-value store and a webserver. Nothing in that system has persisted to this day. Don’t get me wrong – it worked – but there
2025 22
- Dec 30, 2022 Generating infinite avatars I recently added a new ‘about’ section to the top of my website. Like most about pages, it has a picture. Instead of a normal photograph, however, you’ll see an AI-generated avatar. This is admittedly fairly trendy at the minute — apps like Lensa offer to mak
- Jul 29, 2023 Upgrading the RAM in a Dell G15 laptop I currently use a Dell G15 laptop for work. It has served me well for a little over a year, but recently it has been struggling a little with my day-to-day workload. It came with 32GB of RAM — the highest possible specification at the time — but th
- Sep 17, 2023 Adventures in 3D printing I’d been idly considering getting a 3D printer for a while, but have only recently taken the plunge. I picked up a Sovol SV06 from Amazon for £199.99, which is a model commonly recommended for beginners. About three weeks later, I think I’ve finally finished fi
- Dec 3, 2023 Project log: Filament weight display One problem I have when 3D printing is that it’s hard to gauge whether there’s enough filament left on a roll to complete a print. Sometimes it’s obvious when the print is small or the roll is full, but often it’s not. If I’m unsure about it, I end up
- May 25, 2024 HTTP/2 and TLS Server Name Indication I was recently alerted to a bug in Centauri, a simple reverse proxy I wrote. The initial report was that it was serving completely the wrong website, but only sometimes, and it behaved differently in different browsers, and no-one else could reprodu
- Jul 26, 2024 A year of boardgames I realised the other day that it’s a little over a year since I started building out a collection of board games, and thought it’d be fun to go through the collection and what I think about the games in hindsight. The beginning I don’t remember how I discovered the
- Aug 4, 2024 Further adventures in 3D printing Not quite a year ago, I bought a Sovol SV06 3D printer and wrote about my initial experiences. At the end I joked:
- Sep 1, 2024 How I Get Things Done I always quite like reading about how other people do things. What software or hardware they use, or how they manage reminders, todo lists, and so on. I’ve never actually written about how I do any of that, though. So here it is! Productivity In the past I’ve fallen
- Dec 6, 2024 Simple backups with Restic and Hetzner Cloud I have a confession: for the past few years I’ve not been backing up any of my computers. Everyone knows that you should do backups, but actually getting around to doing it is another story. Don’t get me wrong: most of my important things are
- Jan 2, 2025 Building a travel toolkit For a while now, whenever I’ve traveled anywhere I’ve dumped a selection of tools into my backpack just in case I need them. Originally this was mostly focused around being able to open and fix my laptop if anything went wrong, but over time has slowly expanded
- May 16, 2025 The Curse of Knowledge and Blogging The single worst part about blogging for me is trying to come up with ideas for what to write about. Not because they’re hard to come up with, but because every idea seems too basic or not worth talking about. Seems. It’s not just me, either. My frien
- May 21, 2025 Home Automation Without the Megacorps I first experimented with home automation in 2016, by picking up a Samsung “SmartThings” hub. It was terrible. The UI to configure things was slow and clunky, firmware updates were applied whether you wanted them or not, and everything stopped worki
- May 28, 2025 Coming around on LLMs For a long time I’ve been a sceptic of LLMs and how they’re being used and marketed. I tried ChatGPT when it first launched, and was totally underwhelmed. Don’t get me wrong: I find the technology damn impressive, but I just couldn’t see any use for it. Recently I’
- Jun 3, 2025 Building a new Computer I recently built a new computer, after exclusively using a laptop for three years. It’s also the first time I’ve departed from the usual combo of an Intel CPU and Nvidia GPU. While the form factor of a laptop did make it amazingly handy for travelling and attendin
- Jun 11, 2025 An app can be a ready meal Three years ago I read “an app can be a home-cooked meal” by Robin Sloan. It’s a great article about how Robin cooked up an app for his family to replace a commercial one that died. It’s been stuck in my head ever since. It’s only recently that I’ve actually d
- Jun 18, 2025 If all you have is a hammer… I presume everyone is familiar with the idiom “if all you have is a hammer, everything looks like a nail”. If not, well, there it is. It’s generally used pejoratively about being single-minded, but I think it also gives a glimpse into something more interest
- Jun 22, 2025 The Ethics of LLMs I’ve written about LLMs a few times recently, carefully dodging the issue of ethics each time. I didn’t want to bog down the other posts with it, and I wanted some time to think over the issues. Now I’ve had time to think, it’s time to remove my head from the sand. Th
- Jun 25, 2025 How I use Tailscale I’ve been using Tailscale for around four years to connect my disparate devices, servers and apps together. I wanted to talk a bit about how I use it, some cool features you might not know about, and some stumbling blocks I encountered. I’m not sure Tailscale needs a
- Jun 30, 2025 Finding an awkward bug with Claude Code I recently encountered a bug in one of my projects that I couldn’t immediately figure out. It was an issue in Centauri, my reverse proxy. After its config was updated, I noticed it stopped serving responses. Looking at the logs, I could see it was
- Jul 16, 2025 How tech companies failed to build the Star Trek computer In most Star Trek series, the ship or station computer is ever-present in the background, waiting to be called on by the main characters. It nearly always does exactly the right thing, and there’s little limit to the functions it
- Jul 25, 2025 Escaping Spotify the hard way For the longest time I used Spotify for all my music needs. And I listen to a lot of music: sometimes actively, but mostly passively as background noise. I cancelled my premium subscription last December, and stopped using the service entirely. Why? There’s
- Jul 30, 2025 Fixing a loud PSU fan without dying Three months after I built my new computer, it started annoying me. There would occasionally be a noise that sounded like a fan was catching on a cable, but there weren’t any loose cables to be a problem. Over the course of a few weeks, the sound got
2024 5
- Aug 8, 2025 Making a font of my handwriting Recently I’ve been on a small campaign to try to make my personal website more… personal. Little ways to make it obvious it’s mine and personal, not just another piece of the boring corporate dystopia that is most of the web these days. I don’t quite want
- Sep 9, 2025 10 Weeks with an Apple Watch 10 Around ten weeks ago I picked up an Apple Watch 10, and have been wearing it almost constantly since. It’s not my first Apple Watch — I had a Series 5 for a bit back in 2020 — but it’s the first time I’ve actually stuck with it. Ten weeks seems like an apt
- Sep 18, 2025 Blogging and the Imaginary Quality Bar Recently I realised that I’ve developed a self-imposed quality bar for blog posts. They need to be a certain length, and have a certain substance to them. They need to be generally useful in some way I can’t quite define, to some imagined future au
- Sep 21, 2025 Further Adventures in Music Organisation I wrote before about how I’d dropped Spotify in favour of locally stored music, but things have advanced a bit since. I had a few issues: Tauon would occasionally manage to lose its database and along with it all my carefully constructed playlist
- Sep 30, 2025 Avoiding the Consequences of Dumb Laws with Tailscale More and more sites are implementing privacy-invading age checks or just completely blocking the UK thanks to the Online Safety Act. Protecting kids from some content online is certainly a noble goal, but the asinine guidance from Of
2023 3
- Oct 28, 2025 Moving back to a dynamic website For the past few weeks I’ve been working on converting chameth.com from a static site into a dynamically generated site backed by a database. This is the exact opposite process to one I went through maybe a decade ago. So why the change, and what’s diffe
- Nov 1, 2025 Thinking more about backups Almost a year ago I wrote about how I do backups with Restic and Hetzner. That system has been ticking along well ever since, but recently I had some… thoughts. These backups are all well and good if I accidentally delete a file, or a database gets corrupted,
- Nov 26, 2025 Securing all the things with 1Password For many years I’ve been a keen user of Bitwarden. Recently I’ve had a lot of small paper-cut problems. The browser extension was redesigned and just doesn’t quite work how I expect any more. The prompt to save new login info misfired more than it
2022 5
- Dec 7, 2025 Exposing game servers over Tailscale I’ve recently been playing a lot of Factorio with a friend. I’ve been hosting, but my desktop computer is behind far too many layers of NAT, and I can’t be bothered dealing with setting up port forwards. Up until today we made do with Steam’s networki
- Jan 1, 2026 Monthly Meanderings: December 2025 For a while I’ve been idly thinking about a way to get smaller bits of content onto my website without it being too annoying for me, or too hard to consume. Things like interesting links, small project updates, and so on. I didn’t immediately come up wi
- Jan 18, 2026 The meaning of life Now that’s a grandiose title for a blog post! Blame Jeremiah Lee, who selected it as the theme for January’s IndieWeb Carnival. I’ve not taken part in this before, but it’s basically a shared writing prompt. One person selects a theme, other people write about it on
- Jan 24, 2026 Surge protectors: marketing vs reality A while back I went down a deep rabbit hole looking into surge protectors, and what all the different numbers mean, and how that affects things in case of a voltage spike. Then I didn’t really do anything with the information, other than bore a few
- Jan 29, 2026 An interesting Tailscale + Docker gotcha As I’ve written about before, I use Tailscale for a lot of things. I thought I had it set up in a reasonably secure manner, but I recently noticed a problem. I use Tailscale’s ACLs to limit what each node can access, based on the tags I apply to
2021 2
- Feb 1, 2026 Monthly Meanderings: January 2026 Welcome to the second edition of my monthly meanderings. For a bit of context, you can check out the introduction to the first edition. Website updates It’s been a pretty busy month for chameth.com. Three blog posts: The Meaning of Life — an entry into t
- Feb 11, 2026 Just a nod Last month I added a new feature to the bottom of almost all pages on this site: a “nod” button. It’s a bit like the upvote buttons you see on bear blog posts, or the ubiquitous like button you get on social media, with one key difference: it doesn’t track or count anything.
2020 3
- Mar 1, 2026 Monthly Meanderings: February 2026 It doesn’t feel like a whole month has gone past since I wrote the last instalment of Monthly Meanderings, even allowing for how short a month February is. For more context on this series, you can check out the introduction to the first edition. Website
- Mar 14, 2026 The longest way to represent a date The other day, someone on IRC posed this question: “What is the longest way to represent a date using any means possible that isn’t just repeated filler?” Some people jumped for writing the date out in languages that had longer translations. My immedi
- Mar 17, 2026 Modern CSS is fun I’ve been doing a bunch of CSS tweaking recently, and keep being surprised by how nice modern CSS is to work with. As someone grey-haired enough to remember writing HTML without CSS, it’s amazing to think how far along web technology has come. I wanted to demonstrate s
2019 3
- Apr 1, 2026 Monthly Meanderings: March 2026 Since last month’s update I’ve been unpleasantly reminded that I’m middle aged, through the medium of a dodgy knee. There’s nothing quite like not being able to stand up without groaning to underscore that you’re not young any more. The ongoing game of “wi
- Apr 9, 2026 The Case of the Unchanging Config Last week I was attempting to make it so I could share pictures on IRC directly from my client. This sounds simple, but it involves a bouncer that proxies the request to a standalone image hosting service that I had to modify to be compatible. At one poi
- Apr 30, 2026 Migrating from GitHub to Forgejo When Microsoft bought GitHub in 2018 my kneejerk reaction — like so many others — was to start looking for alternatives. For a while I self hosted a Gitea instance but I never totally bought into it: some repositories I still pushed to GitHub, some I pus
2018 1
2017 3
- Jun 1, 2026 Monthly Meanderings: May 2026 Another month, another wrap-up post. This is the first one I’ve felt reluctant to write, and I think it’s because I feel like I didn’t really do anything last month. Other than play a lot of World of Warcraft. Website updates No new posts this month, but I f
- Jul 1, 2026 Monthly Meanderings: June 2026 Writing these monthly posts is making me very aware of how quickly the year is going. I’m not sure I like that at all. June saw some truly horrible hot weather in the UK; it’s almost like murdering the planet with CO₂ emissions was a terrible, terrible idea
- Jul 23, 2026 Tracking PBs without the dark patterns I’ve recently been bitten by some kind of strange exercise bug. I’ve gone from being mostly sedentary to struggling to not go out for a cheeky bike ride on a day that’s meant to be a rest day. Maybe this is what a midlife crisis feels like? Anyway,