diff --git a/icons/house.svg b/icons/house.svg
new file mode 100644
index 0000000..1628fda
--- /dev/null
+++ b/icons/house.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/location-dot.svg b/icons/location-dot.svg
new file mode 100644
index 0000000..78e7bb0
--- /dev/null
+++ b/icons/location-dot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/phone.svg b/icons/phone.svg
new file mode 100644
index 0000000..0dc00a4
--- /dev/null
+++ b/icons/phone.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/square-envelope.svg b/icons/square-envelope.svg
new file mode 100644
index 0000000..f00fd01
--- /dev/null
+++ b/icons/square-envelope.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/square-git.svg b/icons/square-git.svg
new file mode 100644
index 0000000..4ac7874
--- /dev/null
+++ b/icons/square-git.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/justfile b/justfile
index 78ab9dd..c9706b3 100644
--- a/justfile
+++ b/justfile
@@ -1,6 +1,9 @@
default:
just --list
+build_resume_typ:
+ ~/code/external/typst/target/release/typst resume.typ
+
build_resume:
lualatex -jobname "Greg Shuflin resume" resume.tex
just clean
diff --git a/resume.typ b/resume.typ
new file mode 100644
index 0000000..d47c0ce
--- /dev/null
+++ b/resume.typ
@@ -0,0 +1,104 @@
+#set page("us-letter", margin: 0.5in)
+#set text(font: "Inter") // Note - not quite the font from my old resume
+#show link: orig => text(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.shuflin@protonmail.com")[greg.shuflin\@protonmail.com])
+ #h(1em)
+ #icon-item("phone.svg")[510-332-6344]\
+ #icon-item("house.svg", link("https://greg.everydayimshuflin.com"))
+ #h(1em)
+ #icon-item("square-git.svg")[
+ #link("https://git.everydayimshuflin.com")[git.everydayimshuflin.com],
+ #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, Elm, Scala. I’ve been writing Rust since before the 1.0 release in 2015.
+
+- Linux system administration for production cloud environments, Docker containerization, AWS/Terraform/CDK. I run a 4U VM server on a shelf in my kitchen for personal projects.
+
+- Full-stack web development in multiple frameworks/languages, particularly Python ecosystem. Frontend web development in the modern Javascript/Typescript ecosystem.
+
+- Network programming and troubleshooting, hardware and software packet processing, embedded Linux hardware bringup, writing clear and maintainable C and C++. Can solder if necessary.
+
+#section-header([Professional Experience])
+
+#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 docuemntation 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 early-stage startup (\textless 10 employees) 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 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.
+