Spectre and Meltdown

You are probably aware of two high-severity bugs that have recently been made public. We want to reassure our users that we are following instructions from the National Cyber Security Centre (NCSC) and our suppliers.

What we’re doing

We will be patching our servers over the coming weeks. These patches will require reboots, which we’ll carry out between 0400 and 0500 UTC. For our US clients, that’s between 8pm and 9pm Pacific, 9pm and 10pm Mountain, 10pm and 11pm Central, and 11pm and 12 midnight Eastern. We hope that this will ensure that the impact is as low as possible on your business.

Early reports indicate that there may be performance issues once these patches are rolled out. We’ll be keeping a close eye on the system’s speed following the patch: if it is severely hit, we’ll be prioritising work to decrease that impact in the next couple of months.

What you should do

There’s nothing you need to do at the moment with regards to Apply4. However, we highly recommend installing updates to your browsers and machines when they come.

For further information, please take a look at the NCSC’s webpage: https://www.ncsc.gov.uk/

S02E05

What day is it?

Monday threw out my mental model for the week. I’ve talked before about how m’colleague and Fast Streamer Felix gets a day off a week to do training and work on his final project. These are normally Monday, but this week we planned to close the office on Thursday and work from home on Friday — so he switched his training day to match.

Long story short, every day felt a day ahead all week and left me with a migraine and a permanently perplexed expression.


I spent some time with a mountain of paperwork for a client. It was a nice throwback to my days in government; reams of paper and questions that have never been tested with users. It was a struggle that would dog me for the rest of the week.

Tuesday: This was mostly taken up by backlog grooming. I also talked through my suggested sprint goals for the next few sprints, and got some really good, hard questions from the team. I know I mentioned this last week, but this is sort of in the opposite direction: it’s so good to have people who can quiz me on my thinking to help me clarify it for myself.

Still, it’s also very stressful. It’s a difficult line to walk between honest, helpful critique of someone’s thinking and making them feel like they’ve not done anything right, and that difficulty is compounded when the presenter themselves struggles with their own authenticity. I’m trying to decouple my opinions on what we should do with the emotion behind it: the fact that I’ve worked really hard on some plan doesn’t automatically confer brilliance on it. Smaller feedback loops help with this — putting just enough effort in it to make a skeleton plan means I’m less emotionally invested in it.

Plus if it works I can do a skeleton dance

Wednesday was a good day. I moved the dev team over to Scrum when I started back in season 1. For the first time I’ve given them two high level sprint goals and asked them to talk me through their approach to meeting them. The response was really very positive; I talked last week about how taking agency away from workers makes them feel shitty, so it figures that the inverse is also true. It’s also less stress (but also slightly more?) on my part. I don’t need to spend as much time writing out tickets and explaining my thinking; instead, I ask the team to come up with the approach and then think through it and make sure it reaches the goals. In Russian, this is Доверяй, но проверяй: Trust, but verify.

This excellent working day, where I think I demonstrated strategic thinking and an eye for detail was somewhat kiboshed by an email from a supplier of Christmas presents, who’d be shipping a gift I’d selected. I had, for reasons best left unconsidered, put in a postcode that did not at all resemble my own. So it’s almost certainly not going to arrive, and I’m going to look like a turnip.

It’s my go-to insult at the moment. Gender-neutral and meaningless, but with a good mouth-feel

Thursday was, as ever, my day off. I went to locate presents: two were cloistered at the local delivery office, and three had to be purchased from central London. It was…a challenge. The jewelry shop in particular was rank with the smell of fear and Lynx Africa. There’s not much more to say about Thursday, aside from the fact that emails were building up ominously. If this were being shot for television¹ then this is where we’d cut between a dam just beginning to burst or a support starting to creak and splinter and me, mundanely fighting through the crowds on Oxford Street.

Friday and my last day at work until Wednesday. I learned more about our CRM, answered an absolute flurry of last minute emails², and talked to Felix about deploying his extremely impressive piece of software onto the interwebs. And then I clocked off at four thirty.

And then I came back, because the US still had a number of hours left before they clocked off and the paperwork from Monday needed a couple of minor tweaks that had to come from my brain.

And then I really did clock off.


¹ Sorry, when

² and received a positive avalanche of out-of-offices from people who’d set up automatic forwarding to people who’d also gone on leave

S02E04: Windin’ down for Christmas

The end of the year is rapidly approaching, which has meant the slow wind down of most customer requests. This has, in turn, lent me more time to do some strategic thinking about my next few years and draw maps.

Monday was a nice quiet day. A client got in touch asking about delivery of their software. We’d actually already delivered it, so there’s a clear lesson from me in clarifying communications and making sure that the definition of done for new work includes letting the client know. It’s the first time it’s happened and I suspect it’s a function of everyone being much busier. It’s annoying, but thankfully not the end of the world. We’ve got some content to tweak and then they’ll be live.

