120 lines
7.2 KiB
Typst
120 lines
7.2 KiB
Typst
#set document(title: "Greg Shuflin Resume", author: "Greg Shuflin")
|
|
#set page("us-letter", margin: 0.5in)
|
|
#set text(font: "Inter") // Note - not quite the font from my old resume
|
|
#show link: orig => underline(text(fill: blue, font: "Inconsolata", orig) )
|
|
|
|
#let medium-gray = rgb(44%, 46%, 47%)
|
|
|
|
// latex-derived sizes? I'm guessing here
|
|
#let Huge = 2.5em
|
|
#let Large = 2em
|
|
#let large = 1.3em
|
|
|
|
#let section-header(content) = [ #text(font: "Fira Sans", size: Large, fill: rgb(0%, 0%, 100%))[#smallcaps(content)] \ ]
|
|
#let job-entry(job, job-title, dates) = [
|
|
#text(size: large, weight: "bold")[#job] \
|
|
#text(fill: medium-gray)[#job-title | #text(font: "Fira Sans", style: "italic")[#dates]]
|
|
]
|
|
|
|
// Title
|
|
#{
|
|
set text(font: "Fira Sans", size: 2.5em)
|
|
[ #smallcaps([Gregory Shuflin]) ]
|
|
}
|
|
|
|
//Contact section
|
|
#{
|
|
set text(fill: medium-gray)
|
|
let icon-item(icon-file, free-text) = [
|
|
#box(baseline: 20%)[#image("./icons/" + icon-file, height:1em)] #free-text
|
|
]
|
|
|
|
[
|
|
#icon-item("location-dot.svg", [Oakland, California])
|
|
#h(1em)
|
|
#icon-item("square-envelope.svg", link("mailto:greg@everydayimshuflin.com")[greg\@everydayimshuflin.com])
|
|
#h(1em)
|
|
#icon-item("phone.svg")[510-332-6344]\
|
|
#icon-item("house.svg", link("https://greg.everydayimshuflin.com")[greg.everydayimshuflin.com])
|
|
#h(1em)
|
|
#icon-item("square-git.svg")[
|
|
#link("https://code.everydayimshuflin.com/greg")[code.everydayimshuflin.com/greg],
|
|
#link("https://github.com/neunenak")[github.com/neunenak]
|
|
]
|
|
]
|
|
}
|
|
|
|
Motivated, professional computer scientist with broad expertise in industry and open-source
|
|
software development:
|
|
|
|
- Programming language theory, type theory, strongly-typed functional programming languages. Haskell, Scala. #link("https://lean-lang.org/")[Lean] proof assistant. I've been using Rust since before its 1.0 release in 2015.
|
|
|
|
- Linux system administration for production cloud contexts. AWS/Docker/Kubernetes, Terraform/OpenTofu, Nix/NixOS. I run several servers in a 12U rack in my closet for personal projects, mostly NixOS-based.
|
|
|
|
- Full-stack development in multiple frameworks/languages, particularly the Rust and Python ecosystems. Frontend web development in the modern Javascript/Typescript ecosystem.
|
|
|
|
- Network programming and troubleshooting, hardware and software packet processing, embedded Linux, anything with an `extern "C"` somewhere in it.
|
|
|
|
#section-header([Professional Experience])
|
|
|
|
#job-entry([Meta (formerly Facebook)], [Production Engineer], [Mar 2025 - Mar 2026])
|
|
- Responsible for writing and maintaining internal tooling for advertising-related generative AI software, mostly in Python.
|
|
|
|
#job-entry([Knox Networks], [Senior Software Engineer], [Apr 2023 - Aug 2024])
|
|
- Rust and Nix developer for experimental digital payments infrastructure software stack. AWS/Terraform, microservice deployment model.
|
|
- Heavy use of asynchronous Rust microservices, gRPC, modern encryption primitives including cloud hardware signing modules and Rust/C integration.
|
|
- Upstreamed contributions to several open-source tools to facilitate development workflow.
|
|
|
|
#job-entry([Floating Point Group], [Software Engineer], [Dec 2021 - Dec 2022])
|
|
|
|
- Backend/devops developer for cryptocurrency trading platform. Python/AWS stack, Docker/Terraform/web3.py, some basic Solidity.
|
|
- Maintained integrations with multiple exchanges, blockchains, and crypto assets. Implemented direct customer interaction with Ethereum assets via Metamask.
|
|
- Designed and implemented subsystem for tracking continuous customer account balances for billing and balance reconciliation.
|
|
|
|
#job-entry([Kraken], [Software Engineer], [Mar 2021 - Sept 2021])
|
|
- Rust developer responsible for converting parts of a legacy PHP web API codebase to Rust/Actix for better performance, reliability, and maintainability.
|
|
|
|
#job-entry([Toolchain Labs], [Software Engineer], [Jun 2019 - Mar 2021])
|
|
- Primarily responsible for contributing features, bugfixes, and documentation to the #link("https://github.com/pantsbuild/pants/commits?author=gshuflin")[Pants] open-source build system.
|
|
- Updated old Python codebase to modern typed Python + Rust execution core for improved performance and maintainability. Frequent Rust/Python FFI and Python metaprogramming.
|
|
- Routinely collaborated with external contributors in a spirit of good open-source citizenship.
|
|
- Contributed to internal React/Typescript frontend work, Django/AWS backend work at small, early-stage startup when all hands needed on deck.
|
|
|
|
#job-entry([3D Robotics], [Senior Software Engineer], [Jun 2017 - Jun 2019])
|
|
- One of two members of the backend/devops team. Primarily responsible for feature development for API microservices in Scala (Akka/Couchbase NoSQL), and AWS provision of the same (Docker, Terraform).
|
|
- Built systems for processing GDAL geospatial data, efficiently running TensorFlow/OpenCV ML workflows on quadrotor drone photos.
|
|
- One time I grabbed a Windows laptop and set up a Visual C++ environment so I could apply a 10-line bugfix patch to some Autodesk software we depended on. I'm not ordinarily a Windows developer.
|
|
|
|
#job-entry([Cisco Meraki], [Member of Technical Staff], [May 2013 - Jun 2017])
|
|
|
|
- Primarily responsible for feature development and support of several different models of cloud-managed Ethernet switches and WiFi access points.
|
|
- Healthy mix of embedded Linux firmware development on networking hardware (C++) and full stack web development (Ruby on Rails/PostgreSQL + some Scala).
|
|
- Designed and built WiFi statistics monitoring widget with d3 and React, looked cool in demos and saved at least one deal.
|
|
- Regular troubleshooting and debugging of hardware and software in production network environments. The 802.1Q protocol identifier value `0x8100` is burned into my memory from seeing it in packet logs so often.
|
|
|
|
#section-header([Education])
|
|
|
|
#text(size: large, weight: "bold")[University of California, Berkeley] \
|
|
#text(fill: medium-gray)[Graduated Winter 2012 | B.A. in Computer Science, Linguistics, Japanese]
|
|
|
|
Relevant Coursework: Artificial Intelligence, Compilers, Operating Systems, Algorithms, Data
|
|
Structures, Computer Graphics
|
|
|
|
#section-header[Open-source Contributions]
|
|
|
|
|
|
#let just-url = "https://github.com/casey/just"
|
|
#let just-commits-url = "https://github.com/casey/just/commits?author=neunenak"
|
|
- I'm an occasional contributor to the #link(just-commits-url)[just] command runner (#link(just-url)[github.com/casey/just])
|
|
|
|
#let typst-url = "https://github.com/typst/typst"
|
|
#let leipzig-url = "https://code.everydayimshuflin.com/greg/typst-lepizig-glossing"
|
|
|
|
- I maintain a #link(typst-url)[typst] typesetting language package #link(leipzig-url)[leipzig-glossing] for linguistic interlinear glosses
|
|
|
|
#let untrusted-url = "http://alexnisnevich.github.io/untrusted/"
|
|
- #link(untrusted-url)[Untrusted] (#link(untrusted-url)[github.com/AlexNisnevich/untrusted]) is an open-source browser-based roguelike game. Every level is unbeatable and requires the player to modify the Javascript code defining the level in order to progress.
|
|
|
|
This started out as a college hackathon project by me and a friend, that we decided to keep working on and release publicly. A surprisingly large number of people around the world have contacted us telling us they've enjoyed playing it, or found it to be a fun and useful pedagogical tool for teaching programming skills.
|
|
|