Posts filed under “Tech”

The desk chair post, part 2

This was my desk chair.

I wrote about it before.

When I wrote about it before, I mentioned my concern that the much sturdier castors I fitted might end up breaking the no-metal-in-particular that cheap desk chairs swivel bases are made from. It broke a few months later.

Rather than fish another desk chair from a skip, I bought an entire swivel base assembly from Amazon for about £80. It turns out that not just the castors, but these entire assemblies are largely interchangeable between desk chairs. This thought had not occurred to me before! So, I did not have to "un-weld" the baseplate from the subframe as I had every previous time a swivel base had exploded on me. Just plop the old base plate and subframe on top of this...

...and my desk chair was fixed again. Simple!!

But, while I'm there...

Previously, I wrote:

I showed a photo of it to someone earlier today and they said "it needs arm rests". It doesn't need arm rests, but the fact someone thinks it needs arm rests means that it isn't the unquestioned best desk chair in the world.

It still did not have arm rests, so this time around I decided it was going to have arm rests. I had a pair of arm rests, salvaged from the previous donor chair.

Let's make some brackets! This time I bought (rather than salvaged) some steel for the purpose, for about £20. I still have some left over.

That turned into some smaller lengths of steel...

...which, via some dubious MIG welding and Jenolite satin black paint, turned into two slightly-wonky but almost presentable brackets for the arm rests.

Easy! (Just kidding, that took forever, because I am not all that good at this.)

As everything was dismantled (so that I could make a means to fix these brackets to the subframe), I figured I would give the subframe a cleanup and a coat of paint. It looked like this, resplendent in its original brown paint and marker pen assembly-guide scribbles from the first time I built it.

This subframe is an adapter plate between the car seat and the desk chair swivel base. It is almost always out of sight, so it didn't matter what it looked like. Still, I would never tidy it up it if I didn't do it now (the proof of this is that it has been unpainted for over a decade). This should have been just a coat of paint, but while I'm there...

...I was never very happy with those unfinished ends, either. They've never bitten me, and I've never seen them so I didn't mind them being ugly, but I always had the thought in my mind that they needed to be capped with something. This was as good a time as any to do it. So, some offcuts, some more dubious MIG welding, and some over-aggressive linishing to make the MIG welding look less dubious...

...and they look a bit better, if you don't really look at them. Which I won't! Because I'm sitting above them.

Still, the subframe that I never see now looks a lot more presentable. And when everything is bolted together... has arm rests! Which was far more effort than it was actually worth, given that it never really needed arm rests. Especially when I came to use it and realised when setting the height for my arm rests I hadn't considered whether that height would allow it to fit under my desk...which meant chopping about 70mm out of the brackets the day after I assembled it all. But still, arm rests! And that, if nobody issues me some other challenge that makes me over-solve another problem that doesn't exist, should make it the unquestioned best desk chair in the world.

The desk chair post

This is my desk chair.

It is a front seat from a 1990 Vauxhall Astra GTE, bolted to a subframe made from steel box section scavenged from some industrial shelving, welded to a swivel-chair base that I found in a skip. I've had some variant of it for over a decade, but I had cause to re-engineer it recently, so I am posting about it now. It's extremely comfortable! It is more supportive than any other chair I have used, including chairs that look like car seats, and including chairs that cost upwards of a grand.

There are two of these in existence! My brother was dismantling an Astra GTE that he purchased for an engine donor (MOT-failure GTEs were not worth much more than scrap weight back then, and that is a memory from the "painful to think about" department, next to the working two-door Range Rover I helped dismantle...). I got the seat for free on the condition that I made the other front seat into a desk chair for him as well. That other chair is still in use by a kid in the family as a gamer chair, and that makes me happy.

It has been rebuilt several times. This is because office swivel chairs are made of no material in particular, especially the cheap kind that gets thrown into a skip when it becomes too ugly to use. Usually this does not matter, because the sitting part of a swivel chair is also made of no material in particular, so the system in its entirety has plenty of flex. The Astra seat has a lot of extra weight, and there is no flex in the over-engineered subframe, so swivel chair bases tend to break.

This is what the subframe looks like.

It's not pretty, but you can't see it when you're sitting on it. If you look closely, you can see where I cut out a reinforcing section in the middle in the latest incarnation. This is in a probably-vain attempt to try and un-engineer a bit more rigidity out of the frame. I might try speed holes next.

I had a stroke of luck last time this broke a swivel-chair base. The base collapsed, and literally minutes later I saw my neighbour throwing a shitty-looking desk chair into a skip. I'll have some of that, thank you.

I can understand them throwing it out.

