Skip to content

Commit 5dd8362

Browse files
authored
Merge pull request #1 from morganwm/codex/update-resume-descriptions
Clean out deprecated resume files
2 parents 5f97d26 + 3173351 commit 5dd8362

4 files changed

Lines changed: 44 additions & 74 deletions

File tree

.github/workflows/build-resume.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ jobs:
2525
# Define variables for clarity
2626
DOWNLOAD_URL="https://www.gust.org.pl/projects/e-foundry/tex-gyre/heros/qhv2.004otf.zip"
2727
OUTPUT_FILE="tex-gyre-hero.zip"
28-
EXTRACT_DIR="tex_gyre_hero_fonts"
28+
EXTRACT_DIR="fonts"
2929
3030
# Use curl to download the file to the specified output file
31-
curl -sSL "$DOWNLOAD_URL" -o "$OUTPUT_FILE"
31+
curl -L "$DOWNLOAD_URL" -o "$OUTPUT_FILE"
3232
3333
# Create the extraction directory
3434
mkdir -p "$EXTRACT_DIR"
@@ -40,15 +40,15 @@ jobs:
4040
rm "$OUTPUT_FILE"
4141
4242
- name: Verify extracted files
43-
run: ls -R tex_gyre_hero_fonts
43+
run: ls -R fonts
4444

4545
- name: Install Typst
4646
uses: typst-community/setup-typst@v2
4747
with:
4848
version: latest
4949

5050
- name: Compile resume
51-
run: typst compile resume.typ ${{ env.FILE }} --font-path ./tex_gyre_hero_fonts
51+
run: typst compile resume.typ ${{ env.FILE }} --font-path ./fonts
5252

5353
- name: Upload PDF artifact
5454
uses: actions/upload-artifact@v4

resume.typ

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@
4343
#education-entry(
4444
edu-data.degree,
4545
edu-data.institution,
46-
edu-data.location,
4746
edu-data.date,
48-
edu-data.at("details", default: none),
4947
)
5048
]

src/content.typ

Lines changed: 35 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -15,57 +15,46 @@
1515
)
1616

1717
#let overview-description = [
18-
I have a wide variety of experience with different technologies and aspects of the stack, from lower-level services in Go, API backends in Python, Node, and Java, to CI/CD with both binaries and Docker Images, Kubernetes management both directly and with Helm, AWS infrastructure and orchestration. I also enjoy working with customers and alongside partner teams to get a better understanding of a problem and hopefully come up with a solution that addresses what matters instead of a symptom of the root problem.
19-
20-
In my current role within Apple, I have worked on several different applications and services which all share the same goal, taking the enormous amount of information generated by our factories and allowing people to do something useful. This has taken many forms, a distributed real-time platform written in Go to help feed fraud detection ML models, backends for advanced analytical platforms in Python using Ray to help researchers draw business value, and most recently a new method for extracting, collecting, and organizing unstructured data to feed the growing wildfire that is AI/ML training.
18+
Senior Software Engineer specializing in large-scale data platforms, distributed systems, and ML infrastructure. 10+ years building high-throughput ingestion pipelines, analytics platforms, and real-time inference systems in AWS and Kubernetes environments. Strong cross-functional partner experienced in translating ambiguous manufacturing and research requirements into resilient, production-grade systems.
2119
]
2220

2321
#let bear = (
24-
title: "Design and Implementation of Large Scale Data Ingestion and Movement for Apple Manufacturing Data",
25-
tools: "Golang, Linux tooling, Docker, AWS (S3, IAM), Python, Kafka, and exploration in Flink",
22+
title: "Distributed Data Ingestion & Edge Systems",
2623
bullets: (
27-
"Led Discovery and Requirements gathering from various hardware and testing customers",
28-
"Led Research into existing network and compute infrastructure at manufacturing sites",
29-
"Designed and Built a lightweight daemon in Go with tunable performance characteristics for use at manufacturing sites",
30-
"Designed a fault tolerant system for coordinating the daemons running remotely on-sites",
31-
"Set up various CI, Packaging, and CD pipelines to allow for deployment of services to very secure, isolated sites",
32-
"Built an initial MVP which served to collect several terabytes of targeted data for compliance and research purposes",
33-
"Worked with AWS Solutions Experts to design and implement 'IAM Credential Vending' to restrict access to S3 data dynamically",
24+
"Designed and implemented lightweight Go daemon deployed to secure manufacturing sites for high-volume data extraction",
25+
"Architected fault-tolerant coordination system for distributed edge nodes",
26+
"Delivered MVP collecting multiple terabytes of compliance and research data",
27+
"Designed IAM credential vending model with AWS to enforce dynamic S3 access controls",
28+
"Built CI/CD and packaging pipelines for deployment to isolated environments",
3429
),
3530
)
3631

