RSSAmplifier

Blog

Nick Charlton

nickcharlton.netRSS feed ↗195 posts

Latest posts

Prometheus Remote Write Examples

Last year, I worked on a project that sends telemetry data to Grafana Cloud . It was data from remote sensors (i.e.: internet of things) and my theory was that having the data end up in Prometheus would be ideal for data storage, software licensing and general support reasons as then it’d be possible to query the sensor data like any other application metrics. In practice this worked out pretty…

Using a Vodafone Mobile Broadband (ZTE K5161z) 4G USB dongle on Linux

There are plenty of these little devices around, and as of the start of 2026 they sell for £25 on Amazon unlocked for any network. I couldn’t figure out how to get the thing to actually work though on an otherwise failing boring Linux install. It seems likely that the current glut of them is either because of customer returns from Vodafone, or just unused devices as 5G dongles are rolled out. But…

Working with Raspberry Pi images

I’ve found myself working with the Raspberry Pi frequently recently. It’s a nice platform, and I appreciate the software tooling for making it easy to get going and allowing you to focus on what you’re trying to make, rather than the embedded platform itself. But every guide points to using the Raspberry Pi Imager , which isn’t a satisfying answer for what the process actually is, which would help…

Combining secret values in files on Kubernetes

There’s a few applications which make handling their associated secrets and configuration particularly tricky to do on Kubernetes, because the main configuration file also has many secrets in it. We don’t want to end up in a position where the secrets are, or could easily be, left in a code repository, but we also don’t necessarily want to put all of our configuration into a secret that makes it…

Static files with Nginx, Docker & Kubernetes

I wanted a way to serve up a set of .well-known paths, as easily as I could get away with, but keep it all alongside some other Kubernetes manifests. I hoped it’d be something I could trick the Nginx Ingress controller into doing (as that already exists), perhaps with just a ConfigMap but it’s not really designed to do that. I didn’t think it should be necessary to build a custom container image…

Two sides and four columns of A5: or a technique to help with too many projects

2024 sucked for various reasons, but when I’m not happy (over a long period of time especially), I find I start far more projects than I get close to finishing. I end up having far too many things in progress, where I’m (consciously, or unconsciously) trying to work on multiple things at the same time, continually thinking about what I’m not doing, being stuck on one project so others can’t…

Configuring a serial console on Debian 12

I’m a fan of serial consoles for out-of-band access, since having used them a lot for network equipment. Recently, I was trying to figure out a graphics incompatibility on a system using Wayland on Debian and wanted to set up a serial console to try to stop part of the debugging process being so painful. Since systemd has rolled out to Debian though, there are a lot of outdated articles, and now…

Installing Debian 12 on a Dell Wyse 3040 Thin Client

The Dell Wyse 3040 is a little thin client device that’s surprisingly powerful and also very low power. I picked one up last year, new in box, for about £30 for a project. Unfortunately, getting Debian running on it is not so straightforward because it has a buggy EFI implementation which means that whilst you can complete the install, you can’t boot it afterwards . The Wyse 3040 only uses UEFI…

On the path to Administrate v1

Nearly 8 years after cutting my first release of Administrate , we’re nearly at the point of releasing v1, which has been my big open source focus all year! We’re close to releasing Administrate v1. We’d love it if you could try it out! See on Giant Robots

Automating barcode scanner tests with Capybara

Well over a year ago, we worked on a project that used barcode scanners. Knowing that they’re just human interface devices (keyboards) in most cases (and/or can be configured as such), it makes them quite easy to work with in a typical browser-based testing framework. But putting these two things together wasn’t very clear to most of my colleagues (and probably not to most people either!). My…

diff-check is on GitHub Marketplace

