My personal website.

Compare changes

Choose any two refs to compare.

Changed files
+156
.tangled
workflows
+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"
+2
README.md
··· 1 # My personal website
··· 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
···
··· 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
···
··· 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}}]