|
|
|
@ -60,7 +60,7 @@ type Resume = {
|
|
|
|
|
education: Education;
|
|
|
|
|
experiences: Experience[];
|
|
|
|
|
selectedProjects: Project[];
|
|
|
|
|
skills: Skill[];
|
|
|
|
|
skills: String[];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const RESUME: Resume = {
|
|
|
|
@ -194,9 +194,50 @@ const RESUME: Resume = {
|
|
|
|
|
link: "https://status.idylls.net",
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
skills: ["Rust", "TypeScript", "C++", "C", "Haskell", "Java"],
|
|
|
|
|
skills: [
|
|
|
|
|
"C++",
|
|
|
|
|
"C",
|
|
|
|
|
"Haskell",
|
|
|
|
|
"Low-level Programming",
|
|
|
|
|
"Performance Analysis / Optimization",
|
|
|
|
|
"Realtime Graphics",
|
|
|
|
|
],
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const SKILL_PRIO = {
|
|
|
|
|
TypeScript: 100,
|
|
|
|
|
Go: 99,
|
|
|
|
|
Rust: 101,
|
|
|
|
|
JavaScript: 98,
|
|
|
|
|
Java: 97,
|
|
|
|
|
React: 96,
|
|
|
|
|
Elixir: 90,
|
|
|
|
|
Python: 90,
|
|
|
|
|
} as const satisfies Partial<Record<Skill, number>>;
|
|
|
|
|
const skillPrio = (s: Skill) => SKILL_PRIO[s] ?? null;
|
|
|
|
|
const sortSkill = (a: Skill, b: Skill) => {
|
|
|
|
|
const aPrio = skillPrio(a);
|
|
|
|
|
const bPrio = skillPrio(b);
|
|
|
|
|
if (!aPrio) {
|
|
|
|
|
if (bPrio) {
|
|
|
|
|
return bPrio;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return a.localeCompare(b);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const prio = bPrio - aPrio;
|
|
|
|
|
if (prio == 0) {
|
|
|
|
|
return a.localeCompare(b);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return prio;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (const exp of RESUME.experiences) {
|
|
|
|
|
exp.skills.sort(sortSkill);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const renderResume = () => {
|
|
|
|
|
const renderInfo = () => `
|
|
|
|
|
<section class="info">
|
|
|
|
@ -262,7 +303,7 @@ export const renderResume = () => {
|
|
|
|
|
|
|
|
|
|
const renderSkills = () => `
|
|
|
|
|
<section class="skills">
|
|
|
|
|
<header>Skills</header>
|
|
|
|
|
<header>Additional Skills</header>
|
|
|
|
|
<div>${RESUME.skills.join(", ")}</div>
|
|
|
|
|
</section>
|
|
|
|
|
`;
|
|
|
|
|