VS Code Copilot (Agent) vs Google Antigravity (Planning) & More

This entry is part 2 of 2 in the series Golang AI kata comparison

Back in July 2025 I did a little comparison of various AI code assistants with a small Golang kata (with some content stripped out), and I’m back for a second attempt using the same kata, but focusing on some of the newer Copilot models, as well as cloud agents, and a run through with Google Antigravity. All runs have been screen recorded, very generic time metrics extracted, and the code is also all up in branches in the code repo if you are curious…

The prompts used will also be the same as i my last blog post, starting with…

The code repository is going to be a small Library application.
There are CSV files in the resources directory that contain the content of the library.
Create a user interface that allows display of all books and magazines with detailsCode language: Access log (accesslog)

And continuing to guide the agent through adding a couple of features such as searches, ordering, writing some basic tests, allowing adding data and having a companion application (either CLI or UI, depending on what it chose to do first). You can expand the second below to see them all…

Great! Now I want to add to the interface that you created to allow searching for a book or magazine by its ISBN.
I still want to be able to easily list all books and magazines without any filters / searches too.Code language: Access log (accesslog)
Add an additional way to find books and magazines, by using their authors email address.Code language: Access log (accesslog)
Add the ability to sort all books and magazines, with all of their details displayed, sorted by title.
The sort should be done for magazines and books in combination.Code language: Access log (accesslog)

And as a follow-up …

Write unit tests for the project where appropriate.
If the code is not very unit testable, refactor it, maintaining functionality.Code language: Access log (accesslog)
Add one final feature that allows a user to add books, magazine and or authors to the library.
This should update the CSV files to show the data for future library lookups.
Don't let them just add to each file separately (such as author first), create a sensible form for adding things in a single action.Code language: Access log (accesslog)

And for the second application…

If you didn't yet create an interactive WEB UI, do so now.
If you didn't yet create an interactive CLI UI, do so now.
This can be very simple without much or any styling, but must be functional for the required features:
 - read data from CSV files
 - display all books and magazines with details
 - search by ISBN or author email
 - print them sorted by title
 - add things to the library (persisting to the CSVs)Code language: Access log (accesslog)

You might also have seen me occasionally send this hint to try harder…

Allow the user to choose the sort directionCode language: Access log (accesslog)

Before diving into details, overall the 5.2 Codex model as part of Copilot seems to be my favourite, though to be honest, if you can structure your prompts and repositories to work well within the GitHub Copilot cloud agents setup, that looks very appealing.

The numbers

These numbers all come with a pinch of salt, and you need to read the blurbs next to each video below to learn about that salt. Each number roughly summarizes how long that stage took according to the video replay. Some setups do more validation which takes more time, some just hope they got it right, others get stuck in the same problems over and over again, and some one shot it…

IDE & AssistantModelMain tasksTestsEditingSecond appTotal
VS Code & GitHub CopilotGrok Code Fast 16:341:491:53CLI 1:20 ~ 12 minutes
VS Code & GitHub CopilotClaude Haiku 4.511:573:207:27CLI 3:41~27 minutes
VS Code & GitHub CopilotClaude Opus 4.52:454:041:19CLI 7:21~16 minutes
VS Code & GitHub CopilotGPT 5.2 Codex5:491:212:46CLI 0:55~ 10 minutes
Google AntigravityGemini 3 Pro19:154:154:56CLI 1:56~ 32 minutes

It turns out figuring the timings for the individual steps for the cloud agents was rather hard, so I’ll only note their complete times…

IDE & AssistantModelTotal
Cloud – GitHub CopilotAuto?17 minutes
Cloud – Google JulesGemini 3 Flash31 minutes

The shortest overall time from my last post was around 18 minutes which was Roocode in VS Code with GPT 4.1, so seeing that GPT 5.2 Codex in Copilot did it all in around half the time and came up with a “better application” hints at a great improvement in the last 6 months.

Read more

A few days in Tromsø, Norway

It’s been a long old while since I have written a travel related post, most recently would be my “digital nomad” boat experience for a year, and before that probably a very specific post on travelling from Santa Elena (Monteverde, Costa Rica) to Granada (Nicaragua) which was quite popular. I now know someone that Is about to head to Tromsø, Norway, and I was about to start writing up a private Google doc to share with what we did, how we did it, what it cost and some thoughts, but let’s turn it into a blog post instead!

Back in November 2024 my partner and I headed over to Norway to kick off 2 weeks worth of adventures, including interrailing all the way down to Berlin, and eventually back to the UK. We spent time in Tromsø, Bodø, Mosjøen, Trondheim, Oslo, Goteborg, Copenhagen and Berlin, of which the start is all Norway!

Flying there

We flew from London Luton, direct to Tromsø with Wizz Air which worked out at £83.56 per person, including a checked bag, for a 3 hour 30 min flight. Not my favourite airport to leave from, but the price made it worth it, even with the additional travel within the UK.

The plan was from here on out, to travel by train all the way down into Central Europe, however Tromsø isn’t the best connected place, and we ended up getting an additional short flight down to Bodø which cost an additional £56.90 per person before the interrailing could start.

