Jordan Isaacs's Avatar

Jordan Isaacs

@snowytrees.dev

database internals engineer; building lakebase @ databricks; making transactions go vroom; author of too many nix flakes

64
Followers
44
Following
34
Posts
29.08.2023
Joined
Posts Following

Latest posts by Jordan Isaacs @snowytrees.dev

Post image

You're probably right to pick a modern extension to support vector similarity search in Postgres. But did you know Postgres already has one built in?

I took a look at the cube extension in Postgres, pgvector, and model2vec for some impressively fast embeddings generation.

22.02.2026 22:03 πŸ‘ 18 πŸ” 2 πŸ’¬ 1 πŸ“Œ 0

Just felt the earthquake in sf, got a short little ride on my couch 🎒

14.12.2025 23:33 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
GitHub - jordanisaacs/kernel-development-flake: Nix flake for linux kernel development (formerly kernel-module-flake) Nix flake for linux kernel development (formerly kernel-module-flake) - jordanisaacs/kernel-development-flake

Finished the overhaul of kernel-development-flake ✨ inspired by virtme-ng which didn’t support NixOS. kdf is also a rust-based /init using virtiofs. You can now do fast live dev of kernel modules/in-tree, no more waiting for nix rebuilds github.com/jordanisaacs...

28.11.2025 22:26 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
test_spawn.rs GitHub Gist: instantly share code, notes, and snippets.

Little script to see for yourself gist.github.com/jordanisaacs...

28.11.2025 20:08 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

TIL rust's spawn implementation uses a unix socket for communication between child & parent (github.com/rust-lang/ru...). Only happens when it can't use posix spawn (e.g. using pre_exec callback). Hit this when running a kernel without unix sockets in qemu and got function not implemented 🫠

28.11.2025 20:08 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
PostgreSQL 14 internals book

PostgreSQL 14 internals book

Entering my Postgres era 🐘

27.11.2025 00:26 πŸ‘ 3 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Well looks like they didn’t read up on the history of using io-uring safely in rust. They have the main io-uring issue of sharing buffers with the kernel. github.com/Azure/kimoji...
The classic from without boats (2020) without.boats/blog/io-uring/

21.11.2025 22:54 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
GitHub - jordanisaacs/rustix-uring: The `io_uring` library for Rust (with Rustix) The `io_uring` library for Rust (with Rustix). Contribute to jordanisaacs/rustix-uring development by creating an account on GitHub.

Omg they are using my rustix-uring library, looks like I got to get back on the maintenance grind πŸ˜… github.com/jordanisaacs...

21.11.2025 22:39 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
GitHub - Azure/kimojio-rs: A thread-per-core Linux io_uring async runtime for Rust optimized for latency. A thread-per-core Linux io_uring async runtime for Rust optimized for latency. - Azure/kimojio-rs

Ah bad link, here it is github.com/Azure/kimoji...

21.11.2025 22:35 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image

And page servers are sharded (one copy stored on object storage) allowing for easy scaling up/down of page servers. The standard `GetPage @ LSN` API.

21.11.2025 22:19 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

They have automatic failovers of primary to read replicas (and if old primary comes back online it will come back as a read replica). Since compute nodes are stateless this is easy for them to do. A mention of ringfencing but no details on it. Video has a nice animation of this.

21.11.2025 22:17 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
HorizonDB write path diagram.

HorizonDB write path diagram.

WAL writes are majority quorum from the primary. They are using rust & thread per-core io-uring on nvme. A new open source runtime, kimojio! github.com/Azure/kimoji.... Excited to dig into that.

21.11.2025 22:14 πŸ‘ 1 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0
HorizonDB high level architecture diagram.

HorizonDB high level architecture diagram.

Some interesting stuff in the talk. It’s neon style durable WAL log & async WAL replay to create pages. All backed by object storage. There is SSD cache on all nodes.

21.11.2025 22:10 πŸ‘ 0 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0
Azure HorizonDB: Deep Dive into a New Enterprise-Scale PostgreSQL Azure HorizonDB is Azure’s new fully managed PostgreSQL database for mission-critical workloads. Join engineering and product leaders to explore the architecture that enables enhanced scalability with...

Adam prout gave a talk on it at ignite today. No recording yet ignite.microsoft.com/en-US/sessio...

20.11.2025 00:09 πŸ‘ 4 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
[Future Data] Storage Metadata for Modern Cloud Databases - Carnegie Mellon Database Group In modern database architecture, separating compute from storage unlocks powerful capabilities. Our... Read More +

