Work in progress: 82,651 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #1226

G

Gunnar Morling

Personal blog · morling.dev/blog · on HN as gunnarmorlingprogrammingdata

Gunnar Morling's personal blog at morling.dev covers programming and data. Since 2020, 56 different Hacker News readers have linked it 120 times, most often “The Code Review Pyramid”. It is still writing: the last post was on 2026-10-15, and you can follow it by feed.

Visit the blog
120mentions?
1recommend?
56HN people?
2020–2026first – last linked?
Links on Hacker News per year · peak 34 in 2025

Too few sampled comments (14) to say how often HN recommends it.?

Why HN links it

HN readers link Gunnar Morling's posts on Java performance and JVM internals, including JFR native memory tracking, the One Billion Row Challenge, and a serverless Lucene search. One commenter says they like his code review pyramid.

Recommended for · 1 comments
The code review pyramid post, which one commenter says they like.

Summarised by Claude from a sample of 14 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

The author on HN?

gunnarmorling · 787 karma · member since 2017

I am an open-source software engineer in the Java and data streaming space. Currently working as a technologist at Confluent. Find me at morling.dev.

From their public HN profile, which links to this site.

Most-linked posts?

  1. The Code Review Pyramid
    6 people · 7 mentions · first linked 2022-03-11
  2. The One Billion Row Challenge
    6 people · 6 mentions · first linked 2024-01-01
  3. Towards Continuous Performance Regression Testing
    5 people · 5 mentions · first linked 2020-12-17
  4. Show HN: I've built a Serverless search feature for my blog
    4 people · 9 mentions · first linked 2020-07-29
  5. Idempotency keys for exactly-once processing
    4 people · 4 mentions · first linked 2025-11-25
  6. PostgreSQL replication slots: preventing WAL bloat and other production issues
    3 people · 5 mentions · first linked 2025-07-08
  7. What's in a good error message?
    3 people · 4 mentions · first linked 2022-01-12
  8. The Insatiable Postgres Replication Slot
    3 people · 3 mentions · first linked 2022-11-30
  9. Lower Java Tail Latencies with ZGC
    3 people · 3 mentions · first linked 2025-09-19
  10. Building Class Data Sharing Archives with Apache Maven
    3 people · 3 mentions · first linked 2020-10-27

