About
I am working at the intersection of AI, programming languages and software reliability. More specifically, I am researching and developing new tools and techniques for helping developers be more productive and build more reliable systems.
I am the co-creator of Coyote (opens in new tab), an open-source library and tool for unit testing concurrent C# code. Coyote takes control of the program schedule, systematically explores the concurrency and other sources of nondeterminism, and can find deep concurrency-related bugs and fully reproduce them, making debugging much easier. Coyote is used by many engineering teams in Microsoft Azure to find bugs in their production services and increase their reliability.
During my time at Microsoft, I have also worked on several other programming-language and systems related R&D projects, including: P# (opens in new tab), a programming language and framework for building highly-reliable services using a state-machine programming model that has been used in production inside Azure Compute; Project Snowflake (opens in new tab) (safe manual memory management for .NET); a TypeScript-based formula evaluation engine for Excel Online; and a prototype stack for private AI and confidential computing.
Prior to working at Microsoft, I studied for my PhD in Computing at Imperial College London (opens in new tab), where I was fortunate to be advised by Prof. Alastair Donaldson (opens in new tab). My PhD research focused on scalable techniques for automatically analyzing and testing real-world asynchronous software systems, during which I designed P#. During my PhD, I did three super fun research internships at Microsoft Research (in the US and India).
My personal website (which is more up-to-date and complete) can be found here (opens in new tab).