Recent Posts

Let down by Openreach and EE

6 min read

Despite the fact that I am not, in any way, superstitious, I kind of have this rule: don't make definitive statements about the absolute happening of an event until it happens; it kind of feels like you're tempting the universe to prank you. I don't always follow it, I know it's kind of silly, but it's there and hard to shake. It's normal. It's human.

Sometimes it happens that it looks like I should stick to that rule.

Eleven days back I wrote about how I was aiming to return to streaming thanks to the fact that I'd once again be the proud owner of a full fibre connection. The thing that, in part, prompted me to write about that was the fact that I'd had an email, that morning, from Openreach, to let me know they'd done some work and that fibre was now available at my property.

The email proudly stated:

Hello Dave,

Congratulations, you can now get Full Fibre on the Openreach network at [my home address].

With Full Fibre broadband, you can choose your package based on the download speeds you'll need from 40 Mbps to 1.6 Gbps. Need some help choosing? Then read our blog before ordering to find out what's a good download speed.

We also have the UK's biggest choice of broadband providers, so you can find a package and price to suit you.

After a button that linked to a site for finding a provider, it went on to say:

After you've placed your order with the provider of your choice, we'll arrange a day and time with you for one of our engineers to connect Full Fibre to your property if it isn't there already.

They may need to drill a small hole in your wall, or they may be able to use the same access point as your current line. Either way, they'll take care of everything and leave you with a broadband that's ready to deal with anything the future brings. You can find out more about what's involved in our handy Full Fibre installation video.

I found this whole email mildly amusing because it was obvious that the work they'd done, that made this possible, will have been the result of the call I made to EE back in March to order fibre in the first place, when it became apparent I was finally able to request it.

So, yeah, when Openreach -- the people who do the cables and stuff -- email you to let you know they've as good as hooked your place up, you know it's a safe bet.

Today was the day. This morning, between 08:00 and 13:00, was the window I'd been given for one of their engineers to turn up and do the hole drilling and the box screwing and all the stuff and then this evening I'd be in a position where, once again, I could download the whole Internet and stream utter nonsense in the highest quality (both creating and consuming). I was looking forward to this.

Everyone in the house was.

The time window started, and kept going, and kept going, and eventually it was 13:00 and nobody had turned up and my house had no extra wires or holes and I was on the phone to EE to ask WHERE IS THE GLASS INTERNET PIPE?!?

Long story short: it wasn't turning up. At all. It appears, at some point in the recent past, Openreach simply cancelled the order and nobody thought to tell me. Openreach (the people who sent me the email 11 days ago) didn't think to tell me. That's the same Openreach who sent me the SMS on the 7th of this month to give me the date of the work; apparently they could not send me an SMS to let me know they'd decided against this.

Of course, it's not all on Openreach. It would also seem that EE knew, from their own system, that the order had been cancelled and they too had failed to email me, message me, call me, something, to let me know I'd be wasting my time clearing half my day to receive them and have the work take place.

So: pretty shitty service all round.

The main explanation I've been given is something to do with a "CBT"1, or something related. This means that it's just not possible to deliver fibre to my address. This is after:

  • I called to check in March
  • I was told in March it was possible
  • Openreach checked things out, said more work was needed, did the work
  • I literally saw them doing the work, with a trench and barriers and everything
  • I was emailed by Openreach after the work took place to say they'd done the work and I could have fibre

Even today, even right now, if I go on their site and put in my exact address:

I can have fibre

Not "no". Not "eventually". Not "soon". Now. It says now.

