%% start of file `template.tex'.
%% Copyright 2006-2013 Xavier Danaux (xdanaux@gmail.com).
%% Copyright 2014-2023 Griffin Smith (root@gws.fyi).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
% available at http://www.latex-project.org/lppl/.


\documentclass[10pt,a4paper,sans]{moderncv}        % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman')

\usepackage[inline]{enumitem}


% moderncv themes
% style options are 'casual' (default), 'classic', 'oldstyle' and 'banking'
\moderncvstyle{casual}
% color options 'blue' (default), 'orange', 'green', 'red', 'purple', 'grey' and 'black'
\moderncvcolor{black}
% to set the default font; use '\sfdefault' for the default sans serif font,
% '\rmdefault' for the default roman one, or any tex font name
%\renewcommand{\familydefault}{\sfdefault}
\nopagenumbers{}

\usepackage[utf8]{inputenc}

\usepackage[scale=0.8, margin=0.65in]{geometry}
\setlength{\hintscolumnwidth}{2.6cm}

\name{Aspen}{Smith}
\pronouns{she/her}
\title{Software Engineer}
\phone[mobile]{(720) 206-7218}
\email{aspen@gws.fyi}
\homepage{gws.fyi}
\extrainfo{she/her}


\begin{document}
\makecvtitle{}
\section{Skills}
\cvitem{Rust}{Expertise in high-performance, low latency, low-level systems
development with Rust, including everything from fundamental data structure
implementation to asynchronous distributed systems development}
\cvitem{Clojure}{Extensive experience architecting, deploying, and building
complex web applications in Clojure and Clojurescript, with a focus on
Re-Frame and Reagent. Experience testing distributed systems in Clojure using
Jepsen.}
\cvitem{Haskell}{Passionate love for pure functional programming as a hobbyist
pursuit, but also practical experience building production systems in Haskell at
scale, and using Haskell's advanced type system extensions where appropriate to
deliver increased ergonomics and safety.}
\cvitem{Nix}{Experience with adopting and teaching nix at scale in a production
stack both for local development dependencies and for configuring and building
production software. Core contributer to a fork of the nix implementation itself
(tvix) aimed at providing increased safety, performance, and flexibility.}
\cvitem{Unix/Linux}{Experience with administrating highly available distributed
systems. Passion for the Unix philosophy of discrete, composable units of
functionality.}
\cvitem{Ruby}{Experience building both full-stack applications with Ruby on
Rails in addition to smaller microservices and custom frameworks. Deep
understanding of the internals of the Ruby interpreter and object system.}
\cvitem{Javascript}{Experience developing real-time responsive single-page web
applications using React, in addition to significant contributions to the React
open-source community.}
\cvitem{SQL}{Deep understanding of relational databases as an
implementer, in the context of an innovative new database implementing a query
planner and incremental materialization for the PostgreSQL and MySQL dialects of
SQL from the ground up -- and of course also a user}

\subsection{Additional Tools}
\cvitem{}{\footnotesize
    \begin{itemize*}
        \item Vim
        \item Emacs (yes, also)
        \item Kubernetes
        \item Git
        \item Terraform
        \item AWS
        \item GCP
        \item Datomic
        \item Elasticsearch
        \item Redis
        \item Docker
        \item Java
        \item Scala
        \item QuickCheck (and similar tools)
        \item Jepsen
        \item Python
        \item Elixir
    \end{itemize*}
    \newline
    \textbf{Novice Level:}
    \begin{itemize*}
        \item C++
        \item Erlang
        \item Prolog
        \item Idris
        \item Agda
        \item Tensorflow
    \end{itemize*}}

\section{Experience}
\cventry{2020--2023}{Staff Software Engineer}{ReadySet}{Remote}{}
{Founding engineer at a startup bringing a high performance
  partially-stateful, incrementally-maintained SQL database based on the Noria
  thesis to market
  \begin{itemize}
    \item Served as the main technical leadership for the project throughout its
          maturation from a research codebase to a production-grade system
    \item Extended the Noria PhD thesis by implementing methods from multiple
          research papers, masters theses, and other papers from database
          research, in addition to original database research and development.
    \item Invented or helped develop multiple novel database techniques in
          partially materialized dataflow, including index planning and
          selection, pagination, post-lookup aggregate processing, partial
          ``straddled'' joins, weak indexes for correct execution of partial
          joins, and more.
    \item Invented novel ways to test SQL databases, including a new deterministic
          generator for SQL queries.
    \item Developed the clustered high availability distributed runtime mode from
          a buggy research feature into a production ready distributed system
          that passed a suite of Jepsen tests.
    \item Implemented a significant fraction of the SQL query planner, which
          required both implementing algorithms specified in database research
          papers and inventing new techniques to work around the limitations of
          partially materialized dataflow
    \item Optimized critical components of the code base, including algorithmic
          optimizations, CPU cache analysis, low-level data structures, and
          broad system runtime analysis
    \item Implemented a type inference engine and expression evaluator that
          supported multiple dialects of SQL configured at compile-time, with
          maximum code reuse while preserving maintainability
    \item Mentored multiple junior and senior engineers
    \item Open-Source contributions visible at
          \url{https://github.com/readysettech/readyset/commits?author=glittershark}
  \end{itemize}}
\cventry{2019--2020}{Engineering Manager}{Urbint}{New York, NY}{}
{\begin{itemize}
   \item Lead of the platform team with two direct reports - a senior SRE and
     a senior software engineer.
   \item Performed user research on developers, project managers, product
     managers, and other internal stakeholders to build the roadmap for the
     platform team.
   \item Built and maintained a system to deploy one-off full stack
     application instances from pull requests to enable easier testing.
   \item Led a large, multi-project migration between CI systems that resulted
     in a decrease of average build times from 2 hours to less than 10 minutes.
   \item Maintained and extended Nix-based build and development
     infrastructure for both software engineers and machine learning engineers.
 \end{itemize}}
\cventry{2018--2019}{Senior Software Engineer}{Urbint}{New York, NY}{}
{\begin{itemize}
   \item Built, trained, and maintained a large, deep-learning-based
     image-detection model for semi-automated (human-in-the-loop) video
     classification.
   \item Designed, built, and maintained a novel in-house tool for collection of
     training data.
   \item Maintained and guaranteed reliability of a large data pipeline for
     video processing and classification.
 \end{itemize}}
\cventry{2017--2018}{Senior Software Engineer}{Urbint}{New York, NY}{}
{\begin{itemize}
   \item Integral in the architecture of a novel, serializable ACID
     transactional graph database built on RocksDB, first in Elixir then in
     Haskell.
   \item Helped ship customer deliverables involving multi-day data
     processing jobs for disparate data sources.
   \item Instructed other developers in the use of and theory behind Haskell
   \item Brought computational graph theory to bear on the problem of unifying
     disparate, highly heterogeneous data sources across the world of open data.
 \end{itemize}}
\cventry{2016--2017}{Senior Software Engineer}{SecurityScorecard, Inc.}{New York, NY}{}
{Lead frontend developer for a rapidly-moving and growing security software startup.
  \begin{itemize}
    \item Took part in collaborative product design meetings to make UX
      tradeoffs with product designers and managers.
    \item Drove application architecture for a large, complex, data-driven frontend
      application.
    \item Championed increased use of production monitoring and alerting.
    \item Worked with business stakeholders to set long- and short-term priorities for
      application development.
    \item Mentored junior team members.
  \end{itemize}}
\cventry{2015--2016}{Lead Developer}{Nomi, Inc.}{New York, NY}{}
{Lead web services developer transitioning to a full-stack role implementing
  shared software components and architecting a large, complex microservices
  application ingesting hundreds of gigabytes of IoT data per week.
  \begin{itemize}
    \item Lead application architecture of the majority of the backend services to
      encourage consistent REST API design and code sharing.
    \item Championed the use of Haskell for rapid, safe development of the API Gateway
      service.
    \item Took ownership of operations and server maintenance of a >100-instance AWS
      account using Puppet.
  \end{itemize}}
\cventry{2014--2015}{Lead Developer}{LandlordsNY, LLC}{New York, NY}{}
{Sole engineer for a small startup connecting landlords and property managers and
  facilitating the online sharing of information in a historically technology-averse
  industry.
  \begin{itemize}
    \item Drove product design, visual design, and UX architecture for a major revamping
      of the core product.
    \item Interfaced with customers to set priorities for new feature development.
    \item Conducted hiring and recruiting to build out an engineering team.
  \end{itemize}}
\cventry{2012--2014}{Associate Developer}{Visionlink Inc.}{Boulder, CO}{}
{Integral member of an agile development team building the nation's most-used Information
  and Referral platform for organizations such as United Way Worldwide and the American Red
  Cross.
  \begin{itemize}
    \item Refactored and revamped legacy code to increase performance and long-term
      maintainablity.
    \item Worked on several triage-teams to rapidly fix production bugs with strict deadlines.
    \item Built a complex, yet highly-performant tool for searching human services by category.
    \item Acted as a core designer and developer of a major product revamp.
      \begin{itemize}
        \item Drove a complete rethinking of the data model in the product, leading to greater
          unification, simplicity, and consistency;
        \item Championed the adoption of a test-driven-development model;
        \item Drove product documentation and code standardization.
      \end{itemize}
  \end{itemize}}

\section{Project Highlights}
\newcommand{\project}[3]{\item \textbf{#1} -- \textit{#2}\newline{}#3}
\cvitem{}{
  \begin{itemize}
    \project{How much does Rust's bounds checking actually cost?}
    {\url{https://blog.readyset.io/bounds-checks/}}{Blog post providing a deep
        evaluation of the runtime cost of bounds checking in safe languages like Rust.
        Front page of Hacker News, doubled month-over-month ReadySet waitlist signups}
    \project{Tvix}{\url{https://tvix.dev}}{
        % TODO(aspen): and now in your own words :)
        Modular Reimplementation of the Nix build tool in Rust}
    \project{Panettone}{\url{https://code.tvl.fyi/tree/web/panettone}}{
        Aggressively simple bug-tracker developed in Common Lisp for the community
        involved in the development of Tvix. Hosted at https://b.tvl.fyi}
    \project{Org-Clubhouse}{\url{https://github.com/glittershark/org-clubhouse}}{
        Emacs library for integration between org-mode and the Clubhouse issue
        tracker}
    \project{Github Bug Bounty}{\url{https://bounty.github.com/researchers/glittershark.html}}{
        Discovered and responsibly disclosed a persistent XSS on Github's main
        website}
    \project{core-async-storage}{\url{https://github.com/glittershark/core-async-storage}}{
        Simple Clojurescript wrapper around React Native's AsyncStorage using
        core.async}
  \end{itemize}
}

\end{document}
% vim: set tw=95 colorcolumn=-1:
