Category Archives: miscellaneous

The AI bullshit singularity

I’m sure we are all familiar with the idea of a technological singularity. Humans create an AI that is smart enough to create an even smarter successor. That successor then creates an even smarter successor. The process accelerates through a positive feedback loop, until we reach a technological singularity, where puny human intelligence is quickly left far behind.

Some people seem to think that Large Language Models could be the start of this process. We train the LLMs on vast corpuses of human knowledge. The LLMs then help humans create new knowledge, which is then used to train the next generation of LLMs. Singularity, here we come!

But I don’t think so. Human nature being what it is, LLMs are inevitably going to be used to churn out vast amount of low quality ‘content’ for SEO and other commercial purposes. LLM nature being what it is, a lot of this content is going to be hallucinated. In otherwords, bullshit. Given that LLMs can generate content vastly faster than humans can, we could quickly end up with an Internet that is mostly bullshit. Which will then be used to train the next generation of LLM. We will eventually reach a bullshit singularlity, where it is almost impossible to work out whether anything on the Internet is true. Enshittification at scale. Well done us.

Ship Of Fools

I recently had a 3 week holiday in Florida with my family. My 17 year old son is interested in rocketry and my wife is interested in wildlife. We got to see plenty of both and had a great time. There is a lot to like about America and Americans. But the sheer waste of resources on show everywhere was pretty shocking. In Europe we absolutely aren’t doing enough to protect the environment and avert the impending climate catastrophe (I flew to Florida and drove a car there, so I am no environmental saint myself). In Florida they don’t appear to be even trying.

Let’s start with plastic. Everything seems to be made of plastic, wrapped in plastic or both. This is a hotel breakfast for the 3 of us. That is a serious amount of plastic.

Plastic cutlery is the order of the day. And even the plastic cutlery is individually wrapped in plastic! The very cheapest hotels in the UK give you metal cutlery.

Apples were individually wrapped in plastic.

We even saw oranges wrapped in plastic. Nature already provided oranges with their own wrapper! I don’t remember the plastic issue being as bad when I travelled through Wyoming, Utah and Colorado in 1999. Maybe it’s a hangover from COVID?

And then there are the cars. We did a quick informal survey and over half the vehicles on the road were massive SUVs and even more massive pickup trucks, with macho names like ‘Raptor’ and ‘Titan’. The very low tax on petrol/gas (by European standards) makes this possible. These pickup trucks are clearly being used mostly by people from the suburbs who do not need a huge pickup truck. We hired a ‘mid-size’ (but big by European standards) SUV ourselves as, in a previous trip, we had found it quite intimidating to drive a European sized saloon car on American roads.

The front of these pick-up trucks is so high that a pedestrian hit by one is definitely going under, rather than over. Especially the ridiculous ‘raised’ pickup trucks, which are very common.

Not that there are many pedestrians in Florida, of course. You are expected to have a car and drive everywhere. You can even eat your breakfast in your car.

The breakfast drive-thru queue at Fort Myers Dunkin Donuts.

The provision of pavements/sidewalks is decidely lacking and public transport is pretty much non-existent. If you are too poor to own a car, hard luck. There did seem to be some cycle lanes, but they ran along major roads and weren’t segregated from all the enormous vehicles. They looked utterly terrifying. No wonder no-one was using them. Perhaps cyclists had tried, but they had all been run over.

Everywhere has air con and it all seems to run 24×7. Often with doors left open. When you turn up to your hotel/motel room, the air con is running and it doesn’t turn off when you take your card out of the slot to leave the room. It has probably been running in every room since the hotel was built, regardless of whether the rooms are occupied or not. Heaven forbid that you should have to wait 2 minutes for the air con to cool the room down.

This might be ok if the air con was powered by solar. But it isn’t. We hardly saw a solar panel in our whole trip to ‘The Sunshine State’. This is hard to fathom, as there are solar panels everywhere in temperate and cloudy Britain. When we asked one of the locals why she didn’t have solar, she told us that solar power was penalised by the power company, so it wasn’t worth it. We didn’t see a single wind turbine either.

