"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'] ?? []; /** * CV Data */ // Map experience to expected structure $cv_experience = array_map(function ($e) { return [ 'title' => $e['title'] ?? '', 'org' => $e['organization'] ?? '', 'date' => $e['date'] ?? '', 'desc' => $e['description'] ?? '', ]; }, $cvData['experience'] ?? []); // 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) { return 0; } $start = (int)$parts[0]; $endRaw = strtolower($parts[1]); $end = ($endRaw === 'present' || $endRaw === 'current') ? (int)date('Y') : (int)$endRaw; $years = $end - $start; if ($years <= 1) { return "1 year"; } return "$years years"; } // Map education to expected structure $cv_education = array_map(function ($e) { return [ 'title' => $e['degree'] ?? '', 'org' => $e['institution'] ?? '', 'date' => $e['date'] ?? '', 'desc' => $e['thesis'] ?? '', ]; }, $cvData['education'] ?? []); // Keep skills categories as provided $cv_skills = $cvData['skills'] ?? []; /** * Page design: * - clean and simple, human-maintaninable * - no dependencies * - single-file website */ ?> <?= $site_title ?>
'; } else { echo '
'; } ?>

Bio

Likes

Remote_Access

Email: uncovering...
Socials: $url): ?>