Weeknotes 2020-26: Let’s try this again

In which lockdown is bemoaned, some code is written, RPGs continue on, and the excess of television provides an opportunity to waste more time.

Outside The Asylum

Day 121 of lockdown. I mean, the first few weeks were dogsitting, but that was the last time I left Oxford, or Headington, really.

I am a professional remote worker. I’ve been working remotely for most of the last ten years, on and off, and I was totally one of the people who said “Ho ho, I have been socially distancing for years, ho ho.”

Ho ho.

I hate video conference meetings with a venimence I usually reserve for Marmite, XML Parsers or Stephen Donaldson. Voice I can at least get on with in a two person chat, but video conferencing breaks a lot of my social cues, and all my learned behaviors over not talking over people. It’s harder to tell when someone’s trying to say something, and harder still to shut down someone who’s on the third paragraph of their minimally relevant point.

The chat around a table is the closest thing I have to a natural habitat, and I miss it a lot. Not enough to do my Patriotic Duty and troop down to the nearest Wetherspoons for a pint of Spitfire come Economicly Expedient Day on the 4th, but I miss it none the less.

It’s also bad for my productivity. Without occasionally imposing some external structure (ie, working from the office in London, or a coffee shop, or somewhere that at least requires trousers) I drift slowly into a 26 hour day that I then have to force-reset over the weekend.

Work have been really good over the crisis, to be honest. We’ve been moving towards a more remote workforce over this next few years anyway, and this accelerated the timeline a bit. Pretty much all of the distilleries in my bit of the company (Absolut in Sweden, the various Scotch distilleries in… well… Scotland, and Jameson’s in Ireland) switched to supplying raw materials for hand sanitizer, causing – I’m told – some taxonomic confusion for the Absolut bottle collection market.

Working in a fully-remote team is always better than working in a partially on-site one, to be entirely honest. There’s a lot fewer critical bits of “ambient information” that nobody realises didn’t make it outside of a conversation, and keeping a social connection with a group of people is easier. There’s no real way to stop being the easily ignorable voice from someone’s laptop as the only remote member of a meeting, and I’ve lost count of the times that over the years the connection to the room has dropped and nobody’s noticed.

The remote work shift is one I’ve been hoping for since I started this, and while the cause is awful, I’m hoping some good will come out of it. Like, for example, better corporate support for ergonomics of home offices. We can but dream…

Library of Code

A long time ago (like, 2009ish), I was writing the first version of Skimlinks’ Product Guide, which is the last thing I worked on before I was, figuratively, stabbed in the back and thrown into a passing garbage truck. The original version was based on Solr, a java based search system. Never being one to leave technology at work, I hacked together a project to index all the issues of SJGames’ Pyramid magazine up to that point, which SJGames had helpfully released as a zip file to all existing subscribers when it switched to the new format in 2008. This gave me a bundle of genre-specific documents with shared keywords and all that helpful juice to make my amateur data analyst’s heart glad.

All this was done on my home server, Fjord, a delightful 2U rack-mounted machine which I bought from someone in a pub in Hackney. I broke my very first iPhone by leaning the server on my thigh in order to press the button to cross the road while carrying it to the bus stop.

Sadly, Fjord’s fan controls didn’t work under Linux, so it ran like a jet engine, and turning it off reduced my electricity bill by a third. By now, it could be outperformed by a raspberry pi, I think.

Anyway, that tangled mess of PHP, Bash and Java apps was long gone, but when I recently recovered the contents of Fjord (having moved house four times without turning it on, and it having lived in a cupboard for five years. Well configured RAID is a godsend) and remembered it existed, also: I have *far* more random RPG PDFs (due to Humble Bundle, Bundle of Holding, Kickstarter and other slips of the credit card) now, and I’d like to search them.

I’ve not really been doing personal coding much these last few years. My previous major coding projects had mostly stalled due to lack of interest (mine and others), upstream bullshit or the end of projects. The last major things I wrote for personal use was the system for managing the LARP system Odyssey. I’ve been barely maintaining things like the Panopticon (as open APIs slowly go the way of everything else), and shutting things down as they drift into obsolescence.

