• Names change, and so do email addresses

    We’ve recently been rolling out a new internal application. At our organisation, users have an email address which is generally firstname.lastname@company.com, or something like that. When a user logs in to the application, the app will look them up using their email address and figure out what parts of the application the user should be able to use. The problem One day we got a ticket for a user who was adamant that they had access but when we looked in the application, we couldn’t even find them in the system! Probing a bit further, it turns out that they… Continue reading →


  • The Two Email Rule: When to Escalate from Email to Real Conversation

    When i think back to the deepest of the many deep holes i’ve dug myself in to over the years, they almost all start with an email. When working through my inbox, it’s all too easy to just bash out a reply and hit send. Usually, that’s fine – a quick email is all it takes, and the issue is closed. But sometimes, that email triggers a reply, and that reply another, and it’s hard to predict when but eventually I’m having a complex conversation about a complex issue and it all goes wrong and before I know it, we’re… Continue reading →


  • How to: LetsEncrypt in standalone mode for Unifi on Ubuntu 20.04 LTS

    This is an update of my previous post, now that cert-manager is more mature, and i’ve rebuilt my server on Ubuntu 20.04 (from 18.04). Install certbot Certbot installation instructions are at online of course but here’s a summary: Create a new certificate using LetsEncrypt We’re going to use standalone mode, and first we’ll get a test certificate just to validate that everything’s working (so that we don’t trigger LetsEncrypt’s rate limits). You should see something like this: Install certificate in unifi I use an amazing certificate installation script from Steve Jenkins. Get the real LetsEncrypt certificate Simply run the same… Continue reading →


  • Can you do that new job?

    Generally when evaluating someone for a role, I look for 5 things: Behaviours – how do they operate in a team? Do they admit to mistakes and learn from them? Do they help others? Communicate and live to their personal values? Are those values ones I want people in the team to live to? Accountability – can this person handle the magnitude of the role? Are they able to manage stakeholders of the right level of seniority? Domain – how deep is their knowledge of this business, industry, sector etc.? And how deep does it need to be? Function –… Continue reading →


  • Fix: AccessToKeyVaultDenied when using KeyVault with Function App application setting

    After following the instructions on the MS website to establish a KeyVault reference and place that in my App Settings, I set up a Managed Service Identity and grant that identity access to my KeyVault key. Next, wishing to follow Microsoft’s advice and secured a firewall around the KeyVault, ensuring that I checked the Allow trusted Microsoft services to bypass this firewall? setting, however, I was still receiving an AccessToKeyVaultDenied error: I even checked and yes, App Service is supposed to be able to bypass the firewall – so what was going on? Well, on the KeyVault resolver reference page… Continue reading →


  • The 9 Ps

    I often have conversations with friends and colleagues about their careers. And many times, i point people to a great blog post by my colleague Liz Aab, about the “7 Ps”. But i always find myself adding two to the list, so i thought i’d just post it here. There are lots of factors which go in to choosing a job. You can’t have all of them, all of the time. At least, i think you can’t. But you can (and should) decide which are most important to you. Here are Liz’s 7 Ps (which she says were originally 5… Continue reading →


  • Fix: This must be accepted explicitly before updates for this repository can be applied

    Some repos, such a the one for the Unifi Controller, use different ‘field’ values to tie a release and require manual updates. For someone like me who has a standalone, automated controller setup designed mainly to keep the firmware up to date without much intervention, this is a hassle. It looks something like this: It’s an easy fix. Just tell apt-get to ignore the codename field: and then it works! Continue reading →


  • Fix pyodbc.Error: (‘01000’, “[01000] [unixODBC][Driver Manager]Can’t open lib ‘ODBC Driver 13 for SQL Server’ : file not found (0) (SQLDriverConnect)”)

    I was connecting from my macbook to a SQL Azure Database when i hit the following error: The solution was to install the ODBC driver, following the instructions on the Microsoft website: Continue reading →


  • Fix: unable to kmem_alloc enough memory for scatter/gather list in ZFS Solaris 10.5

    The ZFS Pool on my server was showing degraded state. After checking the SMART status of the constituent drives and finding no problem, I discovered that there’s a bug in Solaris 10.5 where the system reports a growing number of errors and eventually fails the pool. dmesg shows an error unable to kmem_alloc enough memory for scatter/gather list, however, there is actually nothing wrong with the pool. Running zpool status shows degraded state: Running zpool clear recovers the pool: Continue reading →


  • Powering a Yale Smart Lock with Mains Electricity and Backup Battery

    For various reasons, not least because I wanted to play with it, we have a Yale Keyless Connected Smart Door Lock with a Z-Wave module (we have the v1 module which works fine). This lock has a couple of key features that we liked: It’s connected to our Samsung SmartThings hub, and i run the RBoy Apps custom device type and smart app to enable the scheduled key rotation etc. Overall, we’ve been fairly happy with it, but the thing really does eat up batteries, and I started to feel guilty about putting between 4 or 8 AA batteries in the… Continue reading →


About me

I’m rob. I spend my time exploring the world, playing board games with my family, solving complex technical problems, and learning new things. At work, I lead a team of solution architects designing and building complex realtime trading systems. Sometimes i write about things here, or code them on GitHub. I believe a few things that guide what I do and how I do it:

  • Hard things are hard. It takes time, effort and practice to be good at them.
  • Everybody can learn something new every day. When we’re born we know how to eat and cry and that’s about it. Everything else we’ve learnt, and we can keep doing that all our lives.
  • Great teams are fun to work in, and great teams achieve great outcomes. The wider the range of people and perspectives in the room, the better the work.

Look back