Weeknotes S03E15: Break

Everything is in motion and relative to everything else. Don’t think about that too hard

Overarching feeling of the week:

https://media.giphy.com/media/PJoLp4gDIqjYs/giphy.gif

Based on previous experience this feeling will persist until at least April.

This week (although is it even a week? It feels like it’s lasted all year⁰) saw me get into an extremely frank discussion with a colleague. I don’t mind these kinds of discussions because I see them as fruitful, but I was reminded again that I can come across as frank or even fairly brutal. The flipside of this is that writing code is like writing anything, in that you put something of yourself into it and so any critique becomes a critique of you. I’ve talked about being on the receiving end of this, and to my shame I ignored all the positive suggestions I’d made for people reviewing.

I am going to get better at this, if only so that people are less likely to think of me as a giant tosspot with aggressive opinions and no sense of personal space.¹

https://media.giphy.com/media/VEE958uPeSEFy/giphy.gif

I updated my side project this week. It’s now using one of the GDS registers to feed data into a system, which means that I don’t need to build a database into it. This is a Good Thing in theory, because it means the data will always be up to date, although it’s going to cause problems in the future. Luckily, that’s future me’s problem.

Man, I don’t envy that guy.

Just doing it and putting it on twitter has raised my profile. I even saw it get shared on our internal slack. I suspect the person sharing it didn’t realise I also worked there and probably had a minor panic when I rocked up to say hello.

I have mixed feelings about this side project. I don’t think it’s a good side project, because it’s not atomic — it relies on other moving parts that I don’t have access to at the moment.

That sounds mysterious, but it boils down to “People are busy, too busy for my personal side project.”

https://media.giphy.com/media/tIFtQ0E69uBIGle98E/giphy.gif

I had a second date, and let me tell you it is weird. I’m channelling my inner Scrooge, but I have literally no idea what I’m doing. I’m only partly rescued by my repeated mantra: nobody knows what they’re doing. I think, broadly speaking, it is going well. It is going slowly. It is going slowly on purpose, because I am carrying baggage. There are times when I very suddenly bump into a feeling that is confused because it’s very similar to a feeling I had about my ex. Is this a new feeling? Is this an old feeling that parasitically seeks a new host so that it can survive even when it doesn’t belong?

https://media.giphy.com/media/3o8dFiXShIJ3Yjx3JC/giphy.gif

Because love is a mix of physical, immediate attraction that comes from the way the other person fits into your life² but also all the feelings that grow through shared experience. They grow, like the man says,

Like a flower
Or a mushroom
Or a guinea pig
Or a vine
Or a sponge
Or bigotry
…or a banana

And love is made more powerful
By the ongoing drama of shared experience
And synergy, and symbiotic empathy, or something
 — Tim Minchin: If I Didn’t Have You

Anyway. I am an ongoing and eternal emotional mess, and this is good because it’s a reminder I am terrifyingly alive and still doggedly clinging to the skin of this blue marble as it hurtles around the Sun.³

Project Flat rumbles on, derailed only slightly by the holiday period. By the end of next week I shall hopefully know whether I have been authorised to spend more money in one go that I’ve ever spent before, and I’m now so sick of the entire process that if it fails I shall decamp and live in a yurt.

No, I’m kidding. I’ll move to Canada.

https://media.giphy.com/media/fR6Y3QxkEdTX2/giphy.gif


⁰ Bam, Dad joke straight out the gate. Starting 2019 as I mean to go on
¹ Boy, let me tell you about those guys
² Fits into your life along the cultural norms you’ve grown up with, or even actively rejected and therefore fits into your counter-culture but still fundamentally fits into your worldview; like maybe you’re an atheist while your parents are religious and you’ve gone all counter-cultural and brought home an atheist partner but I bet my last pound that godless heathen has nice table manners and is sweet to your parents and doesn’t kill puppies and went to the same kind of school as you did and look the point I’m making is that love is at least three quarters cultural and even being counter-cultural is still aligned to your culture in the same way that the London-Brighton line is simultaneously and non-controversially the Brighton-London line.
³ It’s just done another lap, and rather pleasingly everyone in South Korea and Japan got a birthday. Isn’t that nice?

Weeknotes S03E14: Wipeout

Watch in wonder as his sleeping pattern disintegrates!

We made it folks. This is it. The solstice. The days will get longer from here and the night will retreat.

I have violently overdone it this week. Come with me on this journey of self-discovery.

On Monday I started the last week with my current team. Next week I’ll go back to my old team, which used to be my old team. My current team is my old team; that is to say, the team that was old before my old team was my current team.

I hope that’s clear.

https://media.giphy.com/media/mPytjcsG3XS4o/giphy.gif

The day was fairly intense work, and in the evening I had a date. It seemed to go well. I also spent a lot of energy on being nervous before and after, so that did not set me up well for the rest of the week.

