Stopping the Git CredentialHelperSelector from popping up

June 24th, 2025

Recently, I was plagued by the “CredentialHelperSelector” dialogue popping up multiple times when attempting to pull from a remote Git repository. This was despite repeatedly selecting the option to remember my selection to use manager and various attempts to explicitly set the config helper via the command line.

In the end, the following command was my saviour:

git config -l --show-origin

It showed that the offending credential.helper=helper-selector was specified in the gitconfig file under the Git install (this being Windows). What you then need to know is that credential.helper is a multi-valued list, and so any changes I was making in my user level .gitconfig were additive. This explains why, once an alternative was specified, I could cancel the numerous selector dialogues, and the operation would still complete successfully.

So, how to avoid those annoying pop-ups? Well, if you can edit that system-level gitconfig just remove the offending entry. Unfortunately, on my locked-down system, that wasn’t an option. The answer, then, is this change, available in Git 2.9 onwards. It allows you to specify an empty helper to clear any existing entries in the list. My .gitconfig now contains the following, and the selector is no more!

[credential]
        helper =
        helper = manager

Updating the symbol set and magentic north with OpenOrienteering Mapper

June 15th, 2025

I spend a couple of hours a week hanging around the leisure centre at Fleming Park while Emma swims. For the past month or so, I’ve been using that time to update the orienteering map of the area, ready for the SOC Summer Series event there in August. The fairways of the old golf course are becoming increasingly overgrown, aided by the planting of lots of new trees. I therefore wanted to update the map to the latest sprint specification, ISSprOM 2019-2, so that I could make use of the ‘rough open with scattered bushes’ symbol. Although it hasn’t shifted much since 2016, I thought it was also time to update magnetic north.

The following directions for OpenOrienteering Mapper (OOM) are based on those I received from the club’s mapping officer, Mark Light.

Updating the symbol set

  1. Download and unzip the latest symbol set from the British Orienteering website.
  2. To make your life easier in step 4, delete any unused symbols from the map.
    1. Right-click on the symbol palette and click Select Symbols > Select Unused.
    2. Right-click on any unused symbol in the palette and select Delete.
  3. Select Symbols > Replace symbol set… and select the
    appropriate scale set of icons from the download in step 1. If, as in the case of this map, the scale doesn’t match, you’ll get a warning.
  4. Provide a mapping for each symbol in the old set to the new.
    1. You can use the Symbol mapping dropdown at the bottom of the dialogue to determine whether it matches by textual name or ID number by default.
    2. Work your way down the list, checking where there is no mapping specified. If the old symbol is something custom that you want to carry across, for example, text for a legend, leave the selection as -None-. Similarly, if you’re not sure what it should translate to, just take a note of the number and leave it as -None-.
    3. Click OK.
  5. Map any symbols you were unsure about
    1. Right-click on each symbol in the symbol window and click Select all objects with this symbol.
    2. If you can now work out what they should be mapped to:
      1. Select the new symbol in the symbol window.
      2. Click the Switch symbol icon in the toolbar.
      3. Right-click on the old symbol and select Delete.
  6. Particularly for any custom symbols you’ve carried across, check that they are still visible on the map. It may be that, as with this map, they have been given a colour that is now lower down the colour table than some symbol that appears above them. Either double-click on the symbol and edit it to use the correct colour from the specification, or select View > Color window and re-order the colours so that the symbols reappear.
  7. If, in step 3, you received a warning about the symbol and map scales not matching, now is the time to fix that.
    1. Select Symbols > Scale all symbols….
    2. Enter the scale percentage. For example, when using 1:4,000 symbols on a 1:5,000 map, enter 80%.
    3. Click OK.

Updating magnetic north

  1. Determine the magnetic declination applicable to your map.
    1. Open this website in a browser.
    2. Drag the marker to the location of your map and note the current magnetic declination. OOM will only accept two decimal places, so don’t worry too much about the exact position of the marker.
  2. Ensure that the map is correctly georeferenced with the correct projection, in our case, the Ordnance Survey British Grid (EPSG 27700). These settings can be found under Map > Georeferencing….
  3. If it doesn’t already exist, create a new ‘part’ in OOM for the map furniture (borders, legend, north lines, and anything that shouldn’t change with magnetic north).
    1. Select Map > Add new part….
    2. Name the part Furniture.
    3. Click OK.
    4. A new dropdown appears in the toolbar showing the currently selected part. Select the default part.
    5. Select the items that make up the furniture, either on the map or via their symbols. Select Map > Move selected objects to > Furniture. Repeat until all of the furniture is in the new part.
    6. Under Map > Georeferencing… enter the declination you retrieved in step 1 and click OK. This will rotate all parts of the map to account for the current position of magnetic north.
    7. Now you need to rotate the furniture back.
      1. Select the Furniture part.
      2. If you don’t already have a grid displayed, select View > Show grid.
      3. Select Tools > Rotate objects and rotate the furniture part to align with the grid.

