Gunnar Morling
Hardwood Reaches Beta: S3, Predicate Push-Down, CLI, and More
Hardwood: A New Parser for Apache Parquet
You Gotta Push If You Wanna Pull
On Idempotency Keys
Building a Durable Execution Engine With SQLite
"You Don't Need Kafka, Just Use Postgres" Considered Harmful
Let's Take a Look at... Lower Java Tail Latencies With ZGC
Postgres Replication Slots: Confirmed Flush LSN vs. Restart LSN
Converting Future to CompletableFuture With Java Virtual Threads
Mastering Postgres Replication Slots: Preventing WAL Bloat and Other Production Issues
How I Use (and Don't Use) AI
This AI Agent Should Have Been a SQL Query
Backfilling Postgres TOAST Columns in Debezium Data Change Events
"Streaming vs. Batch" Is a Wrong Dichotomy, and I Think It's Confusing
About Me
What If We Could Rebuild Kafka From Scratch?
A Deep Dive Into Ingesting Debezium Events From Kafka With Flink SQL
Building a Native Binary for Apache Kafka on macOS
Let's Take a Look at... JEP 483: Ahead-of-Time Class Loading & Linking!
The Synchrony Budget
Let's Take a Look at... KIP-932: Queues for Kafka!
Get Running with Apache Flink on Kubernetes, part 2 of 2
Get Running with Apache Flink on Kubernetes, part 1 of 2
Failover Replication Slots with Postgres 17
Thoughts On Moving Debezium to the Commonhaus Foundation
Building OpenJDK From Source On macOS
Conferences
Revisiting the Outbox Pattern
CDC Is a Feature Not a Product
How I Am Setting Up VMs On Hetzner Cloud
Leader Election With S3 Conditional Writes
Shell Spell: Extracting and Propagating Multiple Values With jq
A Zipping Gatherer
A Taxonomy Of Data Change Events
Podcasts and Interviews
Last Updated Columns With Postgres
Filtering Process Output With tee
1BRC—The Results Are In!
Projects
The One Billion Row Challenge
Logical Replication From Postgres 16 Stand-By Servers—Debezium and Failover Slots
Using Stand-by Servers for Postgres Logical Replication
Tracking Java Native Memory With JDK Flight Recorder
Getting Started With PyFlink on Kubernetes
"Change Data Capture Breaks Encapsulation". Does it, though?
Can Debezium Lose Events?
CDC Use Cases: 7 Ways to Put CDC to Work
Finding Java Thread Leaks With JDK Flight Recorder and a Bit Of SQL
Getting Started With Java Development in 2023 — An Opinionated Guide
Oh... This is Prod?!
Is your Blocking Queue... Blocking?
Maven, What Are You Waiting For?!
Postgres 15: Logical Decoding Row Filters With Debezium
The Insatiable Postgres Replication Slot
Running a Quarkus Native Application on Render
Why I Joined Decodable
An Ideation for Kubernetes-native Kafka Connect
Testing Kafka Connectors
Ten Tips to Make Conference Talks Suck Less
Loom and Thread Fairness
Running JDK Mission Control on Apple M1
The Code Review Pyramid
The JDK Flight Recorder File Format
What's in a Good Error Message?
Announcing the First Release of kcctl
Introducing the OSS Quickstart Archetype
O Kafka, Where Art Thou?
Refining The Return Type Of Java Methods Without Breaking Backwards-Compatibility
JDK Flight Recorder Events in GraalVM Native Binaries
Debezium and Friends – Conference Talks 2021
What's on My Desk?
Executable JavaDoc Code Snippets
Resource Bundle Look-ups in Modular Java Applications
Introducing JfrUnit 1.0.0.Alpha1
Three Plus Some Lovely Kafka Trends
Exploring ZooKeeper-less Kafka
The Anatomy of ct.sym — How javac Ensures Backwards Compatibility
FizzBuzz – SIMD Style!
Talking to Postgres Through Java 16 Unix-Domain Socket Channels
jlink's Missing Link: API Signature Validation
ByteBuffer and the Dreaded NoSuchMethodError
Towards Continuous Performance Regression Testing
Smaller, Faster-starting Container Images With jlink and AppCDS
Quarkus and Testcontainers
Class Unloading in Layered Java Applications
Building hsdis for OpenJDK 15
Introducing JmFrX: A Bridge From JMX to JDK Flight Recorder
How I Built a Serverless Search for My Blog
Building Class Data Sharing Archives with Apache Maven
Single Message Transformations - The Swiss Army Knife of Kafka Connect
The Emitter Parameter Pattern for Flexible SPI Contracts
Plug-in Architectures With Layrry and the Java Module System
Introducing Layrry: A Launcher and API for Modularized Java Applications
Reworking Git Branches with git filter-branch
Monitoring REST APIs with Custom JDK Flight Recorder Events
Enforcing Java Record Invariants With Bean Validation
Using Java 13 Text Blocks (Only) for Your Tests
Quarkus Qute – A Test Ride
Automatically Deploying a Hugo Website via GitHub Actions
Time for a New Blog