refacto: now using pagination to factor some code

This commit is contained in:
Laureηt 2021-05-21 00:26:20 +02:00
parent 02b718eb5c
commit 9a1bee1f28
5 changed files with 218 additions and 851 deletions

View file

@ -1,234 +0,0 @@
{
"locale": "en",
"name": "Laurent Fainsin",
"info": {
"label": "CS Engineering Student",
"about": "I am an hardworking and punctual person, I work well in a team but also on my own as I like challenge myself. I have good listening and communication skills, I am well organized and rarely fail to meet deadlines."
},
"contacts": [
{
"contact": "laurentfainsin@protonmail.com",
"url": "mailto:laurentfainsin@protonmail.com",
"icon": "fa fa-envelope-o"
},
{
"contact": "+33781492838",
"url": "https://signal.org/",
"icon": "fa fa-phone"
},
{
"contact": "Brest, France",
"url": "https://www.openstreetmap.org/#map=12/48.3930/-4.4601",
"icon": "fa fa-location-arrow"
}
],
"socials": [
{
"network": "laurent-fainsin",
"url": "https://www.linkedin.com/in/laurent-fainsin/",
"icon": "fa fa-linkedin"
},
{
"network": "Laurent2916",
"url": "https://github.com/Laurent2916",
"icon": "fa fa-github"
},
{
"network": "@fainsil:inpt.fr",
"url": "https://matrix.to/#/@fainsil:inpt.fr",
"icon": "fa fa-matrix-org"
}
],
"school_projects": [
{
"title": "Pagerank",
"repo": "",
"pdf": "{{ '/content/pagerank.pdf' | url }}",
"role": "Author",
"description": "Implementation of an iterative algorithm in Ada to compute the pagerank of a given network as quickly and efficiently as possible."
},
{
"title": "Frequency Modem",
"repo": "",
"pdf": "{{ '/content/modem.pdf' | url }}",
"role": "Author",
"description": "Matlab modeling of a modem capable of transmitting information (a sequence of bits) reliably via an imperfect transmission channel."
}
],
"personnal_projects": [
{
"title": "This website",
"repo": "https://project-repo.com",
"role": "Author",
"description": "I made this website almost entirely from scratch, I used the static site generetor 11ty.js to simplify the process thanks to its templating system. I learned a lot about HTML, CSS, Javascript and it also allowed me to strengthen my git skills."
}
],
"education": {
"level": "Master degree",
"history": [
{
"institution": "ENSEEIHT",
"title": "CS Engineer",
"url": "https://www.enseeiht.fr/",
"start": "2020",
"end": "Now",
"eqv": "Master (L3, M1, M2)"
},
{
"institution": "Lycée Kérichen/Vauban",
"title": "CPGE PSI",
"url": "http://www.lycee-kerichen.org/",
"start": "2018",
"end": "2020",
"eqv": "License (L1, L2)"
},
{
"institution": "Lycée de l'Harteloire",
"title": "Baccalauréat S",
"url": "https://www.harteloire.com/",
"start": "2015",
"end": "2018",
"eqv": "Highschool"
}
]
},
"skills": [
{
"name": "General Softwares",
"level": "advanced",
"tags": [
"Linux",
"LaTeX",
"Git",
"Word",
"Excel"
]
},
{
"name": "Web Development",
"level": "intermediate",
"tags": [
"HTML5",
"CSS3",
"JavaScript",
"11ty.js"
]
},
{
"name": "Scientific Computing",
"level": "intermediate",
"tags": [
"Numpy",
"Matlab"
]
},
{
"name": "Licenses",
"level": "french",
"tags": [
"AM",
"B",
"B1"
]
}
],
"reading": [
{
"title": "Data-Driven Science and Engineering",
"type": "book",
"url": "http://www.databookuw.com/"
},
{
"title": "The Book of Shaders",
"type": "book",
"url": "https://thebookofshaders.com/"
},
{
"title": "r/programming",
"type": "website",
"url": "https://www.reddit.com/r/programming"
},
{
"title": "r/privacy",
"type": "website",
"url": "https://www.reddit.com/r/privacy"
}
],
"languages": [
{
"language": "French",
"level": "native",
"icon": "flag-icon flag-icon-fr"
},
{
"language": "English",
"level": "proficient",
"icon": "flag-icon flag-icon-gb"
},
{
"language": "Japanese",
"level": "beginner",
"icon": "flag-icon flag-icon-jp"
},
{
"language": "Spanish",
"level": "elementary",
"icon": "flag-icon flag-icon-es"
},
{
"language": "Python",
"level": "intermediate",
"icon": "devicon-python-plain"
},
{
"language": "Java",
"level": "intermediate",
"icon": "devicon-java-plain"
},
{
"language": "Rust",
"level": "beginner",
"icon": "devicon-rust-plain"
},
{
"language": "C",
"level": "beginner",
"icon": "devicon-c-plain"
}
],
"interests": [
{
"name": "GitHub",
"summary": "Regular GitHub user and tinkerer.",
"tags": [
"Git",
"Open Source"
]
},
{
"name": "Electronics",
"summary": "Maker at heart.",
"tags": [
"Arduino",
"PCB Design"
]
},
{
"name": "Archery",
"summary": "Practiced for a couple years the art of precision & accuracy.",
"tags": [
"Precision",
"Accuracy",
"Patience"
]
},
{
"name": "Fishkeeping",
"summary": "Tamagochis, but with real responsabilities.",
"tags": [
"Patience",
"Perfectionism"
]
}
]
}

