Weeknotes May 4-7 2021

Hello there. I’m having a go at weeknotes again, to see if there’s any chance I can do it as I venture into a world of freelance where time is more under my control (?). I’m going to try to keep things lightweight – gentle thoughts, poetic reflection, and interesting links. There may be no pictures though.

Tues 4 May

Thanks to the Bank Holiday, the earlier day had been a hybrid day of Monday and Tuesday (Muesday?) and some of us were still groggy from the weekend and the wind. I bounced a bit between checking through company policies for risk assessment (relentless, but oddly fascinating), clearing some tech debt (fun, but never enough time) and running a 1-1. Halfway through the 1-1, I realised it was likely my last one with this person, which caught me off-guard.

Had a nice catch up with A via Signal in the evening, while discovering RadioReverb is now listed on RadioDroid (also on F-Droid), which is great news.

Video: An ROI-based approach to technical debt – how to review and think through what debt to attack. I suspect the same things can be said about other debt, too: effort vs risk and time.

Article: Having a Healthy Pull Request Process for Teams – or how to discuss your work with others professionally.

Wed 5 May

I hadn’t realised how much I missed travelling by train until the hedges started rolling past. Even the rush to get coffee and a ticket – a familiar and also novel routine now – hadn’t triggered any real memories. But as the leafy mallows and cow parsley slid past in the foreground, set against the faraway wind turbines, I settled back into that slow glide that blurrily marks the edge between home and work life.

Thu 6 May

Well, some celebrations in order. The job role was defined back in January. The ad went out in February. We had a few interviews, we went to a shadowing fortnight, we got feedback from the Board and the whole team, and today we made a decision. I have a … "successor". A new Head of Tech.

Looking back, I’m pretty pleased with how the process has gone. I still don’t know if it’s a hard role to recruit for, or if the ad was ‘good at filtering people out’, or if the time is just generally strange, or what, but it was fairly different to the usual avalanche of CVs that you get when looking for a juior developer.

But here we are, we have someone we’re happy with, and the future, as they say, lies ahead. I’m not sure how I feel yet. Some relief, some excitement, some awareness it’s just a beginning and there are now a few weeks of actual handover. But things are going along as hoped ("planned" would be too strong a word) and sometimes the line between luck, strategy and synchronicity just can’t be discerned.

Article: What does the Schrems 2 judgement mean for cloud computing – actually really fascinated by the state of international data privacy, even if I roll my eyes when I tell people I’m looking into it, and it means filling out risk assessments is tricky.

Fri 7 May

Caught a train into Brighton again. I’m picking up and returning a few bits and pieces from the office while I can, and took the opportunity to meet up with a couple of old friends and contacts from many years ago. I wandered through the north Laine as the shops and cafes opened up, and found it strange to feel so normal. I popped some film in to be developed, and popped into my old hairdressers to say hi. I chatted board games at Dave’s, and watched the world go past from a warm bench in Kemptown.

I even lay on the grass for 10 minutes and watched seagulls and pigeons soar past. It’s been a long while since I’ve done that. Far too long.

Brighton train station's arched roof, seen through a train window

Weeknotes 2020-04-09: Creative Spaces

A crow flying in the sky set against some green leaves

Thuresday1 evening before Easter weekend and then a week off, and look I sort of just want to drink beer and go and see if the shops have a little milk chocolate bunny for my wife, so I’m going to make this quick. Sorry, internet crowd, you just got to roll with it sometimes.

1 "Thuresday" is the ancient anglo-saxon spelling for Thursday, from ‘Thuyer’s Day". Thuyer ruled over the season where there was still work to do in the fields but you knew it was gone Woden’s Day, which meant it was all a bit confusing. Thuresday is definitely not a typo.

In general, it’s been another busy week crammed into half-days, busier for going on leave next week. We’ll be lining up VR holidays in a few years, I’m sure.

