Jack Leightcap / Work

A page to frame the resume and linkedin. (See here and the bio for the extent of writing directly about me.) In brief: I work towards engineering, documenting, and presenting solutions to problems of computer hardware/software and research/engineering.

See my technical writing, my presentations, my personal repositories and GitHub.

Research

Sabbatical (2024-)
Update to come.
DARPA SIEVE (2022-2024)
Joined an internal Trail of Bits team at the midpoint of DARPA's Securing Information for Encrypted Verification and Evaluation (SIEVE) program. Executed a proposal for generating zero-knowledge proofs about "real world" program execution at the granularity of machine code.
Developed proofs (and their caveats) in zero-knowledge for exploits in Linux userspace: libc heap corruption, log4shell under JVM interpreter.
Developed an entirely combinational model of (a limited subset of) x86-64 machine code, first as delicate work with Verilog then transitioned to compiling from Haskell. Wrote Haskell for circuits modelling linux syscalls and libc memory side-effects.
Solved problems of esoteric compiler and build system engineering: using Nix to emulate an intricate OpenJDK cross compile, developing an (ill-fated) LLVM backend, used to compile "recursively" dependencies along with their program.
Developed appropriately sized tasks and onboarded students, fall 2023 and summer 2024.
Program notices: program announcement, first phase results and second phase announcement, DARPA contract
Lutron ElectronicsJPZ0138 (2021)

Engineering

Hardware & Software
Embedded systems. wrote software constrained by power, scheduling, interrupt latency, and flash memory wear protection for an embedded sensor (pictured above).
Computer architecture. need to write more about ASIC designs (pictured further above).
Open Source
Supply chain security. worked on the sigstore project at Trail of Bits, learning the idea and implementation in the last few percent of the Python coverage tests, pushing a Rust implementation to parity through the pains of compiling to Rust.
Build systems. need to write more about uses of Nix.

Education & Pre-Profession

In college I came to electrical engineering courses expecting a very applied math degree, but instead found second-hand programming explanations. My first proper programming course was a use of Racket by the incredible force of Olin Shivers, who perfectly transmitted the kind of computational essence of the lambda calculus. A lot of what I enjoyed and attributed solely to math—reasoning through complex and creative interactions from designing a simple set of rules—was almost the core idea of computation presented to me. I spent most the following summer in a beautiful Victorian Gothic Revival library at Cambridge, finding Shannon, Turing, Church, McCarthy, to the neglect of the Shakespeare assignmets I was there to actually do.

I graduated from Northeastern University with a degree in electrical and computer engineering, in order of my slide in focus. I used my electives to take Ben Lerner's compilers course, microprocessor-based design, hardware & systems security, and theory of computation.