Generating Go code from JSON Schema documents (25 mins read).

Looking at a couple of common libraries for generating Go struct
s from JSON Schema documents.
Generating Go code from JSON Schema documents (25 mins read).
Looking at a couple of common libraries for generating Go struct
s from JSON Schema documents.
Creating cross-compiled Docker images from Go binaries (4 mins read).
How to create a (Docker) container image that is cross-compiled for different architectures, and includes a Go binary that is also cross-compiled.
Accessing your Renovate Dependency Dashboard, without GitHub/GitLab Issues enabled (3 mins read).
Releasing a proof-of-concept to render Dependency Dashboards for repositories that don't have issues enabled, as long as you have a Renovate Report.
Generating a Renovate Report from someone else's repo (1 mins read).
How to get a Renovate Report - with full metadata - from any arbitrary repository.
Checking the digest for a Docker image, using crane
(2 mins read).
How to get a Docker image digest, using the crane
CLI tool.
What's the difference between Renovate's depName
and packageName
? (3 mins read).
What the differences are, and where you may want to use one or the other.
Creating nested fenced code blocks with Hugo (1 mins read).
How to write a Markdown file with a fenced code block, which includes another code block inside it.
Taking more control over your Cobra CLI documentation (2 mins read).
Releasing a library to manage the generation of Cobra CLI documentation using text/template
s.
Setting up SSH key signing with Git (1 mins read).
How to sign your Git commits, using SSH keys.
Improving the experience of browsing Renovate debug logs (4 mins read).
Creating a Terminal User Interface (TUI) application to improve the debugging experience with Renovate's debug logs.
Overriding a Gradle project property which has .
and _
characters, without modifying the buildscript (4 mins read).
How to use GRADLE_OPTS
to safely override a Gradle property (with special characters in its name) without modifying the buildscript.
How to set up the 'Follow' button on LinkedIn (1 mins read).
How to allow others to follow you on LinkedIn.
Migrating secrets between two Vault instances (1 mins read).
How to copy secrets from one Vault instance to another, reducing the risk of the secrets being stored on disk for too long.
Using type assertions in Go with concrete types (2 mins read).
How to perform a type assertion on a type in Go that isn't an interface
.
Getting Renovate to provide a changelog for digest updates to packages (on GitHub.com) (2 mins read).
How to use the new templated changelogUrl
functionality to provide more actionable changelogs for digest updates to i.e. GitHub Actions and other digest-pinned dependencies (in this example, on GitHub.com).
Tricking oapi-codegen
into working with OpenAPI 3.1 specs (7 mins read).
How to get oapi-codegen
to interact with OpenAPI 3.1 specs, until it supports OpenAPI 3.1.
Gotcha: docker inspect
can lie about the architecture of an image (3 mins read).
How incorrectly wiring up your Docker multi-platform builds may lead to docker inspect
lying about the architecture of said image.
Rendering diffs for Go's testable examples (3 mins read).
A somewhat hacky solution for providing rich diffs for expected-vs-actual comparisons for testable examples in Go.
Authoring Markdown externally and pasting the 'pretty' output into Slack (on Linux) (3 mins read).
How to use xclip
to copy the rendered representation of Markdown into a rich-text form into Slack.
Properly patching packages: persistently producing patches for published projects, particularly practically prevented by patch-package
policy (10 mins read).
How to use patch-package
to modify NPM dependencies, for instance when you're distributing an executable and you want to patch something you rely upon, without relying upon postinstall
scripts.
Automagically migrating golangci-lint
configuration to v2 with Renovate (2 mins read).
How to get Renovate PRs that update both the version of golangci-lint
to v2, and runs the golangci-lint migrate
command for you.
Logging into Hashicorp Vault via a GitHub token in the environment (1 mins read).
How to more easily log into Vault with a GitHub token, without having to enter it interactively.
Performing group_concat
queries over distinct values, with a custom delimiter, with SQLite (2 mins read).
How to avoid SQLite's DISTINCT aggregates must have exactly one argument
error when performing a group_concat(distinct ...)
with a custom delimiter.
Updating apk add
definitions in Dockerfiles (3 mins read).
How to use Renovate's Custom Regex manager to extract apk add
definitions in a Dockerfile
, to allow managing (un)pinned packages.
Creating single-purpose RSS feeds with Hugo (2 mins read).
How to create a new RSS feed in Hugo for a single page's updates.
Creating a test harness for validating Renovate Custom Datasource configuration (4 mins read).
How to set up a test harness to make it eaiser to modify scary looking JSONata transformations in your Renovate configuration.
Go 1.24's omitzero
is another one of the best additions to the ecosystem in years (4 mins read).
Why I'm very excited about the JSON tag, omitzero
, landing in Go 1.24.
Go 1.24's go tool
is one of the best additions to the ecosystem in years (8 mins read).
Why I'm very excited about go tool
landing in Go 1.24.
Getting access to rich-text data from the clipboard (on Linux) (1 mins read).
How to use xclip
to retrieve rich-text output from the clipboard.
Why is zsh no longer storing history? (1 mins read).
Spoiler: you may be missing both HISTSIZE
and SAVEHIST
variables.
Accessing private Go modules in a Docker container (3 mins read).
How to use a Personal Access Token or SSH to access a private Go module, from a Docker container.
Getting all comments from a given user on a GitHub Discussion (2 mins read).
How to use the GitHub GraphQL API to retrieve all comments from top-level or reply comments on a GitHub Discussion.
What level of access do I have on that GitHub repository? (2 mins read).
How to check, via the GitHub API, what access a given user has on a repository.
Blocking 'Similar' and 'Because you like ...' suggestions on reddit with uBlock Origin (1 mins read).
How to use uBlock Origin to remove reddit's suggestions in your home feed.
Some useful SQL(ite) tips I've learned (5 mins read).
A collection of SQLite snippets I've picked up recently to improve my queries.
Gotcha: PersistentPostRunE
only runs on successful commands in Cobra (3 mins read).
A possible gotcha when using Cobra to perform cleanup in a PersistentPostRunE
.
Creating a Neovim plugin for my standup updates (3 mins read).
Documenting some of my thoughts about writing a (Python) Neovim plugin.
Creating a private mirror of the Renovate docs (5 mins read).
How to set up a copy of Renovate's documentation, pinned to an older version, for your organisation.
Lessons learned adding OpenTelemetry to a (Cobra) command-line Go tool (10 mins read).
Some reflections on what I've found good and not so good about instrumenting a command-line tool with OpenTelemetry.
Summarising the skipReason
s for Renovate data exports (2 mins read).
How to work out what skipReason
s you have for your Renovate package data.
How to diff two datetimes (1 mins read).
How to get the number of seconds, minutes, and a human-readable time comparison between two datetimes.
Why has Firefox 133 lost all my tabs? (2 mins read).
Recounting an issue I'm seeing with Firefox 133 where it creates a new profile, and how to resolve it.
Converting a Reveal.js slide deck to PDF (1 mins read).
How to convert a Reveal.js slide deck to a PDF, using Decktape.
Getting symlinks to work with a git clone
on Mac (2 mins read).
How to restore symlinks in a previously cloned repository, where core.symlinks=false
.
Using a separate Go module for your tools.go
(2 mins read).
How to use the tools.go
pattern to source-track your Go tool dependencies, but without polluting your top-level go.mod
.
Utilising Renovate's local
platform to test more easily (4 mins read).
How to use Renovate's local
platform for validating configuration changes more easily.
Nested teams in GitHub don't give you the control you think they do (2 mins read).
Some pain points when using nested teams on GitHub.
Forcing pacman
to perform post-upgrade tasks if it's failed part way through (2 mins read).
How I ended up recovering from my Arch Linux upgrade crashing part way through the post-upgrade hooks.
Gotcha: SXHKD doesn't like comments (in bindings) (1 mins read).
Why your SXHKD bindings may be silently ignored
How to get the next window created set to floating in BSPWM (1 mins read).
How to tell BSPWM that the next window created should be floating.
You're currently viewing page 1 of 11, of 531 posts.