Email: [email protected] |
GitHub: anp |
Blog: blog.anp.lol |
Resume: blog.anp.lol/cv
Work Highlights
Fuchsia: Software Engineer -- Nov '18 - present
Rust on Fuchsia Team -- Mar '21 - present
Member of the team and the toolchain rotation, responsible for improving engineering quality and
productivity:
- Scrubbed hundreds of open bugs, closing dozens, and created a planning backlog.
- Wrote proposals on supporting Rust on Fuchsia for non-Google developers, including the technical
and process dependencies of publishing support libraries to crates.io and
running Fuchsia-based tests in the CI of projects in the OSS ecosystem.
- Led early design work to remove Rust's "UNIX dependency" for its Fuchsia standard library.
- Contributed Fuchsia's unique use cases to Rust's language evolution process.
- Added tooling and documentation for using
rust-bindgen
to consume C/C++ libraries. Contributed upstream support for
integrating with Fuchsia's build system.
Owner of core Rust libraries such as kernel bindings and the async task scheduler:
- Added tools for debugging hung tasks in the async executor. Coordinated with
Build and System Assembly teams to prevent production code bloat.
- Improved error messages and prevented classes of runtime errors by refactoring
the async executor's public interface, unblocking future performance optimizations.
- Removed runtime panics from high level bindings to the kernel.
Main point of contact for vendored external crates used by Fuchsia:
- Designed, implemented, and rolled out a tool for
automatically delegating ownership of vendored external crates to the team(s) actually using them.
- Designed and implemented a tool for auto-rolling vendored crates from
crates.io.
- Fixed correctness and performance bugs in the tool used to vendor a new or updated
dependency. Updated directory layout to ease navigation, added documentation for all
forks. Mitigated risks to future IP rights with guardrails around public domain
dependencies. Deleted unused or problematic dependencies.
Logging -- Jun '19 - Mar '21
The primary owner of Fuchsia's userspace logging facilities, inheriting it secondhand from the
prototype. All production crash reports and development tools go through my overhauled code. Most
work was on the logging service, responsible for draining in-flight logs from all processes on the
system and holding them in memory for query. Implemented in multithreaded asynchronous Rust.
- Unblocked Fuchsia's first product launch by eliminating
kernel out-of-memory conditions caused by lack of flow control in the the logging service's
listener protocol and by exposing logs over a new endpoint with
redaction of user data approved by the Privacy team.
- Organized a logging working group during a quarters-long feature freeze. Scoped and socialized
tasks, held weekly meetings to track progress and offer support, and reviewed changes for 12
engineers. Organized a "docs fixit" with the Diagnostics and Tech Writers teams, resulting
in over a dozen new docs pages.
- Wrote the first documentation on Fuchsia's logging, with all pages
in the top 20% of fuchsia.dev traffic at end of 2020.
- Designed a structured log binary encoding to replace unstructured text,
implemented encoding and frontend in Rust and
a fuzzer-style cross-language conformance test. Migrated core
system components to use Rust structured logging. Scoped and reviewed C++ and Dart structured log
libraries and oversaw migrations.
- Exposed producer identity (novel feature for Fuchsia), allowing
separate ingestion and storage of log messages.
Used this data to expose metrics about sources of logspam.
- Consulted on an accepted RFC to forward the stdout/stderr of some processes
to the system log. Consulted on plan to forward critical userspace logs to serial,
reviewed the implementation.
Time -- Feb '19 - Jun '19
Owner of Fuchsia's system time. Tasked with making it possible to remove UTC from the
kernel's syscall interface.
- Co-designed a new kernel clock object that conveys timelines between processes.
- Designed and implemented an API to allow the runtime environment to delay
execution until UTC was accurate.
- Added functionality to assert that the device's clock never goes before its build
time.
- Drafted the migration roadmap to remove UTC from the kernel by using clock objects passed between
processes.
Misc.
- Member of Google's "Unsafe Rust Crabal" which provides review and consultation on subtle Rust
abstractions.
- Member of Fuchsia's Open Source Review Board which reviews external dependencies for license
compliance.
Software Developer -- Nov '16 - Jul '17, Jan '18 - Sep '18
- Authored Create React Native App and spoke at ReactConf 2017 to promote it. User growth
increased dramatically (from ~2% WoW to >5% WoW, >10x YoY). Managed relationship with Facebook.
- Prototyped multiversioning strategy for Android NDK libraries by generating namespaced stubs
which performed runtime symbol lookup to avoid loading the versioned libraries into the process'
symbol table. Oversaw implementation after moving to management.
- Exposed in-progress customer build logs from Go daemon on MacStadium builders for later
presentation. Added new job lifecycle model to RethinkDB and Redis, including storage for
in-progress build logs. Built secret scrubber to avoid ever transmitting customer key material.
- Replaced custom Buildkite CI system consisting of 10k's of lines of our own Javascript
and millions of lines of vendored
node_modules
with less than 3,000 lines of bash, YAML, and
HCL using CircleCI and Terraform. This empowered individual engineers to unblock CI.
- Improved developer velocity and infrastructure reliability by migrating off of Vault and using
GCS buckets and GCP KMS for secret and configuration management.
- Consolidated multiple alpha-versioned manually administered Kubernetes clusters into one
stable-versioned GKE cluster, improving reliability and reducing maintenance overhead.
Engineering Manager -- Jul '17 - Dec '17
- Hired an SRE Lead to oversee infrastructure health, our first specialist.
- Doubled our engineering team in 6 months to >15 FTEs, >10 contractors.
- Planned and led our first company-wide targeted product push.
- Established strong norms around mentorship, self-care, and engineering rigor.
I'm quite proud of the work I did as Expo's first Engineering Manager, but I'm even more grateful
to have learned how much I value hands-on engineering to stay motivated and happy at work.
Northern Arizona University
Application System Analyst -- Aug '15 - Oct '16
Staff programmer for a new research department.
- Built the first version of a high-performance metagenomic binning pipeline designed for rapid
detection of rare variants of pathogens in genetic samples. Heavily multithreaded Rust code,
production runs used 10+ machines in the HPC cluster, each with 1-1.5TB of heap.
- Worked on several Django/Postgres web applications to support research efforts.
End-User Computing Specialist -- Jul '14 - Aug '15
Worked on the school's help desk for the Bb Learn LMS and developed software including an offline
course export integrity static analysis tool and an online database query tool for identifying
common course quality issues.
Open Source
Radically improves many Rust error messages. I
implemented it in the compiler and standard library,
wrote developer documentation, and
wrote the initial reference documentation.
The feature has been stable since Rust 1.46.0.
Experimental incremental declarative UI runtime for Rust. Primary author.
GitHub bot which coordinates Rust's asynchronous consensus gathering process. All Rust teams use it
for RFC decisions. Developed to reduce bottlenecking in the RFC process, Niko Matsakis
called it "transformative". Status of in-progress decisions is visibile at
rfcbot.rs.
I originally wrote this service as a response to a call for help tracking
important project metrics. Based on feedback, I evolved it into a decision-making linchpin for the
project. It is now managed by Rust's infrastructure team.