README.md

May 1, 2026 ยท View on GitHub

I am a researcher and computer scientist. I used to work in San Francisco, then I traveled a bit, and I'm now in NYC starting Materialize.io.

The following posts are in reverse chronological order: newest posts are first. The content of the oldest posts may no longer be correct (mostly those about pieces of software I've worked on, and their state at some time in the past), but they have been retained for posterity (and some humility).


topicsdatetitle
Timely2026-03-19Speeding up timely dataflow by 100x
Columnar2026-03-14Improving columnar with Claude
Columnar, Claude2026-03-14Making Field Access Constant-Time in Columnar
Columnar2026-03-01A Toy Vectorized Interpreter
Datalog2026-01-01The Demand Transform
Datalog2025-12-23(Worst-Case Optimal) Relational Programming
Datalog2025-12-14Evaluating Datatoad
Datalog2025-12-03Worst-Case Optimal Datalog
Datalog, Columnar2025-11-21Columnar Worst-Case Optimal Joins
Datalog2025-11-17Accumulating mid-Join
Datalog, Columnar2025-10-24Columnar Datatoad
Datalog2025-10-09Interpreted Datalog Check-in
Materialize2025-09-22Programming with time in Materialize
Datalog2025-08-24Checking in on Datatoad
Datalog2025-08-02Comparing Interpreted Datalogs
Materialize2025-07-21Materialize R&D Hackathon
Datalog2025-06-03Datalog in Rust
Differential2025-05-29Binary joins can be worst-case optimal
Timely2025-05-10Asynchronous All-Reduce
Timely, Differential2025-05-09Timely and Differential on WASM
Materialize2025-04-27Transaction Processing in the Data Plane
Bluesky2025-03-13Exploring Social Trends on Bluesky
McSherry2024-12-23A decade in review (2015 - 2024)
Materialize2024-11-25Understanding Consistency in Materialize
E-Graphs2024-10-19Understanding E-Graphs
Columnar, Timely2024-10-11Dataflow and Columns and WASM, Oh My!
Columnar2024-09-10A Fascinating Diversion into Compression
Columnar2024-08-25More serial layout in Rust
Columnar2024-08-24A less unsafe serial layout in Rust
Materialize2024-08-13Zero-staleness: Like using your primary, but faster
Materialize2024-05-19Demonstrating Operational Data with SQL
Materialize2024-03-18Computing and Maintaining Weird (Outer) Joins
Materialize2024-01-02Materialize and Advent of Code (50/50)
Materialize2023-12-20Materialize and Memory
Materialize2023-12-19Doing Business with Recursive SQL
Materialize2023-10-10Responsiveness and Operational Agility
Materialize2023-09-29Freshness and Operational Autonomy
Materialize2023-09-19Consistency and Operational Confidence
Materialize2023-09-17A Guided Tour of Materialize's Product Principles
Materialize2023-07-21Capturing Change Data Capture (CDC) Data
Materialize2023-01-04Advent of Code 2022: In SQL
Materialize2022-12-28Reasons for Recursion
Materialize2022-12-25Recursion in Materialize
Materialize2022-07-06Minesweeping in Materialize
Materialize2021-05-14Maintaining Joins using Few Resources
Differential2021-04-26Generalizing Linear Operators
Materialize2021-02-11Windows enough, and Time
Materialize2020-12-29Slicing up Temporal Aggregates in Materialize
Materialize2020-11-18Joins in Materialize
Materialize2020-09-24Materialize Under the Hood
Materialize2020-08-13Lateral Joins and Demand-Driven Queries
Differential2020-08-01Change Data Capture (part 1)
Materialize2020-04-01Robust Reductions in Materialize
Materialize2020-06-19Eventual Consistency isn't for Streaming
Timely, Differential2020-06-09Rust for Data-Intensive Computation
Differential2020-06-06Sudoku in Differential Dataflow
Differential2020-05-01Managing Memory in Differential Dataflow
Differential2020-03-26Upserts in Differential Dataflow
Materialize2020-03-16Materialize on NYC taxi data
Differential2020-02-15Differential Dataflow and Calculus
Datalog, Differential2019-09-06Datalog at SIGMOD and VLDB
Timely2019-08-17Tracking progress in timely dataflow
Materialize2019-08-03Debugging dataflows with materialized
Differential2019-06-13LDBC BI Query 25, developed
Differential2019-05-20Programming with time
Privacy2019-04-12Differential privacy and Demographics
Differential2019-02-09Monoids and Graph Processing
Differential2018-12-30Tensorflow in Differential Dataflow
Differential2018-11-20Strings (and beyond) in differential dataflow
Timely2018-09-26Timely Dataflow Architecture
Timely2018-08-18Synchronization via Timely Dataflow
Datalog, Rust2018-05-19A Datalog engine in Rust
Differential2018-05-06A differential dataflow query processor
Privacy2018-03-11Things that count
Privacy2018-02-25Uber's differential privacy .. probably isn't
Differential2018-02-19World enough, and timely dataflow
Differential2018-02-11Yahoo's Steaming Benchmark
Differential2017-12-10Advent of Code
Timely2017-11-08Timely on Kafka
Privacy2017-10-27Deep learnings about differential privacy
COST, Differential2017-10-23COST in the land of differential dataflow
Privacy2017-09-28The Moral Character of Privacy Technology
COST2017-09-23COST in the land of databases
Differential2017-09-05Big Data Stream Managers (BDSM)
Differential2017-08-21Live PageRanking
Timely2017-07-27Memory management for big data
Differential2017-07-24Throughput and latency in differential dataflow
Differential2017-05-06Specialization in differential dataflow
Differential2017-05-01Arrangement in differential dataflow
Differential2017-04-24A TPC-H-like evaluation of differential dataflow
Differential2017-03-28Differential dataflow 2017 roadmap
Differential2017-03-22What I'm stuck on
Differential2017-03-01High-resolution timestamps
Differential2017-02-21Modular data organization
Differential2017-02-11Differential dataflow status report
Privacy2017-02-08Two flavors of differential privacy
Privacy2017-01-26Differential privacy as a mutual information constraint
Timely2016-09-17Tracking motifs in evolving graphs
Privacy2016-08-29Differential privacy and correlated data
Privacy2016-08-16Lunchtime for data privacy
Differential2016-08-03Differential Dataflow internals
Differential2016-07-26Differential Dataflow Roadmap
Differential2016-07-17Dataflow as Database
Datalog, Differential2016-06-21Differential Dataflog
Privacy2016-06-14Statistical inference considered harmful
Privacy2016-05-19Differential privacy for dummies, redux
Differential2016-03-27Explaining outputs in modern computations
Privacy2016-02-06Differential privacy: an illustrated primer
Privacy2016-02-03Differential privacy for dummies
COST2015-12-24Graph processing in 2016
Timely2015-12-19Progress tracking in Timely Dataflow
Differential2015-11-27An introduction to Differential Dataflow, part 2
Differential2015-09-29An introduction to Differential Dataflow, part 1
Timely2015-09-21An introduction to Timely Dataflow in Rust, part 3
Timely2015-09-18An introduction to Timely Dataflow in Rust, part 2
Timely2015-09-14An introduction to Timely Dataflow in Rust, part 1
COST2015-08-20Epic Graph Battle of History: Chaos vs Order
COST2015-08-15Sorting out graph processing
COST, Timely2015-07-31The impact of fast networks on graph analytics, part 2.
COST, Timely2015-07-08The impact of fast networks on graph analytics, part 1.
Differential2015-05-12Differential graph computation
Timely2015-05-04Abomonation: terrifying serialization
Timely2015-04-19Data-parallelism in timely dataflow
Timely2015-04-11Worst-case optimal joins, in dataflow
Differential2015-04-07Differential dataflow
COST2015-02-04Bigger data; same laptop
COST2015-01-15Scalability! But at what COST?
Timely2014-12-29Timely dataflow: core concepts
Timely2014-12-27Timely dataflow: reboot
Rust2014-12-16Columnarization in Rust, part 2
Rust2014-12-15Columnarization in Rust