The irony is that Florida is one of the most vulnerable places on earth to climate change. It is already ridiculously hot in the summer. A few more degrees of extra temperature will make it unbearable outside your air conditioned room or vehicle. Higher temperatures means more air con, which means more carbon in the atmosphere, which means even higher temperatures. Florida has a mean elevation of just 31m/100ft above sea level. The majority of Miami-Dade county is less than 2m/6ft above sea level (possibly less, depending on when you are reading this). The only thing we saw that looked like a hill in Florida, was in fact a huge landfill. Probably mostly full of single-use plastic cutlery. The rich are already starting to move to higher ground in Miami. Maybe only the landfills will be left above sea level by the end of the century? Florida is also regularly devastated by hurricanes. The devastation left by 2022 category 5 hurricane Ian is still very obvious and category 4 hurricane Idalia hit a few days after we left. Rising sea temperatures can only lead to more devastating hurricanes.

And Florida isn’t even one of the worst offenders, placing 39th out of the 50 US states with around 10.8 metric tons of CO2 per capita per year. In part due to the lack of any heavy industry. The worst offending state in the USA is Wyoming with a whopping 104.5 metric tons of CO2 per capita per year. Across the country Americans average 15.3 tons per capita per year, compared to 5.6 tons for the UK. And the USA isn’t even the worst offender. Qatar clocks in at 38.1 tons per capita per year.

Climate change is not some minor inconvenience where we lose a few obscure species of frogs and have to wear a bit more sunscreen. We could be talking about widescale crop failures and extreme weather events making large parts of the globe unliveable. Leading to famine and migration on a scale way beyond anything we have seen so far. Given the seriousness of the situation it is depressing to see such profligate waste. My fear is that other people will look at places like Florida and think “why am I even trying to do the right thing? Look at them!” and not even try.

We are in trouble. The current system of sovereign states with politicians driven by short-term goals is poorly placed to fix long-term, global problems. And the billionaires are not going to save us. They are the main beneficiaries of the current system and they are going to use their money and power to keep it that way. If we let them. Geo-engineering is hugely risky. Carbon sequestration looks unlikely to make any meaningful difference. Moving to Mars is a pipedream for 99.9999% of the population. This is the only planet in the universe we have evolved to live on. We are stuck here with the mess we have created in a slow motion tragedy of the commons. Individual choice is not going to cut it. We need deep structural change. Much higher taxes on fossil fuels and less enormous pickup trucks for a start. We need to get our act together, and soon. For ourselves and our children. But, having seen the situation in Florida, I don’t hold out much hope.

Oryx Digital sponsored team wins gold at International Rocketry Challenge

The Ridgeway Rocket Club team of Ben Wigley, Sanjay Bala and (my son) John Brice, won the International Youth Rocketry Challenge at the Paris Airshow last week. After beating 180 other UK teams at UKROC to qualify, they then beat the best teams from the USA, France and Japan. I sponsored and mentored the team this year and the year before. The team placed 9th overall in the UK at their first attempt, last year. Airbus was the main sponsor for UKROC and their trip to Paris.

The rocket was designed and built from scratch by the team, with various 3d printer and laser cut components. The top tube is a Pringles can (strong, cheap and full of yummy pringles)! We used a Cesseroni F Classic solid fuel motor for the launch.

The results were scored on a combination of flight (60%) and technical presentation (40%).

The flight mission was for the rocket to reach 850 feet, split into 2 sections and land the nose section in 42 to 45 seconds with an intact raw egg. The UK team managed 872 feet height and ~38 seconds duration with an intact egg. A French policewoman accidentally elbowed the rocket on the way to the launch, so it was a good job they made the fins super strong!

The UK team got an impressive 58 out of a possible 60 points on the presentation.

I’m very proud of what the boys achieved and it was such an amazing experience. VIP everything and the team got to meet and shake hands with the French Primer Minister, various French cabinet members and 5 astronauts, including NASA astronauts Charley Duke (who walked on the moon and commanded the lunar module on Apollo 16) and Mike Bloomfield.

They managed to get Mike Bloomfield to sign a rocket fin before the launch. They also got to meet a load of other interesting people from rocketry, aerospace, the US armed forces and from the other teams. Another highlight was a personal tour of an Apache gunship helicopter by the US Army (I’m so glad we are on the same side!).

