TL;DR

pymarkdownlnt provides an easy way of checking that any Markdown you’re working on is complying to some sensible guidelines. If you’re comfortable with Python virtual environments you won’t really need the rest of this post.

Why?

I’ve spent a bunch of time recently adding OpenSSF Scorecards to the key Atsign repos.

Build better security habits, one test at a time

https://securityscorecards.dev/

When it came to the docs repos I needed some way of testing them, and checking the Markdown against a set of lints seemed like a sensible way of doing things.

Yak shave 1 – newer Python

The WSL2 environment I use day to day is Ubuntu 20.04. I should probably have bumped it to 22.04 ages ago, but given that 24.04 is weeks away…

Ubuntu 20.04 carries Python 3.8 as the system Python. Not too old for pymarkdownlnt, but also not ideal. I generally like to be using the latest stable release, which is now 3.12. Thankfully it’s pretty easy to install newer Python alongside the system one using the deadsnakes repo:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.12

Yak shave 2 – Python virtual environment

I could have just run pip3 install pymarkdownlnt but there’s now an increasing awareness that installing Python packages with the system package manager isn’t a good idea. Newer distros like Debian 12 and Raspberry Pi OS ‘Bookworm’ prevent the use of pip. Lots of people find this annoying, but breaking system packages by installing never versions of their dependencies that don’t work is also annoying. After many years of avoiding virtual environments (venvs) it seems like it’s time to get with the programme.

I created a venv for the linter with:

python3 -m venv ~/python/venvs/pymarkdownlnt

Installing pymarkdownlnt into the venv

First the venv needs to be activated:

. ~/python/venvs/pymarkdownlnt/bin/activate

and then the linter can be installed.

pip install pymarkdownlnt

Side quest – using uv for venvs and pip

uv is a shiny new (released yesterday) tool from Astral. I’ve been using their ruff linter for Python, and it’s impressively quick.

With uv installed I could repeat the process above, with a few more keystrokes and a bit less waiting:

uv venv ~/python/venvs/pymarkdownlnt -p python3.12
. ~/python/venvs/pymarkdownlnt/bin/activate
uv pip install pymarkdownlnt

Now I can lint some Markdown

Whenever I want to check some Markdown all I need to do is activate my pymarkdownlnt venv and run the linter against my file:

pymarkdownlnt scan somefile.md

Automating lint checks with GitHub Actions

It’s nice that I’m able to check stuff before committing it. But what I really want is to stop badly formed Markdown from getting into repos in the first place. That’s done with a GitHub Actions workflow pymarkdownlnt.yml.

The key section is:

      - name: Install and run linter
run: |-
python3 -m pip install --require-hashes \
-r tools/requirements.txt
pymarkdownlnt -d MD013,MD024 scan */*.md

This installs pymarkdownlnt from a requirements.txt file where I have the package hashes pinned (to keep the scorecard happy), and then runs the linter against all Markdown files in the repo.

In this case a couple of rules are being suppressed as we have some tables with (unavoidably) very long lines, and the functionality to set siblings_only doesn’t seem to work as it should.

Update

I’ve added pragmas above the offending lines in the various files that must have long lines, so no need to exclude MD013 any more. This is good, as it will now catch new files that have long lines that don’t need them.

I also opened an issue about the problems I was having with setting siblings_only for MD024. Meanwhile I’ve modified the workflow thus:

  - name: Install and run linter
run: |-
python3 -m pip install --require-hashes \
-r tools/requirements.txt
pymarkdownlnt -c tools/pymarkdownlnt.conf \
scan */*.md

to use a config file tools/pymarkdownlnt.conf:

{"plugins": {"md024": {"siblings_only": True}}}

After last year’s trip to The Three Valleys we decided on trying somewhere new again, and Espace Killy (the area that encompasses Val d’Isere and Tignes) came out of the sorting hat.

The view from our balcony at Le Savoie

Inghams again

Having had a good experience with Inghams last year they were the first place I looked, and whilst I checked out the competition Inghams seemed to have the edge on customer feedback and price.

Hotel & Spa Le Savoie was a little pricier than some other options, but had consistently better feedback. I paid a little extra to upgrade to a suite, which turned out nicely as it gave my daughter and I our own private space for the week. My one concern was a message on the booking site that stated there might be a charge for under-occupancy (as the suite could accommodate four people), but that turned out not to be an issue (perhaps as we were visiting on a less busy week).

Food

The food at Le Savoie was exceptionally good. Each evening (apart from staff break day on Wednesday) offered a six course menu of amuse bouche, starter, main, dessert, cheese and petit fours. We very rarely had space for everything.

Scallops and black pudding