At this point this is where I have to say, after making a bit of a mess of all of this, EE have done all they can to smooth things over (especially given there's sod all they can actually do about this). They've compensated me for the missed appointment (despite the fact it wasn't technically missed; it had been cancelled and nobody had let me know), left me to hang on to all the new equipment for if/when the fibre does turn up (meaning I'll have a backup router I guess), and have also compensated me for 3 months of my current copper-based broadband by way of an apology.

On top of that they didn't just brush me off with a "sorry, can't do anything about this", they went to bat for me during a 90 minute phone conversation, chasing up more detailed explanations of what the issue was with Openreach, as we talked. While I don't actually have a solution that is anything other than "you'll have to wait", at least now I have something of a better explanation as to what the actual problem is.

So where does this leave me? Here's what I do know:

  • Some time next year, the copper network will be ceasing to work (or something to that effect). This means that EE/Openreach have to have fibre in place.
  • The issue that stopped my installation is solvable and, in all likelihood, is the sort of thing that will be solved in the next few months (mention being made of a reasonable range of between a 2 to 6 month wait).
  • Almost every alternative provider I could go to would have the same issue, as they all work over the fibre that Openreach would install.
  • From what I can see no provider that isn't Openreach-connected is even the least bit interested in providing fibre.
  • Openreach have promised that the moment they have a solution to the technical problem that stops the installation, they will call me and arrange to kick things off again (or at least, I guess, let me know it's safe to place the order with EE again).

To be clear too: we're not talking about providing a service to a house in the middle of a field in the middle of nowhere, not even a house in some out-of-the-way village. I live in a reasonably large town, far bigger than the village I lived in before where I did have full fibre.

All of which concludes with: I started today excited by the prospect of fast downloads, fast uploads, and returning to talking nonsense on YouTube while being terrible at playing games; I'm finishing the day with no clear path to having fibre, and a wait time that could extend well into the rest of this year, and perhaps even into next.

I hope it won't be that bad, but I am deflated and disappointed.

Also, on the very remote chance that either Sharon or Neil from EE ever stumble on this blog post: thank you for all the effort you went to to get actual answers for me. It's a shame that it needs to be said, but it is rare these days that you call a customer support line at a service or utility company and get people who are willing and able to work in a way that isn't just following a script.

Well, except for the bit right at the end... I'm fine Neil, I don't need to swap mobile provider. ;-)


  1. Stop it. You know who you are. 

Still confused about Antigravity quotas

2 min read

While it did appear something had changed for the better yesterday evening, things looked different again this morning. Before getting to work, I did a couple of quick changes to BlogMore; this time Antigravity seemed to use up a bit more quota in the same amount of time as I was working last night, but this time the reset window is much bigger.

Antigravity quota

I'm sure there's a method to this, but at the moment I'm really unclear what it is.

I guess I could ask it...

Yeah, let's do that.


Can you explain your quota cooldown time for me? Sometimes it seems to count down from 1 hour, others 5. Am I not reading this correctly?

You are reading the quota cooldown correctly! The reason the timer fluctuates between 1 hour, 5 hours, or other times is due to how the rolling usage window and compute-based limits work.

1. Rolling 5-Hour Window

Your usage limit is evaluated on a rolling window (typically 5 hours) rather than resetting at a fixed time of day.

  • If you see a 5-hour cooldown: You likely used a large portion of your compute capacity very recently. You have to wait for that recent window to clear.
  • If you see a 1-hour cooldown: You are close to the edge of your rolling window. A batch of high-compute requests you made 4 hours ago is about to fall out of the 5-hour window, which will free up capacity for you in 1 hour.

2. Compute-Based Usage (Not Message Count)

Your quota is consumed by compute rather than a flat number of messages. Compute is affected by:

  • Chat Length: Every time you send a new message, the model re-processes the entire chat history. Longer conversations consume your quota much faster.
  • Task Complexity: Tasks like code generation, deep thinking, or agentic workflows require more processing power and consume more quota.

Tips to Manage Your Quota:

  • Start New Chats: For new topics or tasks, start a fresh conversation. This prevents the model from having to re-read long histories and saves significant compute.
  • Use Clear, Targeted Prompts: Try to combine instructions rather than sending multiple short follow-up messages.

So, I don't think I'm any wiser after that. The explanation for the 1-hour countdown I saw last night has no connection to anything I did yesterday; I wasn't using Antigravity 4 hours earlier when I checked the quota near the end of that session. Guess I need to go and find and RTFM. Just like we used to in the good old days.

Something changed with Antigravity

1 min read

Something has changed with Antigravity since I first tried it out the other day. While looking at adding a related posts feature to BlogMore, I thought I'd give it another try out (having gone back to using Gemini CLI while I still could).

That first (and last) time I tried it, while on whatever model it decided for me out of the box, it chewed through most of the quota, with a 5 hour reset, in very little time at all. It was obvious that I'd never get anything of significance done in a good session.

This evening has been quite different. It wrote a very comprehensive change, doing quite a lot of work, and left me with a lot of quota and a short reset time once done.

After most of the work

A bit more testing and tweaking of the documentation followed, with me setting it off on a couple of bug hunts (which it found and fixed). By the time I was happy to call it an evening on this round of modifications, it had reset and I was green across the board again.

All done

Now this I can work with!

I don't really know what's changed1, or why. I think I saw something the other day about quotas being tripled, but this seems even more generous (at least in terms of the reset window). I guess I'm going to have to go digging to see if I can find what the story is.

I'm not getting my hopes up -- what can be given can be taken away at any moment (which is, of course, the ongoing theme of what I'm documenting here) -- but this does soften the landing somewhat.


  1. Although I did notice it went with Gemini 3.5 Flash (Medium) on startup and I let it go with that; last time it was Gemini 3.5 Flash (High)

This is not fun

1 min read