Helm: for better or worse?

June 9th, 2025

A few weeks ago, one of my colleagues at JUXT gave a presentation on Helm, and this started me thinking back over my own experiences with the tool. It appears I already had a lot to say on the subject back in 2018! Since then, I’ve made extensive use of Helm at CloudBees where we had an umbrella chart to deploy the entire SaaS platform, and at R3. It’s that latter experience that I’m going to talk about in this post.

Helm and Corda

The main Helm chart in question is the one for the R3’s Corda DLT, which you can find on GitHub. The corda.net website has, unfortunately, been sunset, but my blog post describing the rationale for using Helm is still available on the Internet Archive. Another article explains how the chart can be used, along with those for Kafka and Postgres, to spin up a complete Corda deployment quickly.

As an aside, it was a conscious decision not to provide a chart that packaged Corda along with those Kafka and PostgreSQL prereqs. The concern was that customers would take this and deploy it to production without thinking about what a production deployment of Kafka or Postgres entails. Not to mention wanting to make it clear that these were not components that we, as a company, were providing support for.

As a cautionary tale: despite its name, the corda-dev-prereqs chart referenced in that last article (which creates a decidedly non-HA deployment of Kafka and PostgreSQL) found itself being deployed in places it shouldn’t have been…

More Go than YAML

Whilst the consumer experience with the Helm chart was pretty good, things weren’t so rosy on the authoring side. The combined novelty of Kubernetes configuration and Go templating was just too much for many developers. While some did engage, ownership of the chart definitely remained with the DevOps team that authored the initial version, rather than the application developers.

The complexity of the chart also ramped up rapidly. With multiple services requiring almost identical configuration, we soon moved from YAML with embedded Go to Go with embedded YAML! That problem is not unique to Helm; I remember having the same issue with JSPs many moons ago.

The lack of typing, combined with the fact that all functions return strings, started to make the chart fragile, particularly without any good testing of the output with different override values.

Two charts are not better than one

If you look at the GitHub repository, you might wonder why most of the logic for the chart sits in a separate library chart (corda-lib) on which the main corda chart depends. What you can’t see is that we had a separate Helm chart for use by paying customers. This was largely identical to the open-source chart, but included some additional configuration overrides. The library chart was an attempt to share as much logic as possible between the two.

What we couldn’t share was the values.yaml itself and the corresponding JSON schema, and as a consequence, there was always a certain amount of double fixing that went on. What we really needed was a first-class mechanism for extending a chart.

Helm hooks

Although there were other niggles, the last issue I’m going to talk about is the use of Helm hooks. Corda has two mechanisms for bootstrapping PostgreSQL and Kafka: an administrator can use the CLI to generate the required SQL and topic definitions, or the chart can automatically perform the setup when the chart is installed. We expected customers to use the former mechanism, at least in production, but the latter was used in most of our development and testing, and by the services team in pilot projects. The automated approach used a pre-install hook to drive a containerised version of the CLI to perform the setup.

So far, so good. We then started to look at using ArgoCD to deploy the chart. ArgoCD doesn’t install Helm charts directly, instead, it renders the template and then applies the Kubernetes configuration. It does have some understanding of Helm hooks, converting them into ArgoCD waves, but it doesn’t distinguish between install and upgrade hooks. This would lead ArgoCD to try to rerun the setup during an upgrade.

Now, here some responsibility must lie with the Corda team, as those setup commands should have been idempotent, but they weren’t. The answer, for us, was to use an alternative to ArgoCD (worth a separate post), but our customers might not have the luxury of that choice.

Summary

Does all of the above mean that I think Helm is a bad choice? As always, it depends. For ‘packaged’ Kubernetes configuration, I still believe it’s a better choice than requiring consumers to understand your YAML sufficiently to be able to apply suitable modifications with Kustomize. In particular, pushing Kustomize is opening up your support organisation to having to deal with customers basically using any arbitrary YAML to deploy your solution.

In the case of Corda, we underinvested in building the skills to make the best of Helm. Fundamentally, though, I’d suggest that we simply outgrew it. If I were still working on its evolution, the next step would undoubtedly have been to implement an operator and write all of that complicated logic in a language that properly supports testing and reuse.

Lancaster and Lake District Getaway

August 5th, 2024