The dinners were comparable to some of my favourite restaurants at home, and they managed to come up with an interesting new menu every night that always had appealing choices.

Afternoon tea at 1600 each day combined with ample breakfasts meant there was no need to stop for lunch. Complimentary wine with dinner also meant we weren’t spending at local bars.

The Inghams team at the hotel were brilliant, delivering friendly service throughout our stay. Kudos to the Inghams managers on hiring, retaining and creating such a positive culture.

& no spa

Whilst waiting for the outbound flight I got an email from Holly at Inghams to say that the hotel spa facilities would be out of action for the week. This was disappointing but not devastating – I’d picked the hotel for the food, and thought that maybe the spa would be a nice way to relax after skiing.

We were given free access to the local Aquasports Centre, which was pleasant enough for the one afternoon that we visited.

Chambery – still awful, but not so bad this time

Last year I described Chambery airport as ‘best avoided’ and I’ll stand by that. Sadly there wasn’t an option to fly elsewhere, so we ended up on pretty much the same flights as last time.

This time was better, with the inbound flight on time, and no particular delays getting out of the airport. Sadly the bus to Val took about 2h longer than planned due to horrendous traffic delays. At least the hotel was still serving dinner when we arrived.

Location

Le Savoie is a 5m walk from the piste. There’s a bus option, but we never bothered. Walking up the hill in our Xnowmate boots wasn’t much trouble (and got us warmed up ahead of the first lift).

Everything else was super convenient, with a supermarket next door, and ski hire next to that.

Ski hire (L) Supermarket (C) Le Savoie (R)

Equipment

Once again we went for ski hire and lift passes together with Inghams as there was a discount, and once again we went with the Black package.

The pickup experience was a bit slow, and they weren’t interested in which skis I’d liked before. I never heard ‘come back if there’s anything you don’t like’. I was given Salomon boots, which were comfortable, and a pair of Völkl Deacon 80s which were OK but don’t make it to my good skis list.

Völkl Deacon 80s

Ski Tracks

I’d noticed a discrepancy between the speed shown on my Apple Watch and the app on my phone. After putting in a 71.4mph run I tried to screenshot the watch display. This turned out to be a mistake. Several attempts failed to get me a screenshot, but eventually I reset the watch, which meant I lost that morning’s data :(

Skitracks app on watch showing 72.5mph

Next time around I took the more analogue approach of just taking a picture of the watch (above) with my phone. That track gets reported as 69.1mph in the phone app:

Run summary on app showing 69.1mph

I suspect this is because the apps average speed over different time sample sizes, but it’s a disappointing lack of consistency.

The skiing

At 300km the area is about half the size of The Three Valleys, and it certainly felt easier to get around the whole place.

After a too long wait first time on the Olympique we took to using the Bellevarde Express and Loyes chairs to get up and over. It was then a quick run down to Tommeuses to get over to Tignes.

On the Val d’Isere side it felt like there was a fair bit of under-grading with blues that might be reds elsewhere, and some reds that might be blacks. Though I did notice that some older maps showed some runs as reds where they’re now marked as black.

It was the opposite story on the Tignes side, with a lot of Blacks that weren’t particularly steep or technical. This was a good thing, as the ‘Piste Très Difficile’ signs kept the traffic away.

Best of the Blacks

The various runs feeding into Johan Clarey provided reliable smiles, and we’d frequently run Crocus and Cretes on repeat, alternating between the Toviere bubble lift and Paquis chair.

Sache provided a worthy target for one morning, and was really fun on sections, but a little slow and busy in places.

Descente from the top of La Grande Motte was a run that I’d liked to have repeated a few times, but the wait at the telecabin to get up there was too much – the juice wasn’t worth the squeeze :(

Pick of the Reds

On our way up to Sache the lift ran alongside a completely empty Cyclamen making us wonder if it was closed. It wasn’t, it was just nice and quiet, perfect for a high speed run :)

Ok from the top of the Marmottes lift also deserved a few repeats, and we were lucky to catch a quiet moment on our final run.

L became a favourite, and our pick for final run of the trip. Though possibly our first run was the best.

Beautiful Blues

On the way down from Grande Motte we ran Rabotch and enjoyed the solitude and views.

After an awful attempt at 3000 in poor light Leissieres provided some blessed relief. It’s a run that needs speed to be carried, and thankfully that was possible as all the traffic was on the adjacent Plan Millet.

Getting Home

The trip home felt much like a repeat of last year. A few hours of reasonably comfortable hanging around in the hotel lounge (mostly writing this post). An uneventful bus trip to the airport. Not much of a queue to check in, and then Chambery being the overcrowded zoo that it is when trying to handle all those extra charter flights.

Security was even worse than last year. My carry on ended up spread across 6 different trays, as they insisted on anything electrical/electronic being out on its own; and all shoes off, and my hoodie. It boggles my mind what sort of X-rays don’t go through a neoprene laptop sleeve? But that’s just one example of the overzealous silliness on display.

My travel cable bag, tipped out 🤦

It’s not entirely clear if the problem is bad equipment, bad training, or some sort of sport winding up tourists; but Chambery’s security theatre is now 2 for 2 on the worst I’ve ever seen. The pilot even threw them under the bus (quite rightly) blaming our delayed departure on slow security.

Once we got going, the flight back to Gatwick was quick and uneventful, getting us in 45m late.

Conclusion

Val d’Isere deserves its reputation as a great place for advanced skiers, though most of the better slopes are on the Tignes side. I’d choose it again though just to stay at Le Savoie.


January 2024

01Feb24

Pupdate

We’re now past the second cycle of Milo’s chemo, which is covered in a separate post – complications.

Max and Milo having a good run (and ear flap)

January brough a couple of cold but dry weeks, which has made it possible to go on longer walks without getting too muddy.

Skiing

A full report will follow. We’re now most of the way through a week in Val d’Isere, which has been excellent :)

