w/c 27th January 2024


The January blues have manifested for me this year in becoming slightly obsessive about the amount of daylight there is, when it is and how to make the most of it. Sick of the Met Office app making me do the basic arithmetic myself, I added a little note into my task management app over Christmas.

Thankfully we’re out of the sub-8 hour days now, as smlkjns_assistant can confirm.

And the prospect of coming home from work before it gets dark isn’t too far off.

Work has been a lot of staring at datasets or code lately, with more than a few hours spent banging my head against something that I know to be wrong but unable to see why. There has been some pleasure in figuring these things out eventually and, in what is perhaps the dullest accomplishment anyone has ever bragged about, I invested the time in finally cracking the spaghetti-like mess that is ethnicity data in higher education. If you ever find yourself having to grapple with such data, consider using my ultimate ethnicity schema reference lookup and buy me a beer as a thanks.

Engineering works have meant no train service this week and so after being almost driven mad by 4 hours on buses in standstill traffic on Monday I worked from home for the rest of the week. I think having me around so much has confused the cat a little, though thankfully she doesn’t seem to have grown tired of me yet.

Away from screens, I’ve spent some time fixing broken floorboards, which would be a generally unsatsifying task were it not for the excuse to perform a jump test.






w/c 1st January 2024


I ran power to my garage over the Christmas break, as the start of the grand plan to turn it into a workshop. The decision to use the space as a workshop was made somewhat easier by our discovery upon moving in that the shape of the alley at the back of our house actually makes it impossible to manoeuvre a car into it. So workshop it is.

Step two was to build a basic workbench – something I’ve found myself desperately wanting whilst trying to do various things over the past few months. So that’s what I built this weekend.

Aside from my palm sander exploding part way through all went relatively smoothly and I’m pleased with the result.

Here’s me conducting a rigorous lateral stability test before putting the top on:

And having put the top on, the followup load bearing test:

The end result, in it’s natural habit (enclosed by crap):

Ultimately this will be moved to the other end of the garage, with my plan being to build a partitioning wall to insulate and semi-finish the end it currently sits in. The insulated half will be a coding and electronics workspace, whilst the uninsulated half will be a woodworking and metalworking space. Timescales exceptionally tbc.


Yearnotes, 2023


My maximum distance from home by day in 2023.


w/c 27th November 2023


A double bill, given I failed to write any weeknotes last week as the result of some exceptional work shenanigans that started on Friday afternoon and continued to haunt me across the weekend and well into Monday. Thanks go to the patience of the friends we were hours late to meet on the Friday, the patience of the friend who visited over the weekend that I mostly miserably moaned at, the patience of the friends we visited for dinner on Sunday night that I almost exclusively miserably moaned at and the patience of Soph for whom I imagine my miserable moaning represented little change from the norm. In my defence, the shenanigans coincided with the onset of a horrid cold that hit its peak around about the time of my 7:30am start of work on Monday.

Anyway, it’s also been cold as hell, which has started me thinking about how to smarten up our heating. We have a standard combi boiler without any smart tech fitted and a timer interface that requires at least 20 mins stood on a stool to change. I want to be able to automate my heating, change that automation easily, control my heating remotely and of course do it all from smlkjns_assistant. What I don’t want to do however is pay hundreds of pounds for a Nest/Hive type system, pay ongoing subscriptions or to rely on a cloud service I don’t control.

I could try to figure out how to build my own OpenTherm controller but frankly that sounds bloody hard and I don’t want to risk being unable to control my heating at any point during that learning curve. So I settled on working with the existing dumb controls and building something to manipulate them. A SwitchBot would have been the perfect choice mechanically for this purpose but unfortunately requires a platform specific hub as well and whilst an API is available for onward integration, purely local control isn’t. What I needed was a poor man’s jerry rigged switchbot that I could integrate with my own systems directly.

Presenting the most janky of janky first version prototypes – a Pico controlled servo taped to the front of my boiler control. Not a good looking proof of concept but a successful one all the same.

And here’s a demonstration of integration with smlkjns_assistant:

The tape has held up surprisingly well so far, though obviously isn’t a long-term solution. In an ideal world I would 3D print a mounting bracket for the servo but there’s a slight issue with that, in that I don’t own a 3D printer. Next best thing might be to fabricate an aluminium mounting bracket. I think that’s likely the route I’ll go down, though a prerequisite for that is starting to turn the garage into a bit more of a workshop and a bit less of an unorganised pile of garbage.

Thankfully old fashioned pressing a button with my thumb has kept the house reasonably toasty to date, though the cat perhaps has other views.

In more analogue projects, I found some time to start dealing with the corner of our utility room where I had to rip off the skirting board to get the washing machine in. Given you can only buy skirting in lengths approximately the same as the total bumper to bumper length of our car, I introduced Soph to the age old art of cutting some shit up with a handsaw over your knee in a B&Q car park.

Here it is before:

It’s not yet finished because paint and filler takes forever to dry in this weather, so needs another round of sanding, painting and this time better taping on the join with the floor – but currently:

Let me know your tips for getting straight paint lines up against silicone filling irregular gaps please.


w/c 13th November 2023


I spent much of this weekend disassembling, moving cleaning and reassembling furniture. Much of that furniture was in the form of bookcases. Presenting – our wall of books:

Whilst I worked, the cat mostly stared at me with suspicion from various vantage points.

On a work front – here’s a quick note I wrote on the prospects for UK postgraduate student recruitment this week.


w/c 6th November 2023


A weeknotes written with a hangover, but a weeknotes all the same.

I attended this event on Tuesday marking 60 years since the Bristol Bus Boycott, with Guy Bailey and Joyce Morris-Wisdom who were both part of the campaign.

I walked around the park by my office a lot, despite its quantity of fallen leaves making it a beautiful beautiful slippery deathtrap.

We joined some friends’ 30th birthday celebrations last night (hence the hangover) which was great fun.

Otherwise, I’ve been thinking a lot this week about the way that the symbols of ‘remembrance’ work and are used in this country these days, given it’s that time of the year. If any examination of cultural artifacts or signifiers like the poppy, ‘lest we forget’ or the Cenotaph is to be a serious one, it must start from the acknowledgement that their meanings change over time and this change occurs as a result of culture at all points being contested. Given it’s been over a century since these things emerged, I have absolutely no time for people that try to insist something about what they should mean based on their history as a way to deny the less convenient truth about what they now evidently do mean.

My perception of remembrance when I was younger isn’t necessarily entirely reliable but as I recall it even only twenty years ago it felt substantially different. The notion that a key part of the thing to be remembered was that the sacrifice of the dead was a needless, wasteful sacrifice hadn’t yet been surgically removed. The evil to be observed was still for many the evil of war, the evil of those striving for war, the evil of those sending people to war. It hadn’t yet morphed into remembering an ahistorical story about how war was an unfortunate but necessary response to some other evil. And since, as I say, culture is contested, I remember witnessing people talk about their different understandings of what it was that was supposed to never be forgotten, or what it would look like if we did allow ourselves to forget.

I didn’t pay a great deal of attention in the years since then to how remembrance and its symbols was evolving, or who was winning or losing in the contest for their meanings. I was probably too young to notice if or how it intersected with the wars in Afghanistan or Iraq, so forgive me if I’m missing an element of the story there, but I largely wrote it off as another thing gradually eroded by the unique British talent for crushing banality, in which things become ossified into incrementally less coherent rituals, performed each time more meaninglessly that the last. I understood it as something that the right would try to intermittently deploy against others but in the sort of pathetic way that is best ignored.

In the past few years however that view has become less tenable as it’s become clearer that remembrance’s fate is something far worse. While the contests over its meaning may change it again in the future, for the time being a particular politics has established a firm grip on it. War and what we think about war is obviously, to anyone with half a brain, intrinsically political, so this isn’t a new politicisation of remembrance but the victory of a certain politics over others. That sense has obviously been heightened this year, given how remembrance has coincided with global events and how it’s relatedly been used by the right to incite riots on the streets of London, though I think that coincidence is illuminating as to what remembrance had already become rather than in itself the thing that has only now changed it.

Remembrance and its symbols, whatever they might have meant in the past and whatever well-meaning individuals may wish them to still mean, belong now to a pro-war culture. They belong to a right-wing, authoritarian, pro-war and pro-genocide politics and they are used to beat down those striving against war, suffering and injustice in the present.

Unless there is a compelling case that someone is simply naive to the reality of remembrance in Britain (say, if you don’t live in the country and have only just now read about it for the first time on Wikipedia), if they joyfully adopt its symbols – the poppy, the ‘lest we forget’ slogan, the Cenotaph – I am immediately deeply suspicious of them.

There will be certainly be more darkness and suffering in our future and I have no doubt that those in Britain cheering it on and shouting for more will be increasingly doing so with the poppy as their logo.

Anyway, whilst you wait for things to get worse, why not enjoy the Poppy Watch twitter account.


w/c 30th October 2023


My forays into home automation continue – this week with some smart bulbs that I’ve integrated with smlkjns_assistant.

Still on the to-do list: RGB control. Meanwhile I’ve built out energy usage reporting a little further, in case I was short of reasons to be obsessive about money.

At work this week I’ve been doing some fiddling with postcode data, specifically to work with POLAR4 and TUNDRA statistics. This data is available from the Office for Students but in a not especially accessible format, so I’ve made a public repository of just the basics here: Some of my earliest lessons in “perhaps Excel isn’t the right tool for working with this data” stem from trying to match irregularly formatted postcodes to 2.5 million row long look-ups and whilst spending a day watching a spinning Power Query loading icon does illicit a certain sense of nostalgia in me, I’m glad to now be doing this in a few lines of Python and a fraction of the time.

Speaking of “a few lines of Python”, I enjoyed Github’s contribution graphs turning spooky-themed this week. (can you spot the month in which we moved house?)

In the real world, we went to a bonfire and fireworks display at the local cricket club last night. Decent display, though they’d sold out of mulled wine, so I have to knock them down to 7/10.

As I have never and will never commit to my weeknotes being solely about the week they’re written in, which would be too grimly predictable and straightforward, here’s a bonus photo from last week’s fun (photo credit to Meg).

And here’s a photo from this morning of me and Socks soaking up some rays.


w/c 23rd October 2023


A much better week.

I spent much of my time at work picking through dense technical documents, sat in meetings, or grappling with broken code. In the course of that last one I developed a new niche grumble – that it’s absurd to me that the best way to merge two dataframes in pandas according to a value falling between a range is apparently… to not, and to do it outside of pandas.

As antisocial as that all sounds, it was nicely balanced with a healthy dose of top-quality socialising throughout the week. A colleague’s leaving drinks was a lovely opportunity to catch up with old teammates and dinner with a friend visiting the country (along with others) was a real boost. Then this weekend we’ve had some friends staying with us and lots of others kindly joined us for a very loosely Halloween-themed gathering at our house – thank you to all who came.

Exhausted now, and apparently not the only one…


w/c 16th October


A mixed week.

On Monday I went on a tour of Bristol’s Georgian House Museum, kindly organised and delivered by a colleague. The tour was excellent, in spite of the low-level sense of peril throughout prompted by the staff warning that if any more than four of us stood in the same room at once the floorboards may collapse.

On Wednesday I spent half the day in a state of medium dampness, having diligently looked up the weather forecast when I woke up to see heavy rain and then stupidly forgotten to do anything sensible about it like packing an umbrella. Whilst running between meetings on campus in that rain I stopped to check on a student who slipped and fell on a metal grate in front of me. She’d hit the ground hard and a little while into talking to me burst into tears. I think she was alright in the end, though it did leave me convinced that the day was a miserable one.

On Saturday we drove to Yeovil to attend a Yeovil Literary Festival event that Soph had been gifted tickets to. I would not say I enjoy driving and this was compounded by the route to Yeovil not being one I’m familiar with but as it turned out the drive was the most successful part of the trip, given the event was in fact taking place on an entirely different day. When I eventually managed to get out of Soph why, whilst we were sat in a coffee shop in Yeovil, she was staring at an email on her phone and shaking her head in horrified silence, we reached an out of court settlement that sees me paid an undisclosed sum (one lunch) in compensation. Still, Yeovil is nice and with the free time we suddenly had to explore we did a bit of shopping and wandering around before heading home, no more cultured than when we left.

Today started out better, given there was no need to drive anywhere for something that wasn’t in fact happening. We went to get some food in our local park around lunch time (shout out to Clarence Park Cafe, who boast a menu you would assume physically impossible to deliver out of a small hut). Unfortunately the afternoon ended up decidedly horrible, when on our walk home we found a cat that had been struck by a car on the side of the road, a two minutes walk from our front door. Having to pick up someone’s beautiful cat, carry them down the road and then drive them to the vet is a pretty shit way to end a weekend. We were supposed to spend the rest of the day working through a long to-do list of tasks but after leaving the vets neither of us wanted to do any of that, so we went somewhere else for a walk instead.

Here’s hoping next week will be better.


w/c 9th October 2023


I spent the last few days in Blackpool. I hadn’t been before and whilst its general outlines were roughly what I anticipated (“Weston-super-Mare, but big”) I’m embarrassed to say that the level of evident deprivation exceeded even my fairly well informed expectations. There’s a different feel to deprivation in towns to deprivation within cities, a difference that makes them hard to compare, so I haven’t been able to decide if Blackpool is the most deprived-feeling place I’ve visited. It may well be – certainly top 5.

Cool tower though, obviously.

The 4D cinema (the fourth D being… bubbles?) inside was not terrible.

And everything is improved by glass you can stand on.

My journey back was a classic British railways adventure, in which a direct service to Birmingham was deleted from the timetable, a minor delay to another service meant I missed a connection and spent an hour waiting in Preston, another minor delay meant I missed a connection and spent an hour waiting in Birmingham and two cancelled connections then meant I spent most of an hour waiting in Bristol.

I made it home eventually though, in time for the cat to fall asleep on me whilst we watched Ireland’s defeat. Thank you to our friends who kindly checked in on her whilst Soph and I scattered ourselves to different corners of the country.

Where the relentless faraday cage properties of trains allowed, I worked on a small side project  – a minimal web app to look up the proportion of pupils eligible for Free School Meals at English schools. It’s a statistic me and many I work with find ourselves referring to very frequently and I wanted a reason to experiment with building a live search function. Turns out building good search functionality is hard (or my Javascript is just crap, could be either) but I’m reasonably happy with the result.

You can find the app itself here:

Or I’ve also published the complete code here:

I’ve spent much of the week discussing events in the middle east with those I love and value the opinions of, as I’m sure many have. Whilst it might seem on one level an indulgence in incredible triviality to be concerned with how this has played out in the UK (especially because I do not share the assumption, that seems to prefigure many peoples’ thoughts, that the UK is at all a significant global power), in times like this the choice is often between that indulgence or allowing yourself to be suffocated by powerlessness as you stare into the void. This time around that choice has left me feeling like every piece of news has punched me in the chest twice: one on account of the events themselves and again for the cacophony that immediately follows of British politicians lining up to loudly express their support for war crimes.

I have no interest in trying to jump through the paragraphs of hoops that are apparently necessary to get out the way before you are allowed to actually speak. As far as the British media landscape is now concerned after all, no amount of clarifying the evil acts you consider evil or contorting yourself around meaningless catchphrases about the rights of states will ever in fact grant you that permission to say what must be shouted.

2.4 million people live in Gaza. Half of them are children. It is one of the most densely populated places on earth. There can be no such thing as a targetted strike, even if those dropping bombs hadn’t dropped any pretenses about them and adopted collective punishment as their official policy. What can cutting off water and power to over a million children as you attack them from the skies be other than a war crime?  And after all that the people of Gaza have suffered, if the years of siege end with their forced displacement, a second Nakba, it would be a catastrophe of unimaginable proportions. It must be stopped. If it cannot now be stopped, everyone who gave their enthusiastic consent for it to happen must never be allowed to forget that they did so.

Free Palestine.


w/c 2nd October 2023


This week has been somewhat backwards in terms of its structure for me, given I’ve had a social engagement almost every weekday evening but now find myself with a nearly entirely free and unplanned weekend. Given I’m determined for weeknotes to be a format that I use only when and how it works for me, rather than a structure of obligations that I impose on myself in pursuit of a Linkedin-influencer’s notion of discipline, I would have been perfectly happy to have an excuse to skip writing them this week or to write them late were I busy. It was not to be though and instead I find myself with the time and inclination to write again, risking establishing a highly regrettable reputation for consistency that I’ll have to strive to shatter further down the line.

I try to do a few bits of hobby coding on my morning train journeys when I go into the office, when the caffeine reaches my brain in time. This week I’ve built some very quick and ugly reporting for all the energy usage data I’m now gathering from around the house. Soph’s patience for me excitedly talking about how I can now accurately compare the costs of our dishwasher’s different modes has unfortunately turned out to be limited, though no one’s perfect.

The downside to collecting lots of energy data is that you end up with lots of energy data – I’m adding about 100k records a week at the moment – so I’ve built a bit of a database ticking time bomb that I’ll need to deal with soon.

Elsewhere I’ve been tinkering with using the smlkjns_assistant engine to generate summary messages for my task management app, though that’s still very much a work in progress.

I bought a new phone earlier in the year that has a much better camera than my previous one, which almost immediately caused me to run out of storage space in Google Photos. My solution up until now has been to turn off photo backup and hope that nobody steals my phone but given I largely use my camera these days to document every second of the kitten’s life, I have a newfound interest in ensuring I don’t lose everything. Today’s project is therefore to install Nextcloud on a Raspberry Pi. A perfect Saturday afternoon.

The cat continues to be outraged if she ever suspects she doesn’t hold our undivided attention…

