Sign in

Moritz Hoffmann

@antiguru.bsky.social
78 followers 69 following 26 posts

Computer scientist at @materialize.com. Systems, databases, dataflows. Playing the bass guitar.

PostsRepliesMedia
Moritz Hoffmann @antiguru.bsky.social · 30/09/2026
New blog post: Making disk a first-class citizen in @materialize.com materialize.com/blog/materia...
materialize.com
Materialize, Out-of-Core: Replacing Swap with a Buffer Pool | Materialize
Materialize is moving beyond kernel paging to an application-managed buffer pool, keeping hot data in memory and serving sequential and batched work from disk.
011
Moritz Hoffmann @antiguru.bsky.social · 29/04/2026
Made a thing: Pollard is a MCP server for analyzing Firefox performance profiles. crates.io/crates/pollard
crates.io
crates.io: Rust Package Registry
crates.io serves as a central registry for sharing crates, which are packages or libraries written in Rust that you can use to enhance your projects
031
Moritz Hoffmann @antiguru.bsky.social · 18/09/2025
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.
031
Moritz Hoffmann @antiguru.bsky.social · 15/09/2025
Based 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...
github.com
Release differential-dataflow-v0.17.0 · TimelyDataflow/differential-dataflow
Other Adjust Differential to recent Timely changes (#643) Remove Filter and Freeze wrappers (#644)
000
Moritz Hoffmann @antiguru.bsky.social · 15/09/2025
We 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.
github.com
Introduce builder for flatmap operators by frankmcsherry · Pull Request #704 · TimelyDataflow/timely-dataflow
We discussed this a year back, but I couldn't recall why we didn't move it forward. I copy/pasted the code, and dressed up the documentation and examples. Worth taking a peek!
000
Moritz Hoffmann @antiguru.bsky.social · 15/09/2025
I 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.
100
Moritz Hoffmann @antiguru.bsky.social · 15/09/2025
A 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".
github.com
Distributor trait by antiguru · Pull Request #700 · TimelyDataflow/timely-dataflow
Introduce a distributor that knows how to partition containers across multiple pushers. This moves the partition logic from container builders into a bespoke trait and implementation instead of mix...
100
Moritz Hoffmann @antiguru.bsky.social · 15/09/2025
Previously, 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.
github.com
Rework container abstractions by antiguru · Pull Request #697 · TimelyDataflow/timely-dataflow
This is another attempt at reworking the container abstractions in Timely. At the moment, we have two types that a lot of the container abstractions hinge on, Container and ContainerBuilder. Both d...
100
Moritz Hoffmann @antiguru.bsky.social · 15/09/2025
We 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 timely-v0.24.0 · TimelyDataflow/timely-dataflow
This version of Timely has some exciting new features. The Distributor trait offers a generalization of the Exchange type. It allows users to define custom distribution strategies for routing data...
151
Moritz Hoffmann @antiguru.bsky.social · 27/08/2025
github.com/release-plz/... for handling releases. GitHub CI for builds.
github.com
GitHub - release-plz/release-plz: Publish Rust crates from CI with a Release PR.
Publish Rust crates from CI with a Release PR. Contribute to release-plz/release-plz development by creating an account on GitHub.
020
Moritz Hoffmann @antiguru.bsky.social · 25/06/2025
A lot of performance improvements went into this one!
020
Reposted by Moritz Hoffmann
Materialize @materialize.com · 15/05/2025
The 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
021
Reposted by Moritz Hoffmann
Nate Stewart @nate-stewart.bsky.social · 11/04/2025
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
bit.ly
Scaling queries on agent-produced data: How Delphi transformed its data infrastructure
Join our webinar with Delphi to discover they evolved their data infrastructure to handle the rapid increase in AI-driven interactions with Materialize.
022
Reposted by Moritz Hoffmann
Frank McSherry @frankmcsherry.bsky.social · 11/03/2025
I'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...
materialize.com
Materialize For Everyone: Introducing Self-Managed and our Free Community Edition
Unlock real-time data transformation with Self-Managed Materialize. Now, deploy Materialize in your own cloud for security, compliance, and performance control—powered by the same battle-tested, incre...
185
Moritz Hoffmann @antiguru.bsky.social · 11/03/2025
Jan '24: 1,338 kWh. That was a newly-built apartment in NYC. I don't miss this part!
010
Reposted by Moritz Hoffmann
Frank McSherry @frankmcsherry.bsky.social · 22/01/2025
For 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).
github.com
011
Moritz Hoffmann @antiguru.bsky.social · 22/01/2025
We just landed the first use of the columnar crate in Materialize! Stay tuned for more. github.com/MaterializeI...
github.com
Columnar in logging dataflows by antiguru · Pull Request #30883 · MaterializeInc/materialize
Convert logging dataflows to columnar The aim of this PR is to convert some of the logging dataflows to use columnar data on dataflow edges, wherever it makes sense to do so. It introduces building...
142
Moritz Hoffmann @antiguru.bsky.social · 15/01/2025
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...
materialize.com
Replica expiration: Limiting temporal filters' resource requirements
Replica expiration is a new feature in Materialize that limits the resource requirements of temporal filters.
012
Moritz Hoffmann @antiguru.bsky.social · 29/12/2024
An ocelot with an odd shape at the Museum für Naturkunde in Berlin.
010
Reposted by Moritz Hoffmann
Frank McSherry @frankmcsherry.bsky.social · 23/12/2024
I 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...
github.com
332
Moritz Hoffmann @antiguru.bsky.social · 07/12/2024
Origami tree at the @natural-history.bsky.social
010
Moritz Hoffmann @antiguru.bsky.social · 04/12/2024
Check out namespace.so
namespace.so
logologo
110
Moritz Hoffmann @antiguru.bsky.social · 28/11/2024
It'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!
010
Moritz Hoffmann @antiguru.bsky.social · 27/11/2024
Sonne additional details by @frankmcsherry.bsky.social bsky.app/profile/fran...
000
Moritz Hoffmann @antiguru.bsky.social · 27/11/2024
So, we didn't solve the underlying problem, but mitigated it for many of our workloads.
001
Moritz Hoffmann @antiguru.bsky.social · 27/11/2024
Now, 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. 🎉
100
Moritz Hoffmann @antiguru.bsky.social · 27/11/2024
Future 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.
100
Moritz Hoffmann @antiguru.bsky.social · 27/11/2024
Sometimes 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...
materialize.com
Improved performance for temporal filters
Optimization time! We've significantly reduced the cost of using temporal filters in Materialize.
252
Moritz Hoffmann @antiguru.bsky.social · 27/11/2024
Enjoying the call of the coquí in Puerto Rico
020
Moritz Hoffmann @antiguru.bsky.social · 23/11/2024
Just 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
crates.io
crates.io: Rust Package Registry
000
Moritz Hoffmann @antiguru.bsky.social · 22/11/2024
Interesting article on the future of aircraft design: hackaday.com/2024/11/21/b...
hackaday.com
Blended Wing Body Passenger Airplanes And The End Of Winged Tubes
Ask someone to picture an airplane and they’re likely to think of what is essentially a tube with wings and a stabilizing tail tacked onto one end of said tube. Yet it is also no secret that …
000