JSON Resume – a JSON-based open source standard for resumes
jsonresume.org
jsonresume.org
http://interop.europass.cedefop.europa.eu/
HR-XML (also comes in a JSON variant, "HR-JSON"?):
http://www.hr-xml.org/ http://www.hropenstandards.org/
There is also Microformat (hResume):
http://microformats.org/wiki/hresume
Europass is used by the European Union, HR-XML is used by the US government. Microformats are probably used by many. This stuff is OLD news. We certainly don't have a shortage of usable standards.
The problem here is: some European countries use very particular formats for their CVs. e.g. Germany has the "tabular CV", which expects all these things to be organized by time and date, it even includes where and when you went to Kindergarten. Europass doesn't fit many of those particularities (which is kind of the point).
At one point I even added an explicit line to my Word/PDF versions: "this document is also available in HR-XML format on request". Nobody ever asked, so eventually I just took the line out. I've never heard of Europass CV, but I live in England, where EU is a dirty word...
TBH, this is the sort of stuff most recruiters don't bother with anyway, in my experience the (European) recruiting industry runs on MS Office. Some industry vendors might do some munging and conversion behind the scenes, but they'll likely never allow people to submit their own data outside of tightly-checked web forms.
Some thoughts:
- Eliminate first/last name distinction, and let people just put in their full or legal/passport name. Names are very crazy across cultures, as in some people don't have first or last names, so might as well just let them enter free form text as their name.
- Include a "Preferred name" field, also as freeform text. Some people like to go by nicknames, or shortenings of their names, and it will help out.
- Collapse location region and state into a single field.
- If "websites" is a hash with only a single field, call it "website" and make it a string.
Will create issues for your other feedback -> https://github.com/jsonresume/resume-schema
1. Semantic versioning doesn't work for schemas. (What's a patch/bug fix for a schema? It's meaningless.) Use SchemaVer instead - http://snowplowanalytics.com/blog/2014/05/13/introducing-sch...
2. Make your schema self-describing so that a given resume instance is associated with its schema version http://snowplowanalytics.com/blog/2014/05/15/introducing-sel...
3. Publish your JSON Schemas to Iglu Central, the first schema registry for JSON Schema - https://github.com/snowplow/iglu-central
As for feedback on the schema itself, I'd probably like to see some more detail allowed for the courses under education. I remember after graduating, there really wasn't anything more substantial that I could put other than details about my courses. Using the example on your page, I think "HS1302" and "Introduction to American History" could possibly be separate fields, and I think there should be an additional details/description/highlights field.
Also, I am a consultant, and I like to list a projects section. Each project could have a name, a client, an employer (the consulting company), a date range, and details.
//
Seriously, JSON really sucks at markup (it also kinda sucks as data interchange as well, but let's not worry about that here). This 'standard' is so hand-wavy. Every property is a 'string', so why are you even bothering putting it in? Right, not really 'strings' because a bunch of fields have a JavaScript (so we're not really sticking JSON here, are we!) comments to describe it. Presumably order of object properties matters, or maybe it doesn't, or maybe it matters for some (e.g. root object / address) and not for others (eg. phone numbers). Date format? Who needs that! Which fields are optional? All of them? Some of them? None of them? I like the 'hobby' field. Complete waste of space on a real resume and a complete waste of space here as well (hah: hobby name and hobby keyword). Urgh.
It's a mess. A total mess.
That part on the homepage is a documentation generator I made for any given schema, it's suppose to be more of a go to reference manual but I guess that is unclear on the homepage.
All the modules have to pass the validator which is based off the formal specification in the repository. I think that is what you mean and as far as JSON is concerned, will keep at it for a bit and see how far it can go, if it's impossible hopefully a new standard in a correct format will take off and use some of the same tooling that we have built.
I'm sorry, but XML isn't some panacea of describing or encoding document structures. It's generally a collection of fragile verbose and overly complicated tools in a few given platforms to satisfy people that think enterprise programming means implementing every pattern that loosely fits their situation instead of clean, simple, elegant solutions that hide complexity where needed instead of creating more.
JSON + JSON-Schema is no more of a mess than XML + XML Schemas. And generally far more forgiving in any modern programing environment for client/server use.
> JSON + JSON-Schema is no more of a mess than XML + XML Schemas.
For this reason, many developers resist JSON-Schema. We already have one mess, if we need it - let's keep JSON clean! That's why we like it. A concrete example of keeping JSON clean was the removal of comments from the JSON spec to stop people using them as directives. If they had stayed, and JSON became complex and ugly and messy, would its popularity have continued?However... the increasing prevalence of complex JSON formats may eventually make some form of JSON schema necessary.
There's a lot of reading between the lines that can be done in an resume. Even the fonts say something about the person. If the person is claiming to be a UI designer and their resume has poorly chosen fonts and bad kerning, I'd toss it. If they claim to be a physics researcher and the resume is written in Word, I'd toss it too. With a JSON resume you don't get any of this information.
Also, it's not entirely clear how extensible this "standard" is. Resumes take multiple forms. A computer scientist might want to list a few open source projects. A photographer might want to embed a sample or two of their work.
The organization of a resume is almost as useful an introduction to a candidate as the terms on it. It's also useful to understand how much time was put into the resume.
> If they claim to be a physics researcher and the resume is written in Word, I'd toss it too.
Hm, that's going too far, though!
However, I'm not at all convinced that JSON is the way to do it. I think the way to do it is with XML and XSLT, although I already can hear the cries of "But XML is yucky and XSLT is hard." But by using JSON, we lose some semantic markup and end up having to parse it to create some semantic markup.
Still, I hope this, or something like it, takes off. This just needs a web-based GUI tool to publish a resume so that non-geeks can make it happen.
LinkedIn actually exports into a Microformat called hResume which has been around for a long time but has evidently not been able to amass a large developer community. This was another reason we decided to not start with XML.
So, not trying to be rude here, but have you wondered why it is that an XML resume format hasn't taken off? Other than it being based on icky XML? I mean XML+XSLT has been around for a loooong time and can more than handle exactly what this format sets out to do, and yet a standard XML resume format hasn't taken off.
Though I would love to hear someone else's thoughts on why an XML resume hasn't gained critical mass.
XML is perfectly human-readable...
> but I also don't know XML that well
Suddenly that statement makes sense.
Here's a silly playground I wrote to show my students XML.
http://xslteatime.herokuapp.com/
There's a pre-built example you can run.
I mean XML+XSLT has been around for a loooong time and can more than handle exactly what this format sets out to do, and yet a standard XML resume format hasn't taken off.
It's just as likely that the answer is "a standard resume format hasn't taken off" where the serialization format is irrelevant. Maybe not enough people are interested in working with documents and knowledge at that deeper, semantically meaningful level. Maybe sending resumes as PDF or MS Word or ODT and using simple keyword extraction has been "good enough" that nobody has felt the pull to use a better system?
What I mean is, it's entirely possible that this will fail to gain adoption for the exact same reason that the XML based one(s) did, and that the difference between JSON and XML is actually irrelevant. This is, of course, just speculation on my part. In any case, I hope this (or something like it) gains traction, since I'm a strong proponent of publishing semantically meaningful content, whether it's in RDF/XML, JSON-LD, SGML, DAML+OIL, YAML, Texinfo, Markdown, Hytime or hieroglyphics chiseled into stone tablets. :-)
But all that's needed is a script that eats XML resumes and outputs json resumes, and vice versa.
Just like I'd rather write markdown and read (rendered) html+css.
That said, on the subject of XML not being "icky": one resource for having fun with XML: "Program Generators with XML and Java" by J. Craig Cleaveland (Prentice-Hall, 2001):
npm install resume-cli
du -hs node_modules
103M node_modules
All this, and it doesn't provide line numbers when reporting errors due to an extra comma in the json file? Nor does it (yet) have LaTeX output...Still, can't complain, 5 minutes and I have a resume draft that doesn't look half bad in html, and is presumably entirely reasonable to customize (not to mention it's all inn a json-file anyway, so one could just use what's in ones actual resume, and shove the json through pretty much any scripting language w/templates and generate something reasonable).
Currently have 60 fresh issues on Github for the schema so after we digest those we will be improving the CLI once again.
Just to be clear, I was taking the same position you were...
Not to mention, XML is much more verbose, and when you wrap it in things like ws*/SOAP it gets really ugly really quickly, and if you don't map everything, it gets complicated and often fails. When you publish a service using one toolkit, it's often difficult to use the service in another toolkit (example, using Java services in .Net gets really painful at times). Unless a lot of detail is done, or an API client in that client's environment is provided.
This isn't about XML specifically but about the environment it tends to create. JSON is typically simpler to write, easier to code against and more forgiving in the tooling than XML is. Much like the differences between a scripted environment and a statically compiled environment.
> but intrinsically you can't look at XML file and know how a codified representation should look like...
Let's compare:
<book>
<title>How To Be Awesome</title>
<subtitle>Surviving on HN Posts</subtitle>
<author>
<first_name>Max</first_name>
<last_name>Power</last_name>
</author>
</book>
vs {
"title": "Being Awesome",
"subtitle" : "Surviving on HN Posts",
"author": {
"first_name" : "Max",
"last_name" : "Power"
}
}
To me, it seems that both of those:1. need a schema to be useful as a standard 2. express their hierarchy 3. don't specify data type (although I could add that info to both if needed) 4. have a level of annoying to them (commas, colons, angle brackets, etc) which modern IDEs have taken care of for us.
> if you have an element it will have properties and child elements... said child elements may contain children, strings, or ???
I need to use documentation to use `package.json` files too, because each node may or may not contain children. Node graciously tells me if I missed something. Docbook also tells me if my XML is malformed. I see no difference here,
> JSON maps much more naturally to an object model in a given language.
It maps to a hash/dictionary. I'm not sure that qualifies as an "object model" unless you only write JavaScript.
I'd really like people to understand that XML is, like HTML, really great at describing and marking up content so that something else may process it.
That doesn't make sense. You wanted a low barrier to entry, but you have to mark this up yourself with JSON, install command line tools, etc. Seems to me a web app that I fill in some forms and generate a page on your site would be the quickest way to lower the barrier.
> At the moment the majority of web technologies are using JSON so we believe that to get this standard off the ground we will need to go with the grain.
I understand the desire to use what's popular. But I just don't think it's the right choice. I'm interested to see the implementation of how this is turned into a PDF though.
Right now, though, it does sound a bit like "every problem is a nail." Perhaps it'll become more clear to me as I dig in more.
Again, I do think the project is very cool and will be encouraging my students to take a look at how they can use this to promote themselves.
We actually had to pull our PDF converter due to bugs and are currently just using a service called pdfcrowd.com.
Though the general idea is that HTML can be passed through WebKit and rendered as various image formats and PDF -> http://wkhtmltopdf.org/
Here is a link to what your first idea might look like, it automatically generates forms based of JSON specifications -> http://jeremydorn.com/json-editor/
I'll start adapting resumebeacon.com to support jsonresume. I created my site as a LinkedIn resume generator, so integrating a JSON formatted feed shouldn't be much trouble. I'll start work on it tonight and post it to "show HN" when it's done.
But let me guess: you will?
(I've worked at three recruiters, two of the biggest in the UK)
The majority of which technologies? The CV generators that are already out there, which are the most relevant ones, don't use JSON. How are you creating a low barrier to entry by completely disregarding what people are already using?
JSON was a much better choice. YAML would have been better still (it's more human readable), but both beat XML hands down in any situation.
It's one of the best tools for marking up content. It's a Markup Language! If you've never used XSLT you really should look at what it can do. Because I can transform an XML resume into something gorgeous without writing too much programming logic.
It's the reason so many technical book publishers use XML. Easy to transform content while also describing that content.
It is absurdly popular in bureaucratic environments. Bureaucrats adore its complex rules, ability to create arcane standards and illusion of openness. It's also good for job security. However, none of that bodes well for the rest of us.
I have used XSLT and I am absolutely appalled that something like that can even exist. It's actually worse than XML. It is a turing complete language (this means that you can make it as complex as you like, and boy oh boy does THAT happen), but its readability is AWFUL.
There is a reason we have other general purpose languages turing complete like python or javascript or even java and that is because, while they may have some warts, they have had a lot more thought put into them in order to help make them more consistent, better structured and readable than similarly committee-designed / thrown together languages like XSLT.
I can use a normal programming language transform a JSON resume into something gorgeous and I GUARANTEE it will be lot easier to read and modify than your XSLT equivalent.
Sorry to rain on your parade, but it's true.
Oh stop. XML syntax is freaking simple. <tag>content</tag>, <tag><child>...</child>...</tag>, or <tag attribute="value" ...></tag>. Toss in namespaces for composing other formats _if need be_ (and you don't have to use them). And... you're done for 99.9% of any use case you can think of. You have to repeat yourself when you close a tag. Whoopdedoo. Any decent editor will close them for you anyway. I think the "XML sucks" crowd are conflating very complex XML _formats_ with XML _itself_ and deciding that XML is ridiculously complex and verbose because e.g., SOAP is complex and verbose.
Just curious, do you hate HTML for similar reasons as well?
Truth be told, I find XML easier to read than JSON in many cases. shrug
* DOCTYPE
* Namespaces and namespace collision handling.
* The likelihood that you will receive badly formed XML and be forced to parse it anyway.
* The multiple different ways of escaping characters.
* Language identification
...I could go on.
Oh, and your parser has to handle ALL of this. It's no good assuming that "since the basics are fairly basic it doesn't matter". It doesn't matter only when you're generating XML, but somebody SOMEWHERE is going to have to consume it.
Wanna know why it's typically possible to blow up an XML parser with a memory leak or a buffer overflow but not a JSON parser? This complexity is why. Just using it creates an increased attack surface for your internet facing API.
>Just curious, do you hate HTML for similar reasons as well?
I'm not its biggest fan, and I feel like it could have been done a lot better. However, A) there isn't much alternative so bitching about it it somewhat pointless and B) at least I never have parse it (want an exercise in frustration some time? try doing THAT...).
I was mentioning the "99.9%" use case of XML for e.g., a resume format. You don't have to specify DOCTYPEs, namespaces, etc.
> The likelihood that you will receive badly formed XML and be forced to parse it anyway.
You're supposed to fail on badly-formed XML!
> Oh, and your parser has to handle ALL of this.
So? I don't have to write an XML parser because there are numerous well-tested ones already written. I wouldn't write a JSON parser for the same reason.
> Wanna know why it's typically possible to blow up an XML parser with a memory leak or a buffer overflow but not a JSON parser?
First of all, you shouldn't speak in absolutes. You certainly could write a JSON parser that blows up for the same reasons. There's nothing inherent in JSON that makes it impossible to write a bad parser.
> at least I never have parse it (want an exercise in frustration some time? try doing THAT...).
For anything more than a trivial format you can automatically have the parser bind the content to a POJO (or your language's "plain old object" analogue).
Just because you were forced to use bad schemas in enterprisey situations doesn't mean XML is bad. SOAP is not XML. Spring MVC is not XML. Those things use XML.
Docbook's pretty easy to follow. That, in my opinion, is a great example of XML+XSLT.
With XML I can do this:
<experience> <title>Manager</title> <company>Veridian Dynamics</company> <description> Responsible for doing all manner of things. </description> </experience>
It describes exactly what we're looking for in the same way as the JSON variant does. My editor will auto-close those tags the same way my editor will auto-close the closing curly braces in the JSON version.
Of course, we could make it suck if we just go ahead and add all sorts of extra rules and hierarchy and turn it into a monstrosity.
But I'd rather not.
I am not complaining about being forced to use bad schemas in enterprisey situations, either. That is merely the icing on the cake of the badness that is XML.
I am complaining simply because there is not one instance I have ever come across in my entire programming career (12 years now) where XML would have served me better than an alternative (assuming I had a choice). Zero.
For example:
>With XML I can do this: > ><experience> <title>Manager</title> <company>Veridian Dynamics</company> <description> Responsible for doing all manner of things. </description> </experience>
Yes, you can, but so what? You can do that in YAML and JSON too. Furthermore, your YAML/JSON parser is 10x less complex, faster, less likely to have buffer overflow security issues and less likely to have memory leaks.
Furthermore, while my app that consumes this markup will probably have to treat <experience><title>Manager<company>Veridian</experience> as valid, because consuming badly formed XML is standard and expected (your product manager will probably treat not parsing it as a bug), my app won't EVER have to treat invalid JSON as valid.
>Of course, we could make it suck
Yes, and there's a 90% chance somebody will. Whereas with JSON and YAML the chances of it being made to suck are far lower, because so many of the unnecessary avenues which are used to make XML suck are closed off in YAML.
XML is a markup language. JSON is a serialization language. YAML is a serialization language too. I want to semantically mark up my content. And this is very different than application programming with XML.
You want to write a book with Docbook's XML? Better give it exactly what it wants, or it will reject it. It's not SOAP.
Yes you do, because otherwise people will treat your application as buggy. People have tried doing this with browsers and it never, EVER, ever works. If one app accepts malformed markup, they expect every other one to do it as well and no amount of preaching about the sanctity of well formed markup is going to change their mind.
>You're talking web services again and I'm talking about resumes.
If resumes are going to be done in markup it's so they can be consumed by web services. There is no point in having a machine readable language if it's not going to be read by machines.
>You're talking general and I'm talking about a specific place, publishing content, where XML shines.
I would rather use LaTeX for publishing content. It's complex, but it can handle layout beautifully.
Docbook is complex and it can't: http://www.docbook.org/tdg/en/html/part2.html
For simple markup, I would rather use markdown. Markdown in YAML would probably be a better solution than docbook, but docbook's the standard now, so not much you can really do about that.
> Yes you do, because otherwise people will treat your application as buggy
You are mistaking HTML/Browser rendering and XML parsing. An application that parses XML for book rendering, or whatever the hell the purpose of the application is, will fail on invalid input, whether it is because of invalid tag nesting or schema invalidity.
That is NORMAL, and you would do the same with JSON, so that's not because of history of HTML and IE/Netscape/whatever that you need to change your mind about XML.
> If resumes are going to be done in markup it's so they can be consumed by web services
So if a web service was to accept a specific type of XML, it would certainly need to be made valid, if a client does not conform why the fuck do you want your service to be permissive? Seriously.
You can make a service that accepts the resume schema directly, or embed it in a CDATA if you want to.
> I would rather use LaTeX for publishing content. It's complex, but it can handle layout beautifully
Talking about apple and oranges. XML and docbook are not the same.
I am not mistaking, I am comparing.
>An application that parses XML for book rendering, or whatever the hell the purpose of the application is, will fail on invalid input
Which will be treated as a bug if other applications DON'T fail (which some undoubtedly will).
>That is NORMAL, and you would do the same with JSON
In my experience the OPPOSITE is normal. If XML is invalid but still makes sense, you treat it as valid, because if you don't, your competitors will.
If the customer is getting XML from output X and feeding into your app, he doesn't care that output X is outputting invalid XML if your competitors' apps accept it. He'll just treat your app as the broken one, not buy it and move on with his life and you've just lost a sale. I've seen it happen MANY times. This phenomenon does NOT just apply to browsers, it's just more aptly demonstrated with browsers. NOBODY wants a browser that doesn't accept valid HTML. They never did and they never will.
And what's different about web pages to any other kind of XML? There's more of them, that's all, and people want ALL of them to work. Permissiveness in the consumers is inevitable with ANY kind of XML document that becomes popular for exactly the same reason as it is with browsers.
>that's not because of history of HTML and IE/Netscape/whatever that you need to change your mind about XML.
Yes it is because this sort-of-invalid-but-not-quite problem is a unique one to XML. JSON doesn't have it.
>So if a web service was to accept a specific type of XML, it would certainly need to be made valid
If you don't think somebody would throw invalid XML at your app and not expect it to work then you've clearly never worked with XML seriously.
If you think you can just tell the customer to go fuck themselves because the XML they got from another service doesn't validate, see my previous point.
>if a client does not conform why the fuck do you want your service to be permissive? Seriously.
Because it will make your service work where an impermissive one won't, and when your service works and competitors don't, that's called gaining marketshare.
Seriously.
>You can make a service that accepts the resume schema directly, or embed it in a CDATA if you want to.
Or you could just use JSON or YAML.
>Talking about apple and oranges. XML and docbook are not the same.
docbook IS XML.
Yes, you are mistaking it. HTML is "relaxed" about various parsing errors. XML absolutely is not. If the input document so much as has a closing tag missing, parsing will fail, end of story. If it doesn't match your schema, parsing will fail, end of story. I'm not sure why you keep going on about this point. You're woefully misinformed if you think XML parsers accept malformed input.
> Which will be treated as a bug if other applications DON'T fail (which some undoubtedly will).
Are you talking about "my app accepts schema A and another app accepts schema A.1, therefore if I don't accept schema A.1 people will think my app sucks"? I'm not sure why you think this is an XML-specific issue.
Yes apples and oranges. They taste different, because they are.
> In my experience the OPPOSITE is normal. If XML is invalid but still makes sense, you treat it as valid, because if you don't, your competitors will.
If this is a business requirement you would do the same for JSON.
> If you don't think somebody would throw invalid XML at your app and not expect it to work then you've clearly never worked with XML seriously.
Nope, if you have a customer sending you an XML which should validate against a predefined schema, no, hell no. I've worked for the European office of publications, and the web services were just receiving tons of XML on a daily basis. And you know what, invalid XML were rejected that's as simple as that. If you don't respect the supplied schema, retry when correct.
> docbook IS XML.
Docbook USES XML.
Last but not least, HTML is not XML, HTML is not a subset of XML. Permissiveness has nothing to do with web services acceptance of invalid schemas.
If you call a Google service whether it uses SOAP (so XML) or REST, if the request body is invalid, you'll be rejected either way. The SOAP one won't try to parse more or resolve issues just because it is XML based.
The way I look at it this is as much (and probably way more) a platform to write services on top of as it is a another hole to throw resume.xml down. And for that, json is undeniably better suited.
Nobody is trying to convince you to publish books in json.
Just like XML.
XSLT isn't a document format, its by design a domain-specific programming language designed for use in transforming XML documents to other formats.
> Adding <xsl:if> makes it code, horrible, horrible code.
Its supposed to be code. Now, if you want to argue that its horrible code, that's another issue, but complaining that XSLT is code when that's the whole point of XSLT is, well, missing the point.
They have a HR-JSON and HR-XML schema for HR docs..
Reinventing?
If that standard is important and well designed, it should be trivial to write a converter from JSON Resume.
As Douglas Crockford once said (I believe in reference to XMLRPC) the great thing about reinventing the wheel is that you might get a round one.
(on the HR Open Standards Board of Directors)
If you want JSON, you can export it from the hResume using a parser.
Unlike JSON (or XML), non-programmers can read HTML in a crazy new piece of technology called a web browser without having to run it through any transformation tool. Want PDF to send to a company? There are a few WebKit PDF renderers available.
Want to style it? CSS.
Want nice fonts? WebFonts.
It's a web page. Crazy idea.
Classic version: http://www.microformats.org/wiki/hResume
New version: http://www.microformats.org/wiki/h-resume
The plan is to create a standard that developers worldwide are comfortable enough with to build upon.
To give the standard some traction, we have built tools to export to other formats such as pdf, txt and doc.
We also thought it would be cool and useful to have an NPM like system for resumes. So we built a CLI heavily inspired by NPM, to init and publish your resume to the jsonresume.org registry.
The themes right now are in bad shape, and we are looking for designers who would love to jump in during the early stages. We are thinking of building a theming version manager on top of NPM to take advantage of versions/distribution and also allow theme developers to implement their theming systems however they like (erb, mustache, md etc).
All the code is open source and available at -> http://github.com/jsonresume
Theme developers should be looking at the resumeToHTML repo -> http://github.com/jsonresume/resumeToHTML
People with comments about the standard semantics and structure are encouraged to post their ideas to Github issues. -> http://github.com/jsonresume/resume-schema We also want to formalize the standard a lot more over the coming weeks.
If the project can be pulled off professionally and driven by the community, we believe that working with resumes will be fun!
Edit: Here are some of the reasons why I personally think JSON resumes will improve HR.
(trying to figure out bullet points)
- Better searching and filtering than PDF/doc. Making recruiting a tad easier.
- Applying themes will be a lot easier.
- Applying for jobs will be easier. Instead of filling out complex forms over and over again services might start allowing you to auto-fill with your JSON resume.
- There are many services that ask for your career history such as LinkedIn, Angel.co etc. These could be autopopulated or synced with your master copy.
- You can update your resume programatically so Github projects can be inserted and any other online certificates that you might want automatically added to your resume like Mozilla Open Badges -> http://openbadges.org/
- The comment section suggests that lots of innovation could arise from it.
----------
Make sure you try the CLI! sudo npm install -g resume-cli
I've posted an issue on github [0][1] mentioning that "firstName" and "lastName" is probably not a good representation of names. I don't actually know what the solution is, but this article [2] gives some great reasons why we tend to make incorrect assumptions about peoples names, which have the possibility of excluding some people form our tools based on their name alone.
[0] - https://github.com/jsonresume/resume-schema/issues/4 [1] - It seemed like an appropriate place to comment. Please let me know if there is somewhere else you'd prefer such comments. [2] - http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-b...
Perhaps you should just require "full name" which the author of the resume would decide for him or herself.
1. Asking for "Given Name" and "Surname" clears up most issues with cultures like Korea (where surname comes first).
2. Simply have a "Name" field. Accept any Unicode characters. Hope for the best.
If someone has a name that cannot be represented in written characters or cannot be rendered in Unicode (which would be amazing, since Unicode covers ancient dead languages and fictional languages like Klingon) they probably have more pressing issues than trying to serialize their resume.
This solves some of the falsehoods programmers believe about names: http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-b...
In Germany it's not really common to call people by their first name (IT is an exception), but I would hardly put "Mr. Lastname" into "what do we call you". It all depends on the context, even in the limited scope of a resume.
You see, if you are calling person from Germany, knowing how to address him is not enough, you shall still know how to make a call. If you don't know that, you'll be rude anyways, and if you know that, you'll also know a proper way of addressing persons in different cultures.
Is there really any further scope that should be covered? If there are specific cultural issues, shouldn't that be hammered out later?
Really, the design question for JSON Resume is "For what purpose is a name being provided?"
My resume.json for science [3]
[1] https://github.com/dhawalhshah/modern-resume [2] http://dhawal.me/ [3] http://dhawal.me/js/resume.json
Thanks
What they're proposing is structure, not machine readability... Technically, with the state of OCR and other methods, many things like LaTeX, PDFs, .DOCs, etc are all perfectly machine readable -- the problem is getting the information out in a meaningful way.... that's usually done by standardizing on structure.
When it comes to specifying structure, XML and JSON are pretty much the front-runners (at least I think so), and since XML isn't so popular lately (since it's so verbose), JSON is in the spotlight now
Uh, no. What does OCR even have to do with the 'machine readability' (for your strange definition of it) of the formats you mention?
The big picture is to make as many things as possible "machine readable" (things more difficult than resumes), and use machines to work faster than humans ever could.
Other than the fact that most of the things I noted are ALREADY in a state that is computer usable (whether it makes sense to humans looking at computers is another question), I was trying to point out that getting the information into a computer (A.K.A. Machine readability) is not the issue we're struggling with now, it's structuring, characterizing and understanding the information.
I mentioned OCR because it's used to parse resumes to find important bits when other methods fail (or someone submits something crazy like a scanned version of their resume instead of the file) -- something that wouldn't be necessary if there was a standard (like is being proposed) to adhere to, that people could semantically find what they wanted from.
Also, if you read closely, I said with the state of OCR AND OTHER METHODS... OCR does not have anything to do with the machine readability of other methods, it's just one method people use to extract data, or for machines to "read" the document.
It took me ages to figure out what this actually was, because your non-standard "lazy" spelling made me think this was about resuming interrupted downloads/transfers of generic JSON data. (Possibly by doing a partial parse of the data that you have got, or over a non-HTTP protocol, otherwise why not just use HTTP "Range:" headers?) I had to unlearn that before the light-bulb went off.
I mean, résumé and resume have the same French root, but in English - even American English as far as I can tell - they're totally different words! Even the pronounciation is completely different. So why would someone spell résumé as resume, especially in the name/title of a project about them?
How is that going to do anything except cause confusion?
We have words with the same spelling but different meanings and pronunciations all the time - so called Heteronyms [2]. Doesn't seem that confusing to me. To me it'd be pretty weird if people who understood the word rôle were baffled by the word role.
[1] http://en.wikipedia.org/wiki/English_terms_with_diacritical_... [2] http://en.wikipedia.org/wiki/Heteronym_(linguistics)
Really? I've always thought of heteronyms as one of the most stand-out features of English that exemplify its confusing inconsistency. More so than the homophones, because it's harder to think of the "other" meanings if you've got the wrong pronunciation in your head.
In reference to the passage you quoted about diacritics, if only you had read as far as the next-but-one paragraph, you might have noticed: "Words that retain their accents often do so to help indicate pronunciation (e.g. frappé, naïve, soufflé), or to help distinguish them from an unaccented English word (e.g. exposé, résumé, rosé)."
Regarding that: I recently reached the fed-up point with sudo or not sudo to install nodejs app and the mess it leaves behind when using sudo for just installing some local binaries.
I stumbled upon nvm[0] when installing docpad:
> The above should not require sudo (the # means sudo). If it does, we recommend reinstalling Node.js so that it doesn't. Otherwise you're likely to run into permission problems in the future. Follow the Step 1 instructions to reinstall Node.js without requiring sudo.[1]
Which led me to this:
> http://learn.bevry.me/node/install
and then this:
> https://github.com/creationix/nvm
It makes npm installs everything under $HOME and never needs to be ran with escalated privileges. `nvm install X.X` and `nvm use X.X` allows switching between node versions and installed packages.
Edit: references should also have an optional 'organisation' field and a 'position title' field. "This reference was the technical lead at Foo Corp, my second-last job. Contactable here"
Anyway, more to the point, there has been some existing work done on developing standards for representing resumes. I would highly, highly encourage you guys to look at this and consider making whatever you do compatible with the existing work as much as possible. Consider ResumeRDF[1] for example. Maybe consider doing JSON-LD and using the FOAF and ResumeRDF vocabularies?
Class: cv:Person
Person - CV subclass of WordNet person
in-range-of: cv:aboutPerson cv:referenceBy
in-domain-of: cv:gender cv:birthPlace cv:hasCitizenship cv:hasNationality cv:maritalStatus cv:noOfChildren cv:hasDriversLicense
[back to top]
It's probably a bad idea to encourage people to list protected characteristics on a CV / resume. Employers (except vary rare exceptions) can't use this information so there's no point including it.I'm guessing it happened because they "borrowed" a generic notion of "person attributes" from some other, less specific, source, and didn't really consider the legal implications you mention.
I guess it's an open question whether or not there's any actual valid scenario where somebody would want to put that stuff. It seems unlikely to me, but maybe in other countries or something? Hmmm... dunno.
See for example this guide to resume writing by a German university [pdf]: https://www.uni-muenster.de/imperia/md/content/math_nat_faku...
- Allows extensibility with other xml standards (such as SVG and MathML in your resume, which might makes sense) - Allows linking to other stuff with XLink - Allows styling it with lots of xml styling technologies. - Better versioning support
JSON is not bad however, so if you just want to have simple plaint text cv's, json is good enough. I do agree that with XML comes bloatness, complexity, and more crap. However from a pure technical point of view, its a better option for doing resumes.
http://xmlresume.sourceforge.net/
That project seems dead now, and recent updates to my systems have resulted in me being able to build HTMLTXT but not PDF.
In the future, when looking for a job, I'll be looking at JSON instead. It might not be the best tool, but it seems to be what several _live_ and active projects are using.
* By "open source standard," what do they mean? I don't see any evidence they're on an RFC track, so this would be "standard" in what way?
* Why? I've never needed a resume in JSON format, but that is anecdotal. They don't really say why they're pursuing this on the site, except why they chose JSON.
Good luck, either way! Making something isn't easy, so I applaud any effort to do anything.
Let's say you had a bank of resumes -- you could easily find all resumes that know Java and have had at least 2 jobs and an active GitHub repo, and automatically send out a request to their references.
Currently, you have to read an unformatted PDF and extract the info manually -- it's not the end of the world, but it gets tedious if you're dealing with lots of resumes.
Except that you're going to have people who put "J2EE" or "J2ME" or "JavaFX" or whatever else people like to specialize in instead of plain "Java".
For example, what is an "RFC track"? I was also hoping that Github Issues might be able to replace the mailing list style of managing standards, what do you think?
I feel like it would be a much better way of handling resume type data if it was self describing rather than using a very specific schema that ties you into a data structure that may not make sense in many cases. In that case you could simply look for different types of data to display versus a very specific format that won't hold up to every use case.
Otherwise you have the xkcd problem: http://xkcd.com/927/
It's boring and tedious work, and the number of edge cases will multiply geometrically, but it's likely the only kind of thing that would make this take off.
P.S. Why not YAML?
I agree that making it interchangeable is best overall (especially since there is a 1:1 convertibility between the two languages).
Perhaps the brand should actually reflect this instead. JSON is preferable in a data interchange scenario, but for keeping or displaying a human readable version, YAML is better.
As before, though, it's not YAML/JSON - it's the richness of the import/export filters that will make this idea float or die. Nobody much is going to want this so that they can publish their resume on jsonresume.org. People will want to use it so they can efficiently and easily import their linkedin resume and upload it to [insert fortune 500] company's custom HR portal / top 7 job sites.
Some comments:
- I found it a bit odd that 'resume init' only prompted for firstName and personal email; a more complete wizard would be useful. I suppose it wouldn't be hard to create a third-party "JSON resume generator" app with a nice friendly pretty interface for this (it is just JSON, after all).
- As mentioned in other comments, the "firstName" and "lastName" fields make excessive assumptions about the user's native/preferred naming convention.
- The schema only provides for a "blog" element in the "websites" array. More options would be appreciated, since not every personal website is a blog. Alternately (if the intent is really for only one website entry), providing a scalar/string "website" element would be more to-the-point.
- As someone who prefers YAML (it looks so much nicer), built-in support for YAML<->JSON conversion would be awesome for me (i.e. be able to export to / import from YAML). For now I'm fine with using yaml2json/json2yaml, but such import/export functionality would be awesome. Perhaps a command-line switch for exporting (i.e. "resume init --yaml")? Alternately...
- On the above note, would it be possible to make "resume init" output to STDOUT instead of directly to a file? That way, it would be simple to run "resume init | json2yaml > resume.yaml" (for example).
Will add your other feedback to the issue tracker soon.
* It's common for resumes to include a full address, so elements supporting that could be added to the location. There should probably be a way to strip this out before publishing it to a public place though.
* I'd like to see a section for volunteer activities. I do some volunteering which, while not related to my day job, is worth highlighting.
* The references section would usually include contact information for a potential employer. Generally this would be a separate page that would be given during an interview. My main resume says "References available upon request" and I have a separate document with my references in it.
The biggest win, in my mind, is that the schema captures the knowledge of what belongs on a resume. Being able to take that single source and produce multiple versions (e.g., the public one, the private one with full details, a list of references, etc), not to mention everything else that comes with a standard schema, is a huge bonus.
Your meta-layer idea is great too, at the moment we only have password protected resumes.
We are actually building an encryption converter, so you can encrypt your resume with a passphrase, I imagine these public,private etc versions could be controlled by encryption.
I posted about it then (http://erniemiller.org/2013/06/19/my-happiness-formula-me-js..., but the thought at the time had been that it would be nice if prospective employees published something along the lines of things that contributed to their contentment with work.
This was eventually intended to be presented sans ratings in a little browser plugin, for recruiters and the like to score themselves honestly against the criteria, and a little bit of math would yield a compatibility rating on a click.
It wouldn't take long until such a thing evolved into a more full-featured resume such as this. I like the idea.
I can imagine that for certain people it offers opportunities to "network", but in my case it is more an invitation for random people to spam me than a tool to connect.
Beyond the resume, I am wondering if it would be possible to build some kind of decentralized professional network, with resumes as nodes and professional/academic relationships in between, maybe even a vetting system (LinkedIn recommendations are not only time consuming but also worthless IMHO).
I don't know that the themes, necessarily, are that useful (I don't like the idea of implicitly connecting presentation with JSON like that - i'll make my own themes thank you) but I do like the idea of a common transport format for resumes.
You have publications, but that implies written material is produced. And should publications have a place for co-authors? It seems wrong to not acknowledge them.
Thanks!
I could see this as a natural expansion of http://schema.org/Person
We also want to build a feature into the command line tool that lets users sync their resume.json to LinkedIn.
All you have to do is use the terms with JSON-LD.
For people interested in standardized CV, by the way: http://europass.cedefop.europa.eu/en/documents/curriculum-vi...
This site details some stuff about working with Europass: http://interop.europass.cedefop.europa.eu/
I'm surprised they didn't go for interoperability with what's already out there.
Checking that dates are logical, spell checks, checking for dead links, showing employment gaps and so on.
Well done.
I've actually written my resume in markup for a while just so that I could put it on a nice dynamically driven site. Sort of a fun weekend project (no, it's not hosted anywhere).
While I strongly doubt that this will ever be a standard, I think it's nifty, and potentially useful. It opens up easy, pretty resumes, which the world really needs (Note: I'm not being sarcastic. The number of mountains-of-text word document resumes I've gotten in the past few weeks is too high).
People have been doing XML+XSLT for their resumes for a long time, yet it really hasn't taken off in a standard way for whatever reason. Not sure this being JSON-based will change that. I guess I'm wondering what this solution brings to the table that previous attempts didn't.
Sorry I really don't understand the use-case. Having an API is good for styling (as you say), or doing some soft of programmatic transformation to data. I am having trouble understanding the need to do either for a resume.
Maybe it would help as metadata for a search engine, but in that case I think a plain text search would be just as effective?
I think json schema is a really nice thing to have and I'd like to see more people adopt it, but I'm having trouble coming up with the point for this use.
Of course, this is not to imply that having a really well-done resume is really worth much either.
Other people have mentioned the firstName/lastName problem and the region/state ambiguity. I'll mention a few more items that might be helpful if you really want this to become a worldwide standard:
1. In some countries, it is not only legal but also customary for employers to ask for, and job seekers to include, various demographic information about themselves that would be considered discriminatory in the U.S. For example, sex/gender, date of birth, marriage status, and family details. It would be good to define such fields in the schema but leave them optional. Or define a catch-all field where anyone can add any key-value pair.
1-1. Don't forget the full street address, including the postal code!
1-2. Citizenship. This is very important for companies that might need to sponsor your visa and/or geeen card.
1-3. In some countries, it is customary to include a photograph of yourself in your resume. Perhaps this could take the form of a "photo" field that takes a URL.
1-4. There needs to be a field where you can write down an alternate expression of your name. Many Korean names can be written in either Hangul or Hanja. Most Japanese names are written in Kanji, but often accompanied by Hiragana to help the reader pronounce them properly. A lot of employers in these countries require both forms.
2. Since this is going to be electronically processed, perhaps it would be a good idea to include the ticker code for publicly traded companies in one's employment history? GOOG is much easier to search for than variations of "Google", "Google Inc.", etc.
3. The publications schema will need to be significantly expanded if you want scientists and other academics to even consider using this. Take a look at how academic publications are cited. At the very least, there needs to be a field to specify the type of publication, e.g. book, ebook, edited book, journal article, newspaper article, conference presentation, workshop presentation, blog post, website, etc. There should also be a "doi" field for scientific and other academic publications.
3-1. The education schema needs a "summary" field, just like the employment schema.
4. Some employers prefer to get the content of the reference from the referee him/herself, rather than having the applicant include it in the resume. (Otherwise, the applicant could modify the content.) So you need fields to put the email address (to contact the referee) and a URL (to grab the content of the reference) in the references field. Oh, and don't forget the referee's employer and title/position. Those things matter.
4-1. Bonus points if the content of the reference can be authenticated with the referee's PGP key.
4-2. Extra bonus points if the entire resume can be authenticated with the applicant's PGP key, to prevent hiring agencies from messing with the content.
https://github.com/ransomw/ransomw.github.io/tree/master/med...
The only 'benefit' I see is that the crawlers/recruiters can parse your resume easier.
Great for them; usually not so great for you.
You are just backing up my point that recruiters will use it to grab your data and filter you like a product.
There is absolutely no benefit to you as an engineer. Quality / noise ratio is the issue here.
My resume is set up as http://www.microformats.org/wiki/hresume and noöne supports that, and it's been around for a while.