This time around, I decided to give the Astra seat a deep clean after reassembling the chair. I did not know how badly it needed one. This little thing is a game changer:

It's a brush attachment for a drill, which you can buy for about £15 on Amazon as part of a set. It demolishes baked-in cat fluff and everything else on a seat that a vacuum cleaner won't touch. I was impressed.

This is what a vacuum cleaner doesn't get out...

Everything mentioned so far, I acquired for free. This time around, I have got some improved castors for it, to replace the usual scratchy-sounding castors that you get on cheap desk chairs.

These have roller bearings, seem to be made of actual metal, and its wheels are made of a material not entirely unlike that of the small bouncy balls we had as kids that could be launched at the floor and which rebounded to the height of a four-storey building. They roll very nicely. They're also a lot stronger than flimsy desk chair castors. This isn't an unqualified good. See also what I wrote about the subframe earlier; they don't flex, which means they transfer forces elsewhere. That might cause the swivel base to break earlier than it would otherwise. We'll see!

You may have noticed that it does not have arm rests. You are not the first. I showed a photo of it to someone earlier today and they said "it needs arm rests". It doesn't need arm rests, but the fact someone thinks it needs arm rests means that it isn't the unquestioned best desk chair in the world. So maybe that is a project for another day...


The easy, snarky post would be "it's the current year and there are still systems out there that can't handle non-ASCII characters", on Twitter. Snark is boring! Pretending to be offended is sad!

Years ago, there was a blog (whose name I forgot) that documented cracks in the system like this; tiny reminders that systems that we take for granted, that we have little cause to give thought to, are oft computer systems written by humans, and humans make mistakes. I enjoy these reminders.

Conjecture: the text was originally written in some older version of Microsoft Word. Word converted the apostrophe in haven't to a "smart" quote, and that got pasted into a system that didn't understand it. Still, the system worked, I got a receipt, KFC didn't buckle under the weight of a thousand UnicodeDecodeErrors, and the world kept turning. :)

"Ain't that some bullshit", 365-to-Migadu-migration edition

TL;DR: Use imapsync with DavMail.

