

Show HN: The Markdown Resume - graphene
http://mszep.github.io/pandoc_resume/

======
bduerst
I did something similar while in grad school when I was applying to jobs
several years ago, except I made it so that I could customize the output.

I found myself spending so much time manipulating my resume to match each job
description I was applying to, that I put all of my experiences, interests,
etc. into a sqllite db. Using that, I created a UI to quickly select which
items I wanted in this iteration of my resume, and then spit it out in a few
different HTML formats that could be easily converted to txt or pdf. I
eventually intended to do ngram matching with job description bullet points,
but I got hired and moved onto other projects.

The sqllite db was overkill. Honestly I think what would have been better
would have been a json format not unlike
[http://jsonresume.org](http://jsonresume.org), because it allows for more
attributes, some of which could be used to group experience.

This markdown is nice because it's humanly intelligible, but what if you want
to give hidden attributes to the different items - attributes which shouldn't
be in the final media file?

~~~
dj-wonk
Clojure people like EDN instead of JSON. :) When I hire contractors, I ask for
an EDN formatted resume, submitted via curl to a quick web app. I validate it
on the server side. People enjoyed it (at least the ones who succeeded).

~~~
coolsunglasses
It's too bad the EDN standard ain't an actual standard or proper spec. I had
to rail on those people for fucking ages to get any ambiguities fixed and last
I gave a damn it still:

1\. Wasn't congruent with what Clojure's parser allows

2\. Defined by whatever Hickey feels this year

I've worked on more than one edn parser in non-Clojure languages, it was Total
Hell.

Hitching your wagon to EDN isn't advisable, there are better formats if you
need them.

~~~
dj-wonk
I don't think that "Whatever Rich Hickey feels this year" is a serious pain
point. Rich isn't fickle with changes; quite the opposite. Clojure has
evolved, but Rich explains himself well.

What changes have bothered you?

------
presspot
And when your boss wants to fire you, she just does a pull request.

------
basicallydan
Am I the only person in this thread who doesn't think that the structured
nature of a CV isn't necessarily super important? Having a readable, well
laid-out and well-written CV can be vital in deciding whether someone is worth
contacting or not.

I love putting "structured data" in formats like JSON as much as the next guy,
but sometimes that approach misses the point a little bit IMO.

~~~
pwenzel
Agreed. I feel that presentation nuances in your printed or PDF resume are
important.

For example, how does this structured approach ensure that everything fits
neatly on one page?

~~~
graphene
You and parent raise fair points, but I think this approach is a good
compromise between the structure that you get from markdown and the aesthetics
that ConTeXt is able to achieve.

To expand on your point, it's true that this approach does not automatically
fit a given amount of content neatly into N pages, but I don't think there
exists a system that can; you'll always have to iterate on what exactly to
include if you want to have exactly N fully filled pages, regardless of your
document processing workflow.

------
basicallydan
I've been playing around with this, too. Markdown -> PDF with a CSS3
stylesheet was what Iw as aiming for. I tried a few engines and none of them
would preserve text, which I see as quite important for resumes. You've done a
nice job though with ConTeXt.

I mostly wanted to be able to style my resume using CSS3, which is not
possible with your method, which is a shame - but this is still pretty great.
Nice job :)

~~~
graphene
Thanks :-)

I considered this too, and indeed I was not able to find a way to use a single
stylesheet with multiple formats. However, I found that many css commands have
(near) equivalents in ConTeXt, so translating the css wasn't as much work as I
was fearing. I don't know how this would have worked with LaTeX, but I get the
impression it wants to do more of the layout work itself..

------
dctoedt
A couple of years ago I started using LinkedIn's resume builder [1]. It takes
my existing LinkedIn profile information and generates a nice-looking PDF in
one of several user-selectable formats. I tweaked my profile information so
that it looks decent in resume style. That satisfies 99% of my need for
resumes -- and besides, most of the time anyone who asks for it has already
looked at my LinkedIn profile anyway, and probably only wants a PDF as
something to put in their file.