Development has moved to committing to main branch via pull requests. It’s a good first step towards DevOps, but it’s causing a little bit of initial slowness as we identify areas we need to improve before we can go all the way. I’m glad we’re surfacing them, but it’s an unforeseen hurdle that’s slowing down delivery of new features. I’m happy with this tradeoff as it’ll make us faster in the long run — even if it means I’ve got fewer fun new features to show off.

Tuesday was a mammoth technical day. I spoke to the lead dev about our technical debt: as a startup, we generated loads for the same reason that running away from monstrous creatures builds up lactic acid in the muscles and carbon dioxide in the lungs. If the choice is between short-term pain and long-term death, we always choose short-term pain — but now that we’re successful, we’ve got to get rid of it in order to scale to the next order of magnitude. It’s better than over-engineering in the first place, because that guarantees you‘ll never get feedback from your audience, but it means we go from rapid delivery to a slightly more pedestrian pace as we, metaphorically speaking, lie down on the ground and grip our sides, saying “I’m fine, I’m fine, just-woo-agh-just give me a minute”.¹

You’re absolutely right, Bojack

The SMT was the usual fiery discussion. The three of us believe in being honest with each other, and discussion can get very frank. We overran by half an hour, and that’s really frustrating. For colleagues with childcare, 1730 is a hard stop and if we can’t ensure we run to time we risk losing those excellent colleagues. I’m going to spend some time over Christmas thinking about the best way to make this work: longer, less frequent meetings? Shorter, more frequent? Or just an aggressive approach to keeping to time? If you’ve got experience in this field please add your ideas in the comments below.

On Wednesday we had our retrospective. There was a lot of good to talk about, some issues that simply refuse to die, and one solid critique of my behaviour as a leader. There are times when I get too carried away with my experience and knowledge and dictate instructions to the team. There are a couple of things wrong with this:

  • From a leadership perspective: it takes away agency from my team, and makes them feel as if I don’t believe they would have come to this conclusion/technology/answer by themselves. That’s a shitty way to make people feel.
  • From a senior management perspective: my time is valuable. If I’m spending it telling people things they already know, I’m wasting my most valuable resource.
  • From a financial officer perspective: I’m responsible for the costs incurred from development time, and if they’re spending time listening to me tell them something they already know then I’m using company money inefficiently.

Management is really bloody difficult, and a skill I’m still learning. The fact my team are comfortable calling me out when I mess up is something I count as a massive positive.

I’m getting there. I think. I hope?

Thursday was my last lecture in FoC and my last mentoring session of the year. I feel slightly better armed for the year ahead, both in terms of my work and my degree. With the morning free I acquired secret Santa presents for all and sundry: Oxford Street at 10am on a Thursday meant most shops were still relatively quiet. I did my best to walk almost everywhere in preparation for the office party later on.


After the office party I headed over to see some former DDaT colleagues in the Fountain and Ink. It’s really nice to see them and talk about what’s going on in Government and on the scheme, as well as getting an understanding of what works and what doesn’t in their current roles so I can use that learning in my own recruitment campaigns.

Plus, any opportunity to catch up on gossip is an opportunity I can’t miss.

Friday started our next sprint. We’ve got some people off over the duration, but enough of the team are working that we’ve committed to getting some work out of the door. I spent some time with my colleague Felix, who’s gone from zero coding knowledge to building something exciting that fills a very niche user need. In order to exceed his objective he’s got to have it deployed by the end of the year, and it looks like he’s on track. I’m really pleased that he’s making such excellent progress — in part because it’s just great to see people shine, but also because it adds evidence to my belief that giving people space, resources, and a clear direction gets quality results.

There’s another bit of management that sucks — I would have absolutely loved to take the project myself, but I don’t have the time. Instead, I have to support someone who’ll take longer to get it done than I would — but, more importantly, they’ll learn valuable skills and I’ll be able to use the time more efficiently.

I’ve seen managers either claim an idea and then never progress it², frustrating everyone else, or reluctantly letting someone else take it before barging in and rewriting the whole thing. I’m doing my best not to do that.


¹ I went with Bojack Horseman, but this was my first pick.

First image when I Google “stitch”, and you’d better believe it’s staying

² A concept called “cookie licking”. No, really.

S02E03: Do you want to build a program?

Yup, now it’s in your head too

This week was also a pretty bad week pain-wise. My infection from last week retreated from my jaw and made its last stand in my sinuses, which left me absolutely crippled with agonising pain.

Everything about humans is badly designed.⁰

Monday was a fantastically busy day as I caught up with emails and colleagues. I chatted architecture with our new technical architect and outlined my vision for how our technology will scale to support half a million users in the next two years¹. It’s (relatively) small fry after government, but for our tiny startup it’s absolutely huge. It’s exciting, but as ever I’m far away from the actual fun of making stuff. As a consequence I set myself the challenge of building a proof of concept microservice out of some of our data over Christmas.

I spent the evening at university. Mondays are Principles of Programming. I’m self-taught and have built little web services here and there, both as proof-of-concept for managers while in the service and as hobby items for my own amusement. As a result I’ve struggled with rehashing hashes, listening to lists and or even getting into ints.


However, this session was so much better as it got into the theory of Object-Oriented-Programming, or OOP.

Tangential reference or not, if you ever think I’m not going to reference Pitch Perfect you’re wrong.

It was really interesting to see all the ways Python both is, and is pretending really hard to be, an OOP language. It was a great way to wind up the penultimate session of the term.

Tuesday I got feedback on our Posting Template. Our current Fast Streamer is brilliant, and I’m incredibly eager to get some more of them seconded out to us. It’s a great program and huge props to the whole team for keeping it going. They’re also using Google Docs, so I got comments back in a useful format and could edit the same document, ensuring we only had one version and didn’t have to fill up inboxes with “Version 3.1-final-final-corrections-final”.

From the incredible presentation “Git for Humans” by Alice Bartlett

Bam. Whole thing finished and submitted in half a day. #winning

At home I felt surprisingly tired and sore around the head, but figured it was the last remnants of the infection. It sort of was.

On Wednesday I woke up in debilitating agony. It was a sharp, focused pain around the right side of my face, from cheek to temple but focused particularly around my eye.

It was the least fun I think I’ve ever had.

It pretty much ruined my day, to be honest.

However, the rest of my team was getting on with brilliant work. One of our devs delivered a really exciting new product — an automated onboarding tool for new clients. Considering that this process usually takes about a week of staff time, this is a giant leap forward and something I’m so excited to see. We’re trialling it internally on our existing queue of customers (in case it explodes in our faces) but we’re eventually going to roll it out as a service to let new clients totally self-on board and further reduce costs.

Saving taxpayers’ money remains my eternal goal

Thursday was my usual day off, and when I woke up all trace of the infection and illness had disappeared. There isn’t a single better feeling, nor any sentiment more alienating, than getting over an illness. You suddenly enjoy tiny pleasures. You breathe deeply. You look around yourself and marvel at the world. You dance through raindrops, relishing the cold sting that’s wiped away by the warmth of your moving, working body.

That last bit’s more literal. I usually walk from Cannon Street to university, because I’m basically a sedentary creature and I like food so a walk is the best way to keep myself at least vaguely in shape. Usually the prospect of a 45 minute walk in a downpour would dishearten me, but today I danced. I splashed in puddles.

I upturned my face and drank in the glory of sensation.

Then I got to St Pauls and my feet were squishing when I walked so I caught the tube the rest of the way.

My Information systems class was the last one of the term. Next week is revision, but since the term’s lectures have been focused on Agile and Scrum I’m reasonably confident I know the content. In Fundamentals of Computing we examined problems that computers can’t solve and watched this video, which if I’m honest I’m still utterly, utterly perplexed by.

Answers on a postcard please.

I also got to see Louise Cato and Sam Villis in the evening. These two women are brilliant, smart, insightful people and the opportunity to talk to them is so valuable that it made the perfect end to the day. There was a lot to reflect on during the journey home, and yet more ideas for my final project. I’ve started keeping a note of ideas, and they currently run the gamut of fun open-source things to money-making pie-in-the-sky ideas.²

Finally, on Friday, I was back in the office. We did some backlog grooming and trimmed out some more of the ancient dead wood. This regular cleaning forces us to reconsider whether the idea we had is the right one, and whether or not it’s the right time for it. If it’s the right idea at the wrong time, it goes into our roadmap. If it’s the wrong idea, then it goes in the bin and we ask ourselves how it ended up in our backlog in the first place.

Whenever the answer is “because we didn’t have a roadmap” I do a happy dance.

I also prepped the agenda for our SMT next Tuesday and got a debrief from the CEO about a potential new product. A client we pitched to a little while ago has come back and told us they’ve got funding, so we need to talk about how we’ll approach it and what we’ll need. It’s a really exciting opportunity, and if the funding is at the right level it means I’ll be able to look at bringing in another team member very soon to own it.

Exciting times.

Unrelated to that — for now — I also spoke to a friend who’s unsatisfied in their job and looking to move. The dissatisfaction is caused by a lack of control over their career, learning, and development. It’s a stupid way for organisations to lose brilliant people, but a great lesson for someone just starting out in business.

By the by — if you’re reading this and thinking that the employee might be one of yours, please take this as a sign from the universe to start trying to fix your culture.³

#programming(self, others)

I’ve got early sight of Miguel Grinberg’s new Python Mega Tutorial, which takes novice Python developers through their first web app. I think it’s brilliant: well written, clear, and perfect for someone who’d like to do web development but doesn’t know where to start.

I’m quite keen to get more Civil Servants coding because I think a basic understanding of building tech and how easy/not-at-all-easy it is is a valuable thing. I know my audience is mostly digital Civil Servants, so: if I offered a course that covered basic Python, then building a rudimentary web service, then (if you’re interested) more complex services — would you be interested? Would your colleagues be interested? Does such a thing already exist?

Let me know here or on Twitter.

#listening

I’m going to see Hamilton: An American Musical in January which is NEXT FREAKING MONTH, PEOPLE so that soundtrack’s been on for every day this week and will continue. I’m halfway to working out whether I can make it our hold music.

https://open.spotify.com/embed/album/1kCHru7uhxBUdzkm4gzRQc