Our launch:

Our onboard video from the launch:

Yesterday we got to go into the house of commons to show off the rocket and the team met various people including: space scientist Dr Maggie Aderin-Pocock, our member of parliament and the Minister of State for Education. There can’t be many people who have taken a rocket into the house of commons!

Next month they have a VIP tour of the Airbus factory at Stevenage. The team has also been interviewed by the local BBC radio station.

Before getting involved in UKROC my son wanted to do something technical, but he wasn’t sure what. Now he has decided he wants to do Aerospace engineering at University. Ben is also considering an aerospace career. Sanjay wants to be a corporate lawyer, maybe for an aerospace company. I’m sure it has also got a lot of other people interested in aerospace careers. So a definite result for the sponsors. A big thank you to everyone who makes the UKROC and International Rocketry Challenge competitions happen, including: ADS Group, Airbus, Lockheed Martin, NAR, AIA and all the volunteers.

If you are in the UK, USA, France or Japan, why not enter a team in 2024? It is a fantastic way to get kids involved in a challenging STEM project. And if you are looking to employ a rocket engineer a few years from now, drop me a line!

Summerfest 2022

Easy Data Transform and Hyper Plan Professional edition are both on sale for 25% off at Summerfest 2022. So now might be a good time to give them a try (both have free trials). There is also some other great products from other small vendors on sale, including Tinderbox, Scrivener and Devonthink. Some of the software is Mac only, but Easy Data Transform and Hyper Plan are available for both Mac and Windows (one license covers both). Sale ends 12th July.

No-one knows what they are doing

When I was a child I assumed that all the adults running the world knew what they were doing. Now that I am an adult, I am under no such illusions. Just look at the current British government. They clearly don’t have a clue. A more mediocre bunch of individuals would be hard to find.

I’m going to let you in on a little secret. Most of us who are running businesses had no real idea what they were doing when they started, and still struggle with decisions now. I’ve been making a full-time living selling my own software since 2005. But when I launched my seating planner software, I really had no idea if I would sell a single licence. After 17 years I know a lot more about my market and running a software business. But things are constantly changing and I still don’t know day-to-day if I should be spending more time on SEO, partnerships, Youtube videos, new features, a better website, or thousand other things I could be doing. A lot of guessing and gut feel is still involved.

It is easy to read 20/20 hindsight accounts of successful businesses and assume they they knew exactly what they needed to do at each stage. They didn’t. Running a business involves making a lot of decisions under great uncertainty in a constantly changing environment. So if you want to start a business, don’t be put off by not knowing what you are doing. No-one does.

Battlesnake

I have been doing some recreational programming at play.battlesnake.com. It is a series of online leagues where you enter a program to play competitive ‘snake’.

The rules are pretty simple:

  • eat food to grow
  • die of starvation if you go too long without eating
  • die if you collide with a wall or the body of another snake
  • die if you collide head-on with another snake that if of equal size or bigger
  • last snake standing wins the match

There are also some variants, such as ‘royale’ where hazards move in from the walls.

You can program your snake in pretty much any language and host it where you like. When a match starts your program recieves JSON data with the board state and has 500 milliseconds to return either “left”, “right”, “up” or “down” for each move. You can write something super-simple (move to the nearest food, avoid other snakes) or you can get as complex as you like (machine learning or full game tree with alpha-pruning).

I have written my snake in Python (which seems appropriate) and host it on a free replit.com account. It uses a series of heuristics to decide it’s next action. It uses flood fill to assess how much space is available and A* for path finding.

You can see my snake (‘RhinoCrocoPede’) in action below, it is the purple one:

You can also see it more clearly here.

At the time of writing RhinoCrocoPede is 132nd in the global league (out of 450) and steadily rising.

The Battlesnake documentation is good and I was able to get the starter Python/Replit snake up and running in 15 minutes or so. I then just built on that. Replit is a nice online IDE. I did have issues with the free Replit account timing out. But I fixed this with a 90 day free upgrade code I found on the Battlesnake discord. This allowed me to set my REPL as ‘always’ on and ‘boosted’. I still have a fairly long ping time to the server (which is in California). This eats into my 500 milliseconds. But the time remaining is plenty for my current heuristic approach, even in Python.