To and from Tromsø airport to Tromsø central is about a 15-minute drive, and you can easily get a taxi straight from the stand at the airport, or apps like Uber work too. Our Uber back to the airport for our second flight was NOK220, currently around £15 at 5:15am (when we didn’t want to wait for the bus in the snow)

Tromsø itself

Tromsø itself is rather beautiful. It’s a small town, and you can easily walk around everywhere, though you might struggle of course depending on the conditions. Depending on when you go, you might only have a few hours of “real” light, or the sun might not even rise in the day (but you’ll still be able to see don’t worry). Or it might be snowing and icy under foot. We had a mixture of all of this, with the sun still rising for some time during the first half of our stay, but by the last day or two, there would no longer be any sunrises!

Read more

2025 Year Review

This entry is part 7 of 7 in the series Year Reviews

Well, I’m still not back on a boat as I was in 2023… Where to start…

Lightbug

I havn’t written a whole lot about Lightbug yet on this blog, but its still been a fun year of new developments at, and I think it’s time to share some of them with pictures ;)

We released small handheld RTK device, with programmable ESP32 onboard, giving high precision accuracy, in a nice small package.

I’v enjoyed seeing how folks have been using these devices, from tracking lane changes in cars, to finding accuract path positions, or traking things around race courses.

You can find the documentaiton to read through on the docs site, a fancy looking marketing booklet on the website or look at some of the code examples for the programmable ESP32 also on the docs site.

Hopfully this year I’ll get to the point of writing my GPS, RTK, phone etc comparison blog post, comparing the tracks recorded from a bunch of different devices to compare accuracy etc.

Given my open source / open data interests, I do wonder if this will end up being useful for the OpenStreetMap community.

Now we also developed and worked on the ZCard device, though this has primarily remained inhouse, or for show and conferences and workshops. So much so, that there isn’t even a picture of one on the Lightbug website yet, but here is one sitting on one of our tshirts bak at MWC earlier this year, where we had a demo application running on it, allowing basic interactions from a web page.

Think of it kind of like a Flipper Zero in a way, but running the same hardware and firmware stack as the rest of the Lightbug devices, at a fraction of the price, focued on developers. Buttons, Lights, Eink screen, but more importantly, cellular connectivity (GSM LTE CAT 1), LORA, WiFi, Bluetooth, GPS and more.

The primary processor, and high levels SDKs take care of the complexities of connectivity, power management and eink screen renderings, and give you a high level API for interacting the the device in many ways, such as drawing on the screen, communicating over LORA, or connecting to a server to send and receive data.

Wikimedia

Meanwhile, in my non work Wikimedia volunteer time, I have the privilege of attending both Wikimania 2025 in Nairobi, as well as the Wikimedia Hackathon 2025 in Istanbul, Turkey.

Read more

Easy fix for UK blocked imgur images on a wordpress site

If you are like me, then I expect you have in the past at some point used https://imgur.com/ to upload a few images, and also used them on your WordPress site. But since some time in 2025 imgur blocked access to images for users of the UK. Instead of seeing the image, you just see something like the below instead, that says “Content not viewable in your region” with a little imgur logo in the bottom corner.

You can read more in their help article.

I could go through and permenantly replace all of these links in my blog, but I really can’t be bothered, and instead went looking for a less permennt solution.

While looking around I found the Imgur unblocker chrome extension, that makes use a content proxy by duckduckgo to easily rewrite requests and be able to load the content no matter your geography. The extension is on Github too, and the single actions is so hillariously simple, that I figured this might be a nice solution for my WordPress install too.

I found a WordPress plugin called Real-Time Find and Replace that says:

This plugin allows you to dynamically (i.e. at the time when a page is generated) replace code and text from themes and other plugins with code and text of your choosing before a page is delivered to a user’s browser.

Which sounds like exactly what I wanted, and after a quick install, the replacement was rather easy to setup, and eems to cover all cases for me.

Read more

Editing Grokipedia, a first look

As a long time editor and developer in the Wikipedia and Wikimedia space, I’m of course sceptical about what Grokipedia is trying to be, and if it stands any chance of success. it may struggle to deliver the resilience, transparency, and community processes that keep projects like Wikipedia thriving, and in the early weeks the untouchable AI generated content was certainly not going to work moving forward.

However, in the last week or so editing became an option, hidden behind Grok as a safeguard against abuse.

I thought I’d have a look at trying to edit a few of areas of content to see what the experience is like, and capture some of the good and bad points.

In no particular order…

Broken link formatting

A fix attempt

The Donald Trump articles has some broken formatting, which looks like an incorrectly parsed or formatted Markdown link that is now just showing in the HTML of the page. For posterity, I captured a copy of this version of the page on archive.ph, but here is a snapshot of how it appears.

Read more

How much is “Wikibase Suite” (and deploy) used

This entry is part 3 of 3 in the series Wikibase ecosystem

At the start of this year, I spent some time visualizing the Wikibase ecosystem by making use of the data that has been collected on wikibase.world. As part of that, I tried to focus in on Wikibase Suite, trying to determine how many possible installations there were making use of the container images, and or the newer Wikibase Suite Deploy thing.

