Kishore Vancheeshwaran
Resume in orgmode

Update <2022-07-26 Tue>

Considering this post comes up on Google search, I’ll continue to update the same here.

I finally got the time to learn orgmode’s internals and a bit of elisp as well. I was able to move away from the hideous org format below and experimenting with yaml and jinja templates, using only Latex, I have moved back to using only orgmode for my resume.

TLDR Go to this repo and clone it. Run bash build.sh and get your pdf. You can also pass #+anon: t as an option in your org file to anonimize your name/email/phone/company names. I use this to anonimize my info to get resume feedback online.

With the new format, you can write down your information which is human readable org file. Here’s the format followed.

#+title: Author's Resume
#+options: author:t email:t creator:t toc:nil num:nil title:nil
#+date: \today
#+author: FName LName
#+email: fname.lname@gmail.com
#+mobile: +91 98765 43210
#+linkedin: name
#+creator: Emacs 28.1 (Org mode 9.6)
#+anon: t

Some summary about myself.

* Experience
** Awesome Company 2
:PROPERTIES:
:LOCATION: Bangalore, Remote
:END:
*** Senior Software Engineer
:PROPERTIES:
:FROM: <2022-06-14 Tue>
:TO: <2022-07-20 Wed>
:END:
- Lorem ipsum dolor sit amet.
- Lorem ipsum dolor sit amet.
*** Software Engineer
:PROPERTIES:
:FROM: <2022-04-14 Thu>
:TO: <2022-06-14 Tue>
:END:
- Lorem ipsum dolor sit amet.
- Lorem ipsum dolor sit amet.
** Awesome Company 1
:PROPERTIES:
:LOCATION: Bangalore, Remote
:END:
*** Software Engineer
:PROPERTIES:
:FROM: <2022-06-14 Tue>
:TO: <2022-07-20 Wed>
:END:
- Lorem ipsum dolor sit amet.
- Lorem ipsum dolor sit amet.
* Technical Skills
- *Languages*:  Java, Python, C/C++,
- *Frameworks*: React, Node.js, Flask
* Education
** Masters University Name
:PROPERTIES:
:LOCATION: Earth, Milky Way
:END:
*** MS Computer Science
:PROPERTIES:
:FROM:     <2022-04-14 Thu>
:TO:       <2022-06-14 Tue>
:END:

This hacking has largely been inspriration from org cv and jakes resume format.

TODO github actions and anonimizing education.

Introduction

Ever since I discovered orgmode I have wanted to create my resume/cv using it. There already exist some templates which are amazingly well done. I initially started out with a barebones latex template and then started using the famous Awesome-CV template. I noticed that it was not actively developed and I faced some issues using FontAwesome’s icons in the resume. I then moved on to using Jake’s Resume format which was more simple and straightforward in terms of formatting. Even though I liked the format, I didn’t like using latex and this template for 2 reasons.

  1. Writing in latex was nice in terms of formatting but writing the content seemed a bit awkward considering that the content had to mix up with the latex’s markup.
  2. The template itself was nice and well done, but I found myself editing it to an extent where I got very confused with all the macros and redefinitions and modifications done in it.
  3. I would like to make the template as simple as possible without extra dependencies on packages like FontAwesome. Although this was accomplished by Jake’s Resume, I still wanted an alternative for the above reasons.

I wanted to take care of writing only the content in a format that is readable and at the same time have the ability to export to a pdf and html. Orgmode seemed like a perfect fit than pandoc for this.

When I searched online I noticed some people have implemented the export backend for exporting from orgmode to pdf like Org-CV and Aidan Scannel’s method. I was to have some amount of success with Org-CV but the same issues arose with FontAwesome and ModernCV’s formatting coupled with how the package was written. I tried recreating my own backend for export trying to replicate Org-CV to an extent, but I wasn’t able to understand elisp much at this point of time hence I dropped this idea as well.

I figured I will just work with emacs’s exporting, and use latex and css for templating and styling the document. Thus I rewrote my resume with the singular goal of having content purely on orgmode and the templating is taken care of by latex and css.

Resume

Here is my resume template I have created with orgmode.

#+TITLE: Resume
#+author: FirstName LastName
#+options: toc:nil num:nil title:nil author:nil timestamp:nil html-style:nil prop:nil
#+latex_compiler: xelatex
#+latex_class: article
#+latex_class_options: [letterpaper,10pt]
#+latex_header: \include{latexTemplate.tex}
#+html_head_extra: <link rel="stylesheet" type="text/css" href="style.css" />


* FirstName LastName
#+attr_html: :class mytable meta :rules all :border nil :cellspacing nil :cellpadding nil :frame nil
#+attr_latex: :align c|c|c|c
| [[mailto:email@gmail.com][email@gmail.com]] | [[https://linkedin.com/in/username][linkedin.com/in/username]] | +91-9876543210 | City, Country |
** Experience
*** Company 1
#+attr_html: :class mytable exp :rules nil :border nil :cellspacing nil :cellpadding nil :frame nil
#+attr_latex: :align L{0.27\textwidth}C{0.40\textwidth}R{0.25\textwidth}
| *Software Engineer* | *Company Inc.* | *Feb 2015 -- Present* |
| Software Team       | City           |                       |
- I'm doing something awesome here + Some bullets
  + More info
- I accomplished something here
- Some more stuff I can proudly talk about
*** Company 2
#+attr_html: :class mytable exp :rules nil :border nil :cellspacing nil :cellpadding nil :frame nil
#+attr_latex: :align L{0.27\textwidth}C{0.40\textwidth}R{0.25\textwidth}
| *Software Engineer* | *Company Inc.* | *Feb 2005 -- Jan 2015* |
| Software Team       | City           |                        |
- I'm doing something awesome here + Some bullets
  + More info
- I accomplished something here
- Some more stuff I can proudly talk about
** Technical Skills
- *Languages*  -- Python, SQL, Java, Scala, C++, everything else
- *Frameworks* -- Airflow, Django, And the world
- *Databases*  -- RDBMS, NOSql, Much more
- *Dev tools*  -- Git & other stuff
** Education
#+attr_html: :class mytable education :rules nil :border nil :cellspacing nil :cellpadding nil :frame nil
#+attr_latex: :align L{0.27\textwidth}C{0.40\textwidth}R{0.25\textwidth}
| *Masters degree*   | University Name | Jul 1990 -- Jul 1992 |
| *Bachelors degree* | University Name | Jul 1986 -- Jul 1990 |

With some styling using latex, we get the pdf as shown in this github repository. You can also see the html version of the resume with some css styling. This template is a slight combination of CareerCup resume and the Parker template.

Even the export to ascii text looks amazing.

Afterthought

Now when I think about it, I definitely feel it was worth it to separate out the content and the styling. Even though many templates are good and latex is awesome, I still feel that this simplifies the process of updating the content and not worry about the formatting inside the content. I understand that there is some level of formatting code that’s injected into the org format itself, but I figure that is necessary and ok compared to having everything mixed with a markup language.

I hope this is useful for anyone trying to use orgmode directly to create their resume.

If you would like to leave a comment, contact me via email.
Post 6/99 - part of 100DaystoOffload