Skip to content

m3rlin45/resume

Repository files navigation

This repository contains my Resume. The resume itself is the file resume.json. When changes are pushed to GitHub, it triggers a GitHub Actions workflow, that will spell check the resume and then build it into both an html web page, and a printable pdf. When changes are merged into the master branch, the workflow will also push the new website onto GitHub Pages, where you can view both the html and the pdf.

Isn't this excessive, overengineered, and a waste of time? Yeah... basically, but it was a good opportunity to get a basic handle on stuff I don't deal with in my normal work, like web development tools, Github Actions, etc. Also, it was FUN!

Development

To Develop on this resume, you need to have Python, NodeJs, and Poetry installed first.

Then you can install all the dependencies with and build like:

$ # Install Dependencies
$ npm install
$ poetry install
$ sudo apt install texlive-latex-extra # needed to build pdf on ubuntu/debian
$ # Development Commands
$ poetry run pytest # spell check
$ npm run build-styles # build css
$ npm run build-html # build index.html
$ npm run build-latex # build resume.tex
$ npm run build-all # equivalent to the above 3 commands
$ pdflatex resume.tex # builds pdf from resume.tex

How Does It Work?

Spell Checking

Spell Checking is implemented as a unit test, which can be easily executed with poetry run pytest. It uses pyspellchecker along with some basic normalization and detection of emails, urls, and the like. It uses a user defined supplimental word list dictionaryAdditions.json for rare words.

PDF Generation

PDFs are generated by way of LaTeX. There is a latex template in the project, which is filled with the resume data, and then compiled into a pdf using pdflatex. The resume template is based one one from latextemplates.com originally by Trey Hunner. It has been extensively reworked to make it match my data, but the original design remains.

Website Generation

The resume website is derived from a template Grayscale by Start Bootstrap. It has been heavily reworked in terms of content, but the overall design aims to be largely consistent with the original. Much like pdf generation, there is a template that is filled with data to produce the index.html file that will be published to GitHub Pages.

Continuous Integration

The CI system is pretty overengineered, because I wanted to try out GitHub actions. It consists of a workflow that will produce 4 jobs. One to run unit tests (spell check), 2 to build the HTML and PDF in parallel, and one to package them together and publish to GitHub Pages. There is no advantage to this design over a straightline execution of all 4 tasks in a single job. However, doing it this way gave me the chance to explore some of the more advanced features of GitHub Pages, which was a lot of fun.

Credits

This project inspired by Steven Edouard's's json resume. It waas originally, like his, based on JSON Resume but lacks in pdf generation and dissatisfaction with the html options it had pushed me to the current design. The JSON file no longer follows the schema.