Merge branch 'main' into demo/reactable
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: About Me
|
||||
date: 2023-11-08T10:22:23-08:00
|
||||
date: 2026-03-24T22:22:23-08:00
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,799 @@
|
||||
---
|
||||
title: "Resume"
|
||||
layout: "single"
|
||||
url: /about/resume/
|
||||
---
|
||||
|
||||
<style>
|
||||
/* resume.css — Classicthesis-inspired résumé stylesheet
|
||||
*
|
||||
* Web-native translation of the LaTeX classicthesis aesthetic:
|
||||
* Palatino serif, maroon accents, spaced small caps headings,
|
||||
* margin-note grid layout for employer/institution names.
|
||||
*
|
||||
* Aligned with resume.sty — geometry, spacing constants, and
|
||||
* typographic commands mirror the LaTeX counterparts.
|
||||
*/
|
||||
|
||||
/* Font Awesome — loaded for contact service icons (fa-envelope, fa-github, etc.)
|
||||
Mirrors \RequirePackage{fontawesome5} in resume.sty */
|
||||
@import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css");
|
||||
|
||||
/* ====================================================================
|
||||
Custom properties
|
||||
(mirrors \resumeSectionSkip, \resumeEntrySkip, \resumeBlockSkip,
|
||||
\resumeDescriptionSkip, \resumePositionSkip, \datebox widths, and
|
||||
the geometry: marginparwidth=4cm, marginparsep=0.75cm → ~15em / 1.4em
|
||||
at 10pt base. Numbers scaled to a 16px/1rem web base.)
|
||||
==================================================================== */
|
||||
|
||||
:root {
|
||||
/* Colors — aligned with PaperMod theme-vars.css for light mode */
|
||||
--resume-accent: var(--primary, rgb(30, 30, 30));
|
||||
--resume-halfgray: var(--secondary, rgb(108, 108, 108));
|
||||
--resume-text: var(--content, rgb(31, 31, 31));
|
||||
--resume-text-heading: var(--primary, rgb(30, 30, 30));
|
||||
--resume-bg: var(--theme, rgb(255, 255, 255));
|
||||
--resume-border: var(--border, rgb(238, 238, 238));
|
||||
--resume-muted: var(--secondary, rgb(108, 108, 108));
|
||||
|
||||
/* Font stack — TeX Gyre Pagella / Palatino family */
|
||||
--resume-font: "TeX Gyre Pagella", "Palatino Linotype", Palatino,
|
||||
"Book Antiqua", Georgia, serif;
|
||||
|
||||
/* Layout — mirrors LaTeX geometry left=5.5cm, marginparwidth=4cm,
|
||||
marginparsep=0.75cm at ~10pt. Converted to em at 16px base. */
|
||||
--resume-margin-width: 10em; /* ~4 cm at 10pt */
|
||||
--resume-margin-gap: 1.2em; /* ~0.75 cm */
|
||||
/* Left page margin — body text indented this far from the content edge.
|
||||
Margin note + gap live within this space (mirrors left=5.5cm in LaTeX). */
|
||||
--resume-left-margin: calc(var(--resume-margin-width) + var(--resume-margin-gap));
|
||||
|
||||
/* \datebox: wide enough for "Sep 2049–May 2049" at \small */
|
||||
--resume-date-width: 8.5em;
|
||||
|
||||
/* Vertical rhythm — mirrors spacing options (normal, not compact) */
|
||||
--resume-section-skip: 1.0em; /* \resumeSectionSkip */
|
||||
--resume-entry-skip: 0.5em; /* \resumeEntrySkip */
|
||||
--resume-block-skip: 1.0em; /* \resumeBlockSkip */
|
||||
--resume-description-skip: 0.8em; /* \resumeDescriptionSkip */
|
||||
--resume-position-skip: 0.35em;/* \resumePositionSkip */
|
||||
|
||||
/* Body */
|
||||
--resume-line-height: 1.05; /* \linespread{1.05} */
|
||||
--resume-max-width: 860px;
|
||||
}
|
||||
|
||||
/* ====================================================================
|
||||
Base
|
||||
==================================================================== */
|
||||
|
||||
html { font-size: 100%; }
|
||||
|
||||
body {
|
||||
font-family: var(--resume-font);
|
||||
line-height: var(--resume-line-height);
|
||||
color: var(--resume-text);
|
||||
background: var(--resume-bg);
|
||||
max-width: var(--resume-max-width);
|
||||
margin: 2em auto;
|
||||
padding: 0 1.5em;
|
||||
}
|
||||
|
||||
/* ====================================================================
|
||||
Title — \spacedallcaps → uppercase + letter-spacing, Maroon, LARGE
|
||||
(\resumeTitle uses \LARGE\color{Maroon}\spacedallcaps)
|
||||
==================================================================== */
|
||||
|
||||
header h1,
|
||||
h1.title {
|
||||
text-align: center;
|
||||
color: var(--resume-accent);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.16em; /* \textls[160] ≈ 0.16 em */
|
||||
font-weight: normal;
|
||||
font-size: 1.75em; /* \LARGE at 10pt ≈ 14.4pt; 1.75em ≈ 28px */
|
||||
margin-bottom: var(--resume-entry-skip);
|
||||
}
|
||||
|
||||
/* Hide Pandoc subtitle/author/date if present */
|
||||
header .subtitle,
|
||||
header .author,
|
||||
header .date { display: none; }
|
||||
|
||||
/* ====================================================================
|
||||
Section headings — \spacedlowsmallcaps + \small + halfgray rule
|
||||
(\resumeGenericSection: \small\spacedlowsmallcaps + 0.4pt gray rule)
|
||||
==================================================================== */
|
||||
|
||||
.resume-section-heading {
|
||||
font-variant: small-caps;
|
||||
text-transform: lowercase; /* \MakeTextLowercase for small-caps */
|
||||
letter-spacing: 0.08em; /* \textls[80] ≈ 0.08 em */
|
||||
font-weight: normal;
|
||||
font-size: 0.95em; /* \small inside body text */
|
||||
color: var(--resume-text-heading);
|
||||
margin-top: var(--resume-section-skip);
|
||||
margin-bottom: 0.2em; /* 0.2em gap before rule (was 0.15→0.2 per CHANGE 1) */
|
||||
}
|
||||
|
||||
/* Ensure spacing between consecutive sections doesn't collapse with
|
||||
bullet-list margins at the end of the previous section. */
|
||||
section + section { padding-top: var(--resume-section-skip); }
|
||||
|
||||
section > hr {
|
||||
border: none;
|
||||
border-bottom: 0.4pt solid var(--resume-border); /* \color{halfgray}\rule{...}{0.4pt} */
|
||||
margin: 0 0 var(--resume-entry-skip);
|
||||
}
|
||||
|
||||
/* ====================================================================
|
||||
Margin-note grid
|
||||
(mirrors \MarginText / \MarginName in the left-margin column)
|
||||
==================================================================== */
|
||||
|
||||
/* Margin-note grid — pulls the entire block left so the margin note
|
||||
occupies the body's left padding, and the main column aligns with
|
||||
all other body text. Mirrors \reversemarginpar + left=5.5cm layout.
|
||||
Multiple grid rows are allowed; each .resume-margin-note and
|
||||
.resume-main-col pair occupies one implicit row. */
|
||||
.resume-employer,
|
||||
.resume-institution {
|
||||
display: grid;
|
||||
grid-template-columns: var(--resume-margin-width) 1fr;
|
||||
gap: 0 var(--resume-margin-gap);
|
||||
margin-left: calc(-1 * var(--resume-left-margin));
|
||||
margin-bottom: var(--resume-block-skip);
|
||||
align-items: start;
|
||||
}
|
||||
|
||||
/* Location-only margin note row — left column only, right column empty */
|
||||
.resume-margin-note--location {
|
||||
grid-column: 1;
|
||||
margin-top: 0.4em;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.resume-margin-note {
|
||||
text-align: right;
|
||||
font-style: italic;
|
||||
font-size: 0.9em;
|
||||
padding-top: 0.15em;
|
||||
color: var(--resume-muted);
|
||||
}
|
||||
|
||||
.resume-margin-note a {
|
||||
color: var(--resume-text-heading);
|
||||
}
|
||||
|
||||
/* Location line inside the margin note — below employer name.
|
||||
Mirrors \footnotesize\upshape in the LaTeX margin text. */
|
||||
.resume-margin-location {
|
||||
display: block;
|
||||
font-style: normal; /* \upshape — cancel the italic of the note */
|
||||
font-size: 0.8em; /* \footnotesize */
|
||||
color: var(--resume-muted);
|
||||
margin-top: 0.25em;
|
||||
}
|
||||
|
||||
/* When a position overrides the employer location, a sibling div appears
|
||||
just before .resume-position inside .resume-main-col. It uses negative
|
||||
margin to pull its content visually back into the left column. */
|
||||
.resume-margin-location-override {
|
||||
margin-left: calc(-1 * (var(--resume-margin-width) + var(--resume-margin-gap)));
|
||||
width: var(--resume-margin-width);
|
||||
text-align: right;
|
||||
margin-bottom: 0.15em;
|
||||
}
|
||||
|
||||
.resume-main-col { min-width: 0; }
|
||||
|
||||
/* ====================================================================
|
||||
Employment / position entries
|
||||
(\resumePosition: \parbox{\datebox}{\small\textit{#2--#3}} + \textbf{#1})
|
||||
CHANGE 2: position title is now bold (\textbf added in .sty)
|
||||
==================================================================== */
|
||||
|
||||
.resume-entry-header {
|
||||
margin-bottom: 0.25em;
|
||||
}
|
||||
|
||||
.resume-date {
|
||||
display: inline-block;
|
||||
min-width: var(--resume-date-width);
|
||||
font-style: italic;
|
||||
font-size: 0.9em; /* \small in LaTeX */
|
||||
}
|
||||
|
||||
/* CHANGE 2: bold title (was font-weight: normal) */
|
||||
.resume-position-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.resume-position {
|
||||
margin-bottom: var(--resume-position-skip);
|
||||
}
|
||||
|
||||
/* ====================================================================
|
||||
Education entries
|
||||
(\resumeEducation: margin note = institution; \textbf{degree} CHANGE 3)
|
||||
==================================================================== */
|
||||
|
||||
.resume-institution {
|
||||
margin-bottom: var(--resume-entry-skip);
|
||||
}
|
||||
|
||||
/* CHANGE 3: degree/program title bold (mirrors \textbf added in .sty) */
|
||||
.resume-degree-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.resume-edu-detail {
|
||||
font-size: 0.9em; /* \small for the detail line */
|
||||
margin-top: 0.15em;
|
||||
padding-left: calc(var(--resume-date-width) + 1.5em); /* aligns with title */
|
||||
}
|
||||
|
||||
/* ====================================================================
|
||||
Links — Maroon
|
||||
==================================================================== */
|
||||
|
||||
a {
|
||||
color: var(--resume-text-heading);
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover { text-decoration: underline; }
|
||||
|
||||
/* ====================================================================
|
||||
Contact section
|
||||
(\resumeContactLineOne/Two; \faMapMarker, \faPhone*, icon + separator)
|
||||
==================================================================== */
|
||||
|
||||
.resume-contact address {
|
||||
font-style: normal;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
/* Inline contact items separated by halfgray · (mirrors \cdot) */
|
||||
.resume-contact-list {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0 0 0.5em;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0 0;
|
||||
}
|
||||
|
||||
.resume-contact-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/* · separator between items (mirrors \enspace{\color{halfgray}$\cdot$}\enspace) */
|
||||
.resume-contact-item + .resume-contact-item::before {
|
||||
content: "·";
|
||||
color: var(--resume-halfgray);
|
||||
margin: 0 0.45em;
|
||||
}
|
||||
|
||||
.resume-contact-icon {
|
||||
color: var(--resume-halfgray); /* \color{halfgray} on icons */
|
||||
font-size: 0.85em;
|
||||
display: inline-block;
|
||||
width: 1.2em;
|
||||
text-align: center;
|
||||
margin-right: 0.35em;
|
||||
}
|
||||
|
||||
/* FA icons in contact items — halfgray, matching \large\color{halfgray} */
|
||||
.resume-contact-item i {
|
||||
color: var(--resume-halfgray);
|
||||
font-size: 0.9em;
|
||||
width: 1.2em;
|
||||
text-align: center;
|
||||
margin-right: 0.2em;
|
||||
}
|
||||
|
||||
/* Service icons — line 2 (\resumeService: \large\color{halfgray} icon + \quad) */
|
||||
.resume-contact-services {
|
||||
display: flex;
|
||||
gap: 0.9em; /* mirrors \quad between service entries */
|
||||
margin-bottom: var(--resume-entry-skip);
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.resume-contact-services a {
|
||||
color: var(--resume-halfgray); /* \large\color{halfgray} icon */
|
||||
font-size: 1.1em; /* \large */
|
||||
}
|
||||
|
||||
.resume-contact-services a:hover {
|
||||
color: var(--resume-text-heading);
|
||||
}
|
||||
|
||||
/* ====================================================================
|
||||
Publications
|
||||
(\resumePublication: author. ``Title.'' \textit{Venue}, Year.)
|
||||
==================================================================== */
|
||||
|
||||
.resume-publication {
|
||||
margin-bottom: var(--resume-description-skip);
|
||||
padding-left: 2em;
|
||||
text-indent: -2em; /* \hangindent=2em\hangafter=0 */
|
||||
}
|
||||
|
||||
.resume-pub-authors { font-variant: normal; }
|
||||
.resume-pub-venue { font-style: italic; }
|
||||
|
||||
/* ====================================================================
|
||||
Projects, Certifications, Awards, Volunteer
|
||||
(\resumeProject etc.: \parbox{\datebox} + \textbf{title} + italic role)
|
||||
==================================================================== */
|
||||
|
||||
.resume-project,
|
||||
.resume-certification,
|
||||
.resume-award,
|
||||
.resume-volunteer-entry {
|
||||
margin-bottom: var(--resume-entry-skip);
|
||||
padding-left: 2em;
|
||||
text-indent: -2em; /* \hangindent=2em */
|
||||
}
|
||||
|
||||
/* Bold name mirrors \textbf{#1} in all misc entry commands */
|
||||
.resume-project-title,
|
||||
.resume-certification-title,
|
||||
.resume-award-title,
|
||||
.resume-volunteer-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Italic role/issuer mirrors ~--- \textit{#2} */
|
||||
.resume-project-role,
|
||||
.resume-certification-issuer,
|
||||
.resume-award-source,
|
||||
.resume-volunteer-org {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.resume-award-desc {
|
||||
margin: 0.15em 0 0.3em;
|
||||
font-size: 0.95em;
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
/* ====================================================================
|
||||
Description lists (Skills, Languages)
|
||||
(\resumeLanguage / \resumeSkillCategory with \MarginText for category)
|
||||
==================================================================== */
|
||||
|
||||
.resume-dl {
|
||||
display: grid;
|
||||
grid-template-columns: max-content 1fr;
|
||||
gap: 0.15em 1em;
|
||||
margin: 0.3em 0;
|
||||
}
|
||||
|
||||
.resume-dl dt {
|
||||
font-weight: bold;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.resume-dl dd { margin: 0; }
|
||||
|
||||
/* ====================================================================
|
||||
Prose lists (bullet points under positions, etc.)
|
||||
(\labelitemi → \textbullet, \labelitemii → \textendash; nosep list)
|
||||
==================================================================== */
|
||||
|
||||
section ul,
|
||||
.resume-main-col ul {
|
||||
list-style-type: disc; /* \textbullet */
|
||||
margin: 0.25em 0 0.4em; /* topsep=0.25em */
|
||||
padding-left: 2em; /* leftmargin=2em */
|
||||
}
|
||||
|
||||
section ul ul,
|
||||
.resume-main-col ul ul {
|
||||
list-style-type: "\2013\00a0"; /* \textendash for level 2 */
|
||||
}
|
||||
|
||||
section li,
|
||||
.resume-main-col li {
|
||||
margin-bottom: 0.1em; /* itemsep=0.1em */
|
||||
line-height: var(--resume-line-height);
|
||||
}
|
||||
|
||||
/* ====================================================================
|
||||
Responsive — collapse margin grid below 48em
|
||||
==================================================================== */
|
||||
|
||||
@media (max-width: 48em) {
|
||||
body {
|
||||
padding-left: 1.5em;
|
||||
}
|
||||
|
||||
.resume-employer,
|
||||
.resume-institution,
|
||||
.resume-dl {
|
||||
display: block;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.resume-margin-note {
|
||||
text-align: left;
|
||||
font-size: 1em;
|
||||
font-weight: bold;
|
||||
margin-bottom: 0.15em;
|
||||
}
|
||||
|
||||
.resume-dl dt {
|
||||
margin-top: 0.3em;
|
||||
}
|
||||
|
||||
.resume-dl dd { margin-left: 1em; }
|
||||
|
||||
.resume-entry-header,
|
||||
.resume-project,
|
||||
.resume-certification,
|
||||
.resume-award,
|
||||
.resume-volunteer-entry,
|
||||
.resume-publication {
|
||||
padding-left: 0;
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
.resume-edu-detail { padding-left: 0; }
|
||||
|
||||
.resume-contact-list { flex-direction: column; }
|
||||
.resume-contact-item + .resume-contact-item::before { display: none; }
|
||||
}
|
||||
|
||||
/* ====================================================================
|
||||
Print
|
||||
(\pagestyle{empty}; avoid breaks; link URLs after text)
|
||||
==================================================================== */
|
||||
|
||||
@media print {
|
||||
body {
|
||||
max-width: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-size: 10pt;
|
||||
color: #000;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Show link URLs (mirrors hyperref behaviour in PDF) */
|
||||
a[href^="http"]::after {
|
||||
content: " (" attr(href) ")";
|
||||
font-size: 0.8em;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
/* \break-inside avoid on all entry types */
|
||||
section { break-inside: avoid; }
|
||||
.resume-employer,
|
||||
.resume-institution,
|
||||
.resume-position,
|
||||
.resume-project,
|
||||
.resume-certification,
|
||||
.resume-award,
|
||||
.resume-volunteer-entry,
|
||||
.resume-publication { break-inside: avoid; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<section class="resume-introduction">
|
||||
<h2 class="resume-section-heading">Profile</h2>
|
||||
<hr>
|
||||
<p>Data and analytics leader who builds measurement capabilities from
|
||||
the ground up — and then builds the teams to run them. Across gaming,
|
||||
energy, financial services, and media, the pattern is the same: inherit
|
||||
“we have no data,” and leave behind production pipelines, statistical
|
||||
models, and analytical teams that make better decisions at scale.
|
||||
Promoted four levels in three years at EA managing cross-functional
|
||||
analytics organizations. Since leaving EA, completed Wharton’s CTO
|
||||
Program and took on founding-team roles at early-stage companies to stay
|
||||
close to the technical work. Ready to bring that combination of
|
||||
organizational leadership and hands-on depth back to a team that takes
|
||||
measurement seriously.</p>
|
||||
</section>
|
||||
<section class="resume-employment">
|
||||
<h2 class="resume-section-heading">Work Experience</h2>
|
||||
<hr>
|
||||
<div class="resume-employer">
|
||||
<div class="resume-margin-note"><a href="https://quadrant4.com">Quadrant 4</a><span class="resume-margin-location">Walnut Creek, CA</span></div>
|
||||
<div class="resume-main-col">
|
||||
<div class="resume-position">
|
||||
<div class="resume-entry-header"><span class="resume-date">Apr 2025 – present</span> <span class="resume-position-title">Head of Data and Signals</span></div>
|
||||
<p>Joined as employee number one at a startup whose core product
|
||||
<em>is</em> measurement — permissioned intent signals from engaged users
|
||||
that outperform the lagging behavioral data dominating ad targeting
|
||||
today. Built the entire technical and analytical foundation needed to
|
||||
prove and deliver that value proposition.</p>
|
||||
<ul>
|
||||
<li><em>Built the full backend and analytics stack solo.</em> Backend
|
||||
services platform, analytics infrastructure, dbt/DuckDB data warehouse,
|
||||
Quarto dashboards, and GKE/GCE cloud deployment with CI/CD — all from
|
||||
scratch.</li>
|
||||
<li><em>Rooted company strategy in measurable lifecycle economics.</em>
|
||||
Applied CLV frameworks before founding to turn an abstract thesis into a
|
||||
concrete, testable claim — and defined the metrics needed to prove
|
||||
it.</li>
|
||||
<li><em>Architected a platform that made new services trivial to
|
||||
build.</em> A transport-agnostic FaaS framework with 13+ reusable
|
||||
modules (async PostgreSQL, circuit-breaking, HTTP clients) reduced new
|
||||
service build time to under a day — proven by an SKAN postback ingestion
|
||||
service and an MCP server.</li>
|
||||
<li><em>Delivered early unit economics visibility.</em> Dagster
|
||||
orchestration over a warehouse covering costs, user behavior, and
|
||||
acquisition performance, plus an MCP server giving business users
|
||||
natural-language access to metrics without SQL.</li>
|
||||
<li><em>Prototyped AI conversation guidance via soft state
|
||||
machines.</em> Replaced rigid scripted flows with probabilistic state
|
||||
transitions, producing more realistic conversations and measurably
|
||||
higher engagement.</li>
|
||||
<li><em>Ran Meta user acquisition end-to-end.</em> Expanded into new
|
||||
Comscore geographies, hit industry benchmark CPRs within weeks through
|
||||
systematic creative testing, and fixed upper-funnel conversion
|
||||
leaks.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="resume-employer">
|
||||
<div class="resume-margin-note"><a href="https://www.idenza.ai">Idenza</a><span class="resume-margin-location">Bay Area, CA</span></div>
|
||||
<div class="resume-main-col">
|
||||
<div class="resume-position">
|
||||
<div class="resume-entry-header"><span class="resume-date">Oct 2024 – May 2025</span> <span class="resume-position-title">Founding Engineer</span></div>
|
||||
<p>Joined a fintech startup as a founding engineer to build core fraud
|
||||
detection infrastructure — delivering a production-ready rules engine
|
||||
and API layer before determining the role wasn’t aligned with my
|
||||
trajectory as a data and analytics leader.</p>
|
||||
<ul>
|
||||
<li><em>Built a policy-driven fraud detection engine for enterprise
|
||||
scale.</em> A service that generates Drools DRL rules dynamically from
|
||||
JSON definitions lets financial institutions encode their own policies
|
||||
without engineering involvement; a companion classification service
|
||||
evaluates complex multi-rule transactions in under 10 milliseconds.</li>
|
||||
<li><em>Delivered the backend API gateway and integration layer.</em>
|
||||
Built in Python with PostgreSQL, connecting the front end to the rules
|
||||
engine and leaving the system ready for client onboarding.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="resume-employer">
|
||||
<div class="resume-margin-note"><a href="https://www.astrocade.com">Astrocade</a><span class="resume-margin-location">Los Altos, CA</span></div>
|
||||
<div class="resume-main-col">
|
||||
<div class="resume-position">
|
||||
<div class="resume-entry-header"><span class="resume-date">Feb 2024 – Oct 2024</span> <span class="resume-position-title">Data Scientist</span></div>
|
||||
<p>Sole data scientist at a 20-person AI gaming startup — brought in as
|
||||
a contractor and converted to full-time based on results — responsible
|
||||
for building the company’s measurement capability from zero and
|
||||
translating data into product decisions for the CEO.</p>
|
||||
<ul>
|
||||
<li><em>Built the measurement foundation where none existed.</em>
|
||||
Defined telemetry specifications, selected and onboarded analytics
|
||||
vendors (Amplitude, Statsig), and built the pipelines that gave the
|
||||
company its first visibility into user behavior and product
|
||||
performance.</li>
|
||||
<li><em>Improved first-user experience through systematic
|
||||
experimentation.</em> A/B and bandit-style tests on onboarding and game
|
||||
design led to a simplified FUE flow with materially better completion
|
||||
and engagement rates.</li>
|
||||
<li><em>Identified and activated the core user base.</em> Behavioral
|
||||
analysis surfaced the highest-value users; a user council channeled
|
||||
their feedback directly into the product roadmap.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="resume-employer">
|
||||
<div class="resume-margin-note"><a href="https://ea.com">Glu Mobile / Electronic Arts</a><span class="resume-margin-location">San Francisco, CA</span></div>
|
||||
<div class="resume-main-col">
|
||||
<div class="resume-position">
|
||||
<div class="resume-entry-header"><span class="resume-date">Mar 2022 – May 2023</span> <span class="resume-position-title">Senior Director of Growth Analytics and Data Science</span></div>
|
||||
<p>Promoted four levels in three years (Manager → Senior Director),
|
||||
ultimately leading business intelligence, marketing analytics, and data
|
||||
science while on the leadership team of a 250-person organization —
|
||||
responsible for the measurement systems that shaped product and
|
||||
marketing decisions at EA Mobile scale.</p>
|
||||
<ul>
|
||||
<li><em>Saved $100M in marketing spend at a major game launch.</em>
|
||||
Identified and demonstrated that the incumbent forecasting methodology
|
||||
would produce bad decisions, convened a cross-functional team, and
|
||||
implemented a transition state model for cohort growth forecasting as an
|
||||
R package.</li>
|
||||
<li><em>Turned re-engagement marketing from a cost center into a profit
|
||||
driver.</em> An embedded analytics team transformed campaigns from
|
||||
money-losing giveaways into programs generating 200% ROI through
|
||||
continuous measurement and improvement cycles.</li>
|
||||
<li><em>Grew revenue by 5%+ through portfolio-level budget
|
||||
optimization.</em> Analysis revealed reallocation opportunities across
|
||||
acquisition channels — a significant impact on a budget in the tens of
|
||||
millions.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="resume-position">
|
||||
<div class="resume-entry-header"><span class="resume-date">May 2020 – Mar 2022</span> <span class="resume-position-title">Director of Analytics and Data Science</span></div>
|
||||
<ul>
|
||||
<li><em>Cut marketing analysis effort in half.</em> Led a
|
||||
cross-functional modernization of the BI practice, migrating from
|
||||
Hive/Hadoop to a scalable cloud data warehouse with analytics-friendly
|
||||
schemas.</li>
|
||||
<li><em>Navigated Apple’s ATT initiative to protect acquisition
|
||||
budgets.</em> Built new SKAdNetwork pipelines and analytical strategies
|
||||
that maintained iOS advertising budgets while competitors pulled
|
||||
back.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="resume-position">
|
||||
<div class="resume-entry-header"><span class="resume-date">Mar 2020 – May 2020</span> <span class="resume-position-title">Manager, Analytics</span></div>
|
||||
<ul>
|
||||
<li><em>Transformed analysts from order-takers into strategic
|
||||
partners.</em> Created space for analysts to explore beyond PM requests
|
||||
— leading to techniques like fixed-effects models that surfaced insights
|
||||
PMs would never have thought to request.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="resume-employer">
|
||||
<div class="resume-margin-note"><a href="https://askmediagroup.com">Ask Media Group</a><span class="resume-margin-location">Oakland, CA</span></div>
|
||||
<div class="resume-main-col">
|
||||
<div class="resume-position">
|
||||
<div class="resume-entry-header"><span class="resume-date">2019 – 2020</span> <span class="resume-position-title">Director, Data Science</span></div>
|
||||
<p>Led cross-functional data science teams across product and
|
||||
engineering, steering through written technical leadership — defining
|
||||
scope, acceptance criteria, and strategic direction in prose while
|
||||
delivering measurable improvements to search and content systems.</p>
|
||||
<ul>
|
||||
<li><em>Rescued a broken related search project.</em> Inherited a system
|
||||
returning “iPhone 4” for “iPhone” queries after six months of
|
||||
development. Two months after redefining acceptance criteria, automating
|
||||
the build, and purging stale data, the system was ready for deployment
|
||||
on a product targeted at $500K+ annual revenue.</li>
|
||||
<li><em>Reduced vertical search site build time from three months to
|
||||
three days.</em> Directed development of a tool automating index
|
||||
construction for narrow-topic search sites.</li>
|
||||
<li><em>Introduced Bayesian A/B testing where no testing capability
|
||||
existed.</em> Built the company’s first mechanism for measuring product
|
||||
improvements.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="resume-position">
|
||||
<div class="resume-entry-header"><span class="resume-date">Oct 2018 – Dec 2019</span> <span class="resume-position-title">Data Science Manager</span></div>
|
||||
</div>
|
||||
<div class="resume-position">
|
||||
<div class="resume-entry-header"><span class="resume-date">Aug 2018 – Oct 2018</span> <span class="resume-position-title">Data Evaluation Manager</span></div>
|
||||
<ul>
|
||||
<li><em>Transformed an analytics team into a delivery-oriented data
|
||||
science team.</em> Adopted Scrum and built GitLab CI/CD pipelines to
|
||||
increase delivery cadence.</li>
|
||||
<li><em>Opened digital marketing to data science.</em> Championed a
|
||||
keyword bidding project that produced automated auction data extraction
|
||||
and bid adjustment within two months.</li>
|
||||
<li><em>Built content moderation tooling at scale.</em> A word-vector
|
||||
classifier for out-of-policy text let editors focus attention where it
|
||||
was most needed.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="resume-employer">
|
||||
<div class="resume-margin-note"><a href="https://dnv.com">DNV</a><span class="resume-margin-location">Oakland, CA</span><span class="resume-margin-location">Høvik, Norway</span></div>
|
||||
<div class="resume-main-col">
|
||||
<div class="resume-position">
|
||||
<div class="resume-entry-header"><span class="resume-date">2016 – 2017</span> <span class="resume-position-title">Senior Data Scientist</span></div>
|
||||
<p>Selected for the Analytics Innovation Centre — a small group
|
||||
assembled for rapid iteration on the company’s digital transformation
|
||||
agenda — and worked directly with the executive committee to shape
|
||||
strategy.</p>
|
||||
<ul>
|
||||
<li><em>Defined requirements and built initial prototypes for
|
||||
Veracity,</em> the company’s marquee data platform connecting business
|
||||
consumers and suppliers.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="resume-position">
|
||||
<div class="resume-entry-header"><span class="resume-date">2011 – 2016</span> <span class="resume-position-title">Head of Section for Analytics and Senior Consultant</span></div>
|
||||
<p>Led the west coast analytics group in a first management role,
|
||||
combining technical leadership on large-scale energy data problems with
|
||||
business development and direct client delivery for major utilities and
|
||||
grid operators.</p>
|
||||
<ul>
|
||||
<li><em>Estimated peak savings for a CPUC energy efficiency program</em>
|
||||
across 40,000+ utility customers using years of hourly interval data
|
||||
distributed across a Hadoop cluster.</li>
|
||||
<li><em>Built a short-term renewable generation forecasting model</em>
|
||||
operating at five-minute intervals to reduce grid reliance on
|
||||
fast-response reserves.</li>
|
||||
<li><em>Developed a discrete choice model for light bulb market
|
||||
shares</em> to estimate counter-factual baselines for residential
|
||||
lighting programs — producing rigorous net-to-gross ratios.</li>
|
||||
<li><em>Led EV adopter identification for CenterPoint Energy,</em>
|
||||
combining early adopter characteristics with travel survey data to
|
||||
target geographic concentrations.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="resume-employer">
|
||||
<div class="resume-margin-note"><a href="https://www.wsp.com">Parsons Brinckerhoff</a><span class="resume-margin-location">Orange, CA</span></div>
|
||||
<div class="resume-main-col">
|
||||
</div><div class="resume-margin-note resume-margin-note--location"><span class="resume-margin-location">Chicago, IL</span><span class="resume-margin-location">San Francisco, CA</span><span class="resume-margin-location">Portland, OR</span><span class="resume-margin-location">Orange, CA</span></div><div class="resume-main-col">
|
||||
<div class="resume-position">
|
||||
<div class="resume-entry-header"><span class="resume-date">2001 – 2011</span> <span class="resume-position-title">Senior Consultant</span></div>
|
||||
<p>Built simulation software and estimated behavioral models for
|
||||
regional and statewide transportation planning projects across the US,
|
||||
with several supporting successful federal New Starts funding
|
||||
applications.</p>
|
||||
<ul>
|
||||
<li><em>Developed one of the first discrete choice trip distribution
|
||||
models</em> for the Salt Lake City regional travel demand model,
|
||||
replacing the gravity-based approach and supporting a successful New
|
||||
Starts application.</li>
|
||||
<li><em>Lead programmer on the Ohio statewide travel demand model,</em>
|
||||
simulating long-distance travel for over 20 million persons using
|
||||
distributed computing.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="resume-employer">
|
||||
<div class="resume-margin-note">Chicago Area Transportation Study<span class="resume-margin-location">Chicago, IL</span></div>
|
||||
<div class="resume-main-col">
|
||||
<div class="resume-position">
|
||||
<div class="resume-entry-header"><span class="resume-date">1998 – 2000</span> <span class="resume-position-title">Engineer</span></div>
|
||||
<p>Supported development of the Chicago region’s 20-year long-range
|
||||
transportation plan through database design, GIS visualization, and
|
||||
travel demand model interpretation — an early foundation in the
|
||||
analytical and computational methods that have defined the rest of the
|
||||
career.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="resume-education">
|
||||
<h2 class="resume-section-heading">Education</h2>
|
||||
<hr>
|
||||
<div class="resume-institution">
|
||||
<div class="resume-margin-note">CTO Program</div>
|
||||
<div class="resume-main-col"><div class="resume-entry-header"><span class="resume-date">2023 – 2024</span> <a href="https://wharton.upenn.edu">The Wharton School, University of Pennsylvania</a></div><div class="resume-education-detail">Executive education; completed in 9 months</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="resume-institution">
|
||||
<div class="resume-margin-note">Master of Science</div>
|
||||
<div class="resume-main-col"><div class="resume-entry-header"><span class="resume-date">1999 – 2001</span> <a href="https://uic.edu">The University of Illinois, Chicago</a></div><div class="resume-education-detail">Civil and Materials Engineering, emphasis on Travel demand forecasting and simulation</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="resume-institution">
|
||||
<div class="resume-margin-note">Bachelor of Science</div>
|
||||
<div class="resume-main-col"><div class="resume-entry-header"><span class="resume-date">1993 – 1998</span> <a href="https://marquette.edu">Marquette University</a></div><div class="resume-education-detail">Civil and Environmental Engineering, emphasis on Transportation engineering and planning</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="resume-skills">
|
||||
<h2 class="resume-section-heading">Technical Skills</h2>
|
||||
<hr>
|
||||
<dl class="resume-dl resume-skills-dl"><dt>Languages</dt><dd>Python, R, SQL</dd>
|
||||
<dt>Frameworks</dt><dd>FastAPI, Dagster, dbt, Quarto, Drools</dd>
|
||||
<dt>Infrastructure</dt><dd>GCE, GKE, Docker, PostgreSQL, BigQuery, CI/CD</dd>
|
||||
<dt>Methods</dt><dd>Data Warehousing, A/B Testing, Cohort Analysis, Forecasting, NLP, Bayesian Statistics, User Acquisition</dd>
|
||||
<dt>Platforms</dt><dd>Amplitude, Statsig, Meta Ads</dd></dl>
|
||||
</section>
|
||||
<section class="resume-publications">
|
||||
<h2 class="resume-section-heading">Publications</h2>
|
||||
<hr>
|
||||
<div class="resume-publication"><span class="resume-pub-authors">Siyu Wu, Andrew Stryker, Julia Vetromile</span>. “Tangled: Isolating SEM Savings.” <em class="resume-pub-venue">2015 ACEEE Summer Study on Energy Efficiency in Industry</em>, 2015.</div>
|
||||
<div class="resume-publication"><span class="resume-pub-authors">Andrew Stryker, Kathleen Gaffney</span>. “Why the Light Bulb is No Longer a Textbook Example for Price Elasticity: Results from Choice Experiments and Demand Modeling Research.” <em class="resume-pub-venue">International Energy Program Evaluation Conference</em>, 2013.</div>
|
||||
<div class="resume-publication"><span class="resume-pub-authors">Jay Evans, Andrew Stryker, Richard Pratt</span>. “Traveler Response to System Change, Chapter 17: Transit-Oriented Development.” <em class="resume-pub-venue">Transit Cooperative Research Program, Transportation Research Board</em>, 2007.</div>
|
||||
<div class="resume-publication"><span class="resume-pub-authors">G.D. Erhardt, J. Freedman, A. Stryker, H. Fujioka, R. Anderson</span>. “The Ohio Long Distance Travel Model.” <em class="resume-pub-venue">Transportation Research Record</em>, 2007.</div>
|
||||
<div class="resume-publication"><span class="resume-pub-authors">Andrew Stryker, Joel Freedman, John Britting</span>. “A Practical Evaluation of Alternative Methods to Trip Distribution.” <em class="resume-pub-venue">Transportation Research Board Planning Applications Conference</em>, 2005.</div>
|
||||
</section>
|
||||
@@ -1,108 +0,0 @@
|
||||
---
|
||||
title: Résumé
|
||||
date: 2023-11-08T10:22:23-08:00
|
||||
draft: false
|
||||
data:
|
||||
jobs:
|
||||
EA:
|
||||
name: Electronic Arts
|
||||
url: 'https://ea.com'
|
||||
Glu:
|
||||
name: Glu Mobile
|
||||
url: 'https://glu.com'
|
||||
---
|
||||
|
||||
<!--
|
||||
Consider placing data in the YAML block. Then insert this in a way that makes
|
||||
sense, given the output format. The advantage is that it makes parsing easier
|
||||
and more robust. The trade-off is the distance between data and text.
|
||||
-->
|
||||
|
||||
<!-- revise with text from resume writer -->
|
||||
|
||||
Business leader with strong analytics, data, and marketing expertise. I have
|
||||
applied data analytics and programming to deliver results across a wide range
|
||||
of industries, including mobile game marketing, web publishing, the electrical
|
||||
grid, and transportation. As a manager, I uncover opportunities, remove
|
||||
impediments, and guide team members toward professional growth. I am known for
|
||||
developing a strong network within an organization, driving innovative
|
||||
technical solutions, and effectively coaching a diverse set of team members.
|
||||
|
||||
## Work Experience
|
||||
|
||||
### [Electronic Arts (EA)](https://ea.com)
|
||||
_Senior Diector of Growth Analytics and Data Science (2020--2023), including
|
||||
[Glu Mobile](https://glu.com)_
|
||||
|
||||
Building and leading teams with a focus on growth marketing, including
|
||||
a cross-functional business intelligence team (in partnership with
|
||||
engineering), marking analysts (embedded with the Marketing team), and data
|
||||
science with a focus on user acquisition. I define the vision for growth
|
||||
marketing analytics and the execution the plan. As a member of EA Mobile’s
|
||||
Growth Team senior leadership team, I collaborate across teams to more
|
||||
effectively measure the health of players and games, identify differences in
|
||||
our players, and discover new opportunities to grow revenue revenue.
|
||||
|
||||
{{< rawhtml >}}
|
||||
<details open="open">
|
||||
<summary>
|
||||
Accomplishments include:
|
||||
</summary>
|
||||
{{< /rawhtml >}}
|
||||
|
||||
- *Saving the company \$100 million in marketing expenses when launching a
|
||||
new game.* I surfaced and demonstrated that the incumbent forecasting
|
||||
methodology would lead to bad business decisions prior to game launch. I
|
||||
then convened a cross-functional team to tackle the problem. Additionally,
|
||||
I implemented a transition state model for forecasting cohort growth as an
|
||||
\texttt{R} package. In addition to reducing wasteful spend, the approach I
|
||||
drove enabled informed, constructive conversations between the game
|
||||
development and marketing teams.
|
||||
|
||||
- *Cutting the effort required for analyzing marketing campaigns in half.*
|
||||
Prior to me joining Glu, we stored player activities in terms game events
|
||||
and did not completely track our marketing activities. Furthermore, the
|
||||
tools we were using (Hive and Hadoop) required specialized computing
|
||||
skills. I assembled a cross-functional team effort to modernize our
|
||||
business intelligence practice. We now use a scalable, cloud-based
|
||||
relational data warehouse with analytics friendly tables of key business
|
||||
processes. We are adopting this approach across the entire EA Mobile
|
||||
portfolio.
|
||||
|
||||
{{< rawhtml >}}
|
||||
</details>
|
||||
{{< /rawhtml >}}
|
||||
<!--
|
||||
\item \emph{Cutting the effort required for analyzing marketing campaigns in
|
||||
half.} Prior to me joining Glu, we stored player activities in terms game
|
||||
events and did not completely track our marketing activities.
|
||||
Furthermore, the tools we were using (Hive and Hadoop) required
|
||||
specialized computing skills. I assembled a cross-functional team effort
|
||||
to modernize our business intelligence practice. We now use a scalable,
|
||||
cloud-based relational data warehouse with analytics friendly tables of
|
||||
key business processes. We are adopting this approach across the entire EA
|
||||
Mobile portfolio.
|
||||
|
||||
\item \emph{Navigating Apple’s App Tracking Transparency initiative to
|
||||
maintain acquisition budgets.} Apple’s
|
||||
\href{https://developer.apple.com/documentation/storekit/skadnetwork}{SKAdNetwork}
|
||||
initiative is a threat to businesses that have relied on performance
|
||||
marketing and use attribution data to manage user acquisition campaigns.
|
||||
I lead our business intelligence and data science teams through our
|
||||
response to this challenge. We built new pipelines and analytical
|
||||
strategies that let us continue advertising budget on iOS while
|
||||
competitors drastically reduced budgets.
|
||||
|
||||
\item \emph{Increasing the returns from product marketing.} Building an
|
||||
embedded marketing analysts team. Our Marketing team had operated without
|
||||
dedicated analytical support prior to my arrival. As a result, the team
|
||||
was limited in its ability to design experiments that would result in
|
||||
unbiased measurements. Our move to an embedded model means that analysts
|
||||
now have the full context of marketing initiatives, the authority to
|
||||
design experiments, and responsibility for interpreting results. We set
|
||||
the combined marketing and marketing analysts team on a path of continuous
|
||||
improvement cycles with clear ties between marketing activities and
|
||||
incremental revenue.
|
||||
|
||||
\end{itemize}
|
||||
-->
|
||||
@@ -8,6 +8,10 @@ enableRobotsTXT: true
|
||||
params:
|
||||
description: Just a great personal website
|
||||
|
||||
author:
|
||||
name: Andrew Stryker
|
||||
email: andrewjstryker@proton.me
|
||||
|
||||
# PaperMod settings
|
||||
ShowReadingTime: true
|
||||
ShowCodeCopyButtons: true
|
||||
@@ -114,7 +118,7 @@ markup:
|
||||
unsafe: true
|
||||
renderhooks:
|
||||
link:
|
||||
enableDefault: true
|
||||
useEmbedded: "fallback"
|
||||
extensions:
|
||||
passthrough:
|
||||
enable: true
|
||||
|
||||
+1
-1
Submodule themes/PaperMod updated: e2e1011bde...10d3dcc0e0
Reference in New Issue
Block a user