⁰ Except for that example beloved by morons everywhere, which is the proximity of anus and genitalia. If someone ever makes this joke to you, ask them where else they would put the part of the body that excretes. Hands? Belly button? Feet?

¹ Eek.

² That’s my pastry products delivered by drone idea, by the way

³ It could be you. If it isn’t now it will be. Fix it!

S02E02: Betrayed by my own face

This week is sponsored by the feeling of pain.

Content note: I talk about throwing up in this blog⁰.

Having returned from a weekend that involved many bottles of incredibly good vodka, I returned home with a twinge in my jaw. Being socialised as a man required me to say that to everyone who asked, because agonising pain is not something chaps are really allowed to admit to unless your arm’s been separated from your body.¹

As a result, on Monday I shotgunned a couple of ibuprofen on an empty stomach and then promptly vomited noisily. I’m not sure if that was the ibuprofen or the fact that airports are hideous cesspits, but it happened and it was not enjoyable. Side note: there is a TARDIS-like quality to the amount of stuff you think is inside you and the amount that somehow comes out of you when you’re ill. It’s totally weird. I tried to take the day off, but work kept coming in. I answered the questions I could and stayed close to the bathroom in case of further eruptions.


On Tuesday my boss went to speak to one of our first ever clients and had a really good, really frank discussion about how they’ve been using the product so far. In general the feedback was good but there are a few items we really need to get moving on. There were also a couple of really exciting suggestions that we’ve added to our roadmap.² Emails remained continuous. They’re a good sign that our content isn’t up to scratch, but frustratingly the responses take up the time we’d use to write the content. It’s an absolutely frustrating vicious circle.

My jaw hurt even more. My partner reminded me that we live within a ten minute walk of two dentist surgeries, that things don’t just get better by themselves, and that if I continued to sit around whining but refusing to do anything about it she’d smother me in my sleep.

Wednesday: I called the surgery and got an appointment the same day for 12 o’clock. It cost me £20.³ It was an extremely short appointment that went something like this:

Me: I think it’s infected

Doctor: Let’s have a look. Oh yeah, that’s definitely infected. I’m going to drip some anesthetic on it.

Me, seeing the doctor reach for a syringe whose needle was at least as long as my leg⁴: I’m fine with tablets, honestly.⁵

Her, laughing: Oh no, this is just so I can drip it more accurately! Haha!

Me, externally: Haha!

Me, internally: This is how I die.⁶

The rest of the day was dedicated to preparing Jira tickets for some custom work for a new client. I made some progress on automating this process and I’ve got some ideas about how to make it better. I’m currently tossing up between storing multiple API keys and writing something that will act as a pass-through in Python, or learning Google’s Java-esque equivalent of Microsoft VBA.⁷

You’re goddamn right it is Ben

On Thursday I met a friend for lunch and realised that I was a bit early⁸, so headed to class and did some more work on my assignments. I’m not allowed to open source them because plagiarism?, but once they’ve been graded I’ll be able to show them to you. I know you’re keen.

Friday was the first day of a new sprint, and we spent the afternoon on our retro. I felt it had been very sketchy on my part due to extended not-being-there. We had a good discussion that focused on what I need to do to enable the team to work with even less input from me. One of my major bugbears was that we’ve been blindsided by a couple of high priority items, so we trimmed 20% of the lowest priority work from this sprint in an attempt to give ourselves a buffer. If we get extra work we can take it on, and if not we’ll have that extra work to get on with. I’m looking forward to the next retro to see how it works out.

We’re also looking at changing our pricing structure, so we spent a couple of hours going over some models in Google sheets. I love Google sheets. It’s not as robust as some Excel workbooks I saw in Government, but that’s because those workbooks were being used instead of databases. Yes, they don’t work that well. But they’re not supposed to. The fact that you’ve made your car run on thousands of hamsters in wheels doesn’t mean you should recommend it to anyone else. Nor should you complain about the lack of hamsters in your new car.

What went well

  • Sorted out my tooth!
  • Tweet about how being a grown up is about toothache got good engagement!
  • That’s about it
  • Yikes

What didn’t go well

  • General illness

I am literally incapable of not doing this, and now neither can you
  • General feeling of not having enough time, more than likely caused by illness

SEE?
  • Toothache which persists even now. Boo.

⁰ So help me Michael

¹ This is Deeply Unhealthy, and with any luck I’ll get over it soon.

² We have a public roadmap that I suspect almost nobody looks at, but to be honest it’s more for me to store ideas away from the trash-fire that is Jira.

³ Good lord, what a beautiful thing universal healthcare is

⁴ Literally.

⁵ I’m just not okay with needles

⁶ I did not die, apparently

⁷ This is my favorite kind of conundrum

⁸ A week early to be specific

S02E01: Some time later

I go up progressively more early every morning this week. It was awful until I got up at 0430, at which point it was better. It’s a demonstration of sleep cycles, and one great lesson is that I can get up at 0430 and still do a good day of work and social interaction as well as have time for a run.