If I wanted to get really serious I would rewrite my snake in C++, use a full game tree or Monte Carlo approach and host it on a fast server near the battlesnake server (to reduce ping time). But it is just a bit of fun and I don’t think I’ll get that serious.

My son has also written his own snake, which has been useful programming experience for him.

Battlesnake is really slick and well done. If you feel like doing some recreational programming, I recommend you give it a try.

How I finally beat my son at a computer game

TL;DR: I cheated, using programming.

I play computer games with my son. But he is 14 and I am 54, so I just can’t compete on reflexes. Just yesterday he thrashed me 10-3 at the silly and fun Spelunky Deathmatch. Then he gloated about my pitiful score.

spelunky

We’ve also been writing our own games together in Python, for fun and so that I can teach him some programming. We’ve written a little jet dogfight game together. You each get a little plane that can turn left, right, accelerate or shoot. You score 2 points for shooting down your opponent and 1 point for flying over a powerup. First to 20 points wins. We are both Python novices (my day job is writing software in C++), so the program is quite hacky. Lots of globals and cut and paste. The planes are triangles and the clouds are square. But it is a fast and fun game to play.

plane-game

Predictably my son was winning most the games. Then gloating about it. However I had recently seen an article about an AI winning dogfights against a human fighter pilot. This gave me an idea. While he was asleep I modified the program so that you can press a key to toggle a cheat mode on either plane. In the cheat mode pressing the left key aims automatically at the powerup and pressing the right key aims automatically at the opponent’s plane. Suddenly I started thrashing him. He got suspicious and insisted we swap planes. Which is fine, I just toggled cheat mode on the other plane. He got even more  suspicious. I told him I had been practising. He went off to practise with an old version of the code I gave him. I then thrashed him several more times and told him I have being doing a lot of practise. ;0)

Sooner or later he will figure out what is going on. I’m not sure what the take away lesson will be. Coding is a powerful skill? Don’t trust your Father?

I offer up the code for any competitive Dad’s (or Mum’s) who feel they need a little help against their cocky offspring. See how long you get away with cheat mode. You can always toggle it off for a while when they get suspicious.

Notes about the game

You can download the game’s Python code.

The game runs from inside the Python variant of the free processing.org environment, which you can download here for Windows, Mac or Linux. You need to select Sketch>Import Library to get the Sound library. File>Open the .pyde file in processing.org and press the run button. You can adjust the szx and szy variables according to your screen size. There seems to be a bug where the sound only works for the first game after you start the IDE.

The keyboard controls are:

Player 1:

a – turn left (aim for powerup in cheat mode)

d – turn right (aim for opponent in cheat mode)

w – accelerate

s – fire

z – toggle cheat mode (off at start)

Player 2:

left cursor – turn left (aim for powerup in cheat mode)

right cursor – turn right (aim for opponent in cheat mode)

up cursor – accelerate

down cursor – fire

end – toggle cheat mode (off at start)

Currently the aim cheat aims at where the opponent’s plane is. To be a bit more sophisticated, it could aim at where it thinks the opponent’s plane will be. But the current approach turns out to be good enough, and less likely to make an opponent suspicious.

It would be interesting to write a little AI that completely controls the plane and then put it up against other people’s AIs. A future project perhaps. But processing.org isn’t an ideal environment for that.

Bloviate

I wondered what it would look like if you took a body of text and then used it to generate new text, using Markov chains of different lengths. So I knocked up  quick program to try it.  ‘Bloviate’.

bloviate

Bloviate analyses your source text to find every sequence of N characters and then works out the frequency of characters that come next.

For example, if you set N=3 and your source text contains the following character sequences staring with ‘the’:

‘the ‘, ‘then’, ‘they’, ‘the ‘

Then ‘the’ should be followed 50% of the time by a space, 25% of the time by an ‘n’ and 25% of the time by a ‘y’.

Bloviate then creates output text, starting with the first N characters of the source text and filling in the rest randomly using the same sequence frequencies as the source text.