I came to the number 33, based on the fact that there were this many sites online on wikibase.world that have an exact match to the MediaWiki versions that have been released as part of the Wikibase Suite container images. And in all cases, this would be an overestimate, given that these versions would also be installed by some not using the images, so the likely number would be closer to ~16…

And of the 33 sites that might possibly be using “suite” as they are on the same version at least, probably 50% are installed via other means, so the “suite” installations probably account for ~16 of the wikibases in wikibase.world at a guesstimate, with ~50 using other methods and 711 using wikibase.cloud.

9th December 2025 Edit

Apparently this post attracted some attention, and I want to make it clear that “Wikibase suite” here is specifically talking about the packaging up of the container images / docker images into some single installable reusable magic component, and support system around it.

I personally believe the container images themselves are a great asset, and the idea of a suite of recommended extensions and applications that should be delivered alongside a Wikibase is also an asset that the ecosystem does need.

Also looking at the “Wikibase Suite Team” board for “Sprint 9 (Nov 25 – Dec 9)” federation is a key topic that is currently being worked on, and tasks like T404547 [Self-Hosting Ops] Define metric for ease of self-hosting show that the team is / has moved away from only thinking about the magic packaged layer.

Updated count

10 months on from this first look, while visiting the Wikimedia Germany offices, I found the need once again to try to come up with concrete numbers in terms of the users of Wikibase Suite, where my general motive would be to convince WMDE that resources are better spent in other places, such as supporting the underlying software, not just this fancy wrapper on top.

And with this new analysis, my revised number is roughly 18, of which 9 are possibly active, and 2 are likely lost to bot spam. You can find the list via this rather lengthy wikibase.world query.

Read more

Wikidata Map in 2025

This entry is part 17 of 17 in the series Wikidata Map

Another year, another map, and another Birthday for Wikidata. Last generated in 2024 by @tarrow and @outdooracorn, this year I have put the work in just ahead of the 13th Wikidata birthday to have a look at what’s changed in terms of items with coordinates this past year on Wikidata.

And here it is!

But really you need to look at the diff between previous years to see what has changed!

Read more

Slop in, craft out?

Earlier today, I sent this absolutely perfectly crafted piece of slop into GitHub Copilot…

Right, but i want thje patche sot be / and /* always

And as I already expected, due to using these LLM based coding agents and assistants continually throughout their evolution, the resulting change was exactly what I wanted, despite the poor instructions.

Now, I’m sure there is actually some difference, and likely this depends on the relevance of the typoed areas, and how often such typos might also appear in training data.

Why is this, you might ask?

Read more

Wikidata, instance of and subclass of through time (P31 & P279)

Last month I looked at all Wikimedia Commons revisions and managed to generate some data and graphs for the usage of depicts statements since they were introduced on the project.

This month, I have applied the same analysis on Wikidata but looking at instance of and subclasses of items. A slightly bigger data set, however essentially the same process.

This will enable easy updating, of various pie charts that have been published over the years, such as

In future, this could be easily adapted to show per Wikipedia project graphs, such as those that are currently at Wikidata:Statistics/Wikipedia

Method

The details of the method can be seen in code in my previous post about depicts statements, and this mostly stays the same.

In words:

  • Look at every revision of Wikidata ever
  • Parse the JSON to determine what values there are for P31 and P279 for each revision
  • Find the latest revision of each item in each given month, and thus find the state of all items in that month
  • Plot the data by number of items that are P31 or P279 of each value item

There are some minor defects to this logic currently that could be cleaned up with future iterations:

  • Deleted items will continue being counted, as I don’t consider the point items are deleted
  • Things will be double counted in this data, as 1 item may have multiple P31 and P279 values, and I don’t try to join these into higher level concept at all

We make an OTHER and UNALLOCATED count as part of the final data summarization. OTHER accounts for things that have not made it into the top 20 items by count, and UNALLOCATED means that we didn’t have a P31 or P279 value in the latest revision.

2025

For August 2025 (or at least part way through it), this is the current state of Wikidata per the above method.

You can now find a PNG of this pie chart on Wikimedia Commons https://commons.wikimedia.org/wiki/File:Wikidata_P31_%26_P279_analysis_August_2025.png

Read more

Online RDS column type modification, using pt-online-schema-change from EC2

I’m using percona-tools to do an online schema modification today, and thought I would document the process, especially as even the installation guides seem to be badly linked, out of date, and did not work out of the box…

EC2 instance

This is all running on a t3.micro EC2 instance with Ubuntu. I deliberately didn’t go with Amazon Linux, as I wanted to be able to use apt. For simplicities’ sake, I’ll be using the EC2 Instance Connect feature, which allows connection to a session in a web browser! (although the copy and paste via this is annoying)

This instance of course also needs access to your MySQL server, in this case an RDS instance. So I’ll go ahead and add it to the security group.

Percona toolkit

Percona Toolkit is a powerful open-source collection of advanced command-line tools designed to help MySQL and MariaDB DBAs perform tasks like online schema changes, replication troubleshooting, and data auditing safely and efficiently.

It’s used a Wikimedia for online database migrations (the reason I know about it), however I have never actually used it myself!

Read more