Getting a full-width PR review pane on GitHub temporary private forks (1 mins read).

How to improve your code review experience on a temporary private forks on GitHub, by making sure that the code is showed at the maximum page width.
Getting a full-width PR review pane on GitHub temporary private forks (1 mins read).

How to improve your code review experience on a temporary private forks on GitHub, by making sure that the code is showed at the maximum page width.
Looking back at my first year as the Renovate Project Lead (20 mins read).

Reviewing some of the key highlights of my last year working as the Renovate Project Lead, and showing some stats about the project, its community and myself.
Updating apk add and apt install definitions in Dockerfiles with Renovate (3 mins read).

Sharing that Renovate 44.103.0 automagically parses apk add and apt install commands inside a Dockerfile.
Performing per-environment staged rollouts of dependency updates with Renovate (6 mins read).

How to gradually stage upgrades across environments (stored across multiple branches or on a single branch) with Renovate.
Exporting your chats from Claude.ai (1 mins read).
How to export the full chat history for a conversation on Claude.ai.
Determining if your branch is part of a GitHub Stacked PR (2 mins read).

How to work out whether you're on a branch which is part of a Stacked PR, and what position you are in the stack.
My new workflow for local code review with tuicr (5 mins read).

How I'm currently reviewing code from the terminal, using tuicr.
Updating dependent branches when rebasing, automagically (2 mins read).

How to use git rebase --update-refs to update dependent branches when rebasing.
What commit did I branch off from? (1 mins read).

Using git merge-base to work out what commit a given branch was branched off from.
I'm on Fallthrough: A Modest Proposal Proposal (1 mins read).

Announcing my appearance as a co-host on Fallthrough, talking about the Go proposal proposal and many other things.
Announcing some improvements to renovate-pretty-log-tui (2 mins read).

Shipping some large changes to my local tooling for interacting with Renovate debug logs.
Why I still hand write my commit messages (6 mins read).

Explaining why I still spend a lot of time writing my commit messages by hand.
GopherCon UK 2026 (15 mins read).

A writeup of the GopherCon UK 2026 conference.
Finding which PRs have been taken out of the Merge Queue due to failed status checks (2 mins read).

How to check which PRs were removed from the Merge Queue due to failed status checks, via the GraphQL API.
How much AI can a maintainer get away with using without losing their humanity? (8 mins read).

Thinking about the onslaught of AI-generated contributions, and if there is space for maintainers to "fight fire with fire".
Merging the default branch into a PR, from the API (2 mins read).

How to use the GitHub API to merge main (or the default branch) into a given PR, from the API.
Reducing overly nested Vendir paths (1 mins read).
How to use newRootPath to reduce overly nested paths for HTTP files being synced with Vendir.
Determining adoption of AI through Git commits (2 mins read).
How to determine the percentage of AI adoption, when attributing through Git commits.
Is there space for 'craft' in the world of AI? (10 mins read).
Replying to a friend's pondering about whether being a 'craft engineer' is still possible in the world of AI.
I'm on Fallthrough: He Who Controls the Source (1 mins read).

Announcing my appearance as a co-host on Fallthrough, talking about a mix of current affairs, including SHai-Hulud, the Open Source Resistance and more.
Caveats around using Libyears (5 mins read).

Why taking the Libyear metric at face value can mislead you, and suggesting a new metric 'Tempered Libyears'.
I hate the recent open-source rise (3 mins read).

Why I'm worried about folks using the term open-source and some minimal research into why it's wrong.
Gotcha: Yarn may need an empty NPM_TOKEN set to run (1 mins read).
Why you may be seeing Failed to replace env in config: ${NPM_TOKEN} if you don't have an NPM_TOKEN set.
Configuring Renovate to only suggest updates that match your go directive (4 mins read).

How to make sure that Renovate's updates to Go modules keep you within the minor version of your go directive.
I'm on Fallthrough: No Country for Old Maintainers (1 mins read).

Announcing my appearance as a co-host on Fallthrough, talking about a mix of current affairs, including OAuth, maintainer burnout, of course some AI and more.
A deep dive into the wild world of GitHub Actions' tagging formats (7 mins read).