But I spent a few nights over some weeks building Thalium, which involved learning Laravel, ElasticSearch and a lot about how much worse PDF parsing has been made over the last ten years (Thanks Adobe, Thadobe), as well as brushing up on Docker advances to build a nice development environment and WSL2 to get it working on my gaming machine (which has more powah for handling several gigs of PDFs than my beloved Macbook). It’s not something that’s ever going to be generally accessible, but it’s been a fun project, and really handy when looking up rules for systems I’m GMing.

Socially Distanced Murder Hobos

RPGs continue on. I’m still running two – A custom Torg Eternity campaign and Tomb of Annihilation in D&D 5th – but back up to playing two – Toby’s 3.5ed World’s Largest Dungeon campaign that I’ve been in for … maybe four years? and has been going on for a couple of years before that, and Ian’s new Enlightenment Gothic 5th ed game, designed to be the kind of world that all the old Hammer Horror movies could all take place in.

In the latter I’ve rolled up an Artificer who – in this low-magic system – creates little clockwork creatures that have the effect of spells. So a copper spider who sews your wounds up, a clockwork bunny which detects magic. I’m really enjoying the adorable body-horror images of it all, as well as the system in general.

Tomb of Annihilation is meandering through the final act (with no character deaths! I’m disappointed in myself) so I’m kind of wondering what to run in its stead. There’s a queue of games I’d like to run, and new ones get added and merged every so often. I think New Verticals – Cyberpunk dystopias in the Animal Crossing universe – is edging out in front right now. But time is a fickle something or other, and the road ahead is long.

Tyranny of the Televisual

This is the end of a week off. I intended to spend it doing nothing much – not that there’s much choice at the moment – and catching up on TV. I don’t watch a lot of shows, but I’ve seriously fallen behind (like, I’ve not even started S2 of Westworld or Legion, I really want to get back into Preacher) and I keep finding new things I want to watch (Killjoys is great, and the Clone Wars series is too). Then the voice in my head says “You should rewatch Star Trek” and suddenly 22 days of television appear on my queue.

Oh well, it’s not like I’m going to be down the pub, I suppose.


Where I’m At


I’m still working for Pernod Ricard (Who make Jameson, Absolut, The Glenlivet, Jacob’s Creek and other alcohols you may be aware of) as lead DevOps for our public facing websites for European based-brands. Except the French ones. I’m heading into having held a full-time permanent job for two whole years for the first time since I left Evolving Media in 2006, it’s a wild ride.

There’s not much exciting to post about from a tech angle, really. We’re hosting across AWS & Azure on a fairly traditional multi-site tenancy arrangement with some stuff going through serverless services. When exciting things happen, it’s generally stuff that shouldn’t really be made public. The thing taking up most of my time is hosting marketing sites for visibility in China, which is a lot of voodoo.

I’m doing a lot of tabletop gaming at the moment. I’m running D&D 5th Ed for the first time with a run of Tomb of Annihilation – a homage to the classic Tomb of Horrors – and also a rebooted campaign of Torg Eternity, which is heading out of the tutorial sections into actual story. With any luck I’ll get around to writing that up.

This year I’ve also been running more things. An attempt at adding a new game to play – Death Unto Darkness – has resulted in becoming part of the ref team for that, as well as for Carcosa Dreams’ new Alba setting, and I continue to be part of Diaspora and Of Jacks & Queens. This has resulted in being a little over-commited, so I may need to take a look at where I focus my energies next year – I have a run of 3 events in 4 weeks in November, which is likely to wipe me out a bit.

Part of that is launching a new initiative for managing the admin of LARP events called Ludoistic, which becomes an entity with a bank account and insurance to act as an umbrella for events. Again, I intend to write up separate articles on this too.

Plus, more computer gaming. I’ve recently been on two mutually exclusive kicks, looking into recent releases in the classic LucasArts/Sierra point-and-click adventure, as well as picking up PlaystationVR for the other end of the graphical experience.