View file

@ -1,230 +0,0 @@
{
"locale": "fr",
"name": "Laurent Fainsin",
"info": {
"label": "Étudiant Ingénieur SN",
"about": "Je suis travailleur et ponctuel, je travaille bien en équipe mais aussi seul car j'aime me défier. J'ai de bonnes capacités d'écoute et de communication, je suis bien organisé et je respecte toujours les deadlines."
},
"contacts": [
{
"contact": "laurentfainsin@protonmail.com",
"url": "mailto:laurentfainsin@protonmail.com",
"icon": "fa fa-envelope-o"
},
{
"contact": "+33781492838",
"url": "https://signal.org/",
"icon": "fa fa-phone"
},
{
"contact": "Brest, France",
"url": "https://www.openstreetmap.org/#map=12/48.3930/-4.4601",
"icon": "fa fa-location-arrow"
}
],
"socials": [
{
"network": "laurent-fainsin",
"url": "https://www.linkedin.com/in/laurent-fainsin/",
"icon": "fa fa-linkedin"
},
{
"network": "Laurent2916",
"url": "https://github.com/Laurent2916",
"icon": "fa fa-github"
},
{
"network": "@fainsil:inpt.fr",
"url": "https://matrix.to/#/@fainsil:inpt.fr",
"icon": "fa fa-matrix-org"
}
],
"school_projects": [
{
"title": "Pagerank",
"repo": "",
"pdf": "{{ '/content/pagerank.pdf' | url }}",
"role": "Author",
"description": "Mise en œuvre d'un algorithme itératif en Ada pour calculer le pagerank d'un réseau donné, aussi rapidement et efficacement que possible."
},
{
"title": "Modem de fréquence",
"repo": "",
"pdf": "{{ '/content/modem.pdf' | url }}",
"role": "Author",
"description": "Modélisation Matlab d'un modem capable de transmettre des informations (séquences de bits) de manière fiable via un canal de transmission imparfait."
}
],
"personnal_projects": [
{
"title": "Ce site web",
"repo": "https://project-repo.com",
"role": "Author",
"description": "J'ai fait ce site presque entièrement de zéro, pour simplifier le processus de création j'ai utilisé le générateur de site statique 11ty.js et son système de templates."
}
],
"education": {
"level": "Master degree",
"history": [
{
"institution": "ENSEEIHT",
"title": "Ingénieur SN",
"url": "https://www.enseeiht.fr/",
"start": "2020",
"end": "Maintenant"
},
{
"institution": "Lycée Kérichen/Vauban",
"title": "CPGE PSI",
"url": "http://www.lycee-kerichen.org/",
"start": "2018",
"end": "2020"
},
{
"institution": "Lycée de l'Harteloire",
"title": "Baccalauréat S",
"url": "https://www.harteloire.com/",
"start": "2015",
"end": "2018"
}
]
},
"skills": [
{
"name": "Bureautique",
"level": "avancé",
"tags": [
"Linux",
"LaTeX",
"Git",
"Word",
"Excel"
]
},
{
"name": "Développement web",
"level": "intermédiaire",
"tags": [
"HTML5",
"CSS3",
"JavaScript",
"11ty.js"
]
},
{
"name": "Calcul scientifique",
"level": "intermédiaire",
"tags": [
"Numpy",
"Matlab"
]
},
{
"name": "Permis",
"tags": [
"AM",
"B",
"B1"
]
}
],
"reading": [
{
"title": "Data-Driven Science and Engineering",
"type": "book",
"url": "http://www.databookuw.com/"
},
{
"title": "The Book of Shaders",
"type": "book",
"url": "https://thebookofshaders.com/"
},
{
"title": "r/programming",
"type": "website",
"url": "https://www.reddit.com/r/programming"
},
{
"title": "r/privacy",
"type": "website",
"url": "https://www.reddit.com/r/privacy"
}
],
"languages": [
{
"language": "Français",
"level": "natif",
"icon": "flag-icon flag-icon-fr"
},
{
"language": "Anglais",
"level": "bilingue",
"icon": "flag-icon flag-icon-gb"
},
{
"language": "Japonais",
"level": "débutant",
"icon": "flag-icon flag-icon-jp"
},
{
"language": "Espagnol",
"level": "élémentaire",
"icon": "flag-icon flag-icon-es"
},
{
"language": "Python",
"level": "intermédiaire",
"icon": "devicon-python-plain"
},
{
"language": "Java",
"level": "intermédiaire",
"icon": "devicon-java-plain"
},
{
"language": "Rust",
"level": "débutant",
"icon": "devicon-rust-plain"
},
{
"language": "C",
"level": "débutant",
"icon": "devicon-c-plain"
}
],
"interests": [
{
"name": "GitHub",
"summary": "Utilisateur régulier de GitHub et bricoleur.",
"tags": [
"Git",
"Open Source"
]
},
{
"name": "Électronique",
"summary": "Créateur dans l'âme.",
"tags": [
"Arduino",
"PCB Design"
]
},
{
"name": "Tir à l'arc",
"summary": "Pratique de l'art de la précision et de l'exactitude.",
"tags": [
"Précision",
"Exactitude",
"Patience"
]
},
{
"name": "Aquariums",
"summary": "Des Tamagochis, mais avec de réelles responsabilités.",
"tags": [
"Patience",
"Perfectionnisme"
]
}
]
}