Cross trainer repair

Shortly before Christmas my weekday workouts (or at least the TV watching during them) were being spoiled by a squeak. Previously a few drops of 3in1 oil have solved things, but not this time. After a bit of poking around the web I found ‘Elliptical Noise Troubleshooting‘, but that also didn’t fix it. Eventually I pinned the source of the noise down to the crank on my Horizon Fitness Andes 200. Thankfully it came off using a bicycle crank removal tool – something that’s been sat in my toolbox for decades unused.

A bit of rust cleanup, followed by reassembly and the squeak was gone. At least for a while, after a couple of weeks it was back. So this time I put a little silicone grease onto the parts, and got the torque wrench out for the securing bolt. My fingers are crossed that it will hum along for a few more years.

Home lab upgrade

I wrote in October about getting a Lenovo M720q as my main VMware machine, and I’ve been very happy with it. The one thing I’d change is that it doesn’t have any remote management. For that machine it doesn’t really matter, but for some other stuff I wanted to do it would be useful to have something like the ‘integrated lights out (iLO)’ capability that my old Gen8 HP Microservers came with.

I’ve now been able to pick up a (very reasonably priced) Lenovo M920q, which is pretty much identical to the M720q apart from having a chipset that supports Intel vPro. By enabling vPro and using Intel Manageability Commander I can now remotely control power, and get keyboard, video, mouse (KVM) access to the console. I’ve set it up to dual boot Windows 11 and Debian 12 so I now have a ‘bare metal’ system for testing various things.

Solar diary

The cold weeks did at least bring some sun. Though I’m not sure it will have made up for the extra electricity used running the heat pump in the evenings :/

121.3 kWh generated during January (versus 111.2 last year)

Beating Beat Saber

Hardly any more Beat Saber this month, but (again) a lot of Gun Club VR. I completed all the achievements in the regular game, and I’ve now moved on to the S.W.A.T. DLC, which continues to serve up fresh fun.


Today marks the anniversary of Milo’s first visit to the specialist oncologist at NDSR. I don’t think I expected to still have him with us a year ago, so it’s great that he’s here and generally enjoying life.

Milo getting to grips with a fallow deer antler

Since the last update:

  • He’s completed the second round of his second CHOP protocol. So we’re half way along, and things get easier from here, with less frequent vet visits (fortnightly rather than weekly).
  • ManyPets caught up with a months long backlog of insurance claims.

But, it’s not all been plain sailing. Milo seems to have been a little more susceptible to neutropenia than last time around, causing the specialist to recommend a reduced dose for his last vincristine injection. That did seem to work though, as his neutrophils were in decent shape for the doxorubicin a week later.

The complication that’s come along is cystitis. My local vet initially thought it might be a urinary tract infection (UTI), and he was getting antibiotics anyway for the neutropenia. But as soon as we saw the oncologist he said “it will be the cyclophosphamide”, so he’s now switched that out for chlorambucil and recommended some over the counter Cystease/Cystaid to help restore the bladder lining.

Past parts:

1. diagnosis and initial treatment

2. first setback

3. back on track

4. second setback

5. easing the pace

6. counting the cost

7. fat boy

8. done CHOPping for now

9. scans

10. relapse

11. remission


Like most IT folk in the UK I’ve been aware of the Horizon scandal as it’s unfolded over the decades as a slow rolling train wreck ruining hundreds of lives.