On Tuesday there was:

  • a special meeting with our programme directors
  • one of my team’s Christmas lunches
  • drinks with colleagues
  • drinks with friends
  • another date (I am really, really not very clever)

So by Wednesday I was fairly broken. I therefore did what any normal person would do and joined the final One Team Gov breakfast at 0830 and mentored some individuals at codebar until 2100.

Obviously. Obviously this was the sensible thing to do.

https://media.giphy.com/media/FaLhiZQHrBIYw/giphy.gif

I woke up on Thursday tired in every bone. I turned off all my alarms. I fed the cat in a fugue state. I fell back into bed and slept for another two hours and still woke up groggy. I went back to bed at 7 and slept until 11, when my growling stomach and growling cat combined to wake me up. I made the latest cheesy pasta that’s ever been made, ate almost all of it, fell immediately back into bed and woke today feeling, if not refreshed, at least human.

There is a lesson for me here, and that lesson has been learned so many times that I’m embarrassed that I still don’t know when to chill the fork out.

https://media.giphy.com/media/3oxHQKW9lw6rK9kYtq/giphy.gif

With that being said, good things have happened; are happening; will happening. I went on a date with another human. I’ve been pairing a lot with someone at work and we wrote some cool code and fixed some problems.

I went over to the London Borough of Hackney and facilitated a swardley mapping workshop. I really enjoy facilitating and giving other people the tools to build their strategy effectively. All the attendees said kind things and since I never retweet praise I’m going to put it here. Huge thanks to Cate McLaurin for organising both a compelling workshop and absurdly good cake.

(Also, I think my somewhat-above-me boss discovered who I am on the Twitters, so that can only end well)

If you’re wondering about strategy and would like my help facilitating a workshop like this…I honestly don’t know how we’ll manage it. But I would absolutely love to, so get in touch and let’s make it happen.

I had a great meeting with my line manager where we discussed career aspirations. I’m still waiting for feedback from the Future Leaders Scheme, but in the meantime I am reasonably confident that I should be aiming for a more senior position within the next year. I’m just going to keep pushing upwards and finding new and interesting problems. As above, if you have a new and interesting problem (or even an old and interesting problem) please say hello. I like interesting problems.

Finally: it’s Christmas. This has been quite a year for me. There’s a retrospective in the works, as well as a proper write-up of the OneTeamGov breakfast that happened on Wednesday. For now though, I’ll be working all the way through the holidays. I hope you’re well, and I hope to see you soon.

Buying a house

First, construct a universe.

Good buddy and fellow Team #weeknotes writer Ian Ames posed me some questions about my house-buying journey. Since that might be something you’ll go through at some point, here are my reflections on the whole thing.

How did you find the property you’re buying? What criteria did you use for your search? Who did you use? What information would you have liked to have had that wasn’t available?

I started looking for properties by finding all the developers who offered Help To Buy, and then got myself on their mailing lists. I knew I’d go the help to buy route because I want to start in London and scraping together 10% of £280000 is unlikely. I don’t know if I’ll stay here long term, but buying here first means I should get a decent enough price for my flat when I sell that I’ll be easily able to get something in Manchester or Edinburgh.

The criteria I used was primarily price. I really wanted a new build; there’s something psychological in me that values newness quite significantly. I’m not sure why. It may be due to the fact that I didn’t always have new stuff growing up. I went to the kind of school where you have to buy the uniform from a small, family-owned shop in Knightsbridge, or second hand.

I really would have liked more information on what other properties were valued at in the area; how much I could haggle a price up or down by; the factors that might increase or decrease the value of the property; and how exactly a Help to Buy ISA actually works.

How did you engage an estate agent/ conveyancer, how aware were/are you of the steps involved in the buying process, would an awareness of these things have helped at all?

I engaged my conveyancer through a sort of price comparison website. By the way, “conveyancer” is both a less descriptive and a less helpful job title than “geomancer”, because I at least know what “geo” means.

I had a vague awareness of the buying process, but I don’t know to what extent a greater awareness would have helped — I’ve approached this mostly by saving as much money as I can and making a lot of spreadsheets. I think I’ve logged about 35 hours on my latest one.

That being said, my solicitor has been immensely helpful in explaining these things to me.

How has the moving process been? What were the pain points, what would have helped make it easier?

I’ve not moved yet, so I promise to give you an insight into this. Right now my biggest pain point is that the developers have absolutely zero liability to me in terms of getting the flat delivered to a particular date, while I have a two-month notice period. It feels like there’s a strong possibility that those dates won’t line up, and that I’ll need to work out of my parents’ house for a time. That’s quite frustrating.

