Americans often ask what our relationship is with the Queen. I thought I’d upload my most recent 1:1 so you could see how the regular yearly 1:1 progress chats go.
As a Brit who does software engineering alongside a team from all over the rest of the world… I wish I’d thought of making this video first.
As always seems to happen when I move house, a piece of computer hardware broke for me during my recent house move. It’s always
exactly one piece of hardware, like it’s a symbolic recognition by the universe that being lugged around, rattling around and butting up against one another, is not the natural
state of desktop computers. Nor is it a comfortable journey for the hoarder-variety of geek nervously sitting in front of them, tentatively turning their overloaded vehicle around each
and every corner. UserFriendly said it right in this comic from 2003.
This time around, it was one of the hard drives in Renegade, my primary Windows-running desktop, that failed. (At least I didn’t break
myself, this time.)
Fortunately, it failed semi-gracefully: the S.M.A.R.T. alarm went off about a week before it actually started causing real
problems, giving me at least a little time to prepare, and – better yet – the drive was part of a four-drive RAID 10 hot-swappable array, which means that every
single byte of data on that drive was already duplicated to a second drive.
Incidentally, this configuration may have indirectly contributed to its death: before I built Fox, our new household NAS, I used Renegade for many of the same purposes, but WD Blues are not really a “server grade” hard
drive and this one and its siblings will have seen more and heavier use than they might have expected over the last few years. (Fox, you’ll be glad to hear, uses much better-rated
drives for her arrays.)
So no data was lost, but my array was degraded. I could have simply repaired it and carried on by adding a replacement similarly-sized hard drive, but my needs have changed now that Fox
is on the scene, so instead I decided to downgrade to a simpler two-disk RAID 1 array for important data and an
“at-risk” unmirrored drive for other data. This retains the performance of the previous array at the expense of a reduction in redundancy (compared to, say, a three-disk RAID 5 array which would have retained redundancy at the expense of performance). As I said: my needs have changed.
Fixing Things… Fast!
In any case, the change in needs (plus the fact that nobody wants watch an array rebuild in a different configuration on a drive with system software installed!) justified a
reformat-and-reinstall, which leads to the point of this article: how I optimised my reformat-and-reinstall using Chocolatey.
Chocolatey is a package manager for Windows: think like apt for
Debian-like *nices (you know I do!) or Homebrew for MacOS. For previous Windows system
rebuilds I’ve enjoyed the simplicity of Ninite, which will build you a one-click installer for your choice of many of your favourite tools, so you can
get up-and-running faster. But Chocolatey’s package database is much more expansive and includes bonus switches for specifying particular versions of applications, so it’s a clear
winner in my mind.
So I made up a Windows installation pendrive and added to it a “script” of things to do to get Renegade back into full working order. You can read the full script here, but the essence of it was:
Reconfigure the RAID array, reformat, reinstall Windows, and create an account.
Configuration (e.g. set up my unusual keyboard mappings, register software, set up remote connections and backups, etc.).
By scripting virtually all of the above I was able to rearrange hard drives in and then completely reimage a (complex) working Windows machine with well under an hour of downtime; I can
thoroughly recommend Chocolatey next time you have to set up a new Windows PC (or just to expand what’s installed on your existing one). There’s a GUI if you’re not a fan of the command line, of course.
{FTF} at 1.55am.
Full log to follow shortly.
344 miles & safely home at 3am.
Long ol’ day!
Update now I’m awake.
I spotted this cache while on a little down-time in south Wales, where I’d gone to help my editor move out of his office. I was considering my caching options (this was before I
realised it’d be 11pm before I went, not 5pm) when I spotted this outside Oxford. Well, my route would take me from Swindon to Aylesbury via the area, so it was perfect. I then
spotted the lack of logs, and the published date and the dye was cast!
Spool forward, past overpriced petrol and a total lack of food since 8am bar a discounted Service Station ToffeeCrisp, and I pull up at the southern car parking spot. I leave the
car somewhat nervously (partly because if security pop by, I’ve got a hell of a story about what it’s full to the gunnels with. Full to the point I had to open the sunroof blind
to get the final box in!) at 1.35am and had done the necessary (while filming some non-spoiler time-lapse footage for a future GIFF movie project) 20 mins later. I’d walked the
full circuit to odd noises coming from the pond and waypointed the outlier to give me a reference. 44m, if you’re wondering, at a bearing of none-of-your-business degrees.
After collecting my camera up I remembered to also mark the notice board on my phone (important!) to give me my clock-face orientation, as I couldn’t easily see it in relation to
the outlier in the dark. A few stars out, but they didn’t help much.
On the drive home I saw 5 foxes, including a rare pair sighting. I also had a deer with small antlers run in front of the car (not across the road, along it, zig-zagging) for ages
on a very minor road with ample exits it could have taken but chose not to. Eventually I lowered a window and shouted, “Oi, Bambi. I shot your mum!” and that seemed to do
it. It vanished into the bushes as I got along side of him.
Anyway, an atmospheric time of ‘day’ to visit GZ and I’ll have to come back in daylight as I’d no idea this was here and really enjoyed the experience. Weird and a bit spooky
though it was.
TN:LN:Virt-TFTVC! A FP for the experience and the answers have been sent by Messenger. Thank you Dan Q! I’ll add a pic shortly…
I created a new geocache lately, a virtual cache under the Geocaching.com Virtual Rewards 2.0 scheme. Logging it requires visiting the site of the Devil’s Quoits, a prehistoric monument (well, by this point it’s mostly a replica) which, following my recent house move, is conveniently close by. This is the first finders’ log against the new cache, and it’s pretty epic: Simply Paul, who from the sound of things didn’t expect to be passing by quite so
late-on, visited the GZ at almost 2am, but that didn’t stop him from stomping around and counting stones in the dark. Cleverly, he waypointed the outlier stone that forms part of the
virtual challenge so that he didn’t need to sight it from the centre of the henge, which is probably for the best because I can only assume that he wouldn’t have been able to see it
once inside the circle anyway!
For the first episode of the Human Tapestry, I talked to Dan, a bisexual man who lives in Oxford, England, with his partner and her husband in what he describes as a “polyamorous
V-shaped thingy”. Listen as we talk about relationships, identities, the “bi-cycle”, and various forms of vegetarianism.
…
Fellow Automattician Mike has just launched his new podcast, exploring the diversity of human experience of relationships, sexuality, attraction, identity, gender, and all that jazz.
Earlier this year, I volunteered myself as an interviewee, but I had no idea that I’d feature in the opening episode! If hearing people in your ears is something you like to
do, and you’re interested in my journey so-far of polyamory and bisexuality, have a listen. And if you’re not: it might still be worth bookmarking the show for a listen later on – it
could be an interesting ride.
Possibly SFW, depending on your work. Specific warnings:
Some swearing, including use of a homophobic slur (while describing the experience of being a victim of homophobia)
Frank discussion of my relationship history (although with greater anonymity than appears elsewhere on this blog)
Annoying squeaky chair sounds in the background (I’ve replaced that chair, now)
Skimming-over-the-details of specific events, resulting in an incomplete picture (with apologies to anybody misrepresented as a result)
Caveats aside, I think it came out moderately well; Mike’s an experienced interviewer with a good focus on potentially interesting details. He’s also looking for more guests, if you’d
like to join him. He says it best, perhaps, with his very broad description of what the show’s about:
If you have a gender, have attractions (or non-attractions) to certain humans (or all humans), or have certain practices (or non-practices) in the bedroom (or elsewhere), we’d love to
talk to you!
About three months ago, my friend Claire, in a WhatsApp group we both frequent, shared a brainteaser:
The puzzle was to be interpreted as follows: you have a three-digit combination lock with numbers 0-9; so 1,000 possible combinations in total. Bulls and Cows-style, a series of clues indicate how “close” each of several pre-established “guesses” are. In “bulls and
cows” nomenclature, a “bull” is a correctly-guessed digit in the correct location and a “cow” is a correctly-guessed digit in the wrong location, so the puzzle’s clues are:
682 – one bull
614 – one cow
206 – two cows
738 – no bulls, no cows
380 – one cow
By the time I’d solved her puzzle the conventional way I was already interested in the possibility of implementing a general-case computerised solver for this kind of puzzle, so I did.
My solver uses a simple “brute force” technique, as follows:
Put all possible combinations into a search space.
For each clue, remove from the search space all invalid combinations.
Whatever combination is left is the correct answer.
Visualising the solver as a series of bisections of a search space got me thinking about something else: wouldn’t this be a perfectly reasonable way to programatically generate
puzzles of this type, too? Something like this:
Put all possible combinations into a search space.
Randomly generate a clue such that the search space is bisected (within given parameters to ensure that neither too many nor too few clues are needed)
Repeat until only one combination is left
Interestingly, this approach is almost the opposite of what a human would probably do. A human, tasked with creating a puzzle of this sort, would probably choose the answer
first and then come up with clues that describe it. Instead, though, my solution would come up with clues, apply them, and then see what’s left-over at the end.
I expanded my generator to go beyond simple bulls-or-cows clues: it’s also capable of generating clues that make reference to the balance of odd and even digits (in a numeric lock), the
number of different digits used in the combination, the sum of the digits of the combination, and whether or not the correct combination “ascends” or “descends”. I’ve ideas for
other possible clue types too, which could be valuable to make even tougher combination locks: e.g. specifying how many numbers in the combination are adjacent to a consecutive number,
specifying the types of number that the sum of the digits adds to (e.g. “the sum of the digits is a prime number”) and so on.
Next up, I wanted to make a based interface so that people could have a go at the puzzles in their web browser, track their progress through the levels, get a “score” based on the
number and difficulty of the locks that they’d cracked (so they can compare it to their friends), and save their progress to carry on next time.
I implemented in pure vanilla HTML, CSS, SVG and JS, with no dependencies. Compressed, it delivers to your browser and is ready-to-play in a little
under 10kB, most of which is the puzzles themselves (which are pregenerated and stored in a JSON file). Naturally, it lends itself well to running offline, so it’s PWA-enhanced with a
service worker so it can be “installed” onto your device, too, and it’ll check for bonus puzzles and other updates periodically.
Honestly, the hardest bit of implementing the frontend was the “spinnable” digits: depending on your browser, these are an endless-scrolling <ul> implemented mostly in
CSS and with snap points set, and then some JS to work out “what you meant” based on
where you span to. Which feels like the right way to implement such a thing, but was a lot more work than putting together my own control, not least because of browser
inconsistencies in the implementation of snap points.
Anyway: you should go and play the game, now, and let me know what you think. Is it worth expanding and improving? Should I leave it as it is? I’m
open to ideas (and if you don’t like that I’m not implementing your suggestions, you can always fork a copy of the code and change
it yourself)!
FTF! (Been a while since I got one of those!)
A quick park-and-grab while on the way back from the school run which, following my house move the other week, goes right past the end of
this road. Not a bad first hide, and certainly a cool spot. SL, TNLN,
TFTC!
A second quick geocache find while the 6 year-old and I took a stroll around the village, which – as of yesterday – became our home! Nice to see the lights here that’ll help protect her
during our “school runs”!
We’ve only got a couple of days left before we move to our new house. In order that she and her little brother might better remember our
old house, I encouraged our 6 year-old to record a video tour.
Seven years ago, I wrote a six-part blog series (1, 2, 3, 4, 5, 6) about our Ruth, JTA and I’s experience of buying our first house. Now, though, we’re moving again, and it’s brought up all the same kinds of challenges and
stresses as last time, plus a whole lot of bonus ones to boot.
In particular, new challenges this time around have included:
As owners, rather than renters, we’ve had both directions on the ladder to deal with. Not only did we have to find somewhere to move to that we can afford but we needed to find
somebody who’d buy our current house (for enough money that we can afford the new place).
The first letting agents we appointed were pretty useless, somehow managing to get us no viewings whatsoever. Incidentally their local branch
got closed soon after we ditched them and the last time I checked, the building was still up for sale: it doesn’t bode well for them that they can’t even sell their own
building, does it?
The replacement letting agents (who sold us this house in the first place) were much better, but it still took a long time before we started
getting offers we could act on.
We finally selected some buyers, accepting a lower offer because they were cash buyers and it would allow us to act quickly on the property we wanted to buy, only for the
coronavirus lockdown to completely scupper our plans of a speedy move. And make any move a logistical nightmare.
Plus: we’re now doing this with lots more stuff (this won’t be a “rally some friends and rent a van” job like
last time!), with two kids (who’re under our feet a lot on account of the lockdown), and so on.
But it’s finally all coming together. We’ve got a house full of boxes, mind, and we can’t find anything, and somehow it still doesn’t feel like we’re prepared for when the
removals lorry comes later this week. But we’re getting there. After a half-hour period between handing over the keys to the old place and picking up the keys to the new place (during
which I guess we’ll technically be very-briefly homeless) we’ll this weekend be resident in our new home.
Our new house will:
Be out in the fabulous West Oxfordshire countryside.
Have sufficient rooms to retain an office and a “spare” bedroom while still giving the kids each their own bedroom.
Boast a fabulously-sized garden (we might have already promised the kids a climbing frame).
Have an incredible amount of storage space plus the potential for further expansion/conversion should the need ever arise. (On our second-to-last visit to the place with discovered
an entire room, albeit an unfinished one, that we hadn’t known about before!)
Get ludicrously fast Internet access.
We lose some convenient public transport links, but you can’t have everything. And with me working from home all the time, Ruth –
like many software geeks – likely working from home for the foreseeable future (except when she cycles into work), and JTA working from
home for now but probably returning to what was always a driving commute “down the line”, those links aren’t as essential to us as they once were.
Sure: we’re going to be paying for it for the rest of our lives. But right now, at least, it feels like what we’re buying is a house we could well live in for the rest of our
lives, too.
I don’t intend to be racist, but like I said, intentions aren’t really what matter. Outcomes are.
Note, for example, the cliché of the gormless close-minded goon who begins a sentence with “I’m not racist, but…” before going on to say something clearly racist. It’s as though the
racism could be defanged by disavowing bad intent.
…
Yes indeed.
To claim you’re free of prejudice almost certainly means that you’re not looking hard enough. The aim of the exercise is, as always, to keep improving yourself: find where you have (or
are) a problem, get better, repeat. We’re not one of us perfect, but we can all strive to be better tomorrow than we are today.
I managed to crack this on my second attempt, but then: I did play an ungodly amount of Kerbal Space Program a few years back. I guess
this means I’m now qualified to be an astronaut, right? I’d better update my CV…
My partner @scatmandan just completed his Masters degree. His sister @bornvulcan sent him a
stethoscope as a congratulations gift which is one of the funniest things to happen in these parts for a while.
I’m not sure my sister understands that a masters degree is not a doctorate. I don’t feel like I’m qualified to use this.
It had been a long while since our last murder mystery party: we’ve only done one or two “kit” ones since we moved in to our current
house in 2013, and we’re long-overdue a homegrown one (who can forget the joy of Murder at the Magic College?), but in
the meantime – and until I have the time and energy to write another one of my own – we thought we’d host another.
But how? Courtesy of the COVID-19 crisis and its lockdown, none of our friends could come to visit. Technology to the rescue!
I took a copy of Michael Akers‘ murder mystery party plan, Sour Grapes of Wrath, and used it as the basis for Sour Grapes, a digitally-enhanced (and generally-tweaked) version of the same story, and recruited Ruth, JTA, Jen, Matt R, Alec and Suz to perform the parts. Given that I’d had to adapt the materials
to make them suitable for our use I had to assign myself a non-suspect part and so I created police officer (investigating the murder) whose narration provided a framing device for the
scenes.
I threw together a quick Firebase backend to allow data to be synchronised across a web application, then wrote a couple of dozen lines of
Javascript to tie it together. The idea was that I’d “push” documents to each participants’ phone as they needed them, in a digital analogue of the “open envelope #3” or “turn to the
next page in your book” mechanism common in most murder mystery kits. I also reimplemented all of Akers’ artefacts, which were pretty-much text-only, as graphics, and set up a system
whereby I could give the “finder” of each clue a copy in-advance and then share it with the rest of the participants when it was appropriate, e.g. when they said, out loud “I’ve found
this newspaper clipping that seems to say…”
The party itself took place over Discord video chat, with which I’d recently had a good experience in an experimental/offshoot Abnib group (separate from our normal WhatsApp space) and
my semi-associated Dungeons & Dragons group. There were a few technical hiccups, but only what you’d expect.
The party itself rapidly descended into the usual level of chaos. Lots of blame thrown, lots of getting completely off-topic and getting distracted solving the wrong puzzles, lots of
discussion about the legitimacy of one of several red herrings, and so on. Michael Akers makes several choices in his writing that don’t appear in mine – such as not revealing the
identity of the murderer even to the murderer until the final statements – which I’m not a fan of but retained for the sake of honouring the original text, but if I were to run
a similar party again I’d adapt this, as I had a few other aspects of the setting and characters. I think it leads to a more fun game if, in the final act, the murderer knows that they
committed the crime, that all of the lies they’ve already told are part of their alibi-building, and they’re given carte blanche to lie as much as they like in an effort to
“get away with it” from then on.
Of course, Ruth felt the need to cater for the event – as she’s always done with spectacular effect at every previous murder mystery she’s hosted or we’ve collectively hosted – despite
the distributed partygoers. And so she’d arranged for a “care package” of wine and cheese to be sent to each household. The former was, as always, an excellent source of social
lubrication among people expected to start roleplaying a random character on short notice; the latter a delightful source of snacking as we all enjoyed the closest thing we’ll get to a
“night out” in many months.
This was highly experimental, and there are lessons-for-myself I’d take away from it:
If you’re expecting people to use their mobiles, remember to test thoroughly on mobiles. You’d think I’d know this, by now. It’s only, like, my job.
When delivering clues and things digitally, keep everything in one place. Switching back and forth between the timeline that supports your alibi and the new
information you’ve just learned is immersion-breaking. Better yet, look into ways to deliver physical “feelies” to people if it’s things that don’t need sharing, and consider ways to
put shared clues up on everybody’s “big screen”.
Find time to write more murder mysteries. They’re much better than kit-style ones; I’ve got a system and it works. I really shout get around to writing up
how I make them, some day; I think there’s lessons there for other people who want to make their own, too.
Meanwhile: if you want to see some moments from Sour Grapes, there’s a mini YouTube
playlist I might get around to adding to at some point. Here’s a starter if you’re interested in what we got up to (with apologies for the audio echo, which was caused by a problem
with the recording software):