I am absolutely not going to do that, but it’s a great proof of concept.

Monday

Monday’s overwhelming feeling was total, freezing cold. The heater in our office has packed up for the winter and is spending the season on Southeastern trains, helping them implement sauna mode across the network. I spent a not-inconsiderate amount of time capturing requirements for an upcoming client. It’s currently a very, very labour intensive process so I need to find a way to automate it in a way that’s useful to Mark, who implements the customisations. The work is best done as a batch piece, and so is the collection — but unfortunately not the same batch. I have to transform it somewhere in the middle, or push the ability to customise all the way out to the client.

Tuesday

Tuesday felt non-stop. I got a solid series of hour-long working periods done, including writing up the role template for Felix Tomlinson’s potential replacement. He’s done sterling work, and we’re hopeful we can get a couple of new people in to replace him and develop their digital skills. Speaking to him was immensely useful but sometimes a little difficult, as he picked apart some of the flakier, vaguer things that are in the role description. Some of it is necessary because we’re asked now what we’ll be doing from March to September. As a startup there’s always a chance we’ll pivot, and specificity ties us down too much.

I’ve never seen F.R.I.E.N.D.S, but with all those initials I assume it’s a forerunner to Agents of S.H.I.EL.D

The form itself is a Word Doc with macros in it, which our Google Docs struggled with. It was a little frustrating because an online form would be more accessible, but on the other hand if you’ve got to hand the forms out to people then lines in a spreadsheet are really hard to grasp.

I also had the chance to catch up with Morgan, who with her husband offered some wonderfully frank advice about my own career and future. It was occasionally brutal, but that’s what’s best about advice from people you love and trust. Brutality gets to the heart of the problem and expresses it painfully so that you can identify it and deal with it.

Wednesday

Last day in the office before I head to Poland with my old conference team. I’m in love with the fact that we still hang out and I hope the current team end up the same. This time we headed to Poland, where one of our number is at the College of Europe in Warsaw.

There were a few customer queries, and one that I couldn’t fix and had to pass back to development. There have been a few like this that have disrupted our sprints; it slows down delivery of the bigger items but it can’t be helped. It’s frustrating though, so I’m going to see if I’ve got the funds to get one more developer so we can have a rota of people on “bug-fixing” duty.

I also can’t work out if that should include me. Do you expect senior management to be fixing bugs in code, or just giving you the headroom to do it yourself?

In the last hour of the day two momentous things happened. First, our Fast Streamer published a blog off the back of Michael Brunton-Spall’s excellent post⁰. As he’s not on Twitter, I posted it and then my phone blew up.¹ A few solid conversations followed, but annoyingly they’re all on Twitter so poor Felix only has my word to go on that it got a reaction. If you’ve not seen it, read it here and then go and argue with him about it. Here’s my favourite pull quote from it:

The “death march” bit was mine. The prediction was slightly off. It was the second.

I also had a great board meeting where we signed off strategic goals for the next five years. I like having an idea of what I’ve delivering to, and I’m absolutely loving the freedom I get in how to deliver it.

Thursday

Thursday morning I ironed and packed my suitcase before heading into university. The Information Systems module — essentially a beginner’s guide to Scrum — is quite old hat for me now, but I still enjoy attending the lectures. There are definitely benefits to going all the way back to basics, as I’ve always worked with teams that had been doing Scrum for a while.

Fundamentals of computing is still a total mind-melt. Don’t ask.

Friday

Friday is a blur of waking up at 0430, being ready to leave at 0500, realising I’d forgotten my passport at 0501 and waking up my partner as I looked for it. To her everlasting credit she didn’t kill me on the spot, so that saved my weekend. Then to Luton, to Poland, and once there a tour of the College of Europe’s campus and two bottles of gin between 9 people. And some vodka. And apparently I had to give a giant stuffed bear a fireman’s lift.

I am at least as perplexed as you are by this image

Weekend

We walked around the old Jewish ghetto. It’s full of information, and the whole thing is incredible. The absolute viciousness with which people not so distant from us methodically, efficiently, and indifferently murdered millions of others is hard to get your head around until you walk round a place that contained 300,000 people and then didn’t any more.

We also ate, talked, debated endlessly and did the things you do when you meet with old friends. I love it. I love them.



Reading

@_why’s (poignant) guide to Ruby: it’s the most hilarious guidebook to a programming language I’ve ever read. Please go and read it, particularly if I’ve promised to teach you how to code.

Feeling

Sore. My final wisdom tooth took the opportunity this weekend to erupt through my gums. Unwise in the extreme.

Thinking

About statistical analysis of estimates against time, and whether story points represent the best balance between accuracy and effort. There’ll be another post about this soon.


⁰ “Agile” and “linguistic prescriptivism” are mutually exclusive, so the first digital type to whine that it’s “blog post” and not “blog” is going to get my literal boot up their bum.

¹ Not literally.

S02E00: Here’s what you missed

We’re back, and better than ever

Welcome back, sports fans. It’s been a while. Things have happened.