On the whole, I’ve been rather enjoying working from home full-time, it must be said. I’ve been able to gather my wits a bit more – as notes previously, I feel a bit more secluded, a bit more able to use not just my brain, but my whole body and even out to my environment to do my thinking.

This sort of fascinates me. I am a very hand-wavy person, in that I move my hands when I speak. I think ‘physically’ – maps, blocks, construction through the confines of real-world space. I really do think it helps me to use my body more, and that’s not just being able to stand up for health reasons, but being able to move around and explore the actual space around me. It’s lilke an artist’s studio, but for code and engineering, for team structure and work interdependencies.

Having realised this, what can I do to capture it and build on it? How does it translate once we all get allowed out of our houses again? Does anyone else get this?

I have a few fragments in my diary which caught my attention.

One. I woke up at the right time after a bit of a proper sleep, and immediately felt the difference. I woke up with an enthusiasm of "what can I do to push change", and this probably ties in with having my own space to think. In short, I am feeling somewhat chipper, spurred on by some ideas for personal side projects, a year on solar power, and perhaps by more time in and around birdsong, Birdsong is everything. Perhaps we should start piping it into our offices.

Two. After writing my last unweeknote, I ended up reading Chuang Tzu and the latest issue of Fiddler’s Green and found ‘a way through’. When things are busy and squeezed, we can relax and yet continue to be productive by a ‘Third Way’, ie not just "busy doing stuff" and not "stopping and doing nothing".

The Third Way is to be curious, tread lightly, and enjoy the ride. We can maintain an interest, but not push to deliver. We can seek both efficiency and revelation (what others would call ‘innovation’) by being amused, asking intriguing questions, and exploring the space. Hopefully your work allows you to be like this sometimes. If not, you may be stuck between feeling "busy" and "lazy".

That’s me done, I’m off to the shop. Here are some links of other stuff I’ve been up to, just in case you want more…

Tweaking towards a more minimalist Slack

Doing a few bits of comms tweaking recently to try to improve my overall, you know, experience. Here’s my latest Slack setup:

  1. Collapse all Channels and DMs in the left hand menu – ones with unread messages should still appear or get flagged up though (unless this is an option?), so you know if anything is waiting:

Screenshot of Slack channel choose, showing everything collapsed

  1. Use Ctrl+. (dot) to close the thread sidebar (or Command+. on a Mac).

  2. Use Ctrl+K (or Command+K) to open the quick channel chooser. This handily defaults to channels and DMs with unread messages, so I hit Cmd+K, Enter, sort out replies etc, and repeat until done.

Oh yeah, and turn off all notifications, of course. Only check Slack when you want to. Send notifications to email unless absolutely urgently needs to be sent to your phone (eg if you’re on tech support). Always provide off-Slack routes for people to reach you about anything truly urgent.

Not quite weeknotes

Staccato crashes, lined up by some global synth machine stuck on an algorithm deep in layers. I currently feel a bit like each day rolls over me, into me, like a heavy square wave. 5 brass hits in a row. Which is all why I’m posting a quick midweek week note, to note that my weeks aren’t really geared up for writing weeknotes at the moment…

Over on my personal blog, I wrote about repairing disrupted rhythms. The rhythms and loops are in place now, but there’s not much downtime. Wake up. Do morning stuff, get kids ready, have breakfast, etc. My wife and I are juggling homeschooling and our (remote) work by splitting the days half-and-half, tag-time at 1pm.

It’s great in some ways – I love spending time with the boys and I do like remote working, but I’m squeezed for time, and haven’t worked out how to take breaks properly yet. So 9am-1pm working, then bang, the kids come in to tell me time’s up, and then it’s 1-5pm delving into phonics, maths, anglo-sarong history, trampoline fixing, or whatever we decide it’s time for. Dinner. Bedtime. Tidying. Collapse. Sometimes the morning and afternoon swap over, but it’s the same endurance run.

It’s not too bad during the day. It’s only around 6pm I really remember I haven’t taken a break, or 5pm if lunch was too small.