But I’m alive, I’m doing a lot better than I have been for a while, and I apparently still exist.

Plus, we dogsat my parent’s Bearded Collie last week, and that was lovely too.



They tell many tales of this green and eerie land.
They say that the gods lay beneath us,
That the spirits lay around us,
That the power flows through us,
and to us,
and from.
They say monsters come from the sea, of teeth and terror.
They say a lot of things about Alba.
What will they say about you?
Come and find out.

Alba is a new game of heroic fantasy from Cacosa Dreams – Helly & Rob formally of Broken Dreams and Ian & Anthony Andrews of Carosa, and also me.

It’s a game of stories and legends, it isn’t Odyssey, and it’ll start with five regional events to be announced shortly. We’re not looking for crew yet, but keep an eye on the Cacosa Dreams FB page, and the Alba Interest group, and we’ll talk more soon.

It’s going to be legendary.


The Missing Case Of Fallouts 5-75

Thanks to the good graces of Leigh, I got a beta code for Fallout 76 just in time for the last scheduled betas this weekend. You can see my full stream on twitch for a while, but in summary:

It’s Fallout, mostly. The lack of NPCs at all is a bit jarring, but lampshaded in the fiction, and it’s a bit strange to see other players bounding around the landscape. Also the game defaults to auto-local-audio, so often you can hear the typing of some far off player before you hear their mum calling them for pizza. This effect stretches really far, which means I heard – and was heard by – another person streaming, which was a weird experience.

The opening was a bit of a let down, railroaded, and with few interactive elements (and, crucially, items that you couldn’t interact with in your room but were the same model as you were supposed to pick up later) but once you get out into the wide world everything is open to you. Though I’d recommend following the first few, because otherwise the lack of weaponry is going to spoil your day. But after that it seems very fallout.

Also, there are the usual fun bugs.

So yeah, good for now, you can watch me play more tomorrow on Twitch, if you like.


Hardware Issue

So, I am a professional system administrator. It says it on my business cards and everything. Every couple of months, when I have to explain to the receptionist at the London office that yes, I do work here, and so yes, I should be allowed in. Yes, even though I mostly work from home. I do so by them asking what my job title is, and saying it’s System Administrator. (My email signature doesn’t say System Administrator, it says Lead DevOps Engineer (MIS), but that is a factor of the intersection between global organisation pay grades and job roles in modern tech, and it’s not the subject of this article. Except this subparagraph, obviously).

But all this should be taken with the understanding that my job is to teach servers how to teach other servers how to server, basically.

Last month, the power supply in my gaming PC, Graupel, started making a funny whirring noise. It was out of warranty, but I threw Corsair (who made it) an email asking if this was a known problem, and they sent me a new one, because they are awesome.

When the new one was installed, the CPU started reaching kettle-esque temperatures, and the CPU cooler was making noises like a distressed jet engine. I’ve never really trusted the CPU cooler – it’s an enclosed water cooling system and I fear it – so I got a decent heat sink and everything has been okay since. This week was payday, so I decided to make an upgrade.

My gaming PC has been running out of disk space on the main drive for a little while. It’s got a 256gb SSD, and you’d think that would be enough, but once you have an SSD, and you know how much faster things run if they’re on the SSD, there’s a tendency to put things on it. And while Windows is huge now, and Office is even more stupidly disk space heavy, it’s the games that take it up. (My first hard drive for the Amiga 600 was second hand from my dad’s old laptop. It was SIXTY MEGABYTES. It held DOZENS of games. I would need over EIGHT HUNDRED of those drives to hold a 50Gb World of Warcraft install).

Also, I want an SSD for a different server, so I bought a new 500Gb SSD (for around £80), plugged it in with a USB SATA enclosure, and used some cloning software to exactly clone the old 256Gb drive to the 512Gb one. Took about an hour. Turned off the machine, and went to play Spiderman on the PS4 for a bit.

Later that evening, I decided I needed to check on my Warcrack dailies, and dabble a bit in the new Bard’s Tale game, but realised I’d left this job semi-arsed. So I swapped the drives over and booted the computer back up again.

