---
title: "Henry Brown (@hbrown) | Hashnode"
description: "Pragmatic Backend Engineering for the Modern JVM. Read the latest articles by Henry Brown on Hashnode."
url: "https://hashnode.com/@hbrown"
---

@hbrown

# Henry Brown

@hbrown · Cape Town, South Africa · Joined August 2026

Pragmatic Backend Engineering for the Modern JVM

### [Make Invalid Domain States Hard to Represent with Kotlin and Arrow](https://blog.hbrown.dev/make-invalid-domain-states-hard-to-represent-with-kotlin-and-arrow?utm_source=hashnode&utm_medium=feed)

Using value classes, context parameters and typed errors to build a small functional domain model

7 min read · [blog.hbrown.dev](https://blog.hbrown.dev/make-invalid-domain-states-hard-to-represent-with-kotlin-and-arrow?utm_source=hashnode&utm_medium=feed)

[Aug 24](https://hashnode.com/posts/make-invalid-domain-states-hard-to-represent-with-kotlin-and-arrow/6a8c59e5b03c5187662bf16b)

### [Stop External Services from Breaking Your Build with JUnit Tags](https://blog.hbrown.dev/keep-external-services-out-of-your-regular-build-with-junit-tags?utm_source=hashnode&utm_medium=feed)

Keep everyday tests fast and dependable while running strict live integration tests only when you choose

11 min read · [blog.hbrown.dev](https://blog.hbrown.dev/keep-external-services-out-of-your-regular-build-with-junit-tags?utm_source=hashnode&utm_medium=feed)

[Aug 20](https://hashnode.com/posts/keep-external-services-out-of-your-regular-build-with-junit-tags/6a874e2d2b460fb38a5c4b5c)

### [PgBouncer with Spring Boot 4: Setup, Gotchas, and the Proof](https://blog.hbrown.dev/pgbouncer-spring-boot-4-setup-benchmark?utm_source=hashnode&utm_medium=feed)

Part 2: Add transaction pooling to the benchmark app, avoid prepared-statement traps, and see where connection pooling earns its keep

6 min read · [blog.hbrown.dev](https://blog.hbrown.dev/pgbouncer-spring-boot-4-setup-benchmark?utm_source=hashnode&utm_medium=feed)

[Aug 17](https://hashnode.com/posts/pgbouncer-spring-boot-4-setup-benchmark/6a8318b0e635821e8cb292bd)

### [I Built a Spring Boot 4 App to Put PgBouncer to the Test](https://blog.hbrown.dev/spring-boot-4-kotlin-pgbouncer-benchmark-app?utm_source=hashnode&utm_medium=feed)

Part 1: Build a production-style Kotlin testbed with hexagonal architecture, PostgreSQL, Testcontainers, and a repeatable concurrency benchmark

9 min read · [blog.hbrown.dev](https://blog.hbrown.dev/spring-boot-4-kotlin-pgbouncer-benchmark-app?utm_source=hashnode&utm_medium=feed)

[Aug 17](https://hashnode.com/posts/spring-boot-4-kotlin-pgbouncer-benchmark-app/6a8317a06b3c778be9836c75)

### [Guardrails for AI-Generated Kotlin with detekt and ktlint](https://blog.hbrown.dev/providing-your-agent-with-guardrails-with-detekt-and-ktlint?utm_source=hashnode&utm_medium=feed)

Turn your coding standards into checks that both developers and AI agents must pass

11 min read · [blog.hbrown.dev](https://blog.hbrown.dev/providing-your-agent-with-guardrails-with-detekt-and-ktlint?utm_source=hashnode&utm_medium=feed)

[Aug 10](https://hashnode.com/posts/providing-your-agent-with-guardrails-with-detekt-and-ktlint/6a79f61885f9b4fd8cb7dd8f)