So my subscription for Office 365 (or whatever it's called these days) was due for renewal in January. I only ever used it for email on my domain. Given how increasingly hateful the Outlook web client has been in recent years (worst among them was when it randomly disabled the ability to send plain-text email for some time), and my general desire to move as much of my life away from software I have no control over, I decided to migrate my shit to Migadu. Partly because Migadu is kinda cheap, partly because Drew DeVault recommended them, but mostly because I really like their beautifully simple and functional website. I'm shallow!

Obviously, I didn't want to lose any of my email in this process. What should have happened is that I would enable IMAP on Office365, plug in some command line options to imapsync, and by the magic of open standards email would be moved from one place to another. Open standards are good! People who write open source software are awesome!

Of course, one half of that involved dealing with Microsoft. That and the rule of time estimates (increase the unit, halve the quantity) and the rule of everything is bullshit and never fucking works meant that I wasted more than a few hours trying to make that happen. Greetings from 3am!

The short version is if you use Office 365 in the same manner I did, which is that you were both the administrator of the domain and a user on the domain (because it was for personal email and you're the only person on the domain), nothing you do will make IMAP work for your account. Not if you navigate six levels of Enterprise-ness and a UI with decade-old branding to enable 2FA and then to enable "app passwords", not if you go disable security defaults and probably still nope if you run some PowerShell magic spells that I've seen around.

Give up trying to make IMAP work directly and use DavMail. I did!

DavMail is a proxy between Microsoft's proprietary protocols and protocols such as IMAP that the rest of the world uses. There's a package in the Ubuntu repositories called davmail, but because everything is bullshit and never fucking works the Ubuntu package is broken if you don't install the openjdk-11-jre package first (through no fault of DavMail's authors).

Anyway, once you've worked out that last bit from reading some random Debian bug report, you will want to go into DavMail's settings, under the "Main" tab, and change "Exchange Protocol" to "O365Interactive".

Then run a magic spell...

./imapsync \
  --host1 localhost \
  --port1 1143 \
  --user1 '' \
  --debugimap1 \
  --password1 'hunter2' \
  --host2 '' \
  --user2 '' \
  --password2 'hunter3'

...and DavMail will pop up a with a link to open in your browser, and that will in turn redirect to a URL that you copy-and-paste into DavMail. Some time later your mail will appear in Migadu or whatever else you decide to migrate to.

So, that was some bullshit. But it's done now! And I only have to do that once. And if I ever do have to do it again I won't waste hours of my time and hours of someone else's time trying to work out why IMAP isn't working, because, reminder, if your account is an admin account for an O365 domain it absolutely never will.

Anyway, imapsync and DavMail are good! They made me happy! I've only been dealing with mail migration bullshit for one long night, but the authors of both have been dealing with it for years. Here's a figurative toast to those fine people, and here's to many years of Migadu and me!

Self-archaeology and the Internet Movie Car Database

This was my mum's Mercedes 220. It was glorious.

She bought LRO 468L for £500 in either 1989 or 1990, because back then it was merely an old car (though cars aged much quicker 30 years ago). It was beautiful, silent, luxurious, and very wafty. I loved it, and everyone else did. She sold it a few months later for slightly more than she paid for it, because it needed welding work on the floorpan. A very young Me did not talk to her for a day after that.

It was last MOT'ed in 1990, so we can probably conclude it does not exist anymore (or, to avoid offending those of you who believe in the laws of thermodynamics, exists in an entirely different form). A W114 or W115 is still on my bucket list of cars to own. It might even be the next project I build, if my next project starts before the prices of these go through the roof.

Fast-forward just a few years. Recently, someone pointed out that if you search for a registration plate on Google Images, there's a good chance that it will find a photo of that car, because Google indexes any text it finds within an image, and may notice the text on the numberplate. Like ANPR, but for everything.

It worked on my car. Among others, it found a photo taken at the late Rockingham Motor Speedway, which my brother (the previous owner) took in 2007 back when "camera phone" still meant "thing with a dialpad", and posted on a forum in 2008.

It worked when I entered the registration of this Mercedes, too. I know the registration off by heart, because my memory is weird. I remember a Windows 95 product key that I last used in anger in 1997, and the registration of my mum's car from 31 years ago, and sometimes draw a blank when I have to enter my PIN into a cash machine.

The first result was the picture you saw at the top of this article. I uploaded that photo to Wikimedia Commons over 15 years ago, and things often spread to weird and unexpected places when you do that. (I'll tell you the story about the wall art in the bogs at Downham Market station some other time...)

The second and third images were the offspring of obsessive categorisation at scale. I would hope any petrolhead would know about the Internet Movie Car Database, wherein a (presumably vast) number of very dedicated people are aiming to identify every car in every film & television program. If your car appeared in the background of, e.g., an episode of The Bill in December 1984, then there's a good chance someone has captured and categorised it.

Well how about that!

But wait: It's brown! Or at least looks brown. Did it get a respray before my mum owned it? Or did a worn 80s VHS tape not reproduce the glorious red that it was? I won't ever know the answer to that, and I am okay with that.

The cars we knew in our youth are, or will be, almost all lost to time and entropy; only a very few are lucky enough to be recommissioned or restored. But this Mercedes was lucky to have its few seconds of fame on the small screen, and was immortalised, to some very tiny extent and entirely accidentally, by some extraordinarily committed people on the Internet. That's more than most cars will get, and that, is good enough for me.

Your deactivated Facebook account really is reactivating itself

There are a lot of posts & questions & other things in various places online wherein people are complaining about this happening to them. Usually there's someone to tell them that nope, it's something you did. I can guarantee that it is not, in fact, necessarily something you have done. Because it happened to me (which totally changed my opinion about Facebook being an awful company), and I went to specific lengths to ensure that Facebook would not reactivate my account when I deactivated it. Specifically:

  • I did not sign in from any other devices. I do not have the Facebook app on any of my phones, and never have. Only two things have accessed it: my desktop computer and my laptop. After deactivating my account, I cleared the cookies on my laptop to be sure.
  • I do not have any apps that could have reactivated it, because there are NO apps connected to my account.
  • It is entirely implausible that anyone could have logged into my account with my credentials. My password is extremely long and complex (it is "hunter2"[1]). In the unlikely event that someone guessed a 28-character password, they decided absolutely nothing with my account. But I'll reiterate, nobody guessed my password.
  • From what I have read, according to some rando on Quora, there is a "This is temporary, I will get back soon" checkbox?! Hmm... I'm not actually saying this is impossible. But when I deactivated my account I specifically checked for sneaky things like this because Facebook is an awful company staffed with terrible people, and if I trust them with anything it is that they will reliably do whatever thing gives nice values on the "Engagement" axis on a graph.

So...either Facebook does in fact randomly reactivate your account, or Facebook is doing some sneaky shit in which you have "agreed" to randomly reactivate your account. They are either betraying you, or they are using dark patterns during account deactivation such that someone who is actively looking for dark patterns is tricked into "agreeing" that they will reactivate it. Either way, it is being reactivated without your consent. Anyone that tells you otherwise is gaslighting you.

[1] Kidding.