I wasn't made for this. I didn't move to Scotland for this. I don't like this.

This is too warm

Yes, I know it's warmer elsewhere. Yes, I know it's warmer elsewhere in the UK, today.

Whatever.

This is still not fun and I still don't like it.

BlogMore v2.29.0

1 min read

A quick update to BlogMore that stems from a couple of accessibility concerns raised when using PageSpeed Insights. While the accessibility score on pages generated by BlogMore is pretty excellent (96/100), a couple of things were highlighted that seemed worth tackling in some way.

The first was that the title bar of code blocks is rather low in contrast, especially the name of the language. This was a deliberate choice on my part; when I'd prompted Copilot to do this work some time back I'd expressly asked it to make the text "subtle". While I could have undone that, I do like how it looks and would like to retain it if possible. So, as an experiment, I've used prefers-contrast as a signal that I shouldn't do that. So now there's a bit of extra CSS under prefers-contrast: more which just uses the normal text colour for those headers.

I imagine this won't boost the score on PageSpeed Insights -- presumably it won't simulate that being used -- but I would hope it's an improvement for those who do need the extra contrast.

The other issue that was flagged up was the lack of an underline on the email address link in the comment-via-email invitation box (the optional feature I added back in v2.17.0). That one was an easy fix. There was no reason to avoid an underline on the link, so I added one.

BlogMore v2.28.0

1 min read

I've just released BlogMore v2.28.0. This release has some small improvements to the JSON-LD structured data that was added in the last release, and also adds support for actually showing author names on posts.

On the latter point first: I only ever really created BlogMore for myself, thinking that perhaps some other folk might use it at some point. All along, though, I had it in mind that it would only ever be used to create a site where there was a single author. Despite this, though, I'd added support for setting the author per-post, and this was reflected in the RSS and Atom feeds.

But I'd never added support for showing the author in posts.

So this release adds that feature. I've tried to add full control, with settings that let you turn on/off showing the author blog-wide, as well as providing control per-post. Also, as well as setting the default author for a blog, and being able to set the author for a specific post, you can do the same for an author's URL (setting it blog-wide and per post).

Obviously, when the author is shown, if a URL can be worked out (the one local to the post is chosen first, then the blog-wide default if one isn't set for the post), the author's name links to their URL.

The JSON-LD changes are a couple of small improvements to the content. The author data adds a url property (following the same rules mentioned above) and the image property for a post will fall back to the site logo (if one is set) when there is no cover.

Wipr

1 min read

While I know the subject really fires some people, ad blockers are something I've never really paid too much attention to. Back in the early days of the web, the really early days, I used to run with full-on JavaScript blocking1. The web changed and I accepted it.

More recently, as I've become a full-time Safari user in the last couple of years, I've been running with Ka-Block! installed. It's been fine. I've never really noticed it. I think it blocked some stuff, but not other stuff. I've never really noticed if it was getting updated or not; I just wasn't paying attention.

Then, this morning, I saw this post in the Fediverse and for some reason it caught my eye. I followed the link, did a bit of searching, asked Misko about his experiences with the app, and saved a bookmark.

Now, this evening, I've thrown down my fiver and I'm running with Wipr 2 installed, both on my Air and my iPhone. When I'm next on either of my Minis, or on my iPad, I'll throw it on there too.

The installation process was straightforward, albeit one where you need to enable four extensions rather than just the one.

Wipr installed

As well as that, you then need to enable it in the app itself and you're good to go. I've since tried visiting a couple of locations that I know still showed adverts or consent pop-ups and... clean. So clean!

My expectation for tools like this is that they end up breaking some site in a way you least expect, so I'll be very aware of that for a while. That said, if I do run into a problem, not only is it easy enough to turn blocking off just for that one site, there's a very clear route to reporting problems too.

Encouragement to report a problem

Mostly, though, I hope I can go back to paying this app no attention whatsoever. If I can, I imagine that's high praise and a job well done for this sort of tool.


  1. I just know someone is reading that and thinking "pfft, JavaScript came along late into the web you noob"

BlogMore v2.27.0

1 min read

Much like the last two releases of BlogMore, this is another that has ended up being on the theme of improving or adorning the generated HTML.

One change in the last release resulted in another HTML validator warning, and so that's cleaned up here (the removal of the h2 elements from the sidebar meant it no longer made sense for it to be a section, so I've turned it into a div).

On top of that, I've also decided to dip my toe into adding more "microformat" type things to the generated code. This release adds things like JSON-LD structured data and Microformats2 semantic markup, where appropriate. I've also updated all of the "socials" links that appear in the sidebar to ensure they're marked up as rel="me".

Given that this is a bit of an experiment, expect to see some tweaks and changes as I roll this out on this blog and then check and test the result. This is a useful learning exercise for me.