At the moment I’m making lists of things I think I’ll need to do:

  • tell the utility companies I’m moving
  • update my bank accounts
  • update my driving license (bugger)
  • set up a mail redirect
  • give my new address to people I like
  • update the vet on my cat’s new address (I’m not 100% on this)
  • book a moving van
  • book some people to move my stuff
  • book a holiday to go on while the people I’ve booked my stuff into the van I’ve booked and unload it in the new flat
  • work out how to get a sofa up to the 18th floor

Weeknotes S03E13: Gluttony

The Christmas indulgence has started in earnest. Someone feed me a salad

What a week this has been. Here goes:

1I did my first bit of volunteering with the lovely folks over at codebar. It was an immensely enjoyable experience and reminded me that my first true love is teaching.⁰ I had a small group of three students who were breaking into Python for the first time, and so we went through the important things new programmers must learn. They are:

  1. Google is your friend
  2. The next person to read your code will have your home address and homicidal tendencies
  3. “Readable” is better than “quick”

It was really basic stuff and I enjoyed myself more than I have in some time. Dinner was provided and it was pizza. So carby. So delicious. It had a vegetable on it though so…healthy-ish?

2I did a big ugly bit of work and came up with a recommendation to do nothing to automate it. I think it’s important to have records of decisions, including when those decisions are “we’re not going to do anything about this annoying problem” because then people can disagree, and that’s good, and when you get very angry at the people who didn’t solve this annoying problem you can find out it was you all along. More importantly, you’ll be able to find out why you didn’t do it then and decide if things have changed sufficiently for you to come to a different decision.

I had a celebratory hot chocolate that was so thick I could stand a stirrer up in it and so full of calories that the health and safety executive demanded it be sold in tiny cups like espresso. It was amazing.

3I attended Hack the Police and won two prizes. Nobody was more surprised than me. There were people there who’d built machine learning tools and global mapping tools and a virtual reality tool for evidence examination.

I put together a five questions, skinned it in the GOV.UK design system, and then mucked about with a capture the flag (CTF) challenge for the rest of the time.¹


And yet I’m now the proud steward of a Met Police whistle, an Amazon Alexa, and offers of help to turn this into a real thing. I’m really excited, because apparently in many cases of robbery and violent crime viable CCTV isn’t always used because it’s so difficult to get it into the hands of the police.

Of course I’m absurdly busy, so this will probably be taken out of my hands or not start work until after March. All the same, it’s very cool. The code is open source, so check it out if it’s your kind of thing.

We had burgers for dinner and cake for breakfast. I tried a burger made entirely of plants that tasted both meaty and not like any meat I’d ever had before. It is definitely The Future.

4I did not get onto the Future Leaders Scheme. This has come as both a massive blow and no surprise, because cognitive dissonance is easy and so is self-deprecation. I made myself carbonara for dinner with extra cheese.

I am grateful that I’ve been doing this with a bunch of other public sector digital heroes, because — selfishly — some of them didn’t get it either, and they’re way more brilliant than me. So I know I’m in good company, and that the cutoff was incredibly high.

I’m really looking forward to the feedback and results of the psychometric tests, so that I can give my critical friends some things I’d like their help to work on. They’re due ‘later this month’, presumably for excellent reasons.

I’m also mildly irritated that after a job interview three weeks ago I’m still yet to hear back about it. It’s for a senior position and I am 100% certain I didn’t get it, but at the very least I’d like to know. Not knowing is the chitinous thing whose wings scratch your insides.

5There may be movement on my flat. The endless merry-go-round of frustrating, paper-based process (alleviated by paying other people to deal with it) continues. It continues in my favour, and so I feel quite churlish for complaining about it. It looks like — as long as the developer realises that all valuations will be much of a muchness — I shall have another £20,000 shaved off the price of my new flat. This is enormously exciting, but there is a nagging fear that prices everywhere are about to do their best impression of a whale called into existence by a space-age technology:

The Hitchiker’s Guide to the Galaxy

That’s all for this week. Wish me luck.


⁰ This comes with the caveat that the student must want to learn, which is why I really love mentoring and really hated teaching.
¹ It’s taken over my bastarding life. Don’t ask.

Weeknotes S03E12: XXX

Everything is new but old but new

I’m back on my old team. We’re delivering things ahead of the meaningful vote on Tuesday. There is not very much I can say about these things.

Still, other things happened. Maybe there’s a post in them. Let’s see.

I did more baking than I’ve done before and worked out how to temper chocolate. Tempered chocolate — glossy, dark, smooth — is the most decadent, most delicious sight in the world. I love it. I love it so intensely that I tried to record it and felt immensely disappointed when it didn’t match the way it looked inside my head. I was tempering chocolate in order to win the bake-off my new team’s DM organised.

Yes, I said win. Who enters a competition without the aim of winning?

https://media.giphy.com/media/10nGcSDXpLv9w4/giphy.gif

