Jack Vanlightly

1.7K posts

Jack Vanlightly banner
Jack Vanlightly

Jack Vanlightly

@vanlightly

Likes breaking ideas and systems, writing, picking systems apart @confluentinc Ex @Splunk, @VMware https://t.co/voJWmL5iBE Credit: ESO/B. Tafreshi

Barcelona, Spain Katılım Kasım 2016
238 Takip Edilen4.8K Takipçiler
Jack Vanlightly
Jack Vanlightly@vanlightly·
I've started a new adhoc series on Apache Kafka performance. I'll release as and when I have benchmark results that are interesting to share. In issue #1, I ran a benchmark of Apache Kafka 3.7.2 against 4.3.0 with Dimster and saw much better latencies with 4.3.0. Initially I suspected a broker-side version-to-version performance change but it turned out to be caused by a client config default value change in AK 4.0 which affected producer batching. jack-vanlightly.com/blog/2026/7/7/…
English
0
7
37
2.8K
Jack Vanlightly
Jack Vanlightly@vanlightly·
@mitchellh Like basic research. You never know how important the results might be. Research into bat echo location yielded better designs for radar, as an example.
English
0
0
3
424
Mitchell Hashimoto
Mitchell Hashimoto@mitchellh·
Mind boggling to me that I can make a thing faster and there's always people that ask "but why?" What kind of mentality is that? The pursuit of excellence does not need justification. Also, I find in so many cases, we can't know the impact of an improvement until we do it. For example, one I've talked about before: Ghostty's high IO throughput has enabled terminal program (emulator and TUI) fuzzing at a speed thats incomparably fast to prior solutions. This has resulted in upstream patches to resolve issues in popular projects like btop, tmux, and more. Speed enabled that anecdotally example that lifted the tides of adjacent communities that don't rely on Ghostty technology at all. I didn't predict this. Make things better because they can be better and let the results naturally play out.
English
169
462
5.8K
404.3K
David
David@DavidSHolz·
@ShumingHu this is a nice insight! I wonder how it could 🤔🤔🤔🤔🤔
English
7
0
27
6.5K
David
David@DavidSHolz·
my friends are all feeling extremely productive and also extremely drained with the latest coding models. this makes me feel like something is wrong, and also that there might be a big opportunity. does anyone have any strategies they use to make it feel better day-to-day?
English
348
77
2.6K
485.3K
Jack Vanlightly
Jack Vanlightly@vanlightly·
I'm re-reading the Bobiverse books right now. This sentence really jumped out at me as I imagined a Bob-agent cloning itself via a fork to help solve a problem by divide-and-conquer. The first Bob in each system (session) is in charge.
Jack Vanlightly tweet media
English
1
1
8
1.1K
Jack Vanlightly
Jack Vanlightly@vanlightly·
@nikitabase I agree, Lakebase looks great, and Neon's original architecture made this tight integration with the lakehouse a natural extension. No arguments there.
English
0
0
0
192
Nikita | Scaling Postgres
Nikita | Scaling Postgres@nikitabase·
The copies are everywhere of course. And we can calm it write amplification. The only ground truth is WAL. The important bit is that when you design your storage you can choose your data representation and you can make it usable for other systems. If it’s all part of your storage you can guarantee consistency and don’t leave as exercise for the user. Our design offers both low write amplification, high performance and access to older data in parquet. This is what makes it quite special
English
1
0
7
645
Jack Vanlightly
Jack Vanlightly@vanlightly·
What's with the obsession with "a single copy" of the data? With LTAP, it might store one durable copy of the data (WAL keepers + Parquet on S3), but pageservers also maintain a copy. Sure, its cached, but it's still a copy. I don't want to think about the cost of serving a Postgres read from Parquet. You can size the Postgres instance keep more data locally, to avoid a local cache miss, so then you have another cached copy. Plus, "single copy" but with time travel? There are in fact multiple copies of the data to service time travel. Also, CDC? The change feed is a copy. Copies are everywhere!
English
12
1
71
13.5K
Jack Vanlightly
Jack Vanlightly@vanlightly·
Yes, it's about one **logical** dataset that can span a transactional and analytical system. One consistent logical dataset. But "one copy" does not mean one logical dataset, and a lot of marketing in this space is pushing the "one physical" copy narrative because it sounds good. In the case of OLTP -> OLAP, data is organized differently in each system. One is row-based and the other columnar. One is generally an B-tree index (sorted by primary key), the other might be clustered around columns for analytical queries (like Z-Order). If the OLAP storage serves the OLTP system for long-term storage, then the OLTP side will find the storage format and file organization does not meet its needs at all. So we're back to long-term, reliable "caching" for OLTP. And this cache will most likely be a full copy, one that must remain coherent with the source of truth. The alternative is to ask OLTP queries to wait while data pages are reconstituted from OLAP organized columnar data back into row-based data pages ordered by primary key! So one-logical-dataset is really far away from one-copy.
Jack Vanlightly@vanlightly