Last weekend, the children were away on a music tour and Christine was examining a viva in Lancaster on Monday, which was the ideal excuse for a long weekend in the Lake District.

Friday – Loughrigg Fell

I took Friday off work and we took the train to Windermere via London, and then the bus to Rydal where we were staying in the Badger Bar. (Badger feeding was supposedly on offer each evening but I think we went to bed before the badgers got up!) It took about seven and a half hours door to door which, while a couple more than driving, was certainly more relaxing. We had time for a walk on Loughrigg Fell before dinner in the pub (and watching a very damp Olympic opening ceremony on TV).

Saturday – High Raise and the Langdale Pikes

The forecast was for rain most of Saturday morning. We eventually set out about 11, staying low and skirting the lakes to Grasmere. After tea and cake, things had started to dry out and we set off up to High Raise. Our younger selves might have continued on to Bowfell but we decided to drop down to Dungeon Ghyll via the Langdale Pikes.

We had a drink at the pub while waiting for the bus and chatted to a couple of guys who had been watching the Blisco Dash fell race (this year, the British Short Champs). They also mentioned it was the Lakeland 50/100 and we cheered the runners in Ambleside as we sat and ate our fish and chips.

Sunday – Fairfield Horseshoe

The weather was set fair for Sunday and we headed up Nab Scar to do the Fairfield horseshoe clockwise. I was dripping in sweat when we reached the ridge but sadly we then headed into the clouds as we approached Fairfield. The clouds did clear as we headed back towards Ambleside.

Monday – Lancaster

We relocated to Lancaster University that evening and had a wander around a mostly deserted campus. On Monday I had a couple of hours to kill while Christine worked. I decided to take the guided tour of Lancaster Castle. You started in the wings that were still in use until the prison closed in 2011 and then headed back a few hundred years to the waiting cells where, if you timed your arrest badly, you might have had to wait up to 9 months for the court of assizes. The tour then moved on to the impressive courtrooms, concluding in the “drop room” (which I’ll leave you to fathom for yourselves).

There was just time for a quick bite to eat before it was time to meet Christine at the station for the return train home.

WordPress is broken by PHP in Jammy update

August 3rd, 2024

This blog has been a bit neglected for the last few years. I miss the opportunity to reflect on something I’ve done and write up those thoughts. We’ll see whether this is a one-off or the start of something new!

The first task was to make sure everything on the site was up-to-date. WordPress does a pretty good job of automatically applying security fixes but the Ubuntu VPS needed an upgrade. The update to Jammy went smoothly enough but attempting to access the site showed the WordPress PHP source. The enabled modules for Apache showed a couple of broken symlinks to PHP 7. After enabling those for PHP 8.1, I saw a WordPress error page: There has been a critical error on this website.

The WordPress PHP compatibility matrix indicates that there are still exceptions with PHP 8 versions. Time to get PHP 7 back…

Then re-enable the PHP 7 Apache modules:

With the site rendering again, I thought I was done but on posting this entry the dreaded critical error reappeared. Looking again at the Apache error logs, /var/log/apache2/error.log revealed errors in lightbox-plus and crayon-syntax-highlighter of the form Compilation failed: invalid range in character class. From PHP 7.3, hyphens need to be escaped in regular expressions. I could have rolled the PHP version back further but decided to patch the offending files. (I probably need to review the plugins in use on the site and remove those that are no longer supported.)

And, finally, we’re back in business!

Lockdown 2

February 27th, 2021

October started with Duncan’s birthday. It was a pretty quiet affair at home with Christine’s parents visiting and a film in the evening. Friday night has become film night more generally now (after a trial of Sky Cinema we signed up for a discounted subscription). Trying to select a film is always a bit of a trial, particularly balancing Emma’s desire for action against age-appropriate content for Duncan! I’m usually the one who ends up making a final decision to try and satisfy everyone’s needs.

Swimming lessons continued, as did long walks and cycle rides at the weekend. In addition to Tuesday Night Runs (now with beer inside but with face masks and table service), I managed a couple of runs with the IBM gang. We went to another SCJS training with Duncan, this time in the New Forest. We were back in the Forest a couple of weeks later for an event I planned at Anderwood. I managed to put one control in the wrong place – the perils of doing all of my planning in one visit to the area the week before the event – but otherwise everything went well!

Still with vacation to burn, I had half term off. Much of it was taken up redecorating Emma’s room: out with the little girl pink, in with the teenage grey (there was much debate about quite how dark a grey she could have!). Duncan and I amused ourselves soldering and assembling the MERG DCC command station and handset kits for his railway. Two pairs of hands definitely made the job easier, not to mention Duncan’s eyesight when it came to the surface-mounted components in the handset. Remarkably, it all worked once assembled but the train and track now need a bit of an upgrade to get a reliable signal.

