Frogs in a Hollow pt 2

This evening I used leftover cocktail sausages to make teeny-tiny toads-in-the-hole (my kids say they should be called frogs-in-the-dip).

It worked out pretty well.

A pyramid of four bite-sized toads-in-the-hole alongside chive mash and carrots, smothered in gravy, on a plate.

Micro-recipe:

1. Bake cocktail sausages (or veggie sausages, pictured) until barely done.
2. Meanwhile, make a batter (per every 6 sausages: use 50ml milk, 50g plain flour, 1 egg, pinch of salt).
3. Remove sausages from oven, then turn up to 220C.
4. Put a teaspoon of a high-temperature oil (e.g. vegetable, sunflower) into each pit of a cake/muffin tin, return to oven until almost at smoke point.
5. Add a sausage or two to each pit and return to the oven for a couple of minutes to come back up to temperature.
6. Add batter to each pit. It ought to sizzle when it hits the oil, if it’s hot enough. Return to the oven.
7. Remove when puffed-up and crisp. Serve with gravy and your favourite comfort food accompaniments.

×

Frogs in a Hollow pt 1

Got the ratio of chipolatas to bacon wrong for your Christmas pigs-in-blankets and now have more cocktail sausages than you know what to do with? No, just me?

Here’s my planned solution, anyway – teeny tiny toads-in-the-hole! (Toad-in-the-holes?) Let’s see how it works out…

Cupcake-sized Yorkshire pudding batter cups, each with a cocktail sausage or two inside, being inserted into an oven.

×

Trifle for Breakfast

The fifth day of Christmas, and perhaps my last opportunity of the season to justify having trifle… for breakfast.

Dan, standing on a kitchen, holds a large bowl partially filled with trifle.

×

Note #25419

On a midnight train back from a London theatre trip, somehow the 8-year-old is still awake (and reading comics to me!); the 10-year-old is understandably wiped-out.

A fun night out though!

Dan sits on a train alongside a boy and a sleeping girl.

×

Book Exchange

Our family Christmas Eve tradition, which we absolutely stole from Icelandic traditions (cultural appropriation? I’m not sure…) via some newspaper article we saw years ago, is a book exchange.

verybody gives each other person a book,then we sit around and read until people retire to bed (first the kids, then – eventually – the adults).

We love it.

Dan sits by firelight reading a red-spined book.

×

Note #25413

Christmas Jumper Day at school, and I’m continuing my never-ending effort never to rest on my laurels, proving myself time and again worthy of my title of Most Embarrassing Parent.

Three people in a decorated hallway, wearing Christmas jumpers and headgear. Dan, in the centre, is wearing a jumper designed to make him look like a tiny elf, and a matching hat. To his right, a girl wears a jumper showing Rudolf, and a pair of spring-mounted reindeer deely-boppers. To his left, a boy with his eyes closed throws a thumbs-up: he's wearing a jumper with a pixel-art picture of Santa, and a wooly Santa hat.

×

Note #25406

Today I put 550 Christmas cards into envelopes, sealed them, put address labels on them, and stamped them.

Because these were the “lick and stick” kind of envelopes rather than a self-sealing variety, I’ve been unable to taste anything except glue ever since.

Cardboard box containing many hundreds of sealed Christmas-card-sized envelopes.

×

Too Late

You know you’ve stayed up too late when… the milkman arrives and hands you your milk.

Dan,looking tired, holds glass bottles of orange juice and of milk.

×

Moving Three Rings’ Servers

Yesterday, I fulfilled the primary Three Rings objective I set for myself when I kicked off my sabbatical twelve weeks ago and migrated the entire application to a new hosting provider (making a stack of related improvements along the way).

Network diagram but with entities having faces and named Chungus, Atul, Summer, Gwen, Alice, Astrid, and Demmy.
If you ignore the smiley faces and names my 10-year-old annotated it with, this diagram’s a reasonably-accurate representation of what each of our three production server clusters look like.

I did some work on this project during my Three Rings-focussed International Volunteer Day last week, but it feels like I’ve been working on it for much longer than that. And it feels like it… because I have been.

Months prior, I was comparing different providers and their relative merits, making sure that our (quirky and specific) needs could be met. Weeks beforehand, I was running a “dry run” every four or five days, streamlining the process of moving the ~450GB1 of live data while minimising downtime. Days before the event felt like the countdown for a rocket launch, with final preparations underway: reducing DNS time-to-lives, ensuring users knew about our downtime window, and generally fitting in a little time to panic.

Terminal screenshot showing a directory listing of a logs directory with several gzipped logfiles with different date-stamped suffixes, and the contents of the logrotate configuration file that produced them.
I made reference on International Volunteer Day to how we needed to configure logrotate. When you’re building architecture for a system as gnarly as Three Rings, there’s about a billion tools that need such careful tweaking2.
The whole operation was amazingly successful. We’d announced an at-risk period of up to six hours and I was anticipating it taking three… but the whole thing was completed within a downtime window of just two and a half hours. And I fully credit all of the preparation time. It turns out that “measure twice, cut once” is a sensible strategy3.

