Node Trees: A model for configuring and managing large distributed systems (by )

(FX: Flashback wibbly wobbly transition...)

So, as a teenager, I started working on ARGON, a distributed operating system. At the time, the CPU cost of encrypting traffic could be a significant matter when communicating over untrusted networks, so I'd worked out a protocol whereby network communications between clusters could negotiate to find the lowest-cost encryption scheme that both parties considered acceptable for the sensitivity of the data being transmitted: more sensitive data would require more secure protocols, which presumably excluded cheaper ones.

But I wanted to do something similar for communications within a cluster; I started with the same idea - finding the cheapest algorithm considered secure enough for the communication at hand. This could be simplified, as all nodes within a cluster share the same configuration, so both will agree on the same list of encryption systems, with the same security and costliness scores; so no negotiation is required - the sender can work out what algorithm to use, and be confident that the recipient will come to the same conclusion.

However, it pained me that highly sensitive data would be encrypted with expensive algorithms, even between machines connected by a trusted network - maybe even right next to each other, connected by a dedicated cable. I wanted a way to be able to, through configuration, tell the cluster that certain links between nodes in the cluster are trusted up to a certain level of sensitivity. Connections at that sensitivity level or below can use those links without needing encryption; anything above would use a suitably trusted algorithm.

Read more »

I miss public transport! (by )

When I lived in London, I used to commute on the London Underground and the busses. And in my bag, I always had my current reading book. And I'd sit and read for my journey, half an hour to an hour a day.

When I started working from home, I lost that; but I had to travel into London a few times a week to rotate offsite backups and things like that, so I still got a good hour and a half of reading time a week.

When I moved to Gloucestershire, I still had to go into London once a week, which provided a solid hour and a half of reading time each way plus some time on the Tube, which was excellent!

But that came to an end. When I leave the house, it's rare that I don't drive; and I detest having to manually steer a vehicle around, consuming all that energy and taking up space on the road! Whenever I can I take my bike or use public transport - but times when I'm not transporting passengers or cargo or am in a hurry are so rare. It was a rare treat when I went into town to visit the optician and I worked out it would be just as fast to go on my bike (slower moving than the car - but able to go through the centre of town rather than around, and can be chained up right by the optician rather than having to be parked further out and walking in!

As a society, we're in a vicious cycle: because most people have cars, businesses face little penalty for setting up a few large premises on cheap land outside of city centres, rather than lots of smaller ones nearer to where people live. And because businesses do that, people are pressured to have cars in order to be able to access services.

Even aside from the environmental costs of all those individual cars driving all over the place - and the direct financial costs of a significant fraction of the average person's income being spent on a vehicle, and maintaining it, and fuelling it - we have the all-too-common problem with a lot of things the ignorant call "progress": it leaves behind the people who can't take part. The young, the poor, and the sufficiently elderly can't drive cars, and so are locked out of accessing important services. And because they're the main customers for what local public transport (eg, busses) there is, that public transport is underfunded and poor.

This vicious cycle is somewhat avoided in large city centres, where road layouts laid down before the invention of the car are too hard to change now, and so public transport is the only practical option for most journeys. And it can be undone everywhere else, too, with the right incentives - the fifteen minute city concept, for instance. I'm sad people are opposing it, spreading misinformation to turn others against them - I'm not sure if that just comes from ignorant misunderstanding couple with a knee-jerk fear of change, or deliberate manipulation in order to prop up the fossil fuel industry.

I want a world where I can get to most places I need on my bike, and places further away by bus, tram, and train. Sure, there will be delivery vans, and emergency vehicles, and work vans for tradespeople who need to turn up on-site with a load of equipment; but the roads should be dominated by bikes and mobility scooters and busses (that the mobility scooters can drive onto!). I don't understand why governments want to spend so much on roads (have you ever looked at a motorway junction and thought about what it cost to build?) for people to spend so much to buy and maintain cars to drive on them, and spend so much time driving, and finding and paying for parking in parking lots that take up so much space. Public transport is cheaper and more accessible!

I want this solarpunk transport utopia not just because it's more efficient - less waste is better for the environment, and frees up resources we can use for fun things - but because it's also safer, and frees up our time to read and think and talk while on busses, trams and trains.

(Since writing the above, I had a particularly bad day visiting our eldest at University - delayed by missing a turn because I had ingrained muscle-memory telling me to drive to somewhere else, then delayed by a road closure, then delayed even more by being rear-ended when the car in front stopped suddenly to try and not miss a turning; I stopped in time by the car behind didn't... I'm now even more sick of driving than I was!)

An update on my electronics projects (by )

One of the challenges of being a massive nerd - who loves learning complicated technical skills - is that it can sometimes be hard to find new skills to learn. Thankfully, analogue electronics has provided me with a rich vein to mine; it's full of things that take some work to master, yet offer the opportunity to create interesting and useful things.

So, after the success of the Polyp Mixer (in which I learn how to use op-amps and to manage impedances within a circuit) and the trickle charger (in which I gained experience with basic power electronics), I am currently working on a... thing. I don't quite know what to call it, but I'm going with the working title of "microphone pre-amp". And my goal with this (other than to end up with a working microphone pre-amp) is to master the class A bipolar transistor amplifier.

