Email: [email protected] |
GitHub: anp |
Blog: blog.anp.lol |
Fuchsia: Software Engineer -- Nov '18 - present
The primary owner of Fuchsia's userspace logging facilities from mid 2019 until early 2021,
inheriting it secondhand from the external contractor who had prototyped it. 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 by crash reports and developer tools. Implemented in multithreaded
- 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. Defined safe variant of protocol, adapted synchronous code to use async/await,
added tests, deflaked existing tests.
- Unblocked Fuchsia's first product launch by exposing logs over a new endpoint
with redaction of user data. Refactored diagnostics streaming endpoint to be
generic over a Rust stream of
serde-compatible values, allowing future extension to other data
- Designed a structured log binary encoding, implemented encoding in Rust,
implemented a Rust logging frontend, implemented a
fuzzer-style cross-language conformance test for the encoding.
- Exposed producer identity to the logging service (novel feature for Fuchsia),
allowing separate ingestion and storage of log
messages and unblocking future logspam-aware retention policies. Used this data to
expose metrics about sources of logspam.
- Organized a logging quality-of-life 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.
- Scoped and reviewed C++ and Dart structured log encoding libraries, integrating the structured log
parser with the logging service, a new fuzzer for that integration, better kernel log metadata,
clearer init of the existing C++ library, an isolated embedding of the logging/metrics service in
all test environments, support for DEBUG/TRACE severities.
- 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.
- Wrote the first documentation on Fuchsia's logging, with all pages
in the top 20% of fuchsia.dev traffic at end of 2020. Later
wrote documentation on the strategy for identifying log producers,
and on the JSON-encoded log endpoint.
Briefly the 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
- Drafted the migration roadmap to remove UTC from the kernel by using clock objects passed between
Rust & Open Source
- An OWNER of Fuchsia's external Rust crates.
- Member of the Rust Toolchain Rotation, which updates Fuchsia's
extensively to the playbook and wrote a Python script for bisecting upstream
commits against the Fuchsia build.
- Member of the Rust on Fuchsia Working Group.
- Member of Fuchsia's Open Source Review Board.
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.
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.
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.
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
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 lynchpin for the
project. It is now managed by Rust's infrastructure team.