3732
#let ipa-ray = (
38-
title: "Proof of Concept with AI/ML team for use of Ray with Data Analysis/Visualization Platform",
39-
tools: "Python, Ray, Docker/Containers, S3, Parquet, Redis, CI/CD",
33+
title: "ML Enablement & Ray Platform POC",
4034
bullets: (
41-
"Built Python library to wrap/shim existing tools for use with Ray Model Endpoint as a Service",
42-
"Developed sets of tools to connect Ray to our custom indexing and search for use with S3/Iceberg Data Lakehouse",
43-
"Worked with existing customers to build out a suite of tools allowing them to migrate and take advantage of the additional features provided by ray.",
35+
"Built Python abstractions enabling Ray-based distributed analysis",
36+
"Integrated Ray with custom search/indexing over Iceberg/S3",
37+
"Partnered with researchers to migrate workloads onto distributed compute",
4438
),
4539
)
4640

4741
#let insight-lab = (
48-
title: "Implementation of Data Lakehouse Platform for extremely large-scale analytics on Apple Manufacturing Data",
49-
tools: "Jupyter, Python, Spark, Kubernetes, Docker/Containers, Iceberg, Parquet, AWS (EKS, EC2, S3, IAM)",
42+
title: "Large-Scale Analytics & Lakehouse Architecture",
5043
bullets: (
51-
"Led coordination across teams to set up custom monitoring to ensure consistent performance.",
52-
"Worked with AWS to optimize node packing to reduce idle compute.",
53-
"Worked with users to determine requirements for a custom tooling to help them more easily use the platform.",
54-
"Led experimentation of secondary index methods leveraging Rust based Polars for rapid lookups.",
44+
"Co-led implementation of Iceberg-based data lakehouse for manufacturing analytics at scale",
45+
"Optimized Kubernetes node packing with AWS to reduce idle compute costs",
46+
"Developed custom indexing strategies using Rust/Polars for accelerated lookups",
47+
"Coordinated cross-team monitoring and performance standards",
5548
),
5649
)
5750

5851
#let argus = (
59-
title: "Highly Available/Scalable Realtime Inference Pipeline running on Apple Manufacturing Data",
60-
tools: "Grafana, Prometheus, Splunk, Spark, Kubernetes, Helm, Golang, Docker/Containers, Linux/UNIX Tooling, AWS (S3)",
52+
title: "Highly Available/Scalable Real-Time ML & Inference Infrastructure",
6153
bullets: (
62-
"Worked with users and data scientists to determine appropriate scope and requirements",
63-
"Set up pipeline to run arbitrary ML Docker Images on a combination of stored and incoming data in real-time (this was before it was cool and there were lots of tools to do it)",
64-
"Set up ELT pipeline for extracting and aggregating values from manufacturing data",
65-
"Worked with various operations teams to ensure best practices with CI/CD, HA, atomic/immutable deployments",
66-
"Wrote Custom self-contained forwarder (library and image) to connect monitoring tools to Apple internal Alerting",
67-
"Set up Monitoring/Logging Stack for distributed systems",
68-
"Developed libraries for maintaining compatibility with S3 Crypto for internal Apple Object Store",
54+
"Architected real-time ML pipeline capable of executing arbitrary containerized models",
55+
"Built ELT pipelines for structured aggregation of manufacturing telemetry",
56+
"Designed HA monitoring stack (Prometheus, Grafana, Splunk)",
57+
"Developed internal S3 crypto compatibility libraries",
6958
),
7059
)
7160

@@ -74,6 +63,7 @@
7463
company: "Apple (Manufacturing Data Insight)",
7564
location: "Austin, Texas",
7665
date: "May 2019 - Present",
66+
tools: "Go, Python, Kubernetes, Docker, AWS (EKS, EC2, S3, IAM), Linux Tooling, Kafka, Spark, Iceberg, Ray, Rust, Prometheus, Grafana",
7767
projects: (
7868
bear,
7969
ipa-ray,
@@ -82,25 +72,17 @@
8272
),
8373
)
8474