University: I’ve got three modules this term. Principles of Programming I, Fundamentals of Computing, and Information Systems — or PoP, FoC, and IS. PoP is for beginners and teaches Python; I’ve been using it for a little while in my side projects and so I’m reasonably confident. IS deals mostly with Agile, particularly Scrum — another framework I’m confident using. As a consequence I’m focusing most of my time on FoC, which is just as well because it’s blowing my tiny mind.

Pictured: my tiny mind

There’s focus on concepts like infinite sets and 32-bit integers and hungry philosophers, and my brain is getting soggier all the time. Computers, it turns out, are extremely complicated.

This season is going to see a steady increase in workload and complexity, so balancing it is going to be one of the key character arcs that unfold. I take one day a week to study, but my lectures are only in the afternoon. So instead of studying in the mornings I nose around Whitehall and ask friends and former colleagues for coffee and to pick their brains about things. It has been an effective tactic so far.

Work: I’m pulled a million different ways at the moment, and I’m quite enjoying it. I’m taking care of a product and sponsoring a move to IaaS; I’m writing up job descriptions; and I’m planning the long-term technology strategy for the whole organisation. Doing this mostly means taking a punt on where culture is moving and then skating in that direction. Some initial steps are easy and have a great benefit: putting our application into a container has improved how quickly we can get new features and fixes into production.

I’m also trying to learn as much as I can about making remote work work from as many people as I can, including people who think it’s a terrible idea. Finding out what they feel makes it terrible gives me a strong indication of things to avoid.

Oh, and I got business cards!

This is naturally going to form the complementary arc to the university story. Working only four days a week and keeping everything rolling demands I keep a strict handle on what I agree to do. This is hard for two reasons:

  1. Doing cool but ultimately frivolous stuff has to be deprioritised (boo)
  2. Boring but necessary tasks have to take precedence (boo)
  3. Sometimes you think of something at the last minute that has to be included, and you end up going over your self-imposed limits

Off-by-one jokes are the second best thing in the world

Our Fast Streamer’s suggestion that we run stand-ups in our little team has massively helped with this, because it’s surfaced a lot of 2s before they become 3s.

There are going to be enormous challenges ahead. I’ve drawn a lot of useful advice from the rest of the #weeknotes community, and their continued stories have encouraged me to jump back in.

Here’s to a new season.

Nodes, weights, Uber and Tinder

I’m talking about matching at the moment, because it’s a niche interest of mine and also because I attended a talk on mentoring. I’ve already spoken about how quickly matching people gets ugly and difficult. The programme leader was experiencing this first hand — having grown the programme by 500%, he was starting to struggle to make matches based on qualitative data. He asked me to write something up to offer potential solutions. Here’s my very brief rundown.

There are a few methods by which people are matched. These can be widely categorised into:

  • Monogamous relationships
  • Polyamorous relationships
  • Relationships for the collective good

Let’s start with polyamory

Many-to-one, one-to-many, and many-to-many

This is the approach taken by most dating websites. The optimal outcome isn’t that one person is matched to one person. Instead the algorithm matches individuals to multiple others and then lets the users decide what to do next. Applying this approach to a mentor/mentee matching program is problematic, because the optimal outcome is a 1:1 exclusive pairing.

Relationships for the collective good

A typical example given for this kind of matching is employees and tasks. Every employee can carry out every task, but there’s a different cost in time — which I measure in dollars — for each employee. As a manager, I want to make sure I’m spending my employees’ time in the most efficient way.⁰ I lay out my table as in the previous blog and then find the “cheapest” route through.


Here the optimal matches are:

  • Armond: Clean bathroom
  • Francine: Sweep floors
  • Herbert: Wash windows

As you can see, it would be easy to convert tasks to people and calculate a score based on a number of traits that you’d like to match. The reason I call these “collective good matches” is because the people in them have no say. Armond may prefer to wash windows because he likes to see the sky, for example, but it is inefficient at an organisational level to match him to that task — unless part of our matching score takes into account the employee’s desire to do the task.¹

Although this task is easy with a 3 x 3 grid, at scale it requires an algorithm to manage.

Monogamous relationships

These relationships are a one-to-one match, like the ones above. We divide the population into groups and ask them to list their preferences. We can then apply an algorithm to match the two groups together. Unlike the above, where the group as a whole gets the best matches, this approach strives towards individual optimisation. This problem is usually stated as follows:

Given n men and n women, where each person has ranked all members of the opposite sex in order of preference, marry the men and women together such that there are no two people of opposite sex who would both rather have each other than their current partners. When there are no such pairs of people, the set of marriages is deemed stable.²

The population you’re matching is divided into two groups; proposers and reviewers. Proposers ask their highest preference; if the reviewer prefers this proposal to their current partner then they will dump their current parter and hitch themselves to the proposer; if not, they’ll turn down the proposer.³ Once every proposer has asked, the process begins again, continuing until the round in which no reviewers swap partners.

A consequence of this process is that the preferences of the proposers are always privileged over the preferences of the reviewer.

