Research

My research explores how we can build better computer systems by co-designing across traditional boundaries — between the network and distributed systems, between hardware and software, between theory and practice. I focus on distributed systems, networking, and transactions, often finding that crossing these lines leads to systems that are faster, simpler, and more reliable.

Network-system co-design

The core thread of my research: what if distributed systems were designed together with the network, rather than treating it as an opaque layer? This has led to replication protocols that exploit network ordering to eliminate coordination, consensus mechanisms that run partly inside the network, and in-network acceleration for distributed ML training.

Network function acceleration

Building and accelerating network infrastructure using programmable switches and SmartNICs — from stateful in-network processing to hardware load balancing at datacenter scale. This line of work has led to ongoing collaborations with Azure Networking.

Transactions and consistency

Building practical systems that provide strong guarantees — serializability, linearizability — without paying the traditional performance cost.

Datacenter architecture

Rethinking the systems stack for modern datacenter hardware — from RDMA interfaces to NVMe virtualization to CXL memory pooling.

Systems security and architecture

Earlier work on operating systems, security, and low-latency systems.