Highlighting some of my team's recent work: We've changed Materialize to use swap instead of memory-mapped files, with nice performance and efficiency improvements.
18.09.2025 14:24 β π 3 π 1 π¬ 0 π 0@antiguru.bsky.social
Computer scientist at @materialize.com. Systems, databases, dataflows. Playing the bass guitar.
Highlighting some of my team's recent work: We've changed Materialize to use swap instead of memory-mapped files, with nice performance and efficiency improvements.
18.09.2025 14:24 β π 3 π 1 π¬ 0 π 0Based on Timely 0.24, we released Differential Dataflow 0.17. Compatibility changes plus removing the Filter and Freeze wrappers because they weren't used and difficult to maintain. github.com/TimelyDatafl...
15.09.2025 19:52 β π 0 π 0 π¬ 0 π 0We also added a new way to chain multiple flat-map calls into a single Timely operator. Coming from Rust's iterator API, it's sometimes not obvious that Timely's API has a different cost structure (each transform renders an operator). Here, a builder can mitigate some of the cost.
15.09.2025 19:44 β π 0 π 0 π¬ 0 π 0I think these change are a great example of taking existing APIs and moving from row-first to batch-of-data. Computers generally seem better at handling data by column rather than row, and these changes allow Timely programs to represent data in their own form.
15.09.2025 19:44 β π 0 π 0 π¬ 1 π 0A Distributor trait takes the concepts of Exchange, but moves away from row-by-row processing, opening up new kinds of containers that aren't row-first. For example, what is a row in a trie-structured container? The new trait allows to partition by whatever the user wants, not just by a "row".
15.09.2025 19:44 β π 0 π 0 π¬ 1 π 0Previously, the Container trait described behavior that is now separate: Accountable reveals a container's record count for progress tracking; nothing else. For higher-level APIs, IterContainer and DrainContainer reveal their contents (non-)destructively, for container-agnostic row-by-row operators.
15.09.2025 19:44 β π 0 π 0 π¬ 1 π 0We just released Timely Dataflow 0.24! Here are some exciting changes from @frankmcsherry.bsky.social and myself.
The container abstractions got a complete rework, and we introduce a new pattern to distribute data. Details below.
github.com/TimelyDatafl...
github.com/release-plz/... for handling releases. GitHub CI for builds.
27.08.2025 05:19 β π 2 π 0 π¬ 0 π 0A lot of performance improvements went into this one!
25.06.2025 15:45 β π 2 π 0 π¬ 0 π 0The Materialize engineering team uncovered a rare concurrency bug πͺ²in Rustβs π¦ unbounded channels that could lead to double-free memory errors. After thorough debugging and working with the Rust and crossbeam communities, the fix is now part of @rust-lang.org 1.87.0.
π bit.ly/3Fan1Om
Agents generate more data and place more demand on systems than ever beforeβand standards like MCP will only accelerate this trend. Learn how Delphi is rethinking how they build data-intensive applicationsβfrom the db to the UI: bit.ly/42BZdf9
11.04.2025 14:24 β π 2 π 2 π¬ 0 π 0I'm very excited to share that @materialize.com now has a Self-Managed option, as well as a Community Edition license that lets you play around with the exact same bits but for free.
materialize.com/blog/materia...
Jan '24: 1,338 kWh. That was a newly-built apartment in NYC. I don't miss this part!
11.03.2025 15:40 β π 1 π 0 π¬ 0 π 0For interested folks, the RustNYC presentation I gave about the `columnar` crate is now available in the repo: github.com/frankmcsherr...
It's not as good without the talk track, but it's got the benchmark results, you can admire the stylistic watercolors (so therapeutic to make; strong recommend).
We just landed the first use of the columnar crate in Materialize! Stay tuned for more.
github.com/MaterializeI...
I wrote a bit about efficient maintenance of temporal filters in @materialize.com. By periodically restarting replicas, we can limit resource requirements (RAM and CPU), all without any other user-visible impact.
materialize.com/blog/replica...
An ocelot with an odd shape at the Museum fΓΌr Naturkunde in Berlin.
29.12.2024 15:19 β π 1 π 0 π¬ 0 π 0I was recently coveted a 10 year journal on jetpens, because that would be cool to do, and realized that I already had one! The blog turns 10 this month, and I thought it might be worth taking a tour through each of the years and seeing what I can jot down about each.
github.com/frankmcsherr...
Origami tree at the @natural-history.bsky.social
07.12.2024 21:17 β π 1 π 0 π¬ 0 π 0Check out namespace.so
04.12.2024 11:17 β π 1 π 0 π¬ 1 π 0It'll certainly be an opt-in feature in its current form. Forcing a certain deployment pattern will be hard. Otoh, we could automate graceful replica restarts!
28.11.2024 01:40 β π 1 π 0 π¬ 0 π 0Sonne additional details by @frankmcsherry.bsky.social bsky.app/profile/fran...
27.11.2024 20:24 β π 0 π 0 π¬ 0 π 0So, we didn't solve the underlying problem, but mitigated it for many of our workloads.
27.11.2024 18:22 β π 0 π 1 π¬ 0 π 0Now, in Materialize time advanced about every second, and the result is high CPU utilization πΏ But: we restart most things every week, so updates beyond a week will never be surfaced! The mitigation we implemented is to drop such updates, and add some safeguards to never produce incorrect results. π
27.11.2024 18:22 β π 0 π 0 π¬ 1 π 0Future updates are stashed at the input to indexes, and they'll only act on them once the time has advanced far enough. Because we use Differential Dataflows, the updates are only partially ordered. To extract ready updates, DD scans the data and splits it in ready and pending, ~ in linear time.
27.11.2024 18:22 β π 0 π 0 π¬ 1 π 0Sometimes it's easier to mitigate a problem than solve it: a feature I recently implemented reduces the memory and CPU @materialize.com requires to maintain future updates. Some details why solving the problem is hard and the mitigation easy-ish.
materialize.com/changelog/20...
Enjoying the call of the coquΓ in Puerto Rico
27.11.2024 00:40 β π 2 π 0 π¬ 0 π 0Just published lgalloc 0.4.0. The only change is that stats don't print errors anymore but forward to the caller. Docker on MacOS doesn't present numa information! crates.io/crates/lgalloc
23.11.2024 12:26 β π 0 π 0 π¬ 0 π 0Interesting article on the future of aircraft design: hackaday.com/2024/11/21/b...
22.11.2024 06:10 β π 0 π 0 π¬ 0 π 0