Compare commits

...

17 Commits
1b ... v2.1.3

Author SHA1 Message Date
eggy
b1b80349cb feat: add readme 2023-09-21 09:14:29 -04:00
eggy
f900fca1c0 chore: add back js 2023-09-18 14:06:03 -04:00
eggy
6ccf2d2fad chore: improve judging desc 2023-09-18 14:05:18 -04:00
eggy
39c736e9db feat: add judging script 2023-09-18 14:04:18 -04:00
eggy
9b031313b6 feat: mention what hack the borf is 2023-08-09 10:10:38 -04:00
eggy
1134628f06 feat: show uni end date 2023-09-05 14:11:20 -04:00
eggy
575b97fa0c feat: remove redis 2023-08-05 18:43:50 -04:00
eggy
1b0ac8d324 fix: remove mock to not imply non-interactive 2023-07-20 16:12:55 -04:00
eggy
03d85a07bb chore: refactor sources 2023-07-20 16:08:37 -04:00
eggy
69fd72579c feat: make a viable resume 2023-07-20 15:55:42 -04:00
eggy
3b220c1bc5 reduce mandown codecov 2023-07-13 23:05:07 -04:00
eggy
017479f6ad feat: increase font size and clean text 2023-07-13 22:13:31 -04:00
eggy
eeff3ee13d feat: switch to typst
far greater control
2023-07-10 22:45:59 -04:00
eggy
fabaaa263b feat: add htn
also make clear which lists have to have more stuff
2023-03-10 17:58:26 -05:00
eggy
131c2521b9 feat: winter 2023 coop skeleton 2023-02-12 16:30:59 -05:00
eggy
c468c8e5fc feat: replace resketch with aoto 2023-02-12 15:59:01 -05:00
eggy
e2bf494ba3 feat: clear 1st coop redundancies 2023-02-11 20:19:34 -05:00
5 changed files with 2170 additions and 243 deletions

View File

