My personal website.
at main 5.4 kB view raw
1#lang scribble/manual 2 3 4@title{Jacqueline Firth's Résumé} 5 6@tt{jackhfirth@"@"gmail.com, (760) 902-4112} 7 8Experienced software engineer specializing in developer tooling, compilers, CI/CD systems, 9programming language theory, functional programming, automated refactoring systems, macro systems, 10microservices, and large-scale distributed systems. Currently based in the San Francisco Bay Area. 11 12 13@section{Experience} 14 15@itemlist[ 16 @item{@bold{2017 to Present} --- @bold{Software Engineer} at @bold{Google} on the Test Automation 17 Platform (TAP) Postsubmit team in Mountain View and Sunnyvale, CA. I worked in Java on backend 18 microservices implementing the test scheduling system Google uses to execute all of Google's unit 19 tests, running billions of tests per day. I've designed and implemented queueing systems, 20 ML-based predictive scheduling systems, high-throughput stream processing systems, and numerous 21 libraries and tools to manage our team's multi-million-line codebase. I am the team's resident 22 expert on asynchronous programming, concurrency, data structures, static analysis, and testing 23 infrastructure. 24 25 In addition to my main work, I've contributed to Google's standard Java libraries, frameworks, and 26 static analysis tools, including Guava and ErrorProne. I'm also one of Google's Java readability 27 mentors: a collection of a few hundred engineers who educate the rest of Google's developers on 28 Java style and best practices through code review and Google's "readability review" process.} 29 30 @item{@bold{2016 to 2017} --- @bold{Software Engineer} at @bold{Google} on the Google Cloud Elysium 31 team in San Francisco, CA. I implemented various backend server components of Google Cloud's 32 resource administration APIs, paritcularly the Cloud Project, Folder, and Organization APIs.} 33 34 @item{@bold{2015 to 2016} --- @bold{Software Developer} at @bold{Mindjet} in San Francisco, CA. I 35 did full stack development on Mindjet's experimental new web platform for business task management. 36 We worked with Mongo, NodeJS, and Angular in a functional programming oriented style. I gave multiple 37 seminars on functional programming concepts generally and on Haskell specifically to our team to 38 educate our developers in this style.} 39 40 @item{@bold{2014 to 2015} --- @bold{Programmer} at @bold{CenterSoft} in Cathedral City, CA. I did 41 full stack development on the company's flagship accounting software, working with C#, MySQL, and 42 frontend web technologies.}] 43 44 45@section{Education} 46 47@bold{Bachelors in Mechanical Engineering} with minors in both Math and Physics from 48@bold{SUNY Canton, NY} (2009-2013), supplemented by Computer Science courses taken through a 49cross-registration program at @bold{St. Lawrence University, NY} (2011-2013). My education 50was unusual: I was 14 years old when I began taking SUNY Canton classes full time, 51and at the age of 18 I had to leave my bachelor's degree program without finishing it due 52to life circumstances. 53 54 55@section{Projects} 56 57@(define paper-url "https://users.cs.utah.edu/plt/publications/oopsla23-faadffggkkmppst.pdf") 58 59@itemlist[ 60 @item{@hyperlink["https://racket-lang.org"]{Racket} --- A Lisp/Scheme-like programming language with 61 an advanced macro system designed for creating entirely new programming languages. I am a frequent 62 contributor to Racket and its ecosystem. I've given numerous talks at 63 @hyperlink["https://con.racket-lang.org"]{RacketCon}, many of which are viewable on YouTube.} 64 65 @item{@hyperlink["https://github.com/jackfirth/resyntax"]{Resyntax} --- A static analysis and 66 refactoring tool for Racket that transforms Racket's macro system into an automated refactoring 67 platform. Multiple core Racket projects rely on its integration with GitHub.} 68 69 @item{@hyperlink["https://github.com/jackfirth/rebellion"]{Rebellion} --- A collection of core 70 libraries for Racket created entirely by myself. Includes data structures, stream processing 71 libraries built around transducers, concurrency primitives, and various other useful libraries.} 72 73 @item{@hyperlink["https://github.com/racket/rhombus"]{Rhombus} --- An experimental research language 74 built on Racket with the intention of bringing Racket's macro system to non-S-expression languages. I 75 am a contributor and frequent design discussion participant. I am one of the authors listed on the 76 @hyperlink[paper-url]{OOPSLA23 paper on Rhombus}, although I am listed under my previous name (Jack 77 Firth).}] 78 79 80@section{RacketCon Talks} 81 82@(define collections-talk "https://www.youtube.com/watch?v=-eLw9vpcKI8") 83@(define resyntax-talk "https://www.youtube.com/watch?v=IoQBNh_NzQM") 84@(define rackunit-talk "https://www.youtube.com/live/et0C4ijed04?si=RBNagRyGfsMb1LZQ&t=8592") 85@(define warn-talk "https://www.youtube.com/watch?v=i6wXy3MZm64") 86@(define expanders-talk "https://www.youtube.com/watch?v=PoHGvY4RZ9U") 87 88@itemlist[ 89 90 @item{RacketCon 2024 --- @hyperlink[collections-talk]{Sorted Collections in Rebellion}} 91 92 @item{RacketCon 2022 --- @hyperlink[resyntax-talk]{Resyntax: A Macro-Powered Refactoring Tool}} 93 94 @item{RacketCon 2017 --- 95 @hyperlink[rackunit-talk]{A RackUnit Toolkit: Growing Racket’s Testing Ecosystem}} 96 97 @item{RacketCon 2016 --- 98 @hyperlink[warn-talk]{Language Integrated Nitpicking: Syntax Warnings in Racket}} 99 100 @item{RacketCon 2015 --- @hyperlink[expanders-talk]{Generic Syntax Expanders and Extensible Macros}}]