Conclusion
Applying a monogamous model to the problem of mentor-mentee matches benefits the preferences of one group over the other. If this approach were to be taken, I’d recommend making the mentor the group whose preferences are most respected, as they are the more scarce resource. By contrast, applying the collective good approach might lead to poorer individual matches but will ensure everyone gets a good match, as opposed to a mix of lower and higher scoring matches.

A hybrid approach that generates a “collective good” score and uses that to proxy the list of preferences that would be generated by a “monogamous relationship” approach seems to offer the best of both worlds. It would generate the preferences “blind” — avoiding gender and race bias that we all have — as well as removing the necessity for mentors and mentees to exhaustively research and analyse hundreds of profiles from the opposing group.


⁰ The manager in this scenario is of course entirely fictional
¹ Whether or not it is wise for managers to take their employees’ feelings into account when assigning tasks is not really a question: it is self-evidently a good idea.
² For the purposes of this problem, heteronormativity reigns supreme.
³ Equally, reviewers would rather have someone than no-one

The difficulty of matching stuff

Math is hard.

This is something I’ve been getting my head around since I was about 16. I’m still doing it, and I love it. I love it mostly for the pure math problems which have zero application in real life, but there are occasional fun⁰ opportunities to apply them in real life.

Here’s an example: factorials get really big, really quickly. Factorials are written as n!, and represent n · (n-1) · (n-2)…2 · 1

For example, 3! is 3 · 2 · 1 = 6

4! is 24. 5! is 120. 6! is 720. 10! is three million, six hundred and twenty-eight thousand, eight hundred, or 3,628,800

Factorials get big quickly.

This is a nice fact, but not much use in the real world. Here’s a real world example.

Suppose there are three equally qualified candidates for positions, and three such positions. There are consequently 3! ways we could combine candidates and positions to produce the map of all possible outcomes. You can prove this for yourself by combining A, B, and C with 1, 2, 3 in as many ways as you can with no repetition. You should get the answer 6.

With just six routes through this table, we can just guess — and since everyone’s equally qualified it doesn’t really matter which we pick.

However, if we map candidate skills against skills required, we’ll have a much easier time — each value will get weighted, and we ought to be able to just pick the best ones. If the combo of candidate A and position 2 is the best fit, we’ll pick that one. Easy. And with just three candidates and three positions, odds are it’ll work out so everyone gets the thing they’re best at.¹

So far so good. What if you’ve got 10 candidates and 10 positions, you’ve carried out your calculations and found there’s a tie. To whom do you give the job? And what do you do with the loser? Moving them to their next best match might displace someone better suited:

A1 and B3 both have a score of 9.8 out of 10. B loses. Their next highest score is 7.2 out of 10 for position 8 - but candidate F has a solid 8.0 match for that post. 

You can keep shuffling B down, but eventually they’ll just be stuck with something terrible. You can tell B there’s no position for them — but you’ll be short a person. Or you can move everyone down one, which means everyone will be a bit less happy but you keep candidate B.²

And this is with just 10 candidates, 10 posts, and one tie. A real world, enterprise level version of this could theoretically try to match 400 people with 600 posts. It produces a matrix of 240,000 combinations which has 5.35 x 10¹⁰³² potential routes through it, assuming all candidates are equally well suited to all roles.

That number, by the way, runs out of words to describe it. 10¹⁰⁰ is a Googol, so this is ten Googols. It is a number with one thousand and thirty-three numbers in it. It is a Big Number.

Observe:

5,349,055,099,791,222,867,187,074,878,849,812,372,270,834,990,332,768,891,756,043,927,972,982,546,032,972,559,726,383,830,743,508,574,638,022,032,481,142,092,511,357,370,849,179,536,196,848,984,869,209,987,772,507,742,298,732,994,097,058,599,528,836,347,757,929,295,404,338,673,081,575,870,821,723,692,460,079,706,482,570,287,371,963,070,384,183,395,271,508,817,740,452,356,360,205,405,400,076,328,077,644,366,177,018,904,774,763,787,067,793,674,505,130,374,461,018,071,722,240,219,209,876,026,069,450,357,838,084,927,634,991,911,768,043,405,616,194,537,924,746,255,578,756,684,605,143,768,424,385,681,939,432,642,425,814,964,007,849,933,980,999,312,614,383,494,093,438,927,613,485,586,994,292,340,164,848,044,583,451,835,112,558,785,201,059,853,998,236,545,462,756,538,819,695,086,094,618,612,782,015,955,527,844,062,494,242,962,102,300,424,533,466,777,986,339,498,159,574,662,860,552,719,611,464,078,607,471,138,005,485,406,570,846,602,444,041,750,951,396,025,805,373,283,969,451,966,517,879,164,056,082,649,886,456,017,744,490,326,662,089,509,233,283,231,413,336,626,082,184,360,916,289,000,458,006,921,777,156,174,201,492,790,817,391,810,355,604,710,545,596,318,097,153,721,524,067,736,727,114,993,499,894,144,945,959,049,336,408,040,800,256,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000

It’s also only approximately right.As you can see, after a certain number of millions my laptop gave up entirely and just assumed that the lower numbers were zeros.

