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'] ?? [];
-
+