The Goal of the Microphone Pre-Amp

So, the Polyp Mixer sits on my desk, mixing the audio output from my two PCs, and with two spare channels - one of which I intend to connect to a radio transceiver in future, the other being spare for random laptops or listening into audio circuits I'm working on (such as the microphone pre-amp, as it happens). This means I can listen to all of these devices through my nice amplifier and speakers. I can even plug headphones into the amplifier if I want to.

But, when I talk to people in video calls, I am using the nasty little microphone built into my USB webcam - and I can't feed that audio to the other computer, nor to a transceiver or anything. Rather than have a plethora of microphones for everything, I'd much rather have a single microphone that just feeds microphone-level signals to all of my devices.

So, the first goal of the pre-amp is to have a box that has a microphone in socket on the front, so I can plug in a microphone, and a bunch (let's say 4: two computers, a transceiver, and a spare, matching the mixer) of microphone-level outputs on the back to feed into my devices' microphone inputs.

However, this is complicated by the fact that different microphones produce different signal levels (of the pile I've tested, I've seen signals from 5mV to 100mV peak-to-peak). Normally I'd deal with that by adjusting "mic gain" controls on the inputs to everything, but it would be simpler if I had a "mic gain" knob on the pre-amp to adjust for different microphones, and then all the downstream devices can have their mic gains set to a constant level.

But not every device has a mic gain knob, because some things are meant to be plugged into custom-made headsets rather than arbitrary microphones. So, as well as the front-facing "mic gain" knob to adjust to different microphones, I could also do with "mic level" output knobs next to each output on the back, so each can be tweaked to read the same volume.

Also, if I switch microphones, I'd like to be able to get the level right before talking into my devices - so it would be nice to have a mute control and a level meter. I can mute the outputs, talk to see the level meter deflect, and adjust the mic gain knob until it's just hitting the maximum and not going over it. (This is why vu meters always have a green bit and a red bit; you're supposed to adjust levels until they're using the green area nicely but not going into the red area). So, I need a mute switch and a level meter.

Some microphones have a really tinny frequency response, picking up high frequencies much better than low frequencies. It would be nice (and fun!) to be able to compensate somewhat for this. I can't quite stomach building full spectrum analyser, but a classic James-Baxandall tone control circuit would be a fun addition.

Some of my microphones have a push-to-talk button; it might be nice to be able to feed that into the pre-amplifier, and have it drive the mute control. So, the mute switch really needs three settings - audio on, audio muted, and do-whatever-the-input-push-to-talk-socket-asks-for. And an LED showing the current output status, so I can tell if it's working when in external-push-to-talk mode.

A radio transceiver needs to know when I push-to-talk so it can transmit, so there also needs to be a push-to-talk output socket on the back.

Oh, and finally - I have a few headsets, with a microphone and earphones, so it would be nice if the thing also contained a headphone amplifier with a line-level input and output, so it can be connected between the mixer and my amplifier, and save me from running a long cable down from the headphone socket on the amplifier. So stick a headphone output and a headphone volume knob on the front for that, too.

At first I wanted to put a number of different sockets on the front, so I can just plug headsets directly in - an Android TRRS socket has lines for a mono microphone and stereo headphones, and the Kenwood/Baofeng headset socket has mono microphone, mono headphone, and push-to-talk. But in the end I decided it would be simpler to just have separate headphone and microphone sockets like on a PC, and a 3.5mm mono push-to-talk socket, and buy or make adapters from other standards to those three jacks. I managed to find a TRRS->dual TRS splitter on eBay, and made my own Baofeng->headset, microphone, and PTT lead (using two five-ohm resisters as a passive mixer to mix the stereo headset signal into a mono one). Having these adapters also gives me the flexibility to connect Android or radio headsets to computers, or connect a radio headset to a smartphone.

In other words, this thing has accumulated some feature creep, through a bunch of weakly interconnected features! The most questionable of these is including the headphone amplifier - but it does feel convenient to be able to plug a headset into a single box, and as the mixer is conveniently situated on my desk while the amplifier proper is a bit more of a reach away, it would be messy to be running a headphone cable extension back; headset splitter adapters only have ten centimetres or so of lead, so the microphone and headphone sockets do need to be close.

Read more »

Why do we hate? (by )

About a decade ago, I wrote a blog post about how people forget the humanity of others when they hate them. I find hate really interesting - it's not an emotion I'm particular prone to, but the world seems full of it, so it interests me. And it's usually very harmful, so I'm interested in ways to mitigate and eliminate it.

Since writing that post, I have pondered how we start to hate somebody in the first place, and I've noticed a pattern that seems to underlie a lot of hate. I've not seen it called out explicitly before, which is really interesting.

Read more »

An anecdote from my distant past: The Tale of the Half-Working Network (by )

Ok, this is an interesting tale I've retold in person a few times. So I've decided to write it up for the world to see.

The scene: My student flat, 1998. Seven of us are living there, and we're all nerds so there's lots of computers. The world of networked multi-player games is exploding, and we want to play.

So, we buy some network cards, and go to Maplin for some coax cable, BNC connectors and terminators, and start to set up a 10BASE2 LAN.

But one of the computers can't talk to the others. What's going on? Read more »

WordPress Themes

Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales
Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales