Yesterday, the courageous Gary Lineker was finally forced to resign from the BBC , after heroically staving off pro-Israel attacks for months. And this morning, Owen Jones, who has thoroughly chronicled the BBC’s anti-Palestinian bias since October 7th, published one of the most powerfully damning condemnations I have ever heard : ❝ Here’s a final message to those who have hounded Gary Lineker out…
Hi everyone 👋 If you live in “Bicester South” (Langford Village, Graven Hill or Ambrosden), you’ll see my name on the ballot paper on May 1st, for the Green Party . I’m a “ paper candidate ”, which means we aren’t campaigning - I don’t have the time. No-one is expected to have heard of me, & we strongly expect I’ll lose. I’m just there so that people who want to vote Green can signal their…
I’ve always wanted to write more. Writing helps me organise my thoughts, build confidence in my ideas and my understanding of the world. I’d like to impact the world more through writing - it’s a way of contributing to the gradual evolution of human thought. I believe that ideas are actually very important - challenging the bad ideas and ideologies; providing inspiration with new perspectives.…
Live coding tests are extremely common when hiring software engineers, and online coding tests with tight timeframes are just as common. I’m far from the first person to mention how bad high-pressure coding tests generally are (e.g. 1 , 2 , 3 , 4 , 5 , 6 , 7 ). But much like open-plan offices , high-stress coding tests seem to stubbornly persist despite clear research findings warning against…
I listen to a lot of podcasts these days. I listen on my headphones while doing the washing up or in the car on the way to pick up the kids from school and nursery. I find them very comforting. I’m both a techie and a leftist, and I use podcasts as an antidote to the misguided neoliberal establishment voices that saturate western society. For some reason, I’ve always been more interested in…
I’m sure I’m not the only one feeling the effects of Twitter’s X’s enshittification , followed by Reddit’s . People mostly younger than me probably feel the same about TikTok , a story which, along with that of Amazon , helped Cory Doctorow solidify the term. Even before Twitter was bought by the Muskrat, Facebook’s Meta’s downfall was strongly predicted (and continues to play out before our…
This is quite specific, so I don’t know if it will be useful to anyone. But I really have to blog about it in a vain attempt to justify the amount of time I’ve spent on this. I’m helping out a friend with his Shopify store for buying fancy prescription sports glasses . He wants to automatically send an email to his suppliers whenever an order is submitted, containing all the relevant information…
ModernCV is a customisable LaTeX CV template for creating your résumé, with 5 basic themes. You can edit it directly and for free on Overleaf , and if you’re a beginner this is probably the way to go. There are also many other CV templates available on Overleaf , although personally I find ModernCV the most elegant overall. But the version on Overleaf is not as customisable as the full source…
The literature on supporting victims of domestic abuse is unequivocal about condemning abusers. E.g. this from Reducing the Risk’s “supporting friends and family” page : Don’t focus on trying to work out reasons for the abuser’s behaviour – only they are responsible for this, and there is no valid or acceptable reason . Apart from this being human instinct, I think there’s also a very good…
I’ve learned a lot about how to build a good engineering team in my time at Canonical. An important piece of this was a term I ran into about a year ago, although it’s definitely been around significantly longer than that: Platform engineering . Platform engineering is the deliberate design of an “internal developer platform” (IDF) to support developers in performing tasks to support the…
I’d be curious how old-school engineers feel, but to me it seems like software engineering has unique epistemological challenges. This is because software is immediately complex, and there are really no theoretical limits on its potential complexity. Computer code is all about instructing computer chips to run what amounts to many thousands or millions of instructions. That’s the point of…
The standard for HTTP/3, RFC 9114 , was published as a proposed standard in June 2022. This is significant: A Proposed Standard specification is stable, has resolved known design choices, has received significant community review, and appears to enjoy enough community interest to be considered valuable. ( RFC 7127: Characterization of Proposed Standards ) But for some reason I don’t hear as much…
When I was doing my Computer Science degree in around 2005, I passionately believed in the huge potential of the internet for the growth of humanity and democracy. I thought that it would open up the voices of many millions of people who would otherwise have been voiceless, suffering in the dark. It would shine a light on many dark areas of human society, and involve everyone in the global…
I’ve been in the same job for a long time, and using, broadly, the same tech stack. Some of this tech still sounds modern and relevant (Kubernetes, Docker, Typescript etc.), other bits not so much. I’d like to understand better how the industry at large is developing, so here I’m going to create a list of technologies I’d like to look into, at least to understand the basics. I hope to write a…
I really believe at this point that crypto is over. All of it. NFTs, Web3, smart contracts. The awareness about its flaws hit critical mass sometime towards the end of last year, and now it’s got nowhere to go but down. It’ll still have a long tail, of course. I just watched Crypto: The world’s greatest scam , a video by James Jani. It’s been making a bit of a stir. It’s very good, informative and…
This is my first post for quite a while. I’m trying to get back into the habit of writing at least a little bit. I don’t know that this is the best topic, but hell why not. I listen to a lot of podcasts, and when I do I very often find I want to write articles in response to things that are said, for various reasons. This is the first time I’m trying to actually do it. I think this could be quite…
I want to be very clear: I don’t like calling people “racist”, “fascist”, “white supremacist” etc. I see it all the time and I think it’s usually incredibly counter productive. It’s basically name-calling and it immediately shuts down debate. If we are to achieve real lasting progress it needs to be as democratic and peaceful as possible. For this, we need to try very hard to have hard…
This is written from a UK perspective, as I’m British. It’s basically notes for a talk I’m going to give tomorrow, and probably the largest block of the audience is from the UK. But the points here apply to any country with its own central bank, and especially to the US Federal Reserve. The “need” for Austerity The common story of government spending is: Government needs to raise money through tax…
Although other search engines are available , eveybody knows that Google is all that really matters . That’s why there’s a $40 billion industry dedicated to reading tea-leaves to discern how Google’s mysterious search algorithm will behave. The secrecy and monopoly of Google’s search algorithm is as blatant as it is disgusting. But it’s the behaviour of the rest of the web that I want to focus on…
I just published a new Python package: ( repo ). If you want to automate posting of tweet using Python, it’s pretty important to know if your tweet exceeds the 280-character limit. It turns out, working this out is non-trivial, as Twitter has a few rules around how it count’s characters. These are basically: Twitter will convert anything that looks like a URL (with a valid TLD - e.g. example.ae )…
I just made a new Python module and CLI tool called fancify-text for transforming text into fancy unicode representations: $ fancify-bold "hello world" 𝗵𝗲𝗹𝗹𝗼 𝘄𝗼𝗿𝗹𝗱 $ fancify-bolditalics "hello world" 𝙝𝙚𝙡𝙡𝙤 𝙬𝙤𝙧𝙡𝙙 $ fancify-upsidedown "hello world" plɹoʍ ollǝɥ I’m hoping to use it in an automatic tool for turning blog posts into twitter threads that I’m working on. I stole the…
My boss and mentor of over 8 years, Peter Mahnke, moved on from Canonical two months ago. Peter has led the web & design team in one form or another for the best part of a decade. He’s watched it grow massively in size, responsibilities and ambitions, and every team member still carries a lot of respect and affection for Peter. On his last day, Peter dropped 10 pearls of wisdom for success and…
As a teenager in the 90s, I was really excited about the internet. Growing up, I felt that it’s ability to connect people and unlock human progress was simply a given. And I definitely wasn’t alone. The democratising power of the world wide web, and its boundless technological potential, were being discussed everywhere. Now everyone could truly have a democratic voice. Now the world’s knowledge…
This is one post where that ubiquitous disclaimer is actually needed: These are my personal opinions, they are not the official position of Canonical. All stated facts are simply my impression, pulled from my flawed memory. I haven’t checked them with anyone. While the industry-wide battle over whether to allow working from home rages on, my company remains fully committed to 100% remote.…
If you’ve read my blog, you’ll have noticed that I never had a comments section before. This was a deliberate decision, although I maybe didn’t think about it quite as deeply as I have some other choices. Instead of comments, I pointed people at Twitter or Hacker News to continue the conversation. As far as I’m aware, not a single person ever took this advice. I’ve always been quite scared of…
I’ve never been good at self care. In the last few days I’ve had a couple of friends reach out to me. They’ve both been in similar sorts of crises of direction (I’m going to stay deliberately vague on my friends themselves). What’s surprised me is that I think I know how to help them. Obviously I don’t know exactly what they need, but the kernel that my advice should centre around is pretty clear…
Media is a lens, a filter on the world. This very much includes news media. I think we all know this now: Who hasn’t encountered complaints about “main stream media”? It’s basically common knowledge now that the Sun newspaper was central to Tony Blair’s 1997 victory . However, this feels starkly different from how I experienced the world as recently as, say, ten years ago. Okay, maybe I was a bit…
Earlier this week, when working on my blogging pipeline scripts I had to delve into the Mailchimp Marketing API docs . Each of the endpoints there provides a snippet of the following form (example for Python): import mailchimp_marketing as MailchimpMarketing from mailchimp_marketing.api_client import ApiClientError try: client = MailchimpMarketing.Client() client.set_config({ "api_key":…
I’ve been trying to write this piece for a while. For some reason I’d decided that it needed a lot of research or careful consideration, but it really doesn’t. I don’t need to have tons of sources. If I think of some I can always come and add them later - that’s the beauty of the dynamic web. The slowness movement Maybe 8 years ago I stumbled upon the concept of “slow news” (slow media, slow…
I’ve spent the last week or so writing a bunch of scripts to automatically post my new articles to Twitter, Hacker News and a Mailchimp mailing list. I’ve been testing them manually with some of my existing articles (with surprising success on Hacker News). I’ve now written a GitHub workflow to run these scripts automatically when I publish a new article. So here’s my article that I’m going to…
This is a list of principles that I respect for trying to write good software. At the moment it’s very rough. I shared it with my team on our internal team Discourse in this raw form. But I figure I might as well share it. Just remember it’s a work in progress, I hope I come back and improve it sometime, but I probably won’t. 12 factor app Design principles from A philosophy of software design :…
I’ve been looking for a way to publish blog posts easily from my phone. I’m sure I would write a lot more if I could quickly jot down a post e.g. while lying on the floor next to my son’s cot waiting for him to go to sleep. My blog is made with Jekyll , GitHub Pages and Cloudflare . Up to now, the only practical way to actually publish a new post has been to use git on my laptop. (Well, I could…
Paywalls offend me. The Internet exists to share knowledge with everyone across the world. You shouldn’t need a subscription, all you should need is an internet connection to access the world’s knowledge. Tl;dr : Simply prepend “12ft.io” to the start of the URL for any article you want to read. Et voila! They’re everywhere And yet an increasing number of news sites are including a “paywall” of…
A terrible tragedy hast befallen my most beloved domain: My archrival Anthony Dillon hast improved his domain , and now it beats our own ! This is, of course, unacceptable. The culprit - Google! My site’s homepage only really had 1 single external dependency, gtag.js which of course set up my Google Analytics. Most sites have Google Analytics, but using it still makes me feel dirty. I really only…
Some things to consider when writing content for the information superhighway. Please don’t think it’s only worth writing if you have incorporated all this (or any other) advice. The best thing is to just get your writing out there - don’t sit on it, don’t be a perfectionist. But if you can easily incorporate any of this advice then so much the better. Audience Human beings Search engines (Google)…
The longer I live in the digital world, the more clearer it becomes that it doesn’t have much structure. I have yet to settle on any solid strategy for organising information that actually makes it easy to find important things that I saw in the past. Everywhere I store things is bottomless pits of information. Similarly, finding new information is increasingly hard. Although it definitely had its…
In my team we run “masterclasses” every couple of weeks, where someone in the team presents a topic to the rest of the team. This article is basically the content of the class on regular expressions (otherwise known as regex) I gave recently. It’s an introduction to the basics of regular expressions. There are many like it , but this is mine. What is a regular expression (or regex)? Wikipedia…
I just sent basically this as an email to my team, but since I think this is very interesting (to web experience & performance geeks) I’m gonna quickly throw it up as a post: I just read More than you ever wanted to know about font loading on the web (which I found on Hacker News ). This article is all about how best to load fonts. It looks like just another dude’s opinion but it’s actually got a…
A while ago I made a commitment to writing articles every day. After a good start in the first 5 days or so, this has massively petered out. Part of the problem is that it was taking me at least half an hour every day, and with a newborn and a toddler and no extra childcare and work, this just wasn’t feasible. I need to sleep at some point. What I really want is to be able to do some writing every…
As I write this, my daughter is now nearly 3 and my son is 11 weeks old. Over the years, we’ve bought quite a number of the “miracle” brands that are supposed to solve all your parenting woes. Some of them have been more helpful than others. I’ll be gradually, over time, listing products we’ve used and adding reviews. Hopefully these reviews won’t be shallow - they’re not first impressions. These…
I’ve had this blog now for about 8 years. Wow that sounds like a long time. Why did I start it? Why am I continuing? I recently redesigned my site, and I am still making tweaks. As I do this, I often have to make choices about what design to use or elements to include. This may sound overly dramatic, but many of these decisions depend on what the fundamental purpose of my site is supposed to be.…
Today again I don’t have time for an in-depth piece. In fact, I might consider letting myself off the hook on weekends, but I’m not going to make that choice yet. Instead, today I’m simply going to write down some of the posts I hope to write in the next few days. These posts will all form a larger story about how I created the new styling for my blog. What’s the point of this site? - Lay out the…
Today was Deepavali (or Diwali) - the first for my son, and the first that my Daughter was properly engaged with. It was great, and exhausting. I now have this commitment to publish a post every day on this blog, and I don’t want to break it so early on, but I really don’t have the energy to write some tech article or anything. So today it’s just going to be this modest diary entry. I think this…
This may fly in the face of conventional wisdom. What bloggers will tell you In the last few days I’ve watched about 20 video tutorials on blogging and read similar nubmer of articles. One very common refrain from these blogging experts is: just start writing! This is great advice. My blog has languished too long because I procrastinate horribly, doing research, tweaking my wording, improving my…
This is my first post since 5th February 2019. That’s 21 months. My determination to write has only increased over time, as my output has massively reduced. It’s a strange paradox. I’ve been frustrated by it for a long time. A few months ago I realised that what I really needed was a daily writing habit. I need to get away from imagining writing massive ground-breaking perfect articles, and…
A while ago I gave a presentation on my attitude to testing. I’m sharing the presentation here, and I will come back and flesh out this article to talk more about my thoughts on a pragmatic approach to testing code.
Update: The default used in the official nginx docker image was changed from SIGTERM to SIGQUIT in November 2020 , so this should no longer be an issue for Docker or Kubernetes users. nginx is a very popular web server. It may have just become the most popular web server, with 33% market share according to the October 2019 Netcraft survey . This may be in large part thanks to the growth in…
I initially drafted this nearly 3 years ago. I didn’t publish it then (for no good reason), so I’m publishing it now. I have gone through the article and made sure it still works with the latest LXD at the time of publishing. I also updated it to: use bionic instead of xenial cover the snap version of LXD as well as the deb use a better method of sharing folders ( thanks @sparkiegeek ) Linux…
One of the things we’re currently working on in the web and design team is a page about writing Git commit messages for our team practices website (I hope to write more about the practices website itself in the coming days). As part of that discussion, we jotted down some quick tips for managing your commit history to tell a neat story with your commit messages, which I’ll share below. These are…