What Hacker News says?

  1. pg_logical_emit_message() is how I recommend users on Postgres to implement the outbox pattern [1]. No table overhead as you say, no need for housekeeping, etc. It has some other cool applications, e.g. providing application-specific metadata for CDC streams or transactional logging, wrote about it at [2] a while ago. Another one is making sure replication slots can advance also if there's no traffic in the database…

    Comment linking /blog/mastering-postgres-replication-slots/

    on “Postgres LISTEN/NOTIFY does not scale”
  2. Submitted The One Billion Row Challenge as a story · 482 points

    HN discussion
  3. jlink usage won't make any significant difference typically. What does make a difference is (App)CDS though, as available in newer Java versions. Memory-mapping a file with the class metadata from previous runs can easily shave off a second or more from time-to-first-response [1], depending on number and size of classes required for that. [1] https://www.morling.dev/blog/smaller-faster-starting-contain...

    Comment linking /blog/smaller-faster-starting-container-images-with-jlink-and-appcds/

    on “AWS Lambda Cold Start Times”
  4. Submitted What If We Could Rebuild Kafka from Scratch? as a story · 254 points

    HN discussion
  5. The best cold starts are those which aren't noticed by the user. For my blog search (which runs on Lambda), I found a nice way of achieving that [1]: as soon as a user puts the focus to the input field for the search text, this will already submit a "ping" request to Lambda. Then, when they submit the actual query itself, they will hit the already running Lambda most of the times. And, as others said, assigning more…

    Comment linking /blog/how-i-built-a-serverless-search-for-my-blog/

    on “AWS Lambda Cold Start Times”
  6. Submitted The Code Review Pyramid as a story · 206 points

    HN discussion
  7. No, just lots of different things. G1 has had ~700 improvements since JDK 8 and is now very different: https://archive.fosdem.org/2020/schedule/event/g1/ ZGC, the low-latency collector (which gives a ~1-2ms max pause times on heaps of up to 16TB in JDK 16) was introduced in 11 and made production-ready in 15. In general, the way the GCs work is just very different from 8. Plus, there have been lots of improvements t…

    Comment linking /blog/building-class-data-sharing-archives-with-apache-maven/

    on “Apache Helix – Near-Realtime Rsync Replicated File System”
  8. Submitted Idempotency keys for exactly-once processing as a story · 182 points

    HN discussion
  9. Unpoly [1] is another one in that camp. Made good experiences with to smoothen page transitions in a server-side rendered app [2]. I find this model much more approachable for backend devs than going all-in on SPA. It doesn't help of course with more fine-grained interactions like say in-place editing in a table. [1] https://unpoly.com/ [2] https://www.morling.dev/blog/quarkus-qute-test-ride/

    Comment linking /blog/quarkus-qute-test-ride/

    on “In Defense of the Modern Web”
  10. Submitted Building a Durable Execution Engine with SQLite as a story · 178 points

    HN discussion
  11. There's ongoing work, as part of Project Leyden, to cache certain computations -- either performed by the user code or the JVM -- from one run of the program to the next, including the caching of JIT-compiled machine code. The early parts of this work were discussed here: https://www.morling.dev/blog/jep-483-aot-class-loading-linki...

    Comment linking /blog/jep-483-aot-class-loading-linking/

    on “JEP draft: Prepare to make final mean final”
  12. Submitted Talking to Postgres Through Java 16 Unix-Domain Socket Channels as a story · 124 points

    HN discussion
  13. As a counter-point, Quarkus [1] has mature support for building Java apps as native binaries via GraalVM, with a large number of extensions that enable 3rd party libraries to be used in native binaries, and people use this successfully in production. Issues from the past, like lack of debug symbol support with GraalVM CE, have also been resolved by now. Shameless plug for one real-world usage: the search feature of…

    Comment linking /blog/how-i-built-a-serverless-search-for-my-blog/

    on “GraalVM”
  14. Submitted Leader Election with S3 Conditional Writes as a story · 122 points

    HN discussion
  15. Robustness is a key design goal of Debezium. It supports heart beating to address WAL growth issues (wrote about that issue at [1]). If Kafka crashes (or Debezium itself), it will resume consuming the replication slot from where it left off before (applying at-least once semantics, i.e. there can be duplicates in case of an unclean shut-down). Naturally, if the consumer is down, WAL retained for that replication slo…

    Comment linking /blog/mastering-postgres-replication-slots/

    on “Listen to Database Changes Through the Postgres WAL”
  16. Submitted What's in a good error message? as a story · 112 points

    HN discussion
  17. Presenter of that talk here, very cool to see it being shared here. Running 1BRC was immensely fun, I learned a ton from it. Had you told me before how far the community would be able to push this, I'd have not believed you. One main take-away for me was that you could improve performance by one order of magnitude over the baseline basically by just doing a good job and avoiding basic mistakes. The resulting code is…

    Comment linking /blog/1brc-results-are-in/

    on “1BRC Coding Challenge: Nerd Sniping the Java Community”
  18. Submitted Building agents using streaming SQL queries as a story · 103 points

    HN discussion
  19. Funny timing, just took a fresh look at this topic in this new post earlier this week: https://www.morling.dev/blog/backfilling-postgres-toast-colu... .

    Comment linking /blog/backfilling-postgres-toast-columns-debezium-change-events/

    on “HTAP is Dead”
  20. Submitted On Java/JVM: Loom and Thread Fairness as a story · 98 points

    HN discussion
  21. Great writeup. Writing your own search index and crawler from scratch is a big undertaking, but sounds like the sort of thing you might have to do due to the constraints of Lambda. For the search index, the blog you link to ( https://www.morling.dev/blog/how-i-built-a-serverless-search... ) does use Apache Lucene within Lambda (compiled into a native binary via Quarkus and GraalVM to make startup time viable, althou…

    Comment linking /blog/how-i-built-a-serverless-search-for-my-blog/

    on “Abusing AWS Lambda to make an Aussie search engine”
  22. Submitted “Streaming vs. Batch” Is a Wrong Dichotomy, and I Think It's Confusing as a story · 70 points

    HN discussion
  23. Neat! > Incidentally searching around for prior art I found this blog post https://www.morling.dev/blog/how-i-built-a-serverless-search... about building something similar using lucene, but without storing the content and only on a single lambda. See also: Sqlite FTS (no server): https://news.ycombinator.com/item?id=27016630 EdgeSearch (Workers): https://github.com/wilsonzlin/edgesearch EdgeSql (Workers): https://gi…

    Comment linking /blog/how-i-built-a-serverless-search-for-my-blog/

    on “Abusing AWS Lambda to make an Aussie search engine”
  24. Submitted FizzBuzz – SIMD Style as a story · 64 points

    HN discussion
  25. Implement some none-trivial algorithm and then try to optimize the heck out of it. Focus on the concrete CPU, architecture, cache, and memory in the hardware you have in front of you. Forget portability for a moment. This comes to mind: https://www.morling.dev/blog/one-billion-row-challenge/ Read how others have done it. Here's an example in Java that goes relatively low-level to squeeze out performance: https://que…

    Comment linking /blog/one-billion-row-challenge/

    on “Ask HN: Going low-level – what to learn next?”
  26. Submitted Let's Take a Look at JEP 483: Ahead-of-Time Class Loading and Linking as a story · 50 points

    HN discussion
  27. If you're doing user-supplied CSVs, definitely... but if you are ingesting CSVs from a known source with known format (<insert audible sigh here>) it can definitely make sense to use a high-speed optimized ingester. One might wonder if it might be worth the time to look into optimising the runtimes of various languages. I took a look, all operate on naive byte-by-byte scanning, and all sans PHP are written in the re…

    Comment linking /blog/fizzbuzz-simd-style/

    on “Leveraging SIMD: Splitting CSV Files at 3Gb/S”
  28. Submitted "You Don't Need Kafka, Just Use Postgres" Considered Harmful as a story · 39 points

    HN discussion
  29. Much better, because you still do have the JIT data, it is similar to having done a couple of GraalVM runs gathering profile data. Here is an overview of using it with Maven https://www.morling.dev/blog/building-class-data-sharing-arc... And here is the documentation for the JIT/AOT and JIT server preview for J9, https://www.eclipse.org/openj9/docs . By the way, this is also the way that ART evolved after the short…

    Comment linking /blog/building-class-data-sharing-archives-with-apache-maven/

    on “The Xterm Window Manager Homepage”
  30. Submitted The JDK Flight Recorder File Format as a story · 34 points

    HN discussion

Search all of HN for morling.dev

Linked by the same people?