Writing in the evening hasn’t been foremost. I’ve been finishing off watching This Country on iplayer, migrating my own websites to a new server, and watched Tarantino’s ‘Once Upon a Time in Hollywood’ over a couple of evenings.

So weeknotes may be more sketchy in the near future – if that’s possible. There’s certainly interesting stuff going on. Maybe I’ll try something more sporadic, but specific, when the time is right – my own personal retro, or something.

But anyway, outside there are three new moorhen chicks on the local pond. Welcome to Spring.

2020-03-21: The Clock with no Hands

We lived around the clock, moving through the days and nights with little regard for time.” – Patti Smith, M Train

Weeknotes? I don’t even know what day it is any more. Existence ticking from one bubble to the next, a world im which routine is a fiction, regularity is an advert.

No daily weeknotes scrawled down electronically this week. Been bouncing, bouncing, bouncing – a catch-up meeting, 1-1, board meeting, planning meeting for the planning meeting, another board meeting, catch up meeting, bringing a delivery together. All on remote, all figuring out tools and processes and environment on the fly.

But the real bouncing has been emotional. Mine are mostly ok, I’m decently resilient – although I’ve been letting it out every other day or so. I know my ride, my limits, keep it in context and vent it as needed. Still a struggle, but no such thing as a smooth ride. What gets me is the amount of uncertainty I see in the eyes of others.

From the school gates with parents diminishing in number, to the supermarket shelves scooped hollow like sunken eyes. The uncertainty is bad enough, but human reaction kicks in to add layers to it. All we can do is to be human. We’re smart enough and have the tech to figure this shit out, right?

But honestly, none of us out on the streets are in our comfort zone right now. The pressure comes out in different ways, depending on how you’re affected. But it’s a case of trying hard – really hard – to spot the good news and smiles right now. But, they’re there. The bumblebees buzz and the birds sing.

Thursday hit me when I woke up – I have bits inside me which ache when I’m getting close to a breaking point, old memories of a ghost appendix and a throbbing right leg. All of the above was closing in, building shudders into my thoughts, and it looks like next week will be even weirder. They announced the school closures and that threw all of us out here, already trying to balance our lives and keep families strung together with wash baskets and alcohol. I watched as everyone said goodbye to our Reception year teacher, all of us holding it together as the class that she loved was snatched away, that’s it for the year, these things happen.

I don’t know how to explain that feeling in stand-up meetings.

Thursday. I could push myself through another day, but I know how these things go – without rest, it’s downwards, downwards. Need to lift the pressure before it’s not your decision any more. Throw out the nibbling goldfish sharks, the paper cuts and the back roads. Get one thing done, breathe, move on, every day give yourself a present. Got to keep dancing.

The schools are out next week. Let’s see how managing uncertainty goes with even more to figure out as well.

===

Practically, I’m lucky in that I quite enjoy working from home in many ways. Over the years, I’ve read about hermits and honed a few, basic self-reliance threads. I’m sociable, but I mainly stopped going to social ‘events’ years ago when I turned father. I’ve always hung out on-line, and have seen the benefits of working via shared document, etc. Personally, I don’t mind that change of scene too much. For now, at least.

I was a bit indulgent 6 months back and indulged in an ex-display summer house from the local garden centre. It’s been my man-hut, and I’ve resisted filling it with gewgaws to keep it a space for ideas and relaxation. A bookshelf unit, couple of photos, a gas stove, a wooden chair and an Egyptian drum occupy their spaces, and that’s it. A Zerone wi-fi extender slots into a USB battery pack to give me decent signal, and I haven’t noticed any problems with video calls at all. The battery on a decent laptop is enough to last a morning, and I can charge it mostly up to 100% over lunch – quick charge is pretty cool.

