My personal website.
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}}]