MySQL: Generating a new “random” number which isn’t already present in a table
The Problem You have a list of numbers in a table and you want to generate a new number, between a set of two values, which isn’t already present in the table. tl;dr There isn’t really a nice solution....
View ArticleCarpentry Designs: Drinks Cabinet with Wine Fridge
Intro When looking for a drinks cabinet for wine and spirits, I couldn’t find anything which took my fancy. Some things came close, but not quite close enough. As such, I decided to make the cabinet...
View ArticleWordPress: Changing error_reporting level
Warning for PHP >= 8.0 UsersPer the comment from Alexey below, PHP 8.0 changes the behaviour of disable_functions to make disabled functions undefined, thus creating a fatal error. WordPress core...
View ArticleHow to properly interpret a traceroute or mtr
traceroute vs mtr When a packet travels across the Internet, it travels through multiple routers. The traceroute and mtr tools can be used to identify the routers a packet passes through between you...
View ArticleCarpentry Designs: Chest Freezer Cabinet
Chest freezers are ugly beasts. If you don’t have an appropriate garage or other outbuilding then you’re stuck with keeping it in the house. Building a cabinet around it so it blends in with the rest...
View Articleboto3 / Ansible: SSL validation failed [Errno 2] No such file or directory
This is a really peculiar error. It seems to be caused in the past few months by some sort of regression in boto3. I encountered it on Debian. If you run Ansible or your own Python application under...
View ArticleRepairing another Air Conditioner Unit
Intro I did a post some time back about repairing a portable air conditioner unit. They’re not very complex bits of kit and, unless the compressor has broken, they’re usually very easy and cheap to...
View ArticleRemotely configuring Hikvision analogue cameras
Intro I wired my house, circa 2014, for CCTV. At the time, I didn’t have as much confidence as I would have liked in IP cameras so I ran coax and power to each camera and used analogue cameras. As I...
View ArticleCarpentry Designs: TV / Games Console Cabinet
Intro I’m not a big gamer, but I played a lot when I was younger. Having dug out a Sega Megadrive, SNES, PS1, PS2 and Wii from the parents’ lofts, the former TV cabinet was a mess of consoles, games...
View ArticlePuppet/git Error: change from ‘absent’ to ‘present’ failed: Path /xxx/ exists...
This error has suddenly started appearing on previously working Puppet implementations. git have added a change, in December 2022, in response to a purported security vulnerability which prevents...
View ArticlePHP FPM: Log errors to stderr (for Docker)
When running php-fpm in a Docker container, it is often desirable to log errors to stderr such that they can be picked up by your docker logging driver and sent to wherever your logs normally go. This...
View ArticleJava log4j2: Sanitising / Editing Log Messages
Intro It feels like quite a common requirement to want to sanitise your Java application logs to remove passwords, PII, or other sensitive data. This took far more Googling than I had expected –...
View ArticleHP ProLiant ML350 Gen9 as a home server
I have, for some years now, run an HP Gen8 Microserver as a home server. This has been perfectly fine however 7 years on, its storage capacity is dwindling and its CPU is struggling to keep up with...
View ArticleMaxing out the spec of a HPE ML350 Gen9 server
Intro I recently did a post on the ML350 Gen9 as a home server. This server was incredibly configurable when originally purchased from HP and upgrading it isn’t quite as simple as just adding more...
View ArticleInstalling Unifi Controller (UniFi Network Servers) on Debian 12
It seems the Unifi Controller, at time of writing, is horribly outdated. It relies on Mongo DB < 5.0.4.4, which isn’t quite end of life at time of writing but it goes EOL in Feb 2024. To install...
View ArticleAlarming and protecting spare wheel cover on Landrover Defender L663
Intro Due to the high resale value of Defender spare wheels and spare wheel covers, they are very prone to being stolen. It seems the locking wheel nuts on the spare wheel aren’t enough to protect...
View ArticleOpenWrt on Adalov / COMFAST CF-EW84 Wireless Access Point
Intro This is actually a pretty decent access point, hardware wise. It has 2 radios and reasonably high gain external antennas. It claims to be waterproof and, looking at the unit itself, I don’t...
View ArticleWiFi Repeaters vs Juniper SRX DHCP = :(
What’s the beef? It so turns out that most basic WiFi repeaters (i.e. a unit that connects to one WiFi network and broadcasts a new WiFi signal with the same or different SSID) don’t work too well...
View ArticleInstallation of BT OpenReach’s new 1.6Gbps FTTP Service
Intro BT OpenReach have fairly recently launched a new FTTP service, which they are offering to ISPs who use the OpenReach FTTP network. This gives a theoretical maximum download speed of 1,600Mbps...
View Article