Lockdown returned for four weeks in November which brought the more sociable activities to an end (at least face-to-face). You were still allowed to exercise with one other person, so Tuesday Night Runs involved Ian and I running around Chandler’s Ford, and I could still go out cycling with Alasdair. Through an article in CompassSport, we had discovered the Turf app (think Pokémon GO but without the cute characters) which, even four months later, is still getting us out the door.

Duncan bought himself a small drone which we then promptly had to retrieve from the garden two doors down the road! He also bought himself a penknife which has, so far, only caused the loss of blood on one occasion! The month ended with Christine’s birthday. Come December, Christine was also allowed to tell the world that she had succeeded in her promotion to Professor. At least she now needn’t worry about being called upon to help in an emergency!

Emma’s inflatable boot had not helped her ankle but we were then left waiting for the hospital to start operating on children again. We were eventually given a date at the start of December (still over a month before the NHS would have even started to look at her ankle). Christine would go with her so both had to traipse up to Basingstoke for a Covid test three days beforehand, and then the whole family had to isolate until the day itself. Having been on the front of the list, Emma was awake again by mid-morning and home early afternoon. All seemed to go well and, rather than a plaster cast, she got to use the inflatable boot again. By Christmas, she was walking around normally again although is still a bit wary of cycling.

Things opened up again for the next few weeks. Orienteering resumed with events at Bramshaw and Farley Mount. We even managed the annual Run the Pubs, albeit that the meal afterwards had to be in the pub garden as we were not all from the same household. I managed to give blood (having been turned away with a sore throat on the previous occasion). We also had a big online launch event for the Software Delivery Management product I’m working on, for which everyone in the company received a set of glassware in the post so we could drink a toast. (You had to provide your own drink though!)

The dreaded R-number was on the rise again in the run-up to Christmas and there was much debate about what we might be able to do. At best, it was possible that we might be able to meet family for a few hours outside but, by the 19th, Hertfordshire (where my family is based) was put in the topmost tier, ruling even that out. By Boxing Day, we joined them in Tier 4 and we were to enter another national lockdown in the New Year. The Christmas period was therefore spent at home, enjoying the frosty conditions outside, and doing yet more decorating!

New Year’s Eve was made a bit special as we cashed in the money that CloudBees was contributing to a festive meal and had a nice takeaway. Emma was then determined to stay up until midnight and we thought we should probably keep her company! As the year came to an end, I’m sure everyone had the same wish: that 2021 should be a better one.

Socially Distanced Summer

February 21st, 2021

July continued in much the same theme as June with a mixture of online and socially-distanced face-to-face activity. The children continued to be schooled at home until the end of the summer term. Duncan even got to meet his teacher for next year (who is new to the school) online. The orienteering club continued to have online sessions on Zoom, including the AGM at which I was delighted to receive the “outstanding contribution award”! Duncan and I continued with PE with Joe until it stopped at the end of the term.

In the real world, Tuesday Night runs continued in the New Forest. It was pleasant enough sat in the garden at the Sir Walter Tyrell but the beer options were limited and served in plastic glasses. There were also regular visits to friend’s gardens for socially distanced beverages. Long walks at the weekends were another continuing theme.

In other news, when the dentist re-opened for business, Emma had her last child’s tooth removed at the request of the orthodontist. Sadly the orthodontist is not permitted to start any new work though so no further progress there. We also participated in a Covid-19 saliva test trial run by the University of Southampton. Over six months later, there are now plans to use the test at Emma’s school.

August brought the summer holidays. We were immensely thankful that travel to France was possible. Not because we had any intention of going, but Christine’s brother did, which meant we could make use of their newly renovated home in Cornwall for a week. (Just to be clear, it’s their only home!) They live away from the tourist hotspots which meant we could do some local walks away from the masses but, to be honest, even when we did go to the beach, there was generally plenty of space for all, although the lifeguarded area in the water was sometimes a little cramped.

We had one trip out booked which was the gardens at St Michael’s Mount. The gardens were lovely but it was not a day for lounging around on the terrace afterwards. We left the day Christine’s brother and family returned but we did spend a lovely morning messing around on the river with the paddleboards. We also took the opportunity to call in on my uncle in Devon on our journey home.

Having not been away at Easter, I could afford to take to the following week off although the excitement was fairly limited. The swimming pool re-opened but you had to book so I think Christine and Emma only went the once. It did mean that the children’s lessons resumed though.

