Update CV
Some checks failed
continuous-integration/drone/tag Build is failing

This commit is contained in:
Arnie 2024-10-21 11:37:59 +02:00
parent 1d67745c69
commit 438f83e217
5 changed files with 170 additions and 135 deletions

View File

@ -11,28 +11,19 @@ const messages = defineMessages({
defaultMessage: "Skills",
id: "Experience.skills",
},
yourpass: {
defaultMessage: "July 2021 - Present ({count} years)",
id: "Experience.yourpass",
},
yoursystem: {
defaultMessage: "February 2016 - December 2021 (5 years)",
id: "Experience.yoursystem",
},
past: {
defaultMessage: "Birth - February 2016",
id: "Experience.past",
},
pastDescription: {
defaultMessage:
"Working on smaller projects such as chats, forum based websites, web based presentations, most notably a system for handling the driver training center and driving school agenda... Tinkering...",
id: "Experience.pastDescription",
},
});
const approxCurrentYears = Math.round(
(Date.now() - new Date("2021-06-01").getTime()) / 1000 / 60 / 60 / 24 / 365
);
const approxCurrentYears = {
InvestBay: Math.round(
(Date.now() - new Date("2024-02-01").getTime()) / 1000 / 60 / 60 / 24 / 365
),
YourPass: Math.round(
(Date.now() - new Date("2021-06-01").getTime()) / 1000 / 60 / 60 / 24 / 365
),
YourSystemSysOps: Math.round(
(Date.now() - new Date("2022-01-01").getTime()) / 1000 / 60 / 60 / 24 / 365
),
};
const yourpassSkills = [
"DevOps",
@ -79,13 +70,40 @@ const Experience: React.FC = () => {
return (
<>
<Headline level={3}>INVESTBAY s.r.o.</Headline>
<SubHeadline level={4}>DevOps Architect</SubHeadline>
<Content>
<Paragraph>
{intl.formatMessage(
{
defaultMessage: "February 2024 - Present",
id: "Experience.investbay",
},
{
// not used atm
count: approxCurrentYears.InvestBay,
}
)}
</Paragraph>
<Paragraph>
<strong>{intl.formatMessage(messages.skills)}:</strong>{" "}
{yourpassSkills.join(" · ")}
</Paragraph>
</Content>
<Headline level={3}>YOUR PASS s.r.o.</Headline>
<SubHeadline level={4}>DevOps Engineer</SubHeadline>
<Content>
<Paragraph>
{intl.formatMessage(messages.yourpass, {
count: approxCurrentYears,
})}
{intl.formatMessage(
{
defaultMessage: "July 2021 - Present ({count} years)",
id: "Experience.yourpass",
},
{
count: approxCurrentYears.YourPass,
}
)}
</Paragraph>
<Paragraph>
<strong>{intl.formatMessage(messages.skills)}:</strong>{" "}
@ -96,10 +114,35 @@ const Experience: React.FC = () => {
<Spacer />
<Headline level={3}>YOUR SYSTEM s.r.o.</Headline>
<SubHeadline level={4}>SysOps</SubHeadline>
<Content>
<Paragraph>
{intl.formatMessage(
{
defaultMessage: "January 2022 - Present ({count} years)",
id: "Experience.yoursystem",
},
{
count: approxCurrentYears.YourSystemSysOps,
}
)}
</Paragraph>
<Paragraph>
<strong>{intl.formatMessage(messages.skills)}:</strong>{" "}
{yoursystemSkills.join(" · ")}
</Paragraph>
</Content>
<SubHeadline level={4}>Lead Developer/Architect</SubHeadline>
<Content>
<Paragraph>{intl.formatMessage(messages.yoursystem)}</Paragraph>
<Paragraph>
{intl.formatMessage({
defaultMessage: "February 2016 - December 2021 (5 years)",
id: "Experience.yoursystem",
})}
</Paragraph>
<Paragraph>
<strong>{intl.formatMessage(messages.skills)}:</strong>{" "}
{yoursystemSkills.join(" · ")}
@ -110,8 +153,19 @@ const Experience: React.FC = () => {
<SubHeadline level={4}>Developer</SubHeadline>
<Content>
<Paragraph>{intl.formatMessage(messages.past)}</Paragraph>
<Paragraph>{intl.formatMessage(messages.pastDescription)}</Paragraph>
<Paragraph>
{intl.formatMessage({
defaultMessage: "Birth - February 2016",
id: "Experience.past",
})}
</Paragraph>
<Paragraph>
{intl.formatMessage({
defaultMessage:
"Working on smaller projects such as chats, forum based websites, web based presentations, most notably a system for handling the driver training center and driving school agenda... Tinkering...",
id: "Experience.pastDescription",
})}
</Paragraph>
</Content>
</>
);

View File

@ -1,5 +1,5 @@
import React from "react";
import { defineMessages, useIntl } from "react-intl";
import { useIntl } from "react-intl";
import { SubHeadline } from "../common/Headline";
import { List, ListItem } from "../common/List";
@ -7,43 +7,6 @@ import { Spacer } from "../common/Spacer";
import { Paragraph } from "../common/Text";
import Skill from "./Skill";
const messages = defineMessages({
backendDevelopment: {
defaultMessage:
"Deep knowledge of backend operations, mostly supporting web based applications using various technologies, programming languages and frameworks.",
id: "Skills.backendDevelopment",
},
backendDevelopmentAdditional: {
defaultMessage:
"In recent years, the main focus was on Go to write tooling and backend services.",
id: "Skills.backendDevelopment",
},
devops: {
defaultMessage:
"Several years of experience developing, maintaining and adhering to the DevOps practices to streamline organization's processes across both backend and frontend development.",
id: "Skills.devops",
},
frontendDevelopment: {
defaultMessage:
"Extensive experience in frontend development spanning back to the early 2000s.",
id: "Skills.frontendDevelopment",
},
infrastructureOperations: {
defaultMessage:
"Throughout my career, I have gained valuable experience in developing and maintaining high-load infrastructures over several years.",
id: "Skills.infrastructureOperations",
},
infrastructureOperationsAdditional: {
defaultMessage:
"Following the OCI (Open Container Initiative) and leveraging Docker and Kubernetes to create highly available deployments, primarily on the AWS platform, was a challenging and enjoyable experience, that has greatly enhanced my skills in this area.",
id: "Skills.infrastructureOperationsAdditional",
},
otherNotableSkills: {
defaultMessage: "Other notable skills",
id: "Skills.otherNotableSkills",
},
});
type OtherSkill = {
title: string;
description?: string;
@ -51,13 +14,13 @@ type OtherSkill = {
const otherSkills: OtherSkill[] = [
{
title: "Primary languages",
description: "Go, Typescript (and Javascript)",
title: "Strong proficiency in",
description: "Go, Typescript (and Javascript), Bash, IaaC tools",
},
{
title: "Infrastructure based skills",
title: "Infrastructure related skills",
description:
"Kubernetes and AWS EKS, Containerized applications, Linux system administration, Amazon Web Services - good understanding of Networking, RDS, Queues",
"Kubernetes and AWS EKS, Containerized applications, Linux system administration, Amazon Web Services - good understanding of Networking, RDS, Queues. Notable experience with GCP/Azure.",
},
{
title: "Databases",
@ -88,21 +51,50 @@ const Skills: React.FC = () => {
return (
<>
<Skill title="DevOps">{intl.formatMessage(messages.devops)}</Skill>
<Skill title="DevOps">
{intl.formatMessage({
defaultMessage:
"Several years of experience developing, maintaining and adhering to the DevOps practices to streamline organization's processes across both backend and frontend development.",
id: "Skills.devops",
})}
</Skill>
<Skill title="Front-End Development">
{intl.formatMessage(messages.frontendDevelopment)}
{intl.formatMessage({
defaultMessage:
"Extensive experience in frontend development spanning back to the early 2000s.",
id: "Skills.frontendDevelopment",
})}
</Skill>
<Skill title="Back-End Development">
{intl.formatMessage(messages.backendDevelopment)}
{intl.formatMessage(messages.backendDevelopmentAdditional)}
{intl.formatMessage({
defaultMessage:
"Deep knowledge of backend operations, mostly supporting web based applications using various technologies, programming languages and frameworks.",
id: "Skills.backendDevelopment",
})}
{intl.formatMessage({
defaultMessage:
"In recent years, the main focus was on Go to write tooling and backend services.",
id: "Skills.backendDevelopment",
})}
</Skill>
<Skill title="Infrastructure operations">
{intl.formatMessage(messages.infrastructureOperations)}
{intl.formatMessage(messages.infrastructureOperationsAdditional)}
{intl.formatMessage({
defaultMessage:
"Throughout my career, I have gained valuable experience in developing and maintaining high-load infrastructures over several years.",
id: "Skills.infrastructureOperations",
})}
{intl.formatMessage({
defaultMessage:
"Following the OCI (Open Container Initiative) and leveraging Docker and Kubernetes to create highly available deployments, primarily on the AWS platform, was a challenging and enjoyable experience, that has greatly enhanced my skills in this area.",
id: "Skills.infrastructureOperationsAdditional",
})}
</Skill>
<Spacer withDivider />
<SubHeadline level={4}>
{intl.formatMessage(messages.otherNotableSkills)}
{intl.formatMessage({
defaultMessage: "Other notable skills",
id: "Skills.otherNotableSkills",
})}
</SubHeadline>
<List>
{otherSkills.map((s) => (

View File

@ -1,5 +1,5 @@
import React, { useEffect, useRef } from "react";
import { defineMessages, useIntl } from "react-intl";
import { useIntl } from "react-intl";
import { CONTACT_EMAIL, CONTACT_PHONE } from "../../config/environment";
import { Contact } from "../common/Contact";
@ -7,29 +7,6 @@ import { List, ListItem } from "../common/List";
import { Spacer } from "../common/Spacer";
import NavigationHeadline from "./NavigationHeadline";
const messages = defineMessages({
certifications: {
defaultMessage: "Certifications",
id: "Navigation.certifications",
},
contact: {
defaultMessage: "Contact",
id: "Navigation.contact",
},
experience: {
defaultMessage: "Experience",
id: "Navigation.experience",
},
objective: {
defaultMessage: "Objective",
id: "Navigation.objective",
},
topSkills: {
defaultMessage: "Top Skills",
id: "Navigation.topSkills",
},
});
const getTopOffset = (input: HTMLElement) => {
let el: HTMLElement | Element | null = input;
let o = 0;
@ -110,7 +87,10 @@ const MainNavigation: React.FC = () => {
return (
<div ref={ref}>
<NavigationHeadline>
{intl.formatMessage(messages.contact)}
{intl.formatMessage({
defaultMessage: "Contact",
id: "Navigation.contact",
})}
</NavigationHeadline>
<Spacer />
@ -118,28 +98,40 @@ const MainNavigation: React.FC = () => {
<Contact email={CONTACT_EMAIL} phoneNumber={CONTACT_PHONE} />
<NavigationHeadline href="#objective">
{intl.formatMessage(messages.objective)}
{intl.formatMessage({
defaultMessage: "Objective",
id: "Navigation.objective",
})}
</NavigationHeadline>
<NavigationHeadline href="#skills">
{intl.formatMessage(messages.topSkills)}
{intl.formatMessage({
defaultMessage: "Top Skills",
id: "Navigation.topSkills",
})}
</NavigationHeadline>
<Spacer />
<List>
<ListItem>DevOps</ListItem>
<ListItem>Front-End Development</ListItem>
<ListItem>Back-End Development</ListItem>
<ListItem>Kubernetes</ListItem>
<ListItem>Typescript</ListItem>
<ListItem>Linux</ListItem>
<ListItem>Go</ListItem>
<ListItem>Typescript</ListItem>
<ListItem>Back-End Development</ListItem>
<ListItem>Front-End Development</ListItem>
<ListItem>Scripting:</ListItem>
<ListItem>Bash, Python, Lua</ListItem>
</List>
<Spacer spacing={0} withDivider />
<NavigationHeadline>
{intl.formatMessage(messages.certifications)}
{intl.formatMessage({
defaultMessage: "Certifications",
id: "Navigation.certifications",
})}
</NavigationHeadline>
<Spacer />
@ -152,7 +144,10 @@ const MainNavigation: React.FC = () => {
<Spacer spacing={0} withDivider />
<NavigationHeadline href="#experience">
{intl.formatMessage(messages.experience)}
{intl.formatMessage({
defaultMessage: "Experience",
id: "Navigation.experience",
})}
</NavigationHeadline>
</div>
);

View File

@ -1,6 +1,6 @@
import styled from "@emotion/styled";
import React from "react";
import { defineMessages, useIntl } from "react-intl";
import { useIntl } from "react-intl";
import { Experience, Skills, Summary } from "../components/CV";
import MainLayout from "../components/Layout/MainLayout";
@ -11,21 +11,6 @@ import { Headline, SubHeadline } from "../components/common/Headline";
import { Spacer } from "../components/common/Spacer";
import { CONTACT_EMAIL, CONTACT_PHONE, POSITION } from "../config/environment";
const messages = defineMessages({
experienceTitle: {
defaultMessage: "Experience",
id: "Dashboard.experienceTitle",
},
location: {
defaultMessage: "Central Bohemia, Czechia",
id: "Dashboard.location",
},
skillsTitle: {
defaultMessage: "Skills",
id: "Dashboard.skillsTitle",
},
});
const HiddenWithNav = styled("div")({
display: "none",
[hideNavigationMQ]: {
@ -41,7 +26,10 @@ const Dashboard: React.FC = () => {
<Headline level={1}>Lukáš Čech</Headline>
<SubHeadline level={2}>{POSITION}</SubHeadline>
<SubHeadline level={4}>
{intl.formatMessage(messages.location)}
{intl.formatMessage({
defaultMessage: "Central Bohemia, Czechia",
id: "Dashboard.location",
})}
</SubHeadline>
<HiddenWithNav>
@ -58,7 +46,12 @@ const Dashboard: React.FC = () => {
<div id="skills" />
<Spacer withDivider />
<Headline level={2}>{intl.formatMessage(messages.skillsTitle)}</Headline>
<Headline level={2}>
{intl.formatMessage({
defaultMessage: "Skills",
id: "Dashboard.skillsTitle",
})}
</Headline>
<Spacer />
<Content>
<Skills />
@ -68,7 +61,10 @@ const Dashboard: React.FC = () => {
<Spacer withDivider />
<Headline level={2}>
{intl.formatMessage(messages.experienceTitle)}
{intl.formatMessage({
defaultMessage: "Experience",
id: "Dashboard.experienceTitle",
})}
</Headline>
<Spacer />
<Content>

View File

@ -1,16 +1,9 @@
import styled from "@emotion/styled";
import React from "react";
import { defineMessages, useIntl } from "react-intl";
import { useIntl } from "react-intl";
import { Link } from "../components/common/Link";
const messages = defineMessages({
notFound: {
defaultMessage: "Nothing to see here",
id: "Router.NotFound",
},
});
const Root = styled("div")({
display: "flex",
flexDirection: "column",
@ -25,7 +18,12 @@ const NotFound = () => {
return (
<Root>
<p>{intl.formatMessage(messages.notFound)}</p>
<p>
{intl.formatMessage({
defaultMessage: "Nothing to see here",
id: "Router.NotFound",
})}
</p>
<Link to="/">Go home</Link>
</Root>
);