This week has felt a little like purgatory or limbo. Not bad, necessarily, but just…a lot of waiting. A lot of not doing very much but expecting something to happen. Nonetheless, bits of things have happened.
Distributed systems are hard. Really hard. I’m currently right in the depths of a couple of related problems to do with a distributed system I work on. A distributed system is like – it’s like a factory. A factory that operates 24 hours a day. There’s a conveyor belt that snakes around this gigantic warehouse and various things that squish, reform, add to, subtract from, and generally mutate items on the conveyor belt.
So, question. Suppose something in the inputs changes. When do you notice? What should you do?
Suppose your first machine checks the inputs are valid. You make, I don’t know, fruit-flavoured tonics. You get a bunch of fruits coming in, and a machine that checks they’re Good Fruit. I don’t know what the metric is. Acts of service? Polite to their elders? Anyway, my point is, you get your fruits from a range of suppliers who are always great.
Except one day, the supplier who normally sends you grapes sends you gooseberries, because he got bought out by a conglomerate that reckons they’re about the same and you’ll never notice. Now you’ve got gooseberries in your fruit mix.
So you’ve got to update the machine at the front end to reject not just Bad Fruit, but also Unapproved Fruit. But at the same time, the conveyor belt is taking the gooseberries off. They’re getting pulped. They’re being mixed with the others! This is a disaster. The whole batch is ruined.
Or, worse, a machine along the way that expected grapes has received gooseberries, and has done the only sensible thing and exploded. That’s thrown a fuse, and now nothing works any more. Should you be fixing up that machine to reject any non-grape fruit now? That’s a lot of extra cost, and for what?
Alright, suppose you can get ahead of it. Now you’ve got to reprogram your label-printing machine to provide a “now with gooseberry!” label to this batch, except it’ll only be this once, so maybe you can do it by hand? Except you’ve forgotten that the conveyor splits and there are three other places you need to update it…
Distributed systems is teaching me a lot about factories, so two things:
- I’m going to play a little more factorio, in the hope that factories can teach me more about my code
- innocent, y’all can hire me whenever you want
We had a little day out today, Saturday. The weather continues clement, and I continue to enjoy Dracula Daily – a genuinely new and pleasurable way to re-read the novel. We went to the Grant Zoology Museum, home of the creepiest 3-D jigsaw in the world: 171 mouse skeletons. Just in little – in little cases. Tiniest bones you’ve ever seen. A giant, transparent, highly-exclusive ossuary. There’s also an elephant heart. A child said, with scorn, “But it’s plastic“, as if the material was the only interesting thing about a heart that in every aorta, every chamber, is the twin of yours and as big as your entire torso. You see this? It’s like yours. If this creature was the same size as you you could swap. That absurd. That’s fucking ridiculous. Look at this organ! Look at this skeleton! So what if it’s made of plaster! It’s not real, but it’s sure as shit true. This ape has thumbs! This whale has a wrist! Look! Look!
Anyway. We went for a stroll around and about. I recommend Caffe Tropea in Russel Square Gardens, which does a superb line in olive oil soaked focaccia, affogoto with any flavour gelato you prefer, and an arancino the weight of a newborn. A delight. We got ourselves turned around and meandered for a while around the back of UCL, the British Museum, and that lovely little area of Bloomsbury. We came across a door marked “SECURITY: NO UNAUTHORISED ENTRY” that had been jammed open with a “Wet floor” sign, presumably because it was sweltering in there. We reckon so because we could see camera feeds, and between the screens and computers running them there’s no doubt it was getting toasty in there. It was a perfect tableau: a health and safety warning sign underfoot where it was a trip hazard, holding open a door that should have been securely closed at all times.
This is a good a time as any to remind you (as if you need reminding, dear reader!) that security is a socio-technical system; that humans will ignore, get around, or deactivate any protocols or control that get in the way of them doing their job effectively (or, sometimes, in a way that’s not going to get them fired).
John and I are working on getting mentor-matcher ready for demo-ing. If you’re a buyer/tech adopter, what do you need to see in a demo? Tell me on twitter or leave a comment below. Or grab the code, run it locally, and tell me what you think.