85-
#let social-solutions-sr = (
86-
title: "Senior Software Engineer, Architecture",
75+
#let social-solutions = (
76+
title: "Senior Software Engineer",
8777
company: "Social Solutions Global",
8878
location: "Austin, Texas",
89-
date: "October 2018 - May 2019",
79+
date: "May 2018 - May 2019",
80+
tools: "Node, Docker, GraphQL, React, AWS (Cognito, Lambda, ECS, DynamoDB, CloudFormation, CloudWatch, CloudTrail)",
9081
bullets: (
9182
"Technical Lead for Ecommerce Team",
92-
"Designed and Led Development on Identity Server with integrated MFA and email Domain verification [Cognito, Lambda]",
93-
),
94-
)
95-
96-
#let social-solutions-dev = (
97-
title: "Full-Stack Software Developer",
98-
company: "Social Solutions Global",
99-
location: "Austin, Texas",
100-
date: "May 2018 - October 2018",
101-
bullets: (
102-
"Designed and developed an Enterprise grade (over $1 Million in pipeline per quarter) serverless Ecommerce Platform for SaaS hosted in AWS [CloudFormation, Lambda, DynamoDB]",
103-
"Designed and developed an Account Management platform for Enterprise SaaS applications. [ECS, Docker, GraphQL]",
83+
"Designed and Led Development on Identity Server with integrated MFA and email Domain verification",
84+
"Designed and developed an Enterprise grade (over $1 Million in pipeline per quarter) serverless Ecommerce Platform for SaaS hosted in AWS",
85+
"Designed and developed an Account Management platform for Enterprise SaaS applications.",
10486
),
10587
)
10688

@@ -109,9 +91,10 @@
10991
company: "Axial Commerce",
11092
location: "Austin, Texas",
11193
date: "October 2017 - May 2018",
94+
tools: "C# Dotnet Core, React, Azure Pipelines",
11295
bullets: (
11396
"Developed and maintained an MVC structured web application with C# .NET Core backend and React.JS frontend, hosted in Azure",
114-
"Automated CI/CD pipelines for the website/API and apps to the Google Play Store and Apple App Store [Azure Pipelines]",
97+
"Automated CI/CD pipelines for the website/API and apps to the Google Play Store and Apple App Store",
11598
),
11699
)
117100

@@ -129,18 +112,15 @@
129112

130113
#let work-experience = (
131114
apple,
132-
social-solutions-sr,
133-
social-solutions-dev,
115+
social-solutions,
134116
axial,
135117
dow,
136118
)
137119

138120
#let education = (
139121
(
140-
degree: "Bachelors of Engineering: Mechanical Engineering",
141-
institution: "The University of Texas",
142-
location: "Austin, Texas",
143-
date: "2011-2015",
144-
details: (),
122+
degree: "B.S. Mechanical Engineering",
123+
institution: "The University of Texas as Austin",
124+
date: "2015",
145125
),
146126
)

src/templates.typ

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@
4747
}
4848

4949
#let job(title, company, location, date, tools, bullets) = {
50-
block(breakable: true)[
50+
block(breakable: false)[
5151
#grid(
5252
columns: (1fr, auto),
53-
align(left)[#text(weight: "bold")[#title] -- #company], align(right)[#text(style: "italic")[#location -- #date]],
53+
align(left)[#text(weight: "bold")[#title] -- #company], align(right)[#text(style: "italic")[#location | #date]],
5454
)
5555
#if tools != none [
5656
#v(-0.5em)
@@ -77,18 +77,10 @@
7777
v(0.5em)
7878
}
7979

80-
#let education-entry(degree, institution, location, date, details) = {
80+
#let education-entry(degree, institution, date) = {
8181
block(breakable: false)[
82-
#grid(
83-
columns: (1fr, auto),
84-
align(left)[#text(weight: "bold")[#degree]], align(right)[#text(style: "italic")[#location -- #date]],
85-
)
86-
#text(style: "italic")[#institution]
87-
#if details != none [
88-
#for detail in details [
89-
- #detail
90-
]
91-
]
82+
#text(weight: "bold")[#degree] \
83+
#text(style: "italic")[#institution] | #date
9284
]
9385
v(0.5em)
9486
}

0 commit comments

Comments
 (0)