What's with the obsession with "a single copy" of the data? With LTAP, it might store one durable copy of the data (WAL keepers + Parquet on S3), but pageservers also maintain a copy. Sure, its cached, but it's still a copy. I don't want to think about the cost of serving a Postgres read from Parquet. You can size the Postgres instance keep more data locally, to avoid a local cache miss, so then you have another cached copy. Plus, "single copy" but with time travel? There are in fact multiple copies of the data to service time travel. Also, CDC? The change feed is a copy. Copies are everywhere!

English
2
2
25
3.7K
Jack Vanlightly retweetledi
Data Engineering Weekly
Data Engineering Weekly@data_weekly·
The lines between OLTP, OLAP, and HTAP are getting incredibly blurry. In his latest piece, @vanlightly tackles this head-on and proposes a brilliant, unified taxonomy for modern storage/workload architectures. Let's break down the 5 main categories 👇 🧵
English
1
2
3
501
Jack Vanlightly
Jack Vanlightly@vanlightly·
Yesterday I published benchmarks on Hardwood (a new Java library for reading Parquet files) on my Threadripper 9980X. Today I ran the One Billion Row Challenge (1BRC) to see how it compared to the EPYC 7502P that @gunnarmorling used for the official benchmark results. I am pleased to announce that the best time was 140 ms running the thomaswue submission on all 64 cores. Does anyone want to try and beat that? If so, you've been nerdsniped 😄 jack-vanlightly.com/blog/2026/7/1/…
English
0
5
13
1.9K
Jack Vanlightly
Jack Vanlightly@vanlightly·
I took Hardwood (the new minimal dependency Parquet Java library) for a spin on my Threadripper 9980X with 64 cores / 128 threads. I ran the same benchmarks as Gunnar Morling's release blog post, plus a few more to test out how well Hardwood can utilize multiple decoder threads. Here's the results: jack-vanlightly.com/blog/2026/6/30…
English
0
2
12
3.8K
Jack Vanlightly
Jack Vanlightly@vanlightly·
Single-core Hardwood doing pretty well on the Threadripper. Threadripper does 4x the throughput of m7i.2xlarge (single-core test), and reaches 75% of all-core m7i.2xlarge. Maybe the AVX-512?
English
3
1
6
2.1K
Jack Vanlightly
Jack Vanlightly@vanlightly·
I'm running @gunnarmorling 's Hardwood benchmarks on my Threadripper 9980X, I'm curious to see how it scales across cores and also compare the Threadripper results to the m7i.2xlarge results in the 1.0 release blog. morling.dev/blog/hardwood-…
English
1
1
10
1.7K
Jack Vanlightly retweetledi
Gunnar Morling 🌍
Gunnar Morling 🌍@gunnarmorling·
Today is the day: #Hardwood reaches 1.0 🚀! A from-scratch #Parquet library for the JVM, reading (and soon writing) Apache Parquet fast: multi-threaded at its core, with no mandatory dependencies. Java 21+, Apache 2.0, production-ready. Happy Parquet parsing!
Gunnar Morling 🌍 tweet media
English
2
17
85
7.5K
Jack Vanlightly
Jack Vanlightly@vanlightly·
Run all cores at 100% on my Threadripper 9980X, it purrs along. Run 1 core at 100% and it sounds like it's about to take off.
English
0
0
3
636
Jack Vanlightly
Jack Vanlightly@vanlightly·
@_TylerHillery That's why I love LINQ in C#, so easy to slice and dice, group by etc. Java Streams, which came later, was no-way near as intuitive.
English
1
0
2
466
Tyler Hillery
Tyler Hillery@_TylerHillery·
I learned SQL before I learned a general purpose programming language. It has corrupted my way of thinking. Every problem becomes: "How do I fit this into a table to make for an easy query?"
English
14
0
44
4.4K
Jack Vanlightly
Jack Vanlightly@vanlightly·
@rmoff Load-bearing? What's wrong with that? Great linked article btw.
English
0
0
1
323
Jack Vanlightly
Jack Vanlightly@vanlightly·
The last of my Kafka share group benchmark and performance analysis posts is out. In this post I cover a pathological edge case with share.acquire.mode=record_limit, which needs more than one other condition to occur, but nonetheless could trip up some people. Enjoy! jack-vanlightly.com/blog/2026/6/24…
English
0
1
11
1.2K
Jack Vanlightly
Jack Vanlightly@vanlightly·
@almoggavra It used to be per day, I think it's a bit more complicated than that now.
English
0
0
0
47
Jack Vanlightly
Jack Vanlightly@vanlightly·
@almoggavra You get 5-60 minutes of burst per day, depending on the instance, then it applies the baseline (like a sledgehammer). I use `aws ec2 describe-instance-types` to see what the baseline is, so when I run benchmarks, I size the throughput to not exceed the baseline.
English
1
0
1
55
Almog Gavra
Almog Gavra@almoggavra·
somebody needs to create an interactive picker for aws instance types. like "get me the cheapest node with >25Gbps network".
English
3
0
14
2K