RSSAmplifier

Blog

jes's blog

This is jes's blog

incoherency.co.ukRSS feed ↗318 posts

Latest posts

Trailer

Over the last couple of weeks I've built a trailer for the tractor.

Should you wash your solar panels?

I have a small solar farm and the panels have got visibly dusty. Is cleaning them worthwhile? How much difference does it make? Let's find out.

Optimistic epsilon-greedy

I've been working on optimising revenue on my Countdown website the last few days.

ProofToken16: My Proposal for Private Decentralised Age Verification

So there's this whole thing now about how under-16s aren't meant to be allowed on social media, and this is supposed to be enforced through technical means using Zero-Knowledge Proofs, or something. Here is my proposal.

Telepresence Burglary

We are soon (?) going to have autonomous or semi-autonomous humanoid robots that are actually good enough to use.

How to make a hyperlink

I am driven to write this post because of repeated disappointing experiences where coding agents seemingly don't know how to make hyperlinks. It occurred to me that this may just be a sign of the times, and maybe many younger human developers don't know how to make hyperlinks either.

How to publish your secrets on Docker Hub

This week I have been looking inside public Docker images, with the aim of finding API keys etc. inside, and then reporting them and claiming bug bounties. It has been a partial success, in the sense that I found loads of private credentials inside public Docker images, and a partial failure, in the sense that I have not (yet?) received any bug bounties.

Stealth Browser Survey: April 2026

We surveyed the stealth browser industry by using our bot detection framework to analyse 11 of the top hosted browser services.

Bot Forensics

Most threat intelligence bots are easy to fingerprint. And trying to be stealthy often makes it worse because imperfect anti-detection methods have extra fingerprint surface area of their own. We run an instrumented honeypot site that collects data on what these bots do, and we've just released an Instant Bot Test so you can see whether we flag your bot without even having to talk to us first.

Claws

I tried out OpenClaw the other day. It is good but very expensive to run, so I made a tiny alternative that can use a Cursor subscription instead.

Evidence of absence

"Absence of evidence is not evidence of absence", they say. They're wrong. In this post we'll work through a scenario and show that absence of evidence is in fact evidence of absence. You can see Yudkowsky for more on this topic.

Tractor

The electric tractor is finished! I have been working on this on and off for about 6 months. It is a toy for children (and me) to drive around the garden.

A parametric mannequin for FreeCAD

I am toying with the idea of building a car. Check out Cyclekarts, they are a small and simple go-kart-like vehicle styled like ~1920s sports cars. Most importantly, check out Geoff May's "Maybug", which is road legal!

Against Gift Aid

I like to go to museums. The typical business model for a museum is that it operates as a charity, which means if the customers pay with "Gift Aid" then the museum gets 25% on top of their payment, paid by the state.

Anticloaking

Up until 2 months ago, I hadn't thought much about anti-phishing since I left my Netcraft job in 2017. Then Martin and I did a short consulting gig for another anti-phishing company, and I've been consumed by anti-phishing ever since.

Student loan deductions

Around May or June last year I finally paid off my student loan. I called up the Student Loans Company, and either made a card payment over the phone, or else made a bank transfer of the amount they instructed me to pay, I don't recall which. And I didn't think any more of it.

AI Test User

Today we're soft-launching AI Test User. It's a robot that uses Firefox like a human to test your website and find bugs all by itself. If you have a site you'd like to test, submit it here, no signup required.

The Story of Max, a Real Programmer

This is a story about Imagebin. Imagebin is the longest-lived software project that I still maintain. I'm the only user. I use it to host images, mainly to include in my blog, sometimes for sharing in other places. Imagebin's oldest changelog entry is dated May 2010, but I know it had already existed for about a year before I had the idea of keeping a changelog.

The web program manifesto

A "web application" is a system. It has a backend, maybe a database, user accounts, cookie consent, analytics. Probably the frontend uses some sort of build system or web packer, maybe TypeScript, almost certainly has a multi-hundred-megabyte node_modules directory. But not everything has to be like this. You don't need all this stuff. I think there is an easy trap to fall into where you go down…

Against exponential backoff

When software uses some external dependency, like an HTTP service, it sometimes has to handle failures. Sometimes people choose exponential backoff: after each failure, you wait longer before retrying, for example by doubling the delay each time. In this post I'm going to argue that exponential backoff is a bad idea.

Conservation of tins of paint

We recently moved house and found that we have acquired a lot of tins of paint. I have worked out why.

You never ask how I'm doing

I live here too.

Building blocks for F-Rep CAD

This post is a quick brain dump of the things I'm currently thinking about for Isoform. I think the time is almost right for the world to have F-Rep CAD.

Thoughts on Signed Distance Functions for CAD

I've got into signed distance functions recently and am interested in their application to CAD software.

How to abort calculations in OpenCascade

Hands up, how many times has this happened to you? There you are, minding your own business, designing some sick new parts for your 3d-printed hoverbike, you go to make a PolarPattern of 3 or 4 sweet ridges just to really finish it off and BOOM your hand slips and you accidentally ask for 3 million. FreeCAD hangs for the rest of the week and you feel your will to live slipping away. If only you…

The world's stupidest AppImage

AppImage packages an application and its dependencies into a single file. You can then just execute that single file, and it will extract everything into a temporary directory and hook everything up so that the application works. Very easy to use, very convenient. Unfortunately, it's not so straightforward to make an AppImage.