Inside the ways that GitHub Actions' versioning works, and how we improved Renovate's support.
I'm on Fallthrough: Supply Chain Reaction (1 mins read).

Announcing my appearance as a guest co-host on Fallthrough, talking about supply chain security, AI, Claude Mythos, and many more topics.
Setting up Neovim with the Debug Adapter Protocol for Javascript/Typescript (2 mins read).

How to use Neovim, nvim-dap, Mason and js-debug-adapter to add debugging capabilities for a Javascript/Typescript application.
How to build a git diff driver (3 mins read).

How to write an external tool for git diff to delegate complex diffs to.
Using oasdiff for rich Git diffs of OpenAPI spec changes (2 mins read).

How to configure git diff to use oasdiff's rich changelog on changes to OpenAPI specs.
Pointing lazy.nvim to a Pull Request (1 mins read).

How to configure lazy.nvim to reference a Pull Request for a given plugin.
My workflow for testing Renovate config changes (2026 edition) (11 mins read).

A runthrough of my process for testing more complex Renovate config changes where I want confidence up-front.
Does my site's analytics change how I write? (4 mins read).
Reflecting on whether how my blog is read impacts what I write.
Automagically updating oapi-codegen JSON Schema version bumps with Renovate (1 mins read).

How to use Renovate to update the version pin on oapi-codegen's JSON Schema URL.
How I'm using Local Large Language Models (7 mins read).
Insight into my (low) usage of local LLMs on my personal desktop and work Mac.
Automating the syncing of files between repos with Renovate and Vendir (4 mins read).

How to use Renovate and Vendir to periodically update vendored files which are out-of-sync between Git repos.
How and why I attribute LLM-derived code (9 mins read).
How I'm reducing risks of legal concerns now and in the future with AI-generated code.
Breaking free from GitHub Discussions' limitations (12 mins read).

How we built our own interface on top of GitHub Discussions to improve triage for Renovate's Open Source community.
GitHub Actions' required properties aren't always required (2 mins read).

A gotcha with how required: true allows an empty string as valid input.
Lessons learned from oapi-codegen's time in the GitHub Secure Open Source Fund (6 mins read).

Sharing some thoughts about the GitHub Secure Open Source Fund and how I spent the time with oapi-codegen.
Using Ledger, plain text accounting and a touch of AI to fill in my UK tax return (6 mins read).
How I'm using the Ledger plain text format for managing my finances for my UK tax return.
What I've learned building an agent for Renovate config (as a cautious skeptic of AI) (11 mins read).

As an opportunity to "kick the tyres" of what agents are and how they work, I set aside a couple of hours to see build one - and it blew me away.
The first 100 days as a Renovate maintainer: the shocking inside view of a popular Open Source project (18 mins read).

Lessons learned from the first 100 days as my role as a Renovate maintainer, and a sneak peek into how the project works behind the scenes.
Authoring Markdown externally and pasting the 'pretty' output into Slack (on Mac) (2 mins read).
How to use copy the rendered representation of Markdown into a rich-text form into Slack, on Mac.
Getting access to rich-text data from the clipboard (on Mac) (1 mins read).
How to retrieve rich-text output from the clipboard.
Creating a TUI for keeping an eye on GitHub Rate Limits (1 mins read).

Sharing ghrl, a Terminal User Interface (TUI) for monitoring rate limits for GitHub Apps.
2025's podcasts in review (3 mins read).
What podcasts did I listen to in 2025?
Why the Renovate project uses GitHub Discussions as our triage process (16 mins read).

A dive into what we've learned over 5 years of using GitHub Discussions as our space to triage user questions.
I'm on Open Source Security: Updating open source dependencies (1 mins read).

Announcing my appearance as a guest on the Open Source Security podcast, talking about Renovate and dependency updates more generally.
Worries about Open Source in the age of LLMs (6 mins read).
Some concerns I have with moving towards "don't use Open Source, get an LLM to generate the code you want" and where it'll take us.
You're currently viewing page 1 of 19, of 905 posts.