The treat I’ve made is vegan chocolate brownies that contain cherries and nuts. Early feedback is that they are amazing, but also need more chunks and possibly more umptuousness, a word that — like my brownies — is mysterious but has a wonderful mouthfeel.

I spent a full 90 minutes with a colleague who helped me understand our communications strategy, because I’m nosy and asked to learn about blogging. I think I’m good at personal blogging, but strategic blogging is a slightly different thing. I don’t think I fully agree with their viewpoint, but I’m also not an expert in this field. I’m willing to be educated, and I’m pleased and excited to work with colleagues who are willing to give up their time to explain it to someone like me. There’s also a workshop happening to bring together devs like me and professional writers like them to help us to better understand each other. This ought to make publishing easier.

Antonia and I played chess, and it gathered a small crowd. I think there’s potential for a small chess club, but I don’t want to take on another corporate objective. I do want someone to set it up though, because I like playing chess and I like getting to know my colleagues better. If nothing has changed by March I’m going to start annoying people to start it themselves, but I’m committing to no more corporate projects until I’ve finished the ones I’m on for the moment. In the interim, watch these incredible geeks play chess in four dimensions and try not to let your brain squidge out of your ears.

I scored a ticket to Hack the Police and I’m immensely excited, because I love an opportunity to muck about in a novel context. I’m also going to Pushkin House, the Russian language centre in London, to be assessed on my Russian language.


A Russian-speaking friend has given me an appraisal of “like a five year old”, so I’m confident I’m ready for the intermediate class.

These are all part of my aims: I want to be a senior developer within 18 months, and I’d like to be an interesting and well-rounded person.⁰ Daytime language courses are cheaper than evening and weekend, so I’m going to do some rejigging of my hours in the new year to swing at least half a day off per week. A whole day off a week would be even better, but that would be such a blow to my finances that — ironically — I’d struggle to afford to do anything with that day off.

Purchasing a flat continues to be the most arduous task I’ve ever had to do, and now includes legalese. I hate legalese. I hate it so much because it feels like the purpose is to obfuscate meaning and humanity.

If that is the purpose, it can get in the bin, because meaning and humanity are all we have in this universe. The stars; the wind; the earth beneath my feet. All these are cold and uncaring and have nothing in common with me except chemistry. Let’s at least be humans to each other.

If that’s not the purpose — if lawyers truly believe that this is the way people like to have their lives laid out and ordered — then I volunteer to go up and down the country to shake them firmly by the lapels of their exquisitely tailored suits and say with force that it is not, it is not, nor will it ever be.

Here follows an excerpt from something I am supposed to swear that I understand.

The Seller shall at it its own expense procure that the Property be practically completed as soon as reasonably practicable to the reasonable satisfaction of the Buyer’s or its mortgagee’s (if any) surveyors in accordance with the Specification (subject to any amendments made under this Clause 3) and in accordance with planning permission and any planning agreements relating thereto (so far as they relate to the Property) and building regulation approval relating to the construction of the Property (subject to any variations made to them and to any amendments required by any local or other public authority) and to the standard of the Warranty Provider PROVIDED THAT the Seller shall not be liable to the Buyer for damages or any loss or inconvenience that the Buyer may suffer in the event that the Property is not ready for occupation on the Anticipated Handover Date which is as a result of any delays in the Property being practically completed in cases where such delays are beyond the reasonable control of the Seller.

What absolute cock. I put it through the excellent Hemingway app and after it had recovered it told me that:

  • 3 adverbs in a single sentence is too many
  • 6 phrases have simpler alternatives
  • And 1 (out of 1!) sentences was very hard to read
  • However: there were no uses of the passive voice. Good job!

WRITE FOR YOUR AUDIENCE. STOP MAKING PEOPLE ANXIOUS BECAUSE YOU WANT TO SHOW OFF HOW CLEVER YOU ARE.

THAT’S JUST HOW NERDS BULLY PEOPLE.

DON’T BE A DICK.

THAT IS ALL.


⁰ Yeah, it turns out it’s only easy to do one of these things.

Trying out serverless with AWS and Chalice

Hoo boy

You ever been nerd-sniped?

https://xkcd.com/356/

It happens to me regularly, and on Friday I was nerd-sniped by Jamie when he posed this into the ether:

System and data design is kind of my bag, so I immediately shot back that a database would be best but a web api would be super cool.

And then, because I’ve been itching to try out something serverless, I built a tiny proof of concept. Tiny in capability. It took me most of today to actually do.

Jamie pointed me towards a juicy dataset from the Department for Transport concerning road accidents. I threw three giant CSVs into a database, and then struggled to put them into an AWS relational database (RDS). Setting up a cloud-based database is difficult, because the default way of doing things appears to involve spinning up a separate machine to export data onto, as a sort of staging server, and then moving that onto the database server.

