From 86b5743f7a5a9ad86c8f85b7d10c1f01746caab6 Mon Sep 17 00:00:00 2001 From: Dejvino Date: Wed, 20 May 2026 21:12:34 +0200 Subject: [PATCH] Re-layouting --- cv.json | 18 ++++++- index.php | 141 ++++++++++++++++++++++++++++++------------------------ style.css | 88 +++++++++++++++++++++++++++++----- 3 files changed, 170 insertions(+), 77 deletions(-) diff --git a/cv.json b/cv.json index 1125f73..2248977 100644 --- a/cv.json +++ b/cv.json @@ -1,6 +1,5 @@ { "name": "David Hrdina Němeček", - "subtitle": "Software developer", "photo": "photo.png", "email": "explosive@dejvino.cz", "location": "Brno, Czechia", @@ -113,5 +112,20 @@ "Embedded", "OpenSCAD" ] - } + }, + "highlights": [ + { + "title": "Telemetry stack architecture", + "subtitle": "Shaped telemetry direction across user behavior, performance, and infrastructure for NetSuite Prime and Classic.", + "description": "Advanced OpenTelemetry delivery, Oracle APM integration paths, and OpenSearch trace visibility across multiple teams. Designed action-root hybrid sampling and trace context propagation for Classic iframe flows." + }, + { + "title": "UI performance optimizations", + "subtitle": "Designed tiered toolkit and external dependency loading for NetSuite Next startup.", + "description": "Main startup toolkit.bundle.js reduced by ~619 KB. Identified concrete improvement tracks including duplicate /myRoles calls, per-feature SSE registration, and obsolete polling." + } + ], + "headline": "UI Platform Architect · Telemetry, Performance, and AI-Enabled Engineering", + "summary": "NetSuite UI platform engineer specializing in telemetry, observability, performance, technical design, and AI-assisted engineering enablement. Experienced in OpenTelemetry, Oracle APM, OpenSearch trace visibility, frontend/backend trace correlation, NetSuite Next performance analysis, JavaScript loading guardrails, UI-CBS contract testing, and AI interaction telemetry. Strong at turning ambiguous platform problems into validated prototypes, architecture direction, implementation plans, and handovers that help cross-functional teams execute.", + "role_summary": "UI platform architect on NetSuite Next/Prime focused on telemetry and observability architecture, performance engineering, cross-team technical design, and AI-assisted engineering enablement." } diff --git a/index.php b/index.php index 7c5ab39..8a18a74 100644 --- a/index.php +++ b/index.php @@ -6,12 +6,23 @@ $cvData = json_decode(file_get_contents(__DIR__ . '/cv.json'), true); $name = $cvData['name'] ?? ''; -$site_title = $cvData['subtitle'] ?? ''; -$site_url = "https://www.dejvino.cz/"; -$site_desc = "$name - " . ($cvData['subtitle'] ?? ''); -$subtitle = $cvData['subtitle'] ?? ''; +$headline = $cvData['headline'] ?? ''; +$summary = $cvData['summary'] ?? ''; +$role_summary = $cvData['role_summary'] ?? ''; +$location = $cvData['location'] ?? ''; $photo_file = $cvData['photo'] ?? ''; +$nav_links = [ + 'Blog' => 'https://wp.dejvino.com/', + 'Projects' => 'https://projects.dejvino.com/', + 'Code' => 'https://git.dejvino.cz/', +]; +$highlights = $cvData['highlights'] ?? []; + +$site_url = "https://www.dejvino.cz/"; +$site_title = $name; +$site_desc = "$name - $headline"; + $mailto_link = $cvData['contact_links']['Email'] ?? ''; if (preg_match('/mailto:([^@]+)/', $mailto_link, $m)) { $email_user = $m[1]; @@ -19,16 +30,6 @@ if (preg_match('/mailto:([^@]+)/', $mailto_link, $m)) { $email_user = $cvData['email'] ?? ''; } -$about_text = $cvData['about'] ?? []; - -$nav_links = [ - "~/blog" => "https://wp.dejvino.com/", - "~/projects" => "https://projects.dejvino.com/", - "~/code" => "https://git.dejvino.cz/", -]; - -$hardware_info = $cvData['hardware_info'] ?? ''; - $extra_contact_links = $cvData['contact_links'] ?? []; /** @@ -36,7 +37,7 @@ $extra_contact_links = $cvData['contact_links'] ?? []; */ // Map experience to expected structure $cv_experience = array_map(function ($e) { - return [ + return [ 'title' => $e['title'] ?? '', 'org' => $e['organization'] ?? '', 'date' => $e['date'] ?? '', @@ -47,7 +48,6 @@ $cv_experience = array_map(function ($e) { // Helper to calculate years between start and end dates function calculateYears($dateStr) { // Extract start and end years, support 'present' or 'current' - $matches = []; $dateStr = str_replace(['–', '—', '−', '-'], '-', $dateStr); $parts = array_map('trim', explode('-', $dateStr, 2)); if (count($parts) < 2) { @@ -78,7 +78,7 @@ $cv_skills = $cvData['skills'] ?? []; /** * Page design: - * - clean and simple, human-maintaninable + * - clean and simple, human-maintainable * - no dependencies * - single-file website */ @@ -98,7 +98,7 @@ $cv_skills = $cvData['skills'] ?? []; - +