Files
website/content/about/resume.html
T
2026-04-19 12:00:25 -07:00

814 lines
33 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 2049May 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 Whartons 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">Quadrant4, Inc.</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-position-title"></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 wasnt 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 companys 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 Apples 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 companys 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 companys 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 companys 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>
<li><em>Built a proof-of-concept load forecasting algorithm</em> for a
major US utilitys demand response program, demonstrating the viability
of daily short-term forecasts from AMI data across 40,000
customers.</li>
<li><em>Developed load profiles and forecast errors for photovoltaic and
electric vehicles</em> for the California Independent System Operator,
assessing the benefits of additional visibility into distributed energy
resources.</li>
<li><em>Managed a propensity-to-act model</em> that combined customer
attributes, consumption, and program history into participation
likelihood scores — creating a new service offering and a rigorous
measure of how program actions influence participation.</li>
<li><em>Piloted Apache Spark and Hadoop for large-scale energy data
problems.</em> Supported business development through direct sales and
proposal strategy.</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">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 regions 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">Skills</h2>
<hr>
<dl class="resume-dl resume-skills-dl"><dt>Frameworks</dt><dd>Apache Spark, Dask, Drools, Flask</dd>
<dt>Infrastructure</dt><dd>BigQuery, Docker, GitLab CI, Hadoop, PostgreSQL, Snowflake</dd>
<dt>Languages</dt><dd>Java, Python, R, SQL</dd>
<dt>Methods</dt><dd>A/B Testing, Bandit Testing, Bayesian Statistics, Behavioral Modeling, Cohort Analysis, Database Design, Discrete Choice Models, Forecasting, Funnel Analysis, GIS, Monte Carlo Simulation, NLP, Scrum, Simulation, Snowflake, Travel Demand Forecasting, Travel Demand Modeling</dd>
<dt>Platforms</dt><dd>Amplitude, Statsig</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>. &ldquo;Tangled: Isolating SEM Savings.&rdquo; <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>. &ldquo;Why the Light Bulb is No Longer a Textbook Example for Price Elasticity: Results from Choice Experiments and Demand Modeling Research.&rdquo; <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>. &ldquo;Traveler Response to System Change, Chapter 17: Transit-Oriented Development.&rdquo; <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>. &ldquo;The Ohio Long Distance Travel Model.&rdquo; <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>. &ldquo;A Practical Evaluation of Alternative Methods to Trip Distribution.&rdquo; <em class="resume-pub-venue">Transportation Research Board Planning Applications Conference</em>, 2005.</div>
</section>