Eventually I hacked around it by temporarily opening the database up to everyone, frantically throwing stuff in there, and then locking it up again. It doesn’t seem sustainable. There’s another column in there that I don’t really need, but I can’t work out how to drop it without the enormous palava I went through just trying to get it on there in the first place.

It’s at this point that my brain does the thing that is the basis for a joke that I quite like.

Suppose you are given a phone with a smashed screen that seems otherwise to be working. What should you do if you wish to keep it? Naturally, the answer is to take it to be repaired, pay a fee, wait some time, collect it, and wipe it, ready for either resale or reprogramming. So far so good.
What, though, should you do if you are given a phone whose screen is unsmashed?
Simple: smash it, thereby reducing the problem to one you already know how to solve.

There are a number of variations on this joke, involving Newton and cats or physicists and kettles. The reason I’ve written it like that is because me — or that bit of my brain that gets itchy around imperfect systems — would very much like to just burn the thing I’ve built to the ground, because the solution to my current frustration is hard and unknown while rebuilding it is just hard.⁰

In any case: getting data into the database was very hard. Actually building a tiny little function to grab data and return it was easy: the whole code runs to about 30 lines. It’s also not much use at the moment. It just returns the primary key of an incident report, but does at least give a genuinely horrifying glimpse into the number of traffic accidents that happen on our roads: 129,982.

I’ve not open-sourced the code yet because it’s got details in it (bad practice), but I’m going to continue tinkering with it. I’m not sure how more persistent things, like a database connection or an object relational mapper, fit into this invocation model. Only one way to find out.

If you’d use an API like this, what data would your web application like to consume? Answers in the comments or to me on Twitter


⁰ I’m skating close to something honest about my romantic relationships, so I’m going to do a quick pirouette and skate in the opposite direction

S03E11: I am not a clever man

The weird double-episode in the middle of the season that makes you sit up straight in the luminous glow of Netflix and go, “Oh shit, is it the season finale already? Did I really just shotgun 13 episodes of this show? What kind of rotten monster — oh, okay. It’s that weird mid-season double episode” and then you sink bank into your nest of blankets and tea.

Relax. Sink back. We’re not at the finale yet.

Way back, last Thursday, I went home early because I felt rotten: the beginning of the flu. I’d already volunteered to help out at SiliconMilkRoundabout, and figured I’d be better by Sunday.

I was. I definitely wasn’t well enough to use five hours of spoons being extroverted, but I was well enough to stay at home, maybe go for a stroll and see a friend for a coffee.

Hey, reader. Guess which one of these I did.


So then it was Monday and I was huddled in my snuggliest blanket drinking my largest mug of tea and generally feeling monumentally hacked off at past me, the me who overdid it.⁰


This week I’ve mostly been struggling with imposter syndrome as I try to get to grips with Jenkins. It’s software we use to automate software deployment, and this is my first time getting deep into the guts of it. Like all projects that have been around for a while it seems like a horrible, screaming mess at first glance. I’m confident I’ll get there, but the learning curve is sharp.

What I’ve noticed is that I’ve been tracking my time less when I’m struggling at work. I think this is some kind of avoidance behaviour, so I’m going to dig into it a bit more and work out what it is I’m really doing.

Brains: they’re weird, and they control your life in ways you don’t even notice.

Red team! Assemble!

The team got together and reviewed our threat vectors and attack trees. Attack Trees are constructed from the point of view of the adversary. Creating good attack trees requires that we think like attackers, which I’ve got to admit gives you a bit of a thrill. We broke down all the ways different attackers could try to get into our system, and found that we’d plugged all but the most expensive gaps.¹

If you’re writing software, I recommend doing these attack trees. Some of the outputs will scare you — firstly, there’ll be whole avenues of attack you hadn’t thought about and now you won’ t be able to sleep until they’re fixed.

The second thing is that you’ll find out that someone on your team has been harbouring a secret desire to hack into things and you won’t be able to sleep again full stop. It’s fine. They’re on our side.

https://media.giphy.com/media/G7S0Fek06CZfW/giphy.gif

So. Many. Meetings

Now to be fair I signed myself up to these, but all the same I’m frustrated at the number of meetings I found myself in. Not because they’re not good — they are, they’re interesting and give me new perspectives — but because they take me away from what I ought to be doing, and I recognise them for what they are — more avoidance activity because I’m not already brilliant at something I started only recently.

For example: I joined an assessment workshop for a product that another team are building. My job was to assess whether the tech was up to scratch, and it was a genuinely enjoyable and challenging discussion. I feel good about doing it and I hope the feedback I gave will be valuable. However, I should really have been getting more stuck in with the difficult, boring work of better understanding the automated continuous integration pipeline, instead of extra, valuable, corporate² work.