The recent TV series Mr Bates vs The Post Office seems to have finally brought things to a head in terms of political attention, after far too many years of the victims being ignored. Sadly this shouldn’t be a surprise to anybody. To misquote Wilhoit’s law:

The British Establishment consists of exactly one proposition, to wit: There must be in-groups whom the law protects but does not bind, alongside out-groups whom the law binds but does not protect.

Computer Weekly has done an excellent job of covering the story and keeping receipts. I count 340 links to past articles in their ‘Post Office Horizon scandal explained: Everything you need to know‘. The most damning though is ‘Post Office tried to convince independent IT witness that he was wrong about Horizon‘. From the headline it’s a story about a powerful organisation leaning on an expert witness, but that buries the true importance of what happened.

Jason Coyne was hired as an expert witness for a case against Julie Wolstenholme, who was subpostmaster and one of the early victims of Horizon flaws back in 2001. Coyne’s findings (about the failings in Horizon) never made it to court because the Post Office chose to settle the case – with a payoff and confidentiality agreement. The Law Society Gazette’s coverage of the ongoing public inquiry doesn’t bury the lede – ‘Post Office lawyer wanted postmistress to ‘keep her mouth shut’‘.

This, for me, is the smoking gun, as it’s too often that the cover-up becomes more important to defend than the original (in)action. That payoff could only have been approved at the highest levels within the Post Office (almost certainly the CEO), which has to mean they were (painfully) aware of the Horizon issues, and choosing cover-up over fess-up.

I don’t yet see the public inquiry asking the most important question: “who approved the payment?”.

I caught a little of the inquiry live as I was washing the dishes earlier in the week. They were grilling one of the Post Office ‘inspectors’ Stephen Bradshaw, who came across as somebody with all the wit, charm and subtlety of a bailiff serving an eviction notice as he trotted out various versions of ‘I was a lowly foot soldier just following orders’. No doubt he’ll walk away from it all with his share of the blame and his share of the shame.

But that brings me back to the misquote above. The inquiry is another tool of the establishment, and if its purpose is to spread the blame and shame to the Bradshaws that pass through it, then that’s letting those that gave the orders off the hook. Bradshaw and the lawyers he tried to pass the buck to were working in a rotten culture, and that rot all traces back to the cover-up and everything done to perpetrate it and protect it.

Which brings us to the confidentially agreement, or Non Disclosure Agreement (NDA) as they’re commonly called. I can’t remember the number of NDAs I’ve signed over the years. They’ve become very much part of business as usual, and I totally acknowledge their usefulness in protecting business secrets, whether that’s a (new) way of doing something, or proprietary/sensitive data. What I can remember are the times I’ve refused to sign NDAs, or written NOT ACCEPTED into the box. Such things have become a too common part of the badging in process for US tech firms (like click through end user license agreements), and are in my mind entirely unacceptable as there’s no time for proper reading, never mind review by a legal advisor.

What I can vividly remember are the few occasions I’ve signed an NDA in the full knowledge that I was selling my silence. Such things are tools of oppression, wielded by the rich and powerful against individuals without the means to fight back. Such things are used to silence the voices that would otherwise speak out about the malfeasance of individuals, corporations and government agencies. They’re also very effective at blocking collective action. If an individual can’t speak on a topic then they can’t rally others, or join a group.

The (mis)use of NDAs to silence illegal behaviour was a feature of the #MeToo movement, and particularly Harvey Weinstein’s trial. One sad truth that emerged was that he got away with it for so long because after abusing people he was then able to further bully them through the threat of legal action. It seems the same is true for the Post Office (and their executives). This raises the thorny question of whether an NDA is even enforceable when used to cover up crimes, a topic covered (in relegation to the Epstein case) in ‘Why nondisclosure agreements may not be enforceable‘:

In general, the bottom line is: If a contract is specifically about something illegal, that contract cannot be enforced. (For example, an NDA that gives you $1 million in exchange for promising to keep quiet about a murder is clearly void, since it’s against public policy to cover up murder.) As such, any contract that involves illegal activities, including an NDA clause in a contract, would not necessarily stop someone from testifying about the illegal conduct to which the contract refers.

From the same piece:

Especially given the current climate, many judges are unlikely to look kindly upon NDAs that may apply to unsavory or wrongful behavior, as opposed to legitimate purposes such as the protection of confidential data.

So, if you’re an employer, you’d be well advised to refocus on proper risk management and training, to prevent problems from happening in the first instance… Don’t think for a moment that you’ll be able to escape liability by silencing witnesses under an NDA. And it’s a good idea to conduct business by the New York Times rule: Namely, if you wouldn’t want to see something on the front page of the New York Times, then don’t do it.