BIOS error. No bootable drives. Bugger, must have screwed up the cloning.

So I swapped the drives back again.

At which point, Reader, I discovered that I had not screwed up the cloning, for the old hard drive, being a perfect clone of the new one, failed to boot also.

Fortunately, I have a solution to this problem. I have created a Windows 10 USB Recovery Drive, which is Custom Built to Save The Day when the slings and arrows of outrageous fortune reign pointedly and with carefully carved malice on my parade. I created this on a spare USB stick, and placed it in a safe location for just such an occasion as this. 

And one day, I will find it again, but that day isn’t this one.

So after mucking around on a Linux boot drive that I *could* find, I discovered that it wasn’t – as I’d automatically assumed – the MBR having gone weird (Honestly this was a surprise. It’s right up there with “Is SELinux enabled” and “Has SystemD corrupted it?” in my system debugging steps). So I downloaded a Windows 10 ISO (from Microsoft’s own site, because modern advancements are occasionally good) and burned it over the Linux boot disk in some act of GNUTreachery.

The Windows recovery system has been good to me in the past. It has detected startup failures caused by broken drivers, it has fixed the (Fucking) Master Boot Record, it has even rolled back bad updates on occasion. On this one, however, it was as much use as a chocolate heatsink. It could not fix the problem.

And so, at 10pm on an otherwise busy Thursday, I found myself reinstalling Windows. Now, I have a shaky history with the Windows setup system at the best of times, and 10pm on a Thursday isn’t one, but even I was surprised to see in the drives list not one, but two 500Mb SSDs. Identical in form and function, save one was by Seagate, and the other by Crucial. At some point when my last media centre had failed, I had transplanted the drive into my gaming PC and then… forgotten about it.


So this evening I have spent mostly setting up a clean Windows install, in order to fix a drive issue caused by an upgrade that I didn’t even nearly need to do.

How was your evening?


The unrelenting tyranny of always being there

Last week, my computer stopped working. After a few months of threats, the fan on the PSU got to the point where I replaced it (Corsair let me RMA it, even though it’s out of warranty) and when I replaced it the water cooler on the CPU started buzzing like an angry beehive and the CPU temperature climbed into values better associated with tea than electronics. 

After ordering a new cooling unit and some thermal paste to attach it to, I realised I was out of cleaning alcohol to remove the old thermal paste first, and so – after some brief googling to make sure it wasn’t a _really_ dumb idea, got to work with some cotton swabs and a small bottle of vodka.

I’m a professional server manager, really I am.

Worked like a charm, the thermal paste attached, the new heatsink went on, the machine’s running quietly again, and no longer can I cook very small bits of bacon on the tiny electrified rock at the heart of one of my hobbies.

That hobby is computer gaming. I’ve been playing a lot of Warcraft lately, especially with the new expansion having come out. I’m still missing a lot of the cool-factor from the end of the last expansion, but I’m gearing up for the brand new raid content with the aim of this being the first expansion I can track in real time, rather than catch up with later on.

Also there’s Destiny 2, which I’m enjoying a lot, and Two Point Hospital, which is a “Spiritual Sequel” to Theme Hospital. It is, in fact, more of an updated remake with the serial numbers filed off, but to be honest that’s fine by me. Lots of nostalgia there.

But mostly, last week I quit Facebook.

There are a few reasons for it, mostly to do with a building dependance – I like having my friends in my pocket, but the habit of checking in so often was bad for my ability to do other things, and shovelling text into the maw of it was getting to be an over-reliance. For various reasons, my inability to stay away plus a few things that were going on left me feeling like I was constantly living under a dark cloud. This built up until I had a… somewhat spectacular failure of democracy and grace, at which point, hating myself a lot, I deleted the main & messenger apps from my phone and the shortcuts from Chrome, installed a thing that blocks the site on my primary browser profiles, and went away.