In an ideal world I could do whatever I wanted and that would comprise solely of things I enjoyed doing, but I don’t think we’re there yet.

https://media.giphy.com/media/9fulYnA7MR1oQ/giphy.gif

Every day I’m shufflin’

https://media.giphy.com/media/w1ZEcSm7LiuLC/giphy.gif

I found out on Thursday that I’m being shuffled back to my old team for the short term as there’s been a few moves. It’s not ideal, but the team is good and I’m fairly comfortable moving around. Still, it’ll mean another period of two or three weeks where I have to re-learn what I used to know. I’m starting back on Monday, so it’s a fairly sudden change. Still. It’s nice to be wanted.

This week has been a good week for coding, even if I’ve not done much work stuff. I’ve written up a couple of interesting practice examples — the orchard and the game of life. As ever, I get so much enjoyment out of problems like these. I love them, and the exciting things AWS is revealing around serverless is making me itch to try out a side hustle I’ve been thinking about. Watch this space if/when I go down to four days a week…

Secret project update

This week I think I successfully convinced someone senior to sponsor an alpha of my secret project. I think. I’m not sure yet, the ways of senior people are mysterious. I’m aggressively optimistic about this, because I think I’ve got a reasonably clear idea of what the project needs.

I was delighted to discover that it doesn’t necessarily need me, because it means all the information I had in my head has been transferred into pages and I am not a blocker. I’m hopeful I’ll get to work on it, of course, but I’m more interested in it getting done.

More on this as we get it, although I suspect with it being Christmas soon all will be quiet on that front.


⁰ The worst part is that we’ve both done this idiotic dance before.
¹ “Expensive” is a euphemism. What it means is that the only routes into the system would be via what’s called “rubber-hose cryptanalysis”, which is also a euphemism. It is not very much fun to think about and I do not recommend it.
² ie not my core job

Coding the Game of Life

Over the weekend I attended the Global Day of Code Retreat. We held one at our offices in Aldgate, and welcomed 11 participants.⁰ We coded for about 45 minutes per session, and each session had a different constrain. The aim of the day was to practice writing code thoughtfully, driven by tests, and in small increments. The solution we were pursuing was software to run the Game of Life, a zero-player game that demonstrates emergent properties.

(That is to say that, like life among us human beings, it starts with a seed and sometimes grows, sometimes dies, sometimes stays the same but — here’s the kicker — it can’t be hurried. The only way to work out how a pattern will look at step 4,255, 903 is to go through all of those steps.

As in life, the only way to find out what’s going to happen is to wait)

We also deleted all of our code at the end of every session, which was freeing but also very frustrating. One particular example was when my partner and I had been working in two minute bursts, resetting to the last working point if we didn’t manage to make a passing test in those 120 seconds. That frustration and elation was definitely heightened when we then had to get rid of all that hard work.

I enjoyed it enormously, and I got a chance to talk about the work we do and evangelise about working with us.¹ In fact I enjoyed it so much that I went home and then came up with a solution to the problem solo, with commit messages that got weirder the later it got:

Read from the bottom up. They’re from my repo

It was a really interesting reminder of how I originally learned to code, which was by fruitlessly bashing at the keyboard like an unionised monkey in an infinite cage. I had no real clue what I was doing, and when things worked I got a huge rush of endorphins that spurred me on. Intensive sessions like these put me next to people who are in that space, who just want to get on and write code and not hang around waiting for this fuddy-duddy government bloke to explain what they already know.

I think I got a bit more senior without ever realising it.

I think that’s how it happens to everyone.


If you look over the commits, you’ll see a snapshot of what I was thinking at that point in time. I really prefer these long commit histories to ones that are artificially squashed and rewritten — at least as a learning tool. For example, my Cell class started as this:

class Cell:                                          
def __init__(self, alive: bool = False):
self.alive = alive
def die(self):
self.alive = False
def resurrect(self):
self.alive = True

and ended up as:

class Cell:
def __init__(self, alive: bool = False):
self.alive = alive

def black_or_white_square(self):
return u"u25A0" if self.alive else u"u25A1"

because along the way I realised the Cell class didn’t have to die. In fact, I could even reduce it entirely to a True or False value and never worry about creating objects at all.

Some people didn’t take this approach. Some had Cells that were very weighty and could calculate their own fate, reducing the need for a world and putting each cell in its own bubble. The huge value from events like these, in my opinion, is being exposed to quite different ways of thinking about a problem.

So now you’ve been exposed to mine. What do you think?


⁰ 24 signed up, so I’m curious to know how that drop-off rate compares to the average
¹ If you’ve got to this blog because you attended, you should check out the jobs we’ve got on offer and the skills we expect you to have as a junior data scientist or a junior software developer

S03E10: Shhhhhh!

This week is brought to you by an experiment in Library Rules