This sadly is a very US perspective on the matter. I fear that the London Times rule goes something more like “if you wouldn’t want to see something on the front page of The Times, then make sure you have a good libel lawyer on retainer”.

It’s good to see the sub-postmasters might finally get some of the justice and recompence they deserve. But what’s even better is this might be a turning point for the relationship between British people and State power. I get a sense that Mr Bates vs The Post Office might have the scales falling from people’s eyes. “If they did that to hundreds of people who were pillars of their community then what else is going on?”, is a question being asked across the country. It’s a good question, and it’s going to need a robust political response that goes way beyond exonerations and compensation.

Updates

17 Jan 2024 – this topic came up in today’s Prime Minister’s Questions. I wasn’t able to catch the name of the Conservative MP asking the question (over the background jeering), but it was good to hear her vociferously arguing for NDAs being stripped from settlement agreements. The PM’s response seemed to suggest that there’s already some political momentum on the issue.

22 Jan 2024 – Dave Farley has published an excellent video ‘Developers Blamed For The Post Office Horizon Scandal?‘ looking at the technical aspects of the Horizon system and its development, and asking what sort of duty of care developers (and those hiring them) have for the people using their software.

26 Jan 2024 – Returning to last week’s PMQs I can now see them in Hansard, and the question referred to above was asked by Dame Maria Miller (Con).

It is against the law to silence victims of crime, but that is exactly what the Post Office did through the use of non-disclosure agreements, and this is just the most recent case of NDAs covering up mismanagement, misconduct and even crimes at work. Will my right hon. Friend the Prime Minister consider banning their use in all severance agreements once and for all?

and the PM’s response:

My right hon. Friend is right to raise an important point. The ability to speak out about things is key to unlocking justice. While NDAs can have a place—and my right hon. Friend is right to say that they should not be used to stop victims of crime in particular getting the justice they deserve—I can tell her that the Ministry of Justice is carefully considering how best to address this issue, including the use of legislation, and I know that my right hon. and learned Friend the Justice Secretary will keep the House updated on further progress.


December 2023

01Jan24

Pupdate

I already wrote about Milo’s lymphoma going into remission, which is good :)

We’re probably hitting more setbacks due to low neutrophils than last time around, but the whole process has (sadly) become routine, so it’s all less emotional and dramatic.

Max and Milo walking in the woods with my sister’s dogs Yoshi and Rho

Despite a succession of named storms we managed to get in some good long walks.

Full Fibre Internet

I already wrote about the saga of getting it installed, but after over a week of use I’m very pleased with the service. Download speeds are ridiculously quick now for some stuff. Latency and jitter also seem to be improved, which gives an overall impression of better quality.

Solar Diary

This December was much cloudier than last year :(

57.2kWh generated during December (vs 84.7 in Dec 2022)

Beating Beat Saber

I played a little Beat Saber at the start of the month. Despite controller updates the tracking still isn’t perfect, but it’s certainly improved.

The new VI levels are a lot of fun :)

But… I’ve been trying some other Quest games:

Gun Club VR

I got an email saying there was £5.70 of credit on my Oculus account so I took a look at the store to see what that would buy me. Gun Club VR was one of the many games in the holiday sale, and the £2.29 it cost me might be the best value I’ve ever found in gaming.

It’s provided many hours of entertainment so far. The only thing that’s more fun than shooting zombies is shooting Nazi zombies :)

I can see myself buying some DLC levels if only to unlock the AR15.

Asgard’s Wrath 2

I didn’t play the original, as it was a PC VR title, but this was bundled with the Quest 3, and released this month.

I’ve only played just past the intro scenes, but so far it’s very impressive and shows high production values and good gameplay.

Fruit Ninja 2

I didn’t bother with the original as I’d played the iPad version and it seemed like too much overlap with Beat Saber.

The new version adds archery, and after my 15m of free trial it was an easy choice to hit the buy button.


Full Fibre Saga

21Dec23

Almost two weeks later than planned, and after almost three days without an Internet connection to the house it seems like I finally have a working Fibre To The Premises (FTTP) install. Phew! This is the story of how it took so long, and the regulatory failure that underpins the sorry state of affairs.

Not bad speeds, though it’s kind of ridiculous that services are still asymmetric on download/upload

Background

My house was built in 2002. It’s utterly ridiculous that I didn’t get FTTP when I moved in, but as former British Telecom (BT) Chief Technology Officer Dr Peter Cochrane recounts in “How Thatcher killed the UK’s superfast broadband before it even existed” there’s an explanation for why FTTP wasn’t a thing in the UK 21 years ago.

