Dennis van der Stelt

Dennis van der Stelt

I'm a developer, international speaker and coach/trainer. I love to discuss code, software architecture and distributed systems, messaging, star wars and lego with anyone who wants to listen or speak.
I currently work at Particular Software on NServiceBus.

Authenticating ServicePulse with Keycloak, Part 4: when OIDC goes wrong, and what the POC leaves out

Authenticating ServicePulse with Keycloak, Part 4: when OIDC goes wrong, and what the POC leaves out

The error messages every first-time setup hits, what each one actually means, the fix, and the list of things that need to change before this configuration leaves the lab.

Authenticating ServicePulse with Keycloak, Part 3: plugging ServiceControl in

Authenticating ServicePulse with Keycloak, Part 3: plugging ServiceControl in

The four values that change when you swap identity providers, the audit instance that mirrors them, the forwarded headers ServiceControl trusts behind a reverse proxy, and the moment the browser finally lands back in ServicePulse with a token.

Authenticating ServicePulse with Keycloak, Part 2: the Keycloak side

Authenticating ServicePulse with Keycloak, Part 2: the Keycloak side

A realm, a client scope, the audience mapper that catches every first-time setup, and the public client ServicePulse uses to redirect through Keycloak.

Authenticating ServicePulse with Keycloak, Part 1: setting the stage

Authenticating ServicePulse with Keycloak, Part 1: setting the stage

ServiceControl 6.13 lets ServicePulse sit behind any OpenID Connect identity provider. This series wires it to Keycloak in Docker, end to end, on a home server.

Compilable code snippets in this blog

Compilable code snippets in this blog

How this blog now pulls snippets from real source files at build time, with a CI check that fails when an example stops compiling and a per-snippet link straight to GitHub.

Introducing HyperHawk

Introducing HyperHawk

I built a GitHub Action that checks links in pull requests, including links to private repositories.

Autonomous mode and a git push I almost missed

Autonomous mode and a git push I almost missed

Two fixes after the series - letting Claude run without interruptions inside Docker, and a git-wtadd bug that was silently pushing commits to main

Sticking with Claude Code

Sticking with Claude Code

OpenCode looked great on paper. After a week of daily use, I'm going back to Claude Code.

From Claude-specific to agent-agnostic

From Claude-specific to agent-agnostic

Container naming, terminal quirks, smarter worktrees, and the principle behind it all