DEV Community

Cover image for Representing technical skills on a timeline
Raphaël Pinson
Raphaël Pinson

Posted on • Updated on

Representing technical skills on a timeline

CVs and other websites presenting technical skills often lack a time dimension, allowing to know when and for how long a technology has been used.

Timeline on CV

About 8 years ago, I wanted to add a visual representation of my experience on my PDF CV.

Since I already used LaTeX with the excellent moderncv class, I wanted the solution to extend on that class. TeX StackExchange did not disappoint (they never do) and this gave birth to the moderntimeline LaTeX package which I have been maintaining since.

Moderntimeline example

To this day I still use this solution on my CV.

Since then, a template has even been added to Overleaf to make it easier!

Template on Overleaf

Technology timeline

The CV timeline is still not enough to present the data I wish to display, which is the temporal evolution of technical skills.


Among the many websites which analyze public code repositories to get metrics out of them, OpenHub (previously Ohloh) is very interesting because it presents a timeline of languages used in projects.

Here's an example with my profile, where you can identify clear periods: a lot of LaTeX (dark blue) in the first years (when I edited books), then Augeas (light grey), mostly Ruby (red) between 2012 and 2015, then mainly Go (purple).

OpenHub Languages View

A broader approach

Not every tech skill can be measured with a number of code lines though.
So in 2013, I switched my main CV page to a temporal skills view.

Skills View

This uses vis.js to build a table of skills from a JSON file, e.g.:

  {"id": "Orange", "content": "<img src='img/orange.png' class='logo' /><b>Orange Portails</b><br />Systems Engineer", "start": "2006-06-01", "end": "2012-03-01", "type": "background", "className": "orange"},
  {"id": "Camptocamp", "content": "<img src='img/camptocamp.png' class='logo' /><b>Camptocamp</b><br />Infrastructure Developer", "start": "2012-03-01", "type": "background", "className": "camptocamp"},

  {"group": "provisioning", "content": "Debian FAI", "start": "2006-06-01", "end": "2012-03-01", "className": "contributed"},
  {"group": "provisioning", "content": "Kickstart", "start": "2006-06-01", "className": "implemented"},
  {"group": "provisioning", "content": "Terraform", "name": "terraform", "start": "2016-05-01", "className": "contributed"}
Enter fullscreen mode Exit fullscreen mode

This JSON file is parsed and displayed on the page. Each skill can be assigned an icon as well as additional information. The skill bar can be clicked to display this information, taken from the skills/ directory and documented in Markdown.

Details View

The code is open-source and can be forked on GitHub. Just check the gh-pages branch:

GitHub logo raphink / CV

My CV in both LaTeX & web/ajax formats

As usual, pull requests are welcome if you find nice ways to improve this!

Top comments (1)

jj profile image
Juan Julián Merelo Guervós

That's pretty cool!