The Curious Engineer

All blogs / Databases

Gunnar Morling

morling.dev

Recent content on Gunnar Morling

DatabasesJava / JVMDistributed systems / cloudSoftware / engineering practice

Posts
104 from 26 Dec 2019 to 15 Oct 2026
Posting
monthly (15 in the last year)
Kind
personal blog
Feed
https://www.morling.dev/index.xml

2026 10

  1. Conferences
  2. Row-Group Control, Faster S3 Reads, Footer Caching: Hardwood 1.1.0.Beta2 Is Out
  3. Parquet File Write Support, Bloom Filters, Improved Performance: Hardwood 1.1.0.Beta1 Is Out
  4. A Fast Path for Fixed-Length Lists in Parquet
  5. Hardwood 1.0: A Fast, Lightweight Apache Parquet Reader for the JVM
  6. Improved Column Reader API, First Cut of Geospatial Support: Hardwood 1.0.0.CR1 Is Available
  7. Podcasts and Interviews
  8. VARIANT Support, Interactive Parquet File TUI: Hardwood 1.0.0.Beta2 Is Out
  9. Hardwood Reaches Beta: S3, Predicate Push-Down, CLI, and More
  10. Hardwood: A New Parser for Apache Parquet

2025 20

  1. You Gotta Push If You Wanna Pull
  2. On Idempotency Keys
  3. Building a Durable Execution Engine With SQLite
  4. "You Don't Need Kafka, Just Use Postgres" Considered Harmful
  5. Let's Take a Look at... Lower Java Tail Latencies With ZGC
  6. Postgres Replication Slots: Confirmed Flush LSN vs. Restart LSN
  7. Converting Future to CompletableFuture With Java Virtual Threads
  8. Mastering Postgres Replication Slots: Preventing WAL Bloat and Other Production Issues
  9. How I Use (and Don't Use) AI
  10. This AI Agent Should Have Been a SQL Query
  11. Backfilling Postgres TOAST Columns in Debezium Data Change Events
  12. "Streaming vs. Batch" Is a Wrong Dichotomy, and I Think It's Confusing
  13. What If We Could Rebuild Kafka From Scratch?
  14. A Deep Dive Into Ingesting Debezium Events From Kafka With Flink SQL
  15. Building a Native Binary for Apache Kafka on macOS
  16. Let's Take a Look at... JEP 483: Ahead-of-Time Class Loading & Linking!
  17. The Synchrony Budget
  18. Let's Take a Look at... KIP-932: Queues for Kafka!
  19. Get Running with Apache Flink on Kubernetes, part 2 of 2
  20. Get Running with Apache Flink on Kubernetes, part 1 of 2

2024 13

  1. Failover Replication Slots with Postgres 17
  2. Thoughts On Moving Debezium to the Commonhaus Foundation
  3. Building OpenJDK From Source On macOS
  4. Revisiting the Outbox Pattern
  5. CDC Is a Feature Not a Product
  6. How I Am Setting Up VMs On Hetzner Cloud
  7. Leader Election With S3 Conditional Writes
  8. Shell Spell: Extracting and Propagating Multiple Values With jq
  9. A Zipping Gatherer
  10. A Taxonomy Of Data Change Events
  11. Last Updated Columns With Postgres
  12. Filtering Process Output With tee
  13. 1BRC—The Results Are In!

2023 12

  1. The One Billion Row Challenge
  2. Logical Replication From Postgres 16 Stand-By Servers—Debezium and Failover Slots
  3. Using Stand-by Servers for Postgres Logical Replication
  4. Tracking Java Native Memory With JDK Flight Recorder
  5. Getting Started With PyFlink on Kubernetes
  6. "Change Data Capture Breaks Encapsulation". Does it, though?
  7. Can Debezium Lose Events?
  8. CDC Use Cases: 7 Ways to Put CDC to Work
  9. Finding Java Thread Leaks With JDK Flight Recorder and a Bit Of SQL
  10. Getting Started With Java Development in 2023 — An Opinionated Guide
  11. Oh... This is Prod?!
  12. Is your Blocking Queue... Blocking?

2022 13

  1. Maven, What Are You Waiting For?!
  2. Postgres 15: Logical Decoding Row Filters With Debezium
  3. The Insatiable Postgres Replication Slot
  4. Running a Quarkus Native Application on Render
  5. Why I Joined Decodable
  6. An Ideation for Kubernetes-native Kafka Connect
  7. Testing Kafka Connectors
  8. Ten Tips to Make Conference Talks Suck Less
  9. Loom and Thread Fairness
  10. Running JDK Mission Control on Apple M1
  11. The Code Review Pyramid
  12. The JDK Flight Recorder File Format
  13. What's in a Good Error Message?

2021 15

  1. Announcing the First Release of kcctl
  2. Introducing the OSS Quickstart Archetype
  3. O Kafka, Where Art Thou?
  4. Refining The Return Type Of Java Methods Without Breaking Backwards-Compatibility
  5. JDK Flight Recorder Events in GraalVM Native Binaries
  6. Debezium and Friends – Conference Talks 2021
  7. What's on My Desk?
  8. Executable JavaDoc Code Snippets
  9. Resource Bundle Look-ups in Modular Java Applications
  10. Introducing JfrUnit 1.0.0.Alpha1
  11. Three Plus Some Lovely Kafka Trends
  12. Exploring ZooKeeper-less Kafka
  13. The Anatomy of ct.sym — How javac Ensures Backwards Compatibility
  14. FizzBuzz – SIMD Style!
  15. Talking to Postgres Through Java 16 Unix-Domain Socket Channels

2020 19

  1. jlink's Missing Link: API Signature Validation
  2. ByteBuffer and the Dreaded NoSuchMethodError
  3. Towards Continuous Performance Regression Testing
  4. Smaller, Faster-starting Container Images With jlink and AppCDS
  5. Quarkus and Testcontainers
  6. Class Unloading in Layered Java Applications
  7. Building hsdis for OpenJDK 15
  8. Introducing JmFrX: A Bridge From JMX to JDK Flight Recorder
  9. How I Built a Serverless Search for My Blog
  10. Building Class Data Sharing Archives with Apache Maven
  11. Single Message Transformations - The Swiss Army Knife of Kafka Connect
  12. The Emitter Parameter Pattern for Flexible SPI Contracts
  13. Plug-in Architectures With Layrry and the Java Module System
  14. Introducing Layrry: A Launcher and API for Modularized Java Applications
  15. Reworking Git Branches with git filter-branch
  16. Monitoring REST APIs with Custom JDK Flight Recorder Events
  17. Enforcing Java Record Invariants With Bean Validation
  18. Using Java 13 Text Blocks (Only) for Your Tests
  19. Quarkus Qute – A Test Ride

2019 2

  1. Automatically Deploying a Hugo Website via GitHub Actions
  2. Time for a New Blog