Dan Q found GC1QYPN Back to Evergreen

This checkin to GC1QYPN Back to Evergreen reflects a geocaching.com log entry. See more of Dan's cache logs.

The geopup and I are out doing the North Leigh Loop from New Yatt, where we’re temporarily living while our house is dried and damage assessed by the insurance company following a catastrophic flood a few weeks ago.

Between Loop #3 and #4 we took a small diversion to find this cache, and I’m glad that we did! So nice to see a properly-sized (and tenured) cache still rocking it!

Lid was not properly attached by a recent finder, sadly, and the container spilled its contents as I picked it up. But once we’d reassembled it all we were able to sign the log and continue our loop.

TFTC to both the hiders and adopters. FP awarded for being the first decent-sized cache I’ve seen today.

Dan Q did not find GCAABMN North Leigh Loop #3

This checkin to GCAABMN North Leigh Loop #3 reflects a geocaching.com log entry. See more of Dan's cache logs.

While the geohound busied herself with the important task of collecting sticks several times larger than herself, I began the search for what I’d figured would be a QEF.

A French Bulldog pulls at the end of a very large stick, in a woodland.

Within the circle of uncertainty lay an obvious-looking host covered with obvious-looking candidate spots into which to squeeze a cache of this kind. After 15 minutes of searching where it “should” have been I wondered, per previous logs, if it might free fallen, and made a brief search of the mulch and leaf litter underfoot. No luck there either! After a total of nearly 20 minutes of searching, we had to give up.

×

Dan Q found GCAABMJ North Leigh Loop #2

This checkin to GCAABMJ North Leigh Loop #2 reflects a geocaching.com log entry. See more of Dan's cache logs.

Clearly I’ve trained the geohound well, because she found the geotrail out to this GZ before I did!

A French Bulldog on a muddy path.

This cache is definitely benefitting from its layers of defense against the elements: the log, in its inner sanctum, was dry despite moisture getting through all the other layers! TFTC!

×

Dan Q found GCAABME North Leigh Loop #1

This checkin to GCAABME North Leigh Loop #1 reflects a geocaching.com log entry. See more of Dan's cache logs.

Coming to the “start” of this loop having come from the “end” gave the geohound and I a perfect vantage point to sight this QEF. Now it’s time to find out how boggy the trail to #2 is! If it’s as muddy as the one from #8 back to the village then we might need to make an alternative plan!

Dan Q found GC7PC86 North Leigh Number 6

This checkin to GC7PC86 North Leigh Number 6 reflects a geocaching.com log entry. See more of Dan's cache logs.

Coming from Leigh Loop 8 the geohound and I figured we had an easy and direct run here, but intolerable mud at the East end of the field path drove us out onto the road and back before we could get to this cache. Even here, conditions were boggy and crossing the path to improve our certainty of our GPS coordinates was a drag! But we found it in the end pretty easily, although its logbook is so wet as to almost be unsignable! TFTC.

Dan Q found GCAABQ1 North Leigh Loop #8

This checkin to GCAABQ1 North Leigh Loop #8 reflects a geocaching.com log entry. See more of Dan's cache logs.

Since our house flooded a few weeks ago we’ve been living out of a series of short holiday lets, waiting for the floors to dry out and the insurance company to assess the damage, before we’ll hopefully be able to secure a slightly longer tenancy somewhere while repairs are done.

Right now we’re staying in New Yatt. I’ve cached a little around here before, but never this loop, so this morning the geopup and I came out for a walk and to begin this loop… at its end!

After some initial difficulty getting a GPS fix we eventually found a good looking hiding place. Despite this being the first find out this cache and the terrible recent weather, the cache and its log are in fine condition. SL, TFTC!

Things I do when I’m writing code that don’t look like writing code

Non-exhaustive list of things I’m doing when I’m writing code, that don’t look like “writing code”:

  • thinking
  • researching
  • contextualising
  • testing
  • measuring
  • documenting
  • communicating
  • planning
  • future-proofing
  • educating
  • learning
  • expressing
  • anticipating
  • discovering
  • inventing
  • experimenting
  • debugging
  • analysing
  • monitoring

For all its faults, an AI agent might “write code” faster than me.

But that’s only a part of the process.

My typing speed is not the bottleneck.

Dan Q wrote note for GC9EXXC Shady Seat on The Green

This checkin to GC9EXXC Shady Seat on The Green reflects a geocaching.com log entry. See more of Dan's cache logs.

Spring’s coming, and with it a stack of cachers either new or else returning from hibernation. Therefore; I’m briefly checking-in on my geocaches to ensure they’re in good condition. Today I peeped at this one, and found it happy and well and ready to be hunted. Go find it!

Note #28424

One last outing for the dog and I along the Cotswold lane we’ve been living on, before we move to different temporary accommodation tomorrow.

French Bulldog stands patiently in the centre of a potholed rural single track lane.

We’re hoping soon to no-longer have to move every week or two, but we’re not at that point yet.

×

Flood of cookies

In sympathy for our flood situation, my sister baked and posted us a big batch of her fantastic raisin & oatmeal cookies.

Dan, a white man with a goatee beard and blue hair, sits next to a large box of cookies, about to eat one.

I’ve eaten like six of them already. Turns out I stress-eat. Who knew?

×

F-Day plus 19

Nineteen days after my house flooded, causing extensive damage on the ground floor, the insurance company has finally accepted the claim and is willing to pay for our temporary accommodation in the meantime (a few days in a hotel, a few days with friends although that’s not paid-for, four weeks in two different holiday lets), although we’re still waiting for their thumbs-up on a proposal for a ~6-month let of a house to live in while our floors are replaced and our kitchen rebuilt and whatnot.