[1] [http://resume.linkedinlabs.com/](http://resume.linkedinlabs.com/)

~~~
notduncansmith
+1 for the resume builder, it's super easy and the results look great.

------
erming
Here's another option based on JSON. It went viral on HN 4 days ago:
[http://jsonresume.org/](http://jsonresume.org/)

The HN post can be found here:
[https://news.ycombinator.com/item?id=7996464](https://news.ycombinator.com/item?id=7996464)

------
jimktrains2
The biggest problem I see is that there is no semantic information present,
making it hard for machines to digest or convert into other formats. (e.g.
hResume or jsonResume)

Otherwise its aesthetically well rendered:)

~~~
graphene
(author here)

You're right; I considered this aspect, but thought it was more important to
preserve the flexibility to e.g. name sections whatever I want, or order them
however I want. Ultimately I see the final document (html or pdf) as primarily
intended for human, not computer consumption.

~~~
jimktrains2
> Ultimately I see the final document (html or pdf) as primarily intended for
> human, not computer consumption.

Which for a resume isn't a bad assumption. Additionally, if I choose to use
something semantic to define the resume, this is a wonderful way to format it
nicely:)

~~~
graphene
I agree, the two approaches are complementary, and it might even make sense to
write a tool to convert from json to markdown, in order to take advantage of
the formatting.

------
hunvreus
A JSON or YAML structure, like
[http://jsonresume.org/](http://jsonresume.org/), may be a better approach.
Markdown is great at doing regular content, not so much when it comes to
dealing with structured data, which is mostly what a resume is: collections of
objects for education, experience, etc.

~~~
graphene
(author here)

I thought about this too, but came to the conclusion that since markdown (or,
more precisely, the pandoc internal format) does offer enough structure in the
form of lists, tables, headers, even footnotes etc, it makes sense to stay in
markdown because it's much more human-friendly than, say, json.

~~~
hunvreus
I agree with you about JSON. YAML Front Matter (like in Jekyll), allows you to
have a mix of both markdown (for the bio part) and structured fields (for the
education, past experiences, diplomas etc). Works for websites, should work
for your resume.

------
relfor
Now you can add markdown resume on your markdown resume... How cool is that?

~~~
graphene
Haha I'll have to do that soon...

In the meantime, I actually am looking for a job, see
[https://news.ycombinator.com/item?id=7833969](https://news.ycombinator.com/item?id=7833969)
for details :-)

</shamelessplug>

------
josekpaul
We have created a bridge with LinkedIn, so you can create a baseline resume
which you can then enhance:
[http://www.summagram.com/](http://www.summagram.com/) (click on 'create
resume' button: The whole thing is in early beta, so you will be helping out
the testing quite a bit by doing this). The raw data in json format is
available as well. Summagram is intended for any kind of document, so the
schema is a bit generic.

------
patrickg
Happy to see the Resume is based on ConTeXt, my favorite typesetting system.
The developer is a friend of mine. Loooong time ago I've started
[http://wiki.contextgarden.net](http://wiki.contextgarden.net) to collect
information about ConTeXt.

~~~
graphene
I think I like it better than LaTeX as well, having only used it for this
project. Apart from being more convenient for specifying layout, I like the
fact that it's a coherent system, compared to LaTeX's jungle of packages when
you need to to anything interesting...

About your site, I used it extensively and it was a great help :-)

~~~
patrickg
It's not my site anymore, I was just the one who started it. All credits
should go to the new maintainers and active people there.

------
josekpaul
We are creating a service to let people create docs in json format, and share
the resulting docs as interactive data docs. I feel resumes are a specialized
use case for this (eg:
[http://www.summagram.com/Summagram/ViewSummagram/Jose%20Paul](http://www.summagram.com/Summagram/ViewSummagram/Jose%20Paul)
) I just saw the jsonresume page. Very interesting. Am looking at
incorporating their structure into our editor and viewer.

------
qthrul
Interesting. Does anyone remember xmlresume from ~10 years ago?

[http://xmlresume.sourceforge.net/](http://xmlresume.sourceforge.net/)

~~~
dj-wonk
I bet most people either (a) don't remember the unholy combination of XML and
a resume (b) or wish they could.

~~~
dj-wonk
I meant "wish they could _forget_ ".

------
donatj
On a similar thread, I've had my resume as markdown for a while with a little
PHP script to compile it to PDF and HTML.

[https://github.com/donatj/resume](https://github.com/donatj/resume) Build
script
[https://github.com/donatj/Resume/blob/master/build.php](https://github.com/donatj/Resume/blob/master/build.php)

~~~
graphene
(author here)

Interesting, I wasn't aware of DOMPDF...

Your pdf looks much nicer than what I was able to achieve going from html to
pdf with wkhtmltopdf. Then again, your css stylesheet is a bit simpler than
what I'm using, I wonder if that'd make a difference.

~~~
donatj
DOMPDF is by far my favorite PHP PDF Library, its not the most _capable_ but
its arguably the most consistent and least finicky.

------
vaibhavsagar
I've used this approach for the last few months and I really like it. I don't
see why you need to convert to HTML and then PDF though, as pandoc is flexible
enough for you to write templates for each output format. My resume
([https://github.com/vaibhavsagar/resume](https://github.com/vaibhavsagar/resume))
uses that approach.

~~~
graphene
(author here)

But that's exactly what my approach does though, it improves on an earlier
approach which generated pdf via html by adding a ConTeXt template which
allows pandoc to generate a pdf directly, and gives the resume a similar look
and feel to the html version.

Using ConTeXt instead of LaTeX has the advantage that it's nicer for setting
layout properties, is more of a coherent system (in contrast to LaTeX's maze
of packages), and is not specifically geared towards producing scientific
documents.

------
sampl
Honestly, if you're applying for an engineering position, a monospaced resume
(like the markdown one shown here) might actually be a cool idea.

------
PhrosTT
I just maintain mine in HTML so it's all pretty and designey.

Then I use @media print css to make it grayscale and exactly one page if
printed.

Lastly I use chrome's Print to PDF option to make a PDF version of it.

I think I could prob jam the HTML into word if I really needed a .doc but who
really wants to work a place mandating that.

------
calebm
I've been using Markdown + Pandoc for my resume for the last couple of years:
[https://github.com/calebmadrigal/Resume/blob/master/resume_c...](https://github.com/calebmadrigal/Resume/blob/master/resume_caleb_madrigal.md).
It's definitely nice to easily update it on Github.

------
amwelles
I have a markdown resume as well, but I just used Marked[0] to convert it to a
nicely-formatted PDF. Then again, I've never needed to submit a MS Doc file.

[0]:
[https://itunes.apple.com/us/app/marked/id448925439](https://itunes.apple.com/us/app/marked/id448925439)

~~~
basicallydan
Can you style it yourself?

~~~
graphene
(author here)

Flexibility in styling is not a strong point of my approach to be fair, since
you'd need to write new styles in both css and tex.

If people want to contribute new css styles, I can try and come up with tex
equivalents...

~~~
basicallydan
Even better: a transpiler.

------
BinaryIdiot
Markdown resumes are neat just like the LaTex and others but I feel like
they're a bit gimmicky (every developer does one it seems). Maybe that's the
point. Some days I feel like I'm the only one who applies a set of styles and
formats to my resume current sitting in Google Docs or Word.

~~~
untog
Thing is, as a developer, I don't have Word on my computer. So when it comes
to reviewing resumes, one in Word format is going to be very difficult for me
to view. I might just not bother.

PDFs are fine. But, IMO, Markdown is better, because it's also demonstrating a
skill that's usable in your job.

~~~
jivid
Out of curiosity, what do you use as an alternative to Word if you do have to
open something in a .doc/.docx format? Surely just saying "I don't have Word
because I'm a developer" can't work in every situation?

~~~
Kluny
I use Bean (for Mac, no longer supported) for reading documents. Open Office
and Libre Office also work.

Honestly, I use Word for writing formal documents on the rare occasion when it
happens, such as letters to the government. But not for resumes. The
formatting is just too frustrating. I've been using HTML and markdown for
that. www.rocketships.ca, for example. I never send .docs to anyone - .pdfs or
raw text only.

------
diminish
After Word/PDF/Latex/PS/HTML and XML, web-famous resumes have come so far in
Flash, JSON, now Markdown. I suspect there were Java applets and
iphone/android app as resumes.

What's left? a YAML resume?

~~~
bpp198
Non-'standard' resumes are terrible for recruiters as they have to be parsed
before they can be read properly or added to any tool they may be using.

By 'standard' I pretty much mean PDF.

~~~
gioele
In EU the Europass CV [1], or "Standard European CV" as everybody calls it, is
the de-facto standard CV. It is often the compulsory format for CV for jobs in
the public sector and it is also suggested by many businesses.

[1]
[http://europass.cedefop.europa.eu/en/about](http://europass.cedefop.europa.eu/en/about)

------
prat0318
You should also look into this gem which converts to html, Markdown :
[http://prat0318.github.io/json_resume](http://prat0318.github.io/json_resume)

------
krrishd
Since jsonresume.org allows for Markdown export of the resumes, it should
adopt this format specifically for its markdown exports.

------
philip1209
I'm working on a yml-formatted resume built in Jekyll. I'll post it when it's
done.

~~~
bdamos
Hi, you might be able to take some pieces from mine at
[https://github.com/bamos/cv](https://github.com/bamos/cv). I use Python and
Jinja templates to convert a YAML document to Markdown/HTML and PDF and
currently publish it to my Github pages Jekyll blog at
[http://bamos.github.io/cv/](http://bamos.github.io/cv/).

------
Siecje
In pandoc how do you convert a directory of .md files into HTML?

~~~
graphene

        pandoc dir/*.md --to html
    

should work.

~~~
Siecje
That will print it in the terminal but how do I save each .md file as a .html
file?

~~~
jfb
Use a for loop?

    
    
        for f in *.md; do
            pandoc $f --to html > $(basename -s.md $f).html
        done
    

EDIT to fix the adjectival basename call.

~~~
q_revert
agreed, this is exactly the sort of thing for loops in shell are useful for..
incidentally, in zsh you can do this with

    
    
       for f (*.md) pandoc $f --to html > $f:r.html
    

personally I find that when I can fit a loop on a single line in zsh I'm much
more inclined to use them