…and has perfected a look of profound betrayal whenever we dare to leave the house.

Unsurprisingly, given the HS2 news, I’ve read a lot this week talking about or around the fact that running the British state has become an exercise in managed decline, none of which I can bring myself to link to. Instead, I recommend this piece by Daniel Trilling in the LRB (whose app I’ve been overjoyed to discover now has a dark mode) on his experience applying for German citizenship.

Tomorrow, as my one planned weekend activity, I’ve been persuaded to go along to this event with Raynor Winn. It’s part of Weston Lit Fest, which I am apparently the last person to find out is a thing that exists.

Lastly, I’m going to Blackpool next week, so recommendations for things to see, do or eat are welcome – particularly any that either challenge or reinforce my view of the place as “what if Weston-super-Mare were big”. The one recommendation I have received so far is this, if that helps to set the tone.


w/c 25th Sept 2023



I’m going to try out writing weeknotes. I don’t know if I’ll keep them up and I haven’t got straight in my head yet the purpose I want them to serve, I’ll see if I can figure that out as I go.

Based on others I’ve seen write weeknotes, no one seems to agree on what they are or what they’re for, which typically manifests in one’s first weeknote being a dull monologue on how they help synergise your strategic leadership style etc. Not doing that.

The explanation of weeknotes that I’ve seen shared most widely is written by Deloitte, so I’ll be trying my best to do the opposite of whatever they suggest.


A friend bought me an electronics kit for my birthday earlier in the year that included a Raspberry Pico W. Since then I’ve been experimenting with using Pico Ws to setup home automations integrated with smlkjns_assistant.

Pico Ws are incredibly cool, mostly because they cost peanuts. Micropython can be a little tricky for dummies like me who are used to being able to work in python without ever once thinking about memory management – and it’s taken a bit of trial and error to get to code that remains stable when left running for days on end. Currently I’ve got two running – one to relay commands from smlkjns_assistant to smartplugs around the house and another to query those smartplugs for energy usage data and send the stats back to my server.

In the analogue world, I put some shelves up in our utility room. I’d put this off for a while after realising the wall was only plasterboard with a cavity of several inches between it and the brick behind. I found myself worrying about what sort of plasterboard fixings I should use in my sleep, which is obviously a ridiculous state of affairs, so I got over myself and bought these eventually. About a third of the pack turned out to be duds which I then had to painfully remove from the wall with pliers but I got there in the end. The room is now much tidier, which is good because we need to use it to store all the plants we belatedly realised are toxic to the cat.

Which is a good segway to the cat. We got a kitten recently. She’s beautiful and we love her. She is called Socks McClane because we were too cowardly to commit fully to the Die Hard reference. Her hobbies include destroying everything we own and being carried around on our shoulders.

My dad, in line with his long-running inability to be anything less than immediately outstanding at any skilled craft he turns his hand to, made this for us:

Her impact on my productivity when working from home is mixed. Generally she likes to sleep on my lap, which pins me to my desk when I might otherwise be getting up to wander around and stare out of windows (having lots of windows to stare out of still being a novelty when compared to the flat we were previously in). She tends to have some very strong opinions when I’m on calls though and her preferred way of making herself heard is a well positioned claw inserted into the kneecap.

Speaking of work, I’ve been doing lots of prep work over the past few weeks to allow me to produce powerpoint decks via python quickly and in my own standardised format, for which I’m using python-pptx. I’ve similarly built a bunch of classes previously to produce matplotlib plots quickly to a set format and I’ve really started to feel this week how powerful the combination of these two resources is. I’ve been able to deliver some really detailed pieces of analysis that look great much faster than I ever would have been able to before and with very few lines of newly written code. I’m excited too for the accruing benefits of repeatability with this sort of setup – where I can rerun a piece of analysis with updated data in the future and have it spit out new slide decks with next to no additional work from me.

Given I was on track for a straightforwardly successful week though, the universe naturally intervened and I ended up spending most of Friday afternoon struggling to help a member of my team figure out why two datasets weren’t being merged correctly. Neither of us could find the issue for hours, although when we had just reached the precipice of madness we finally figured out that the issue was a 0.005 second (5 bloody milliseconds!) variance between timestamps. Why does one of our systems produce timestamps that look like this you ask? I don’t know, why does evil exist?

Finally, in bed this morning I read this fascinating article in the FT (paywalled) about a Japanese village where a toddler is the first birth in more than two decades. If anyone has further reading in the “Japanese Children of Men” genre, send it my way please.

That’s it. See you next week, maybe.