Library rules:

  • no desk meetings
  • write more, talk less
  • DON’T MAKE EYE CONTACT WITH THE LIBRARIANS

Beautiful, horrifying librarians from http://princecashew.tumblr.com/

Chess makes your brain hurt

Public digital hero and globetrotter Dan came over to play chess. We tried to talk about things and play a serious game, and found it was like trying to rub your stomach and pat your head at the same time. You can do a shallow version, but try anything more serious and your brains squidges out of your ears. So instead we played a really good game, and then we followed that with a very quick game that was full of exceptionally stupid moves.

There is some kind of lesson in there.


I am getting a little bit better at chess all the time. My rank for daily games is now apparently 1087, which puts me in the 28th percentile on Chess.com. That’s very low, so I’m going to keep plugging away. If you work around me and feel like a game, then let me know because I’d love to play more.

Completely drained

I had various deeply emotional conversations with friends this week. They’re good, but I find myself completely worn out by the end of the week, desperately keen for a bath and some quiet and solitude. Just me, hot water, and the weird gloing-gloing noise that water makes in your ears when your head’s almost under.

On Monday I was at the Foreign Office for a tour. It wasn’t hugely interesting, but then I should have known that beforehand — buildings have always just been buildings to me. On Tuesday I had a free evening so I set up a giant monitor and used it to spur me to finish my book.

No, not really. I played Civilization 5 and may have had a late night. It’s impossible not to just have one more turn on this game.

I also had a meeting cancelled on me; cancelled, in fact, twenty minutes after the meeting had started. That felt very unpleasant, but I’m trying to put a positive spin on it. All the same, I could feel all of that pent up nervous energy before a presentation still trying to escape. So I went for a long walk. It seemed to help. Nonetheless, I think that’s definitely contributed to my feeling of being drained and washed out.

Global Day of Code Retreat

I met more of my colleagues, particularly the ones who do Java. I also met lots of other new people; some people from Makers who were just starting to learn (but were still very impressive), some people who were already well established, and some people who couldn’t code but were very eager to learn. We worked in 40 minute blocks and then deleted all the code that we’d written, which was heart-rending the first time. And the second, actually, and every time after that. What was most interesting was the variety of code I found myself writing, even though the problem stayed the same. I also ate a lot of deep-fried sweet potato fries, and that felt somehow soul-improving.

I also did a tour of our offices, and that was fun because I got to use my ACTING VOICE, which is like my real voice but more confident and willing to do call-and-response.

If I met my acting voice in the real world, I would hate it and be desperately envious of it at the same time.

I also started the morning with a discussion about existentialism and stoicism, because I did a degree that does not pertain to programming except in all the important ways.

It was loads of fun, and re-inspired me to be more test-driven in my developing. I love stuff like this, particularly mentoring, because it reminds how much I enjoy doing it. Sometimes it’s easy to lose sight of the fact that I’ve completely, ridiculously lucked out with this job.

This is how I work… give or take.

I’m really glad I got nominated for this by Amanda, because I’m on leave this week and so my weeknotes are pretty sparse.

Location: London, at least for the next two or three years. I’d probably swap it for anywhere, as long as the opportunity looked like a challenge.
Current Gig: Software developer for the Government Digital Service, which is part of the Cabinet Office
Current mobile device: OnePlus 5
Current computer: Work machine is a giant, 15 inch Macbook Pro. It is annoyingly heavy and a pain to cart around. My personal laptop is a lightweight Dell XPS running Ubuntu 18.04 
One word that best describes how you work: Calmly

First of all, tell us a little about your background and how you got to where you are today.

I have an undergraduate degree in French Studies, which at first glance doesn’t look like a strong foundation on which to base a career in software development. It is, but it’s not why I’m where I am now. I started to get interested in digital generally while at university, and when I was elected as the Public Relations person for a society I really got stuck into it — building an entire website and logo rebrand from scratch.


They’re still using the logo, but the website was definitely not worth saving. So when I left university I applied for the Civil Service’s Fast Stream programme, specialising in digital and technology. I was successful, and spent the next two years moving around government departments, doing a huge spread of interesting things while also learning to code in my spare time. I wrote software to try to balance a conference I organised, a prototype web service for the Fast Stream programme, and even mentored someone as they built a way for script writers to extract scenes from their teleplays. I saw an opportunity to be a CTO and seized that: I failed a lot but started to get better at managing people, at seeing the wider scope, and at strategic thinking.

In June of 2018 I rejoined the Civil Service, hoping to build up my technical skills and progress further in the organisation.

Take us through a recent workday.

I tend to be up at 0600 and out of the door by 0730. I catch a train to London Bridge and then walk the rest of the way to the office, because that way I at least do some activity and I get to see London glittering and stirring in morning sun. If it’s a Monday, I’ll buy a Big Issue from Sharon, who’s at the south side of London Bridge.

