Compacting the Uncompactable: The Mesh Compacting Memory Allocator
Programs written in C/C++ can suffer from serious memory fragmentation, leading to low utilization of memory, degraded performance, and even application failure due to memory exhaustion. This problem extends to languages like Ruby and Python,…
Tea: A High-level Language and Runtime System for Automating Statistical Analysis
Current statistical tools place the burden of valid, reproducible statistical analyses on the user. Users must have deep knowledge of statistics to not only identify their research questions, hypotheses, and domain assumptions but also select…
Making a faster curry with extensional types
Higher-order type-level programming in Haskell
Torch [1.0]
TSVD is an easy-to-use tool to efficiently detect thread-safety violation (e.g., data races) in .NET applications. It instruments application binaries to significantly increase the chance to find such violations with existing tests.
Validating datacenters at scale
Programming Languages and Technical Disruption
[Video of my keynote presentation at PLDI 2016.] What do cheating on fuel economy, the London Whale, and building a better mosquito trap have in common? We are constantly bombarded with technical innovations that disrupt…
Steel: A Concurrent Separation Logic Framework to Scale Up Verification in F*
In recent years, the F* ecosystem has been successfully used to formally verify real-world applications ranging from parsers to cryptographic providers. Nevertheless, verification is still time-consuming, and scaling up is still challenging due to (1)…
Reproducible Codes and Cryptographic Applications
In this talk I will present a work in progress on structured linear block codes. The investigation starts from well-known examples and generalizes them to a wide class of codes that we call reproducible codes.…