BlogMore v2.26.0

1 min read

The previous release of BlogMore had some work that improved the HTML, ensuring that the HTML validator was happy with the generated code. Yesterday evening I ran it over more of the pages, and found a couple more things that made sense to address.

So v2.26.0 takes this a little further and tries to clean more things up. Changes include:

  • The comment email invitation box is now created with a div rather than a section, resolving a validation error about there being no h2 or similar inside the section (because we don't need any kind of heading in there).
  • Cleaned up an error relating to the misuse of an aria-label in the graph page.
  • Cleaned up an error relating to the misuse of an aria-label in the stats page.
  • Removed the h2 elements from the sidebar, making them into divs with the same style. This leaves headings as something that will only appear in the main body of any page or post.
  • Added some heading-demoting to the rendering of posts so that the heading structure of any given post is retained when it's part of any of the archive-style pages (date archives, category archives, tag archives, etc).

While not all of the above were being reported as validation errors, all of them should result in HTML that better fits what I'd want in the first place.

Reviewing token usage

3 min read

As I've written about a few times in the last week or so, the journey with AI-based coding tools has hit an interesting time when it comes to prices, quotas, usage, availability and all that. Having come into all of this via a place where it was a flat fee, and where I didn't really need to think about input tokens and output tokens and so on, I'm pretty ignorant of what that all means in terms of scale. If I'm looking at a new tool and I see prices and/or quotas for in/out tokens, it means nothing to me. I can't relate to it. I've never had to care about it.

While using Gemini CLI to quickly make a change to BlogMore this morning, I was reminded that at the end of a session it does tell me this:

Session usage

Seeing that got me thinking: is there a way to get the total usage for all of my sessions, or at least the sessions that have still been retained (I'm guessing they expire after a wee while)? After a little bit of searching I found ccusage. That looked exactly like the sort of thing I was after.

Now, this is only going to be good for Gemini (it says it supports Copilot too, but it seems to be failing to find any Copilot sessions), but it should give me a feel for what my token usage looks like.

I work on BlogMore on two different machines: the MacBook Air and also a Mac Mini I have in my office. Here's all of the available token usage data I can get out of the Air:

DateInputOutputCache ReadTotal TokensCost (USD)
2026-04-29235,23820,282773,6421,032,608$0.23
2026-05-01315,0013,181447,556768,532$0.20
2026-05-022,621,62852,29018,260,59720,955,447$2.44
2026-05-033,627,84630,53811,819,27915,509,213$5.74
2026-05-04869,82949,1632,721,0743,656,649$0.77
2026-05-092,287,76050,0819,973,76412,327,819$1.84
2026-05-101,019,55034,5568,061,8979,125,838$1.05
2026-05-111,112,12335,61010,523,34811,689,576$1.24
2026-05-131,506,51341,8027,561,1689,124,651$2.88
2026-05-15123,1613,155587,248716,813$0.11
2026-05-16111,33414,836519,161646,275$0.13
2026-05-17940,48536,1717,682,3148,706,034$1.41
2026-05-1867,0331,357205,921275,707$0.05
2026-05-2160,9041,182119,055184,117$0.05
Total14,898,405374,20479,256,02494,719,279$18.13

And also the same for the Mac Mini (which gets used less frequently for this sort of thing):

DateInputOutputCache ReadTotal TokensCost (USD)
2026-05-04212,17831,6312,128,0742,389,927$0.36
2026-05-051,108,90331,9976,222,8687,374,732$1.13
2026-05-0830,8991,19464,07498,146$0.03
2026-05-111,339,33327,3998,074,9049,459,253$1.21
2026-05-12952,05753,02312,751,53913,838,943$1.52
2026-05-18166,8754,774651,417827,746$0.22
2026-05-19449,08723,9763,236,3243,721,558$0.54
2026-05-22335,15110,0121,919,8152,272,553$0.32
Total4,594,483184,00635,049,01539,982,858$5.33

In both cases I've removed a couple of columns to make the tables fit better. The first was the model name (varying between gemini-3-flash-preview and gemini-3.1-pro-preview), the second was Cache Create (which was always 0 all the way down).

From what I can see, it would appear that these two tables do cover my increasing use of Gemini CLI for doing work on BlogMore (the first intensive use being back around the 5th of this month, if I recall correctly). So this would seem to be a reasonably informative way to view things.

All of which is to say, over a roughly three week period, while getting things done, I've used getting on for 20,000,000 input tokens, and around 600,000 output tokens (presumably I do also need to be keeping the 114,300,000 cache read tokens in mind too). With this in mind I might now be able to make more sense of the pricing I see for various tools.