Since then the dark cloud has lifted quite a bit. I’ve not been able to close or suspend my account – I’m admin for some pages and apps, and you can’t do it until you’ve passed them off – and while I’ve been feeling a bit disconnected in general, enough people have used other methods to contact me that I’ve generally been fine. I went in today to check for messages and see if anything massive had gone down, and I might try to keep to that weekly for a bit.

Plus, I’m a little more likely to update here, I suppose.


Streaming Secret World Legends: Rise of the Morninglight – Part 1

Continuing the streaming thing, here’s the recording of the stream of Secret World Legends I did last night of the start of the recent content update. Maybe with some kind of prewarning I might be able to get more than two viewers of five minutes each…


The good kind of 3AM

It creeps through the crawly cracks of 3AM. That weird dimension. There are thoughts that can only hatch in the human skull at 3AM. It is always 3AM somewhere. It is happening right now. [SWL, Filth]

There are several good forms of 3am.

There’s the 3am where you’re getting home, tired but still riding the joy of a good night out with friends new and old. Where the last taxi, or the last night bus, has dropped you off and now you just need to walk a short distance to where home is, where bed is, so your brain can turn your day into memories.

There’s the 3am when you’re still bathed in LED monitor-glow, be it from a game that didn’t let you go, a story that needs to be told, or a coding project that’s just about working. As you surface from the depths of whatever zone you’ve submerged yourself in, you realise that you are still going to need sleep.

There’s the 3am that starts a holiday, where the taxi to the airport will be here in an hour and you’ve just got to shower and dress, put your house in order so that the future post-holiday version of you will come home not hating you. Check the windows, check the gas, and leave everything for a couple of weeks.

There are 3am conversations, where the shine of a new relationship – friend or more – is slowly sanded down to reveal the dreams and hopes you share or oppose, where the last glasses of wine stand a third remaining, forgotten as the conversation goes deeper.

And then there’s the 3am dream, from which you wake immediately and full of adrenaline at a threat half remembered, but deep embedded. That has stirred the back darkness of your mind, and now the tide of worries and bad memories return.

This isn’t the good kind of 3am.


VLog: Nineworlds 2017


Alexa integration with Smarter’s Wifi Kettle

I bought a wifi enabled kettle in 2014. It works very well as a kettle (It’s fairly fast, you can specify a range of temperatures, it’s easy to clean and hasn’t fallen apart yet) and less well as a wifi kettle (It doesn’t pick up the wifi after an outage sometimes, the app frequently loses track of which IP address is on).

In 2015, I built Retort, a python-based web-based interface to my kettle. The kettle itself is fairly old-school in its networking, binary packets over sockets, no concept of Zeroconf or anything, so the app works by throwing packets at everything on the network and then locking on to anything that claims to be a kettle. This is the kind of thing that gives the IoT a bad name, to be honest, but it only runs on my local server, and internet access is protected by a basic auth over SSL system. Retort has JS based front-end that talks to a REST-based API.

In 2016, I got an Echo Dot, and in the gap between Christmas and NY, investigated coding up an Alexa Skill to drive my kettle. This worked up to a point. I used the generic Skill system because it didn’t map to any of the SmartHome devices Amazon support (Lights, Heating), plus SmartHome devices require using AWS Lambda functions and logging in with OAuth, all of which is nuclear-level overkill for being able to turn on my kettle from the bed.

The problems with this were various. Mostly, things like the clunky “Tell the kettle to start”, because Alexa assumes anything along the lines of “Put the X on” or “Turn on the X” is a smarthome request. Temperature changes also didn’t work for the same reason.

Today, then, I decided to look in to shifting it to a SmartHome design. It still doesn’t fit as a light, but it does model quite well as a Thermostat, in the end. I spent a few minutes putting together a noddy OAuth provider hard-coded to me, and setting up a Lambda function not far from the amazon examples. Error support’s a bit crap – there are only a few errors you can reply with, and it looks like the custom error string is entirely ignored, but now “Turn the kettle on” works from the bedroom, and what more could I ask for?

I mean, I could ask for “not committing the Lambda function with my password in it”, so I changed the password and then did that.