Two white men look at the outside of a sandbag-protected house.

Meanwhile, yesterday a surveyor came around and looked at all of our walls. Everything still feels like it’s taking a very long time. I appreciate that insurance companies are a maze of bureaucracy and procedure, but from “this side” of the table – living and working out of strange places, never really feeling “unpacked” but without it being a holiday – it’s all a bit of a drag!

×

Subverting AI Agent Logging with a Git Post-Commit Hook

Last night I was chatting to my friend (and fellow Three Rings volunteer) Ollie about our respective workplaces and their approach to AI-supported software engineering, and it echoed conversations I’ve had with other friends. Some workplaces, it seems, are leaning so-hard into AI-supported software development that they’re berating developers who seem to be using the tools less than their colleagues!

That’s a problem for a few reasons, principal among them that AI does not make you significantly faster but does make you learn less.1. I stand by the statement that AI isn’t useless, and I’ve experimented with it for years. But I certainly wouldn’t feel very comfortable working somewhere that told me I was underperforming if, say, my code contributions were less-likely than the average to be identifiably “written by an AI”.

Even if you’re one of those folks who swears by your AI assistant, you’ve got to admit that they’re not always the best choice.

Copilot review of some code on GitHub, in which it's telling me that I should have included an .agent-logs/... file in which my AI agent describes how it helped, but I'm responding to say that 'shockingly' I wrote it without the help of AI, and telling Copilot to shut up.
I ran into something a little like what Ollie described when an AI code reviewer told me off for not describing how my AI agent assisted me with the code change… when no AI had been involved: I’d written the code myself.2

I spoke to another friend, E, whose employers are going in a similar direction. E joked that at current rates they’d have to start tagging their (human-made!) commits with fake AI agent logs in order to persuade management that their level of engagement with AI was correct and appropriate.3

Supposing somebody like Ollie or E or anybody else I spoke to did feel the need to “fake” AI agent logs in order to prove that they were using AI “the right way”… that sounds like an excuse for some automation!

I got to thinking: how hard could it be to add a git hook that added an AI agent’s “logging” to each commit, as if the work had been done by a robot?4

Turns out: pretty easy…

Animation showing a terminal. The developer switches to a branch, adds two modifications, and commits them. Afterwards, the log and filesystem show that a log file has been created crediting (fictional) AI bot 'frantic' with the change.
To try out my idea, I made two changes to a branch. When I committed, imaginary AI agent ‘frantic’ took credit, writing its own change log. Also: asciinema + svg-term remains awesome.

Here’s how it works (with source code!). After you make a commit, the post-commit hook creates a file in .agent-logs/, named for your current branch. Each commit results in a line being appended to that file to say something like [agent] first line of your commit message, where agent is  the name of the AI agent you’re pretending that you used (you can even configure it with an array of agent names and it’ll pick one at random each time: my sample code uses the names agent, stardust, and frantic).

There’s one quirk in my code. Git hooks only get the commit message (the first line of which I use as the imaginary agent’s description of what it did) after the commit has taken place. Were a robot really used to write the code, it’d have updated the file already by this point. So my hook has to do an --amend commit, to retroactively fix what was already committed. And to do that without triggering itself and getting into an infinite loop, it needs to use a temporary environment variable. Ignoring that, though, there’s nothing particularly special about this code. It’s certainly more-lightweight, faster-running, and more-accurate than a typical coding LLM.

Sure, my hook doesn’t attempt to write any of the code for you; it just makes it look like an AI did. But in this instance: that’s a feature, not a bug!

Footnotes

1 That research comes from Anthropic. Y’know, the company who makes Claude, one of the most-popular AIs used by programmers.

2 Do I write that much like an AI? Relevant XKCD.

3 Using “proportion of PRs that used AI” as a metric for success seems to me to be just slightly worse than using “number of lines of code produced”. And, as this blog post demonstrates, the former can be “gamed” just as effectively as the latter (infamously) could.

4 Obviously – and I can’t believe I have to say this – lying to your employer isn’t a sensible long-term strategy, and instead educating them on what AI is (if anything) and isn’t good for in your workflow is a better solution in the end. If you read this blog post and actually think for a moment hey, I should use this technique, then perhaps there’s a bigger problem you ought to be addressing!

× ×

Caution: No Swimming

A partially-submerged traffic cone sits in a large puddle in a rural field.

Hurrah! I just made my first successful submission to Curious Cones, a weblog collecting photographs of traffic cones spotted in unusual places.

I spotted this cone while the younger child and I took a walk to the next-nearest village to our temporary accommodation, in order to find a geocache, tag some benches for OpenBenches, and have a cafe brunch.

Anyway: if you’re not following Curious Cones, it’s exactly as delightful as you might expect.

Dan Q found GCBAJC3 Cache me if you can, Jeremy

This checkin to GCBAJC3 Cache me if you can, Jeremy reflects a geocaching.com log entry. See more of Dan's cache logs.

Despite being relatively ‘local’ – only half a mile away, and fans of the show – it took until this morning before the family and I actually came to up visit Clarkson’s Farm. We’re even-more-local but now, after a flood made our house uninhabitable and we moved, temporarily, to a holiday let just up the road.

A family sits at a picnic table in a barn, eating sausage sandwiches.

This morning we visited Diddly Squat for a round of sausage sandwiches, after which the youngest child and I decided to make a run for this nearby geocache. The kid put his finger right on the cache before I’d even had a chance to take a look for it!

Dan and a child stand at a bus stop, with Diddly Squat Farm Shop in the background.

Log signed, and a car full of Hawkstone Lager acquired, we were all done. TFTC!

× ×