Of course that means for every role you can just roll a 600-sided die, but quite frankly that thing is for Dungeons and Dragons only and besides takes three people to roll.

So you try out algorithms, which is where we’ll move next time.


⁰ Yes, fun

¹ If you were particularly perverse, or ran a graduate training scheme, you might do the inverse: select the combinations with the lowest value to force the candidates to improve to meet the job spec.

² I don’t actually have answers here, I’m just posing the question.

S01 E10

The Dragon and the Wolf

This is the season finale. There are a couple of story arcs budding and some that will be closed off-screen. Those reading the book of my daily life have long since given up yelling at the producer’s additions, subtractions, and poetic license and are instead now enjoying the Easter eggs thrown in as knowing winks to a shared joke.

This season came at a grotesquely perfect moment. I was in the right place professionally, the right job was advertised, the timing came together seamlessly. The whole thing seems engineered in sitcom land. On reflection, I’ve enjoyed other weeknoters’ writing more: their truths resonate all the louder with me because I know they are in the past of my life — or the future.

There’s going to be a short hiatus. Meeting with my fellow weeknoters I realised that for all of us these notes have been an outlet. They’re quasi-private and, for me, have been a sort of passive aggressive means of effecting change. For an introvert like me, unable to come up with a fully-formed idea in the confines of a noisy meeting, it’s an opportunity to talk about change I’d like to make. A rehearsal for the real thing.

But next season I’ll be moving into a role where I’ve got access to all the levers. I can’t grouse that management aren’t fixing things, because that’s me now. I’ve got to put in place a culture of openness such that everyone I work with will be willing and able and feel supported to join this brilliant, vibrant, extelligent[0] community. I hope you’ll continue to join me as I try, fail, and try again. I hope you’ll continue to be supportive, kind, and helpful.

If nothing else, I hope you continue to encourage me to drink four caipirinhas on a school night and talk about Doing Good late into the evening.


Monday was spent in absolutely back to back meetings and concluded with a visit to Monroe, a smallish client with an interesting new proposition. I also lined up further client meetings. Only one item went onto my promise tracker, which probably reflects the frantic nature of my day. As a sidenote, this tracker is turning up some genuinely valuable data. Even though I’m on hiatus next week, I may push something out via twitter.

On Tuesday I took two new starters on a whistlestop tour of our software, both front and back. The new starters work for our sister company, and will be using our software day-to-day. Presenting it to staff gives me an opportunity to see it through fresh eyes and helps again to identify areas we need to work on. It was really nice to meet them and to get a handle on how we’ll manage — remote staff working as account managers is a model I’d like to adopt in the near future.[1] I met Morgan in the afternoon and had an extremely positive discussion with some good pointers for me. We talked about the future, and nihilism, and why it is that us millennials feel entitled to things like nice colleagues, remote working, and a work-life balance.[2]

Wednesday I had giant, hour-long stretches of uninterrupted time and consequently got loads done. I spent an hour analysing and commenting on a shared process document, then reviewed and commented on it with the CEO of the company that supplies our developers. His guidance is really valuable and he’s totally open to trying out new ways of working. My director and I finally booked travel, so we’re going to go out and see the team in late September. I’m hugely excited to get into a room and talk about containerisation, software architecture, and automating deployment into cloud infrastructure.


They’re based in Spain, which means it’ll be unconscionably hot, but as long as there’s air conditioning I’m sure I’ll be fine.

I also got to meet some of the other members of the #weeknotes family, and it was an absolute joy. It’s already been covered everywhere else, but my conclusions were:

  • two and a half drinks is just enough to spark conversations that are deep, connected, witty, reflective, and the best.
  • Three drinks is just enough to make you forget everything that was said half a drink ago but remember it was brilliant[3]
  • There are more ways through the Civil Service than I thought possible, and on reflection I don’t know if I’d do it again the way I did
  • #weeknotes is a glorious community and I’m proud to be part of it

On Thursday I was at a training session where I got to learn how to present confidently. Two things I was told to focus on where time-keeping and snappier titles. This was the original, apparently “unsnappy” title:

I don’t see it personally

So I tweaked it to:


and that got a better reaction. To be fair, the colour is a lot more exciting.

Friday I worked from home as I was throwing a little inner party an I wanted to log off at 5.30 and get cooking. In future, I’d like to be able to work from home without feeling like I need a reason — or, rather, without needing a special reason. S02 character arc sorted.

For those interested I made a steak and ale pie. I made too much of it. I will be eating it for the next week.

Fade to black.

Credits.


Reading/Learning: Docker. Always Docker. But it’s meant I’ve drawn my first logical architecture diagram in a year, which is pleasing.

Listening: to trains not running over the next week, as I work from home to avoid the chaos at the London Terminals


[0] Extelligence is the intelligence that lives outside your head, and means your development can increase exponentially by accessing it.

[1] Remote work means our talent pool expands beyond those who live within the M25, and although London is still the greatest city in the world I am willing to accept there may be excellent candidates outwith its bounds.

[2] There is a connection between these things.

[3] This is widely understood to be the worst feeling in the world.