Refocus portfolio for DevOps MLOps roles
Homelab Main / deploy (push) Successful in 1m52s
Details
Homelab Main / deploy (push) Successful in 1m52s
Details
This commit is contained in:
parent
285fbe5700
commit
4dab85c9d6
|
|
@ -27,6 +27,7 @@
|
||||||
<a class="catalog-card" href="privacy-redactor/"><span>Demo 06</span><h2>Privacy Redactor</h2><p>Local image redaction prototype.</p></a>
|
<a class="catalog-card" href="privacy-redactor/"><span>Demo 06</span><h2>Privacy Redactor</h2><p>Local image redaction prototype.</p></a>
|
||||||
<a class="catalog-card" href="sentiment-sandbox/"><span>Demo 07</span><h2>Sentiment Sandbox</h2><p>Local-first text analytics prototype.</p></a>
|
<a class="catalog-card" href="sentiment-sandbox/"><span>Demo 07</span><h2>Sentiment Sandbox</h2><p>Local-first text analytics prototype.</p></a>
|
||||||
<a class="catalog-card" href="model-drift/"><span>Demo 08</span><h2>Model Drift Simulator</h2><p>MLOps drift and retraining playground.</p></a>
|
<a class="catalog-card" href="model-drift/"><span>Demo 08</span><h2>Model Drift Simulator</h2><p>MLOps drift and retraining playground.</p></a>
|
||||||
|
<a class="catalog-card" href="mlops-platform/"><span>Demo 09</span><h2>MLOps Deployment Platform</h2><p>Reserved page for the serious inference, monitoring, and rollout demo.</p></a>
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
<script src="theme.js"></script>
|
<script src="theme.js"></script>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>MLOps Deployment Platform</title>
|
||||||
|
<link rel="stylesheet" href="../shared.css">
|
||||||
|
</head>
|
||||||
|
<body class="theme-dark">
|
||||||
|
<main class="shell">
|
||||||
|
<nav class="topline"><a href="../">All demos</a><a href="/demos.php">Website catalog</a></nav>
|
||||||
|
<section class="hero">
|
||||||
|
<p class="kicker">Demo 09</p>
|
||||||
|
<h1>MLOps Deployment Platform</h1>
|
||||||
|
<p>Placeholder reserved for the serious MLOps demo: inference service, Kubernetes rollout, metrics, drift signals, and rollback workflow.</p>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
<script src="../theme.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -55,6 +55,30 @@ $stackKeys = [
|
||||||
'blog_stack_16',
|
'blog_stack_16',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
$caseStudyCards = [
|
||||||
|
[
|
||||||
|
'label' => 'case_platform_label',
|
||||||
|
'title' => 'case_platform_title',
|
||||||
|
'body' => 'case_platform_desc',
|
||||||
|
'href' => '#architecture-title',
|
||||||
|
'link' => 'case_platform_link',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'label' => 'case_sre_label',
|
||||||
|
'title' => 'case_sre_title',
|
||||||
|
'body' => 'case_sre_desc',
|
||||||
|
'href' => 'cv.php?lang=' . urlencode($lang),
|
||||||
|
'link' => 'case_sre_link',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'label' => 'case_mlops_label',
|
||||||
|
'title' => 'case_mlops_title',
|
||||||
|
'body' => 'case_mlops_desc',
|
||||||
|
'href' => '/demo-apps/mlops-platform/',
|
||||||
|
'link' => 'case_mlops_link',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
$treeHref = 'homelab-tree.php?lang=' . urlencode($lang);
|
$treeHref = 'homelab-tree.php?lang=' . urlencode($lang);
|
||||||
$ideaStatus = visitor_idea_clean((string) ($_GET['idea'] ?? ''), 20);
|
$ideaStatus = visitor_idea_clean((string) ($_GET['idea'] ?? ''), 20);
|
||||||
$visitorIdeas = visitor_ideas_read();
|
$visitorIdeas = visitor_ideas_read();
|
||||||
|
|
@ -105,6 +129,7 @@ $stackSourceLinks = [
|
||||||
['label' => 'architecture-simulator.js', 'path' => 'apps/demos-static/public/architecture-simulator/architecture-simulator.js'],
|
['label' => 'architecture-simulator.js', 'path' => 'apps/demos-static/public/architecture-simulator/architecture-simulator.js'],
|
||||||
],
|
],
|
||||||
'blog_stack_10' => [
|
'blog_stack_10' => [
|
||||||
|
['label' => 'MLOps placeholder page', 'path' => 'apps/demos-static/public/mlops-platform/index.html'],
|
||||||
['label' => 'sentiment-sandbox.js', 'path' => 'apps/demos-static/public/sentiment-sandbox/sentiment-sandbox.js'],
|
['label' => 'sentiment-sandbox.js', 'path' => 'apps/demos-static/public/sentiment-sandbox/sentiment-sandbox.js'],
|
||||||
['label' => 'model-drift.js', 'path' => 'apps/demos-static/public/model-drift/model-drift.js'],
|
['label' => 'model-drift.js', 'path' => 'apps/demos-static/public/model-drift/model-drift.js'],
|
||||||
['label' => 'privacy-redactor.js', 'path' => 'apps/demos-static/public/privacy-redactor/privacy-redactor.js'],
|
['label' => 'privacy-redactor.js', 'path' => 'apps/demos-static/public/privacy-redactor/privacy-redactor.js'],
|
||||||
|
|
@ -209,6 +234,48 @@ function renderStackSourceLinks(string $stackKey, array $sourceLinks, string $so
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section class="case-studies" aria-labelledby="case-studies-title">
|
||||||
|
<div class="section-heading">
|
||||||
|
<p class="section-kicker"
|
||||||
|
data-translate data-key="case_studies_kicker"
|
||||||
|
data-en="<?php echo htmlspecialchars($en['case_studies_kicker']); ?>">
|
||||||
|
<?php echo $text['case_studies_kicker']; ?>
|
||||||
|
</p>
|
||||||
|
<h2 id="case-studies-title"
|
||||||
|
data-translate data-key="case_studies_title"
|
||||||
|
data-en="<?php echo htmlspecialchars($en['case_studies_title']); ?>">
|
||||||
|
<?php echo $text['case_studies_title']; ?>
|
||||||
|
</h2>
|
||||||
|
<p data-translate data-key="case_studies_intro"
|
||||||
|
data-en="<?php echo htmlspecialchars($en['case_studies_intro']); ?>">
|
||||||
|
<?php echo $text['case_studies_intro']; ?>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="case-study-grid">
|
||||||
|
<?php foreach ($caseStudyCards as $card): ?>
|
||||||
|
<article class="case-card">
|
||||||
|
<span data-translate data-key="<?php echo htmlspecialchars($card['label']); ?>"
|
||||||
|
data-en="<?php echo htmlspecialchars($en[$card['label']]); ?>">
|
||||||
|
<?php echo $text[$card['label']]; ?>
|
||||||
|
</span>
|
||||||
|
<h3 data-translate data-key="<?php echo htmlspecialchars($card['title']); ?>"
|
||||||
|
data-en="<?php echo htmlspecialchars($en[$card['title']]); ?>">
|
||||||
|
<?php echo $text[$card['title']]; ?>
|
||||||
|
</h3>
|
||||||
|
<p data-translate data-key="<?php echo htmlspecialchars($card['body']); ?>"
|
||||||
|
data-en="<?php echo htmlspecialchars($en[$card['body']]); ?>">
|
||||||
|
<?php echo $text[$card['body']]; ?>
|
||||||
|
</p>
|
||||||
|
<a href="<?php echo htmlspecialchars($card['href']); ?>"
|
||||||
|
data-translate data-key="<?php echo htmlspecialchars($card['link']); ?>"
|
||||||
|
data-en="<?php echo htmlspecialchars($en[$card['link']]); ?>">
|
||||||
|
<?php echo $text[$card['link']]; ?>
|
||||||
|
</a>
|
||||||
|
</article>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section class="architecture-section" aria-labelledby="architecture-title">
|
<section class="architecture-section" aria-labelledby="architecture-title">
|
||||||
<div class="section-heading">
|
<div class="section-heading">
|
||||||
<p class="section-kicker"
|
<p class="section-kicker"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,38 @@
|
||||||
<?php require_once __DIR__ . '/lang_helper.php'; ?>
|
<?php
|
||||||
|
require_once __DIR__ . '/lang_helper.php';
|
||||||
|
|
||||||
|
$impactKeys = [
|
||||||
|
'cv_impact_1',
|
||||||
|
'cv_impact_2',
|
||||||
|
'cv_impact_3',
|
||||||
|
'cv_impact_4',
|
||||||
|
];
|
||||||
|
|
||||||
|
$skillGroups = [
|
||||||
|
[
|
||||||
|
'title' => 'cv_skill_platform_title',
|
||||||
|
'body' => 'cv_skill_platform_body',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'title' => 'cv_skill_sre_title',
|
||||||
|
'body' => 'cv_skill_sre_body',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'title' => 'cv_skill_automation_title',
|
||||||
|
'body' => 'cv_skill_automation_body',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'title' => 'cv_skill_mlops_title',
|
||||||
|
'body' => 'cv_skill_mlops_body',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$recruiterKeys = [
|
||||||
|
'cv_recruiter_1',
|
||||||
|
'cv_recruiter_2',
|
||||||
|
'cv_recruiter_3',
|
||||||
|
];
|
||||||
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="<?php echo $lang; ?>">
|
<html lang="<?php echo $lang; ?>">
|
||||||
<head>
|
<head>
|
||||||
|
|
@ -76,6 +110,77 @@
|
||||||
<?php echo $text['cv_summary']; ?>
|
<?php echo $text['cv_summary']; ?>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<section class="cv-proof-section" aria-labelledby="cv-impact-title">
|
||||||
|
<h2 id="cv-impact-title"
|
||||||
|
data-translate data-key="cv_impact_title"
|
||||||
|
data-en="<?php echo htmlspecialchars($en['cv_impact_title']); ?>">
|
||||||
|
<?php echo $text['cv_impact_title']; ?>
|
||||||
|
</h2>
|
||||||
|
<div class="cv-impact-grid">
|
||||||
|
<?php foreach ($impactKeys as $impactKey): ?>
|
||||||
|
<p data-translate data-key="<?php echo htmlspecialchars($impactKey); ?>"
|
||||||
|
data-en="<?php echo htmlspecialchars($en[$impactKey]); ?>">
|
||||||
|
<?php echo $text[$impactKey]; ?>
|
||||||
|
</p>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="cv-skill-section" aria-labelledby="cv-skills-title">
|
||||||
|
<h2 id="cv-skills-title"
|
||||||
|
data-translate data-key="cv_skills_title"
|
||||||
|
data-en="<?php echo htmlspecialchars($en['cv_skills_title']); ?>">
|
||||||
|
<?php echo $text['cv_skills_title']; ?>
|
||||||
|
</h2>
|
||||||
|
<div class="cv-skill-grid">
|
||||||
|
<?php foreach ($skillGroups as $group): ?>
|
||||||
|
<article>
|
||||||
|
<h3 data-translate data-key="<?php echo htmlspecialchars($group['title']); ?>"
|
||||||
|
data-en="<?php echo htmlspecialchars($en[$group['title']]); ?>">
|
||||||
|
<?php echo $text[$group['title']]; ?>
|
||||||
|
</h3>
|
||||||
|
<p data-translate data-key="<?php echo htmlspecialchars($group['body']); ?>"
|
||||||
|
data-en="<?php echo htmlspecialchars($en[$group['body']]); ?>">
|
||||||
|
<?php echo $text[$group['body']]; ?>
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="cv-recruiter-panel" aria-labelledby="cv-recruiter-title">
|
||||||
|
<h2 id="cv-recruiter-title"
|
||||||
|
data-translate data-key="cv_recruiter_title"
|
||||||
|
data-en="<?php echo htmlspecialchars($en['cv_recruiter_title']); ?>">
|
||||||
|
<?php echo $text['cv_recruiter_title']; ?>
|
||||||
|
</h2>
|
||||||
|
<ul>
|
||||||
|
<?php foreach ($recruiterKeys as $recruiterKey): ?>
|
||||||
|
<li data-translate data-key="<?php echo htmlspecialchars($recruiterKey); ?>"
|
||||||
|
data-en="<?php echo htmlspecialchars($en[$recruiterKey]); ?>">
|
||||||
|
<?php echo $text[$recruiterKey]; ?>
|
||||||
|
</li>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</ul>
|
||||||
|
<div class="cv-recruiter-actions">
|
||||||
|
<a href="blog.php?lang=<?php echo $lang; ?>#case-studies-title"
|
||||||
|
data-translate data-key="home_cta_cases"
|
||||||
|
data-en="<?php echo htmlspecialchars($en['home_cta_cases']); ?>">
|
||||||
|
<?php echo $text['home_cta_cases']; ?>
|
||||||
|
</a>
|
||||||
|
<a href="/demo-apps/mlops-platform/"
|
||||||
|
data-translate data-key="home_cta_mlops"
|
||||||
|
data-en="<?php echo htmlspecialchars($en['home_cta_mlops']); ?>">
|
||||||
|
<?php echo $text['home_cta_mlops']; ?>
|
||||||
|
</a>
|
||||||
|
<a href="mailto:juvenaldiaz522@gmail.com"
|
||||||
|
data-translate data-key="home_cta_email"
|
||||||
|
data-en="<?php echo htmlspecialchars($en['home_cta_email']); ?>">
|
||||||
|
<?php echo $text['home_cta_email']; ?>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<h2 data-translate data-key="cv_employment_title"
|
<h2 data-translate data-key="cv_employment_title"
|
||||||
data-en="<?php echo htmlspecialchars($en['cv_employment_title']); ?>">
|
data-en="<?php echo htmlspecialchars($en['cv_employment_title']); ?>">
|
||||||
<?php echo $text['cv_employment_title']; ?>
|
<?php echo $text['cv_employment_title']; ?>
|
||||||
|
|
@ -161,4 +266,3 @@
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,13 @@ $demoCards = [
|
||||||
'href' => '/demo-apps/model-drift/',
|
'href' => '/demo-apps/model-drift/',
|
||||||
'icon' => 'demo-icon drift-icon',
|
'icon' => 'demo-icon drift-icon',
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'label' => 'demo_mlops_label',
|
||||||
|
'title' => 'demo_mlops_title',
|
||||||
|
'description' => 'demo_mlops_desc',
|
||||||
|
'href' => '/demo-apps/mlops-platform/',
|
||||||
|
'icon' => 'demo-icon mlops-icon',
|
||||||
|
],
|
||||||
];
|
];
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,24 @@
|
||||||
<?php require_once __DIR__ . '/lang_helper.php'; ?>
|
<?php
|
||||||
|
require_once __DIR__ . '/lang_helper.php';
|
||||||
|
|
||||||
|
$homeProofCards = [
|
||||||
|
[
|
||||||
|
'label' => 'home_proof_platform_label',
|
||||||
|
'title' => 'home_proof_platform_title',
|
||||||
|
'body' => 'home_proof_platform_body',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'label' => 'home_proof_scale_label',
|
||||||
|
'title' => 'home_proof_scale_title',
|
||||||
|
'body' => 'home_proof_scale_body',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'label' => 'home_proof_mlops_label',
|
||||||
|
'title' => 'home_proof_mlops_title',
|
||||||
|
'body' => 'home_proof_mlops_body',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="<?php echo $lang; ?>">
|
<html lang="<?php echo $lang; ?>">
|
||||||
<head>
|
<head>
|
||||||
|
|
@ -43,6 +63,11 @@
|
||||||
<section class="hero">
|
<section class="hero">
|
||||||
<div class="hero-text">
|
<div class="hero-text">
|
||||||
<h1><?php echo $text['name']; ?></h1>
|
<h1><?php echo $text['name']; ?></h1>
|
||||||
|
<p class="hero-role"
|
||||||
|
data-translate data-key="job_title"
|
||||||
|
data-en="<?php echo htmlspecialchars($en['job_title']); ?>">
|
||||||
|
<?php echo $text['job_title']; ?>
|
||||||
|
</p>
|
||||||
<p class="bio-intro"
|
<p class="bio-intro"
|
||||||
data-translate data-key="bio_intro"
|
data-translate data-key="bio_intro"
|
||||||
data-en="<?php echo htmlspecialchars($en['bio_intro']); ?>">
|
data-en="<?php echo htmlspecialchars($en['bio_intro']); ?>">
|
||||||
|
|
@ -70,20 +95,70 @@
|
||||||
</span>
|
</span>
|
||||||
<a href="cv.php?lang=<?php echo $lang; ?>"><?php echo $text['bio_cta_link']; ?></a>.
|
<a href="cv.php?lang=<?php echo $lang; ?>"><?php echo $text['bio_cta_link']; ?></a>.
|
||||||
</p>
|
</p>
|
||||||
|
<div class="hero-actions" aria-label="Portfolio actions">
|
||||||
|
<a href="cv.php?lang=<?php echo $lang; ?>"
|
||||||
|
data-translate data-key="home_cta_cv"
|
||||||
|
data-en="<?php echo htmlspecialchars($en['home_cta_cv']); ?>">
|
||||||
|
<?php echo $text['home_cta_cv']; ?>
|
||||||
|
</a>
|
||||||
|
<a href="blog.php?lang=<?php echo $lang; ?>#case-studies-title"
|
||||||
|
data-translate data-key="home_cta_cases"
|
||||||
|
data-en="<?php echo htmlspecialchars($en['home_cta_cases']); ?>">
|
||||||
|
<?php echo $text['home_cta_cases']; ?>
|
||||||
|
</a>
|
||||||
|
<a href="/demo-apps/mlops-platform/"
|
||||||
|
data-translate data-key="home_cta_mlops"
|
||||||
|
data-en="<?php echo htmlspecialchars($en['home_cta_mlops']); ?>">
|
||||||
|
<?php echo $text['home_cta_mlops']; ?>
|
||||||
|
</a>
|
||||||
|
<a href="mailto:juvenaldiaz522@gmail.com"
|
||||||
|
data-translate data-key="home_cta_email"
|
||||||
|
data-en="<?php echo htmlspecialchars($en['home_cta_email']); ?>">
|
||||||
|
<?php echo $text['home_cta_email']; ?>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="hero-image">
|
<div class="hero-image">
|
||||||
<img src="images/profile.webp" alt="profile">
|
<img src="images/profile.webp" alt="profile">
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<?php
|
<section class="positioning-proof" aria-labelledby="home-proof-title">
|
||||||
?>
|
<p class="section-kicker"
|
||||||
|
data-translate data-key="home_proof_kicker"
|
||||||
|
data-en="<?php echo htmlspecialchars($en['home_proof_kicker']); ?>">
|
||||||
|
<?php echo $text['home_proof_kicker']; ?>
|
||||||
|
</p>
|
||||||
|
<h2 id="home-proof-title"
|
||||||
|
data-translate data-key="home_proof_title"
|
||||||
|
data-en="<?php echo htmlspecialchars($en['home_proof_title']); ?>">
|
||||||
|
<?php echo $text['home_proof_title']; ?>
|
||||||
|
</h2>
|
||||||
|
<div class="home-proof-grid">
|
||||||
|
<?php foreach ($homeProofCards as $card): ?>
|
||||||
|
<article class="home-proof-card">
|
||||||
|
<span data-translate data-key="<?php echo htmlspecialchars($card['label']); ?>"
|
||||||
|
data-en="<?php echo htmlspecialchars($en[$card['label']]); ?>">
|
||||||
|
<?php echo $text[$card['label']]; ?>
|
||||||
|
</span>
|
||||||
|
<h3 data-translate data-key="<?php echo htmlspecialchars($card['title']); ?>"
|
||||||
|
data-en="<?php echo htmlspecialchars($en[$card['title']]); ?>">
|
||||||
|
<?php echo $text[$card['title']]; ?>
|
||||||
|
</h3>
|
||||||
|
<p data-translate data-key="<?php echo htmlspecialchars($card['body']); ?>"
|
||||||
|
data-en="<?php echo htmlspecialchars($en[$card['body']]); ?>">
|
||||||
|
<?php echo $text[$card['body']]; ?>
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
const OTHER_PAGES = ['cv.php', 'blog.php'];
|
const OTHER_PAGES = ['cv.php', 'blog.php', 'demos.php'];
|
||||||
</script>
|
</script>
|
||||||
<script src="cv-theme.js"></script>
|
<script src="cv-theme.js"></script>
|
||||||
<?php require_once __DIR__ . '/partials/translation_ui.php'; ?>
|
<?php require_once __DIR__ . '/partials/translation_ui.php'; ?>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
return [
|
return [
|
||||||
'name' => 'Juvenal Diaz',
|
'name' => 'Juvenal Diaz',
|
||||||
'job_title' => 'Site Reliability Developer',
|
'job_title' => 'Senior DevOps / MLOps / Platform Engineer',
|
||||||
'contacts' => 'Contacts: +52 449 217 6833, juvenaldiaz522@gmail.com',
|
'contacts' => 'Contacts: +52 449 217 6833, juvenaldiaz522@gmail.com',
|
||||||
|
|
||||||
'nav_home' => 'Home',
|
'nav_home' => 'Home',
|
||||||
|
|
@ -9,40 +9,75 @@ return [
|
||||||
'nav_blog' => 'Blog',
|
'nav_blog' => 'Blog',
|
||||||
'nav_demos' => 'Demos',
|
'nav_demos' => 'Demos',
|
||||||
|
|
||||||
'bio_intro' => 'I work in infrastructure and reliability, focusing on building systems that are stable, scalable, and easy to operate.',
|
'bio_intro' => 'Senior DevOps / MLOps / Platform Engineer based in Aguascalientes, Mexico, building Kubernetes, GitOps, observability, automation, and reliability systems for remote teams.',
|
||||||
'bio_story_1' => 'My interest in technology started with a simple curiosity about how systems behave — especially when they fail. Over time, that curiosity evolved into working with Linux environments, troubleshooting production systems, and improving how services run at scale.',
|
'bio_story_1' => 'My strongest work sits where production operations and platform engineering meet: Linux, Kubernetes, Terraform/OpenTofu, incident response, CI/CD, and the boring details that keep systems recoverable.',
|
||||||
'bio_story_2' => "I've spent more than a decade working across cloud platforms and distributed systems. My work has gradually shifted from reactive support to designing and maintaining platforms used by thousands of users, where reliability and clarity matter just as much as performance.",
|
'bio_story_2' => "I've spent more than a decade moving from reactive support into operating and improving platforms used by thousands of developers and customers. The common thread is reliability: reduce toil, make the delivery path clear, and turn incidents into better automation.",
|
||||||
'bio_story_3' => 'I tend to approach problems with a strong sense of urgency, but also with a focus on long-term improvement — removing friction, simplifying systems, and preventing issues from recurring.',
|
'bio_story_3' => 'The current showcase is built to prove that mindset directly: a self-hosted Kubernetes delivery platform, source-linked architecture notes, and a reserved MLOps demo path for inference, monitoring, drift, and rollback workflows.',
|
||||||
'bio_cta' => 'For a detailed breakdown of my experience, see my',
|
'bio_cta' => 'Review the platform case studies, MLOps demo plan, or the full',
|
||||||
'bio_cta_link' => 'CV',
|
'bio_cta_link' => 'CV',
|
||||||
|
|
||||||
|
'home_cta_cv' => 'View CV',
|
||||||
|
'home_cta_cases' => 'Case studies',
|
||||||
|
'home_cta_mlops' => 'MLOps placeholder',
|
||||||
|
'home_cta_email' => 'Email me',
|
||||||
|
'home_proof_kicker' => 'Hiring signal',
|
||||||
|
'home_proof_title' => 'Built for senior remote DevOps, SRE, platform, and MLOps roles',
|
||||||
|
'home_proof_platform_label' => 'Platform',
|
||||||
|
'home_proof_platform_title' => 'Kubernetes delivery path',
|
||||||
|
'home_proof_platform_body' => 'Homelab CI/CD with OpenTofu, Argo CD, Kyverno, local registry, Buildx, monitoring, and repeatable Pimox worker provisioning.',
|
||||||
|
'home_proof_scale_label' => 'Production',
|
||||||
|
'home_proof_scale_title' => 'Enterprise reliability background',
|
||||||
|
'home_proof_scale_body' => '12+ years across Linux, cloud, incidents, automation, and platforms supporting 20,000+ internal users and 10,000+ external customers.',
|
||||||
|
'home_proof_mlops_label' => 'MLOps',
|
||||||
|
'home_proof_mlops_title' => 'ML platform direction',
|
||||||
|
'home_proof_mlops_body' => 'The new showcase path is reserved for a serious inference service with Kubernetes rollout, metrics, drift signals, and rollback behavior.',
|
||||||
|
|
||||||
'cv_summary_title' => 'Professional Summary',
|
'cv_summary_title' => 'Professional Summary',
|
||||||
'cv_summary' => 'IT Professional with 12+ years of experience, specializing in Linux but also proficient in team management (local and global teams) and user satisfaction. My greatest strength is a sense of urgency which enables me to tackle issues in the most fast and efficient way, always focusing on continuous improvement and service excellence. I also enjoy learning new technologies as required.',
|
'cv_summary' => 'Senior infrastructure and reliability engineer with 12+ years of experience across Linux, Kubernetes-based platforms, cloud operations, incident response, automation, and production support. Currently operating a Kubernetes/Terraform PaaS used by 20,000+ internal developers, with hands-on work in maintenance, emergency changes, tooling, documentation, GitOps-style delivery, and continuous improvement. Targeting senior remote DevOps, SRE, platform, and MLOps roles where reliability, automation, and clear operations matter.',
|
||||||
'site_theme_label' => 'Theme',
|
'site_theme_label' => 'Theme',
|
||||||
'site_theme_dark' => 'Dark',
|
'site_theme_dark' => 'Dark',
|
||||||
'site_theme_light' => 'Light',
|
'site_theme_light' => 'Light',
|
||||||
'cv_theme_label' => 'Theme',
|
'cv_theme_label' => 'Theme',
|
||||||
'cv_theme_elegant' => 'Dark',
|
'cv_theme_elegant' => 'Dark',
|
||||||
'cv_theme_fancy' => 'Light',
|
'cv_theme_fancy' => 'Light',
|
||||||
'cv_orbit_text' => 'Reliability, Linux, Kubernetes, automation, and just enough drama to keep the resume awake.',
|
'cv_orbit_text' => 'Kubernetes, Terraform, Linux, SRE, automation, observability, GitOps, and MLOps platform work.',
|
||||||
|
|
||||||
'cv_employment_title' => 'Employment History / Activities',
|
'cv_impact_title' => 'Impact Snapshot',
|
||||||
|
'cv_impact_1' => '20,000+ internal users supported through a Kubernetes/Terraform platform as a service.',
|
||||||
|
'cv_impact_2' => '10,000+ external Oracle Analytics customers supported through incident response, Linux troubleshooting, SQL tuning, automation, and runbook work.',
|
||||||
|
'cv_impact_3' => '4M+ requests per minute and 30+ microservices supported on a PCI-compliant platform using containers, orchestration, alerting, and DevOps practices.',
|
||||||
|
'cv_impact_4' => 'Top performer history across Oracle and Rackspace teams, with onboarding, automation epics, and on-call process improvement work.',
|
||||||
|
'cv_skills_title' => 'DevOps / SRE / MLOps Skill Matrix',
|
||||||
|
'cv_skill_platform_title' => 'Platform engineering',
|
||||||
|
'cv_skill_platform_body' => 'Kubernetes, kubeadm, Helm, Argo CD, Kyverno, OpenTofu/Terraform, Docker Buildx, local registries, Linux, container runtimes, storage, and worker placement.',
|
||||||
|
'cv_skill_sre_title' => 'SRE and operations',
|
||||||
|
'cv_skill_sre_body' => 'Incident response, emergency changes, planned maintenance, monitoring, alert tuning, Prometheus, Grafana, Loki, node-exporter, runbooks, RCA, and ITIL process experience.',
|
||||||
|
'cv_skill_automation_title' => 'Automation and delivery',
|
||||||
|
'cv_skill_automation_body' => 'Bash, Python, Ansible, REST APIs, GitOps delivery loops, Gitea Actions, Bitbucket workflows, secret scanning, image scanning, and repeatable infrastructure scripts.',
|
||||||
|
'cv_skill_mlops_title' => 'MLOps direction',
|
||||||
|
'cv_skill_mlops_body' => 'FastAPI inference service patterns, model metrics, drift detection, canary/rollback workflows, model-serving platform design, MLflow/KServe/Ray learning path, and Kubernetes-based ML operations.',
|
||||||
|
'cv_recruiter_title' => 'Remote Work Fit',
|
||||||
|
'cv_recruiter_1' => 'Based in Aguascalientes, Mexico and focused on remote senior/staff opportunities with global engineering teams.',
|
||||||
|
'cv_recruiter_2' => 'Best-fit roles: Senior DevOps Engineer, Senior SRE, Senior Platform Engineer, Infrastructure Engineer, or MLOps Platform Engineer.',
|
||||||
|
'cv_recruiter_3' => 'Open to direct hire, employer-of-record, or contractor engagement for USD-aligned remote roles.',
|
||||||
|
|
||||||
|
'cv_employment_title' => 'Employment History',
|
||||||
|
|
||||||
'cv_job1_period' => 'Aug 2024 → Current',
|
'cv_job1_period' => 'Aug 2024 → Current',
|
||||||
'cv_job1_title' => 'Site Reliability Developer – Oracle | Spectra',
|
'cv_job1_title' => 'Site Reliability Developer – Oracle | Spectra',
|
||||||
'cv_job1_desc' => 'Manage a platform as a service (PaaS) that allows developers to build, run, and operate applications in a cloud environment, this service is used by 20,000+ users from internal development teams, it is based on Kubernetes / Terraform. Daily activities include planned maintenance of the platform, emergency changes, continuous improvement of internal tooling and documentation creation.',
|
'cv_job1_desc' => 'Operate a Kubernetes/Terraform platform as a service that lets 20,000+ internal developers build, run, and operate cloud applications. Daily work includes planned maintenance, emergency changes, tooling improvement, documentation, operational guardrails, and reliability-focused platform support.',
|
||||||
|
|
||||||
'cv_job2_period' => 'June 2022 → July 2024',
|
'cv_job2_period' => 'June 2022 → July 2024',
|
||||||
'cv_job2_title' => 'Site Reliability Developer – Oracle | Analytics',
|
'cv_job2_title' => 'Site Reliability Developer – Oracle | Analytics',
|
||||||
'cv_job2_desc' => 'Attend incidents for Oracle Analytics Cloud reported through Jira for 10,000+ external customers, related to general usage, Linux troubleshooting, SQL query tuning, and services/jobs configuration. Development of internal automation tools using Bash, Python, Ansible, and REST APIs in Bitbucket. SOP update and creation, working in a Scrum/Agile environment leading Continuous Improvement and Automation Epics. Top performer (Low TTM). Part of the onboarding team for new hires. Proposed on-call rotation improvement initiative (vNext).',
|
'cv_job2_desc' => 'Resolved Oracle Analytics Cloud incidents for 10,000+ external customers, including Linux troubleshooting, SQL query tuning, service/job configuration, and usage issues. Built internal automation with Bash, Python, Ansible, and REST APIs, maintained SOPs, led continuous improvement and automation epics, supported new-hire onboarding, and proposed on-call rotation improvements.',
|
||||||
|
|
||||||
'cv_job3_period' => 'July 2021 → June 2022',
|
'cv_job3_period' => 'July 2021 → June 2022',
|
||||||
'cv_job3_title' => 'Linux Support Engineer - Rackspace',
|
'cv_job3_title' => 'Linux Support Engineer - Rackspace',
|
||||||
'cv_job3_desc' => 'Attend incidents reported through phone calls and internal ticketing systems for several clients related to troubleshooting Linux, MySQL, Apache, NGINX, Varnish, PHP, VMware, DoS attacks, Storage, Backups, Firewalls, etc. Top performer (number of cases/tickets solved) of the MX and US team. Part of the onboarding team for new hires.',
|
'cv_job3_desc' => 'Handled multi-client Linux incidents through phone and ticketing channels across MySQL, Apache, NGINX, Varnish, PHP, VMware, DoS events, storage, backups, and firewalls. Ranked as a top performer by case volume across MX and US teams and helped onboard new hires.',
|
||||||
|
|
||||||
'cv_job4_period' => 'March 2020 → July 2021',
|
'cv_job4_period' => 'March 2020 → July 2021',
|
||||||
'cv_job4_title' => 'Linux Support Engineer - Softtek | Electronic Arts',
|
'cv_job4_title' => 'Linux Support Engineer - Softtek | Electronic Arts',
|
||||||
'cv_job4_desc' => 'Provide infrastructure support for a PCI-compliant platform that handles 4M+ requests per minute with 30+ microservices using containers and orchestration technologies, using DevOps practices. Alerts creation and tuning.',
|
'cv_job4_desc' => 'Provided infrastructure support for a PCI-compliant platform handling 4M+ requests per minute across 30+ microservices. Supported container and orchestration technologies, DevOps operating practices, alert creation, and alert tuning.',
|
||||||
|
|
||||||
'cv_job5_period' => 'August 2017 → March 2020',
|
'cv_job5_period' => 'August 2017 → March 2020',
|
||||||
'cv_job5_title' => 'Cross Functional Manager - Softtek | Electronic Arts',
|
'cv_job5_title' => 'Cross Functional Manager - Softtek | Electronic Arts',
|
||||||
|
|
@ -58,7 +93,22 @@ return [
|
||||||
|
|
||||||
'blog_kicker' => 'Homelab field notes',
|
'blog_kicker' => 'Homelab field notes',
|
||||||
'blog_title' => 'I accidentally built a tiny CI/CD platform',
|
'blog_title' => 'I accidentally built a tiny CI/CD platform',
|
||||||
'blog_subtitle' => 'A casual conversation about how a Debian control plane, Pimox app workers, external Gitea, a local registry, Kyverno policy, Argo CD, and a small static demo shelf became a repeatable Kubernetes delivery path.',
|
'blog_subtitle' => 'A case-study style walkthrough of how a Debian control plane, Pimox app workers, external Gitea, local registry, Kyverno policy, Argo CD, monitoring, and static demo shelf became a repeatable Kubernetes delivery path.',
|
||||||
|
'case_studies_kicker' => 'Portfolio case studies',
|
||||||
|
'case_studies_title' => 'Production-shaped evidence',
|
||||||
|
'case_studies_intro' => 'These are the three proof points a hiring manager should see first: platform ownership, production reliability at scale, and the reserved MLOps path for model-serving work.',
|
||||||
|
'case_platform_label' => 'Case 01',
|
||||||
|
'case_platform_title' => 'Self-hosted Kubernetes delivery platform',
|
||||||
|
'case_platform_desc' => 'Git push, validation, image build, registry, GitOps sync, policy guardrails, monitoring, retained storage, and VM worker provisioning in one small but operationally honest platform.',
|
||||||
|
'case_platform_link' => 'View architecture',
|
||||||
|
'case_sre_label' => 'Case 02',
|
||||||
|
'case_sre_title' => 'Enterprise SRE and incident automation',
|
||||||
|
'case_sre_desc' => 'Oracle and prior enterprise roles show the production side: 20,000+ developer users, 10,000+ external customers, Linux troubleshooting, automation, runbooks, on-call improvement, and high-scale incident response.',
|
||||||
|
'case_sre_link' => 'View CV evidence',
|
||||||
|
'case_mlops_label' => 'Case 03',
|
||||||
|
'case_mlops_title' => 'MLOps deployment platform placeholder',
|
||||||
|
'case_mlops_desc' => 'Reserved for the next serious demo: FastAPI inference, Kubernetes manifests, rollout strategy, model metrics, drift signals, and rollback behavior.',
|
||||||
|
'case_mlops_link' => 'Open placeholder',
|
||||||
'blog_speaker_question' => 'Future me, judging',
|
'blog_speaker_question' => 'Future me, judging',
|
||||||
'blog_speaker_answer' => 'Me, holding coffee',
|
'blog_speaker_answer' => 'Me, holding coffee',
|
||||||
'blog_q1' => 'Be honest: why build all this instead of just running a couple containers like a normal person?',
|
'blog_q1' => 'Be honest: why build all this instead of just running a couple containers like a normal person?',
|
||||||
|
|
@ -90,8 +140,8 @@ return [
|
||||||
'blog_stack_6' => 'The OCI edge host runs nginx, HAProxy, Varnish, and Squid so TLS, routing, and caching stay outside the home network while Tailscale sneaks the traffic back to the worker node.',
|
'blog_stack_6' => 'The OCI edge host runs nginx, HAProxy, Varnish, and Squid so TLS, routing, and caching stay outside the home network while Tailscale sneaks the traffic back to the worker node.',
|
||||||
'blog_stack_7' => 'The shared theme toggle is plain CSS and JavaScript: dark mode uses an old-console green-on-black treatment, while light mode switches to black cursive on white across the website and demo catalog.',
|
'blog_stack_7' => 'The shared theme toggle is plain CSS and JavaScript: dark mode uses an old-console green-on-black treatment, while light mode switches to black cursive on white across the website and demo catalog.',
|
||||||
'blog_stack_8' => 'The first demo keeps files in the browser. Image crunching uses native Canvas APIs today, while the fast serious path for video conversion is Rust compiled to WebAssembly with a TypeScript UI.',
|
'blog_stack_8' => 'The first demo keeps files in the browser. Image crunching uses native Canvas APIs today, while the fast serious path for video conversion is Rust compiled to WebAssembly with a TypeScript UI.',
|
||||||
'blog_stack_9' => 'The newer demos cover network jitter graphs, local JSON/JWT/log tools, an architecture simulator, an offline traveler converter, a redactor prototype, sentiment analysis, and model-drift simulation.',
|
'blog_stack_9' => 'The newer demos cover network jitter graphs, local JSON/JWT/log tools, an architecture simulator, an offline traveler converter, a redactor prototype, sentiment analysis, model-drift simulation, and the reserved MLOps platform page.',
|
||||||
'blog_stack_10' => 'The heavier ML demos are designed as client-side Wasm/ONNX/Transformers.js candidates, not server-side jobs. That keeps the homelab app boring to operate, which is secretly the whole point.',
|
'blog_stack_10' => 'The serious MLOps page is intentionally only a placeholder for now. The target design is a production-shaped inference demo with FastAPI, Kubernetes deployment, metrics, drift signals, canary or blue-green rollout, and rollback notes.',
|
||||||
'blog_stack_11' => 'The demo code now builds into its own demos-static image and Argo CD app, exposed at /demo-apps/. The PHP website only owns the catalog link, which is much less cursed.',
|
'blog_stack_11' => 'The demo code now builds into its own demos-static image and Argo CD app, exposed at /demo-apps/. The PHP website only owns the catalog link, which is much less cursed.',
|
||||||
'blog_stack_12' => 'The Pimox worker pipeline uses qm over SSH to create an OVMF/virtio-scsi Debian 13 arm64 VM, wait for qemu-guest-agent, seal it, and convert VM 9000 into a reusable template on local storage.',
|
'blog_stack_12' => 'The Pimox worker pipeline uses qm over SSH to create an OVMF/virtio-scsi Debian 13 arm64 VM, wait for qemu-guest-agent, seal it, and convert VM 9000 into a reusable template on local storage.',
|
||||||
'blog_stack_13' => 'The golden image bakes in Kubernetes prerequisites: swap disabled, cgroup boot options checked, kernel modules loaded, containerd configured for systemd cgroups, kubeadm/kubelet/kubectl installed, and qemu-guest-agent enabled.',
|
'blog_stack_13' => 'The golden image bakes in Kubernetes prerequisites: swap disabled, cgroup boot options checked, kernel modules loaded, containerd configured for systemd cgroups, kubeadm/kubelet/kubectl installed, and qemu-guest-agent enabled.',
|
||||||
|
|
@ -158,7 +208,7 @@ return [
|
||||||
|
|
||||||
'demos_kicker' => 'Small tools, real browser work',
|
'demos_kicker' => 'Small tools, real browser work',
|
||||||
'demos_title' => 'Demo Apps',
|
'demos_title' => 'Demo Apps',
|
||||||
'demos_subtitle' => 'A growing shelf of small apps shipped as separate static demo artifacts. The website stays light; each demo gets its own page under /demo-apps/.',
|
'demos_subtitle' => 'A growing shelf of small apps shipped as separate static demo artifacts. The website stays light; each demo gets its own page under /demo-apps/, including a reserved MLOps platform placeholder.',
|
||||||
'demo_cruncher_label' => 'Demo 01',
|
'demo_cruncher_label' => 'Demo 01',
|
||||||
'demo_cruncher_title' => 'The Client-Side Media Cruncher (Wasm + TS)',
|
'demo_cruncher_title' => 'The Client-Side Media Cruncher (Wasm + TS)',
|
||||||
'demo_cruncher_desc' => 'Drop in a large image and convert or compress it locally. The browser does the work, the server sees nothing, and your file does not take a suspicious vacation through a random converter site.',
|
'demo_cruncher_desc' => 'Drop in a large image and convert or compress it locally. The browser does the work, the server sees nothing, and your file does not take a suspicious vacation through a random converter site.',
|
||||||
|
|
@ -183,4 +233,7 @@ return [
|
||||||
'demo_drift_label' => 'Demo 08',
|
'demo_drift_label' => 'Demo 08',
|
||||||
'demo_drift_title' => 'Model Drift and Performance Simulator',
|
'demo_drift_title' => 'Model Drift and Performance Simulator',
|
||||||
'demo_drift_desc' => 'A visual MLOps playground where traffic spikes and corrupted inputs drag model accuracy down until retraining brings it back.',
|
'demo_drift_desc' => 'A visual MLOps playground where traffic spikes and corrupted inputs drag model accuracy down until retraining brings it back.',
|
||||||
|
'demo_mlops_label' => 'Demo 09',
|
||||||
|
'demo_mlops_title' => 'MLOps Deployment Platform',
|
||||||
|
'demo_mlops_desc' => 'Placeholder for the serious MLOps showcase: inference service, Kubernetes rollout, metrics, drift signals, and rollback workflow.',
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
return [
|
return [
|
||||||
'name' => 'Juvenal Diaz',
|
'name' => 'Juvenal Diaz',
|
||||||
'job_title' => 'Tlapixqui Tlahtoa Tlacuilolli',
|
'job_title' => 'Senior DevOps / MLOps / Platform Engineer',
|
||||||
'contacts' => 'Tlatemoliztli: +52 449 217 6833, juvenaldiaz522@gmail.com',
|
'contacts' => 'Tlatemoliztli: +52 449 217 6833, juvenaldiaz522@gmail.com',
|
||||||
|
|
||||||
'nav_home' => 'Nochan',
|
'nav_home' => 'Nochan',
|
||||||
|
|
@ -9,28 +9,28 @@ return [
|
||||||
'nav_blog' => 'Notlahtol',
|
'nav_blog' => 'Notlahtol',
|
||||||
'nav_demos' => 'Tlayeyecoliztli',
|
'nav_demos' => 'Tlayeyecoliztli',
|
||||||
|
|
||||||
'bio_intro' => 'Nitlatequitia ipan tlatecpanaliztli ihuan tlayeyecoliztli, niquitta in quenin tiquitasque tlapatlaliztli tlayecoliztli tlamantli nemiztli.',
|
'bio_intro' => 'Senior DevOps / MLOps / Platform Engineer based in Aguascalientes, Mexico, building Kubernetes, GitOps, observability, automation, and reliability systems for remote teams.',
|
||||||
|
|
||||||
'bio_story_1' => 'Notlahtlaniliztli ipan āmantēcayōtl ōpeuh inic niquitta in quenin tlamantli mochihua — oc cequi in quenin polihui. Ic cauitl, in notlahtlaniliztli omochiuh inic nitlatequitia ipan Linux tlamantli, nitlapoa tlaneltoquiliztli, ihuan niquimati in quenin tlatequipanoa tlamantli ipan huey altepetl.',
|
'bio_story_1' => 'My strongest work sits where production operations and platform engineering meet: Linux, Kubernetes, Terraform/OpenTofu, incident response, CI/CD, and the boring details that keep systems recoverable.',
|
||||||
|
|
||||||
'bio_story_2' => 'Ōnimacoc matlactli xihuitl ihuan achi ic tlatequitia ipan mixtlan tlamantilyotl ihuan nepapan tlamantli. Notequitl ōmoyolcuep in tlapalehuiloni itech inic niquitta ihuan niquimati in tlamantli mochihua ipan miec tlacame, in canin tlayeyecoliztli ihuan tlanextiliztli quinequi iuhqui in quenami tlatequipanoliztli.',
|
'bio_story_2' => 'I have spent more than a decade moving from reactive support into operating and improving platforms used by thousands of developers and customers.',
|
||||||
|
|
||||||
'bio_story_3' => 'Niquitta tlaneltoquiliztli inic niquixehua tlaneltoquiliztli — oc cequi ipan huehcauh tlapatlaliztli — niquitta in quenin ticchihua tlamantli nemiztli, tiquixehua quezqui tlamantli, ihuan ticmati in quenin ahmo mochihua occeppa.',
|
'bio_story_3' => 'The current showcase proves that mindset directly: a self-hosted Kubernetes delivery platform, source-linked architecture notes, and a reserved MLOps demo path.',
|
||||||
|
|
||||||
'bio_cta' => 'Inic ticita notequitl moch, xiquitta',
|
'bio_cta' => 'Review the platform case studies, MLOps demo plan, or the full',
|
||||||
'bio_cta_link' => 'Notlahcuilol',
|
'bio_cta_link' => 'Notlahcuilol',
|
||||||
|
|
||||||
'cv_summary_title' => 'Notequitl Tlahcuilolli',
|
'cv_summary_title' => 'Notequitl Tlahcuilolli',
|
||||||
'cv_summary' => 'Tlapixqui āmantēcayōtl inic matlactli omome xihuitl, motemachtia Linux ihuan quimatia tlatecpanaliztli (ipan altepetl ihuan tlalpan) ihuan tlahtoa tlacame. Nohueyitequitl ic tlaneltoquiliztli niquixehua tlaneltoquiliztli inic achi ic niquichihua, moch ica tlapatlaliztli ihuan tlatequipanoliztli. Nixpampa nimati āmantēcayōtl yancuic quenin monequi.',
|
'cv_summary' => 'Senior infrastructure and reliability engineer with 12+ years of experience across Linux, Kubernetes-based platforms, cloud operations, incident response, automation, and production support. Currently operating a Kubernetes/Terraform PaaS used by 20,000+ internal developers.',
|
||||||
'site_theme_label' => 'Theme',
|
'site_theme_label' => 'Theme',
|
||||||
'site_theme_dark' => 'Dark',
|
'site_theme_dark' => 'Dark',
|
||||||
'site_theme_light' => 'Light',
|
'site_theme_light' => 'Light',
|
||||||
'cv_theme_label' => 'Theme',
|
'cv_theme_label' => 'Theme',
|
||||||
'cv_theme_elegant' => 'Dark',
|
'cv_theme_elegant' => 'Dark',
|
||||||
'cv_theme_fancy' => 'Light',
|
'cv_theme_fancy' => 'Light',
|
||||||
'cv_orbit_text' => 'Reliability, Linux, Kubernetes, automation, ihuan achi drama inic resume nemi.',
|
'cv_orbit_text' => 'Kubernetes, Terraform, Linux, SRE, automation, observability, GitOps, and MLOps platform work.',
|
||||||
|
|
||||||
'cv_employment_title' => 'Notequitl Tlahcuilolli / Tlatequipanoliztli',
|
'cv_employment_title' => 'Employment History',
|
||||||
|
|
||||||
'cv_job1_period' => 'Ago 2024 → Axcan',
|
'cv_job1_period' => 'Ago 2024 → Axcan',
|
||||||
'cv_job1_title' => 'Tlapixqui Tlahtoa Tlacuilolli – Oracle | Spectra',
|
'cv_job1_title' => 'Tlapixqui Tlahtoa Tlacuilolli – Oracle | Spectra',
|
||||||
|
|
@ -62,7 +62,7 @@ return [
|
||||||
|
|
||||||
'blog_kicker' => 'Homelab tlahcuilolli',
|
'blog_kicker' => 'Homelab tlahcuilolli',
|
||||||
'blog_title' => 'Tlatecpanaliztli homelab CI/CD pipeline',
|
'blog_title' => 'Tlatecpanaliztli homelab CI/CD pipeline',
|
||||||
'blog_subtitle' => 'Ce tlahtolli in quenin Debian server, Raspberry Pi, Orange Pi 5 Plus ipan Pimox, OCI edge box, Debian 13 VM template, ihuan OpenWrt firewall plan mochihua ce Kubernetes tlatequipanoliztli.',
|
'blog_subtitle' => 'A case-study style walkthrough of how a Debian control plane, Pimox app workers, external Gitea, local registry, Kyverno policy, Argo CD, monitoring, and static demo shelf became a repeatable Kubernetes delivery path.',
|
||||||
'blog_speaker_question' => 'Nehuatl mostla',
|
'blog_speaker_question' => 'Nehuatl mostla',
|
||||||
'blog_speaker_answer' => 'Nehuatl axcan',
|
'blog_speaker_answer' => 'Nehuatl axcan',
|
||||||
'blog_q1' => 'Tleica niquichihua inin ihuan ahmo zan container tlatequipanoa?',
|
'blog_q1' => 'Tleica niquichihua inin ihuan ahmo zan container tlatequipanoa?',
|
||||||
|
|
@ -94,8 +94,8 @@ return [
|
||||||
'blog_stack_6' => 'OCI edge host quipia nginx, HAProxy, Varnish, ihuan Squid para TLS, routing, ihuan cache, ihuan Tailscale quihuica traffic ipan worker node.',
|
'blog_stack_6' => 'OCI edge host quipia nginx, HAProxy, Varnish, ihuan Squid para TLS, routing, ihuan cache, ihuan Tailscale quihuica traffic ipan worker node.',
|
||||||
'blog_stack_7' => 'Shared theme toggle quipia CSS ihuan JavaScript: dark mode console green-on-black, light mode cursive black-on-white ipan website ihuan demos.',
|
'blog_stack_7' => 'Shared theme toggle quipia CSS ihuan JavaScript: dark mode console green-on-black, light mode cursive black-on-white ipan website ihuan demos.',
|
||||||
'blog_stack_8' => 'Demo achto quipia files ipan browser. Image crunching quimati Canvas; video conversion quinequi Rust WebAssembly ihuan TypeScript UI.',
|
'blog_stack_8' => 'Demo achto quipia files ipan browser. Image crunching quimati Canvas; video conversion quinequi Rust WebAssembly ihuan TypeScript UI.',
|
||||||
'blog_stack_9' => 'Yancuic demos quipia network jitter graphs, local JSON/JWT/log tools, architecture simulator, offline traveler converter, redactor, sentiment analysis, ihuan model drift simulation.',
|
'blog_stack_9' => 'Yancuic demos quipia network jitter graphs, local JSON/JWT/log tools, architecture simulator, offline traveler converter, redactor, sentiment analysis, model drift simulation, ihuan reserved MLOps platform page.',
|
||||||
'blog_stack_10' => 'ML demos monequi client-side Wasm/ONNX/Transformers.js, ahmo server-side jobs.',
|
'blog_stack_10' => 'The serious MLOps page is intentionally only a placeholder for now. The target design is inference, Kubernetes deployment, metrics, drift signals, canary or blue-green rollout, and rollback notes.',
|
||||||
'blog_stack_11' => 'Demo code axcan quichihua demos-static image ihuan Argo CD app, exposed ipan /demo-apps/. PHP website zan catalog.',
|
'blog_stack_11' => 'Demo code axcan quichihua demos-static image ihuan Argo CD app, exposed ipan /demo-apps/. PHP website zan catalog.',
|
||||||
'blog_stack_12' => 'Pimox worker pipeline quichihua qm ika SSH para OVMF/virtio-scsi Debian 13 arm64 VM, quichia qemu-guest-agent, quiseala, ihuan quicuepa VM 9000 template ipan local storage.',
|
'blog_stack_12' => 'Pimox worker pipeline quichihua qm ika SSH para OVMF/virtio-scsi Debian 13 arm64 VM, quichia qemu-guest-agent, quiseala, ihuan quicuepa VM 9000 template ipan local storage.',
|
||||||
'blog_stack_13' => 'Golden image quipia Kubernetes prereqs: swap disabled, cgroup boot options checked, kernel modules, containerd systemd cgroups, kubeadm/kubelet/kubectl, ihuan qemu-guest-agent.',
|
'blog_stack_13' => 'Golden image quipia Kubernetes prereqs: swap disabled, cgroup boot options checked, kernel modules, containerd systemd cgroups, kubeadm/kubelet/kubectl, ihuan qemu-guest-agent.',
|
||||||
|
|
@ -105,7 +105,7 @@ return [
|
||||||
|
|
||||||
'demos_kicker' => 'Tepiton tools ipan browser',
|
'demos_kicker' => 'Tepiton tools ipan browser',
|
||||||
'demos_title' => 'Demo Apps',
|
'demos_title' => 'Demo Apps',
|
||||||
'demos_subtitle' => 'Tepiton apps ipan separate static demo artifacts. Website mocahua light; demos cateh ipan /demo-apps/.',
|
'demos_subtitle' => 'Tepiton apps ipan separate static demo artifacts. Website mocahua light; demos cateh ipan /demo-apps/, including a reserved MLOps platform placeholder.',
|
||||||
'demo_cruncher_label' => 'Demo 01',
|
'demo_cruncher_label' => 'Demo 01',
|
||||||
'demo_cruncher_title' => 'The Client-Side Media Cruncher (Wasm + TS)',
|
'demo_cruncher_title' => 'The Client-Side Media Cruncher (Wasm + TS)',
|
||||||
'demo_cruncher_desc' => 'Xictlali huey image ihuan browser quichihua compression o conversion local. Server amo quitta file.',
|
'demo_cruncher_desc' => 'Xictlali huey image ihuan browser quichihua compression o conversion local. Server amo quitta file.',
|
||||||
|
|
@ -130,4 +130,7 @@ return [
|
||||||
'demo_drift_label' => 'Demo 08',
|
'demo_drift_label' => 'Demo 08',
|
||||||
'demo_drift_title' => 'Model Drift and Performance Simulator',
|
'demo_drift_title' => 'Model Drift and Performance Simulator',
|
||||||
'demo_drift_desc' => 'MLOps playground canin traffic spikes ihuan corrupted inputs quitemoa model accuracy.',
|
'demo_drift_desc' => 'MLOps playground canin traffic spikes ihuan corrupted inputs quitemoa model accuracy.',
|
||||||
|
'demo_mlops_label' => 'Demo 09',
|
||||||
|
'demo_mlops_title' => 'MLOps Deployment Platform',
|
||||||
|
'demo_mlops_desc' => 'Placeholder for the serious MLOps showcase: inference service, Kubernetes rollout, metrics, drift signals, and rollback workflow.',
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -263,10 +263,91 @@ body {
|
||||||
font-size: 1.05rem;
|
font-size: 1.05rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.home-page .hero-role {
|
||||||
|
margin: -6px 0 18px;
|
||||||
|
color: #004085;
|
||||||
|
font-weight: 800;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
|
||||||
.home-page .cta a {
|
.home-page .cta a {
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.hero-actions {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 10px;
|
||||||
|
margin-top: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-actions a,
|
||||||
|
.cv-recruiter-actions a,
|
||||||
|
.case-card a {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
min-height: 40px;
|
||||||
|
padding: 0 14px;
|
||||||
|
border: 1px solid #004085;
|
||||||
|
border-radius: 6px;
|
||||||
|
background: #004085;
|
||||||
|
color: #fff;
|
||||||
|
font-weight: 800;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.positioning-proof {
|
||||||
|
max-width: 1080px;
|
||||||
|
margin: 28px auto 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.positioning-proof h2 {
|
||||||
|
margin: 0 0 16px;
|
||||||
|
color: #102a43;
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-proof-grid,
|
||||||
|
.case-study-grid,
|
||||||
|
.cv-impact-grid,
|
||||||
|
.cv-skill-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
|
||||||
|
gap: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-proof-card,
|
||||||
|
.case-card {
|
||||||
|
padding: 18px;
|
||||||
|
border: 1px solid #d9e2ec;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: #fff;
|
||||||
|
line-height: 1.55;
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-proof-card span,
|
||||||
|
.case-card span {
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
color: #2f855a;
|
||||||
|
font-size: 0.78rem;
|
||||||
|
font-weight: 900;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-proof-card h3,
|
||||||
|
.case-card h3 {
|
||||||
|
margin: 0 0 10px;
|
||||||
|
color: #102a43;
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-proof-card p,
|
||||||
|
.case-card p {
|
||||||
|
margin: 0;
|
||||||
|
color: #52606d;
|
||||||
|
}
|
||||||
|
|
||||||
.top-nav {
|
.top-nav {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
@ -372,6 +453,18 @@ body {
|
||||||
border: 1px solid #d9e2ec;
|
border: 1px solid #d9e2ec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.case-studies {
|
||||||
|
margin-top: 34px;
|
||||||
|
padding: 24px;
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid #d9e2ec;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.case-card a {
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
.tech-notes h2 {
|
.tech-notes h2 {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
color: #004085;
|
color: #004085;
|
||||||
|
|
@ -1089,6 +1182,50 @@ body {
|
||||||
min-height: 520px;
|
min-height: 520px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cv-proof-section,
|
||||||
|
.cv-skill-section,
|
||||||
|
.cv-recruiter-panel {
|
||||||
|
margin: 28px 0;
|
||||||
|
padding-top: 22px;
|
||||||
|
border-top: 1px solid #d9e2ec;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cv-impact-grid p {
|
||||||
|
margin: 0;
|
||||||
|
padding-left: 14px;
|
||||||
|
border-left: 4px solid #004085;
|
||||||
|
color: #334e68;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cv-skill-grid article {
|
||||||
|
padding-left: 14px;
|
||||||
|
border-left: 4px solid #829ab1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cv-skill-grid h3 {
|
||||||
|
margin: 0 0 8px;
|
||||||
|
color: #102a43;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cv-skill-grid p,
|
||||||
|
.cv-recruiter-panel li {
|
||||||
|
line-height: 1.55;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cv-recruiter-panel ul {
|
||||||
|
display: grid;
|
||||||
|
gap: 8px;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cv-recruiter-actions {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 10px;
|
||||||
|
margin-top: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
.cv-portrait-orbit {
|
.cv-portrait-orbit {
|
||||||
--portrait-rotation: 0deg;
|
--portrait-rotation: 0deg;
|
||||||
width: 160px;
|
width: 160px;
|
||||||
|
|
@ -1162,7 +1299,8 @@ body.home-page.theme-dark {
|
||||||
}
|
}
|
||||||
|
|
||||||
.theme-dark.home-page .hero-text h1,
|
.theme-dark.home-page .hero-text h1,
|
||||||
.theme-dark.home-page .cta a {
|
.theme-dark.home-page .cta a,
|
||||||
|
.theme-dark.home-page .hero-role {
|
||||||
color: #c7ffd0;
|
color: #c7ffd0;
|
||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
}
|
}
|
||||||
|
|
@ -1560,6 +1698,18 @@ body.home-page.theme-light {
|
||||||
font-size: 38px;
|
font-size: 38px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mlops-icon {
|
||||||
|
background: #eef2ff;
|
||||||
|
border-color: #c7d2fe;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mlops-icon::before {
|
||||||
|
content: "ML";
|
||||||
|
color: #3730a3;
|
||||||
|
font-family: "Courier New", monospace;
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
body.theme-light .top-nav,
|
body.theme-light .top-nav,
|
||||||
body.theme-light .site-theme-toolbar,
|
body.theme-light .site-theme-toolbar,
|
||||||
body.theme-light .nav-left,
|
body.theme-light .nav-left,
|
||||||
|
|
@ -1609,9 +1759,12 @@ body.theme-light .source-links a {
|
||||||
|
|
||||||
.theme-dark .blog-hero,
|
.theme-dark .blog-hero,
|
||||||
.theme-dark .architecture-section,
|
.theme-dark .architecture-section,
|
||||||
|
.theme-dark .case-studies,
|
||||||
.theme-dark .activity-log,
|
.theme-dark .activity-log,
|
||||||
.theme-dark .homelab-todo,
|
.theme-dark .homelab-todo,
|
||||||
.theme-dark .tech-notes,
|
.theme-dark .tech-notes,
|
||||||
|
.theme-dark .home-proof-card,
|
||||||
|
.theme-dark .case-card,
|
||||||
.theme-dark .demo-card,
|
.theme-dark .demo-card,
|
||||||
.theme-dark .message,
|
.theme-dark .message,
|
||||||
.theme-dark .todo-list li,
|
.theme-dark .todo-list li,
|
||||||
|
|
@ -1632,9 +1785,13 @@ body.theme-light .source-links a {
|
||||||
|
|
||||||
.theme-dark .blog-hero h1,
|
.theme-dark .blog-hero h1,
|
||||||
.theme-dark .demos-hero h1,
|
.theme-dark .demos-hero h1,
|
||||||
|
.theme-dark .positioning-proof h2,
|
||||||
|
.theme-dark .home-proof-card h3,
|
||||||
|
.theme-dark .case-card h3,
|
||||||
.theme-dark .section-heading h1,
|
.theme-dark .section-heading h1,
|
||||||
.theme-dark .section-heading h2,
|
.theme-dark .section-heading h2,
|
||||||
.theme-dark .tech-notes h2,
|
.theme-dark .tech-notes h2,
|
||||||
|
.theme-dark .cv-skill-grid h3,
|
||||||
.theme-dark .speaker,
|
.theme-dark .speaker,
|
||||||
.theme-dark .visitor-ideas h3,
|
.theme-dark .visitor-ideas h3,
|
||||||
.theme-dark .visitor-idea-list h4,
|
.theme-dark .visitor-idea-list h4,
|
||||||
|
|
@ -1645,10 +1802,15 @@ body.theme-light .source-links a {
|
||||||
}
|
}
|
||||||
|
|
||||||
.theme-dark .blog-subtitle,
|
.theme-dark .blog-subtitle,
|
||||||
|
.theme-dark .home-proof-card p,
|
||||||
|
.theme-dark .case-card p,
|
||||||
.theme-dark .section-heading p,
|
.theme-dark .section-heading p,
|
||||||
.theme-dark .message p,
|
.theme-dark .message p,
|
||||||
.theme-dark .demos-hero p,
|
.theme-dark .demos-hero p,
|
||||||
.theme-dark .demo-card p,
|
.theme-dark .demo-card p,
|
||||||
|
.theme-dark .cv-impact-grid p,
|
||||||
|
.theme-dark .cv-skill-grid p,
|
||||||
|
.theme-dark .cv-recruiter-panel li,
|
||||||
.theme-dark .diagram-caption,
|
.theme-dark .diagram-caption,
|
||||||
.theme-dark .visitor-idea-card footer,
|
.theme-dark .visitor-idea-card footer,
|
||||||
.theme-dark .idea-form label,
|
.theme-dark .idea-form label,
|
||||||
|
|
@ -1656,6 +1818,25 @@ body.theme-light .source-links a {
|
||||||
color: #a8ffb0;
|
color: #a8ffb0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.theme-dark .cv-proof-section,
|
||||||
|
.theme-dark .cv-skill-section,
|
||||||
|
.theme-dark .cv-recruiter-panel {
|
||||||
|
border-top-color: #2b7a38;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-dark .cv-impact-grid p,
|
||||||
|
.theme-dark .cv-skill-grid article {
|
||||||
|
border-left-color: #7cff9c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-dark .hero-actions a,
|
||||||
|
.theme-dark .cv-recruiter-actions a,
|
||||||
|
.theme-dark .case-card a {
|
||||||
|
background: #030603;
|
||||||
|
border-color: #a8ffb0;
|
||||||
|
color: #a8ffb0;
|
||||||
|
}
|
||||||
|
|
||||||
.theme-dark .idea-form input,
|
.theme-dark .idea-form input,
|
||||||
.theme-dark .idea-form textarea {
|
.theme-dark .idea-form textarea {
|
||||||
background: #030603;
|
background: #030603;
|
||||||
|
|
@ -1697,9 +1878,12 @@ body.theme-light .source-links a {
|
||||||
.theme-light .cv-container,
|
.theme-light .cv-container,
|
||||||
.theme-light .blog-hero,
|
.theme-light .blog-hero,
|
||||||
.theme-light .architecture-section,
|
.theme-light .architecture-section,
|
||||||
|
.theme-light .case-studies,
|
||||||
.theme-light .activity-log,
|
.theme-light .activity-log,
|
||||||
.theme-light .homelab-todo,
|
.theme-light .homelab-todo,
|
||||||
.theme-light .tech-notes,
|
.theme-light .tech-notes,
|
||||||
|
.theme-light .home-proof-card,
|
||||||
|
.theme-light .case-card,
|
||||||
.theme-light .demo-card,
|
.theme-light .demo-card,
|
||||||
.theme-light .message,
|
.theme-light .message,
|
||||||
.theme-light .todo-list li,
|
.theme-light .todo-list li,
|
||||||
|
|
@ -1720,9 +1904,13 @@ body.theme-light .source-links a {
|
||||||
|
|
||||||
.theme-light .blog-hero h1,
|
.theme-light .blog-hero h1,
|
||||||
.theme-light .demos-hero h1,
|
.theme-light .demos-hero h1,
|
||||||
|
.theme-light .positioning-proof h2,
|
||||||
|
.theme-light .home-proof-card h3,
|
||||||
|
.theme-light .case-card h3,
|
||||||
.theme-light .section-heading h1,
|
.theme-light .section-heading h1,
|
||||||
.theme-light .section-heading h2,
|
.theme-light .section-heading h2,
|
||||||
.theme-light .tech-notes h2,
|
.theme-light .tech-notes h2,
|
||||||
|
.theme-light .cv-skill-grid h3,
|
||||||
.theme-light .speaker,
|
.theme-light .speaker,
|
||||||
.theme-light .visitor-ideas h3,
|
.theme-light .visitor-ideas h3,
|
||||||
.theme-light .visitor-idea-list h4,
|
.theme-light .visitor-idea-list h4,
|
||||||
|
|
@ -1735,10 +1923,15 @@ body.theme-light .source-links a {
|
||||||
}
|
}
|
||||||
|
|
||||||
.theme-light .blog-subtitle,
|
.theme-light .blog-subtitle,
|
||||||
|
.theme-light .home-proof-card p,
|
||||||
|
.theme-light .case-card p,
|
||||||
.theme-light .section-heading p,
|
.theme-light .section-heading p,
|
||||||
.theme-light .message p,
|
.theme-light .message p,
|
||||||
.theme-light .demos-hero p,
|
.theme-light .demos-hero p,
|
||||||
.theme-light .demo-card p,
|
.theme-light .demo-card p,
|
||||||
|
.theme-light .cv-impact-grid p,
|
||||||
|
.theme-light .cv-skill-grid p,
|
||||||
|
.theme-light .cv-recruiter-panel li,
|
||||||
.theme-light .diagram-caption,
|
.theme-light .diagram-caption,
|
||||||
.theme-light .visitor-idea-card footer,
|
.theme-light .visitor-idea-card footer,
|
||||||
.theme-light .idea-form label,
|
.theme-light .idea-form label,
|
||||||
|
|
@ -1749,6 +1942,25 @@ body.theme-light .source-links a {
|
||||||
color: #111;
|
color: #111;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.theme-light .cv-proof-section,
|
||||||
|
.theme-light .cv-skill-section,
|
||||||
|
.theme-light .cv-recruiter-panel {
|
||||||
|
border-top-color: #111;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-light .cv-impact-grid p,
|
||||||
|
.theme-light .cv-skill-grid article {
|
||||||
|
border-left-color: #111;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-light .hero-actions a,
|
||||||
|
.theme-light .cv-recruiter-actions a,
|
||||||
|
.theme-light .case-card a {
|
||||||
|
background: #fff;
|
||||||
|
border-color: #111;
|
||||||
|
color: #111;
|
||||||
|
}
|
||||||
|
|
||||||
.theme-light .idea-form input,
|
.theme-light .idea-form input,
|
||||||
.theme-light .idea-form textarea {
|
.theme-light .idea-form textarea {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue