Skip to content

Commit

Permalink
New resume version. Temp
Browse files Browse the repository at this point in the history
  • Loading branch information
ethanmsmith committed Jan 19, 2024
1 parent d8852bc commit 61ed6dd
Show file tree
Hide file tree
Showing 6 changed files with 112 additions and 70 deletions.
32 changes: 25 additions & 7 deletions awesome-cv.cls
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,10 @@
% Basic colors
\definecolor{green}{HTML}{C2E15F}
\definecolor{orange}{HTML}{FDA333}
\definecolor{purple}{HTML}{D3A4F9}
\definecolor{red}{HTML}{FB4485}
\definecolor{blue}{HTML}{6CE0F1}
\definecolor{purple}{HTML}{cc0099}
\definecolor{red}{HTML}{881c1c}
\definecolor{blue}{HTML}{3a8def}

% Text colors
\definecolor{darktext}{HTML}{414141}
\colorlet{text}{darkgray}
Expand All @@ -144,8 +145,9 @@
\definecolor{awesome-orange}{HTML}{FF6138}
\definecolor{awesome-nephritis}{HTML}{27AE60}
\definecolor{awesome-concrete}{HTML}{95A5A6}
\definecolor{awesome-darknight}{HTML}{131A28}
\colorlet{awesome}{awesome-red}
\definecolor{awesome-darknight}{HTML}{212721}
\colorlet{awesome}{awesome-emerald}
\colorlet{titlehighlight}{red}

% Boolean value to switch section color highlighting
\newbool{acvSectionColorHighlight}
Expand Down Expand Up @@ -201,7 +203,8 @@

% For elements of entry
\newcommand*{\entrytitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
\newcommand*{\entrypositionstyle}[1]{{\fontsize{8pt}{1em}\bodyfont\scshape\color{graytext} #1}}
\newcommand*{\entrytitlestylecolor}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{titlehighlight} #1}}
\newcommand*{\entrypositionstyle}[1]{{\fontsize{8pt}{0.5em}\bodyfont\scshape\color{darktext} #1}}
\newcommand*{\entrydatestyle}[1]{{\fontsize{8pt}{1em}\bodyfontlight\slshape\color{graytext} #1}}
\newcommand*{\entrylocationstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{awesome} #1}}
\newcommand*{\descriptionstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{text} #1}}
Expand Down Expand Up @@ -267,7 +270,7 @@

% Define writer's address
% Usage: \address{<address>}
\newcommand*{\address}[1]{\def\@address{#1}}
% \newcommand*{\address}[1]{\def\@address{#1}}

% Define writer's position
% Usage: \position{<position>}
Expand Down Expand Up @@ -608,6 +611,21 @@
\end{tabular*}%
}

% Define an entry of cv information with colored highlight.
% Usage: see \cventry
\newcommand*{\cventrycolor}[5]{%
\vspace{-2.0mm}
\setlength\tabcolsep{0pt}
\setlength{\extrarowheight}{0pt}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}}
\ifempty{#2#3}
{\entrypositionstyle{#1} & \entrydatestyle{#4} \\}
{\entrytitlestylecolor{#2} & \entrylocationstyle{#3} \\
\entrypositionstyle{#1} & \entrydatestyle{#4} \\}
\multicolumn{2}{L{\textwidth}}{\descriptionstyle{#5}}
\end{tabular*}%
}

% Define an environment for cvsubentry
\newenvironment{cvsubentries}{%
\begin{center}
Expand Down
2 changes: 1 addition & 1 deletion coverletter.tex
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@
% Leave any of these blank if they are not needed
\makecvfooter
{\today}
{Claud D. Park~~~·~~~Cover Letter}
{Ethan Smith~~~·~~~Cover Letter}
{}

% Print the title with above letter informations
Expand Down
99 changes: 61 additions & 38 deletions cv.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{
"basics": {
"name": "Ethan Smith",
"label": "Software Engineer",
"label": "Software Engineer \\& Technical Coach",
"picture": "",
"email": "[email protected]",
"email": "[email protected]",
"website": "ethansmith.io",
"summary": "I have included my passions for education and the free-sharing of knowledge proudly in my 3+ years of working as a software engineer in a highly regulated industry. Although I am confident in my skillset, I believe there is always room for self-improvement and look forward to learning and growing from new experiences.",
"summary": "I include my passions for education and the free-sharing of knowledge proudly as a software engineer and technical coach in a highly regulated industry. I focus on improving my team's knowledge sharing, automation, and reliability through collaborative work and documentation.",
"location": {
"address": "",
"postalCode": "",
"city": "Barre",
"city": "",
"countryCode": "US",
"region": "Vermont"
},
Expand All @@ -29,23 +29,57 @@
"work": [
{
"company": "Fidelity Investments",
"position": "Sr. Manager, LEAP Technical Coach",
"website": "https://fidelity.com",
"location": "Merrimack, NH \\& Remote",
"startDate": "2021-10-01",
"endDate": "Present",
"summary": "Coach recent college graduates to technical proficiency in full stack development",
"highlights": [
"Meet 1 on 1 with associates on a bi-weekly basis",
"Facilitate and evaluate associates' technical understanding by supervising assessments, performing code reviews, and reviewing completed work",
"Provide mentorship and technical oversight to associates working on development projects",
"Curated technical learning content for full stack engineers",
"Created interactive curriculum for differentiated JavaScript training",
"Reduced errors and minimized setup time for each learning cohort by automating repetitive business processes with PowerShell"
]
},
{
"company": "",
"position": "Software Engineer",
"website": "https://fidelity.com",
"location": "Merrimack, NH - Remote",
"location": "",
"startDate": "2018-02-05",
"endDate": "2021-09-30",
"summary": "Software engineer and platform admin supporting the enterprise Power Platform and SharePoint SaaS offerings",
"highlights": [
"Developed and maintained PowerShell modules to automate M365 administration",
"Aided in the technical interviews of potential team members",
"Facilitated monthly KT forums for off-shore and on-shore teams to connect on vital cross-team initiatives",
"Mentored and provided technical guidance for summer interns across various tech stacks",
"Acted as development lead for the enterprise Power Platform SaaS offering",
"Hosted thrice-weekly office hours to troubleshoot end users' issues and advise on best practices for SharePoint and Power Platform adoption",
"Automated critical processes to ensure SEC Rule 17a-4(f) and audit compliance",
"Participated in quarterly planning sessions to identify and refine the development team's product backlog",
"Served as the team's interim scrum master on multiple occasions in addition to performing daily development tasks",
"Reduced application support time by creating self service solutions with SharePoint, React, and Microsoft's SPFx framework",
"Implemented and drove adoption of a more secure credential protocol for automated PowerShell scripts",
"Performed migrations of SharePoint sites from on-prem to cloud"
]
},
{
"company": "",
"position": "Associate Software Engineer",
"website": "https://fidelity.com",
"location": "",
"startDate": "2017-09-11",
"endDate": "Present",
"summary": "Act as development lead for the enterprise Power Platform SaaS offering",
"endDate": "2018-02-05",
"summary": "Software engineer for the enterprise Power Platform SaaS offering",
"highlights": [
"Aid in the technical interviews of potential team members",
"Facilitate monthly KT forums for off-shore and on-shore teams to connect on vital cross-team initiatives",
"Mentor and provide technical guidance for summer interns across various tech stacks",
"Host tri-weekly office hours to troubleshoot users' issues and advise on best practices for SharePoint and Power Platform adoption",
"Automate critical processes to ensure SEC Rule 17a-4(f) and audit compliance",
"Participate in quarterly planning sessions to identify and refine the team's product backlog",
"Served as my team's interim scrum master on multiple occassions in addition to performing daily development tasks",
"Created self service solutions with React and Microsoft's SPFx framework",
"Refined my skills in Angular, Agile, Transact SQL, and Java Spring as a LEAP associate",
"Implemented a more secure credential protocol for automated PowerShell scripts"
"Participated in 'LEAP' technical training to refined my skills in Angular, Java, Spring, and PL/SQL as a LEAP associate",
"Performed migrations of SharePoint sites from on-prem to cloud",
"Developed and maintained PowerShell scripts to automate SharePoint administration and executive workflows",
"Participated in quarterly planning sessions to identify and refine the development team's product backlog"
]
},
{
Expand All @@ -55,10 +89,10 @@
"location": "Burlington, MA",
"startDate": "2016-05-01",
"endDate": "2016-08-31",
"summary": "Worked in an Agile scrum team to perform daily development tasks",
"summary": "Performed development tasks in an Agile scrum team on the Forex squad",
"highlights":[
"Utilized TDD to identify bugs and refactor Forex order processing code, increasing efficiency by 300%",
"Updated the Forex order form and order processing capabilities according to user feedback"
"Revised the Forex order form and order processing capabilities according to user feedback"
]
},
{
Expand All @@ -73,7 +107,9 @@
"Organized camp wide recreation",
"Recognized as one of the top 5% performing counselors nationwide"
]
},
}
],
"extraWork": [
{
"company": "U.S. Soccer Federation",
"position": "Referee",
Expand Down Expand Up @@ -139,37 +175,24 @@
],
"skills": [
{
"name": "Web Development",
"name": "Interpersonal",
"level": "Proficient",
"keywords": [
"React",
"Angular",
"NodeJS",
"gulp",
"HTML",
"CSS/Sass"
"Relationship management",
"Professional coaching"
]
},
{
"name": "Programming Languages",
"name": "Technical",
"level": "Proficient",
"keywords": [
"PowerShell",
"TypeScript",
"Javascript",
"C#",
"Java",
"PL/SQL",
"MSSQL"
]
},
{
"name":"Technical Skills",
"level":"Proficient",
"keywords": [
"git",
"perforce",
"Test driven development",
"Test driven development",
"Process automation"
]
}
Expand Down
6 changes: 3 additions & 3 deletions cv.tex
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
% Color for highlights
% Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange
% awesome-nephritis, awesome-concrete, awesome-darknight
\colorlet{awesome}{awesome-red}
\colorlet{awesome}{red}
% Uncomment if you would like to specify your own color
% \definecolor{awesome}{HTML}{CA63A8}

Expand Down Expand Up @@ -78,9 +78,9 @@
% Leave any of these blank if they are not needed

\makecvfooter
{\today}
{}
FOOTER
{\thepage}
{}


%-------------------------------------------------------------------------------
Expand Down
16 changes: 12 additions & 4 deletions generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,19 +45,27 @@ const cvSkills = (skills: cvSkill[]) =>
${skills.map(skill => cvSkill(skill.category, skill.skills)).join('\n')}
\\end{cvskills}`
const cvEntry = (firstRow: string, secondRow: string, thirdRow: string, startDate: string, endDate: string, list: cvItem[]) =>
`\\cventry
`\\cventrycolor
{${firstRow}}
{${secondRow}}
{${thirdRow}}
{${moment(startDate).format('YYYY.M.D')} - ${endDate !== "Present" ? moment(endDate).format('YYYY.M.D') : "Present"}}
{${moment(startDate).format('YYYY.M.D')} $\\minus$ ${endDate !== "Present" ? moment(endDate).format('YYYY.M.D') : "Present"}}
{
${cvItems(list)}
}`;
const cvEntryColor = (firstRow: string, secondRow: string, thirdRow: string, startDate: string, endDate: string, list: cvItem[]) =>
`\\cventrycolor
{${firstRow}}
{${secondRow}}
{${thirdRow}}
{${moment(startDate).format('YYYY.M.D')} $\\minus$ ${endDate !== "Present" ? moment(endDate).format('YYYY.M.D') : "Present"}}
{
${cvItems(list)}
}`;

const cvPersonal = (person: basics) => `
\\name{${person.name.split(' ')[0]}}{${person.name.split(' ')[1]}}
\\position{${person.label}}
\\address{${person.location.address} ${person.location.city}, ${person.location.region} ${person.location.postalCode}}
\\email{${person.email}}
\\homepage{${person.website}}
${person.profiles.filter(profile => profile.network === 'Github').length === 1 ? "\\github{" + person.profiles.filter(profile => profile.network === 'Github')[0].username + "}" : null}
Expand All @@ -71,7 +79,7 @@ export const skill = (Category: string, Skills: string[]) =>
cvSkill(Category, Skills);

export const education = (Degree: string, University: string, Location: string, StartDate: string, EndDate: string, Classes: string[]) =>
cvEntry(Degree, University, Location, StartDate, EndDate, [{ text: Classes.join(', ') }]);
cvEntryColor(Degree, University, Location, StartDate, EndDate, [{ text: Classes.join(', ') }]);

export const personal = (person: basics) =>
cvPersonal(person);
Expand Down
27 changes: 10 additions & 17 deletions gulpfile.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,64 +6,57 @@ import cv from './cv.json';
const outputDir = 'output'
const resumeFinalDir = '../ethanmsmith.github.io/'

gulp.task('personal', function () {
gulp.task('writing, formatting, and moving cv.tex', function () {
return gulp.src(['cv.tex'])
.pipe(replace('% BASICS', personal(cv.basics)))
.pipe(replace('FOOTER', `{${cv.basics.name}~~~·~~~Curriculum Vitae}`))
.pipe(gulp.dest(`${outputDir}/`));
});

gulp.task('experiences', () => {
gulp.task('writing and moving experiences.tex', () => {
return gulp.src(['cv/experience.tex'])
.pipe(replace('EXPERIENCES', cv.work.map(workItem =>
experience(workItem.position, workItem.company, workItem.location, workItem.startDate, workItem.endDate, workItem.summary, workItem.highlights ? workItem.highlights.map((highlight): cvItem =>
({ text: highlight })) : [])).join('\n')))
.pipe(gulp.dest(`${outputDir}/cv/`));
});

gulp.task('education', () =>
gulp.task('writing and moving education.tex', () =>
gulp.src(['cv/education.tex'])
.pipe(replace('EDUCATION', education(cv.education[0].area, cv.education[0].institution, cv.education[0].location, cv.education[0].startDate, cv.education[0].endDate, cv.education[0].courses)))
.pipe(gulp.dest(`${outputDir}/cv/`))
);

gulp.task('skills', () => gulp.src(['cv/skills.tex']).pipe(replace('SKILLS', cv.skills.map(skillItem =>
gulp.task('writing and moving skills.tex', () => gulp.src(['cv/skills.tex']).pipe(replace('SKILLS', cv.skills.map(skillItem =>
skill(skillItem.name, skillItem.keywords)).join('\n')))
.pipe(gulp.dest(`${outputDir}/cv/`))
);

gulp.task('summary', () =>
gulp.task('writing and moving summary.tex', () =>
gulp.src(['cv/summary.tex']).pipe(replace('SUMMPARAGRAPH', cv.basics.summary))
.pipe(gulp.dest(`${outputDir}/cv/`))
);

gulp.task('latex', (cb: any) => {
gulp.task('execute xelatex', (cb: any) => {
// gulp.src(['awesome-cv.cls']).pipe(gulp.dest(`${outputDir}/`));
// gulp.src(['fontawesome.sty']).pipe(gulp.dest(`${outputDir}/`));
exec(`cp -f awesome-cv.cls ${outputDir}/;cp -f fontawesome.sty ${outputDir}/;cp -R fonts ${outputDir}/fonts;cd ${outputDir}/;`, (err: any, stdout: any, stderr: any) => {
exec(`cp -f awesome-cv.cls ${outputDir}/;cp -f fontawesome.sty ${outputDir}/;cp -R fonts ${outputDir}/fonts;`, (err: any, stdout: any, stderr: any) => {
if (err) {
// node couldn't execute the command
console.log("ERROR: Some shit happened. Go fix it. Line: 46?");
console.log("ERROR: Some shit happened, not sure what. Good luck.");
}
else {
console.log("SUCCESS: Copied supporting files to " + outputDir);
exec(`xelatex cv.tex;`, (err: any, stdout: any, stderr: any) => {
console.log("Start compile")
exec(`xelatex cv.tex;`, {cwd: outputDir}, (err: any, stdout: any, stderr: any) => {
if (err) {
// node couldn't execute the command
console.log("ERROR:");
}
else {
console.log("SUCCESS: LaTex command completed succesfully");
gulp.src(`${outputDir}/cv.pdf`).pipe(gulp.dest(resumeFinalDir));
console.log("SUCCESS: Resume compiled and saved in final location");
cb();
}
console.log("Outside of if")
cb();
});
}
});
});

gulp.task('default', gulp.series('personal', 'summary', 'experiences', 'education', 'skills', 'latex'));
gulp.task('default', gulp.series('writing, formatting, and moving cv.tex', 'writing and moving summary.tex', 'writing and moving experiences.tex', 'writing and moving education.tex', 'writing and moving skills.tex', 'execute xelatex'));

0 comments on commit 61ed6dd

Please sign in to comment.