diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..2a43b86 Binary files /dev/null and b/.DS_Store differ diff --git a/Dustin Swan - Resume.pdf b/Dustin Swan - Resume.pdf deleted file mode 100644 index f335704..0000000 Binary files a/Dustin Swan - Resume.pdf and /dev/null differ diff --git a/assets/abbott.png b/assets/abbott.png new file mode 100644 index 0000000..b415659 Binary files /dev/null and b/assets/abbott.png differ diff --git a/assets/iosevka-fixed-regular.woff2 b/assets/iosevka-fixed-regular.woff2 new file mode 100644 index 0000000..02468c2 Binary files /dev/null and b/assets/iosevka-fixed-regular.woff2 differ diff --git a/assets/mr.png b/assets/mr.png new file mode 100644 index 0000000..96ca98a Binary files /dev/null and b/assets/mr.png differ diff --git a/assets/uic.png b/assets/uic.png new file mode 100644 index 0000000..49d540b Binary files /dev/null and b/assets/uic.png differ diff --git a/assets/visionable.png b/assets/visionable.png new file mode 100644 index 0000000..0c62ba3 Binary files /dev/null and b/assets/visionable.png differ diff --git a/old resume.pdf b/old resume.pdf deleted file mode 100644 index 64c920b..0000000 Binary files a/old resume.pdf and /dev/null differ diff --git a/res.cls b/res.cls deleted file mode 100644 index e033d4a..0000000 --- a/res.cls +++ /dev/null @@ -1,803 +0,0 @@ -% RESUME DOCUMENT STYLE -- Released 23 Nov 1989 -% for LaTeX version 2.09 -% Copyright (C) 1988,1989 by Michael DeCorte - -\typeout{Document Style `res' <26 Sep 89>.} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% res.sty -% -% \documentstyle{res} -% -% Copyright (c) 1988 by Michael DeCorte -% Permission to copy all or part of this work is granted, provided -% that the copies are not made or distributed for resale, and that -% the copyright notice and this notice are retained. -% -% THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO -% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK, -% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS -% FOR ANY PARTICULAR PURPOSE. -% -% If you make any improvements, I'd like to hear about them. -% -% Michael DeCorte -% P.O. Box 652 -% Potsdam NY 13676 -% mrd@sun.soe.clarkson.edu -% mrd@clutx.bitnet -% -% Changes for LaTeX2e -- Venkat Krishnamurthy (Aug 7, 2001) -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% You can have multiple style options the legal options ones are: -% -% centered the name and address are centered at the top of the -% page (default) -% -% line the name is the left with a horizontal line then -% the address to the right -% -% overlapped the section titles overlap the body text (default) -% -% margin the section titles are to the left of the body text -% -% 11pt use 11 point fonts instead of 10 point fonts -% -% 12pt use 12 point fonts instead of 10 point fonts -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Commands -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \Resume prints the word resume but typeset nicely -% -% \newsectionwidth{dimen} -% defines the amount of space the labels extend -% into the left margin. -% DO NOT TRY to change any of the dimensions -% yourself. You will probably confuse the style file. -% -% \name{text} defines your name -% -% \address{text} -% defines your address -% this can be called twice if you have two addresses -% use \\'s to indicate where either line breaks or -% comas should go -% -% \opening this prints your name and address at that spot -% this is not normally needed, as \begin{resume} -% does this but is provided just in case you need -% to do something odd -% -% \begin{resume} ... \end{resume} -% all of the resume should go inside of this -% environment -% -% \section{text} -% This prints 'text' in the left hand margin. -% Its exact placement depends on what the style -% options has been set to. (overlapped or margin) -% You should use \\ to start a new line. If the -% style option is margin, the \\ is converted -% to a space. -% To use this in any of the list environments, put -% the \section after the \item[] but before the -% text. -% Eg. -% \begin{itemize} -% \item\section{text} -% text -% \end{itemize} -% -% \begin{ncolumn}{n} ... \end{ncolumn} -% creates a tabular environment with n equally -% spaced columns. Separate columns by & and -% end them with \\ -% -% \begin{position} ... \end{position} -% this is used to print a job description. There should -% be only one job description in it. Information -% related to the job (such as title, dates...) will -% be printed. -% -% \begin{format} ... \end{format} -% used to change the default format for the position -% environment. Within it the recognized commands are: -% \title{option} -% \employer{option} -% \location{option} -% \dates{option} -% \body -% \\ -% where option is one of l,r,c standing for left, right, center. -% The format will eventually be used to make several -% tabular environments and you are defining the number of columns -% and the placement of text within the columns of the tabulars. -% Each row is terminated by a \\. Any number of options can -% be on a line, they will each be set in their own columns. -% Any of the options except \body may be left out. -% -% Eg. -% \begin{format} -% \title{l}\employer{r}\\ -% \dates{r}\\ -% \body\\ -% \location{l}\\ -% \end{format} -% -% In this example the title and employer information -% are set in 2 columns left justified and right justified -% respectively. Then the date is set right justified. -% Then the body is set. Then the location is set left -% justified. -% -% \employer{text} -% \title{text} -% \dates{text} -% \location{text} -% declare text for the next invocation of the position -% environment -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Glue -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% sectionskip the amount of horizontal before a section -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Dimensions -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% sectionwidth the amount that the section titles go in the -% left margin -% -% resumewidth the width of the total resume from the left -% margin to the right. Don't use textwidth -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Definitions -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% sectionfont the font used to print section titles -% use \renewcommand to change it -% -% namefont the font used to print your name -% use \renewcommand to change it -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% THINGS TO DO -% -% add lm,rm options to format style to allow things to be placed -% in the left or right margin respectivly -% -% add capability so that \body doesn't have to be proceeded (followed) -% by a \\ allowing part of the description (eg. location) to be the -% first (last) thing of the body -% -% clean up the list building procedures -% -% write docs to tell people how to use this - -\NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesClass{res}[2000/05/19 v1.4b Resume class] - -%\DeclareOption{11pt}{\renewcommand\@ptsize{1}} -%\DeclareOption{12pt}{\renewcommand\@ptsize{2}} - -\PassOptionsToClass{11pt,12pt}{article} -\LoadClassWithOptions{article} - -\newif\if@line -\newif\if@margin - -\DeclareOption{line}{\@linetrue} -\DeclareOption{centered}{\@linefalse} - -\DeclareOption{margin}{\@margintrue} -\DeclareOption{overlapped}{\@marginfalse} - -\ExecuteOptions{overlapped,centered} -\ProcessOptions\relax - -\nofiles % resume's don't need .aux files - - -\newtoks\tabular@text % holds the current list being processed -\newtoks\tabular@head % holds the head tabular list -\newtoks\tabular@tail % holds the tail tabular list -\newtoks\@ta % used by \@append -\newtoks\undefined@token\undefined@token={} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% prints a centered name with the address centered -% or the two address on opposite sides of the page -% -\def\@printcentername{\begingroup - % print the name centered - \leavevmode\hbox to \textwidth{\hfil\@tablebox{\namefont\@name}\hfil}\par - \@ifundefined{@addressone}{% - % do nothing - }{% - \@ifundefined{@addresstwo}{ - % only one address - \leavevmode\hbox to \textwidth{\hfil\@tablebox{\@addressone}\hfil}\par - }{ - % two addresses - \leavevmode\hbox to \textwidth{\@tablebox{\@addressone}\hfil - \@tablebox{\@addresstwo}}\par - }% - }% -\endgroup} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% this is used to print the name and address at the top of -% the page with a hline in between -% -\def\namefont{\large\bf} -\def\@linename{\begingroup - \def\\{, } - {\namefont\@name} - \vskip 2pt - \fullline - \vskip 2pt - % where do you live? - \@ifundefined{@addressone}{% - % do nothing - }{% - \leavevmode\hbox to \textwidth - {\hfill\vbox{\hbox{\@addressone} - \hbox{\@addresstwo} - }% - }\par - } -\endgroup} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% HEADINGS: -% There are two types of headings: -% 1) one with the name centered and the address centered or -% in the left and right side if there are two address -% 2) one where the name is in the upper left corner -% the a line accross the paper -% then the address all on one line in the right corner -% the second address will be directly below the first if defined -% -\let\print@name\relax -\def\ds@centered{\ifx\print@name\relax\let\print@name\@printcentername\fi} -\def\ds@line{\ifx\print@name\relax\let\print@name\@linename\fi} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Use this to set the sectionwidth. -% It adjust the width of the text as well as the hoffset -% You probably shouldn't touch any of the size paramaters -% unless you really understand all of this but it is not -% hard. Either way, it can only be executed once -% -\def\sectionfont{\bf} -\newdimen\sectionwidth -\newskip\sectionskip -\newdimen\resumewidth - -\resumewidth=6.5in -\sectionskip=3.5ex plus 1ex minus -.2ex % values stolen from LaTeX - -\def\newsectionwidth#1{% - \sectionwidth=#1 - \textwidth=\resumewidth - \advance\textwidth-\sectionwidth - \hsize=\textwidth - \hoffset=\sectionwidth -} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% This is for sectiontitles that are entirely in the left margin. -% multiline sectiontitles are permited and will be broken by -% \TeX{} to fit into a box \verb|\sectionwidth| wide. It is advised -% that \verb|\\| be used to break the lines by hand as \TeX{} will -% probably not do what you want. -% -% When using this with {\tt tabbing} and {\tt list} (or anything -% that is made out of {\tt list}) put the \section's inside of -% the \verb|\begin{}| and the \verb|\item|Eg. -% \begin{verbatim} -% \begin{trivlist} -% \item[] -% \section{foo} -% text -% \end{trivlist} -% \end{verbatim} -% -\def\boxed@sectiontitle#1{% - % this macro may be called in a tabular. Special code must be written - % to accomodate this. In LaTeX, a tabular is made out of hboxes. - % TeX never goes into horizontal mode because of this; it only - % gets into vertical mode and restricted horizontal mode. Certain - % indenting problems must be handled because of this. They - % are delt with at the end of this routine. - % It is also necessary to close the hbox that was created before - % the \section and create a new one when this macro has ended. - % This macro therefore simulates a \kill, so that any text before - % the \section not be printed. The proper use is therefore - % ... - % text\\ - % \section{foo} - % more text\\ - % ... - \ifx\\\@tabcr % is this in a tabular? (this *should* work but is a cludge) - \@stopfield % the is the first part of a \kill - \else - \@@par % This will end the previous paragraph if needed and - % go into vertical mode. If this was already in - % vertical mode then the \par does nothing. - - \fi - \begingroup - \everypar={}% - \def\par{\@@par}% - \let\\=\@normalcr - \addpenalty{\@secpenalty} % this would be a good place for a page break - % \@secpenalty is what LaTeX uses before its - % section's. It happens to be -300 - \addvspace{\sectionskip} % put in a bit of glue - % The following hbox will be contributed to the page list without going - % into horizontal mode. Therefore, any \parindent's, \parshape's, \leftskip - % will be ignored but \hoffset's are not. The result is that the box will - % only by \hoffset. This is what I want - \hbox to 0pt{% - \hss % this is an llap. In other words, this glue - % will shrink by the width of the stuff in the vbox - % (\sectionwidth) into the left margin and then - % insert the contents of the vbox. - \vtop to 0pt{% make a 0pt height paragraph, with the baseline at the - % lined up with the baseline of the first box in the list - \leftskip=0pt - \hsize=\sectionwidth - \textwidth=\sectionwidth - \raggedright % you don't want this filled out to the right margin - \sectionfont - #1\vss % Go into horizontal mode; do the paragraph; - % go into vertical mode; add some negative glue - % to give a box of 0pt height and depth - }% - }% - \addpenalty{-\@secpenalty} % this would be a bad place for a page break - \vskip-\baselineskip % when the next box is processed, baselineskip glue - % glue will be added (the box has no depth because of - % the \vss; therefore, we don't have to worry about - % \lineskiplimit). This -\baselineskip glue - % is to undo this. \nointerlineskip doesn't - % work because the baseline of this line would be lined - % up with the top of the top of the next box. We - % want the baselines lined up. - % - % It may have been possible to do this by forcing the - % baseline of this box to be the top of the box but - % then the interline skip between this box and the - % previous box would be off as the baselines of the - % this box (the one that being made above) and the - % previous line would be separated by \baselineskip - % (probably, it may be separted by the depth of the - % previous box + \lineskip) but as the baseline of - % this box has been moved to the top, the box's would - % separted by to much glue. The exact amount being - % the height of this box. - \endgroup - \ifx\\\@tabcr % is this in a tabular? (this *should* work but is a cludge) - % this is the second part of the \kill; it starts the next tabbing line - % Because this routine will never get into paragraph mode when used in - % tabbing the \parskip that is discussed below will never be inserted. - % Therefore it should not be negated as done below. - \@startline - \ignorespaces - \else - \vskip-\parskip % The next thing to be contributed will be a paragraph. - % Right before being contributed though a \vskip\parskip - % will be inserted. This is to negate it. - % - % I do consider this to be a bit of a cludge but - % I can not find a way to write \unskipfutureskip - % or a way to make TeX think that nothing has - % been contributed to the page list. - \fi -} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% This is for sectiontitles that are entirely above the section text -% -\def\unboxed@sectiontitle#1{% - \ifx\\\@tabcr % see boxed@sectiontitle for explation - \@stopfield - \else - \@@par - \fi - \begingroup - \everypar={}% - \def\par{\@@par}% - \def\\{ } - \addpenalty{\@secpenalty} - \addvspace{\sectionskip} - \hbox to 0pt{\hss\hbox to \sectionwidth{\sectionfont#1\hss}} - \addpenalty{-\@secpenalty} % this would be a bad place for a page break - \endgroup - \ifx\\\@tabcr % see boxed@sectiontitle for explation - \@startline - \else - \vskip-\parskip - \fi - \ignorespaces -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% There are two types of section headings: -% 1) the section heading is all on one line and directly -% below it, is the body of the text -% 2) the section heading is entirely in the left margin -% (possibly taking multiple lines) with the body of -% the text next to it -% -\let\@@section\relax -\def\ds@overlapped{\ifx\@@section\relax\newsectionwidth{0.5in}\let - \@@section\unboxed@sectiontitle\fi} -\def\ds@margin{\ifx\@@section\relax\newsectionwidth{1.3in}\let - \@@section\boxed@sectiontitle\fi} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% DEFAULTS: (some of them) -% -% centered name -% overlapped section titles -% -% format is: -% title employer -% location dates -% body -% with everything in the left of its column - -%\input article.sty - -\if@line\ds@line\else\ds@centered\fi -\if@margin\ds@margin\else\ds@overlapped\fi - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% typeset resume all nice and pretty -% -\def\Resume{{R\'{e}sum\'{e}}} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% makes a line of width \textwidth starting at -\hoffset -% -\def\fullline{ % hrules only listen to \hoffset - \nointerlineskip % so I have this code - \moveleft\hoffset\vbox{\hrule width\textwidth} - \nointerlineskip -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% create a multiline box. -% -\def\@tablebox#1{\begin{tabular}[t]{@{}l@{\extracolsep{\fill}}}#1\end{tabular}} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% use this to define your name -% -\def\name#1{\def\@name{#1}} - -\def\@name{} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% use this to define your address, this may be called more than once. -% -\let\@addressone\relax -\let\@addresstwo\relax - -\def\address#1{ - \@ifundefined{@addressone}{\def\@addressone{#1}}{\def\@addresstwo{#1}}} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% if you want to print your name and address is a slightly -% different format than sugessted, then this can be used -% to place it exactly where you want -% -\def\opening{\def\@opening{} - \begingroup - \leftskip=-\hoffset % I use leftskip to move things to the left as - \advance\textwidth\hoffset % changing hoffset doesn't work. But this - \hsize=\textwidth % doesn't really work as hboxes are rules - % are unaffeted - \let\par=\@@par - \parindent=0pt - \parskip=0pt - \print@name - \endgroup -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% all of the resume goes in the resume environment -% -\newenvironment{resume}{\begingroup - \@ifundefined{@opening}{\opening}{} -}{\endgroup} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% gives you a tabular environment with n equally spaced columns -% \begin{ncolumn}{#} ... \end{ncolumn} -% -% The p option of LaTeX is broken in all but the newest verion -% of latex.tex, this is how to fix it -% -\def\@endpbox{\par\egroup\hfil} -\let\@@endpbox=\@endpbox - -\newdimen\@columnwidth % the width of each column equal to -\def\ncolumn#1{% - % \@columnwidth = \textwidth / #1 - \@columnwidth=\textwidth \divide\@columnwidth by #1 - \begin{tabular*}{\textwidth}[t]% - {*{#1}{@{}p{\@columnwidth}@{\extracolsep{\fill}}}} -} - -\def\endncolumn{\end{tabular*}} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \employer{text} defines employer to be text -% \location{text} defines location to be text -% \dates{text} defines dates to be text -% \title{text} defines title to be text -% \body -% - -\def\employer#1{\def\@employer{\print@employer{#1}}} -\def\location#1{\def\@location{\print@location{#1}}} -\def\dates#1{\def\@dates{\print@dates{#1}}} -\def\title#1{\def\@title{\print@title{#1}}} - -\let\l@justify\raggedright -\let\r@justify\raggedleft -\let\c@justify\centering - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \@format{name}{justify} -% will define \print@#1 to print it's one argument -% justified according to #2 which can be -% l = left -% r = right -% c = center -% -% eg. -% \@format{employer}{c} -% is the same as \def\print@employer#1{{\centering #1\par}} -% -\def\@format#1#2{% - \expandafter\gdef\csname print@#1\endcsname##1{% - {\csname#2@justify\endcsname##1\par}} -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% this is used to define how the position environment should -% formated. -% -% \begin{format} positioning text \end{format} -% where positioning text may be -% \employer{pos} -% \location{pos} -% \dates{pos} -% \title{pos} -% \body (for the body of the position environment) -% where pos is -% l for left -% r for right -% c for center -% use \\ to break the line -% you don't have to use all of the options. -% on any one line, you should indicate what you want on that line -% and where it should go within its column. -% eg. -% the following prints the employer in the left with the location -% centered within that its column. It then prints the date on the -% right. Then it prints the body of the position environment. Then -% it prints the title centered within its column; as there is only -% one column here it is really just centered. -% -% \begin{format} -% \employer{l}\location{c}\\ -% \dates{r}\\ -% \body\\ -% \title{c}\\ -% \end{format} - -\newcounter{numberofcolumns} -\newenvironment{format}{% - \def\end@line@head{\append@tabular@head{tabular@text}\tabular@text={}% - \c@numberofcolumns 0} - \def\end@line@tail{\append@tabular@tail{tabular@text}\tabular@text={}% - \c@numberofcolumns 0} - \tabular@text={} - \tabular@head={} - \tabular@tail={} - \c@numberofcolumns 0 - \let\\=\end@line@head - \def\employer##1{\advance\c@numberofcolumns 1 - \@format{employer}{##1} - \append@tabular@text{employer}} - \def\location##1{\advance\c@numberofcolumns 1 - \@format{location}{##1} - \append@tabular@text{location}} - \def\dates##1{\advance\c@numberofcolumns 1 - \@format{dates}{##1} - \append@tabular@text{dates}} - \def\title##1{\advance\c@numberofcolumns 1 - \@format{title}{##1} - \append@tabular@text{title}} - \def\body{\iftoks\tabular@head\undefined@token\then - \else - \@append{\noexpand\\}\to\tabular@head - \skotfi - \let\\=\end@line@tail}}{} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%taken from page 378 of TeXbook but freely hacked -% -% appends the expansion of #1 to the token list #2 - -\def\@append#1\to#2{% - \@ta=\expandafter{#1}% - \xdef\@append@temp{\the#2\the\@ta} - \global#2=\expandafter{\@append@temp}% -} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% CHAA006%vaxb.rhbnc.ac.uk@NSS.Cs.Ucl.AC.UK -% texhax.88.078 -% is used to see if two token lists are equal -% there must be a better way -% - -\let \then = \empty -\def \iftoks #1#2\then #3\else #4\skotfi{ - \edef \1{\the #1} - \edef \2{\the #2} - \ifx \1\2\then #3\else #4\fi} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \append@tabular@text{command} -% -% appends command to the end of \tabular@text. -% NOTE: command MUST be a command but without the \ -% Eg. \append@tabular@text{relax} -% -% used to define \tabular@text for the tabular environment -% used by append@tabular@head and append@tabular@tail -% - -\def\append@tabular@text#1{% -\iftoks\tabular@text\undefined@token\then - \global\tabular@text=\expandafter{\csname @#1\endcsname} -\else - \@append{&}\to\tabular@text - \@append{\csname @#1\endcsname}\to\tabular@text -\skotfi -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% append@tabular@head -% -% appends command to the end of \tabular@text@head -% NOTE: command MUST be a command but without the \ -% Eg. \append@tabular@head{relax} -% -% used to define \tabular@head for the tabular environment -% used by the position environment -% -\def\append@tabular@head#1{% - \ifnum\the\c@numberofcolumns=0\relax - \else - \iftoks\tabular@head\undefined@token\then - \relax - \else - \@append{\noexpand\\}\to\tabular@head - \@append{\noexpand\penalty-\@secpenalty}\to\tabular@head - \skotfi - \@append{\noexpand\begin{ncolumn}}\to\tabular@head - \@append{\expandafter{\the\c@numberofcolumns}}\to\tabular@head - \@append{\the\csname#1\endcsname}\to\tabular@head - \@append{\noexpand\end{ncolumn}}\to\tabular@head - \fi -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% append@tabular@tail -% -% appends command to the end of \tabular@text@htail -% NOTE: command MUST be a command but without the \ -% Eg. \append@tabular@tail{relax} -% -% used to define \tabular@tail for the tabular environment -% used by the position environment -% -\def\append@tabular@tail#1{% - \ifnum\the\c@numberofcolumns=0\relax - \else - \iftoks\tabular@tail\undefined@token\then - \else - \@append{\noexpand\\}\to\tabular@tail - \@append{\noexpand\penalty-\@secpenalty}\to\tabular@tail - \skotfi - \@append{\noexpand\begin{ncolumn}}\to\tabular@tail - \@append{\expandafter{\the\c@numberofcolumns}}\to\tabular@tail - \@append{\the\csname#1\endcsname}\to\tabular@tail - \@append{\noexpand\end{ncolumn}}\to\tabular@tail - \fi -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% put the actual job descriptions here -% \begin{postion} ... \end{position} -% in the ... describe the position. -% don't put the \dates \location etc in here. define them before hand -\newenvironment{position}% - {% - \begingroup - \par - \the\tabular@head -% \addpenalty{-\@secpenalty}% bad place for a page break - \penalty -\@secpenalty % bad place for a page break - \penalty 10000 - \ignorespaces - }{% - \the\tabular@tail -% \addpenalty{\@secpenalty}% good place for a page break - \penalty \@secpenalty % good place for a page break - \endgroup -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% DEFAULTS: (the rest of them) -% -% centered name -% overlapped section titles -% -% format is: -% title employer -% location dates -% body -% with everything in the left of its column - -\@secpenalty = -500 -\topmargin 0pt -\headheight 0pt -\headsep 0pt -\textheight 9in -\parindent 0pt -\topmargin 0in -\oddsidemargin 0pt -\evensidemargin 0pt -\marginparwidth 0pt -\parindent 0pt -\parskip \baselineskip -\setcounter{secnumdepth}{0} -\def\@listI{\leftmargin\leftmargini -\topsep 0pt -\parskip 0pt -\partopsep 2pt plus 2pt -\parsep 2pt plus 2pt -\itemsep \parsep} - -\pagestyle{empty} % don't want page numbers - -\begin{format} -\title{l}\employer{r}\\ -\location{l}\dates{r}\\ -\body\\ -\end{format} - -\let\section\@@section - diff --git a/resume.html b/resume.html new file mode 100644 index 0000000..911b4e6 --- /dev/null +++ b/resume.html @@ -0,0 +1,233 @@ + + + + Dustin Swan - Resume + + + + + + + + + + + + + + + + + +
+
+

Dustin Swan

+ +
+

Software Engineer with over 15 years experience architecting, implementing, and shipping secure, cross-platform applications & APIs. Proficient in functional and object-oriented programming paradigms; delivering clean, maintainable code; utilizing modern, standards-based web technologies. +

+ +

Experience

+ +
+ +

Lead Software Developer

+
Major Rocket | Jan 2024 - present
+ +

+ PHP + MySQL + JavaScript + Less + AWS + Laravel +

+ +
    +
  • Developed multiple full-stack PHP & JavaScript e-commerce web applications, interfacing with Shopify, PayPal, & Braintree
  • +
  • Integrated new features on existing infrastructure; creating new APIs, databases, & backend logic
  • +
  • Collaborated closely with sales, B2B teams, and designers to build products aligned with business requirements
  • +
  • Implemented front-end designs and UI components across responsive web applications
  • +
+
+ +
+ +

Front End & API Lead Software Engineer

+
Visionable UK Ltd | 2009 - 2024
+ +

+ JavaScript + React + Vue.js + Angular + MobX + Electron + Node.js + Next.js + PHP + PostgreSQL + C++ + Qt + AWS + Laravel +

+ +
    +
  • Designed & developed our flagship responsive, cross-platform JavaScript video conferencing application
  • +
  • Architected, developed & documented our REST APIs
  • +
  • Lead a team of 7 front- & back-end developers, creating an AWS SaaS API platform and a React + NextJS web application
  • +
  • Worked closely with Product & Design teams to quickly turn ideas into functional prototypes
  • +
+
+ +
+ +

Validation Engineer

+
Abbott Laboratories | 2007 - 2009
+ +
    +
  • Managed projects and assembled cross-functional teams to construct change plans and assess product impact
  • +
  • Authored changes to testing documentation and product design records
  • +
  • Processed changes to quality system and product documents to comply with medical device regulatory requirements
  • +
  • Programmed automated testing control procedures using the Laboratory Information Management System (LIMS)
  • +
+
+ +

Education

+ + +
+ + +
+ + diff --git a/resume.tex b/resume.tex deleted file mode 100644 index 88fa583..0000000 --- a/resume.tex +++ /dev/null @@ -1,102 +0,0 @@ -\documentclass[margin]{res} - -\usepackage{vwcol} -\usepackage{calc} -\usepackage[none]{hyphenat} - -\topmargin=-0.25in -\addtolength{\textwidth}{.5in} -\addtolength{\textheight}{.75in} -\addtolength{\oddsidemargin}{-.25in} -\addtolength{\topmargin}{-.25in} - -\begin{document} - -\begin{resume} - -\moveleft.5\hoffset\centerline{\large\bf Dustin Swan} -\smallskip -%\moveleft.5\hoffset\centerline{318 Thompson Rd.} -%\moveleft.5\hoffset\centerline{Moriarty, NM 87035} -\moveleft.5\hoffset\centerline{dustinswan@gmail.com} -\smallskip -\moveleft.5\hoffset\centerline{(312) 608-2957} - -\newlength{\summarylength} -\setlength{\summarylength}{\textwidth+1.25in} - -\parshape 1 -\sectionwidth \summarylength -Passionate Software Engineer with eight years of experience architecting, -implementing, and shipping secure, cross-platform applications. Proficient in -functional and object-oriented programming paradigms; delivering clean, -maintainable codebases; utilizing modern, full-stack, web technologies. - -\section{LANGUAGES \& APIS} -{\sl Expert in} JavaScript ES6, HTML5, CSS, AJAX, REST, WebRTC, WebSockets \\ -{\sl Comfortable with} Elm, Haskell, Python, Ruby, PHP, Lisp, Bash \\ -{\sl Past experience with} C, C++, Objective C, Java - -\section{LIBRARIES \& FRAMEWORKS} -jQuery, Underscore/lodash, React, RxJS, AngularJS, Grunt, Jasmine, \\ -LESS/Sass/SCSS, Rails, Node.js, Express, Sails.js, Qt, PhoneGap - -\section{SOFTWARE \& SERVICES} -\begin{vwcol}[widths={0.2,0.8}, sep=.1cm, justify=flush,rule=0pt,indent=1em,lines=4] -{\sl OS \& Tools:} \\ -{\sl Databases:} \\ -{\sl Version Control:} \\ -{\sl Services:} \\ -Linux, Mac OS X, Vim, Emacs, Xcode, Eclipse, Microsoft Office \\ -MongoDB, MySQL, PostgreSQL, SQLite, ODBC \\ -Git, Perforce, Subversion \\ -Github, Heroku, AWS -\end{vwcol} - -\section{EXPERIENCE} -{\sl Software Engineer} \hfill 2009 - Present \\ -\smallskip -{\bf IOCOM Integrated Communications, Chicago, IL} - -\begin{itemize} \itemsep -1pt -\item Worked closely with backend developers and QA engineers to create a cross-platform, web-based video conferencing application suite. -\item Efficiently designed \& developed the video conferencing single-page JavaScript application and UI -\item Programming \& maintained the iOS PhoneGap application -\item Developed \& maintained the PHP server management web pages -\item Implemented a WebRTC audio \& video web application and JavaScript API -\item Created an in-house JavaScript framework for automated application testing -\item Continually refactored existing codebase for maintainability and - reliability, utilizing modern practices and standards -\end{itemize} - -{\sl Validation Engineer} \hfill 2007 - 2009 \\ -{\bf Abbott Laboratories, Abbott Park, IL} -\smallskip - -\begin{itemize} \itemsep -1pt -\item Managed projects and assembled cross-functional teams to construct change plans and assess product impact -\item Authored changes to testing documentation and product design records -\item Processed changes to quality system and product documents to comply with medical device regulatory requirements -\item Programmed automated testing control procedures using the Laboratory Information Management System (LIMS) -\end{itemize} - -\section{EDUCATION} -{\sl Bachelor of Science} \hfill 2007 \\ -University of Illinois at Chicago (UIC), Chicago, IL \\ -Major: Bioengineering \\ -Minors: Computer Science \& Mathematics - -\section{COURSEWORK} - -\begin{vwcol}[widths={0.2,0.8}, sep=.1cm, justify=flush,rule=0pt,indent=1em,lines=5] -{\sl Math:} \\ -{\sl Comp. Sci.:} \\ -{\sl Electronics:} \\ -{\sl Biology:} \\ \\ -Calculus I - IV, Differential Equations, Linear Algebra \\ -Algorithms, Languages and Automata, Data Structures \\ -Pattern Recognition, Signal Analysis, Discrete Continuous Signals \& Systems \\ -Modeling Physiological Data \& Systems, Bioinformatics, Biostatistics, \\ Bioinstrumentation, Genetics, Biomaterials -\end{vwcol} - -\end{resume} -\end{document} \ No newline at end of file