Add support for multiple active jobs. Updated CV data.

This commit is contained in:
Dejvino 2023-07-26 04:53:38 +02:00
parent 88b0c1c513
commit 9c9e776d13
4 changed files with 40 additions and 24 deletions

View File

@ -1,15 +1,18 @@
import { PersonalData } from "./PersonalDataTypes"; import { PersonalData } from "./PersonalDataTypes";
// Icons: https://icons.getbootstrap.com/
export const personalData: PersonalData = { export const personalData: PersonalData = {
updatedDate: '2023-06-01', updatedDate: '2023-07-26',
name: "David Hrdina Němeček", name: "David Hrdina Němeček",
brief: "Software developer. Engineering lead & manager.", brief: "Software developer. Engineering lead.",
contacts: [ contacts: [
{icon: 'browser-firefox', text: 'www.dejvino.cz'}, {icon: 'browser-firefox', text: 'www.dejvino.cz'},
{icon: 'envelope-at', text: 'explosive@dejvino.cz'}, {icon: 'envelope-at', text: 'explosive@dejvino.cz'},
{icon: 'git', text: 'https://git.dejvino.cz'}, {icon: 'git', text: 'https://git.dejvino.cz'},
{icon: 'github', text: 'https://github.com/Dejvino'},
{icon: 'file-earmark-person', text: 'https://cv.dejvino.cz'}, {icon: 'file-earmark-person', text: 'https://cv.dejvino.cz'},
{icon: 'file-earmark-pdf', text: 'https://cv.dejvino.cz/pdf'}, {icon: 'file-earmark-pdf', text: 'https://cv.dejvino.cz/pdf'},
{icon: 'telephone', text: '+420 775 26 26 32'}, {icon: 'telephone', text: '+420 775 26 26 32'},
@ -17,28 +20,28 @@ export const personalData: PersonalData = {
], ],
jobs: { jobs: {
current: { current: [{
position: 'Senior Software Development Manager (UI Platform)', position: 'Senior Software Development Manager (UI Platform)',
company: 'Oracle|NetSuite', company: 'Oracle|NetSuite',
timerange: '2022 - present', timerange: '2022 - present',
description: `Engineering lead for multiple UI Platform teams. Development of core UI frameworks, components and tools used by the rest of the organization. description: `Engineering lead for multiple UI Platform teams who designed, developed and released a UI framework and tooling used by the rest of the organization.
Leading a UI testing architecture group, supplemental product owner for this group.`, Leader of a UI testing architecture group responsible for advising on a testing strategy across the UI Platform.`,
tags: ['TypeScript', 'Preact', 'NodeJs', 'Oracle JET', 'Java', 'Git'] tags: ['TypeScript', 'Preact', 'NodeJs', 'Oracle JET', 'Java', 'Git']
}, }],
previous: [ previous: [
{ {
position: 'Software Development Manager (UI Platform)', position: 'Software Development Manager (UI Platform)',
company: 'Oracle|NetSuite', company: 'Oracle|NetSuite',
timerange: '2020 - 2022', timerange: '2020 - 2022',
description: `Engineering lead for a UI Platform team. Development of UI components that formed a UI toolkit used by the rest of the organization. description: `Engineering lead for a UI Platform team who developed components for a UI toolkit used by the rest of the organization.
Supplementing a product owner while bootstrapping a team.`, Technical product owner while bootstrapping a team.`,
tags: ['TypeScript', 'Preact', 'NodeJs', 'Oracle JET', 'Java', 'Git'] tags: ['TypeScript', 'Preact', 'NodeJs', 'Oracle JET', 'Java', 'Git']
}, },
{ {
position: 'Software Development Manager (ERP, Tax)', position: 'Software Development Manager (ERP, Tax)',
company: 'Oracle|NetSuite', company: 'Oracle|NetSuite',
timerange: '2017 - 2020', timerange: '2017 - 2020',
description: 'Developer lead for ERP: Tax. Design and implementation of a pluggable Tax calculation engine. Coordination of multiple squads supporting both the legacy and the next-gen systems concurrently.', description: 'Lead developer for ERP: Tax. Design and implementation of a pluggable Tax calculation engine. Coordination of multiple squads supporting both the legacy and the next-gen systems concurrently.',
tags: ['Java', 'Oracle SQL', 'JavaScript', 'Perforce', 'Git', 'Software Architecture'] tags: ['Java', 'Oracle SQL', 'JavaScript', 'Perforce', 'Git', 'Software Architecture']
}, },
{ {
@ -53,7 +56,7 @@ export const personalData: PersonalData = {
position: 'Software Engineer', position: 'Software Engineer',
company: 'Q2 Interactive', company: 'Q2 Interactive',
timerange: '2009 - 2013', timerange: '2009 - 2013',
description: `Development and project leadership of multiple web applications: description: `Development and project leadership of multiple web applications and services:
- CRM system (PHP backend server, JavaScript frontend, Android client app), - CRM system (PHP backend server, JavaScript frontend, Android client app),
- Accounting web app (PHP, JavaScript), - Accounting web app (PHP, JavaScript),
- e-commerce sites (Magento), - e-commerce sites (Magento),
@ -64,12 +67,22 @@ export const personalData: PersonalData = {
}, },
projects: { projects: {
current: { current: [
{
position: `Open Source Contributor`,
description: `Code contributor to open source projects, shared on [github.com/Dejvino](https://github.com/Dejvino) and [git.dejvino.cz](https://git.dejvino.cz/dejvino).
E.g. SimpleMobileTools Android suite.`,
tags: ['Kotlin', 'Android', 'Python', 'Open Source', 'Git']
},
],
previous: [
{
position: `Personal projects`, position: `Personal projects`,
description: `Various hardware and software projects. Usually open sourced and published on [projects.dejvino.com](https://projects.dejvino.com) or [git.dejvino.cz](https://git.dejvino.cz). description: `Various hardware and software projects. Usually open sourced and published on [projects.dejvino.com](https://projects.dejvino.com) and [git.dejvino.cz](https://git.dejvino.cz/dejvino).
These include video games, utilities, 3D models, retrofitting devices with embedded microcontrollers etc.`, These include video games, utilities, 3D models, retrofitting devices with embedded microcontrollers etc.`,
tags: ['Java', 'Python', 'C/C++', 'Embedded Software', 'OpenSCAD', 'TypeScript', 'Linux', 'Open Source', 'Git', 'Self-hosting'] tags: ['Java', 'Python', 'C/C++', 'Embedded Software', 'OpenSCAD', 'TypeScript', 'Linux', 'Open Source', 'Git', 'Self-hosting']
} },
]
}, },
education: { education: {
@ -95,8 +108,8 @@ export const personalData: PersonalData = {
}, },
skills: { skills: {
primary: ['Java', 'TypeScript', 'JavaScript', 'Linux', 'Leadership'], primary: ['Kotlin', 'Java', 'TypeScript', 'Linux'],
secondary: ['SQL', 'Kotlin', 'C/C++', 'NodeJs', 'Git', 'Preact', 'Embedded Software'], secondary: ['Go', 'JavaScript', 'Oracle SQL', 'Git', 'React', 'Preact', 'Python'],
languages: ['Czech (native)', 'English (proficient)', 'German (elementary)'], languages: ['Czech (native)', 'English (proficient)', 'German (elementary)'],
//others: ['Driver\'s license (B)'] //others: ['Driver\'s license (B)']
}, },

View File

@ -12,13 +12,14 @@ export type Job = {
} }
export type Jobs = { export type Jobs = {
current?: Job, current?: Job[],
previous?: Job[] previous?: Job[]
} }
export type Education = Jobs; export type Education = Jobs;
export type Projects = Jobs; export type Project = Job
export type Skills = { export type Skills = {
primary: string[], primary: string[],

View File

@ -43,8 +43,8 @@ export default function JobsAccordion(props: JobListProps) {
const {jobs} = props const {jobs} = props
const config = {...defaultProps, ...props} const config = {...defaultProps, ...props}
return ( return (
<Accordion defaultActiveKey={jobs.current ? 'current' : 'previous-0'}> <Accordion defaultActiveKey={jobs.current ? 'current-0' : 'previous-0'}>
{jobs.current && <AccordionJobItem job={jobs.current} heading={config.currentHeading} eventKey={'current'}/>} {jobs.current?.map((job, index) => <AccordionJobItem key={index} job={job} eventKey={`current-${index}`} heading={config.currentHeading} />)}
{jobs.previous?.map((job, index) => <AccordionJobItem key={index} job={job} eventKey={`previous-${index}`} />)} {jobs.previous?.map((job, index) => <AccordionJobItem key={index} job={job} eventKey={`previous-${index}`} />)}
</Accordion> </Accordion>
) )

View File

@ -29,9 +29,11 @@ export default function JobsCards(props: JobListProps) {
<Container fluid> <Container fluid>
{jobs.current && ( {jobs.current && (
<Row> <Row>
<Col> {jobs.current.map((job, index) => (
<JobCard heading={config.currentHeading} {...jobs.current} /> <Col key={index} xs={12} md={12} lg={6} xl={12}>
<JobCard heading={config.currentHeading} {...job} />
</Col> </Col>
))}
</Row> </Row>
)} )}
<Row> <Row>