At the time the best on offer was Asynchronous Digital Subscriber Line (ADSL), a service based on tech that BT originally developed to deliver on demand TV services over it’s copper telephone network. That got me 2Mbps, and it wasn’t long before ADSL2 came along and the speed bumped up to 8Mbps[1].

A decade or so rolled by, and along came Fibre To The Cabinet (FTTC) services based on Very-high-speed Digital Subscriber Line (VDSL). I switched to Plusnet (which is a BT subsidiary) as my provider, and they pretty reliably delivered 80Mbps download (~12Mbps up). This has been good enough for the 10+ years I’ve been using it, and when ‘full fibre’ services started to roll out I didn’t feel much pressure to upgrade, especially given the premium.

That cost equation changed though. When my contract came around for renewal this year the VDSL service was priced higher than FTTP, so it was time to change, even if that meant sacrificing the landline[2].

How things should work

The critical piece of equipment for a full fibre install is an Optical Network Termination (ONT). It’s essentially a type of Modulator/Demulator (Modem) taking flashing light from the fibre and turning it into electrical signals on an Ethernet cable that goes into a router (and turning electrical signals coming from the router into flashing light back down the fibre).

My ONT, with all the right lights on

The ONT is connected to a Connectorised Block Terminal (CBT) out in the street, which makes use of a form of encryption key based multiplexing so that the fibre from many houses can be back hauled on a single fibre to the exchange.

To connect the ONT to the CBT an engineer needs to run some fibre from the ONT (inside the house) to a junction box (outside the house) and from that junction box to the CBT. In my case there was ducting for both cable runs (holding the copper telephone cable used by existing services), so it should have been very straightforward:

  • Fish a couple of fibre optic cables
  • Splice those cables together in the junction box
  • Activate the new service[3]
Junction box outside my door with both fibre and copper cables. Left trunk goes inside, and right goes out to the street.

What’s Involved in an Openreach FTTP Full-Fibre Broadband Installation?” provides a much more detailed description of the process.

Engineer Visit 1 – 8 Dec – Matthew

When I was placing my upgrade order it was implied that installation would happen in a few days, but when it came to selecting a date, the earliest on offer was more than 3 weeks away – Dec 8.

When the day came around Matthew from Kelly Communications (an OpenReach contractor) arrived and set about doing both cable runs. He achieved neither. The internal duct was blocked, though he could just drill a hole through the wall to get around that. But also he couldn’t reach the CBT outside – his ‘cobra’ duct rod wasn’t getting through to the pit. He’d have to escalate the job to a specialist team with the equipment and skills to get past the block.

The cover over the pit containing the CBT to the right of my front door.

Clearing the internal duct

My colleague Colin (a former BT engineer) mentioned that he’d seen installers using compressed air to get cables through ducting so I gave that a go. To no avail – there was definitely a blockage. So I grabbed the vacuum cleaner and sucked out some debris (mostly bits of plaster) that likely found their way down their during the house build.

I was then able to get my metal fish line through the duct and leave a piece of string ready.

Engineers, but not for me

On Dec 14 I heard some engineers working outside, but my joy/hope was quickly quashed when they made clear they were working on my next door neighbour’s connection and didn’t have a job card to help me. I called Plusnet to find out when I could expect a visit, but didn’t get any clear answer.

Price hike

The next day (15 Dec) brought a fresh bill for my VDSL service, and as I’d run past the end of the 1yr contracted discount the price had leapt from £28.59 to £54.39. I called Plusnet customer service, and they were pretty swift in applying a £25.80 discount. I guess these things happen a LOT.

Engineer Visit 2 – 18 Dec – Josh

Josh arrived without any warning (having driven all the way from Kent), and was friendly and eager to get on with things. He quickly confirmed that he too couldn’t get from my house to the CBT, and went off to get a camera from a colleague to help navigate the blockage.

A little while later Josh figured out what was going wrong. The trunk from my house goes to a pit to the left of my front door, not to the right where the CBT is. The cable had to be run to pit (left) before going through another trunk to pit (right) where it could be connected.

Cover to the pit to the left of my front door

Sadly the pull string I’d run broke when Josh tried to use it. But we worked together to fish the internal cable, and it wasn’t long until he had the ONT hooked up.

There was a problem though. Josh had only been given the job to get the cable connected. He wasn’t able to activate the service. Josh left assuring me that another engineer would be along ‘in a few days’ to finish things off, and that my VDSL would remain active until then.

Cut off

About 30m after Josh left my VDSL broadband stopped working. I called Plusnet, was quickly escalated to Michael in tier 2 support, and assured that my new service would be activated in the next few hours.

Overnight I got an email ‘Your broadband product change is now complete’, but the new service wasn’t working.