The last week of August we de-camped to Monmouth although Christine and I continued to work during most of the week. We did a lovely (if wet at times) walk in the Brecons with Duncan that took in the horseshoe including Corn Du, Pen Y Fan, and Cribyn.

Back home, we booked the children into Clarks in preparation for the return to school only to discover they had no shoes that would fit Emma! They could, however, suggest what size and style we should buy online. Duncan had a day of outdoor activities at Woodmill which he enjoyed. Emma, meanwhile, went to Basingstoke to get an x-ray of her ankle. We’d given up on the NHS who offered Emma a first consultation in February and found a private consultant covered by our medical insurance. Sadly, he’s not currently operating out of Winchester, hence the trip up to Basingstoke.

Christine and I celebrated our 20th wedding anniversary although it wasn’t exactly the big family get together that we had originally planned. We did see Christine’s parents the following day as they passed through having finally picked up their electric car. A friend’s 50th birthday and a walk at Lepe took us to the end of the holidays.

September saw the children both return back to school and it was suddenly very quiet during the day with just Christine and myself ensconced at opposite ends of the house. It was great to see them fall straight back in with their friends though. They’d only been back a week when Emma went back to Basingstoke for an MRI scan and came away with an inflatable boot that meant she needed ferrying to and fro from school. The staggered start to the school day meant the traffic wasn’t too much of a trial.

I took Duncan along to a SCJS training session at Ash Ranges which was a welcome diversion. A mix up over dates did mean that we ended up going two weeks in a row though! Orienteering events also resumed with a SOC event held at Hincheslea. Forestry England constraints meant that we were limited to thirty competitors which was a shame.

One upside to the pandemic has been the rise of the virtual conference. I was given a free ticket to a GOTO conference which had some great content. CloudBees also had its annual DevOps World conference and saw a massive increase in participation over the usual in-person event. It was, however, also very nice to meet up face-to-face with the CloudBees Whitely crew for a sociable pub lunch.

Life in Lockdown

February 15th, 2021

There is one overriding theme for the next three months: lockdown and its consequences. Home schooling was one of those consequences and, with Duncan still receiving only limited direction from school, we were grateful for any distraction. And so it was that we became followers of Joe Wicks and his daily HIIT workout. Work tended to start around 10am for me as a consequence and, with other interruptions, there was typically time spent catching up in the evenings.

One of those distractions was the weekly shop which, in an attempt to minimise time spent queueing, was often done during the working day. As time went on, the queues got shorter and the shelves started to fill again. The nation had taken to baking and, as a consequence, there was a constant scrabble to ensure we had enough flour and yeast to make our daily loaf. The local pub, no longer able to open for business, was distributing catering supplies though and so, at one point, we had an 8kg bag of flour on the go along with 500g of frozen yeast!

At Easter, we should have been up in York at the JK. Instead, we were at home taking part in the virtual Lockdown Orienteering that was the brainchild of Chris Smithard and co. It kept Duncan and I busy for much of the Bank Holiday weekend, particularly having splashed out on a Catching Features license (which both of us were pretty rubbish at). It must have appeared like fun though as Emma joined in for the next one and they became a regular feature of the next few months.

May is a month for birthdays in our family. It started with mine which was fairly uneventful. Next up was my Dad’s and sadly we had to miss the milestone that was his 90th. Apparently, word got round in his street though and he was treated to a socially-distanced rendition of Happy Birthday on his doorstep! This was also VE day, to which the government had moved the first Bank Holiday. One of our neighbours had proposed a street party which, on a scorchingly hot day, was a lovely way to meet some people on the street that we might never have talked to otherwise. It was such a success that it was repeated on the second Bank Holiday, this time with an ice cream van in attendance!

Emma’s birthday was the last to come. It started with a walk around her friends’ houses to drop off craft supplies (not to mention pick up presents) for a party that then took place on Zoom. There was also another Zoom call, this time with the extended family, for the cutting of her rainbow birthday cake. It felt a bit mean given that none of them would get to sample the cake!

We had some lovely long walks and cycle rides during this period. The New Forest was bursting at the seams but we know it well enough to avoid the tourist traps. We also explored some of the quieter reaches of the Test Valley. Towards the end of June, Emma started to complaining that her foot was hurting after exercise, of which more in a future post.

The lockdown was also starting to ease around this time and, in particular, we were allowed to meet in groups of up to six outside. This meant that Tuesday Night runs could resume. The warm evenings meant that sitting outside sinking a few beers with friends was very pleasant. At the end of the month, we even managed to meet up with Christine’s parents, albeit just for a few hours, with Greenham Common chosen as the rendezvous point. We even managed to persuade Duncan to get his lockdown hair cut!