2020-07-27 16:32:34 -07:00
|
|
|
% Copyright 2018-2020 Kevin Cotugno
|
2020-07-27 17:57:48 -07:00
|
|
|
|
2020-08-24 18:14:11 -07:00
|
|
|
\vsize=9.5in
|
2020-07-27 20:45:37 -07:00
|
|
|
\voffset-.15in
|
2018-06-12 20:58:54 -07:00
|
|
|
\font\namefont=cmssdc10 at 30pt
|
|
|
|
\font\headingfont=cmr10 at 22pt
|
|
|
|
\font\subfont=cmr10 at 16pt
|
|
|
|
|
|
|
|
\parindent=0pt
|
|
|
|
\nopagenumbers
|
|
|
|
\newbox\main
|
|
|
|
\newbox\side
|
|
|
|
\newbox\divider
|
|
|
|
\newdimen\mainwidth
|
|
|
|
\newdimen\sidewidth
|
|
|
|
\newdimen\dividerwidth
|
|
|
|
\newdimen\sectionspace
|
|
|
|
\newdimen\sidehrulewidth
|
|
|
|
\newdimen\mainhrulewidth
|
|
|
|
|
2020-07-27 17:57:48 -07:00
|
|
|
\sidewidth=1.85in
|
2018-06-12 20:58:54 -07:00
|
|
|
|
|
|
|
\sectionspace=.75em
|
|
|
|
\dividerwidth=.4pt
|
|
|
|
\advance\dividerwidth by\sectionspace\advance\dividerwidth by\sectionspace
|
|
|
|
|
|
|
|
\sidehrulewidth=\sidewidth\advance\sidehrulewidth by\sectionspace
|
|
|
|
|
|
|
|
\mainwidth=6.5in
|
|
|
|
\advance\mainwidth by -\sidewidth\advance\mainwidth by -\dividerwidth
|
|
|
|
\mainhrulewidth=\mainwidth\advance\mainhrulewidth by\sectionspace
|
|
|
|
|
|
|
|
\def\item{\par\hangindent1em$\bullet$\enspace}
|
|
|
|
|
|
|
|
\def\sidehrule{\medskip\hrule width\sidehrulewidth\medskip}
|
|
|
|
\def\mainhrule{\smallskip\moveleft\sectionspace\vbox{\hrule width\mainhrulewidth}}
|
|
|
|
\def\name#1{\namefont #1\tenrm}
|
|
|
|
\def\heading#1 {\headingfont #1\tenrm\medskip}
|
|
|
|
\def\subhead#1 {\subfont #1\tenrm\bigskip}
|
|
|
|
\def\company#1 {\vskip-1.5em\tenit #1\tenrm}
|
|
|
|
\def\project#1 {\tenit #1\tenrm}
|
|
|
|
\def\textit#1{\tenit #1\tenrm}
|
|
|
|
\def\Go{\tenit Go\tenrm}
|
|
|
|
\def\Python{\tenit Python\tenrm}
|
|
|
|
\def\PostgreSQL{\tenit PostgreSQL\tenrm}
|
|
|
|
\def\ANSI{\tenit ANSI\tenrm}
|
2020-07-27 17:57:48 -07:00
|
|
|
\def\vsmallskip{\vskip0.05in}
|
2018-06-12 20:58:54 -07:00
|
|
|
|
|
|
|
\setbox\side=\vtop\bgroup
|
|
|
|
\hsize=\sidewidth\raggedright\pretolerance10000
|
|
|
|
|
|
|
|
\heading Contact
|
|
|
|
|
2019-03-21 20:47:55 -07:00
|
|
|
Phoenix, AZ
|
2018-06-12 20:58:54 -07:00
|
|
|
|
|
|
|
(949) 212-4747
|
|
|
|
|
2020-07-27 16:41:11 -07:00
|
|
|
kevin@kevincotugno.com
|
2018-06-12 20:58:54 -07:00
|
|
|
|
|
|
|
github.com/kcotugno
|
|
|
|
|
|
|
|
linkedin.com/in/kevincotugno
|
|
|
|
|
|
|
|
\sidehrule
|
|
|
|
|
2020-07-27 17:57:48 -07:00
|
|
|
\vsmallskip
|
2018-06-12 20:58:54 -07:00
|
|
|
\heading{Education}
|
|
|
|
|
|
|
|
\subhead{Thomas Aquinas College}
|
|
|
|
|
|
|
|
2012-2016
|
|
|
|
\medskip
|
|
|
|
Bachelor of Arts, Liberal Arts
|
|
|
|
|
|
|
|
Course work heavily emphasizes philosophy, mathematics, and science.
|
|
|
|
|
|
|
|
\sidehrule
|
|
|
|
|
2020-07-27 17:57:48 -07:00
|
|
|
\vsmallskip
|
2018-06-12 20:58:54 -07:00
|
|
|
\heading Skills
|
|
|
|
|
2020-07-27 17:57:48 -07:00
|
|
|
\vsmallskip
|
2018-06-12 20:58:54 -07:00
|
|
|
\subhead Languages
|
|
|
|
|
|
|
|
\item Ruby
|
|
|
|
\item Go
|
|
|
|
\item C\raise1.5pt\hbox{$\sharp$}
|
|
|
|
\item C
|
2019-03-21 20:21:49 -07:00
|
|
|
\item Rust
|
2018-06-12 20:58:54 -07:00
|
|
|
\item Bash
|
|
|
|
\item Python
|
|
|
|
\item JavaScript
|
|
|
|
|
|
|
|
\bigskip
|
|
|
|
\subhead Technologies
|
|
|
|
|
|
|
|
\item Ruby on Rails
|
|
|
|
\item .NET
|
|
|
|
\item PostgreSQL
|
2020-07-27 16:44:10 -07:00
|
|
|
\item SQLite
|
2018-06-12 20:58:54 -07:00
|
|
|
\item Redis
|
|
|
|
\item Sidekiq
|
2020-07-27 19:22:19 -07:00
|
|
|
\item gRPC
|
2020-08-18 21:46:13 -07:00
|
|
|
\item Docker
|
|
|
|
\item Nginx
|
2018-06-12 20:58:54 -07:00
|
|
|
\egroup
|
|
|
|
|
|
|
|
\setbox\main=\vtop\bgroup
|
|
|
|
\hsize=\mainwidth\baselineskip1em\parskip.5em
|
|
|
|
|
|
|
|
\heading Experience
|
|
|
|
|
2021-06-15 20:31:25 -07:00
|
|
|
\subhead{Senior Software Engineer}
|
2018-06-12 20:58:54 -07:00
|
|
|
|
2021-06-15 20:31:25 -07:00
|
|
|
\company Mavenlink \hfill February 2021--Present\medskip
|
|
|
|
\vskip-1em\hfill (Software Engineer)\ July 2016--February 2021
|
2020-08-16 13:08:51 -07:00
|
|
|
|
2020-09-28 22:22:18 -07:00
|
|
|
\item Maintain, along with my team, the Ruby on Rails platform for integrating
|
|
|
|
the core \textit{Mavenlink} product with other products and tools. This system
|
2020-09-28 22:26:42 -07:00
|
|
|
is responsible for moving critical data between a customer's various business
|
2021-04-08 08:56:55 -07:00
|
|
|
systems where reliability and data integrity are non-negotiable. It has
|
|
|
|
processed over 3 billion events. I spend about 95\% of my time on the backend
|
|
|
|
and about 5\% of it on the frontend.
|
2020-08-24 18:11:08 -07:00
|
|
|
|
|
|
|
\item Extend and maintain the core \textit{Mavenlink} public API focusing on a
|
|
|
|
consistent non-breaking user experience and clean maintainable code. I have
|
|
|
|
touched nearly all endpoints of the API as both a maintainer and a user of it.
|
|
|
|
http://developer.mavenlink.com/beta
|
|
|
|
|
2019-03-21 20:46:53 -07:00
|
|
|
\item Co-lead development on a new \textit{Ruby On Rails} application for bulk
|
2020-08-24 18:11:08 -07:00
|
|
|
legacy data importing to \textit{Mavenlink}. This platform sees an average of
|
|
|
|
five hundred thousand objects to process by a single account in a given
|
|
|
|
import session. The platform must also resolve inter-objects dependencies.
|
|
|
|
|
2020-07-27 17:01:39 -07:00
|
|
|
\item Scale existing services through algorithmic and \textit{SQL} design
|
2020-08-24 18:11:08 -07:00
|
|
|
optimizations; in one case, reducing a query involving over six million rows
|
|
|
|
from ten minutes to under one second.
|
|
|
|
|
2020-07-27 17:01:39 -07:00
|
|
|
\item Develop maintainable code in a strong test-driven development
|
|
|
|
environment.
|
2018-06-12 20:58:54 -07:00
|
|
|
|
|
|
|
\bigskip
|
|
|
|
|
|
|
|
\subhead{Junior Technical Analyst}
|
|
|
|
\company{LVCG, Inc.} \hfill June 2015--December 2015
|
|
|
|
|
2018-06-12 22:13:30 -07:00
|
|
|
\item Build and maintain a test suite for an assembly line management system.
|
2018-06-12 20:58:54 -07:00
|
|
|
\item Maintain an on-site relationship with the customer and perform
|
|
|
|
user acceptance testing with them.
|
|
|
|
|
|
|
|
\bigskip
|
|
|
|
\mainhrule
|
|
|
|
|
2020-07-27 17:57:48 -07:00
|
|
|
\vsmallskip
|
2018-06-12 20:58:54 -07:00
|
|
|
\heading Projects
|
|
|
|
|
2020-07-27 16:40:32 -07:00
|
|
|
\subhead Wingman
|
|
|
|
\company{Closed Source In Development} \hfill 2019-Present
|
|
|
|
|
|
|
|
An efficient and feature-rich \Go\ language background job scheduler.
|
|
|
|
|
|
|
|
\bigskip
|
|
|
|
|
2018-06-12 20:58:54 -07:00
|
|
|
\subhead Spectator
|
2020-09-28 22:22:18 -07:00
|
|
|
\vskip-1.5em http://github.com/kcotugno/spectator
|
2018-06-12 20:58:54 -07:00
|
|
|
|
2020-07-27 16:40:32 -07:00
|
|
|
\textit{Open Source} \hfill December 2017
|
2018-06-12 20:58:54 -07:00
|
|
|
|
2020-08-16 13:08:51 -07:00
|
|
|
A real-time console based \textit{Coinbase Pro} market visualizer. It is
|
2020-09-28 22:22:18 -07:00
|
|
|
written in \Go. It utilizes Websockets for receiving the streaming market data,
|
|
|
|
\ANSI\ escape codes, and \textit{IOCTL} calls for the UI. The architecture
|
|
|
|
heavily utilizes \Go's \textit{goroutines} to allow, for example, the UI to
|
|
|
|
update without being blocked by network code, and \textit{channels} for passing
|
|
|
|
messages between each independent module.
|
2018-06-12 20:58:54 -07:00
|
|
|
|
2020-09-28 22:22:18 -07:00
|
|
|
The challenge for this project was to gain practical experience with a
|
|
|
|
concurrent code base, and to understand the finer points of terminal
|
|
|
|
manipulation.
|
2018-06-12 20:58:54 -07:00
|
|
|
|
|
|
|
\egroup
|
|
|
|
|
|
|
|
\setbox\divider=\vbox\bgroup
|
2020-09-28 22:22:18 -07:00
|
|
|
\hskip\sectionspace\raise24pt\hbox{\vrule depth8.95in}\hskip\sectionspace
|
2018-06-12 20:58:54 -07:00
|
|
|
\egroup
|
|
|
|
|
|
|
|
\wd\main=\mainwidth
|
|
|
|
\wd\divider=\dividerwidth
|
|
|
|
\wd\side=\sidewidth
|
|
|
|
|
|
|
|
\name{Kevin Cotugno}
|
|
|
|
\medskip
|
|
|
|
\hrule
|
|
|
|
\hbox{\box\side\box\divider\box\main}
|
|
|
|
|
|
|
|
\bye
|