Git Product home page Git Product logo

resumetemplate's Introduction

A simple resume generator

Problem Statement

If you’ve ever had to maintain a resume, it’s often tedious and inconvenient to customize for multiple positions. To solve this, it makes sense to start with a template and generate resumes with different content. This small bit of code was created to help me do this. Furthermore, in my experience, combining templates with document generation is the simplest way to ensure consistent formatting. To this end, I’ve created some simple macros that you can use to build a resume. To best fake advantage of these macros, you’ll need three things:

  • an installation of the m4 macro processor to build the input for the document.
  • an installation of the LaTeX document preparation system.
  • an installation of the GNU Make utility.

Initial Customization

Setup the files to build

After you’ve checked out the source, you’ll want to start by writing a custom Makefile.inc. It will look something like the following:

FILES = architect.pdf techlead.pdf

NAME='Frumious Bandersnatch'
ADDRESS='123 \\ Tulgey Wood \\ (424) 242-4242 \\ [email protected]'

In the previous example, we are creating different resumes for an architect and technical lead role. Likewise, you’ve customized the name and address on the resume and they’ll format almost effortlessly. Finally, you should understand that the top-level Makefile has variable–=DIR=–that can be used to customize the location of your Makefile.inc.

Customize the sections

By default, I’ve setup the resume to have the following sections:

  • **OBJECTIVE**
  • **PROFESSIONAL EXPERIENCE**
  • **EDUCATION**
  • **TECHNICAL SKILLS**
  • **INTERESTS**

In the resume.m4 file, you can see the each of these areas setup using the Section macro. This macro takes two arguments:

  • the section name (e.g. OBJECTIVE)
  • text that will be expanded in the body of the macro. To make editing easier, I intend that a user have a separate file for each section except the OBJECTIVE section as that section is customized with the file that sets up in the initial environment for per resume customization.

I have included the following example for clarification for the technical lead position (the file **must** be named techlead.m4 to ensure make works correctly):

find a technical lead position that makes me a cheshire cat.

A couple of important notes for the file above:

  • the include(`resume.m4') isn’t optional as that’s what ensures the larger resume gets formatted.
  • the `' characters used for quoting are only used until resume.m4 is included. After that, all quoting is done with a more conventional autoconf pattern of [].

Finally, while it’s expected that the most common application of a different file is to create custom Objective macros, this is also th entry point for any other conditional customization a user may need[fn::Currently, there is only one additional customization supported–the Font macro which can be set to switch to a different font from the default /Helvetica./]

Other files to customize

Without editing the default resume.m4, you can customize the following files:

  • positions.m4
  • education.m4
  • technicalskills.m4
  • interests.m4

Each of these files can be formatted any way you’d like including breaking a single file into multiples. To facilitate this, I have created helper macros (see the beginning of resume.m4) to assist you in formatting content. Once you’ve put this minimal skeleton together, you can almost ignore formatting and focus on making your content compelling and engaging.

Where and How to Edit Files

To make managing your files easier, the Makefile contains a DIR environment variable[fn::Why? It enables you to clone this repository while keeping your personal data in a separate, private repository.] that defaults to resume. You should customize this setting to your setup.

Adding another section

If you want to add another section, you’ll need to update resume.m4 directly and then add the new content by creating a corresponding sectionfilename.m4 file.

Adding sections is easy and looks something like the following:

Section(NEW SECTION,[include([mynewsection.m4])])

While the content of this section can be anything renderable by LaTeX, I recommend keeping the file as clean as possible by adding formatting macros to resume.m4. Why bother? It does the following:

  • ensures content is consistently formatted.
  • easier to edit as complicated constructs are in one area.
  • makes global changes trivial.
  • allows you to have consistent primitives between files.

Generating the resume(s)

After you’ve done your customizations, you’ll want to generate your resume(s) using the following command: make

If you’ve done things correctly, you’ll end up with consistently formatted PDF files generated from easily maintained sources.

Current macros

All macros are described below:

MacroFunctionNumber of ArgumentsArgumentsNotes
Listformat an itemized list2list content, preamble$2 is seldom used
SmallSpacereduce the vertical space0
Degreeformat an education stanza4degree, major, school, date
Positionformat a simple position stanza4company,date,title,responsibilities
Companyformat a company stanza2company, location
SubPositionformat a position in a company3title,date,responsibilities
Bulletadd a bullet1content
Centercenter the content1content
I__italicize all content1content
B__**bold all content**1content
SkipLinelinefeed1contentpreceded by newline
Sectiondefine a resume section1content

Generating your resume’s wordcloud

The Makefile also contains the ability to generate a wordcloud from your resume. To do this, you need to run the following command: make wordcloud.pdf

Because this creates additional dependencies:

  • R
  • Several R libraries (installed with some variant of install.packages('packagename') in the REPL.
    • wordcloud
    • tm

wordcloud.pdf is not built by default.

resumetemplate's People

Contributors

mtbakerguy avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.