Timeline of Discovery

This evening I made a Timeline of Discovery, listing historical inventions, discoveries, events, etc. that I find personally interesting.

Clock Gear Train Calculator

I made a Clock Gear Train Calculator this evening.

The Principles of Mr. Harrison's Time-keeper

This post is a transcription, plus some commentary, of the Board of Longitude's 1767 document "The Principles of Mr. Harrison's Time-keeper", from scans on the University of Cambridge Digital Library.

My diaphragm piston air engine with rotary valve

I made an air engine with a diaphragm piston and a rotary valve. It was inspired by a video from Robert Murray-Smith, but improves on the design.

Prompts as source code: a vision for the future of programming

I'm going to present a vision for the future of programming in which programmers don't work with source code any more. The idea is that prompts will be to source code as source code is to binaries.

Bare minds

Back in the Stone Age, humanity was just scraping by with not much more than our bare hands. Working with AI has showed me that, all this time: we've just been scraping by with our bare minds. If computers were meant to be bicycles for the mind, then AI is jetpacks for the mind.

The free space equation

The idea is: if you have some resource which is partially used, and you increase the total capacity, how much does your free capacity grow in relation to your increase in total capacity? ChatGPT couldn't give me a name for this idea, so I'm calling it the free space equation.

Encyclopedia Mechanica

I've been working on a new online encyclopedia project, and it is almost ready to rival Wikipedia. It's called Encyclopedia Mechanica. Pages are created on-demand by an LLM in response to user queries, so in a way we actually have more pages than Wikipedia already, albeit with more errors.

I made an LLM-powered Colonel Blotto game

Today I made a Colonel Blotto game where you play against GPT-4o, and after each round you can chat with GPT-4o to get commentary/analysis/coaching. Play with it at blotto.incoherency.co.uk until I run out of OpenAI credit.

2014 Nissan Leaf: first impressions

Browsing AutoTrader I found that secondhand electric cars are now cheap enough to be a reasonable option. I took a punt on a 10-year-old Nissan Leaf, and drove it to work today for the first time. This is my Nissan Leaf story.

Secrets of the ChatGPT Linux system

Have you noticed that ChatGPT sometimes writes out Python code and somehow executes it? How does that work? What kind of environment is it using? Can we co-opt it for our own ends? Let's find out!

My first microlighting experience

Today I had my first microlighting lesson with Brad Wagenhauser of Great Western Airsports. I booked it about 6 weeks ago, but it has been cancelled 7 times due to the weather. I was beginning to think it would never happen, but today was the day.

I'm building a fixed-gantry CNC machine out of composite kitchen worktop material

Composite kitchen worktop material is a good choice for a CNC machine because it is very heavy and very flat. It is a bad choice because it is quite soft. But mainly it is a very good choice because I already had the material and it is therefore free.

How to read from a TCP socket (but were too afraid to ask)

You can get surprisingly far, before it bites you, with only a fuzzy and incorrect understanding of how you should read from a TCP socket. I see this often in (failing) Protohackers solutions. Once you are over the initial hurdle of reading enough documentation to actually get a TCP session connected, there are 2 key things you need to understand:

We're not in a simulation

In this post I'm going to make the case that IF (big if) the universe can be simulated, then actually running the simulation has no effect on the contents of the universe. Either the universe can be simulated, in which case we exist within an abstract mathematical structure independent of any actual simulation, or the universe can not be simulated, in which case we trivially do not live inside a…

The watch project

My quest at the moment is to try to make a mechanical watch. Specifically I want to make the movement. I'm not interested in buying a bunch of parts and assembling a watch. I'm also not interested in cloning a standard movement, I have my own design in mind.

Interesting features of John Harrison's sea clocks

I recently got to see John Harrison's sea clocks at the Royal Observatory at Greenwich. I recommend visiting if you get the chance. This post is about some of the interesting things I observed.

Incongruous technologies redux

Good news: I have worked out why my incongruous technologies are incongruous: it's because of software!

A self-aligning Boggle board

Earlier this year Charlie challenged me to make a Boggle board that always leaves the letters upright, and this week I have succeeded.

The Douzieme gauge

In this post I'm going to explain what a Douzieme gauge is, show you how I made one myself, and propose some alternative designs for higher precision.

Five interesting things from the Science Museum

I enjoyed a quick visit to the Science Museum at the weekend, and here are a few of the interesting things I saw.

Designing a Bangle.js commute timer

I work in an office occasionally, and there is a particular point on my commute where I always check the clock so I can tell how I'm doing for time. If it's 8.30 I'm likely to be on time, before 8.30 I'm doing well, after that I might be late. But why stop at checking my delta time at a single waypoint? Why not store a GPS trace of a reference commute and continuously compute the delta time, like…

The Egyptian coin box

I have invented a new magic trick. It involves a very thin wooden box with 5 locations for coins inside, each labelled with one of the 5 bodily senses. A spectator places a coin inside, without telling the magician where it is. The magician then makes a show of listening to the box, sniffing the box, etc., and successfully determines where the coin was placed.

dnstweak: quick local DNS spoofing tool

I spent most of today writing dnstweak, a program that temporarily inserts itself as the local DNS resolver (by writing to /etc/resolv.conf) and spoofs responses to selected DNS requests.