+32
.tangled/workflows/deploy.yaml
+32
.tangled/workflows/deploy.yaml
···
1
+
# Mostly copied from the Wisp docs: https://docs.wisp.place/cli/#cicd-integration
2
+
3
+
when:
4
+
- event: ['push']
5
+
branch: ['main']
6
+
- event: ['manual']
7
+
8
+
engine: 'nixery'
9
+
10
+
dependencies:
11
+
nixpkgs:
12
+
- coreutils
13
+
- curl
14
+
- racket
15
+
16
+
steps:
17
+
- name: build site
18
+
command: |
19
+
scribble --dest dist index.scrbl resume.scrbl
20
+
21
+
- name: deploy to wisp
22
+
command: |
23
+
# Download Wisp CLI
24
+
curl https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-x86_64-linux -o wisp-cli
25
+
chmod +x wisp-cli
26
+
27
+
# Deploy to Wisp
28
+
./wisp-cli \
29
+
"notjack.space" \
30
+
--path "dist" \
31
+
--site "site" \
32
+
--password "$WISP_APP_PASSWORD"
+3
-1
README.md
+3
-1
README.md
···
1
-
# Foo
1
+
# My personal website
2
+
3
+
This repository contains my personal website, [notjack.space](https://notjack.space/). It's hosted on [wisp.place](https://wisp.place/), built with [Scribble](https://docs.racket-lang.org/scribble/), and deployed using Tangled's [CI spindles](https://tangled.org/tangled.org/core/blob/master/docs/DOCS.md#spindles).
+22
index.scrbl
+22
index.scrbl
···
1
+
#lang scribble/manual
2
+
3
+
@title{Industrial Torment Nexus Disassembly}
4
+
5
+
I'm Jacqueline, and this is my website, blog, and whatever else I want it to be. Here's some links:
6
+
7
+
@itemlist[
8
+
9
+
@item{@hyperlink["resume.html"]{My résumé}, for those interested in hiring someone with an
10
+
incredibly strange set of skills.}
11
+
12
+
@item{@hyperlink["https://github.com/jackfirth"]{My GitHub profile}, for those interested in
13
+
exploring my projects.}
14
+
15
+
@item{@hyperlink["https://tangled.org/did:plc:7oyzfpde4xg23u447zkp3b2i"]{My Tangled profile} ---
16
+
it's like github but different.}
17
+
18
+
@item{@hyperlink["https://bsky.app/profile/notjack.space"]{My Bluesky profile}, for Posting™.}
19
+
20
+
@item{@hyperlink["https://unfoldingdiagrams.leaflet.pub/"]{My blog}, such as it is.}
21
+
22
+
@item{@hyperlink["https://tangled.org/notjack.space/site"]{This site's source code}, on Tangled.}]
+100
resume.scrbl
+100
resume.scrbl
···
1
+
#lang scribble/manual
2
+
3
+
4
+
@title{Jacqueline Firth's Résumé}
5
+
6
+
@tt{jackhfirth@"@"gmail.com, (760) 902-4112}
7
+
8
+
Experienced software engineer specializing in developer tooling, compilers, CI/CD systems,
9
+
programming language theory, functional programming, automated refactoring systems, macro systems,
10
+
microservices, 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
49
+
cross-registration program at @bold{St. Lawrence University, NY} (2011-2013). My education
50
+
was unusual: I was 14 years old when I began taking SUNY Canton classes full time,
51
+
and at the age of 18 I had to leave my bachelor's degree program without finishing it due
52
+
to 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}}]