View file

@ -1,194 +0,0 @@
---
username: Laureηt
---
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ username }}</title>
<link rel="stylesheet" href="{{ '/css/main.css' | url }}">
<link rel="stylesheet" href="{{ '/css/resume.css' | url }}">
<link rel="stylesheet" href="{{ '/css/blink.css' | url }}">
<link rel="shortcut icon" type="image/x-icon" href="{{ '/favicon.ico' | url }}">
<script src="{{ '/javascript/chaffle.min.js' | url }}"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.7/css/fork-awesome.min.css" integrity="sha256-gsmEoJAws/Kd3CjuOQzLie5Q3yshhvmo7YNtBG7aaEY=" crossorigin="anonymous">
<link href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.5.0/css/flag-icon.min.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/devicon/2.6/devicon.min.css" rel="stylesheet">
</head>
<body>
<header style="position: relative;">
<span data-chaffle-onload="" data-chaffle="en">{{ username }}</span>
<span class="blink" style="display:inline;">_</span>
<a style="right: 0px; position: absolute;" href="{{ 'fr/' | url }}" ><span class="flag-icon flag-icon-fr"></span>FR</a>
</header>
<base target="_blank">
<div class="row">
<div class="col-1">
<h1>{{ resume.name }} <small>({{ resume.info.label }})</small></h1>
<p>{{ resume.info.about }}</p>
<hr>
<h2>School Projects</h2>
{% for project in resume.school_projects %}
<section>
<h3>{{ project.title }}</h3>
<p>{{ project.description }}</p>
<a class="fa fa-file-pdf-o" href="{{ project.pdf }}"> report</a>
</section>
{% endfor %}
<hr>
<h2>Personnal Projects</h2>
{% for project in resume.personnal_projects %}
<section>
<h3>{{ project.title }}</h3>
<p>{{ project.description }}</p>
</section>
{% endfor %}
<hr>
<h2>Reading</h2>
<ul>
{% for read in resume.reading %}
<li>
{# {% if read.type == 'website' %} #}
<a href="{{ read.url }}">{{ read.title | safe }}</a>
{# {% endif %} #}
</li>
{% endfor %}
</ul>
<hr>
<h2>Interests</h2>
{% for interest in resume.interests %}
<section>
<h3>{{ interest.name }}</h3>
<p>{{ interest.summary }}</p>
<ul>
{% for tag in interest.tags %}
<li class="tag">{{ tag }}</li>
{% endfor %}
</ul>
</section>
{% endfor %}
</div>
<div class="col-2">
<h2>Contacts</h2>
<ul>
{% for contact in resume.contacts %}
<li>
<span class="{{ contact.icon }}"></span>
<a href="{{ contact.url }}">{{ contact.contact }}</a>
</li>
{% endfor %}
</ul>
<hr>
<h2>Socials</h2>
<ul>
{% for social in resume.socials %}
<li>
<span class="{{social.icon}}"></span>
<a href="{{social.url}}">{{social.network}}</a>
</li>
{% endfor %}
</ul>
<hr>
<h2>Education</h2>
<ul class="timeline">
<span class="arrow-up"></span>
<li class="event"></li>
<li class="year">{{ resume.education.history[0].end }}</li>
{% for edu in resume.education.history %}
<li class="event">
{{ edu.title }}<br>
<a href="{{ edu.url }}">{{ edu.institution }}</a><br>
{{ edu.eqv }}
</li>
<li class="year">{{ edu.start }}</li>
{% endfor %}
<li class="event"></li>
</ul>
<hr>
<h2>Skills</h2>
<ul>
{% for skill in resume.skills %}
<li>
{{ skill.name }} <small>({{ skill.level }})</small>
<ul>
{% for tag in skill.tags %}
<li class="tag">{{ tag }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
<hr>
<h2>Languages</h2>
<ul>
{% for lang in resume.languages %}
<li>
<span class="{{ lang.icon }}"></span>
{{ lang.language }} <small>({{ lang.level }})</small>
</li>
{% endfor %}
</ul>
</div>
</div>
<div class="btn-back">
<span>&laquo;</span>
<a href="{{ '/' | url }}">Go back</a>
</div>
<footer>
&copy; {% year %} {{ username }}
</footer>
<script>
var elm_mouseover = document.querySelectorAll('[data-chaffle]');
var elm_onload = document.querySelectorAll('[data-chaffle-onLoad]');
Array.prototype.forEach.call(elm_mouseover, function (el) {
var chaffle = new Chaffle(el)
el.addEventListener('mouseover', function () {
chaffle.init();
});
});
Array.prototype.forEach.call(elm_onload, function (el) {
var chaffle = new Chaffle(el)
chaffle.init();
setInterval(function(){
chaffle.init();
}, 10000)
});
</script>
</body>
</html>

View file

@ -1,193 +0,0 @@
---
username: Laureηt
---
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ username }}</title>
<link rel="stylesheet" href="{{ '/css/main.css' | url }}">
<link rel="stylesheet" href="{{ '/css/resume.css' | url }}">
<link rel="stylesheet" href="{{ '/css/blink.css' | url }}">
<link rel="shortcut icon" type="image/x-icon" href="{{ '/favicon.ico' | url }}">
<script src="{{ '/javascript/chaffle.min.js' | url }}"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.7/css/fork-awesome.min.css" integrity="sha256-gsmEoJAws/Kd3CjuOQzLie5Q3yshhvmo7YNtBG7aaEY=" crossorigin="anonymous">
<link href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.5.0/css/flag-icon.min.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/devicon/2.6/devicon.min.css" rel="stylesheet">
</head>
<body>
<header style="position: relative;">
<span data-chaffle-onload="" data-chaffle="en">{{ username }}</span>
<span class="blink" style="display:inline;">_</span>
<a style="right: 0px; position: absolute;" href="{{ '../' | url }}" ><span class="flag-icon flag-icon-gb"></span>EN</a>
</header>
<div class="row">
<div class="col-1">
<h1>{{ resume_fr.name }} <small>({{ resume_fr.info.label }})</small></h1>
<p>{{ resume_fr.info.about }}</p>
<hr>
<h2>Projets scolaires</h2>
{% for project in resume_fr.school_projects %}
<section>
<h3>{{ project.title }}</h3>
<p>{{ project.description }}</p>
<a class="fa fa-file-pdf-o" href="{{ project.pdf }}"> rapport</a>
</section>
{% endfor %}
<hr>
<h2>Projets personnels</h2>
{% for project in resume_fr.personnal_projects %}
<section>
<h3>{{ project.title }}</h3>
<p>{{ project.description }}</p>
</section>
{% endfor %}
<hr>
<h2>Lecture</h2>
<ul>
{% for read in resume_fr.reading %}
<li>
{% if read.type == 'website' %}
<a href="{{ read.url }}">{{ read.title | safe }}</a>
{% endif %}
</li>
{% endfor %}
</ul>
<hr>
<h2>Centres d'intérêt</h2>
{% for interest in resume_fr.interests %}
<section>
<h3>{{ interest.name }}</h3>
<p>{{ interest.summary }}</p>
<ul>
{% for tag in interest.tags %}
<li class="tag">{{ tag }}</li>
{% endfor %}
</ul>
</section>
{% endfor %}
</div>
<div class="col-2">
<h2>Contacts</h2>
<ul>
{% for contact in resume_fr.contacts %}
<li>
<span class="{{ contact.icon }}"></span>
<a href="{{ contact.url }}">{{ contact.contact }}</a>
</li>
{% endfor %}
</ul>
<hr>
<h2>Socials</h2>
<ul>
{% for social in resume_fr.socials %}
<li>
<span class="{{social.icon}}"></span>
<a href="{{social.url}}">{{social.network}}</a>
</li>
{% endfor %}
</ul>
<hr>
<h2>Éducation</h2>
<ul class="timeline">
<span class="arrow-up"></span>
<li class="event"></li>
<li class="year">{{ resume_fr.education.history[0].end }}</li>
{% for edu in resume_fr.education.history %}
<li class="event">
{{ edu.title }}<br>
<a href="{{ edu.url }}">{{ edu.institution }}</a>
</li>
<li class="year">{{ edu.start }}</li>
{% endfor %}
<li class="event"></li>
</ul>
<hr>
<h2>Compétences</h2>
<ul>
{% for skill in resume_fr.skills %}
<li>
{{ skill.name }}
{% if skill.level %}
<small> ({{ skill.level }}) </small>
{% endif %}
<ul>
{% for tag in skill.tags %}
<li class="tag">{{ tag }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
<hr>
<h2>Langues</h2>
<ul>
{% for lang in resume_fr.languages %}
<li>
<span class="{{ lang.icon }}"></span>
{{ lang.language }} <small>({{ lang.level }})</small>
</li>
{% endfor %}
</ul>
</div>
</div>
<div class="btn-back">
<span>&laquo;</span>
<a href="{{ '/' | url }}">Revenir en arrière</a>
</div>
<footer>
&copy; {% year %} {{ username }}
</footer>
<script>
var elm_mouseover = document.querySelectorAll('[data-chaffle]');
var elm_onload = document.querySelectorAll('[data-chaffle-onLoad]');
Array.prototype.forEach.call(elm_mouseover, function (el) {
var chaffle = new Chaffle(el)
el.addEventListener('mouseover', function () {
chaffle.init();
});
});
Array.prototype.forEach.call(elm_onload, function (el) {
var chaffle = new Chaffle(el)
chaffle.init();
setInterval(function(){
chaffle.init();
}, 10000)
});
</script>
</body>
</html>

218
pages/resume/test.njk Normal file
View file

@ -0,0 +1,218 @@
---
username: Laureηt
pagination:
data: resumes
size: 1
alias: resume
resolve: values
permalink: "resume/{{ resume.locale }}/index.html"
---
<!DOCTYPE html>
<html lang="{{ resume.locale }}">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ username }}</title>
<link rel="stylesheet" href="{{ '/css/main.css' | url }}">
<link rel="stylesheet" href="{{ '/css/resume.css' | url }}">
<link rel="stylesheet" href="{{ '/css/blink.css' | url }}">
<link rel="shortcut icon" type="image/x-icon" href="{{ '/favicon.ico' | url }}">
<script src="{{ '/javascript/chaffle.min.js' | url }}"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.7/css/fork-awesome.min.css" integrity="sha256-gsmEoJAws/Kd3CjuOQzLie5Q3yshhvmo7YNtBG7aaEY=" crossorigin="anonymous">
<link href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.5.0/css/flag-icon.min.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/devicon/2.6/devicon.min.css" rel="stylesheet">
</head>
<body>
<header style="position: relative;">
<span data-chaffle-onload="" data-chaffle="en">{{ username }}</span>
<span class="blink" style="display:inline;">_</span>
{% for pageKey in pagination.pages %}
{% if page.url != pagination.hrefs[loop.index-1] %}
<a style="right: 0px; position: absolute;" href="{{ pagination.hrefs[loop.index-1] | url }}">{{ pageKey[0].username }}
<span class="{{ resumes[loop.index-1].flag_icon }}"></span><span style="text-transform:uppercase;">{{ resumes[loop.index-1].locale }}</span>
</a>
{% endif %}
{% endfor %}
</header>
<div class="row">
<div class="col-1">
<h1>{{ resume.name }}
<small>({{ resume.info.label }})</small>
</h1>
<p>{{ resume.info.about }}</p>
<hr>
<h2>{{ resume.school_projects_title }}</h2>
{% for project in resume.school_projects %}
<section>
<h3>{{ project.title }}</h3>
<p>{{ project.description }}</p>
<a class="fa fa-file-pdf-o" href="{{ project.pdf }}">
{{ resume.report }}</a>
</section>
{% endfor %}
<hr>
<h2>{{ resume.personnal_projects_title }}</h2>
{% for project in resume.personnal_projects %}
<section>
<h3>{{ project.title }}</h3>
<p>{{ project.description }}</p>
</section>
{% endfor %}
<hr>
<h2>{{ resume.reading_title }}</h2>
<ul>
{% for read in resume.reading %}
<li>
{% if read.type == 'website' %}
<a href="{{ read.url }}">{{ read.title | safe }}</a>
{% endif %}
</li>
{% endfor %}
</ul>
<hr>
<h2>{{ resume.interests_title }}</h2>
{% for interest in resume.interests %}
<section>
<h3>{{ interest.name }}</h3>
<p>{{ interest.summary }}</p>
<ul>
{% for tag in interest.tags %}
<li class="tag">{{ tag }}</li>
{% endfor %}
</ul>
</section>
{% endfor %}
</div>
<div class="col-2">
<h2>{{ resume.contacts_title }}</h2>
<ul>
{% for contact in resume.contacts %}
<li>
<span class="{{ contact.icon }}"></span>
<a href="{{ contact.url }}">{{ contact.contact }}</a>
</li>
{% endfor %}
</ul>
<hr>
<h2>{{ resume.socials_title }}</h2>
<ul>
{% for social in resume.socials %}
<li>
<span class="{{social.icon}}"></span>
<a href="{{social.url}}">{{social.network}}</a>
</li>
{% endfor %}
</ul>
<hr>
<h2>{{ resume.education_title }}</h2>
<ul class="timeline">
<span class="arrow-up"></span>
<li class="event"></li>
<li class="year">{{ resume.education.history[0].end }}</li>
{% for edu in resume.education.history %}
<li class="event">
{{ edu.title }}<br>
<a href="{{ edu.url }}">{{ edu.institution }}</a>
</li>
<li class="year">{{ edu.start }}</li>
{% endfor %}
<li class="event"></li>
</ul>
<hr>
<h2>{{ resume.skills_title }}</h2>
<ul>
{% for skill in resume.skills %}
<li>
{{ skill.name }}
{% if skill.level %}
<small> ({{ skill.level }}) </small>
{% endif %}
<ul>
{% for tag in skill.tags %}
<li class="tag">{{ tag }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
<hr>
<h2>{{ resume.languages_title }}</h2>
<ul>
{% for lang in resume.languages %}
<li>
<span class="{{ lang.icon }}"></span>
{{ lang.language }}
<small>({{ lang.level }})</small>
</li>
{% endfor %}
</ul>
</div>
</div>
<div class="btn-back">
<span>&laquo;</span>
<a href="{{ '/' | url }}">{{ resume.go_back }}</a>
</div>
<footer>
&copy; {% year %}
{{ username }}
</footer>
<script>
var elm_mouseover = document.querySelectorAll('[data-chaffle]');
var elm_onload = document.querySelectorAll('[data-chaffle-onLoad]');
Array
.prototype
.forEach
.call(elm_mouseover, function (el) {
var chaffle = new Chaffle(el)
el.addEventListener('mouseover', function () {
chaffle.init();
});
});
Array
.prototype
.forEach
.call(elm_onload, function (el) {
var chaffle = new Chaffle(el)
chaffle.init();
setInterval(function () {
chaffle.init();
}, 10000)
});
</script>
</body>
</html>