Note that a character is a character to Bloviate. It treats upper and lower case as different characters, makes no attempt to differentiate between letters, punctuation and white space and does not attempt to clean up the source text. Which also means it works on any language.

Bloviate also tells you the average number of different characters following each unique sequence of N, which I will call F here. As F approaches 1.0 the output text becomes closer and closer to the input text.

Using ‘Goldilocks and the 3 bears’ as input:

If N=1 (F=7.05) the output is garbage. Albeit garbage with the same character pair frequency as the original.

On cre She sl s ramy raked cheais Bus ore than s sherd up m. ged. bend staireomest p!”Sof ckstirigrorr a ry ps.

” f waine tind s aso Sowa t antthee aime bupis stht stooomed pie k is beche p!

At N=3 (F=1.44) it looks close to English, but jibberish:

Once up and been sight,” she this timed. Pretty so soon, she second soft. She screame up and she screame hot!” cried the Mama bed the Papa been sleeping in the Papa bear

“Someone’s bear growl.

At N=5 (F=1.14) it starts to look like proper English, but semantically weird:

Once upon a time, so she went for a walked right,” she lay down into the kitchen, Goldilocks sat in the porridge from the three chair,” growled, “Someone’s been sitting my porridge and she tasted the door, and ran down the bedroom. Goldilocks woke up and she second bowl.

And it comes out with occasional gems such as:

“Someone’s been sitting my porridge,” said the bedroom.

At N=10 (F=1.03) it starts to become reasonably coherent:

Once upon a time, there was a little tired. So, she walked into the forest. Pretty soon, she came upon a house. She knocked and, when no one answered, she walked right in.

At the table in the kitchen, there were three bowls of porridge.

At N=15 (F=1.01) it starts to get pretty close to the original text, but doesn’t follow quite the same order:

Once upon a time, there was a little girl named Goldilocks. She went for a walk in the forest. Pretty soon, she came upon a house. She knocked and, when no one answered, she walked right in.

At the table in the kitchen, there were three bowls of porridge. Goldilocks was very tired by this time, so she went upstairs to the bedroom. She lay down in the first bed, but it was too hard. Then she lay down in the third bed and it was just right. Goldilocks fell asleep.

At N=12 (F=1.07) the whole 680k characters of ‘Pride and prejudice’ produces:

It is a truth universally contradict it. Besides, there was a motive within her of goodwill which could not help saying:

“Oh, that my dear mother had more command over herself! She can have her own way.”

As she spoke she observed him looking at her earnest desire for their folly or their vice. He was fond of them.”

Obviously the source text is important. The Bohemian Rhapsody lyrics make nearly as much (or as little sense) at N=5 (F=1.08) as the original:

Is this to me, for me, to me

Mama, just a poor boy from this to me

Any way the truth

Mama, life? Is this time tomorrow

Carry on as if nothing all behind and face the truth

Mama, ooh, didn’t mean to me, baby!

Just gotta leave me and lightning, very fright out, just killed a man

Put a gun against his head

Pulled my time to die?

At N=12 (F=1.05) 160k characters of Trump election speeches produces:

Hillary brought death and disaster to Iraq, Syria and Libya, she empowered Iran, and she unleashed ISIS. Now she wants to raise your taxes very substantially. Highest taxed nation in the world is a tenant of mine in Manhattan, so many great people. These are people that have been stolen, stolen by either very stupid politicians ask me the question, how are you going to get rid of all the emails?” “Yes, ma’am, they’re gonna stay in this country blind. My contract with the American voter begins with a plan to end government that will not protect its people is a government corruption at the State Department of Justice is trying as hard as they can to protect religious liberty;

Supply your own joke.

I knocked together Bloviate in C++/Qt in a couple of hours, so it is far from commercial quality. But it is fairly robust, runs on Windows and Mac and can rewrite the whole of ‘Pride and prejudice’ in a few seconds. The core of Bloviate is just a map of the frequency of characters mapped to the character sequence they follow:

QMap< QString, QMap< QChar, int > >

You can get the Windows binaries here (~8MB, should work from Windows 7 onwards).

You can get the Mac binaries here (~11MB, should work from macOS 10.12 onwards).

