About:

I am a Founding Engineer at Gitar.ai, working on automating large scale code maintenance and CI fixes by combining custom AI agents and specialized cross-language program analysis tooling.

Before that I was a Staff Engineer and Tech Lead and Manager within Uber's Programming Systems Group. I am a core developer and maintainer for NullAway, a compile-time tool to prevent Java NPEs in pratice, which has been adopted semi-broadly in industry. It is used by Chromium and the Spring framework, among other major OSS projects.

I am generally interested in building best in class developer tooling, particularly with a focus on increasing reliability via static and dynamic analysis, and automating transformations. I got my Ph.D. in Computer Science from Stanford University under the direction of Prof. Alex Aiken.

Open-Source Tools:
NullAway

A fast, practical, static nullness checker for Java


NullAway takes in code following an intuitive annotation discipline, where values that might be null at runtime, must be annotated with @Nullable. It performs type-based local analysis to ensure that any pointer that gets dereferenced in annotated code cannot be null, and thus prevent NullPointerExceptions (NPEs). In our measurements, the build-time overhead of running NullAway is usually less than 20% of javac, which allows us to use it to analize all of Uber Android Java code on every local compilation.


with Manu Sridharan, Subarno Banerjee, Nima Karimipour, and others at Uber

NilAway

A fast nilness analyzer for Go requiring no code annotations


NilAway builds upon the lessons of NullAway to build a fast nil dereference checker for Go, which works across packages without requiring any code anotations on functions or fields. It manages this by performing whole-program nilability type inference, modeled as graph reachability. It handles language features like struct initialization, error returns, and contracts between function parameters. It leverages integration with the Bazel build system and nogo to scale to 90+M LoC with minimal overhead over compilation.


I led this project, which means most of the real work is to be credited to Sonal Mahajan, Julia Turcotti, Yuxing Wang and many others at Uber

Piranha

A polyglot code transformation toolset for automating large scale changes


Piranha began as an automated cross-paltform tool to eliminate stale feature flags in Uber's codebase and related dead code, with three separate language-specific implementations. The current version of the tool is a polyglot (cross-language) code transformation framework built on top of the tree-sitter parsing infrastructure. It provides a lightweight, yet surprisingly flexible, DSL for cascading code transformations.


with Ameya Ketkar, Murali Krishna Ramanathan, and others at Uber

RxThreadEffectChecker

A static analysis tool for preventing UI access off the main thread in stream-based (RxJava/RxAndroid) Android applications.


The RxThreadEffectChecker is built on the Checker Framework, and particularly it works in tandem with their guieffect checker. It extends these checkers with awaraness of the ReactiveX stream-based threading model. We deployed RxThreadEffectChecker at Uber, then later replaced it with a faster (but regrettably not open-source) implementation, using the same type system directly atop the Error Prone framework.


with Benno Stein, Manu Sridharan, and others at Uber

Research Publications:
A Lightweight Polyglot Code Transformation Language

Ameya Ketkar, Daniel Ramos, Lazaro Clapp, Raj Barik, Murali Krishna Ramanathan
45th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 2024.

Practical Inference of Nullability Types

Nima Karimipour, Justin Pham, Lazaro Clapp, Manu Sridharan
31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE), 2023.

Last Diff Analyzer: Multi-language Automated Approver for Behavior-Preserving Code Revisions

Yuxin Wang, Adam Welc, Lazaro Clapp, Lingchao Chen
31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE), 2023.

Piranha: Reducing Feature Flag Debt at Uber

Murali Krishna Ramanathan, Lazaro Clapp, Rajkishore Barik, Manu Sridharan
42nd International Conference on Software Engineering, Software Engineering in Practice (ICSE-SEIP), 2020.

NullAway: Practical Type-Based Null Safety for Java

Subarno Banerjee, Lazaro Clapp, Manu Sridharan
27th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE), 2019.

Safe stream-based programming with refinement types

Benno Stein, Lazaro Clapp, Manu Sridharan, Bor-Yuh Evan Chang
33rd ACM/IEEE International Conference on Automated Software Engineering, (ASE), 2018.

Eventually Sound Points-To Analysis with Specifications

Osbert Bastani, Rahul Sharma, Lazaro Clapp, Saswat Anand, Alex Aiken
33rd European Conference on Object-Oriented Programming (ECOOP} 2019.

PDF
Minimizing GUI Event Traces

Lazaro Clapp, Osbert Bastani, Saswat Anand, Alex Aiken
24th ACM SIGSOFT International Symposium on the Foundations of Software Engineering (FSE), 2016.

PDF
Modelgen: Mining Explicit Information Flow Specifications from Concrete Executions

Lazaro Clapp, Saswat Anand, Alex Aiken
ACM International Symposium on Software Testing and Analysis (ISSTA), 2015.