Today, I cut the first release (v1.0.0) and published diff-check to GitHub Marketplace . diff-check came out of seeing a common pattern of seeing side effects when another automated process would run, creating more work which wouldn’t be seen at the time. It was really common when I was working on React Native projects (if you upgrade an npm dependency, you’ll often get a change in the…

Generating Rails projects from Git patches

A couple of weeks ago, Joel asked : Starting a new rails app is fun! But after setting my bespoke set of preferred gems and config for the N-hundred’th time I think it may be time for some sort of template/generator/whatever. Any tips? So, I mentioned the approach I’ve used several times recently, using git ’s format-patch feature , but it really needs walking through to understand how this is…

Running PowerShell scripts locally with Packer

I maintain a set of virtual machine templates that use Packer . For VMware VMs, the workflow is to build them locally using the vmware-iso builder, then push to vSphere using the vsphere post-processor. The idea behind this approach is to be able to use the same templates for local VMs (which are exported as an ova archive) as those that end up on vSphere. Unfortunately, there’s some differences…

thoughtbot Open Source Maintainers Sync notes is public

We’ve been working recently on coming together as maintainers at work, trying to share what we’ve been getting up to and seeing how we can help each other out. Then we thought about sharing our notes in public, and now they’re available for everyone. Looking for an opportunity to contribute to Open Source? Look no more. We’ve made our monthly internal Open Source Maintainers Sync notes public to…

Installing Opnsense with virt-install on KVM

I was trying to setup a quick (…foreshadowing) VM to run a VPN on a host I use for a few VMs with KVM. But getting it setup was surprisingly painful until I tried the “nano” install image. As the host is headless, I wanted a disk image I could import on the host with Opnsense already installed to avoid trying to redirect VNC over the network, or something similarly daft. A serial terminal was…

diff-check: A GitHub Action which fails if anything changed

Last year, I started to see a few common workflows that would create more work by those unaware or open yourself up to making annoying mistakes if you did, that I thought could be caught with just a little more automation. This was typically when Dependabot would go and bump a dependency that would have other implications: for example, if you bump a npm dependency in a React Native project, it…

Fixing unsupported SFP+ modules/"no carrier" errors with Intel X520 cards on Debian & FreeBSD

I’ve been reconfiguring a router I built at the end of last year to be a transparent firewall (or filtering bridge) using Opnsense . On the router, I’ve got a Dell-branded Intel X520-DA2 NIC, along with some Flypro 10GBase-T SFP+ modules which I picked up on offer last year. But … they don’t work. Intel — like a lot of other vendors — restricts the SFP+ modules to those which have been approved,…

Always showing all GitHub Checks with a user style sheet

If you’ve worked with pull requests on GitHub for a while — especially with Actions — you’re probably used to having a long list of checks, that you find yourself scrolling every time to find the failing one: The usual view of GitHub checks when you've got a lot, and one failing Last year, Ben and I started working on a user style sheet to stop you needing to scroll and instead show the whole…

Resolving ESXi 7.0 NIC connection issues on Supermicro X10SDV-4C-TLN2F motherboards

I have a few Supermicro X10SDV-4C-TLN2F motherboards that I’ve been setting up to run VMware ESXi on. The first board was fine, but when setting up another I could never get ESXi to acquire an IP over DHCP. The hardware was happy the connection was valid, and both Debian 11 and Windows Server 2019 were fine …but not ESXi: A screenshot showing ESXi with 'waiting for DHCP' A screenshot showing the…

Building a 1Password CLI Windows MSI Installer

1Password has a CLI tool that’s very helpful for integrating into things like setup scripts and handling development secrets more securely. Unfortunately, on Windows, there’s no installer. Instead, you’re prompted to extract an archive, create the destination directory and add it to your PATH . This is annoying once, impractical to do multiple times and enough of a hurdle for others to be quite a…

Setting up an Azure Site-to-Site VPN to a Ubiquiti EdgeRouter through NAT

I have a Home Lab with a couple of devices for experiments and testing. It’s set up on a separate physical network — using a Ubiquiti EdgeRouter X — but I wanted to connect this to the outside world and get access to public IPs I could proxy to local services. A while ago, I started using Azure for other experiments (because I have a bunch of credits to use). I’ve also found the cost of the more…

On to Mastodon

I’m now using Mastodon: @nick@nickcharlton.net . Some time ago, I stopped contributing on Twitter as much as possible. I was still obsessively scrolling and using it to keep up with stuff going on, but I was finding people elsewhere, ideally through subscribing to people’s blogs via RSS. I limited myself to occasionally liking tweets (I’d always used this as bookmarking for later and the…

Site-wide configuration with Administrate

I haven’t been doing too much Rails recently, but I did do this and it’s worked out really well. It was one of those situations where you can go, “oh right! We can do this…” and put together an example in less than an hour which are always very satisfying. Adding site-wide configuration with a Rails model can be quite easy to do with Administrate. See on Giant Robots

Self-updating GitHub README

Back in 2020, GitHub added profile READMEs . I jumped on it and created mine when they silently launched the feature but then did …nothing with it. As the profile README is implemented as a special repository which gets rendered on your profile page, I’d wanted to build something that would auto-update and show contributions after reading that Simon Willison had done the same . I was never going…

Flashing the firmware in an IKEA BEKANT to add position memory

As I started to work from home at the beginning of the pandemic, I got an IKEA BEKANT sit/stand desk. It’s been great for my posture and managing the fatigue of being at a desk for a long time every day. My main frustration has always been that it doesn’t have a memory — you can only hold the up or down buttons to move it and so trying to get it to the same position is annoying enough to avoid…

Using HTTPListener to build a HTTP Server in C#

I needed an HTTP server to test out a software integration on Windows. Nothing was quite basic enough to just echo out the responses, so I wrote one. See on Giant Robots

Week Notes #31

I’ve been jumping back into open source recently, plus doing a lot of technical writing for work, I released v0.17.0 of Administrate the other week, which catches up on a whole load of contributions after nearly a year, Next is going to be a big breaking change, as we remove a lot of dependencies (like datetime_picker_rails ) and make the biggest change so far to how assets are handled. We’ll…

Converting Unix Shell Aliases to PowerShell

I’ve been using Windows a lot recently and have been quite enjoying it. Some things are new, but most are old and familiar. But after using a lot of shell aliases over the last decade of using Linux & macOS, I needed them to come over with me. I’ve been using PowerShell 7, inside Windows Terminal (and mostly VS Code as the editor), and so far have pulled over my Git aliases . If you’re trying to…

Week Notes #30

A New Year always brings a new set of optimism, plans and possibilities for me and this year is no different, Last year was another rough one (who knew living through a pandemic would be extremely difficult, even if you never got sick), but we made it, A lovely Christmas and New Year, then back where I was previously; trying to get my head around Windows, C# and a lot of receipt printer minutiae,…

Week Notes #29

A busy couple of months or so, which so easily ends up breaking the habit of writing something regularly, It’s mostly been work, my current project — which involves building lots of different bits of software and some hardware integration — has been fairly intense recently, but I’ve also been learning to drive (which I picked up again after a 10 year hiatus), This has all lead to my previously…

Switching to FeedBin and NetNewsWire

I’ve been using FeedWrangler and Reeder since Google Reader shutdown. All of these years they’ve continued to work really well. But I’ve wanted to move back to NetNewsWire since it was taken back over by Brent Simmons and made Open Source. NetNewsWire was always more of a “Mac app” than Reeder ever intended to be, which played around with new UI ideas and helped push along some of the more…

Week Notes #28

I’ve spent the last few weekends doing a lot of woodworking. I set myself the goal this year of building much more for the garden and — mostly because of the weather, but also because everything takes far longer than you’d expect — I ended up finishing one of the three planters I’d wanted to build, This first one (pictured below) is for cucumbers: it’s a box with a built-in trellis (which is thick…

Filtering Jekyll Posts by Tag

I’m doing a bit of spring cleaning around here, and I wanted to split the list of posts on the index into Week Notes and everything else. I differentiate Week Notes posts from others by tagging them with week-notes and filtering by these seemed easily enough. But I was wrong. In Jekyll, posts exist in a collection called site.posts , which you could pipe into a filter to change the list returned ,…

Week Notes #27

A long weekend which didn’t quite go to plan: a slow (but necessary) Saturday, followed by a bad start to some wood working projects (nothing that bad though!), In the UK we had a public holiday and so this weekend was three days long. I usually like to use them for starting projects; in three days you can make some good progress. I’d planned to replace some table legs and build an indoor cucumber…

Week Notes #26

Quite a gap since I last wrote one of these; I recently rotated off a tough project which was taking up all of my time. But now I’m on something new and then had a lovely week off! The Food Almanac via John that’s a collection of seasonal recipes and stories, which in turn lead to picking up An Everlasting Meal which I last tried in 2013 and didn’t really get on with, but was reminded of again…

Week Notes #25

I just finished four sessions of physio: I’d been limping everywhere since before Christmas, but now I’m all back to running which after so much pain is excellent, Plus, starting the longer rides again as I start to build up the fitness for cycling again, but mostly so I can spend some time away from the concrete of London ! It’s been very satisfying to get back into writing — more to come here,…

Making Drafts' Action Bar fit my workflow

I use Drafts for capturing text (everything from quick notes to this blog post started there). I’ve been using Drafts for a year, and over that time, it’s become integral to my workflow. But I’d not done much to customise it to fit what I regularly do. I typically have a view that looks like this: Drafts Main window, showing the editor area with Action Bar at the bottom I use Flags to keep many…

Building a Brew Fridge

I started brewing beer about three years ago and got to the stage where I was doing full-grain brewing and was really into it. But then I moved house and …just stopped. Over those past few years I’ve been living in two (broadly identical) draughty old Victorian houses with nowhere appropriate to leave a fermenter in. With these kind of houses, the temperature fluctuates massively throughout the…

Week Notes #24

I’ve started a new habit this year of tidying up my desk before I leave at the end of a Friday, now when I return on a Monday morning it’s nice and tidy and ready to go, it’s very nice! I finished How To Do Nothing last week. It’s an excellent read and I’d definitely recommend it, but it is one of those books you might just have to read at least twice, Then moved onto Louis Theroux’s Gotta Get…

A weekend with a Flir ONE

I spent a couple of weekends back playing around with a Flir ONE , a thermal camera which attaches to a phone. I’d been working on a project which involved some gnarly drilling and was concerned I’d hit a pipe — it turned out as a good excuse to give one a go. The Flir ONE device itself It’s a really neat device which worked well for my needs but is let down by some fairly average software. The…

Week Notes #23

First Week Notes of 2021! It was a busy old time at the end of the year, where I both did nothing quite worth writing up about and a lot of things I couldn’t, The big news is that now I’m fully remote and won’t be going back to the office when the pandemic restrictions lift (maybe for some Friday’s if others do too, but not at all like I once did); this is both exciting and scary as it opens up…

Week Notes #22

It’s been the end of the first part of Review Season this week, a time where I spend an unreasonable amount of time staring blankly at a text editor trying to come up with anything to say. It’s that perfect combination of dreadfully difficult but also concerningly meaningful which leads me to deep writers block. vvvvroooommmmmmm the deadline goes, as it flies by …and then suddenly words happen and…

Week Notes #21

Back to work last week and it was a good one: started off with helping out with a database migration ( DigitalOcean’s managed database solution is pretty nice!) and then a new project starting with the second phase of a project that’s just Rails. It’s good to be back in the land of Rails, a place where I can comfortably test-drive new features in just a few hours and really focus about the product…

Week Notes #20

A second week of doing my own stuff; much of the same but a relaxing way to spend a week as I get around to some things I’ve wanted to do for months, I started off by spending a day doing some workflow improvements: I switched from Magnet to Rectangle for macOS window management, Started the move to kitty , with a hurdle around first removing base16 which I’d previously been using to handle…

Week Notes #19

Last week was the end of a — long for me — nine-month project. It was not the easiest nor was it working in a particularly exciting to me technology (React and later React Native) but I learned a lot. And spent a lot of time in Zoom calls, Unfortunately, the client has been badly affected by COVID-19 so the project ended up finishing much earlier than we’d hoped for (it’s nice to actually finish…

Week Notes #18

Unfortunately, as I write this, I have another — hopefully not so long lasting — running-related injury as I’ve pulled a muscle or perhaps sprained my right lower leg/ankle. Queue a day of hobbling around the house and cursing having stairs, My recent injuries have been caused by a combination of things I’ve been gradually understanding over the past year: spending the last decade plus generally…

Week Notes #17

I’m now three weeks into having a standing desk and I’ve been doing a 50/50 split of sitting and standing ever since. The most interesting thing so far — and also one of the things I was very excited about — has been that I’m no longer so tired after work. I’ve been finding that standing keeps me going much longer (or, maybe, consistently?) which has always been something I’ve struggled with,…

Week Notes #16

I made an example of using Pronto with standardrb that’ll run on GitHub Actions . It worked out to be one of those things which (mostly) just slotted together and worked, which was nice, A warm cycle around London last week, which mostly reminded me how poorly thought through much of the cycle infrastructure is in certain boroughs: coming off a road into a “dual use” pedestrian/cycling area in a…

Week Notes #15

I haven’t written these for a few weeks as pretty much every week has become the same thing and then you realise it’s been quite a long time… A few weekends ago, I had my first actual pint in a pub and it was a strange experience and not quite the full experience I’d hoped for. But it’s a start! I’ve been out doing long-cycles again in the much nicer weather and I have new gravel tyres which…

Week Notes #14

Week Notes #14 Since my last post, I published Setting Jenkins Credentials with Groovy . I’ve been using some of the extra time I’ve had from lockdown to wrap up some things I started years ago and this is part of the same thread. There’s a few more posts to come related to this before I get onto something a bit more interesting, But now that the weather has gotten much hotter, I’ve been spending…