Note that the Bloviate executable is tiny compared to the Qt library files. I could have tried to reduce the size of the downloads, but I didn’t.

To use Bloviate just:

  1. paste your source text in the left pane
  2. set the sequence length
  3. press the ‘Go >’ button

I included some source text files in the downloads.

You can get the source for Bloviate here (~1MB).

It should build on Qt 4 or 5 and is licensed as creative commons. If you modify it, just give me an attribution and send me a link to anything interesting you come up with.

Volunteering Your IT Skills

There is a lot to be said for running a small software business (just me, with my wife doing some of the admin). For a start it gives me a great deal of flexibility, which I used to spend 2 months travelling abroad with my family last year. It is also low in stress, as I don’t have any employees to manage (my wife manages herself!). But even with some consulting work, going to the occasional conference and running some face-to-face training courses, I was starting to feel a little bit isolated after 13 years working mostly on my own. At that time the news was full of heart-rending stories of the suffering of refugees trying to flee war and repression. I don’t like the way the world is heading at present and wanted to do something to help these people in whatever small way I could. So I started volunteering at a charity for refugees and asylum seekers in my home town.

I initially tried to avoid doing computer things for the charity. But it quickly became clear that my IT skills were much more useful to them than anything else I could offer. Consequently I have been sorting out various IT issues, teaching people basic IT skills and have built them a simple CRM and reporting system, based on Airtable. Replacing the previous paper system with an electronic one is saving the staff and volunteers a lot of busy-work, which frees up their time to do more useful things. It is also giving the charity a lot more insight into how they are doing. And it has got me out from office and meeting some really great people who I wouldn’t have met otherwise. Win-win. Sometimes I feel spread a bit thin with my various work, charity and personal commitments (which is partly why the blog has been a bit quiet recently) but overall I am very glad I started volunteering.

So, if you are feeling a bit isolated, consider volunteering for a local charity. I suspect many small charities are desperate for volunteers with IT skills. Even if you are a programmer with quite specialist skills (like me), it is easy to forget that you are still an IT systems god compared with 99% of the population.

Giving a shit

Sturgeon’s law states that “90% of everything is crap”. He was probably an optimist. Here are some recent examples of the sort of crap I come across day to day:

The school selection website

My wife and I had to select which secondary school we want out son to go to, an important decision for our family. We had to do this via a website created on behalf of Swindon council. I won’t bore you with all the painful details, but only an impressive combination of incompetence and apathy could have produced something so egregiously awful. At the end of the process we got an error message and the promised confirmation email never arrived. We were left feeling confused and angry. Every other parent we spoke to had a similar experience.

The ATM

Feast your eyes on my local ATM:

ctnybk8wiaaqkza-jpg-large

Yes, that’s right, the buttons aren’t correctly aligned with the screen, so they have added some shonky visual cues in a feeble attempt to compensate for it. They failed – I have pressed the wrong button more than once. If they couldn’t move the buttons, why didn’t they just change the text positions in the software? I would like to know what sort of horrific set of bad decisions and sloppy planning led to this laughably bad design.

The in-flight meal

Check out this British Airways in-flight meal I was served:

IMG_1083.jpg

Behold, the cutlery is in a sealed plastic bag in the pasta. To get at your cutlery you have to open a slippery plastic bag covered in sauce with your fingers, which are now also covered in sauce. Who could have possibly have thought this was a good experience? You might as well just eat the pasta with your fingers. Or stick your face in the plate. Maybe the subliminal message is: if you won’t pay for business class we are going to make you eat like an animal.


You don’t have to look very hard to find crappy design. Badly designed parking buildings, confusing ticket machines, painful to use Sat Navs, packaging that is almost impossible to open, web forms that won’t let you use a space or a dash in a telephone number. I could go on, but I’m sure you could come up with plenty of examples from your own life. The most frustrating thing is that these issues could have been avoided with a little bit of thought and care. I doubt it would have added more than an extra 1% more effort or cost to get them right.

Crappy products and services make everyone’s life worse. Hold yourself to a higher standard. Take pride in your work. Do usability tests. Get feedback from your users. Fix things that are broken. Keep improving. Above all, give a shit.