Today's Future Data Systems Seminar Speaker: Joyo Victor will present @singlestore.com's "Bottle Service" meta-data system that supports database branching, change-data-capture, and Apache Iceberg. Zoom talk open to public at 4:30pm ET. YouTube video available after: db.cs.cmu.edu/events/futur...

27.10.2025 11:39 πŸ‘ 3 πŸ” 3 πŸ’¬ 0 πŸ“Œ 0

So after a day of work I had my 3 line fix :) Add 'SHF_GNU_RETAIN' flag to the inline asm for the main flag list. And a dummy variable in the macro that uses the view sections to force a GC reference:
`__attribute__((retain,used,section("view-section")))
static const char dummy[0];`

20.10.2025 16:03 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Of course this is where I ended up at maskray’s blog doing deep reads of linker GC (maskray.me/blog/2021-02... ) and metadata sections (maskray.me/blog/2021-01...). I realized the main flag list should always exist and the view should only be kept if in use.

20.10.2025 15:59 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

There has actually been a ton of consideration to handling these sort of β€œmeta” sections that have no direct access and thus do not participate in general GC references. But upon further looking the dynamic flag didn’t use any of the special flags. So I found my bug, the linker was GCing it

20.10.2025 15:55 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Luckily I had two build flavors with one passing and the other failing. I manually went through every linker flag difference to guess which one was causing issues. And 'β€”gc-sections' looked suspicious. The linker has some crazy complexity to how it decides to GC sections.

20.10.2025 15:53 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

So dynamic flag automatically generates sections using inline assembly. One section has the list of all flags. Then there are arbitrarily many other sections that are a β€œview” into that list of flags for more efficient lookups. There is no access of any sections beyond using '__start' and '__stop'

20.10.2025 15:50 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

But the sections existed in the object files leaving me flummoxed. Why wasn’t the linker using the sections? So I went down one of the most interesting systems rabbit holes I’ve had recently.

20.10.2025 15:47 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
GitHub - backtrace-labs/dynamic_flag: A C library for runtime-flippable feature flags on Linux/x86-64, with negligible overhead in the common case A C library for runtime-flippable feature flags on Linux/x86-64, with negligible overhead in the common case - backtrace-labs/dynamic_flag

Been working on using github.com/backtrace-la... which does cross modifying code for negligible overhead flags. But when I tried to use it I got dreaded linker errors with the '__start' and '__stop' symbols for the custom sections that were supposed to be generated at link time missing...

20.10.2025 15:44 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Google blacklisted the iCloud private relay ip addresses. Been broken for ages while now. On iOS safari you need to press the β€œshow ip address” option and then try searching again and it works.

06.10.2025 03:58 πŸ‘ 1 πŸ” 1 πŸ’¬ 2 πŸ“Œ 0

Everyone complains about fighting the compiler, but the true boss battle is the linker. I’d rather have a thousand line c++ template error than an utterly unhelpful 5 line linker error.

01.08.2025 00:29 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

This is really cool, TUM has a course on transaction systems theory (taught by Thomas Neumann), with open access slides in English. Stumbled upon it when one of the slides showed up in a search for commutative serializability theory.
db.in.tum.de/teaching/ss2...

31.07.2025 02:46 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Bounding retries of write-write conflicts in MVCC+2PL | snowytrees.dev

I wrote up on bounding retries of write-write conflicts in MVCC+2PL. There is surprisingly little publicly written on how databases can retry, so doing my part to fill that gap in :) snowytrees.dev/blog/boundin...

25.07.2025 17:16 πŸ‘ 7 πŸ” 3 πŸ’¬ 0 πŸ“Œ 0
Preview
Off CPU profiling by florianl Β· Pull Request #196 Β· open-telemetry/opentelemetry-ebpf-profiler This is the code that backs #144. It can be reused to add features like requested in #33 and therefore can be an alternative to #192. The idea that enables off CPU profiling is, that perf event and...

Experimental off-cpu profiling landed for otel ebpf profiler πŸ‘€. It also was a blocker for using its stack unwinding as a library. Hopefully that means user space stacktraces and profiling will come soon(ish) to inspektor gadget for interactive perf analysis on kubernetes.

github.com/open-telemet...

15.01.2025 17:49 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Wound/Wait Deadlock-Proof Mutex Design β€” The Linux Kernel documentation

The motivation they cite in the kernel docs is gpu buffer locking www.kernel.org/doc/html/v6....

13.01.2025 03:10 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Was searching around for open source uses of wound wait/wait die and surprisingly found it is used in the Linux kernel github.com/torvalds/lin...

13.01.2025 03:09 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Yep agreed. I initially mistook synchronous_commit it for a general async durability flag.

08.01.2025 18:22 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0