From 53f1cd59c5a2031f62f4058150b4b70940320b40 Mon Sep 17 00:00:00 2001 From: Dejvino Date: Mon, 27 Jul 2026 16:56:38 +0200 Subject: [PATCH] CV tuning and interests cleanup --- data.json | 51 ++++++++++++++++------- index.php | 30 +++++-------- interests/1/interest.json | 5 --- interests/3/interest.json | 5 --- interests/4/interest.json | 5 --- interests/5/interest.json | 5 --- interests/6/interest.json | 5 --- interests/7/interest.json | 5 --- interests/{4/image.png => synthwave.png} | Bin 9 files changed, 46 insertions(+), 65 deletions(-) delete mode 100644 interests/1/interest.json delete mode 100644 interests/3/interest.json delete mode 100644 interests/4/interest.json delete mode 100644 interests/5/interest.json delete mode 100644 interests/6/interest.json delete mode 100644 interests/7/interest.json rename interests/{4/image.png => synthwave.png} (100%) diff --git a/data.json b/data.json index 955c435..d28acfc 100644 --- a/data.json +++ b/data.json @@ -36,9 +36,7 @@ { "title": "UI Performance & Bootstrap Optimization", "description": [ - "Analyzed UI app bootstrap performance, driving improvements that gained 28% speed improvement.", - "Eliminated redundant network requests by introducing TanStack Query network caching.", - "Defined tiered JavaScript dependency loading mechanism for on-demand toolkit loading." + "Analyzed UI app bootstrap performance, driving improvements that gained 28% speed improvement. Eliminated redundant network requests by introducing TanStack Query network caching. Defined tiered JavaScript dependency loading mechanism for on-demand toolkit loading." ], "date": "2025 – 2026" }, @@ -53,27 +51,18 @@ { "title": "UI Testing Strategy & Architecture", "description": [ - "Led senior QA engineers in defining and executing the long-term UI testing architecture strategy across platform teams.", - "Established automated test suites, quality guardrails, and release visibility workflows to elevate testing standards across UI platform releases." + "Led senior QA engineers in defining and executing the long-term UI testing architecture strategy across platform teams. Established automated test suites and quality guardrails to elevate testing standards." ], "date": "2021 – 2023" }, { "title": "Pluggable Tax Calculation Engine", "description": [ - "Architected and led the development of a pluggable tax calculation engine for NetSuite cloud ERP.", - "Coordinated technical strategy across 20+ software engineers in 4 squads, standardizing global tax calculation pipelines." + "Architected and led the development of a pluggable tax calculation engine for NetSuite cloud ERP. Coordinated technical strategy across 20+ software engineers in 4 squads, standardizing global tax calculation pipelines." ], "date": "2017 – 2020" } ], - "outside_work": [ - "Mandolin", - "Synthwave", - "Electronics", - "3D Printing", - "Mountain Biking" - ], "cv": { "experience": [ { @@ -175,5 +164,37 @@ } ], "philosophy": "I design platform layers that stay out of the way while enabling everything else. Quiet infrastructure. Measurable value." - } + }, + "interests": [ + { + "name": "Mandolin", + "caption": "Octave mandolin is my instrument of choice. Wide range of tones, pleasant sound. Great way to relax your mind, explore melodies and harmonies.", + "image": null + }, + { + "name": "Electronics tinkering", + "caption": "Building a useful device from scratch. Retrofitting modern brains into a broken vintage shell. Electronics is the magic that makes things alive.", + "image": null + }, + { + "name": "Synthwave", + "caption": "Neon-filled nostalgia. Fun to create, relaxing to listen to it.", + "image": "interests/synthwave.png" + }, + { + "name": "3D Printing & Design", + "caption": "Designing and printing custom parts that serve a purpose. Unique designs, useful accessories, toys or just repairs.", + "image": null + }, + { + "name": "Mountain Biking", + "caption": "Going places under your own power. Exploring forests, trails and nature where cars aren't allowed.", + "image": null + }, + { + "name": "RC Cars", + "caption": "Rock crawlers, construction trucks, military vehicles. Building a custom offroad course in the garden to trial them all.", + "image": null + } + ] } \ No newline at end of file diff --git a/index.php b/index.php index 62f95b1..8bb8b4f 100644 --- a/index.php +++ b/index.php @@ -21,28 +21,18 @@ $nav_links = [ $highlights = $cvData['highlights'] ?? []; /** - * Sourced Interests Showcase (from filesystem) + * Sourced Interests Showcase (from data.json) */ $interests_showcase = []; -$interests_base = __DIR__ . '/interests'; -if (is_dir($interests_base)) { - $folders = glob($interests_base . '/*', GLOB_ONLYDIR); - if ($folders) { - foreach ($folders as $folder) { - $config_path = $folder . '/interest.json'; - $config = []; - if (file_exists($config_path)) { - $config = json_decode(file_get_contents($config_path), true); - } - $img_file = $config['image'] ?? 'image.png'; - $has_image = file_exists($folder . '/' . $img_file); - - $interests_showcase[] = [ - 'name' => $config['name'] ?? basename($folder), - 'image' => $has_image ? 'interests/' . basename($folder) . '/' . $img_file : null, - 'caption' => $config['caption'] ?? '' - ]; - } +if (!empty($cvData['interests'])) { + foreach ($cvData['interests'] as $item) { + $img = $item['image'] ?? null; + $has_image = $img && file_exists(__DIR__ . '/' . $img); + $interests_showcase[] = [ + 'name' => $item['name'] ?? '', + 'image' => $has_image ? $img : null, + 'caption' => $item['caption'] ?? '' + ]; } } diff --git a/interests/1/interest.json b/interests/1/interest.json deleted file mode 100644 index 2729107..0000000 --- a/interests/1/interest.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "Mandolin", - "image": "image.png", - "caption": "Octave mandolin is my instrument of choice. Wide range of tones, pleasant sound. Great way to relax your mind, explore melodies and harmonies." -} \ No newline at end of file diff --git a/interests/3/interest.json b/interests/3/interest.json deleted file mode 100644 index ed6dd2f..0000000 --- a/interests/3/interest.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "Electronics tinkering", - "image": "image.png", - "caption": "Building a useful device from scratch. Retrofitting modern brains into a broken vintage shell. Electronics is the magic that makes things alive." -} \ No newline at end of file diff --git a/interests/4/interest.json b/interests/4/interest.json deleted file mode 100644 index 6811291..0000000 --- a/interests/4/interest.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "Synthwave", - "image": "image.png", - "caption": "Neon-filled nostalgia. Fun to create, relaxing to listen to it." -} \ No newline at end of file diff --git a/interests/5/interest.json b/interests/5/interest.json deleted file mode 100644 index 4e04ae2..0000000 --- a/interests/5/interest.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "3D Printing", - "image": "image.png", - "caption": "" -} \ No newline at end of file diff --git a/interests/6/interest.json b/interests/6/interest.json deleted file mode 100644 index 77cce11..0000000 --- a/interests/6/interest.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "Mountain Biking", - "image": "image.png", - "caption": "" -} \ No newline at end of file diff --git a/interests/7/interest.json b/interests/7/interest.json deleted file mode 100644 index 456e996..0000000 --- a/interests/7/interest.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "RC Cars", - "image": "image.png", - "caption": "Rock crawlers, construction trucks, military vehicles. There is a fun challenge awaiting an RC car on every corner." -} \ No newline at end of file diff --git a/interests/4/image.png b/interests/synthwave.png similarity index 100% rename from interests/4/image.png rename to interests/synthwave.png