Resume - Matt Whipple

Site Nav

Source

My resume is authored in LaTeX and follows the typical structure of a preamble which provides some initialization and configuration followed by the document itself.

<<preamble>>
<<document>>

Preamble

The preamble itself defines the class and packages used, defines some local commands and then configures some settings.

<<load-class-and-packages>>
<<define-local-commands>>
<<configure-settings>>

Class and Packages

I'm using the ModernCV class[latex-moderncv-ctan] which is typically included in TeXLive "extra" bundles (including the extra fonts package). I use paralist[latex-paralist-ctan] to produce some more tightly formatted lists within line items. geometry[latex-geometry-ctan] is pulled in for some basic scaling.

\documentclass[roman]{moderncv}
\usepackage{paralist}
\usepackage[scale=0.85]{geometry}

Local commands

Some additional commands are defined here to support logical design throughout the document.

  • cventryprjs

    My resume structure generally consists of a position (entry) along with projects that were worked on while at that position. Therefore a command is defined to represent the construct of an entry containing projects.

    This command composes the arguments into a conventional structure.

    This takes as parameters:

    • the timeline for the entry
    • the title of the entry
    • the organization associated with the entry
    • the list of projects for the entry
    \newcommand{\cventryprjs}[4]{\cventry{#1}{#2}{#3}{}{}{\begin{cvprjs}#4\end{cvprjs}}}
    
  • cvprjs

    The list of projects within an entry uses a command so that any modification to the specific list implementation is coordinated.

    \newenvironment{cvprjs}{\begin{compactitem}}{\end{compactitem}}
    
  • cvprjsimple

    The projects listed within an entry come in a couple flavors. The most basic of which is one which only contains a description.

    \newcommand{\cvprjsimple}{\item}
    
  • cvprjtools

    A slightly richer type of project includes a list of tools/skills which were used in support of that project. This is an extension of the previous simple project which also takes a list of those tools.

    \newcommand{\cvprjtools}[2]{\cvprjsimple{#1\linebreak[3]\begin{cvtools}#2\end{cvtools}}}
    
  • cvtools

    The tool list is defined as a command to consolidate the styling and structure.

    \newenvironment{cvtools}{\begin{inparaenum}[]\em\ }{\end{inparaenum}}
    
  • tool

    Each tool within the tool list also has a basic command so that it can evolve if needed to match the enclosing environment.

    \newcommand{\tool}{\item}
    
  • cvrepo

    Outside of project-centric work I may have some (FOSS) code repositories that seem worth including, so these are defined as a separate type of resume entry.

    This takes as parameters:

    • the name of the repository
    • a URL to the respository
    • a brief description of the repository
    \newcommand{\cvrepo}[3]{\cvitem{#1}{#3\hspace*{\fill}\linebreak[1]\mbox{\url{#2}}}}
    

Configure Settings

  • General

    Pad list items slightly to prevent crowding.

  • Customize the Class

    Tweak some settings specific to the ModernCV class and provide some of the parameters it's expecting.

    Beyond the supported social types I'd like to include a GitLab link but currently it effectively does nothing.

  • TODO Support and render GitLab icon/link

Document

The document will start with some of the title trappings provided by ModenCV and will also correct for some of the 2.5m of vertical whitespace hardcoded in makecvhead which feels exorbidant (and unfortunately rigid).

It will then get into the main content itself consisting of the summmary, experience, and some repositories.

\begin{document}

\makecvtitle
\vspace{-2em} % Correct for 2.5em space in makecvhead.

<<summary>>
<<experience>>
<<open-source>>

\end{document}

Summary / Introduction

Figuring out the right text for this is somewhat of a struggle. I should likely look into some examples and guidance to steal from.

\section{Summary}
I am a driven autodidact with a track record of leading \&
contributing to solutions across a variety of domains throughout the
software development lifecycle.

Experience

Here's the main part which will include information for my last several roles.

\section{Experience}
<<robin>>
<<brightcove>>
<<harvard-business-publishing>>
<<freelance>>
  • Robin

    Robin is my current position and has been primarily concerned with building out a fairly straightforward analytics system.

    \cventryprjs{2019--present}{Principal Software Engineer}{Robin}
      {\cvprjtools{Designed and implemented end-to-end tests for an ETL process}
        {\tool Jest \tool Docker \tool Jenkins}
       \cvprjtools{Established practices and tooling to design and implement a dimensionally modeled data warehouse}
        {\tool dbt \tool Jupyter \tool AWS SageMaker \tool Pandas \tool Hypothesis \tool AWS Redshift}
       \cvprjtools{Initiated technical design for new analytics front-end}
        {\tool React \tool CubeJS \tool TypeScript} 
       \cvprjtools{Contributed to initial rollout of federated GraphQL gateway}
        {\tool Apollo \tool TypeORM \tool Kubernetes}
       \cvprjtools{Extended SCIM API to support enterprise user attributes}
        {\tool PHP \tool MySQL}
       \cvprjtools{Migrated analytics data store from Elasticsearch to PostgreSQL}
                 {\tool Go \tool AWS Aurora}}
    
  • Brightcove

    Brightcove provides a significant amount of resume fodder and was overall a great experience.

    \cventryprjs{2015--2019}{Principal Software Engineer}{Brightcove}
      {\cvprjtools{Led the team owning the video metadata REST API used to coordinate system interactions:
                   requiring highly available handling of $\approx 2500$ requests/second}
         {\tool Kotlin \tool Groovy \tool MongoDB}
       \cvprjtools{Designed integration of data from an acquired system into a consolidated data store}
         {\tool Go \tool Kafka \tool Kubernetes \tool AWS \tool MySQL \tool MongoDB \tool OpenAPI}
       \cvprjtools{Provided the initial solution \& guidance for coordination of data among
                   internal services}
         {\tool SNS \tool SQS \tool Lambda \tool DynamoDB}
       \cvprjtools{Enabled new search functionality while
                   reducing development costs through improvements to the syntax, codebase
                   \& result relevancy}
         {\tool Elasticsearch \tool Solr \tool Lucene \tool ANTLR}
       \cvprjtools{Diagnosed a scaling issue which threatened the
                   broadcast of an event to millions of users}
         {\tool AWS ELB (Classic) \tool Apache Tomcat \tool netstat}
       \cvprjtools{Refined practices \& tooling to support
                   infrastructure as code, operations, \& observability providing smoother
                   \& more controlled provisioning and management of resources}
         {\tool Terraform \tool Datadog \tool Sumologic \tool AWS}
       \cvprjsimple{Facilitated organization-wide adoption of documentation standards \& tooling}
       \cvprjtools{Designed \& led development of an API gateway used for customer
                   facing APIs which empowered each development team to configure and expose
                   their service while maintaining a baseline of consistent functionality}
         {\tool nginx \tool OpenAPI \tool Kubernetes \tool C \tool AWS \tool Kotlin}
       \cvprjtools{Led a team to update authorization services}
         {\tool OAuth2 \tool Clojure \tool Kotlin \tool Cassandra \tool Docker}
       \cvprjtools{Developed inter-team solutions for a variety of use cases regarding building,
                   releasing \& deploying software}
         {\tool Make \tool Docker \tool Bash \tool TeamCity \tool Gradle \tool Kubernetes \tool Git}
       \cvprjtools{Designed \& developed a service to manage inter-customer relationships
                   \& coordinate related changes}
         {\tool Kotlin \tool DynamoDB \tool ReactiveX \tool AWS}
       \cvprjtools{Configured a deployment environment and tooling for containerized applications}
         {\tool ECS \tool Terraform \tool TeamCity \tool AWS Lambda \tool Datadog \tool SumoLogic \tool CoreOS}
       \cvprjsimple{Designed workflows to preserve data consistency across resources \& systems}
       \cvprjtools{Removed a cause of spikes in database locks \& resulting latency by splitting
                   large transactions to use an asynchronous bottom half}
         {\tool Oracle \tool SQS \tool Hibernate}
       \cvprjtools{Established testing strategies which ensured coverage while minimizing overhead}
         {\tool Spock \tool Spek \tool Brine \tool RSpec \tool JUnit \tool BATS \tool Dredd}
       \cvprjtools{Improved traceability \& resiliency across threads/processes \& services by
                   establishing common patterns for integration points}
         {\tool Java \tool Logback}}
    
  • Harvard Business Publishing

    HBP was a good chance to modernize an organization and also provided some interesting challenges around bridging content and interaction.

    \cventryprjs{2011--2015}{Application Developer}{Harvard Business Publishing}
      {\cvprjtools{Automated build \& deployment processes to increase
                   reliability, repeatibility, \& baseline coding standards}
        {\tool Gradle \tool Jenkins \tool Sonar \tool Cargo \tool Liquibase \tool Spock \tool Jasmine}
       \cvprjtools{Established technologies \& best practices used throughout development team}
        {\tool Spring \tool JPA \tool AngularJS \tool Bootstrap \tool Jackson/REST}
       \cvprjsimple{Fostered sharing of technical knowledge throughout the organization by launching \&
                    coordinating weekly brown bag lunches with a variety of topics and presenters}
       \cvprjtools{Lowered the development overhead of exporting application data by introducing a PDF
                   rendering service with a visual designer and REST API}
        {\tool BIRT}
       \cvprjsimple{Improved scalability by increasing statelessness \& identifying logic that was leading
                    to quadratic growth of memory \& bandwidth when only linear was necessary}
       \cvprjtools{Introduced federated authentication while strengthening \& consolidating security configuration}
        {\tool Spring Security \tool Jasig/Apereo CAS \tool PingFederate(SAML)}
       \cvprjtools{Replaced an operational data based reporting system which suffered from performance issues
                   \& tangling with a processed data warehouse}
        {\tool Spring Integration \tool Spring Batch \tool Oracle}
       \cvprjsimple{Leveraged the reporting system above to provide realtime data sharing across applications
                    with minimal changes to the applications themselves}
       \cvprjtools{Reduced development time associated with an internal management application by constructing UI
                   elements based on automatically exposed metadata}
        {\tool Spring Data REST \tool JPA \tool AngularJS}
       \cvprjtools{Designed a Two Step View-style strategy for managing logically significant content which
                   allowed content entry, the content used, \& the logical wiring to each evolve and improve
                   independently}
        {\tool Alfresco \tool XSD/XSLT \tool FreeMarker \tool Google Closure Templates}
       \cvprjtools{Integrated media into applications while coordinating \& establishing internal standards}
        {\tool Kaltura \tool Flash \tool jQuery \tool HTML5 Video}}
    
  • Freelance

    My freelance work was a grab bag of technical projects. This lists some of the development work that came to mind.

    \cventryprjs{2002--2012}{Freelance Development \& Consulting}{}
      {\cvprjtools{Developed a basic CRM style application for tracking of prospects across a sales team}
        {\tool Google Web Toolkit \tool Google App Engine}
       \cvprjtools{Established a packaging \& installation process to allow provided database updates to be
                    safely \& easily applied by the client's IT staff}
        {\tool MS Access \tool Nullsoft Scriptable Install System \tool VBScript}
       \cvprjtools{Created new dynamic Web sites \& enhanced existing Web sites to support online payment
                   processing, user management, \& domain specific logic}
        {\tool PHP \tool Zend Framework \tool WordPress \tool CodeIgnitor \tool Python \tool Django \tool Pyramid
         \tool Perl \tool JavaScript \tool jQuery}
       \cvprjsimple{Integrated Google Maps into Web sites with features such as geolocation, nearby points of
                    interest, \& directions to the nearest out of possible destinations}
       \cvprjtools{Synchronized Web site content with office software calendars}
        {\tool Google Calendar API}
       \cvprjtools{Implemented a system inspired by Apache Coccoon \& Apache Sling to allow source documents to be rendered
                   for multiple channels such as Web, print, \& feeds}
        {\tool PHP \tool REST \tool XML \tool XSLT \tool XSL-FO}
       \cvprjtools{Designed a sales tracking \& reporting application}
        {\tool Visual Basic \tool C++ \tool wxWidgets}}
    

Open Source

This currently lists some of my own open source projects. At some point I'd like to fish out some more interesting contributions I've made to other projects but I'd ultimately like to just wait until I'm an established contributor to a particularly notable project.

\section{Selected Open Source Contributions}
  \cvrepo{Brine}{https://www.github.com/mwhipple/brine}
    {A Cucumber based DSL for testing REST APIs}
  \cvrepo{buildsrc}{https://www.github.com/mwhipple/buildsrc}
    {Scripts to assist with build-time software concerns}
  \cvrepo{nginx-build-module}{https://github.com/mwhipple/nginx-build-module}
    {Build tooling to support compilation of nginx modules indepenently
     of nginx}

Sources

Bibliography

  • [latex-moderncv-ctan] @misclatex-moderncv-ctan, title = CTAN: Package moderncv, url = https://ctan.org/pkg/moderncv?lang=en, status = todo,
  • [latex-paralist-ctan] @misclatex-paralist-ctan, title = CTAN: Package paralist, url = https://ctan.org/pkg/paralist, status = todo,
  • [latex-geometry-ctan] @misclatex-geometry-ctan, title = CTAN: Package geometry, url = https://ctan.org/pkg/geometry, status = todo,

Author: mwhipple

Created: 2020-10-27 Tue 19:36

Validate