The detachment of the hut/shed/cave is hugely important to me, and it was great to have some sun on Monday and Tuesday lunchtime to be able to retreat – I find it easier to think through stuff with nature around me, and the bookshelf and chair mean I can flit between standing and sitting to match my work. That detachment also means I’m less likely to think about ‘real world’ problems, and check the news, etc. God knows where I’d be if I read the news more than twice a day right now.

It also reminded me how ‘restricted’ I feel when I’m in the office – even though I have my own desk, I don’t feel like I can move around, put music on, or even just hum or ‘a-ha!’ to myself. Personal space for creative, deep-though work is an untapped potential, in my book. I wonder if anyone else has this relationship with work that others would describe as ‘technical’ or ‘managerial’? For me, it’s all problem-solving, and I think things through best when I can visualise it, imagine it as real, and move my body around that space as much as possible.

===

Anyway, it’s a rollercoaster situation. I’m dealing with it. Most days I feel good – often even more positive than usual – and every now and then blam and then back we go. What’s the phrase? Oh yeah.

May you live in interesting times.

If you’re interested, I’m posting small, general updates (with photos, natch) over at my Disposable Evidence newsletter. It’s not much but it’s keeping me sane,and you’re welcome to join me.

12th March 2020: More thoughts on structuring info flows

It’s been an interesting couple of weeks, so I’ve gone back to form and bashed out some weeknotes for the last hour. The first two parts touch on some aspects of software engineering which might be of interest to senior developers, and people managing engineers. The third part describes what we’re up to around Coronavirus preparations and remote working, but is more about how to deal with information in a crisis.

Oh yeah, here’s my personal intro in case you’re interested.

Engineering is cartography

It’s been a code heavy week, down in the bowels of the codebase. Last week I’d expected half-expected to be managing the work for the team bringing together a new, complex release, but the team have stepped up and sorted this out. It’s actually been really nice to get my teeth into some proper engineering. Headphones on, Slack out the way, IDE in full force. There are moments when software engineering is that odd cross between the Matrix and an artist’s studio, and one can absorb oneself not in code, per se, but in a system. The joy is not the code, but in the flow of information that the code allows, how the assembled parts work together to make something elegantly smooth, and what I now think of as the ch’i of circuitry emerges into something stable, formed, useful.

Specifically (here comes the science bit) I’ve been adding a cache file to the code that runs every time a page is loaded, and have naturally hit two of the chief tenets of software engineering, namely:

  1. Cache invalidation is always harder than you figured, and
  2. Developers (yeah, yeah, including me) always expect things to be easy.

There were a couple of hitches – the first was a foreseeable one (wow, different sites use different folders, duh), while the other was less so (Linux folders are case sensitive, but Windows ones aren’t, riiiight). Still, both fairly minor, and when you have the problem space “loaded into your head”, a good developer should know where to hit it.

I think of this as “interjection points”. A good software engineer will, I believe, not give you a time estimate to fix something, but a time estimate to map a system out in order to understand it. If the estimate to fix it doesn’t fall naturally out of that, then the engineer needs more sketching experience, or your codebase is about to be unmaintainable realllllly soon. Pray it’s the former.

Agile development requires continual balancing

After the caching was committed and tested, I fixed up some other fundamental code which was breaking our unit tests. While the code structure itself was ok, our outdated phpunit version wasn’t happy with it, so it was a mix of a bad stack, dodgy unit testing, and slightly whiffy software engineering. Each, any and all of these three are quite hard to explain, it turns out. “Upgrading some software” is the easiest, but led to a big story-point estimate during sprint meeting, but I managed to set out a day to look into it, to see if we could get a quicker fix through Re-Engineering the code.

In the end, yes upgrading phpunit is the right thing to do, but this was the wrong moment. A ‘workable fudge’ was put in that half-hit all 3 of the requirements (code works; unit tests run; engineering is sane), with the caveat that it would be taken out with the upgrade, expected in a few months.

This has taught me a few things:

  1. Acknowledging a bigger issue and having a timescale for fixing it allows you to have more authority when putting the problem off in the short term.
  2. Sometimes you just have to ask for time, instead of trying to explain yourself. I’m pretty sure I said that recently too.
  3. Software development is always a balance, and always has a context of delivery. This constant act of balance is fundamental to agile development on short timescales. FUNDAMENTAL.

Anyway, we’ve saved ourselves the huge upgrade for now, so it was a good morning’s work.

Reacting as management to a crisis

Those two coding tasks were basically my commit for the sprit, which freed me up a bit. I had (or have, still) varioius admin things to do. But Wednesday-leading-into-Thursday started the government and media ramping up on taking the Covid-19 pandemic more seriously, and it became clear that we needed to ramp up our own precautions and efforts to match. As a company, you need to follow the course of the news sometimes. Is it a “crisis”? I don’t know, but I do think that if people are worried, you should treat it as one, but you should desperately try not to panic yourself.

In general, we’re lucky to be a digital company (whereas others are not so – most of us can and do already work remotely, so we have a lot of infrastructure in place, and had cobbled together some general thoughts on remote working more some months ago.

However, the current scenario throws in a few extra challenges, namely:

  • Information updates fast, in both the wider world and inside the team
  • We may be ‘hyperdisrupted’, in that nobody may be allowed into the office at any time
  • People are personally, individually more aware and anxious, for good reason

I’ve learned (sometimes the hard way) that a crisis needs clarity, not vagueness, and the best thing you can do to help people get a sense of psychological safety is to let people raise concerns, get clear actions in place, and be transparent. I’ve not done these in previous times, and it tends to end up pretty badly. Things might ‘survive’ in a holding pattern for a while, but it leads to a lack of trust, and ineffective collaboration, even before the illness actually hits.

(I do wonder if some mentalities prefer the vagueness of an ongoing crisis, the idea that there is a situation or an “enemy” to feel like there is a purpose, but that there is no real will or skill to turn that into something more progressive and real. Ah well, I enjoyed a day of contingency planning anyway.)

As per software engineering, I’ve been thinking through information flow and how the structures that get set up support and/or hinder that. My overall strategy has been along the lines of:

  1. Gather concerns and blockers: Start a Slack channel. Ask initial questions about basic challenges, like working from home. Send out a survey using Google Forms. The key thing here is to start a pipeline for information, not to capture every single possible problem.

  2. Capture everything clearly: Started a new Google Doc to cover guidance, decisions, questions, ongoing actions – half for me to keep track of things, but half as an instant information-publishing route. Put the important stuff to the top, and don’t be afraid to remove or move it once it’s no longer important – for instance, washing hands and getting anti-bacterial gel started off as the top priority, but now it’s a matter of course.

  3. Work out how to make decisions quickly: This is not something we have an assigned role for. We adopted a ‘rule of 3’ among the (4) senior management team members, taken from Rick Falkvinge and the Pirate Party as an approach to avoid hierarchical bottlenecks.

  4. Capture decisions relentlessly: People are away a lot, which is a real challenge if things are moving fast. I’ve taken to adding all decisions into the single Google Doc as appropriate as well as adding a comment to note which day the decision was made on, as well as including the decision in a separate “update log” at the bottom of the doc. Hopefully this way I can just point people at these if/when they want to catch up. And then use Slack and daily stand-ups to communicate important (team-wide decisions out. Otherwise, make sure relevant people are told individually.

  5. Address actions quickly: Ultimately, trust in management comes down to whether concerns are listened to, risks are seen to be understood, and both are addressed proactively. (Unforeseen events are OK to be addressed reactively, but only if they were truly unforesee_able_. As a kicker, events are always more foreseeable a) if you’re not already responding to a dozen other things, and b) in hindsight. Tchah.)

So, that’s been fun. My main disappointment so far is not being able to think up a decent codename for the day for trialling everyone being remote, except for ‘TOTAL REMOTE’. I’m sure something will come along to best that though. I can feel hubris in my bones. Til next time.