@@ -1,243 +0,0 @@
\documentclass[letterpaper,11pt]{article}
\usepackage{latexsym}
\usepackage[empty]{fullpage}
\usepackage{titlesec}
\usepackage{marvosym}
\usepackage[usenames,dvipsnames]{color}
\usepackage{verbatim}
\usepackage{enumitem}
\usepackage[hidelinks]{hyperref}
\usepackage{fancyhdr}
\usepackage[english]{babel}
\usepackage{tabularx}
\input{glyphtounicode}
\pagestyle{fancy}
\fancyhf{} % clear all header and footer fields
\fancyfoot{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\renewcommand{\familydefault}{\sfdefault}
% Adjust margins
\addtolength{\oddsidemargin}{-0.5in}
\addtolength{\evensidemargin}{-0.5in}
\addtolength{\textwidth}{1in}
\addtolength{\topmargin}{-.6in}
\addtolength{\textheight}{1.2in}
\urlstyle{same}
\raggedbottom
\raggedright
\setlength{\tabcolsep}{0in}
% Sections formatting
\titleformat{\section}{
\vspace{-4pt}\scshape\raggedright\large
}{}{0em}{}[\color{black}\titlerule \vspace{-5pt}]
% Ensure that generate pdf is machine readable/ATS parsable
\pdfgentounicode=1
%-------------------------
% Custom commands
\newcommand{\resumeItem}[1]{
\item\small{
{#1 \vspace{-2pt}}
}
}
\newcommand{\resumeSubItem}[1]{\resumeItem{#1}\vspace{-4pt}}
\renewcommand\labelitemii{$\vcenter{\hbox{\tiny$\bullet$}}$}
\newcommand{\resumeSubHeadingListStart}{\begin{itemize}[leftmargin=0.15in, label={}]}
\newcommand{\resumeSubHeadingListEnd}{\end{itemize}}
\newcommand{\resumeItemListStart}{\begin{itemize}}
\newcommand{\resumeItemListEnd}{\end{itemize}\vspace{-5pt}}
\newcommand{\resumeSubheading}[4]{
\vspace{-2pt}\item
\begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r}
\textbf{#1} & \textbf{\small #2} \\
\textit{\small#3} & \textit{\small #4} \\
\end{tabular*}\vspace{-7pt}
}
\newcommand{\resumeSubSubheading}[2]{
\item
\begin{tabular*}{0.97\textwidth}{l@{\extracolsep{\fill}}r}
\textit{\small#1} & \textit{\small #2} \\
\end{tabular*}\vspace{-7pt}
}
\newcommand{\resumeProjectHeading}[2]{
\item
\begin{tabular*}{0.97\textwidth}{l@{\extracolsep{\fill}}r}
\small#1 & \textbf{\small #2} \\
\end{tabular*}\vspace{-7pt}
}
\newcommand{\resumeAwardsHeading}[2]{
\item
}
\newcommand{\resumeEducationHeading}[5]{
\vspace{-2pt}\item
\begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r}
{\textbf{#1} $|$ \textit{\small#3}} & #2 \\
#5 & \textit{\small #4} \\
\end{tabular*}\vspace{-7pt}
}
%-------------------------------------------
%%%%%% RESUME STARTS HERE %%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
%----------HEADING----------
% \begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r}
% \textbf{\href{http://sourabhbajaj.com/}{\Large Sourabh Bajaj}} & Email : \href{mailto:sourabh@sourabhbajaj.com}{sourabh@sourabhbajaj.com}\\
% \href{http://sourabhbajaj.com/}{http://www.sourabhbajaj.com} & Mobile : +1-123-456-7890 \\
% \end{tabular*}
\begin{center}
\textbf{\huge \scshape Daniel Chen} \\ \vspace{1pt}
\href{https://eggworld.me}{\underline{eggworld.me}} $|$
\href{https://github.com/potatoeggy}{\underline{github.com/potatoeggy}} $|$
\href{tel:4377885713}{437-788-5713} $|$
\href{mailto:d7chen@uwaterloo.ca}{\underline{d7chen@uwaterloo.ca}} $|$
\href{https://www.linkedin.com/in/potatoeggy/}{\underline{linkedin.com/in/potatoeggy}}
\end{center}
%
%-----------PROGRAMMING SKILLS-----------
\section{Skills}
\begin{itemize}[leftmargin=0.15in, label={}]
\small{\item{
\textbf{Languages}{: HTML/CSS/JavaScript/TypeScript, Python, Bash, C++, Java, Dart, SQL, Rust} \\
\textbf{Frameworks}{: Node.js, React, Next.js, Vue 2/3, Nuxt.js, Flutter, Electron, Qt, FastAPI, TailwindCSS, VirtualBox, Sass } \\
\textbf{Tools}{: Linux, Git, Android, Docker, MyPy, WebSockets, Figma, Selenium, Poetry, Pillow, Pytest, Vuex, Pinia } \\
}}
\end{itemize}
%-----------EXPERIENCE-----------
\section{Experience}
\resumeSubHeadingListStart
% \resumeSubheading
% {Secretary}{Sep. 2022 -- present}
% {University of Waterloo Creative Writing Club}{Waterloo, ON}
% \resumeItemListStart
% \resumeItem{ Organised shit }
% \resumeItem{ idk maybe termcom is better }
% \resumeItemListEnd
\resumeSubheading
{Software Developer}{2022 -- present}
{UW Orbital Engineering Design Team}{Waterloo, ON}
\resumeItemListStart
\resumeItem{ Implemented the light service and an event queue for a real-time OS based on ambient light changes }
\resumeItemListEnd
\resumeSubheading
{General Executive}{2021 -- 2022}
{Bayview Computer Club}{Richmond Hill, ON}
\resumeItemListStart
\resumeItem{ Administered the club server to host club events, member accounts / websites, and activities }
\resumeItem{ Planned and implemented biweekly lessons to raise awareness of popular and niche topics such as emulation }
\resumeItem{ Ran the annual self-hosted school-wide competitive programming contest, designing fair but challenging problems }
\resumeItemListEnd
\resumeSubHeadingListEnd
% -----------Multiple Positions Heading-----------
% \resumeSubSubheading
% {Software Engineer I}{Oct 2014 - Sep 2016}
% \resumeItemListStart
% \resumeItem{Apache Beam}
% {Apache Beam is a unified model for defining both batch and streaming data-parallel processing pipelines}
% \resumeItemListEnd
% \resumeSubHeadingListEnd
%-------------------------------------------
%-----------PROJECTS-----------
\section{GitHub Projects}
\resumeSubHeadingListStart
% \resumeProjectHeading
% {\textbf{\href{https://github.com/potatoeggy/calprod}{Calprod}} $|$ \emph{ Vue }}{Sep. 2022 -- present}
% \resumeItemListStart
% \resumeItem{Description}
% \resumeItem{probably only a couple}
% \resumeItemListEnd
\resumeProjectHeading
{\underline{\textbf{\href{https://github.com/potatoeggy/mandown}{Mandown}}} $|$ \emph{Python, MyPy, Pytest, Qt, Typer, Poetry }}{2022 -- present}
\resumeItemListStart
\resumeItem{Created a real-time site scraper for metadata and images to automatically download comics}
\resumeItem{Implemented comic conversion between CBZ/EPUB/PDF as well as image processing to optimise for e-ink screens}
\resumeItem{Increased download and update speed by more than 100\% by implementing image caching and multiprocessing}
\resumeItem{Designed a responsive and accessible CLI with Typer and GUI with Qt 6}
\resumeItem{Wrote extensive unit tests to minimise regressions between release cycles}
\resumeItemListEnd
\resumeProjectHeading
{\underline{\textbf{\href{https://github.com/potatoeggy/ece198}{"Pillow" Water Quality Sensor}}} $|$ \emph{Rust, STM32}}{2022}
\resumeItemListStart
\resumeItem{Created a water quality statistics aggregator and visualiser on an embedded platform in safe Rust}
\resumeItem{Engineered an embedded system with a STM32 microcontroller, matrix keypad, and an LCD display}
\resumeItemListEnd
\resumeProjectHeading
{\underline{\textbf{\href{https://github.com/anyuan-chen/resketch}{Resketch}}} $|$ \emph{TypeScript, React, Next.js, WebSockets, Node.js, Figma, Google Cloud, TailwindCSS}}{2022}
\resumeItemListStart
\resumeItem{Developed a homegrown API backend to authenticate users and to create game rooms}
\resumeItem{Utilised Google Cloud APIs in real time to evaluate user drawing accuracy and award points}
\resumeItemListEnd
\resumeProjectHeading
{\underline{\textbf{\href{https://github.com/potatoeggy/primoprod}{Primoprod}}} $|$ \emph{TypeScript, Vue, Vuex, Electron, Android}}{2021}
\resumeItemListStart
\resumeItem{ Mocked a video game UI using CSS to create a hyper-realistic, cross-platform game simulator }
\resumeItem{ Reverse-engineered an API to allow Primoprod to interoperate with a popular web service (paimon.moe) }
\resumeItemListEnd
\resumeProjectHeading
{\underline{\textbf{\href{https://github.com/vincentjguo/recipeready-server}{RecipeReady}}} $|$ \emph{Dart, Flutter, Selenium, FastAPI, Android}}{2021}
\resumeItemListStart
\resumeItem{Scraped thousands of websites for recipes to build a database with a robust many-to-many tag system}
\resumeItem{Designed a REST API to filter and query recipes along with ingredient pricing from Walmart}
\resumeItemListEnd
\resumeSubHeadingListEnd
\section{Awards}
\resumeSubHeadingListStart
\resumeAwardsHeading{}{}
\resumeItemListStart
\resumeItem{Winner of the EdTech category at StormHacks 2022}
\resumeItem{Winner of the IBM Open Source category at YRHacks 2022}
\resumeItem{2nd place in the Industry 4.0 engineering analytics contest}
\resumeItemListEnd
\resumeSubHeadingListEnd
%-----------EDUCATION-----------
\section{Education}
\resumeSubHeadingListStart
\resumeSubheading
{University of Waterloo}{2022 -- present}
{Candidate for B.A.Sc. in Computer Engineering}{Waterloo, ON}
\resumeItemListStart
\resumeItem{ Secretary, Creative Writing Club }
\resumeItemListEnd
\resumeSubheading
{Bayview Secondary School}{2018 -- 2022}
{IB Diploma and OSSD Diploma}{Richmond Hill, ON}
\resumeSubHeadingListEnd
%-------------------------------------------
\end{document}

122
Daniel Chen.typ Normal file
View File

@@ -0,0 +1,122 @@
#import "fontawesome.typ": *
#import "lib.typ": template, education_entry, work_entry, project, indent
#set page(margin: 1.75in)
#set par(leading: 0.5em, first-line-indent: 1.8em, justify: true)
#show raw: set text(font: "New Computer Modern Mono")
#show par: set block(spacing: 0.55em)
#show heading: set block(above: 2em, below: 1em)
#set list(indent: 1em)
// Change the theme color of the cv.
#let color = black
#let name = "Daniel Chen"
#let contact_data = (
(
service: fa[#globe],
display: "eggworld.me",
link: "https://eggworld.me"
),
(
service: fa[#github],
display: "potatoeggy",
link: "https://github.com/potatoeggy"
),
(
service: fa[#linkedin],
display: "potatoeggy",
link: "https://www.linkedin.com/in/potatoeggy/"
),
(
service: fa[#envelope],
display: "daniel.chen1@uwaterloo.ca",
link: "mailto://daniel.chen1@uwaterloo.ca"
),
)
#show: doc => template(name, contact_data, color, doc)
// MAIN CONTENT STARTS here
= Skills
#indent[
*Languages*: Python, TypeScript/JavaScript, Rust, SQL, C++, Dart, Bash, Java, HTML, CSS \
*Frameworks*: Node.js, Express, React, Next.js, Vue, Flutter, Qt, Prisma, Apollo, Axum \
*Tools*: Linux, Git, Docker, PostgreSQL, Redis, Kubernetes, AWS, GCP, OpenTelemetry, GraphQL
]
= Experience
#indent[
#work_entry(
"Software Engineering Intern",
"Dropbase",
start_date: "May 2023", end_date: "Aug 2023",
location: "Remote",
tasks: (
"Designed a type-safe ORM-style query builder to dynamically generate JSON forms based on external data",
"Integrated Airtable and HubSpot APIs with the core product via AWS Lambda to automate data migration",
"Refactored the frontend to use react-hook-form to aggregate and validate user input, improving DX",
"Created a Pytest testing framework to verify core functionality across many different databases"
)
)
#work_entry(
"Backend Developer",
"Hack the North",
start_date: "Mar 2023", end_date: "present",
location: "Waterloo, ON",
tasks: (
"Organised Canada's largest hackathon with more than 1000 attendees and 6000 applicants",
"Integrated OpenTelemetry and Grafana into a Kubernetes cluster to collect traces and improve observability",
"Dynamically generated Apple Wallet pass files over Apollo Server and GraphQL for a registration ticket",
"Automated judge-to-hacker matching and scheduling with a custom algorithm based on their preferences"
)
)
]
= Projects
#indent[
#project("Mandown", "https://github.com/potatoeggy/mandown", "Python, Qt")
- Created a real-time site scraper for metadata and images to automatically download comics
- Abstracted 4 ebook creation libraries into a common comic conversion API for e-ink devices
- Implemented image caching and multiprocessing to increase download and update speeds by 300%
- Minimised regressions between release cycles by writing unit and integration tests with 55% code coverage
// #project("Kobink", "https://github.com/potatoeggy/kobink", "Rust, Axum, Postgres")
// - ??? something here (reverse engineering)
// - ??? something here (synchronisation and DB, HTTP headers)
#project("RecipeReady", "https://github.com/vincentjguo/recipeready-server", "Flutter, Selenium, FastAPI, Android")
- Scraped thousands of websites for recipes to build a database with a robust many-to-many tag system
- Designed a REST API to filter and query recipes along with ingredient pricing from Walmart
#project("\"Pillow\" Water Quality Sensor", "https://github.com/potatoeggy/ece198", "Rust, STM32")
- Created a water quality statistics aggregator and visualiser on an embedded platform in safe Rust
- Engineered an embedded system with an STM32 microcontroller, matrix keypad, and an LCD display
#project("Primoprod", "https://github.com/potatoeggy/primoprod", "Vue, TypeScript")
- Imitated a video game UI to create an interactive, realistic, cross-platform game simulator
- Constructed an extensible JSON data schema to concisely simplify adding new game content
]
= Awards
#show link: underline
- Winner of the #link("https://github.com/anyuan-chen/resketch")[EdTech category] at StormHacks 2022 from 350+ participants
- Winner of the #link("https://github.com/anyuan-chen/perdiem")[IBM Open Source category] at YRHacks 2022 from 90+ participants
- 2nd place in the Industry 4.0 2021 engineering analytics competition from 200+ participants
= Education
#indent[
#education_entry("University of Waterloo", "Candidate for B.A.Sc. in Computer Engineering", start_date: "Sep 2022", end_date: "Apr 2027",
location: "Waterloo, ON", details: (
[Secretary, Creative Writing Club],
))
]

7
README.md Normal file
View File

@@ -0,0 +1,7 @@
# resume
Release guidelines:
- The major version represents the current academic year, e.g., both post-2A and 2B would be v2.
- The minor version represents the current academic term, e.g., 2A would be v2.1. the x.0 releases are reserved for beta changes.
- The patch version is incremented for any other reason.

1891
fontawesome.typ Normal file

File diff suppressed because it is too large Load Diff

150
lib.typ Normal file
View File

@@ -0,0 +1,150 @@
#import "fontawesome.typ": github, fa
// Reduce space between paragraphs.
#let par_space = 0.75em
// Reduce space between headings and descriptions.
#let sep_space = par_space + 0.1em
#let subtitle_space = par_space - 0.2em
// Format start and end dates.
#let format_date(start_date: none, end_date: none) = {
let date = {
if end_date == none {
start_date
} else if start_date == none {
end_date
} else {
[#start_date -- #end_date]
}
}
[*#date*]
}
// Format locations.
#let format_location(location) = {
[_#block(above: 0.7em, location)_]
}
#let indent(content) = {
block(
inset: (left: 1em, right: 0.5em),
content
)
}
// General entry that is split into a left and right half (for experience and education).
#let cv_entry(left_content: none, right_content: none, details: none) = {
stack(
dir: ttb,
spacing: 0.75em,
grid(
columns: (11fr, 6fr),
column-gutter: 1cm,
{
set align(left)
left_content
},
{
set align(right)
right_content
}
),
{
set align(left)
details
}
)
}
// Entry for education.
#let education_entry(university, degree, start_date: none, end_date: none, location: none, details: none) = {
let details_list = if details != none {
let list = []
for detail in details {
list += [- #detail]
}
list
} else {
none
}
cv_entry(
left_content: {
text(1.2em)[*#university*] + "\n" + emph[#degree]
},
right_content: {
format_date(start_date: start_date, end_date: end_date)
if location != none {
"\n" + format_location(location)
}
},
details: details_list
)
}
// Entry for work.
#let work_entry(role, company, tasks: none, start_date: none, end_date: none, location: none) = {
let task_list = if tasks != none {
let list = []
for task in tasks {
list += [- #task]
}
list
} else {
none
}
cv_entry(
left_content: {
text(1.1em)[*#role*] + "\n" + text[#emph[#company]]
},
right_content: {
format_date(start_date: start_date, end_date: end_date)
if location != none {
"\n" + format_location(location)
}
},
details: task_list
)
}
#let project(title, repo_link, tools) = {
link(repo_link)[#text(1.1em)[*#title* #fa(github)]] + [ | _ #tools _]
}
// Set name and contact data and format headings
#let template(name, contact_data, color, doc) = {
set page(margin: (rest: 0.5in, top: 0.4in), paper: "us-letter")
set list(indent: 1.25em, marker: [])
set text(font: "Latin Modern Sans", 11pt)
set par(justify: true, leading: 0.65em)
align(center)[
#text(size: 2em)[*#name*]
#block(above: 0em, below: 1em)
#{
if contact_data != none and contact_data.len() > 0 {
let elements = for el in contact_data {
(link(el.link)[#{el.service + " " + el.display}],)
}
text(1.1em)[#elements.join(" | ")]
}
}
]
show heading.where(level: 1): i => {
set align(left)
let title = smallcaps(i.body)
set block(above: 1em)
set text(weight: "light", size: 0.9em, fill: color, font: "New Computer Modern")
stack(
dir: ttb,
spacing: 1.5mm,
title,
line(length: 100%, stroke: color + 0.4pt)
)
}
doc
}