It’s challenging to pull off a “big”, intensive operation like this in an entirely voluntary operation. I’m not saying I couldn’t have done it were I not on sabbatical, but it’d certainly have been harder and riskier.

But then, I also couldn’t have done it without the kickass team of volunteers I’ve surrounded myself with. I guess the real success story here is in the power of a well-aligned team and in volunteer effort.

Footnotes

1 Three Rings‘ user data is represented by a little under 70GB of MariaDB databases plus about 380GB of organisational storage: volunteer photos, files, email attachments, and the like. Certainly not massive by comparison to, say, social media sites, search engines, and larger eCommerce platforms… but large enough that moving it takes a little planning!

2 Okay, a billion tools to configure? That’s an exaggeration. Especially now: since the architectural changes I’ve put in place this week, for example, production app server builds of Three Rings no require a custom-compiled build of Nginx (yes, this really was something we used to need).

3 Which you’d think I’d have realised with my more-successful recent second attempt at secret-cabinet-making.

× ×

Building another secret cabinet

Earlier this year, after our loft conversion work, I built a secret cabinet into the bookshelves I constructed for my new bedroom. My 10-year-old was particularly taken with it1, and so I promised her that when she moved bedroom I’d build one for her.

A bookcase in a child's bedroom, with Christmas decorations visible in the background. Several very old looking books stand conspicuously on the shelf.
Some of these titles perhaps don’t look like they belong, but she doesn’t seem to mind.

My initial order of fake book fronts was damaged in transit but the excellent eBay seller I’d been dealing with immediately sent a comparable replacement. This had left me with a spare-but-damaged set of fake book fronts, but with a little gluing, sawing and filing I was able to turn them into a second usable fake cabinet front.

My 10-year-old’s fake cabinet isn’t quite as sophisticated as mine (no Raspberry Pi Zero, solenoids, or electronic locks) – you just have to know where it is and pull on the correct corner of it to release it – but she still thinks it’s pretty magical2.

The same bookshelf, but now with the older books - actually fake fronts - swung open to reveal an empty cabinet behind.
I’ve no idea what she’ll store in here, and given that she’s on the cusp of becoming a teenager it’s possible I don’t want to know. But at least I know the secret to opening it, should I have to.

A cut-down plank of plyboard stained the right colour, some offcuts of skirting board, a couple of butt hinges, some L-brackets, some bathroom mirror mounting tape, the fake book fronts, and an hour and a half’s work seems totally worth it to give a child the magical experience of a secret compartment in their bedroom. My carpentry’s improved since my one, too: this time I measured twice before cutting3 and it paid-off with a cleaner, straighter finish.

Footnotes

1 She was pretty impressed already at the secret cabinet, but perhaps more-so when she discovered that the fake book fronts I’d used were part of the set of The School for Good and Evil, the apparently-disappointing film version of one of her favourite series’ of books.

2 Which, frankly, it is. I wish I’d had a secret compartment in my bedroom bookshelves when I was her age!

3 Somebody should make a saying about that.

× ×

Note #25375

Today, while I cooked dinner, I introduced my two children (aged 10 and 8) to Goat Simulator.

Within half an hour, they’d added an imaginative twist and a role-playing element. My eldest had decreed themselves Angel of Goats and the younger Goat Devil and the two were locked in an endless battle to control the holy land at the top of a rollercoaster.

The shrieks of joy and surprise from the living room could be heard throughout the entire house. Perhaps our whole village.

Maybe Later

This is a repost promoting content originally published elsewhere. See more things Dan's reposted.

Maybe Later

“Install update” Maybe later.

“Sign in to access this content” No.

“It’s better in the app!” Whose fault is that?

“We completely redesigned this thing you need to do your job for no good reason” Got it.

“Disable any adblocker.” Absolutely not.

I don’t know if I’m supposed to read this as a poem, but I did, and I love it. It speaks to me. It speaks of my experience of using (way too much of) the Web nowadays, enshittified as it is.

(This toot about the evolution of videogaming seems almost like a sequel. Less like a poem, though.)

But yeah, I run a fine-tuned setup on most of my computers that works for me… by working against most of the way the Web seems to expect me to use it, these days. I block all third-party JavaScript and cookies by default (and drops first-party cookies extremely quickly). I use plugins to quietly reject consent banners, suppress soft paywalls, and so on. And when I come across sites that don’t work that way, I make a case-by-case decision on whether to use them at all (if you hide some features in your “app” only, I just don’t use those features).

Sure, there are probably half a dozen websites that you might use that I can’t. But in exchange I use a Web that’s fast, clean, and easy-to-read.

And just sometimes: when I’m on somebody else’s computer and I see an ad, or a cookie consent banner, or a “log in to keep reading” message, or a website weighed down and crawling because of the dozens of tracking scripts, or similar… I’m surprised to remember that these things actually exist, and wonder for a moment how people who do see them all time time cope with them!

Sigh.

Anyway: this was an excellent poem, assuming it was supposed to be interpreted as being a poem. Otherwise, it was an excellent whatever-it-is.