Skip to content

Latest commit

 

History

History
859 lines (697 loc) · 27.4 KB

main.org

File metadata and controls

859 lines (697 loc) · 27.4 KB

Mark Armstrong Resume

Introduction

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.

User information

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.

Org, LaTeX, HTML, CSS settings

Org settings

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.

LaTeX Org export settings

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.

Common settings

Colours

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.

Macros

These macros allow us to accomplish certain tasks inline simultaneously in HTML and in LaTeX, such as right alignment and fontification.

Title (name) macros

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.

Right alignment

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.

Scriptnotes

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.

LaTeX header

Page layout

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.

Columns

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.

Section headers

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.

Lists

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.

Paragraphs

Don’t indent paragraphs.

Hyperlinks

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.

CSS

Header

Start the style section of the HTML header.

Page layout

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.

Section headers

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 (my name)

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%.

Footer

End the style section of the HTML header.

HTML postamble

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)}}}

Title

Documentation

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.

The title

<l><r><l>
/>
email{{{email}}}
{{{resume-title}}}phone{{{keyword(Phone)}}}
Software Engineer, M.Sc. Computer Scienceweb{{{keyword(Website)}}}
github{{{keyword(Github)}}}

Sidebar header

Objectives

  • 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.

Skills

Programming

  • Proficient Go, Emacs Lisp
  • Experienced C, Python, Typescript, bash & zsh
  • Familiar Java, Ruby, Scala, Elm, Haskell, SML

Other software proficiencies

Docker, LXD, Kubernetes, Helm, GitLab CI/CD, ArgoCD, Ansible, MySQL, PostgreSQL, Redis, Keycloak, Linux, Cucumber/Gherkin, Jira, Confluence, Emacs, Org mode, LaTeX

Soft skills

  • Teaching and mentoring
  • Literate programming
  • Mental health support

Teachables

  • Principles of programming languages/programming language design
  • Discrete math and logic
  • Theory of computation
  • Software specification and correctness
  • Functional programming

Sidebar footer

Left of sidebar header

Experience

Software Engineer {{{right-align(Index Exchange\, Toronto ON\, Sept 2021 - Sept 2024)}}}

  • 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.

Sessional faculty {{{right-align(McMaster University\, Hamilton ON\, 2014 - Dec 2020)}}}

  • 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.

Teaching assistant {{{right-align(McMaster University\, Hamilton ON\, 2014 - Apr 2021)}}}

  • 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.

Research assistant {{{right-align(McMaster University\, Hamilton ON\, Summers 2010 and 2012)}}}

  • 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)}}})}}}

ProjectContributionsSkills
consistent-window-splitsCreator,Emacs Lisp
(Emacs package)sole contributor
Ansible community.generalPR #9494Python, Ansible, Keycloak
Keycloak modules
Sample Breakout gameCreator,Typescript, GitHub actions,
sole contributorExcalibur.js engine
org-agda-modeCo-creator,Emacs Lisp
(Emacs package)contributor
unicode-styCo-creator,LaTeX, GitHub pages
(LaTeX package)contributor(armkeh.github.io/unicode-sty/)

Left of sidebar footer

Force new page in PDF

Education

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.

M.Sc. in Computer Science {{{right-align(McMaster University\, Hamilton ON\, 2013 - 2015)}}}

  • Investigated classical computability results in context of computability over real numbers.
  • GPA: 11.75 on 12 point scale. Graduated with distinction.

B.A.Sc. in Computer Science {{{right-align(McMaster University\, Hamilton ON\, 2008 - 2013)}}}

  • 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.

Publications

Awards

Graduate studies scholarships and fellowships

NameYears heldValue
<l><l><r>
NSERC Postgraduate Scholarship, Doctoral2017 - 2019$42,000
Ontario Graduate Fellowship2016 - 2017$12,000
Dean’s Excellence Engineering Doctoral Award2015 - 2018$127,500¹
NSERC Canadian Graduate Scholarship, Masters2014 - 2015$17,500
Ontario Graduate Scholarship2013 - 2014$15,000

{{{scriptsize(1. Included guaranteed teaching assistant employment income for those years.)}}}

Extracurricular

  • 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.

Document footer

This document available in multiple formats from https://github.com/armkeh/resume/.