This is the main document for my resumes, CVs, etc. It is constructable to present roughly the same in both PDF and HTML export, as well as looking decent in Github’s rendering of markdown and Org.
This is accomplished by sticking mostly to pure Org, with a good amount of LaTeX and HTML/CSS header setup and some small LaTeX and HTML snippets to control document flow.
We use these keywords in building the title table; see Title.
Make sure to set these if you are recreating this document, or only importing parts of it!
Email and phone number should always be provided.
You may have different additional contact information.
I choose to include an image in the footer of my HTML documents.
Usually I make it part of the author
keyword,
but because that is used in the title here,
I make a special keyword to store the HTML code for the image.
We manually enter a “title”, so do not put title, author, or date.
Also do not put in a table of contents or number sections.
For ease of customisability, here we define
a new org-latex-class
which maps headings to
our own custom commands, defined below.
This means we avoid having to redefine the \(sub)section
commands.
Résumés should not be deeply nested, so we only give two levels here. Lower levels would become lists.
In LaTeX, we need xcolor
to give us definecolor
.
In the HTML, we should be in a style
block
so we can declare colour variables for the CSS.
I personally prefer to use gray’s. Nice and printer friendly! But you are free to set whatever colours you wish.
First, in LaTeX. The HTML
method lets us set the colour
using a hex code.
Now in CSS.
Note: I would extract the settings into a macro, but unfortunately Org macros don’t expand in these settings. 🙁
Close the style
block.
These macros allow us to accomplish certain tasks inline simultaneously in HTML and in LaTeX, such as right alignment and fontification.
Here, we introduce a sequence of Org macros to wrap the “title” (my name) in HTML and LaTeX fontication. This saves us putting an obscenely long line below.
First, code to fontify the title in HTML.
This macro forces LaTeX text to be treated as having zero height; this way, we can add larger text into tables without affecting the row height.
Then, code to “hugify” LaTeX text.
Combine the LaTeX “zero height” and “hugify” macros to “LaTeXify” the title.
Now, combine all those macros along with the author
macro to create the title.
This macro right aligns its content;
in LaTeX, this is accomplished by hfill
‘ing on the left,
and in HTML, we use a right-aligned span.
Just remember to escape any commas.
Use of footnotes is not ideal here, since they are placed at the bottom of the page/site. This macro instead makes a small note in place. Numbering is manual, though.
First, we’ll use the resume
class defined in LaTeX Org export settings.
It’s definition is added to org-latex-classes
on export.
Don’t show page numbers.
We use geometry
to decrease the margin size;
the defaults for article
are very large.
Add showframe
to the options to visualise the margins.
I like a small column on the right of the first page
to contain some point form information.
We accomplish that by using the paracol
package;
an excellent package which supports exactly the settings
I want for the sidebar.
In an attempt to improve parsability of the PDF, add a vertical rule between the columns.
We’ll use tcolorbox
to highlight the section and subsection headers
with a background colour.
Specifically, we want simple rectangles without coloured borders and with a customisable background colour.
The box should fill the whole horizontal area —the whole page or column.
Don’t have any internal margins in the box.
Colour both the frame and its background the same.
Don’t round the corners.
Section headers appropriately use our section
colour.
Also, make the font large.
Subsection headers are similar, but use a smaller font size —smaller than normal, because these are often quite long.
Remove the spacing around lists and between list items.
Redefine the bullets to nice unicode characters. The first one here is actually the default, but redefine it anyway.
Remove indent to the left of bullets and reduce space between the bullet and the contents.
Don’t indent paragraphs.
Override the hypersetup
settings for this file,
to make the links this darker blue colour.
The regular lighter blue stands out too much
against the rest of the black text.
Start the style section of the HTML header.
As stated in the Columns portion of the LaTeX settings,
I like a small column on the right of the first page
to contain some point form information.
We accomplish that by using float
’s in the HTML.
Note the sizing set here: 23% of the page for the sidebar, and 73% for the content to its left. This gives a small gap. Without that, the elements tend to overlap at certain window sizes.
The sidebar does not look good if the window is too narrow, such as when the page is loaded on a phone. We can use media queries to set the CSS for the sidebar based on the window width. When the window is narrow, just treat it —and the content left of it— normally.
When we’re in a wide window, set up the sidebar.
Sections are exported as h2
’s.
with sans-serif font, unbolded.
Use the --section
colour we created above.
Also put a little space on the left and right.
Don’t take up the whole width; they overlap other elements sometimes if we set it to 100%.
Display as an inline block, so if a linebreak is necessary, the background colour is also applied to the newline.
Subsections are similar, just using their own colour.
The title is placed in a table, with the right column of the table being various contact information.
In order to increase the fontsize of the title,
without increasing the size of the row it is in,
we set its line-height
to 0, and set
both white-space
to nowrap
and overflow
to visible
so that
it is still displayed normally.
As with the sidebar, a large title text can be problematic in small windows. So, we set the size conditionally.
For small windows, only increase the size to 150%.
In large windows, up it to 300%.
End the style section of the HTML header.
I add some details to the typical HTML postamble. In particular, my image, contact email, and the means by which the page was generated —Emacs and Org.
{{{author}}}
{{{keyword(HTML_footer_image)}}}
The title is simply an Org table, with my name
inserted large in the first column using the resume-title
macro.
Below my name is my title, and on the right is various contact information.
For the LaTeX, we use the tabularx
environment
in order to better control table and column widths.
For the HTML, we must specify :frame void
or a frame is drawn,
ruining the illusion that this is a carefully constructed
title layout. 😀
Note the use of Org table cookies for column alignments and groupings; there is a single vertical rule between the name of the contact information and the information itself. The alignment is repeated in the LaTeX attributes in order to have the left column take up all remaining space.
<l> | <r> | <l> |
/ | > | |
{{{email}}} | ||
{{{resume-title}}} | phone | {{{keyword(Phone)}}} |
Software Engineer, M.Sc. Computer Science | web | {{{keyword(Website)}}} |
github | {{{keyword(Github)}}} |
- Put my backend, DevOps experience and programming language theory knowledge to use building interesting, meaningful software.
- Work with excellent people, in a culture fostering learning, teaching and growth.
- Learn new languages, tools, and patterns.
- Take opportunities, either professional or personal, to contribute back to open source projects.
- Proficient Go, Emacs Lisp
- Experienced C, Python, Typescript, bash & zsh
- Familiar Java, Ruby, Scala, Elm, Haskell, SML
Docker, LXD, Kubernetes, Helm, GitLab CI/CD, ArgoCD, Ansible, MySQL, PostgreSQL, Redis, Keycloak, Linux, Cucumber/Gherkin, Jira, Confluence, Emacs, Org mode, LaTeX
- Teaching and mentoring
- Literate programming
- Mental health support
- Principles of programming languages/programming language design
- Discrete math and logic
- Theory of computation
- Software specification and correctness
- Functional programming
- Worked on the core application API team, developing APIs in Go.
- Focus on user/account management, authentication and authorization.
- Incorporated technologies including Ansible and Redis.
- Practiced DevOps using Docker, Kubernetes, Helm, GitLab CI/CD and ArgoCD.
- 5 appointments for teaching “Principles of Programming Languages”.
- Planned and prepared lecture materials and assignments/tests including both written and programming evaluations.
- Supervised teaching assistants.
- 15 appointments, primarily to courses on programming language theory and discrete mathematics.
- Prepared and led tutorial sessions and office hours, marked student work.
- In some instances, appointed to supervise other teaching assistants.
- Independently researched on topics selected by supervising professors.
Embedded Systems Test Dev, Intern {{{right-align(Blackberry\, Mississauga ON\, May 2011 - Aug 2012)}}}
- Developed automated tests and test systems for Blackberry GPS systems.
Portfolio {{{right-align({{{scriptsize(Full version at armkeh.github.io)}}})}}}
Project | Contributions | Skills |
---|---|---|
consistent-window-splits | Creator, | Emacs Lisp |
(Emacs package) | sole contributor | |
Ansible community.general | PR #9494 | Python, Ansible, Keycloak |
Keycloak modules | ||
Sample Breakout game | Creator, | Typescript, GitHub actions, |
sole contributor | Excalibur.js engine | |
org-agda-mode | Co-creator, | Emacs Lisp |
(Emacs package) | contributor | |
unicode-sty | Co-creator, | LaTeX, GitHub pages |
(LaTeX package) | contributor | (armkeh.github.io/unicode-sty/) |
Ph.D. in Computer Science {{{scriptsize((incomplete))}}} {{{right-align(McMaster University\, Hamilton ON\, 2015 - 2022)}}}
- Investigated mechanising models of computability over real numbers using automated proof assistants.
- 3rd place in 2019 McMaster Computing and Software poster competition.
- Coursework and comprehensive examinations completed. Thesis not completed.
- GPA: 11.75 on 12 point scale.
- Investigated classical computability results in context of computability over real numbers.
- GPA: 11.75 on 12 point scale. Graduated with distinction.
- Awards each year for academic excellence and/or highest GPA in computer science program.
- Including Gerald L. Keech medal for highest graduating GPA in computer science, 2013.
- GPA: 11.1 on 12 point scale. Graduated with distinction.
- Armstrong, Mark & Zucker, Jeffery, Notions of semicomputability in topological algebras over the reals, Computability, vol. 8, no. 1, pp. 1-26, 2018
Name | Years held | Value |
<l> | <l> | <r> |
---|---|---|
NSERC Postgraduate Scholarship, Doctoral | 2017 - 2019 | $42,000 |
Ontario Graduate Fellowship | 2016 - 2017 | $12,000 |
Dean’s Excellence Engineering Doctoral Award | 2015 - 2018 | $127,500¹ |
NSERC Canadian Graduate Scholarship, Masters | 2014 - 2015 | $17,500 |
Ontario Graduate Scholarship | 2013 - 2014 | $15,000 |
{{{scriptsize(1. Included guaranteed teaching assistant employment income for those years.)}}}
- Maintaining my setup/configs for Emacs and other tools (https://github.com/armkeh/dotfiles), to build a collection of well-documented tips and tricks.
- Represented McMaster Computing and Software at the Ontario Universities Fair in 2015 and 2016.
- Church secretary, board member, music and youth leader, and kids programming volunteer at Hamilton Mountain Church of the Nazarene, 2007-2015.
This document available in multiple formats from https://github.com/armkeh/resume/.