Working around an old and buggy HTML Tidy in PHP


The PHP logo.

Dan Q very kindly shared his script to make WordPress do good HTML. But I couldn't get it working. Looking at the HTML it was spitting out, the meta generator said it was HTML Tidy version 5.6.0. That's quite old! I confirmed this by running: echo tidy_get_release(); Which spat out 2017/11/25. Aha! There are a few bugs in this version of HTML Tidy, some of which are fixed in later versions. Here's how to fix them. Auto Indent doesn't work. This is fixed by manually specifying "indent"…

Continue reading →

Can you trust ProtonApps.com?


Screenshot of the ProtonApps page.

I've recently signed up to the privacy-preserving service Proton. All the email, calendar, drive, VPN, and other services seem to hang off the proton.me domain. I wanted to download the Android apps to my phone - without using the Google Play Store. The VPN app is on F-Droid but none of the others are. So, because I'm lazy, I Googled "Download Proton Mail". I landed on https://protonapps.com/. It looks like a genuine site. But is it? .me is signed by Let's Encrypt, whereas .com is…

Continue reading →

The Seven Levels of Open Source


Unix is user-friendly — it's just choosy about who its friends are.

This isn't an original idea, but I needed to get it out of my brain. There are many different definitions of what "Open Source". We can have a lovely argument over a pint as to whether GPLv3 is too open or if a licence which hasn't been validated by the OSI counts. But, more fundamentally, I think Open Source roughly falls into seven levels. These aren't in any particular order of importance. And feel free to argue in the comments if you think I've radically misunderstood something. 1. Look…

Continue reading →

The (theoretical) risks of open sourcing (imaginary) Government LLMs


A t-shirt with the slogan "Make things open it makes things better."

Last week I attended an unofficial discussion group about the future of AI in Government. As well as the crypto-bores who have suddenly pivoted their "expertise" into AI, there were lots of thoughtful suggestions about what AI could do well at a state level. Some of it is trivial - spell check is AI. Some of it is a dystopian hellscape of racist algorithms being confidently incorrect. The reality is likely to be somewhat prosaic. Although I'm no longer a civil servant, I still enjoy going to …

Continue reading →

Keeping a side project alive with t-shirts and cash


A selection of hats, t-shirts, mugs, and waterbottles with our logo.

My wife and I run a side project called OpenBenches.org - it is a fun little crowd-sourced memorial bench site. It's mostly fun, except when the bills come due! Most hobby sites and side projects don't cost a lot to run. Lots of services have generous free tiers to (ab)use, and they can pay well in "exposure". But OpenBenches is reaching a tipping point where it is slowly overwhelming us. We've now got nearly 300GB of photos - which means our storage and bandwidth costs are on the high side. …

Continue reading →

Discord is not Documentation


Some colourful blobby people constructing an FAQ. Photo by @alexasfotos on Pixabay.

I'm going to be slightly contrarian and say that I like Discord. It's great to be able to get real-time help on a problem. And it is fun to see, again in real-time, what other people are working on and struggling with. In truth, Discord is no harder to sign up to than Slack, Matrix, Gitter, IRC, or whatever. And of course Open Source projects will follow the maxim of "go where your audience are". There's no point posting everything to MySpace when everyone's already on Facebook. Do I care…

Continue reading →

Review: AntiSpam Bee WordPress Plugin


Comment with Japanese text. The email address is for an emergency locksmith, the link goes to a sex-doll emporium.

Someone recently complained that using JetPack's Akismet anti-spam plugin wasn't very privacy friendly. So, because I take every minor complaint as a personal rebuke, I decided to switch to AntiSpam Bee - an open source and local antispam solution. And... it's pretty good! There is the occasional false negative - but not significantly worse than JetPack. Most of the false negatives are from non-English language comments: There are settings so that you can reject comments which aren't in…

Continue reading →

Do open source licences cover the Ship of Theseus?


Binary code displayed on a screen.

I recently downloaded a single-page HTML template for a project I was working on. I wanted a good-looking scaffold to help me getting running quickly. The code had an attribution licence which I was happy to comply with. I ended up removing about a whole bunch of the HTML that I didn't need. That also allowed me to remove the majority of the CSS which was unused. I deleted all the JavaScript. I added some semantic markup and updated a few of the outdated coding conventions. Newer CSS was also…

Continue reading →

Can you follow your own getting started guide?


Binary code displayed on a screen.

I was trying to install a new open source project and was having a hell of a time. Nothing seemed to be working despite me following the tutorial to the letter. I was getting the most bizarre error messages and was on the verge of quitting to become a goat farmer, when I threw one last dice... I read the tutorial. Previously I'd been copying and pasting the instructions as I went. One step said "Make sure the bauxite configuration command is set to true" but the code provided said ./configure …

Continue reading →

So, farewell then COVID-19 App


Pop up notification saying the NHS covid app is shutting down.

Today is a day of mixed emotions for me. The UK's COVID tracing app is finally closing. The app was, by any reasonable measure, a success. A team of experts at the Pandemic Sciences Institute at the University of Oxford and Department of Statistics at the University of Warwick estimate the NHS COVID-19 app prevented around 1 million cases, 44,000 hospitalisations and 9,600 deaths during its first year. Source Earlier this year, I recorded a short video about what it was like working…

Continue reading →

Are there any modern closed-source programming languages?


Four generated images of William Shakespeare programming a computer.

At a recent OpenUK meetup, one of the participants declared that Open Source had comprehensively won. While businesses might not always release their proprietary source code, 100% of everything they wrote used an open source programming language. I wondered how true that was. You can, perhaps, moan about the shenanigans around Java's licencing and you mutter about whether it is easy to get involved with C++'s JTC1/SC22/WG21 - but the core tech behind the two is open. Anyone can read the…

Continue reading →

Interview: Open source is good for AI but, is AI good for open source?


A confused little cardboard robot is lost amongst the daisies

I was recently interviewed in the BCS Magazine discussing the intersection of AI and Open Source. We're at a weird time with AI and Intellectual Property. Well, IP has been in a weird place since Napster launched at the turn of the century! None of the issues around sharing, remixing, and controlling have been properly resolved. Copyleft is a noble goal - but seems more honour'd in the breach than the observance. So we now have shady AI companies copying our code, our art, and our words -…

Continue reading →