That puts me in the office for about 0815, and I get straight into my inbox and catch up on Slack. I hate Slack. It’s an all-day meeting that you can’t miss, and so once I’m caught up I’m unlikely to look at it again until lunchtime. Ditto my inbox.

I’ll look over any pull requests I’ve been assigned, and start working through the shortest ones first.⁰ Before I know it it’s standup time — an agile ceremony I facilitate. The point of it is to raise blockers, celebrate successes, and reassess work that seems to be dragging. We’re always done in 15 minutes, which means I can get back to my desk and write code for a couple of hours before lunch.

I try to bring my own lunch and find people to eat it with, thereby forcing them to eat lunch and do it away from their desk. I also get positive affirmation from people looking at my lunch and making admiring/jealous noises, which is really all I can ask for.

The afternoon usually has one or two meetings in it — I might attend a show and tell for the programme, I could be mentoring a colleague, or even just grabbing coffee with my manager to get feedback on how I’m doing and where I can improve. I have a brilliant manager, and they’re definitely a big part of why I’m so excited to work where I do.

At 1500 the team takes a pause to fika: we have a cup of tea and a civilised biscuit and chat about non-work stuff. It’s been really effective at bringing us all a bit closer together, but I still can’t not say it in the voice of Pikachu.


By 1630 I’m out of the door and on the way home, walking back towards the centre of town to catch a train home where I can get back to procrastinating instead of writing my book, like I ought to.

What apps, gadgets, or tools can’t you live without?

My phone

My laptop

My pen and a pad of paper

Apps: PyCharm is my software for writing software (how meta!); Twitter is a hellsite but also where many cool people hang out so I use it and try to avoid the nazis. I use Podcast Addict for, well, podcasts, and then on my laptop I’ll use Google Suite avidly. I also use the classic version of budgeting software YNAB, because otherwise I spend money like there’s no tomorrow. Finally, I use the Chess.com chess app to try to get less bad at chess.

So far I have got less good, so there are some questions to be answered there.


Finally, I have the Duolingo app, where I brush up my French and improve my Russian.

What’s your best shortcut or life hack?

Turn off all your notifications. I get notified on my phone if someone in my urgent contacts list calls, and I get notified on my computer if I have a meeting in five minutes.

That’s it.

It makes me a better developer and a significantly more chilled out person. If someone really needs you they’ll come and find you, or they’ll figure the thing out by themselves.

Alongside this: ask the question in the opening. Don’t send a slack message that says:

Hey, how’s it going?

Because then I’ll respond in two hours saying:

Hey, great thanks! You?

And then you’ll ask your question, and you’ve wasted a load of time. Give the question and as much context as you can in the message, and then I can devote my entire brain to it in one go.

If you’re thinking “But Jonathan, if I have to write a long and complex message detailing the context I wouldn’t use Slack, I’d write an email!”:

Yes. Please do that.

Take us through an interesting, unusual, or finicky process you have in place at work.

Here’s how I get my payslips:

  1. I access the guest account on one of four machines specifically kept for this purpose.
  2. I log into the VPN using my ID and password
  3. I open the special link to our HR software
  4. As this is the guest account, I don’t have Lastpass installed, so I need to dig around in my phone to find the password I’ve used for this.
  5. I log in
  6. I view my payslip
  7. I download it as a PDF
  8. I log into my Google Suite account, once again painfully typing in a long and complex password.
  9. I do my second factor approval
  10. I save the payslip into my Google Drive
  11. I log off
  12. I take a long walk, muttering blood curses on the providers of this software to the 14th generation and occasionally screaming

I should point out that it’s getting better. It’s still a righteous pain in the behind, and the worst thing is knowing how much better it could be.

How do you keep track of what you have to do?

Many To Do lists on many Trello cards on many Trello boards

What’s your favourite side project?

The Book, with which I have a love-hate relationship.

What are you currently reading, or what do you recommend?

Just finished Frankenstein in Baghdad

Who else would you like to see answer these questions?

I’d like to see any Deputy Directors or above in my organisation answer these, as I’m interested to see how it differs. Oh, and Jenny Vass.

What’s the best advice you’ve ever received?

“Don’t stand there, mouth agape, waiting for your turn to speak. Listen. Hear me. Understand the depth and experience and history behind these words, because what I’m saying isn’t filler in the film of your life before the monologue that wows the crowd. It’s worth a damn. Act like it.”


⁰ A pull request is a way for someone to add code to your or your team’s repository. They write the code they think should be added, and then notify you that they’d like to add it. You run through it and generally give feedback, and they iterate it until you’re happy. It’s a process that is completely fraught with social anxiety, but it’s also the best way we’ve got to ensure code consistency. Here’s an example of my team giving excellent feedback on one of my pull requests.