1019 lines
32 KiB
HTML
1019 lines
32 KiB
HTML
<html>
|
||
<head>
|
||
<link
|
||
rel="stylesheet"
|
||
href="https://fonts.googleapis.com/css?family=DM+Serif+Display"
|
||
/>
|
||
<style>
|
||
body {
|
||
display: flex;
|
||
gap: 10pt;
|
||
width: 100%;
|
||
flex-direction: column;
|
||
}
|
||
|
||
body * {
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
body,
|
||
p,
|
||
span,
|
||
h1,
|
||
h2,
|
||
h3,
|
||
h4,
|
||
h5,
|
||
h6,
|
||
div {
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
ul {
|
||
padding-left: 1.5rem;
|
||
}
|
||
|
||
ul,
|
||
li {
|
||
margin: 0;
|
||
}
|
||
|
||
li {
|
||
margin-bottom: 0.25rem;
|
||
}
|
||
|
||
code {
|
||
font-family: 'Iosevka Term Extended';
|
||
background: hsl(0deg, 0%, 90%);
|
||
padding: 1pt 2pt 1pt 2pt;
|
||
border-radius: 4px;
|
||
}
|
||
|
||
h1,
|
||
h2,
|
||
h3 {
|
||
font-family: 'DM Serif Display';
|
||
font-weight: normal;
|
||
}
|
||
|
||
h4,
|
||
h5,
|
||
h6,
|
||
p,
|
||
span,
|
||
ol,
|
||
ul {
|
||
font-family: 'Atkinson Hyperlegible';
|
||
}
|
||
|
||
h1 {
|
||
font-size: 48pt;
|
||
margin-top: -10px;
|
||
margin-bottom: -10px;
|
||
}
|
||
h2 {
|
||
font-size: 32pt;
|
||
margin-top: -8px;
|
||
margin-bottom: -7px;
|
||
}
|
||
h3 {
|
||
font-size: 24pt;
|
||
margin-top: -5px;
|
||
margin-bottom: -5px;
|
||
}
|
||
h4 {
|
||
font-size: 16pt;
|
||
font-weight: 700;
|
||
margin-top: -4px;
|
||
margin-bottom: -4px;
|
||
}
|
||
h5 {
|
||
font-size: 12pt;
|
||
font-weight: 700;
|
||
margin-top: -3px;
|
||
margin-bottom: -4px;
|
||
}
|
||
|
||
h6 {
|
||
font-weight: 700;
|
||
color: hsl(0deg, 0%, 20%);
|
||
}
|
||
|
||
p,
|
||
span,
|
||
h6 {
|
||
font-size: 10pt;
|
||
margin-top: -2px;
|
||
margin-bottom: -2px;
|
||
}
|
||
|
||
p,
|
||
span,
|
||
li {
|
||
font-size: 10pt;
|
||
}
|
||
|
||
.nowrap {
|
||
white-space: nowrap;
|
||
}
|
||
|
||
a,
|
||
a:visited {
|
||
text-decoration: none;
|
||
font-style: none;
|
||
color: hsl(251deg, 60%, 40%);
|
||
}
|
||
|
||
div.star-1\.0 {
|
||
background-image: url('./assets/star_1.0.png');
|
||
}
|
||
|
||
div.star-0\.5 {
|
||
background-image: url('./assets/star_0.5.png');
|
||
}
|
||
|
||
div.star-0\.0 {
|
||
background-image: url('./assets/star_0.0.png');
|
||
}
|
||
|
||
div.star-1\.0,
|
||
div.star-0\.5,
|
||
div.star-0\.0 {
|
||
height: 12pt;
|
||
width: 12pt;
|
||
background-repeat: no-repeat;
|
||
background-size: cover;
|
||
}
|
||
|
||
div.hr {
|
||
height: 2pt;
|
||
width: 100%;
|
||
background-color: hsl(0deg 0% 80%);
|
||
}
|
||
|
||
.break {
|
||
page-break-after: always;
|
||
}
|
||
|
||
div.row {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 3pt;
|
||
}
|
||
|
||
div.col {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: flex-start;
|
||
gap: 3pt;
|
||
}
|
||
|
||
div.col.spread, div.row.spread {
|
||
gap: 1rem;
|
||
}
|
||
|
||
div.col.right {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: flex-end;
|
||
}
|
||
|
||
div.row.packed,
|
||
div.col.packed {
|
||
gap: 0;
|
||
}
|
||
|
||
.grow-x {
|
||
width: 100%;
|
||
}
|
||
|
||
.grow-y {
|
||
height: 100%;
|
||
}
|
||
|
||
.col > *,
|
||
.row > * {
|
||
flex-grow: 0;
|
||
flex-shrink: 1;
|
||
}
|
||
|
||
div.space {
|
||
justify-content: space-between;
|
||
}
|
||
|
||
div.cols_2 {
|
||
display: grid;
|
||
grid-template-columns: repeat(2, 1fr);
|
||
grid-auto-rows: min-content;
|
||
gap: 10pt;
|
||
}
|
||
|
||
div.cols_4 {
|
||
display: grid;
|
||
grid-template-columns: repeat(4, 1fr);
|
||
grid-auto-rows: min-content;
|
||
gap: 5pt;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="row space spread">
|
||
<h1 style="display: inline">Orion Kindel</h1>
|
||
<div class="row">
|
||
<div class="col right">
|
||
<a href="mailto:orionkindel@gmail.com">
|
||
<h5>orionkindel@gmail.com</h5></a
|
||
>
|
||
<a href="https://git.orionkindel.com">
|
||
<h5>git.orionkindel.com</h5></a
|
||
>
|
||
<a href="https://linkedin.com/in/orion-kindel">
|
||
<h5>linkedin.com/in/orion-kindel</h5></a
|
||
>
|
||
<a href="tel:9894430197"> <p>+1 989 443 0197</p></a>
|
||
</div>
|
||
<img
|
||
style="display: inline; height: 72pt; width: 72pt"
|
||
src="./assets/orion.jpg"
|
||
/>
|
||
</div>
|
||
</div>
|
||
<div class="hr"></div>
|
||
<h2>About</h2>
|
||
<h5>
|
||
Flexible, passionate and experienced; Orion is a powerful force multiplier
|
||
with 7 years’ experience as a software engineer & player-coach.
|
||
</h5>
|
||
<div class="hr"></div>
|
||
<div class="col space spread">
|
||
<h2>Skills</h2>
|
||
<div class="col">
|
||
<h3>Javascript, HTML, CSS</h3>
|
||
<h6>Expert · 8 years</h6>
|
||
|
||
<div class="col">
|
||
<p>
|
||
Deep understanding of runtime semantics, exception handling,
|
||
performance characteristics and tooling.
|
||
</p>
|
||
<p>
|
||
Architected & implemented complex production interfaces in React, as
|
||
well as angular, vue and svelte. Deep experience using hooks &
|
||
functional components to manage state and complexity as the product
|
||
scales.
|
||
</p>
|
||
<p>
|
||
Guided teams to best practices, building systems with 3-40 active
|
||
contributors handling 1MM requests / second with %99.999 uptime
|
||
</p>
|
||
</div>
|
||
|
||
<div class="col">
|
||
<h5>Open-Source (Javascript / Typescript)</h5>
|
||
<ul>
|
||
<li>
|
||
<a href="https://github.com/matchbook-ts/matchbook-ts"
|
||
><code>fetch</code></a
|
||
>
|
||
<br />
|
||
Rust-inspired structural pattern matching in JS, reducing code
|
||
footprint and increasing expressiveness for thousands of
|
||
repositories
|
||
</li>
|
||
<li>
|
||
<a href="https://github.com/gcanti/fp-ts"><code>fp-ts</code></a>
|
||
(Contributor)
|
||
</li>
|
||
</ul>
|
||
<h5>Open-Source (Purescript)</h5>
|
||
<ul>
|
||
<li>
|
||
<a
|
||
href="https://git.orionkindel.com/orion/purescript-node-stream-pipes"
|
||
><code>node-stream-pipes</code></a
|
||
>,
|
||
<a href="https://git.orionkindel.com/orion/purescript-csv-stream"
|
||
><code>csv-stream</code></a
|
||
>,
|
||
<a href="https://git.orionkindel.com/orion/purescript-cbor-stream"
|
||
><code>cbor-stream</code></a
|
||
>,
|
||
<a href="https://git.orionkindel.com/orion/purescript-pg"
|
||
><code>postgresql</code></a
|
||
>
|
||
<br />
|
||
Compat layer between <code>pipes</code> and the Node standard
|
||
library, lifting the UNIX-pipe inspired library to purely
|
||
functional feature parity with actual UNIX pipes.
|
||
</li>
|
||
<li>
|
||
<a href="https://git.orionkindel.com/orion/purescript-pg"
|
||
><code>postgresql</code></a
|
||
>
|
||
<br />
|
||
High-level interface to libpq from purescript, supporting complex
|
||
queries and streaming with
|
||
<code>COPY .. TO ..</code> and <code>COPY .. FROM ..</code>
|
||
</li>
|
||
<li>
|
||
<a href="https://git.orionkindel.com/orion/purescript-fetch"
|
||
><code>fetch</code></a
|
||
>
|
||
<br />
|
||
HTTP client library built on <code>fetch</code>
|
||
</li>
|
||
<li>
|
||
<a
|
||
href="https://git.orionkindel.com/orion/purescript-url-immutable"
|
||
><code>url-immutable</code></a
|
||
>
|
||
<br />
|
||
Immutable bindings to NodeJS URL API
|
||
</li>
|
||
<li>
|
||
<a
|
||
href="https://git.orionkindel.com/thunderstrike/purescript-node-workers"
|
||
><code>node-workers</code></a
|
||
>
|
||
<br />
|
||
Low-level bindings to NodeJS Worker API
|
||
</li>
|
||
<li>
|
||
<a
|
||
href="https://git.orionkindel.com/thunderstrike/purescript-cheerio"
|
||
><code>cheerio</code></a
|
||
>
|
||
<br />
|
||
Idiomatic wrapper of <code>cheerio</code>, an in-memory
|
||
platform-agnostic in-memory DOM parser
|
||
</li>
|
||
<li>
|
||
<a
|
||
href="https://git.orionkindel.com/thunderstrike/purescript-sync"
|
||
><code>sync</code></a
|
||
>
|
||
<br />
|
||
Purescript implementation of rust's thread-safe synchronization
|
||
primitives (<code>Mutex</code>,
|
||
<code>RwLock</code>) adding exclusivity guarantees to concurrently
|
||
accesssed effectful resources.
|
||
</li>
|
||
</ul>
|
||
|
||
<h5>Professional Experience</h5>
|
||
<ul>
|
||
<li>
|
||
At Thunderstrike, built MVP in React-inspired web framework and
|
||
several service-oriented backend applications in Purescript.
|
||
Demonstrated problem statement, early functionality and
|
||
communicated value proposition to customers and investors.
|
||
Resulted in over $100K in total contract value and an pre-seed
|
||
raise that was in progress of $1M at a $5M cap (interrupted by
|
||
co-founder leaving)
|
||
</li>
|
||
<li>
|
||
At Qwick, built 4 separate user interfaces spanning all business
|
||
verticals using FRP React in ReasonML. Was responsible for
|
||
implementing best practices, architecting solutions and managing
|
||
tech debt. Result was the company growing to over $10M MRR with
|
||
tens of thousands of customers, and frontend codebases that were
|
||
highly maintainable despite being complex.
|
||
</li>
|
||
<li>
|
||
At TheoremOne, successfully built several highly maintainable user
|
||
interfaces using React.
|
||
<ul>
|
||
<li>
|
||
iMercata · Managed team of 4 engineers working on
|
||
MVP-stage UI for client company. · Was responsible for
|
||
providing technical vision, coaching and implementing best
|
||
practices. The client's vision was implemented quickly and
|
||
effectively by the team, resulting in a successful
|
||
relationship and interaction with the client company.
|
||
</li>
|
||
<li>
|
||
GitHub · Managed team of 2 engineers working on UI and
|
||
API for GitHub. · Was responsible for providing
|
||
technical vision, coaching and implementing best practices.
|
||
The client's vision was implemented quickly and effectively,
|
||
resulting in a continued relationship between GitHub &
|
||
TheoremOne.
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
At StrongMind, built mobile app for students to take assessments,
|
||
interact with their course performance & attendance using React
|
||
Native.
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="hr"></div>
|
||
<div class="col">
|
||
<h3>Linux</h3>
|
||
<h6>Very Strong · 6 years</h6>
|
||
|
||
<ul>
|
||
<li>
|
||
Use Docker & Kubernetes to deploy high-availability distributed
|
||
systems at scale. As someone passionate about predictability &
|
||
determinism, I've used containerization to great effect, increasing
|
||
velocity and uptime on every team I've been a part of.
|
||
</li>
|
||
<li>
|
||
Regularly host virtual TV & movie watch parties with friends using
|
||
on-the-fly encoding with ffmpeg to a custom cloud-hosted RTMP +
|
||
MPEG/DASH server.
|
||
</li>
|
||
<li>
|
||
Deep understanding of public & private network management, routing
|
||
traffic on public network interfaces to applications running on
|
||
local interfaces. Have encountered and debugged issues at NAT & DHCP
|
||
layers, manage SSL certificates issued by TAs, manage DNS and mDNS
|
||
configuration, and have implemented an application-layer networking
|
||
runtime from
|
||
<a href="https://www.rfc-editor.org/rfc/rfc7252">RFC (CoAP)</a>.
|
||
</li>
|
||
<li>
|
||
Manage synthetic video devices and hardware drivers at the
|
||
kernel-module level.
|
||
</li>
|
||
<li>
|
||
Use user-space utilities for an extremely productive and universal
|
||
workflow, ex.
|
||
<ul>
|
||
<li>kakoune (preferred), (neo)vim, nano</li>
|
||
<li>remote machine access (ssh, sshfs, rsync, xpra)</li>
|
||
<li>
|
||
advanced shell scripting (xargs, sed, gawk, gzip, ffmpeg,
|
||
sub-shells, fork, heredoc)
|
||
</li>
|
||
<li>package management (apk, apt, pacman, dpkg)</li>
|
||
<li>
|
||
per-project tooling management (asdf, nvm, virtualenv, pipenv)
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="hr"></div>
|
||
<div class="col">
|
||
<h3>Rust</h3>
|
||
<h6>Very Strong · 6 years</h6>
|
||
|
||
<div class="col">
|
||
<p>
|
||
An early adopter of Rust and passionate advocate. I've been an
|
||
active OSS & rust discord community member for years and am a proud
|
||
organizer of Chicago's Rust Meetup. Rust's type system, high level
|
||
language features, developer experience, and runtime characteristics
|
||
make it the easy choice for any mission-critical or
|
||
performance-critical system in my eyes.
|
||
</p>
|
||
</div>
|
||
<div class="col">
|
||
<h5>Open-Source</h5>
|
||
<ul>
|
||
<li>
|
||
<a href="https://github.com/cakekindel/slack-blocks-rs"
|
||
><code>slack-blocks</code></a
|
||
><br />Idiomatic API to programatically create composable Slack
|
||
messages
|
||
</li>
|
||
<li>
|
||
<a href="https://github.com/cakekindel/naan"><code>naan</code></a
|
||
><br />Abusing the type system for fun & profit.
|
||
<code>std</code>-toolchain implementation of higher-kinded types
|
||
and Haskell-esque typeclasses.
|
||
</li>
|
||
<li>
|
||
<a href="https://git.orionkindel.com/toad/toad"
|
||
><code>toad</code></a
|
||
><br />
|
||
No-std and no-alloc implementation of RFC7252 <b>Co</b>nstrained
|
||
<b>A</b>pplication <b>P</b>rotocol. A low-latency RESTful
|
||
networking runtime alternative to HTTP built on UDP with reliable
|
||
message transmission, SSL, and built-in pub/sub semantics.
|
||
Sub-packages:
|
||
<ul>
|
||
<li>
|
||
<code>toad-array</code><br />trait abstracting
|
||
<code>Vec</code>'s API for any in-memory contiguous
|
||
collections. Allows <code>toad</code> to simultaneously
|
||
support systems with & without heap allocation.
|
||
</li>
|
||
<li>
|
||
<code>toad-map</code><br />same as above, but for HashMap
|
||
</li>
|
||
<li>
|
||
<code>toad-string</code><br />same as above, but for Strings
|
||
</li>
|
||
<li>
|
||
<code>toad-jni</code><br />A rethinking of Java Native
|
||
Interface (JNI) interaction in Rust.
|
||
</li>
|
||
<li><code>toad-stem</code><br />no-std implementation</li>
|
||
<li><code>toad-cursor</code><br />no-std port of Cursor</li>
|
||
<li>
|
||
<code>toad-writable</code><br />no-std port of Read & Write
|
||
traits
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="col">
|
||
<h5>Professional Experience</h5>
|
||
<ul>
|
||
<li>
|
||
At StrongMind, architected & built data pipeline ingesting 100K
|
||
messages from disparate systems into a data warehouse. This led
|
||
directly to higher business performance as centralized OLAP
|
||
workflows empowered better data-driven decisionmaking. Led &
|
||
trained team of 5 with no prior Rust experience and ICs were
|
||
productive in it alarmingly fast!
|
||
</li>
|
||
<li>
|
||
At Qwick, architected & built distributed event-driven system to
|
||
reduce database load and increase uptime.
|
||
</li>
|
||
<li>
|
||
At Thunderstrike, architected & built novel general-purpose
|
||
distributed web scraper to ingest public information on the web en
|
||
masse.
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="col">
|
||
<h5>CICD & Automation</h5>
|
||
<h6>Very Strong · 7 years</h6>
|
||
<p>
|
||
Have spearheaded adoption of bleeding-edge automation practices,
|
||
implementing end to end test suites and continuous delivery pipelines.
|
||
</p>
|
||
<p>At StrongMind, saw dev team velocity increase by 60%.</p>
|
||
<p>
|
||
At Qwick, saw dev team velocity increase by 30% as automation replaced
|
||
manual QA testing and release strategies.
|
||
</p>
|
||
</div>
|
||
<div class="col">
|
||
<h5>SQL</h5>
|
||
<h6>Very Strong · 7 years</h6>
|
||
<p>
|
||
Very comfortable designing physical schemas for high performance,
|
||
optimizing indexes for common access patterns, and using RLS for
|
||
securing data.
|
||
</p>
|
||
<p>
|
||
Have used many strategies to integrate relational databases with
|
||
dynamic and strongly-typed business logic layers from highly-managed
|
||
ORMs (ex. Flask, Entity Framework, PrismaJS) to mini-ORMs.
|
||
</p>
|
||
</div>
|
||
<div class="col">
|
||
<h5>Player-Coach</h5>
|
||
<h6>Strong · 6 years</h6>
|
||
<p>
|
||
Have managed teams of sizes 3-10 as a team lead (player-coach),
|
||
accountable for success of individual team members as well as the
|
||
team. Able to consistenly make & meet data-driven commitments, develop
|
||
and maintain excellent relationships with team members and
|
||
stakeholders based on accountability, candor and transparency.
|
||
</p>
|
||
<p>
|
||
Use tools like CICD, Scrum, TDD and pair programming to increase team
|
||
velocity without applying pressure to individual team members.
|
||
</p>
|
||
<p>
|
||
Use frequent touchpoints with team members and a shared understanding
|
||
of my expectations and their goals, decomposing them into measurable
|
||
actionable steps and holding them accountable.
|
||
</p>
|
||
</div>
|
||
<div class="hr"></div>
|
||
<div class="col">
|
||
<div class="col right">
|
||
<h2>Other Skills</h2>
|
||
<div class="row">
|
||
<h5>Expert</h5>
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
</div>
|
||
</div>
|
||
<div class="row">
|
||
<h5>Very Strong</h5>
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.5"></div>
|
||
</div>
|
||
</div>
|
||
<div class="row">
|
||
<h5>Strong</h5>
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.0"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="cols_4">
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.5"></div>
|
||
</div>
|
||
<h6>AWS</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
</div>
|
||
<h6>REST</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
</div>
|
||
<h6>HATEOAS</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
</div>
|
||
<h6>JIRA</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
</div>
|
||
<h6>Figma</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
</div>
|
||
<h6>Slack API</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
</div>
|
||
<h6>OSS Mgmt</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
</div>
|
||
<h6>OAuth, OIDC</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.5"></div>
|
||
</div>
|
||
<h6>Python</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.5"></div>
|
||
</div>
|
||
<h6>Scala</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.5"></div>
|
||
</div>
|
||
<h6>Java</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.5"></div>
|
||
</div>
|
||
<h6>OCaml</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.5"></div>
|
||
</div>
|
||
<h6>C#</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.5"></div>
|
||
</div>
|
||
<h6>Java</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.5"></div>
|
||
</div>
|
||
<h6>GraphQL</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.5"></div>
|
||
</div>
|
||
<h6>NoSQL</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.5"></div>
|
||
</div>
|
||
<h6>Data Insights</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.5"></div>
|
||
</div>
|
||
<h6>Machine Learning</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.5"></div>
|
||
</div>
|
||
<h6>ffmpeg</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.0"></div>
|
||
</div>
|
||
<h6>Cryptography</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.0"></div>
|
||
</div>
|
||
<h6>WebAssembly</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.0"></div>
|
||
</div>
|
||
<h6>Terraform</h6>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row packed">
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-1.0"></div>
|
||
<div class="star-0.0"></div>
|
||
</div>
|
||
<h6>gRPC</h6>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="hr break"></div>
|
||
<div class="hr"></div>
|
||
<h2>Experience</h2>
|
||
<div class="col">
|
||
<h3>thunderstrike.ai</h3>
|
||
<h4>Technical Founder & CTO</h4>
|
||
<p>2023 - Present</p>
|
||
<ul>
|
||
<li>
|
||
Built product MVP in Purescript & Rust in 4mo fully covered by
|
||
automated testing, automated deployments, load testing @ 100K messages
|
||
/ second yields <100ms latency
|
||
</li>
|
||
<li>
|
||
With CEO have signed over $100K in contract value with customers since
|
||
foundation in October
|
||
</li>
|
||
<li>
|
||
Perform competitor analysis, user interviews, and develop KPIs to
|
||
continuously refresh our understanding of the problem we’re solving -
|
||
pivoting when necessary.
|
||
</li>
|
||
<li>
|
||
Maintain living backlog in JIRA* for transparency and accountability
|
||
</li>
|
||
<li>
|
||
Manage 2 junior engineers, placed directly from bootcamp graduation
|
||
2mo ago who are now formidable and productive in Rust and Purescript.
|
||
</li>
|
||
<li>
|
||
Develop and manage local Chicago tech community presence both for
|
||
networking and startup representation.
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="col">
|
||
<h3>Qwick</h3>
|
||
<h4>Senior Software Engineer</h4>
|
||
<p>2021 - 2023</p>
|
||
<ul>
|
||
<li>
|
||
Overhauled onboarding process, helping accelerate new junior hires
|
||
</li>
|
||
<li>
|
||
Architected invoicing system to handle $500K MRR with near-zero
|
||
downtime
|
||
</li>
|
||
<li>
|
||
Oversaw team of 4 junior engineers & 1 senior engineer executing on
|
||
invoicing system. Was responsible for individual & team outcomes.
|
||
</li>
|
||
<li>
|
||
Led initiative to decouple and modularize existing monolithic
|
||
architecture, transforming into a services model with several
|
||
event-driven components, adding independent deployability and
|
||
automated testing. This increased developer velocity by 40%,
|
||
reliability up from %99.9 to %99.999 in 6mo
|
||
</li>
|
||
<li>
|
||
Led agile & scrum transformation with CTO, contributing to velocity
|
||
increase of 40%
|
||
</li>
|
||
<li>
|
||
Led DevSecOps team, adding automated testing, CICD, system
|
||
rearchitecture, documentation, DX improvements
|
||
</li>
|
||
<li>
|
||
Mentored product managers helping them relax into a role of vision and
|
||
user-advocacy, allowing dev teams to execute on well-structured
|
||
problem statements
|
||
</li>
|
||
<li>
|
||
Led Google Design Sprints to quickly define and validate new product
|
||
initiatives, introducing data-driven and qualitative user research
|
||
</li>
|
||
<li>
|
||
Organized grassroots presentations, helped team members develop and
|
||
present their own topics
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="col">
|
||
<h3>TheoremOne</h3>
|
||
<h4>Senior Lead Software Engineer</h4>
|
||
<p>2020 - 2021</p>
|
||
<ul>
|
||
<li>
|
||
Architected robust systems on AWS in Python, Ruby, React, Typescript
|
||
</li>
|
||
<li>
|
||
Developed excellent relationships with stakeholders, communicating
|
||
clear and frequent progress updates via demos, gathering feedback and
|
||
requirements
|
||
</li>
|
||
<li>
|
||
Managed 2 teams of 5-6, overhauling process increasing velocity by
|
||
30-40%.
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="col">
|
||
<h4>Software Engineering Manager</h4>
|
||
<p>2021</p>
|
||
<ul>
|
||
<li>Onboarded new Client Coordinator & Product Manager</li>
|
||
<li>
|
||
Managed team of 4 full-stack engineers, 1 QA, 1 GIS engineer working
|
||
on seed-stage MVP
|
||
</li>
|
||
<li>Negotiated deadlines and rebuilt damaged trust with client</li>
|
||
</ul>
|
||
</div>
|
||
<div class="col">
|
||
<h4>Product Manager</h4>
|
||
<p>2021</p>
|
||
<ul>
|
||
<li>
|
||
Owned living backlog with aggressive culling of speculative epics and
|
||
stories so as to reduce noise and keep meaningful
|
||
</li>
|
||
<li>
|
||
Communicated frequently with client to continually adjust forecasts,
|
||
refine backlog and improve understanding of requirements
|
||
</li>
|
||
<li>
|
||
Held dev team accountable for refining tickets into tasks and having
|
||
implementation discussions with 1-2 sprint lead time.
|
||
</li>
|
||
<li>
|
||
Ensured prior to Planning, tickets had accurate estimates, subtasks,
|
||
and had been seen and touched by everyone who could execute on it,
|
||
making it a 15min ceremony.
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="col">
|
||
<h3>Strongmind</h3>
|
||
<h4>Software Engineer</h4>
|
||
<p>2017 - 2020</p>
|
||
<ul>
|
||
<li>
|
||
Architected & executed on robust production systems in .NET, JS, TS,
|
||
Python & Rust on AWS & Azure. Several greenfield and legacy projects
|
||
incl. complex distributed systems, OLAP data pipeline, data warehouse,
|
||
mobile app development and learning management system (Canvas LMS)
|
||
integration.
|
||
</li>
|
||
<li>
|
||
Led several team process transformations, using process changes and
|
||
product vision improvements to increase team velocity and happiness.
|
||
</li>
|
||
<li>
|
||
Led adoption of new technical practices, improving maintainability and
|
||
velcoity. Ex. transitioning from TFVC to git, automating deployment
|
||
and UAT, containerizing products, introducing automated testing.
|
||
</li>
|
||
<li>
|
||
Mentored several junior engineers, led 2 teams developing production
|
||
systems that are still used with few changes today.
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="hr"></div>
|
||
<h2>Education</h2>
|
||
<div class="col">
|
||
<h4>Associate’s of Science, Physics</h4>
|
||
<p>Scottsdale Community College, 2014 - 2016</p>
|
||
</div>
|
||
<div class="col">
|
||
<h4>Certified Scrum Developer</h4>
|
||
<p>Scrum Alliance, 2019</p>
|
||
</div>
|
||
<div class="col">
|
||
<h4>Certified Scrum Product Owner</h4>
|
||
<p>Scrum Alliance, 2020</p>
|
||
</div>
|
||
<div class="hr"></div>
|
||
</body>
|
||
</html>
|