Pathological culture
I’ve been really enjoying Gene Kim’s recent interviews with Ron Westrum (Part 1 & Part 2).
There were two things that really struck me in part 1:
- Pathological cultures make people ill – we know this from the Whitehall study; but that’s fine for the bosses, because it’s not them who are getting ill, it’s their behaviour that’s making their minions ill.
Ron (00:45:59): … “Every day when my father drove to work he would get sick on the way to work.” That’s what living in a pathological environment is like. Because basically, the pathological organization is oriented toward pleasing the people at the top. It is what they want, what they need, and so forth, that drives the organization.
Ron (00:46:46): … But in the Whitehall Study what they discovered is, the chance of having a heart attack went down every level you went up. People on top had the least heart attacks, people on the bottom had the most heart attacks. Now, consider that basically everybody in Britain, in principle at least, has the same health system. So what was the difference between the top and the bottom? And the answer was power. - ‘Organisational justice‘:
Ron (01:31:56): Well, first of all, the good leaders are honest. So if somebody does something, they get a reward for it. In organizations where the leader isn’t honest, somebody else who didn’t do it will get a reward for it, all right? That destroys your sense of organizational justice, when the wrong person gets recognized for something, and shows that the people on top don’t know what’s going on.
Part 2 gets deeper into the idea of ‘technical maestros’ as leaders, with some excellent case studies of organisations who had such leadership and conquered, but also organisations who had such leadership, and chose a different direction, then failed badly.
What follows are some observations about pathological culture part of the Westrum model (from being inside one long enough to know):
- Power oriented – the bosses are in their high positions because they know best – everybody else is failing, because they’re not correctly doing what they’re being told.
- Low cooperation – because what’s the point – doesn’t help with following orders.
- Messengers “shot” – because the message they carry is subversive and wrong; an unwelcome distraction that might turn people away from doing what they’re told.
- Responsibilities shirked – because the high command is responsible for everything.
- Bridging discouraged – again, a distraction from following orders.
- Failure leads to scapegoating – the only reason for failure was not following orders correctly, therefore you’ve failed as a ‘resource’.
- Novelty crushed – because it’s just another distraction from getting on with the dear leader’s perfect plan.
NB I’m being very particular in avoiding the word ‘leader’ here for people who aren’t actually leaders. We very often use ‘leader’ for people in positions of authority who are commanders rather than leaders:
The people at the top of pathological cultures aren’t just reaping the rewards of their power, they’re also certain that they know the one true way to success, and the only thing thwarting them is the useless minions failing to follow orders correctly. The underlings are the ones causing the problems, and they should be made to suffer for it – hence the health (and mental health) issues for everybody down the pyramid.
Furthermore, command and control is just a really lazy approach to doing things, whether it’s running a company or running a country. And lazy begets more laziness, which is why such bosses are always chasing after ‘one neat trick’ rather than doing the hard work of empowerment. Unfortunately there are two entire industries of consultants and analysts pandering to the shortcut market, which is why we see so much cargo culting of things done in successful places (e.g. Spotify model etc., covered well by Andrew Blain in his recent ‘The Usual Suspects (Operating Model anti-patterns)‘).
Filed under: culture | 2 Comments
Tags: command, culture, health, leadership, pathological
My Dart journey so far
Dart is the main programming language we use at The @ Company, and so it’s becoming something that I’m frequently talking to people about.
I first heard about Dart chatting with Derek Collison about Go after the FITE club meeting that Alexis Richardson brought him along to when he was over doing due diligence on RabbitMQ for the VMware acquisition. It wasn’t that long after he’d left Google, and before Docker, Cloud Foundry etc. (so before Go really took off).
And then it vanished from view. Go got all the traction in the infrastructure software space. This is why I sometimes joke about Dart being ‘the ginger cousin’. And then Flutter came along and started pushing Dart up the language rankings.
And then Flutter 2 dropped, adding web and desktop to the Android and iOS targets. And Canonical are jumping in with the new Ubuntu installer, and suddenly this is the train that it seems everybody is jumping onboard.
I was chatting to Justin Cormack about Dart over the past couple of weeks, and his observation is that it’s quite Erlang like. The choice between ahead of time (AOT) native compilation and just in time (JIT) provides for some interesting trade offs between startup time and long term runtime performance.
Async/await and callback handling is very JavaScript. But there’s strong types, like Typescript. There’s no static linking like Golang, but the system library dependency layer is VERY thin (~2MB). And there’s an actor model built in, and isolates.
The pub.dev package manager is one of the least bad I’ve seen (though it’s still possible to end up in that Gem thing of different chunks of code insisting on different versions of deps).
‘Interesting Features of the Dart Programming Language‘ by Renato Athaydes provides more detail, and I also like this ‘Introduction to Dart VM‘ by Vyacheslav Egorov (more on my Dart pinboard tag).
My most recent adventure with Dart has been ‘Running Dart on Arm Servers‘, but you can get started in the browser with ‘DartPad’ tutorials.
Filed under: technology | Leave a Comment
Tags: actor model, ARM, Dart, DartPad, Erlang, Go, golang, pub.dev
Kerpan’s law of product management:
Good products are defined by what they aren’t.
Patrick Kerpan, CEO, Cohesive Networks
Swan’s corollary:
Bad products are the integral of every stupid little feature request.
Background
A colleague was recently bemoaning GitHub not having a feature for a markup he was using. Competing products like GitLab had the functionality. The GitHub forums had long threads of other people asking for the feature. What was wrong with them, denying something that was obviously in demand?
You can do that with an Action.
Me
That seems like a sledgehammer to crack a nut.
Them
Works tho, and saves them from supporting nut crackers, small hammers, medium hammers etc.
Me
Avoiding the exploding test matrix of doom
Back at Cohesive when I was working on the VNS3 networking virtual appliance it was commonplace for customers to ask us for extra features based on popular tools. They knew that the virtual appliance was just a Linux base with a bunch of open source tools wrapped together with our proprietary glue to provide an API and user interface. So what harm would there be in adding just one more tool to the mix?
In isolation every request for Varnish for caching, or HAproxy for load balancing, or Ngnix for reverse proxying, or whatever seemed entirely reasonable.
But in aggregate those feature requests took us to the exploding test matrix of doom. Worse still, everyone wanting HAproxy might want a different version, and a different way of configuring it, and a different way of logging. The exploding test matrix of doom was exploding in every direction. And that’s why we held firm against all of it – if we succumbed to one little feature request then it opened the floodgates to them all, and that would inevitably lead to an unmanageable mess.
The universal solution
We fixed the problem at Cohesive by providing a Docker subsystem for plugins. You want Varnish, have a Varnish container. You want HAproxy, have an HAproxy container. You want different config, that’s just fine.
The key is that the subsystem introduced something like the cloud ‘shared responsibility model’. We were responsible for the subsystem working, the individual users were responsible for what they put into it. For sure, we seeded the endeavour with a bunch of samples and examples that were often used with little or no modification; but crucially we’d drawn a line around what we were responsible for (testing for).
Actions is GitHub’s universal solution
The answer to almost every question about extending GitHub functionality has become ‘you could do that with an Action’, at which point the discussion moves to the distance between ‘could’ (a hypothetical possibility) and ‘can’ (something that is achievable right away, maybe with a bit of light web searching)[1].
This gets GitHub out of the business of responding to every stupid little feature request, and bloating the product with lots of knobs and dials that most users never need or want.
Closed to Open to Ecosystem
The whole reason why people need to make feature requests in the first place is that a lot of software (including GitHub) is closed off to end user modification.
Things change when software becomes open, because anybody can take it and change it to suit their needs.
But the real magic happens in ecosystems, where people are sharing their solutions with each other for continuous spirals of improvement and reuse.
We certainly saw benefits from the Docker ecosystem to VNS3 users, and the same is very visibly happening with Actions – value is being provided to GitHub customers by other GitHub customers, without GitHub themselves having to get involved. And of course Docker is a big part of the Actions landscape, so GitHub users can reap benefits from both ecosystems at once. Win, win, win.
Conclusion
Actions is more than just a smart move for GitHub to do more stuff with Continuous Integration / Continuous Delivery pipelines – it’s a product management super move that gets GitHub out of the business of responding to stupid little feature requests. Better still, it’s an ecosystem play where GitHub (and Docker) users create value for other GitHub users without GitHub needing to invest their own time and treasure.
Note
[1] Another Kerpan at Cohesive aphorism was “California can”. When we said “we can do that”, we meant that the functionality was there, in the product, ready to go, now. When visiting Silicon Valley when we heard people say “we can do that”, we understood that to mean ‘I have a great product team and some outstanding engineers, and we think we can build that in the next six months’.
Filed under: Docker, strategy, technology | Leave a Comment
Tags: Actions, Docker, ecosystem, github, product maangement
April 2021
Pupdate
As the weather has improved it’s been great to get out and about more with Max.
We also had some fun with his mother Nellie coming to visit.
Coding
The new job means I’m back to writing code a lot more. One of my first adventures was into using the ZeroSSL API to automate TLS certificate creation where the prototype I hacked together in Bash needed a complete rewrite with Python.
I also put together a tool for automating label sync across GitHub repos (more about that on an earlier post).
As I spend more time reviewing code I’m planning on writing a bit about that – it seems many of the lessons I saw being learned the hard way with Java 20+ years ago are playing out again for Dart and Flutter.
Rust
I’ve been interested in Rust for a little while, and Take your first steps with Rust on Microsoft Learn is an awesome resource, particularly the memory management module (which I’d commend to anybody developing on a VM language like Java or Dart, as it’s good to be reminded what the garbage collector is doing for you, and the costs that might be involved with that).
Open Source
Another excellent resource on Microsoft Learn is the Build community-driven software projects on GitHub learning path, which wraps around some great GitHub based material.
Podcast
After some months in the works the Tech Debt Burndown Podcast that I’ve been collaborating with Nick Selby on is now live. Get it on your favourite podcast app.
BBQ
I had a go at smoking some brisket, which I think turned out pretty well for a first attempt:
Leadership
I’ve written about leadership on this blog before, as I think it’s an important topic.
Listening to ‘Randall Stutman: The Essence of Leadership’ [The Knowledge Project Ep. #96] was one of those aha moments – I’ve been doing this stuff and trying to get better for over 30 years, and that’s what I’ve been missing. I’m going to give the sample lessons on Admired Leadership a try and see if I’m up for the $1000 package.
Along similar lines I’m enjoying Gene Kim’s interview with Admiral John Richardson – Leadership Development and Balancing Creativity.
Raspberry Pi Stuff
Since I’ve been back into Python I went back to my sous-vide code and updated that to Python 3.
Beating Beat Saber
VR workouts were back for April, and I was delighted to find that a new free set of levels had dropped with OST 4. They’re not easy either, so it will take me a while to clock up those Full Combos at Expert. Meanwhile I finally got the Full Combo at Hard on Ghost in the Camellia pack, and I’ve also been able to crack a few more at Expert on the Green Day pack (just Father of All to go).
Filed under: monthly_update, podcast, technology | 1 Comment
Tags: BBQ, Beat Saber, brisket, coding, dachshund, open source, podcast, puppy, Raspberry Pi, Rust, smoking, vr
Managing GitHub Labels
I was on a sprint planning call last week where it felt like we spent way too much time getting the labels in our various repos straightened out.
After a little Googling I found various scripts that use the GitHub API to manage labels. But nothing that seemed easy enough. So… I pulled together my own repo of scripts – atsign-company/labels, which we have now open sourced.
When a label is added to that repo it fires a GitHub Action that pushes the new label to all the repos listed in a config file (in our case atsign-foundation.yaml for our open source repos).
Thanks to Olivier Jacques for pointing me to the ability to start an Action from a labels event, and to the DXC DevOps Dojo team for having a nice labeling script as part of the Welcome module.
Filed under: howto | 2 Comments
Tags: action, github, labels, open source, python, script
Tech Debt Burndown Podcast
After a few months in the making Nick Selby and I today launched the Tech Debt Burndown Podcast, where we talk to each other and guests about Tech Debt and how to deal with it.

Please subscribe at Apple Podcasts, Spotify, iHeartRadio, Spreaker or wherever you get your podcasts.
Filed under: podcast | Leave a Comment
Tags: debt, podcast, tech, tech-debt
The @ Company uses a lot of SSL certificates, and we’ve been using ZeroSSL and its Certbot wrapper zerossl-bot to automate how we manage certs. But we wanted more control over the process, which has driven us towards the ZeroSSL API. Sadly the docs don’t provide usage examples, which has made it quite a journey to figure out how things work.
After LOTS of trial and error I have a script that generates and downloads a certificate, which I’ll walk through block by block below. The whole thing is at this gist.
I’m using bash, so we begin with a shebang:
#!/bin/bash
I’ll probably end up writing the final script in Python, or maybe even put together a Go or Dart app, to provide error checking and retry logic.
I’m using the Digital Ocean API for DNS (other DNS providers with APIs are available), as it’s fast and well documented. Both APIs need keys, which should be stored in a secrets manager rather than a script:
# API keys for ZeroSSL and Digital Ocean
# These particular keys are fake random hex
ZEROSSL_KEY='0f027ac0f3b24ddb3c4412f11fa1e746'
DO_KEY='a3e6ee004fd7c352af61f0465765030b5d162acc94c24fdbb42f7a8c81e897a3'
The script sets a base (sub)domain, and takes a single parameter of the certificate name to be created:
# Set root domain and take CN from params
DOMAIN=subdomain.example.com
CERT_NAME="$1"."$DOMAIN"
We need a certificate signing request (CSR). The ZeroSSL docs point to a web form that generates CSRs, but anybody using an API will want to have a more automated way of doing that bit, such as:
# Create CSR and Private Key
openssl req -new -newkey rsa:2048 -nodes -out "$CERT_NAME".csr \
-keyout "$CERT_NAME".key \
-subj "/C=GB/ST=London/L=London/O=Example/OU=Testing/CN=$CERT_NAME" \
&>/dev/null
With the CSR prepared it’s time for the first call against the ZeroSSL API to draft a certificate. The hard part here was figuring out how to pass a CSR into the API, but thankfully recent versions of curl have an option to URL encode data directly, and I’m using the @ operator to pull in the CSR from the file generated in the last step:
# Draft certificate at ZeroSSL
curl -s -X POST https://api.zerossl.com/certificates?access_key="$ZEROSSL_KEY" \
--data-urlencode certificate_csr@"$CERT_NAME".csr \
-d certificate_domains="$CERT_NAME" \
-d certificate_validity_days=90 \
-o "$CERT_NAME".resp
The response then needs to be parsed to extract the certificate ID and parameters for validation, in this case for the DNS CNAME method. Since it seems necessary to modify DNS to make use of the HTTP(S) methods this look like the simplest way.
I tried using jq to parse the JSON, but it’s an extra dependency, and seemed to sometimes mangle CNAME parameters. The combination of sed and awk isn’t great, but does appear to work for this limited use case:
# Extract CNAME parameters from ZeroSSL response
ID=$(< "$CERT_NAME".resp python3 -c "import sys, json; print(json.load(sys.stdin)['id'])")
CNAME_HOST=$(< "$CERT_NAME".resp sed -e 's/[{}]/''/g' \
| awk -v RS=',"' -F: '/^cname_validation_p1/ {print $2}' \
| sed -e 's/"//g' | sed -s s/".$DOMAIN"//g)
CNAME_ALIAS=$(< "$CERT_NAME".resp sed -e 's/[{}]/''/g' \
| awk -v RS=',"' -F: '/^cname_validation_p2/ {print $2}' \
| sed -s 's/"//g')
The CNAME can then be added to DNS for validation:
# Add DNS CNAME at Digital Ocean for verification
curl -s -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer $DO_KEY" \
-d '{"type":"CNAME","name":"'"$CNAME_HOST"'","data":"'"$CNAME_ALIAS"'.","priority":null,"port":null,"ttl":1800,"weight":null,"flags":null,"tag":null}' \
https://api.digitalocean.com/v2/domains/"$DOMAIN"/records \
-o "$CERT_NAME".name
Wait a moment for it to be ready:
# Wait for DNS record to propagate
sleep 30
Then call for validation:
# Validate certificate at ZeroSSL
curl -s -X POST https://api.zerossl.com/certificates/"$ID"/challenges?access_key="$ZEROSSL_KEY" \
-d validation_method=CNAME_CSR_HASH \
-o "$CERT_NAME".vald
Wait again for the certificate to be issued:
# Wait for cert to be issued
sleep 30
Then get the certificate. Using jq here to prettify the JSON:
# Get the cert
curl -s https://api.zerossl.com/certificates/"$ID"/download/return?access_key="$ZEROSSL_KEY" \
| jq -r '."certificate.crt"' > "$CERT_NAME".crt
Finally tidy up DNS by removing the validation CNAME:
DNSID=$(< "$CERT_NAME".name python3 -c "import sys, json; print(json.load(sys.stdin)['domain_record']['id'])")
echo "$DNSID"
# Delete the verification CNAME
curl -s -X DELETE -H "Content-Type: application/json" \
-H "Authorization: Bearer $DO_KEY" \
https://api.digitalocean.com/v2/domains/"$DOMAIN"/records/"$DNSID"
Update 15 Apr 2021
I ended up doing a Python version, with some better error checking and retry logic.
Update 21 Mar 2022
I’m no longer using the REST API for ZeroSSL, having switched to a fork of the acme-dns-tiny script (which takes care of DNS pieces with the Digital Ocean API).
Filed under: howto, software | 2 Comments
Tags: API, automation, bash, certificate, curl, Digital Ocean, jq, json, python, script, SSL, ZeroSSL
March 2021
Pupdate
Max is 7 months old now, and continues to be a source of endless entertainment and cuteness.

Having half his people back at school has disrupted our Lockdown III routines, but he has a reason to get extra excited when folk come home.
Vaccination
I got my first shot of the AstraZeneca vaccine. The logistics for the vaccination centre at my local ‘community building’ Clair Hall were outstanding – I was in and out of there in about five minutes, finishing with a return appointment for 11 weeks time.

New job
I joined The @ Company as an Engineer, and our CEO wrote about my intro meeting and culture in virtual organisations. For my techie friends who are wondering what it’s all about start with this post about the @protocol that we’re building the @platform to run. My focus is going to be getting to progressive delivery for the platform, and improving the Developer Experience for people using it. The platform is built with Dart, and we’re riding the wave of Flutter becoming very popular for development across Apple, Android, Web and Desktop.
Apple Fitness
It was mid March 2020 when I decided that I’d better keep fit during what looked like being a long time stuck at home, so this month saw the 365 day streak on my move ring.

If there were streaks for the other rings then I’d be doing a little better on stand, and I’d have broken by exercise streak last August as I got a little distracted by having to deal with Dougal’s last day.
Mother’s Day Feasting Weekend
Mother’s day provided all the excuse I needed to have a weekend of amazing food.
Cookaway
As a somewhat regular investor in startups via Seedrs I occasionally get offers to try new products or services from companies trying to attract investment. One of those was Cookaway, which is a non subscription meal box service. For Friday evening we got the Tandoori chicken with lemon rice and coriander mint chutney, which was delicious and full of really fresh flavours that we’re not used to getting from our usual local Indian restaurant.

My wife also really enjoyed the Zoom cook along session with chef Nidhi Verma.
Fish platter
Our local fish monger does a very nice sharing platter:

But we’ve taken to order separate items to have better control over getting what we really like; so this time I ordered a dressed crab, smoked mackerel and smoked salmon pates, hot smoked salmon, beetroot gravadlax and some king prawns. Along with a Forman & Field royal fillet of salmon that was plenty for two breakfasts and one dinner.
BBQ
Ever since getting a Hawksmoor at Home box over the summer I’ve been using their ‘How to Cook the Perfect Steak‘ guide with côte de boeuf from my local butcher. But it’s always been a challenge to maintain a ‘steakhouse sear’ temperature. I’ve been able to get the grill to 300C, but as soon as I open it to put the steak in, then again for turning, the temp has been dropping. I wondered why the gauge went up to 450C, and how it was even possible to get it there. Until this time… the steak was quite fatty, and I left it a little longer than usual for the first turn, so by then the fat was rendering down onto the coals, and I was getting FIRE.
Lamb
Along with the steak I got a 3kg leg of lamb from the local butcher, which I slow roasted overnight with the fan oven dial set to 75C, and that got me an internal temp of 65C. It’s some of the juiciest, tastiest lamb I’ve ever had, and along with Sunday roast provided for multiple sandwiches, salads, shepherd’s pies and curries – about 16 meals in total.
Watch repair
I found my old Casio watches when looking for something else and decided to get them running again (along with the Seiko I wore before getting an Apple Watch). My W-50U World Time watch was in a particularly sad state, with no strap and missing the screws for the back. A quick look at eBay suggests that it’s a sought after model these days.

Batteries were easy to find on eBay, and I was able to get everything else I needed from WatchBattery (UK) Ltd (except a new seal for the W-50U). The whole process was helped by the watch repair kit I’d randomly bought when it was on sale last year.
Ah… I can now press a few buttons and see the time zone line move from one city to another and recall the days when I used that feature.
Actor model
After hearing about the actor model from Simon Crosby talking about Akka as part of his work at Swim.ai, and then exploring Dapr when Mark Chmarny was at Microsoft I decided to take a deeper look. Oh boy is that Wikipedia article a tour de force of important computer science stuff for distributed systems (process calculus etc.).
I’ve been listening to
Along with my usual diet of the Sam Harris Podcast and the Farnam Street Knowledge Project, I’ve been catching up on a few interesting looking episodes of Behind the Tech with Kevin Scott, and also a few standalone episodes that came to my attention:
- Daniel Schmachtenberger on Better Sensemaking (The Jim Rutt Show)
- Gary Hamel and Michele Zanini on Breaking Down Bureaucracy and Building Up Workers (Harvard Business Review IdeaCast)
- Jeff Hawkins: Thousand Brains Theory of Intelligence (Lex Fridman Podcast)
- David Kilcullen on The Dragons and the Snakes: How the Rest Learned to Fight the West (Intelligence Squared)
The latter two came about from a conversation with Ben Ford (@commandodev) following some discussion on Wardley Maps and Team Topologies. He recommended Jeff and David’s books, but I generally find that author podcasts can be much more efficient at getting to the key points.
Raspberry Pi Stuff
I’ve written in the past about booting from SSD, and we’re now starting to see boards like the Piunora that allow Compute Module 4 to work with NVMe SSDs. The performance improvement is measurable but not astonishing (10% rather than 10x) – so I won’t be rushing to buy new kit.
No Beating Beat Saber
My March Apple Fitness challenge was to walk or run 199.5km, so my VR exercise time got spent on extra walks :/ Max was happy :)
Filed under: monthly_update, Raspberry Pi | Leave a Comment
Tags: @sign, actor model, apple, BBQ, cooking, dachshund, Dart, desktop, fitness, Flutter, food, mobile, platform, podcasts, protocol, puppy, repair, The @ Company, vaccination, vr, watch, web
Emissaries from the Future
The future is already here – it’s just not evenly distributed.
William Gibson – The Economist, December 4, 2003
I’ve been in a bunch of conversations recently on the intersection of Team Topologies and Wardley Maps.
Map by Markus Harrer @feststelltaste
The Platform, Stream-aligned and Complicated-subsystem teams tend to drop out of a map because they fit around their respective activity or activities. That’s important for minimising cognitive load, because a group of adjacent activities should be similar enough to use the same methods and perhaps share other characteristics.
But the Enabling teams are different. It’s their job to move activities (and the teams doing them) through the industrialisation pipeline. They’re helping the organisation to evolve, and hence they need to be ‘Emissaries from the Future’, because they’re the ones who understand what the more evolved state looks like, and what it means to get the other teams there.
Filed under: architecture, strategy | Leave a Comment
Tags: cognitive load, evolution, mapping, Team Topologies, Wardley
February 2021
Pupdate

This was the month that he became a dog that likes to go for walks, which is great. He was pretty reluctant for the last few months – scared of traffic and meeting other people (and other dogs), and not keen on the cold wet weather. I’m glad we persevered, as he now seems so happy to be out and about :)
Lenny the Learner Lemon
$daughter0 is now old enough to start driving, so we got a Mini for her to learn in.

Officially that colour is Volcanic Orange, but we all think it’s yellow, hence the name she’s given to it.
It was a bit fraught buying a car during lockdown, when I wasn’t able to see it, and had to fork over £LOTS to somebody without being handed keys in return. I was very relieved when the delivery driver showed up.
Lockdown also massively impacts the ability to get out and about for driving lessons. Learners are allowed to drive on essential journeys (like grocery shopping), but she doesn’t really have the confidence to do those journeys yet. Things were much easier with $son0 when we could just take him to a quiet road and drive up and down until he was happy with the basics. On the positive side, being confined to going up and down the drive means that she is very good at hill starts, three point turns and parking.
Oven fix
When we had the kitchen refitted a few years ago we got a pair of identical Bosch single ovens. We use the left hand one (the ‘dirty’ oven) all the time, and the right hand one (which stays ‘clean’) hardly at all.
The left hand oven tripped its breaker, and next time it was used there was no heat :(
A bit of Googling around suggested that the element had probably failed, and this video gave me confidence that it was an easy job to replace it. In the end I was very happy to spend £25.99 on a replacement element, which took half an hour to fit, rather than having to buy a new oven.
Using OBS to record stuff
As we’ve used Microsoft Teams more at work it’s become more common to catch up on meetings be recording. But not everything happens on Teams.
I figured out that I can record anything I want using OBS – I just set it to capture my secondary screen, and put whatever I want to record onto that screen.
Pale Green Dot
The early weeks of the pandemic brought chaos to supply chains as demand that was previously split across grocery stores and restaurants got pushed out of its usual balance.
Pale Green Dot are one of the companies that made the best of a bad situation by taking veggies that would have gone to restaurants, and boxing them up for home delivery.
Recently they’ve added some new stuff that’s been great…
Valentine’s Dinner
I never like going to restaurants for Valentine’s, as it’s always an overpriced limited menu, and way too busy. So I usually cook instead.
This year was different, as Pale Green Dot offered packaged dinners, which turned out to be excellent.



I can only think of a couple of local restaurants that could produce similar quality food, so here’s hoping that they do similar stuff for other occasions.
Kimchee
We also got a Kimchee kit, which just went into the fridge today after fermenting, and is tasting really good. I’m looking forward to the ramyuns and jjigaes I’ll be making with this.

Lenovo X250
After over 5 years of faithful service it’s time to hand back my trusty Lenovo X250.

I’ve liked it so much that I’ve bought myself a reconditioned one on eBay, which now has the SSD and RAM upgrades I’d bought for my work one. The ‘new’ one doesn’t have a touch screen, but I never really used that.
Raspberry Pi Stuff
Maybe it’s because I have too many Arm (and other) dev boards, but I’ve not felt a huge urge to get the newly launched Raspberry Pi Pico.
I can however see that it’s growing a great ecosystem, and the tooling looks good too. If I do get one I’ll likely start with the Pimoroni Tiny 2040, which looks very cute.

Beating Beat Saber
I’ve not spent too much time doing VR workouts this month, so only a couple more levels Full Combo’d on Expert with the Green Day pack I got last month.
Filed under: monthly_update, Raspberry Pi | Leave a Comment
Tags: Beat Saber, car, dachshund, element, kimchee, learner, lenovo, mini, oven, PI, Pico, puppy, Tiny 2040, vr, X250






