EUR

Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase
Excellent supplier product showcase

metal lined slurry pump bucket

Wölfblag – Page 2

    LaunchBar Actions

    I’ve been a user of Objective Development’s most excellent utility LaunchBar since 2003, I primarily use it for quickly launching applications and clipboard history, but it has a ton of other functionality and to be honest I probably should take more advantage of it.

    One of the things Objective Development added relatively recently is Actions, basically a way to extend LaunchBar with your own custom code to accomplish various tasks, and it occurred to me that I could probably write up something that I often run into at work: needing to convert an epoch timestamp into a human-readable one.

    An epoch timestamp is given as the number of seconds (or milliseconds) since the 1st of January 1970 UTC — for example as I type this the current epoch time is 1739007449 — and they’re quite heavily used in all sorts of computery things, including for things like times on logs entries and so on. The difficulty though is that you can’t just look at it and know what the actual human-readable time is, you need to convert it. There’s a website I’ve used for a while, which works well, but it’s an extra few steps, so I decided to scratch this itch and write a LaunchBar Action to do it!

    You can download it, unzip it and double-click the resulting .lbaction file to install it into LaunchBar. If called without any input, it will give the current epoch time in seconds and milliseconds. If given an epoch time as input, it will display the human-readable date and time in your local timezone as well as UTC!

    I’ve put the code up on Codeberg if anyone is interested.

    Sans Metronome

    I mentioned in my last blog post that I’d recorded some drums at the end of October and was slowly building up a song. I’ve finally finished it and am absolutely stoked with the result!

    I’m terrible at coming up with names for songs especially because none of mine have vocals, so I titled this one “Sans Metronome” since that was the whole thing to begin with (I fired up Logic Pro and just started playing the drums, without any explicit tempo set and no metronome). Pleasingly, I also subsequently realised that I actually broke the song up with minor fills every two bars and a larger one every fourth bar without even thinking about it so it flowed pretty naturally. I had bought the incredible Superior Drummer 3 plugin and spent a fair bit of time getting my head around it, but otherwise didn’t do much of anything else with the song until the start of December when I was finally inspired enough to build on it.

    I started by nicking Deb‘s general chord progression from I’m Staying Home This Christmas (the key was G Major with a I IV V I progression, so G C D G and the occasional Am thrown in) and once I had that, I began with the bass line which started as a very simple and uninteresting set of quarter-note triads that I deleted and redid with a faster and more interesting feel once I started recording the rhythm guitar section. After that it started coming together more quickly, I recorded the lead guitar part piece by piece with my Stratocaster which also ended up getting deleted and rerecorded with a faster pace, which then brought on some more changes to some of the parts of the bass guitar.

    One of the things in music in general I’m a big fan of is the kind of “wall of sound” effect where there are just layers and layers of sound, and I wanted to try to recreate that a little bit with this song too. I used Logic Pro’s built-in “Alchemy” synthesiser plugin, manually wrote in the MIDI notes to match the lead guitar (this is the one part of the song I didn’t actually play on an instrument myself), and then had far too much fun mucking around with the twelve gajillion presets to see what sounded good. Originally I had a bells sort of sound for the choruses but on listening back to it, it sounded too Christmasy so I ditched that and went for a bit of a more pronounced synth pad sound similar to what I had done for the rest of the song, one that more floats in the background rather than particularly drawing attention to itself.

    And then finally one of the really key parts once you’re done recording is mastering! One of the features that Apple introduced in a recent Logic Pro update is the Mastering Assistant:

    I fired that up and it did a great job, but I also paid careful attention to the relative sound levels of each track, and actually ended up cranking the volume down for almost everything to some degree, tweaked the sounds of the snare drum and ride cymbal to make them less and more pronounced respectively, and just generally really listened with a critical ear to make sure everything sounded correct and sat well together. I made sure to listen not just on my Audio Technica headphones that I normally use, but also through my Blackstar guitar amp that has a 3.5mm input, our HomePod, and through our big speakers plus subwoofer in the lounge room. The latter three were really interesting because they made me realise I needed to make some more tweaks to get the track sounding good.

    And now finally after many hours of work, it’s finished. I’m probably not going to do another one of these particularly soon, especially since I’m back at work tomorrow after having had three weeks off and loads of time to fiddle around, but I’m feeling a lot more confident now!

    I wrote a blog post at the start of this year with some “I’d like to do this,” and I figured I should probably write one for the end of the year too as a bit of a look back to see how it went!

    Music

    For the musical instruments, it’s been… okay I guess? I continue to be by far and away the best at drums, followed by bass, with guitar in a distant third. The Justin Guitar course has been very good but it’s divided up into modules with a bunch of lessons about a handful of topics in each, and I got to the end of Module 2 and Justin said, “Before you move onto the next module, make sure you’ve got all of these things down pat, and I’d recommend taking a month or two of revising to really ensure it’s sunken in.” It was at that point that I realised I didn’t actually know most of the stuff nearly as well I thought I had, and after feeling like I was treading water and not getting anyway, I got a bit discouraged and not really sure how to proceed. Thankfully there’s a very active forum community so I asked in September and got some good advice, so I’ve been trying to put that into practice and we’ll see how it goes.

    One of the things that I’ve definitely noticed has helped is the “Strumming” course that’s part of the Justin Guitar app… it’s a whole thing on just getting your strumming consistent, and how to practice and how to keep in time, and I’ve absolutely noticed that I’ve gotten a lot better with that.

    In terms of recording stuff, I haven’t done a ton of my own unique stuff, just two short little things (well, three but one of them was done with loops so doesn’t really count in my mind).

    The first one was from February of this year, with the drums, bass, and two guitar tracks. The Bass Buzz and Justin Guitar courses ended up both getting into chords and songs “in the key of” at the same time, so I figured I should put this new knowledge to use! I used Logic Pro’s quantisation feature for to pull it into time because each track sounded okay on its own but when put together it was fairly obvious that just wasn’t quite all lined up, and I have a limit to how many times I want to record something to try to get it 100%. 😛

    Then in May I did another one featuring drums, bass, guitar, and a comparatively rare keyboard appearance. I noticed I was getting a lot better with the timing on the drums because this one didn’t actually need any quantisation at all!

    However, the crowning glory of 2024 was the collaboration with Deb and a bunch of other folks from the fediverse under her L-Plate Players group for a Christmas song tribute for our friend Geordie who was a massive Christmas fiend and died unexpectedly in his sleep earlier in the year. It’s called “I’m Staying Home This Christmas” and I did the drums and the bass guitar for it and I’m absolutely stoked at how well it came out:

    The full lyrics and list of contributors is on Deb’s Faircamp site.

    Most recently (the end of October), I recorded a couple of minutes of me just playing the drums without a metronome or otherwise timekeeping device, and I was surprised at how well I kept time… Logic Pro has an “Adapt” option for the project tempo where it’ll figure out what the BPM was from the recording, and mine ended up ranging from 107bpm to slightly over 110bpm over that two minutes which I reckon is pretty decent. I’ve been slowly recording bass and guitar parts for it over the past few weeks and it’s coming along pretty well, though I have no idea when I’ll be finished!

    I also look advantage of my work bonus to upgrade the cymbals on my drum kit, and it makes such a difference to the feel of playing them, they’re a lot thinner and bounce around a lot more like real acoustic cymbals would, and it’s an absolute joy to play on them:

    Back in August, I discovered that we actually have an entire little music room in the office at work, that has a (very low-end) electronic drum kit, a bass guitar, some guitars, a keyboard, and a full piano!

    There are a number of people who are Actual Musicians who play but I’m not remotely good enough for that, and a few of the people in one of the teams I work with are in the same boat so we’ve started doing semi-regular jam sessions after work and it’s been so fun. I managed to get a recording of us doing a bit of improvising:

    (The lights turn off at the end because I very poorly timed things and it was right when the building lights turn off automatically at 8pm, oops.)

    Miniature painting

    In my post at the beginning of the year I said:

    And I’ve since realised that I just need to paint when the mood strikes and not force anything because that is a surefire way to ruin a hobby. For the Warhammer Quest miniatures, I got all the heroes finished by the end of January as well as the zombies and remaining bats too, but haven’t done anything with them since then.

    In February I went back and added a bunch of extra detailing to my Kill Team: Into The Dark terrain, and over the course of January through to March I also finally made use of the Space Marine-sized female heads I bought back in 2022 and got an Intercession squad for Kill Team fully painted. After that, there was a big lot of nothing until October of this year when the new edition of Kill Team came out with a bunch of new terrain, and I’ve been steadily plugging away at that (though haven’t even looked at the miniatures from it, I’ve just been focused on the terrain to start with).

    But apart from that, there hasn’t been any other painting, but as long as I’m doing it when I feel like it and it’s not feeling like a chore, I think I’m going to call that a win.

    2025

    For next year, I’m pretty much just going to keep plugging away at my music stuff and see how it goes!

    I’m also going to add “Blog more” to my list of things for next year, because I’ve realised that with being able to post relatively short thoughts as they happen on things like trips we’ve taken or more involved things we’ve done (Kristina’s mum visiting, and going to Perth and Melbourne are the largest examples) I haven’t really had very much to post here, and it would be good to expand on things a bit more like I did with our trip to Switzerland.

    Monitor (And Automate) All The Things

    At the end of my last post on the subject I mentioned I was going to add an ENS160 air quality sensor to my arsenal of home monitoring sensors. I actually got that done only a couple of weeks after that blog post was published and it was pretty straightforwards, though I ended up forking the ENS160 library I’d found so I could more easily configure it and have it work better for my ESP32 code architecture.

    Because I2C devices like the BME280 can be daisy-chained together and Core Electronics’ sensors thoughtfully have two STEMMA QT connectors on them, I was able to refactor my esp32-sensor-reader-mqtt code to allow for multiple sensors per ESP32 board (which in turn required refactoring of my Pi Home Dashboard Admin page as well). So now we still need only a single ESP32 board each in the office and lounge room, but both of them have a temperature/humidity and indoor air quality sensor attached to them! It’s really interesting watching the huge increase in indoor air quality we get as soon as we open the windows and let the fresh air in (when the weather is amenable to that happening, of course), and having this data is making me much more eager to crack open even just a couple of windows whenever we can.

    For my birthday this year I got a little starter kit I got from Core Electronics that has a bunch of sensors and wires and bits and bobs in it, and one of those bits and bobs was a board with three LEDs on it and a STEMMA QT connector. I was pondering what I could do with it, then hit upon the great idea of using it to give a visual indication of what the outdoor dew point, outdoor air quality, and indoor quality was without needing to display full numbers (ranging from blue being the best, through to yellow being not great, and red being actively bad). I used my esp32-sensor-reader-mqtt code as a base and wrote some code to listen to the relevant MQTT topics and change the LED colours based on thresholds for the values it received.

    I wanted this whole setup to be fairly compact, not much larger than the LED board itself, and I discovered that Adafruit makes an ESP32 that is TINY and has a built-in STEMMA QT connector so I wouldn’t need to do any soldering: the QT Py ESP32 Pico. I also realised I would need some way of holding this all neatly together instead of being an ugly pile of wires everywhere, and so had my first foray into 3D printing! I used Tinkercad to design a holder, and a friend has a 3D printer and so was able to print out the prototype for me. It turned out the measurements weren’t quite correct so I did a bit of tweaking, got a second printing, and after a coating with black paint via my airbrush, hey presto!

    The holder from behind on the left, showing the ESP32 board, and the front on the right with the LEDs lit up.

    We have two of these LED boards set up, sitting next to the Raspberry Pis that show the temperature/humidity dashboard in the lounge room and the office. I also hooked the ESP32s into my MQTT topic setup that the Raspberry Pis listen to to turn their display backlight off each night at midnight and back on in the morning at 7am so we don’t have blindingly bright LEDs lighting up the whole lounge room and office at night.

    These have been running since the end of May with zero problems, just quietly displaying their data and turning off and back on as required!

    Also in my previous post, I said that I’d switched to the Bosch BME280 temperature/humidity sensors because the DHT22 that was outside would become saturated after a long enough period of high humidity and would display wildly incorrect humidity readings. Unfortunately I subsequently discovered that the same thing happens with the BME280 because it turns out they actually use the same type of technology for their humidity sensor as the DHT22. They’re definitely more accurate indoors and I’m happily using them in the lounge room and office, but we had a spate of really wet days in winter this year and the BME280 that was outside ended up in the exact same state as the DHT22s, despite not actually ever being directly exposed to rain.

    Queue a bunch more research, and I finally found something that uses a totally different type of technology for measuring humidity and is designed to actually work outside, and it even has a little built-in heater than you can trigger to dry the sensor out, the Sensiron SHT-30 (which I will never not read as “sense-iron” rather than what I assume they were going for, “sensy-ron”). Adafruit has packaged this up into a weatherproofed mesh package so I bought one of those, updated my esp32-sensor-reader-mqtt code again (I continue to remain delighted at how the architecture for this whole project has allowed me to extremely easily add additional sensors without a whole lot of effort), and it’s been live “in production” as it were since August of this year with absolutely zero problems:

    I had to make a minor change to the SHT-30 library I’d found to allow for turning the built-in heater on and off so have forked it myself, though I think I could probably get away with not having the heater functionality after all… a friend of mine has the same sensor packed up into a little commercially-purchasable box without the heater being used and his has been sitting outside for over a year with no problems.

    One difference between the BME280 and the SHT-30 is that the BME280 calculates the dew point, whereas the SHT-30 only sends temperature and humidity. However, I discovered that you can actually calculate the dew point yourself given a temperature and humidity value, so I was able to have an option to send dew point data for both the DHT22 and the SHT-30!

    With all of the changes I made to the ESP32 admin page to account for the additional options (including software and firmware updates), it’s rather significantly longer now:

    And my Grafana dashboard has gotten equally elaborate!

    Temperature Monitoring

    Ever since I originally moved to the Raspberry Pi setup for our temperature monitoring back in 2017, I’ve been using DHT22 temperature/humidity sensors. They work well enough but they’re quite low-cost and we were noticing that as soon as the temperature starting cooling down outside, the humidity reading would shoot up until it hit 100% even though that clearly was not the case just from standing outside and feeling that it wasn’t muggy. Unless it was properly low humidity, this 100% reading would persist throughout the night until after the sun came up, even after replacing the sensor with a brand new one because the old one got wet in a particularly heavy downpour.

    I started investigating alternative sensors and then remembered I’d previously come across the Bosch BME280 which in addition to temperature and humidity also measures atmospheric pressure. A bare sensor by itself obviously isn’t particularly useful, but I found a mob just up in Newcastle called Core Electronics who actually manufacture their own circuit boards to put sensors and other little “maker” things on. Conveniently one of the sensors they offer is the aforementioned BME280 on this nifty little compact board that has a common connector known as “PiicoDev” from them so you don’t need to solder anything. (The connector is also known as “STEMMA QT” or “Qwiic” depending on which company is making it, but they’re all physically identical.)

    I found a few MicroPython libraries for the BME280 and settled on this one because it also calculates the dew point for you. After that I ordered a couple of the sensors and got to hacking on my esp32-sensor-reader-mqtt project to add the ability to select which sensor type you’re using.

    (I also ended up also rolling my esp32-air-quality-reader code in to allow usage of the PMS5003 air quality sensor we have because that repository was using an old and creaky version of the code I was busily hacking on, and given I had added support for the BME280 already it was a trivial matter to also do the PMS5003.)

    As all of that progressed, the number of options the esp32-sensor-reader-mqtt code could use was increasing and I realised I needed some way of changing settings that was easier to use than having to remember a bunch of mosquitto_pub CLI commands and the specific JSON payload and MQTT topic each one used. I’d previously started writing an admin frontend for them as part of my pi-home-dashboard project but hadn’t finished it, so dusted that off and ended up with this lovely setup!

    It’s all in a single HTML page, uses MQTT.js to talk directly to the MQTT broker that’s running on the Raspberry Pi, Vue.js for the interactivity, and Bootstrap to make it look nice. It also uses MQTT’s Last Will and Testament functionality to track whether or not the board is online (it restarts if you update a setting) and disable the field inputs if it’s not, plus it allows for remote software updating directly from GitHub so I don’t need to physically plug the boards into the computer like some sort of barbarian when I want to update them! And it’ll grab the latest Git commit hash and save it so I know which code is actually running on the board.

    With that all done, I updated our Grafana dashboard with the new data.

    Pleasingly, all of the new readings have been very close to what the Bureau of Meteorology reports!

    And finally for my birthday later this month I’m getting Core Electronics’ PiicoDev Starter Kit which has several other sensors in it, and on top of that I included an ENS160 air quality sensor which measures VOCs and eCO 2 indoors so I have a lot more more hacking fun to come.

    Intentions for the year

    I’ve never been someone who has ever made New Year’s Resolutions, but at the same time looking back at my blog post about learning musical instruments and inspired by Georgie’s blog post the other day, I’m going to do a bit of this:

    I think the main thing that’s really triggered it is the fact that I’ve had my guitar for three and a half years now (plus the Ibanez JIVA I got at the end of 2022), and I still can’t actually play any songs. I’ve got the basic open chords pretty well down (I’m even managing to mostly get the F Major barre chord fully ringing out about 80% of the time), and I can play the C Major scale accurately and at a decent pace, but that’s not a lot for the amount of time that’s passed.

    Well okay, I guess that’s not strictly true, I’ve done a bit of mucking around and recorded a few things, the most recent and one I’m most happiest with being this:

    But I still can’t do any sort of string-crossing like I’ve been learning on the bass, so stuff like the song above is just me sticking to the one string and moving up and down the frets. I’m by far and away the best at the drums, and I really need to knuckle down and actually get into a proper practice routine with the guitar, so hopefully the act of writing this blog post will get me into gear!

    The other thing I want to do more of this year is consistent miniature painting. I’ve been documenting my efforts getting through Warhammer Quest: Cursed City and I started out strong and ended up getting through half of the sixty miniatures in the box, but then… completely stopped painting anything. I managed to do half of my Navis Breachers in September but didn’t do the rest, and after that did only two of the smallest goblins from the Warhammer Underworlds warband Grinkrak’s Looncourt in October. After that there was a whole lot of nothing until I started the Vargskyr last week. I wouldn’t say it felt like work, but I was just really uninspired and blargh, and that’s not really a good headspace to be in for something that’s creative. You could make the argument that it was just burnout from having painted 32 miniatures over the course of like a month, but I’ve had this same pattern pretty much every prior year as well. So I think I’m going to try to just do a bit of painting each week and get something done, rather than going boom and bust.

    On a more positive note, one thing I have been enjoying doing is reading a couple of chapters of a book before bed. This has gotten me through the entirety (bar the last book) of the 41 books of Terry Pratchett’s Discworld novels, all of Iain M. Banks’ Culture series, as well as Timothy Zahn’s Quadrail one. Most recently I’m doing yet another re-read of the very excellent Chronicles of the Shadow War trilogy, which is a continuation of Willow set fifteen years after the movie.

    So yes, onwards and musically upwards!

    When I originally wrote this blog post, the official Raspberry Pi distribution of Debian hadn’t been updated for Debian 12 and so I was still on Debian 11. They’ve since updated it, so I ran a trial run on my spare Raspberry Pi 4B+ and made a couple of minor changes to the Ansible playbooks, and flashing the “production” 4B+ to Debian 12 with the full Ansible setup was an absolute unqualified success!

    Automating Raspberry Pi setup

    Back in 2017 when I first moved off the old and busted NinjaBlocks platform to a Raspberry Pi for my temperature sensor setup, I said:

    I definitely have no problems with the hardware now (and with my move to ESP32s and MQTT for the temperature sensors themselves it’s even simpler), but I recently realised that the software configuration on the Raspberry Pis was still a problem: the configuration and setup of everything had had a steady pace of organic updates and tweaks and if one of the SD cards died or had a problem and I had to reformat it, I’d have a hell of a time recreating it afresh. On the “main” Raspberry Pi 4B+ alone I would need to:

    • Install all the various software packages (vim, git, tmux, Docker, etc.)
    • Add my custom shell configuration and bashmarks
    • Install Chrony and configure it to allow access from the ESP32s
    • Configure the drivers for the JustBoom DAC HAT and install and configure shairport-sync to allow for AirPlay to the big speakers in the lounge room
    • Configure and run the Mosquitto Docker container to allow all my temperature, humidity, air quality, and power data to flow to all the various places it needs to go
    • Configure and run the pi-home-dashboard Docker container so the Raspberry Pi Zero Ws can display our little temperature dashboards
    • Configure and run the powerwall-to-pvoutput-uploader Docker container so our power usage data can be both sent to PV Output and also be read by InfluxDB and the Raspberry Pi Zero W dashboard

    In addition to all of that, the Raspberry Pi Zero Ws that display our little dashboards required a whole bunch of constant tweaks and changes to get them working properly (they run a full Linux desktop and display the dashboard in Chromium, and Chromium has an extremely irritating habit of giving a “Chromium didn’t shut down properly” message instead of loading the page you tell it to if there were basically any issues at all; fixing that required a whole lot of trial and error until I narrowed down the specific incantations to get it to stop).

    Setting all of that back up from scratch would have been an absolute nightmare so I figured I should probably automate it in some fashion. And in addition, it means I would be able to keep future changes under version control as well so no matter what I’ve done I’d be able to restore it if necessary. At work we use a piece of software called Ansible to bring up the required software and configuration on the Amazon EC2 instances we run, so I thought that’d be a good place to start.

    Even though it’s developed by RedHat and isn’t just some random open-source piece of software (although it is open-source), I still found the documentation to be not great in terms of explaining everything step-by-step and building on that knowledge in subsequent steps. But after a bunch of reading and trial and error, plus several weeks of getting it all working, I have my entire Raspberry Pi setup for all the Pis we have at home fully automated! I can wipe the SD card, reflash it with a fresh copy of Raspbian, then run Ansible and it gets everything installed and configured and working exactly how I need it.

    I uploaded the whole shebang to Codeberg to hopefully help others out as well. It’s obviously completely customised for our setup, but it at least gives a reasonable idea of how everything works.

    It starts by creating an inventory, basically a list of the hostnames you want to run playbooks against (a “playbook” is a file that describes the list of steps to run in order to get to the desired state you need). Alongside that, you can group the hosts together so you can target a playbook to run on a specific set of hosts. For example, the server group only consists of the main Raspberry Pi 4B+ described above, but the dashboards consists of all three of the Pi Zero Ws that are running the dashboards.

    One of the really handy things with Ansible is that you can set variables that will be reused in various places, and you can configure them for all hosts, or per group, or per individual host. I’m using a combination of those, and inside the server group it will actually look up items from within 1Password so I can commit the code to source control and not be storing secrets in it. You can also set variables per individual host as well, which I use to specify the dashboard URL that each of the Pi Zero Ws should load.

    The playbooks themselves live in the playbooks directory, and they specify a set of hosts to run against, and a series of roles to run. The roles are reusable sets of tasks, so for example I run the initialisation role against all of the Raspberry Pis no matter what they’re ultimately going to be doing, for doing the initial things like setting the hostname and updating all the software packages, configuring Git, etc.

    After the initialisation is done, the server playbook will run all the various steps to get Docker installed, NVM and Node.js installed, then get everything else configured and installed that needs to be configured and installed. Compare to the dashboards playbook that will also run the same initialisation steps, but then runs the dashboard role which installs the drivers for the HyperPixel display and various other things that need doing, and will configure the autostart file so on boot Chromium comes up with the correct URL depending on which Raspberry Pi it’s running on! The dashboard_url variable in that template file is set in the host_vars directory per specific hostname, so I can customise it for each one.

    After my complete success here, I decided I wanted to do the same for when I needed to reflash my ESP32s, because previous it relied on me remembering to update a configuration file with the name of the ESP32 and I had definitely messed that up on a couple of occasions. That was relatively straightforwards as well, and I added it to my esp32-sensor-reader-mqtt repository (and included a playbook to just erase a board because I never did it quite often enough to remember what the specific steps were).

    And then finally after that, I decided I should also automate my Linode setup. I’d posted back in 2019 about using Linode’s StackScripts to set everything up, but the problem with that is that you run it at the very beginning and your Linode is set up appropriately at that point, but any changes you make after that aren’t saved anywhere, so you’re essentially back to square one again. The final sentence in that blog post was this:

    But in news that will surprise nobody, I was not at all disciplined. 😅 The other problem is that you can’t test the StackScript as you’re going (they only run when you first spin up the Linode afresh), you have to update it and hope those steps work in future. With Ansible, the idea is that everything is idempotent, so you can run everything as many times as you want and it won’t change if something has been configured already, so it enables you to easily test out parts of the playbook updates without needing to wipe the whole damn thing. It’s taken a bit over a month of working on it after dinner and on weekends, but now the whole Linode setup is fully automated as well.

    However, the other wrinkle is that where the Raspberry Pis don’t store any data on them and can just be wiped without problem, my Linode hosts this blog, my website and all its images, all the various images I’ve posted to Ars Technica over the years, and a bunch of other things too. I ended up splitting the Ansible process into two, there’s the configuration and then another separate playbook that copies everything over from the old Linode onto the new one and then registers a new SSL certificate with Let’s Encrypt and updates Cloudflare to point the DNS of my website and blog and the general server hostname to the new Linode.

    That bit was a bit nerve-wracking, I tested the process a bunch of times and pulled the trigger for real last weekend, then had a minor panic attack when I realised that the database dump of my website hadn’t been reimported since I originally tested the process back on the 9th (I suspect it didn’t import because there was already data in the database, but unfortunately it didn’t actually error out so I didn’t know), so I didn’t have any of the posts I’d made nor any of the temperature data since then. 😬 Fortunately I realised this the morning after I’d done the migration and had wisely left the old Linode up and running, so I renamed the database on the new Linode so I could harvest the temperature data that been sent since the migration, dumped the old database from the old Linode and imported it into the correct location on the new Linode, and then exported and reimported just the missing temperature data, and we’re back in business.

    This time I should be able to revisit this in three or four years when I next do a big upgrade and it should actually be quite painless (famous last words, I know, but I’m much more confident this time).

    Learning musical instruments

    Sixteen years ago today, I bought my first guitar! It was a Fender Squire in a $400 everything-you-need starter kit, but I never managed to stick with it enough to learn much of anything, barely even the most basic open chords. The learning DVD I bought was boring as hell, the guitar was really heavy and kept going out of tune, and the amplifier it came with sounded awful.

    I didn’t get rid of it though, it moved from house to house with us, and it was just sitting in our back room collecting dust when on a lark during the first COVID lockdowns in 2020 I decided to pull it out and maybe have a stab at learning to play again given the sheer richness of learning resources to choose from these days. First thing to do was to get it tuned up, and the very first string I tried to tune immediately snapped. I looked down the neck and realised that it warped to all hell and back, and given I never particularly liked it—in either a nice-to-play or an aesthetic sense—I decided I’d actually splurge a bit and spend more and get a guitar that made me want to pick up and play it.

    After a ton of research on learning all about guitar pickups and where the sweet spot is for a guitar that’s properly good in its own right but not unreasonably expensive, I settled on an Epiphone SG Standard in ebony.

    It arrived in mid-June and looked absolutely mint. For actually learning how to play again, I started with Fender Play. It was pretty decent, and absolutely a huge step up from the extraordinarily dry learning DVD I bought in 2007.

    Then come mid-2021 we had more lockdowns, even harsher than 2020’s, where we weren’t even allowed to travel more than 5km from our homes. At some point during all this I randomly remembered how much I’d always enjoyed playing the drums

  • Fast shipping
  • Home delivery
  • The promotion is underway
  • Free trial
  • 24/7 online
  • 30-day no-reason return policy
Contact us

Daniel Féau processes personal data in order to optimise communication with our sales leads, our future clients and our established clients.

Read more

Other related products

water pump submersible

water pump submersible

b filter press slurry pumps

b filter press slurry pumps

best sump pump you can buy

best sump pump you can buy

d river dredge pumps

d river dredge pumps

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.