I called Plusnet again, and was told that another engineer visit would be needed, and it would be ‘in a few days’. Meanwhile it was suggested that I could use a ‘BT Hotspot’ to get on the Internet, and I was told about the compensation rates for days without service and missed engineer visits. Later that day I got a text:

We have identified an issue which requires an engineer to attend your property. We have booked the appointment for the engineer to arrive between 08 AM and 01 PM on 21/12/2023

Jury rig

I connected a GL.iNet travel router to an EE Hotspot[4] and then used that as the Internet source for my home router. It worked surprisingly well, showing ~10Mbps down and 20Mbps up on a speed test.

The main annoyance was getting through the EE captive portal to pay and then sign in, which had to be repeated each time a session was timed out :(

Engineer Visit 3 – 21 Dec – Mark

Mark arrived shortly after 8 and immediately saw that the ONT hadn’t been activated.

He was unable to activate it himself with the app on his phone, and had to call a help desk in India who took around 15m to manually activate the service; leaving us both to enjoy hold music.

At that stage things were looking good. The PON light was solid green on the ONT and the multi-colour light on the Plusnet ‘Hub 2’ router was blue indicating a connection. I did a quick speed test with my laptop (over WiFi) and ~400Mbps down and 80Mbps up looked pretty respectable.

Mark wasn’t happy with the test results he was seeing though, and eventually set about checking/cleaning all the connectors. After redoing the splice in the wall junction box line levels were within the acceptable range.

I put the Hub 2 back in its box where it belongs and connected the ONT to my Draytek 2866.

How this could have gone better

I’ll pick some specifics from my experience that will lead into some more general points:

  • Matthew should have known which pit he was trying to get to.
  • The guys doing next door should have been able to grab my job out of the queue and save one of their colleagues another trip.
  • Josh should have been tasked with completing the job, not just doing 90% of it.
  • The lack of ONT activation should have prevented the changeover from VDSL to FTTP that cut me off.
  • ONT activation could have been handled without Mark’s visit.
  • Mark shouldn’t have needed to escalate to the team in India.

The Goal

My DevOps friends will probably know where I’m going here…

I asked one of the engineers how often things just work as they should. I expected the answer to be 50-60%. OpenReach have a well deserved reputation for poor service, but surely things work like they should some of the time. His answer shocked me – ‘never’. He said he’d never seen a ‘textbook’ installation.

The disaster that unfolded over the past weeks bears many of the same hallmarks as my last encounter with OpenReach. As an organisation it seems that their processes and the systems that implement them are fragile, siloed and have poor escalation paths – even for mainstream stuff like FTTP. This is hugely wasteful of precious engineer resource, which leads to customer frustration and poor profitability.

It seems that the regulator OFCOM’s response to this is to allow competition on the ‘last mile’, which should be a natural monopoly. So in addition to OpenReach’s fibre I now have fibre from a bunch of other companies running past my front door. This is a disaster for consumers, as ultimately we’ll all pay for that duplication in higher service charges over the coming years.

Regulatory failure in action – contractors digging up my street to lay more fibre because OpenReach can’t do their job

Rather than neoliberal ideology of solving problems with ‘markets’ and ‘competition’ OFCOM should have straightened out OpenReach’s disastrous mismanagement[5]. The problems described above can all be solved:

  • by understanding processes end to end
  • by empowering staff to do the right thing
  • by supporting people with well thought through platforms
  • by providing effective means to deal with exceptions when they arise

This is exactly what we did to a bunch of Delivery when I was at CSC/DXC. It’s a hard slog, but worth it. There’s no magic, we simply followed the approach described by Eli Goldratt in The Goal – identify constraints, fix the worst one, repeat.

Updates

22 Dec 2023 – the initial version of this post stated that wavelength division multiplexing (WDM) was used between the ONT and CBT, which has been corrected.

Notes

[1] At around the same time my brother in law was getting his flat in Japan connected to the Internet. His service was 1Gbps symmetric full fibre, and cheaper than my ADSL :0
[2] Plusnet don’t offer the ability to transfer a landline number to a Voice Over Internet Protocol (VOIP) service (unlike BT’s consumer service). In theory I could have picked another service, and hopefully even kept my (easy to remember) ‘home’ number. But even at a few pounds a month it’s hard to justify any cost. I stopped answering that phone many years ago as it was never for me (and usually scammers).
[3] As far as I can tell the main purpose of activation is to bind the ONT encryption key to the upstream Optical Line Terminal (OLT). This is just an entry in a database somewhere. Details of this are pretty sketchy, and I suspect that’s because there’s a bunch of security by obscurity going on. The Wikipedia article on Passive optical network provides the best overview I can find.
[4] It seems the BT Hoptspots have been re-branded to EE (and nobody’s upgraded the Plusnet support scripts).
[5] I should make clear that all of the engineers I encountered were all great – professional, understanding, friendly, and as accommodating as they could be within the constraints inflicted on them. But they work for an organisation that management have allowed to be dysfunctional.


A few milestones have ticked by since the last update:

  • It’s now over a year since Milo first got ill
  • We’ve made it through the first round of his second chemo CHOP protocol
  • The scan on the day that should have marked the end of that first round showed ‘a resolution of the intestinal mass and a reduction in size of the enlarged abdominal lymph nodes’
  • The oncologist used the word ‘remission’ (even if it can’t be found in the report sent to my local vet)

That’s all good news. Though it comes against a background of some blood tests showing low neutrophil counts, which have led to delays in administering chemo, and more vet visits.

Milo with a Green & Wilds ‘bone’

Insurance

ManyPets seem to have slipped back into taking months to process claims. The first claim for this policy was turned around in a couple of days (minus the excess), but everything since then has been queued up. I’m still waiting on a claim for a scan from the end of September. It’s not yet as long a wait as some claims from last year’s policy, but with the holidays almost upon us it’s not looking good.

Past parts:

1. diagnosis and initial treatment

2. first setback

3. back on track

4. second setback

5. easing the pace

6. counting the cost

7. fat boy

8. done CHOPping for now

9. scans

10. relapse


November 2023

01Dec23

Pupdate

Sadly Milo’s cancer is back, which I touched on the the relapse diary post. At least we caught it early with a scan, so he’s not actually been ill; and like the last time the chemo doesn’t seem to be denting his enthusiasm. The end of the month also marked the anniversary of when he first got ill, which seems like a significant milestone to get past.

Max and Milo in their fleeces

It’s got cold now (with some light snow even), so the boys are back to wearing their fleeces on walks.

Whisky

I typically go for a tasting, or just drinks with friends, at the Scotch Malt Whisky Society every 6 weeks or so. But this month brought more than the usual visits, and the first one was pretty special, a tasting of Royal Brackla.

It’s not a distillery I’d heard of before, which is hardly surprising as their output is fairly small, and most of it has previously gone into blends. The tasting opened with their 18yo, which was delightful, and probably the best of what we had (even though older and more expensive varieties followed).

Royal Brackla 18yo

Much was made of the award winning streak of Dewar’s master blender Stephanie Macleod who oversees production at Royal Bracka, and that was enough to get me to buy a few Dewar’s bottles during the Black Friday sales. Their 12yo is a brilliant example of what a blended whisky should be.

The Bacardi/Dewar’s/Royal Brackla team brought along some ‘new make’ from the distillery, which is spirit straight from the stills before any ageing in wood. At this stage it’s emphatically not whisky as it hasn’t had the mandatory 3 years minimum maturation. I thought it tasted a little like grappa. It definitely wasn’t just tasteless pure ethanol and water, and it was interesting to find those same flavours in a 12yo society bottling from the distillery that was also featured in the tasting.

Many thanks to India from the Barcardi team for her excellent overview and willingness to answer questions.

Solar Diary

This November was much the same as the last overall.

116kWh generated during November

New home lab server savings

It’s looking like the new ‘server’ consumes about 22.5kWh per month less than the old one, which will save me around £75/yr giving a payback (just on energy) of around 3y. Not bad considering how much more speedy and capable it is versus the previous kit.

Beating Beat Saber – Quest 3

Apparently I wasn’t alone having controller tracking issues with my Quest 3. After reading my October post a friend sent me a link to The Verge: “Meta is investigating Quest 3 issues after controller tracking complaints”. Thankfully it wasn’t long before reports emerged that Meta Just Fixed the Quest 3’s Big Controller-Tracking Problem. I’m not sure that it’s entirely fixed, as I’ve had one more episode of a saber wandering off on its own, but it certainly seems better.

My new corrective lenses also arrived, so I’ve been able to play without the bother of getting the headset on whilst wearing glasses :)

I’m not blown away by the Quest 3. It even seems to stutter in the same place on levels that could be problematic on the Quest 1; though maybe that’s a game issue rather than hardware.

Although I’m still not impressed with the head band, at least I didn’t buy the fancy expensive one with an additional battery as reports are now emerging of charging issues.


AI MacGuffin

24Nov23

I’m increasingly hearing AI talked about as a MacGuffin… It could magically solve this thorny and expensive problem that’s been intractable for years. We all just need to geek a bit harder, buy (or rent) more GPUs and scrape together some better training data…

In this context AI cannot fail, it can only be failed, by insufficient investment/commitment/belief.