Polish wording
This commit is contained in:
+58
-38
@@ -3,8 +3,14 @@
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Havox</title>
|
||||
<meta name="description" content="John Gatward's portfolio" />
|
||||
<title>John Gatward | Software Engineer</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="Portfolio of John Gatward, a software engineer specialising in backend development, interactive visualisations, and self-hosted systems."
|
||||
/>
|
||||
<meta name="theme-color" content="#1e1e2e" />
|
||||
<link rel="icon" href="icons/favicon.ico" sizes="any" />
|
||||
<link rel="apple-touch-icon" href="icons/apple-touch-icon.png" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,400;0,700;1,400&family=Fraunces:ital,opsz,wght@0,9..144,300;0,9..144,600;1,9..144,300&display=swap"
|
||||
@@ -14,6 +20,7 @@
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<a class="skip-link" href="#main-content">Skip to main content</a>
|
||||
<!-- ─── Nav ─────────────────────────────────────────────────── -->
|
||||
<nav>
|
||||
<a href="#hero" class="nav-logo">havox</a>
|
||||
@@ -25,6 +32,7 @@
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<main id="main-content" tabindex="-1">
|
||||
<!-- ─── Hero ─────────────────────────────────────────────────── -->
|
||||
<section id="hero">
|
||||
<p class="hero-eyebrow">// havox.org - v4</p>
|
||||
@@ -65,8 +73,8 @@
|
||||
<div class="about-block">
|
||||
<p>
|
||||
Havox started in 2017 as a place to dump whatever projects I had
|
||||
written. Four redesigns and several dead domains later, it's still
|
||||
going. Less a portfolio, more a scrapbook.
|
||||
written. Four redesigns and several dead domains later, it's
|
||||
still going. Less a portfolio, more a scrapbook.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -90,8 +98,8 @@
|
||||
<div class="about-block">
|
||||
<span class="about-block-tag tag tag-yellow">linux</span>
|
||||
<p>
|
||||
Long-time Linux user and distro-hopper. Self-hosted server running
|
||||
24/7 for friends and family who didn't ask for it but
|
||||
Long-time Linux user and distro-hopper. Self-hosted server
|
||||
running 24/7 for friends and family who didn't ask for it but
|
||||
<s>probably</s> definitely appreciate it.
|
||||
</p>
|
||||
</div>
|
||||
@@ -125,8 +133,8 @@
|
||||
</div>
|
||||
<div class="v-year">2022 → 2025</div>
|
||||
<div class="v-desc">
|
||||
Borrowed a professional template and tried to make it suit my
|
||||
needs. Wasn't very 'me'.
|
||||
Borrowed a professional template and tried to make it suit
|
||||
my needs. Wasn't very 'me'.
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
@@ -189,8 +197,9 @@
|
||||
</span>
|
||||
<h3>Backend</h3>
|
||||
<p>
|
||||
Professional experience designing, building and deploying services.
|
||||
Using a modern tech stack in the Supply Chain & Logistics industry.
|
||||
Professional experience designing, building and deploying
|
||||
services. Using a modern tech stack in the Supply Chain &
|
||||
Logistics industry.
|
||||
</p>
|
||||
<div class="tag-row">
|
||||
<span class="tag tag-blue">Java</span>
|
||||
@@ -211,7 +220,8 @@
|
||||
<h3>Frontend & Creative</h3>
|
||||
<p>
|
||||
Comfortable with React and CSS. I've always enjoyed visualising
|
||||
algorithms interactively - it's way more fun than a console output.
|
||||
algorithms interactively - it's way more fun than a console
|
||||
output.
|
||||
</p>
|
||||
<div class="tag-row">
|
||||
<span class="tag tag-teal">React</span>
|
||||
@@ -276,9 +286,9 @@
|
||||
Things I <em>built</em>
|
||||
</h2>
|
||||
<p class="section-intro reveal" style="transition-delay: 0.1s">
|
||||
A timeline of my projects and an overview of my journey as a developer.
|
||||
Often times getting inspired and trying to recreate something cool I
|
||||
saw.
|
||||
A timeline of my projects and an overview of my journey as a
|
||||
developer. Often inspired by something cool I saw and set out to
|
||||
recreate.
|
||||
</p>
|
||||
|
||||
<div class="projects-subheading reveal" style="transition-delay: 0.12s">
|
||||
@@ -300,8 +310,8 @@
|
||||
<span class="card-title">Wordle Solver</span>
|
||||
<span class="card-desc"
|
||||
>Built after one too many missed 3-guess games. Now it plays
|
||||
marginally better than me. Uses information theory to recommend the
|
||||
next best guess.</span
|
||||
marginally better than me. Uses information theory to recommend
|
||||
the next best guess.</span
|
||||
>
|
||||
<span class="card-source">
|
||||
Source code:
|
||||
@@ -335,8 +345,9 @@
|
||||
>
|
||||
<span class="card-title">Crack the Quote</span>
|
||||
<span class="card-desc"
|
||||
>A substitution-cipher puzzle game with a daily challenge. Built for
|
||||
me and my family to play after getting bored with NYT games.</span
|
||||
>A substitution-cipher puzzle game with a daily challenge. Built
|
||||
for me and my family to play after getting bored with NYT
|
||||
games.</span
|
||||
>
|
||||
<span class="card-source">
|
||||
Source code:
|
||||
@@ -385,7 +396,9 @@
|
||||
<button type="button" class="filter-chip" data-filter="p5">
|
||||
p5.js
|
||||
</button>
|
||||
<button type="button" class="filter-chip" data-filter="zig">Zig</button>
|
||||
<button type="button" class="filter-chip" data-filter="zig">
|
||||
Zig
|
||||
</button>
|
||||
<button type="button" class="filter-chip" data-filter="cpp">
|
||||
C / C++
|
||||
</button>
|
||||
@@ -402,12 +415,10 @@
|
||||
data-href="https://pubquiz.umbra.mom"
|
||||
>
|
||||
<span class="card-date">03 Apr 2025</span>
|
||||
<span class="project-status project-status--active"
|
||||
>Active development</span
|
||||
>
|
||||
<span class="card-title">Pub Quiz Dashboard</span>
|
||||
<span class="card-desc"
|
||||
>A Python dashboard to track our local pub quiz performances.</span
|
||||
>A Python dashboard to track our local pub quiz
|
||||
performances.</span
|
||||
>
|
||||
<span class="tag-row">
|
||||
<span class="tag tag-red">Python</span>
|
||||
@@ -427,7 +438,7 @@
|
||||
<span class="tag-row">
|
||||
<span class="tag tag-blue">C++</span>
|
||||
<span class="tag tag-teal">WebAssembly</span>
|
||||
<span class="tag tag-peach">RayLib</span>
|
||||
<span class="tag tag-peach">Raylib</span>
|
||||
</span>
|
||||
</article>
|
||||
<article
|
||||
@@ -438,8 +449,8 @@
|
||||
<span class="card-date">20 Mar 2024</span>
|
||||
<span class="card-title">Travelling Salesman Problem</span>
|
||||
<span class="card-desc"
|
||||
>A nearest-neighbor + 2-opt visualiser. Wanted to revisit one of my
|
||||
first projects but with a super optimised tech-stack &
|
||||
>A nearest-neighbor + 2-opt visualiser. Wanted to revisit one of
|
||||
my first projects with an optimised tech stack and
|
||||
algorithm.</span
|
||||
>
|
||||
<span class="tag-row">
|
||||
@@ -456,7 +467,7 @@
|
||||
<span class="card-date">31 Jan 2024</span>
|
||||
<span class="card-title">Flocking</span>
|
||||
<span class="card-desc"
|
||||
>Rewrote the entire project in Rust from GoLang to compile to wasm.
|
||||
>Rewrote the project from Go to Rust, compiling it to WebAssembly.
|
||||
Was fun being able to use DOM controls to affect the
|
||||
simulation.</span
|
||||
>
|
||||
@@ -511,6 +522,7 @@
|
||||
>Watched a brilliant video by
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
href="https://youtu.be/a-767WnbaCQ?si=f3NM95INeoZqzIi8"
|
||||
>Spectral Collective</a
|
||||
>
|
||||
@@ -518,7 +530,7 @@
|
||||
>
|
||||
<span class="tag-row">
|
||||
<span class="tag tag-blue">C</span>
|
||||
<span class="tag tag-peach">RayLib</span>
|
||||
<span class="tag tag-peach">Raylib</span>
|
||||
<span class="tag tag-teal">WebAssembly</span>
|
||||
</span>
|
||||
</article>
|
||||
@@ -531,9 +543,10 @@
|
||||
<span class="card-title">Drawing Bézier curves</span>
|
||||
<span class="card-desc"
|
||||
>An interactive animation for how cubic Bézier curves are
|
||||
constructed. Inspirated by this beautiful video by
|
||||
constructed. Inspired by this beautiful video by
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
href="https://youtu.be/aVwxzDHniEw?si=mCylw_p-fMSdhyvN"
|
||||
>Fraya Holmér</a
|
||||
></span
|
||||
@@ -552,7 +565,7 @@
|
||||
<span class="card-title">2D Marching Squares</span>
|
||||
<span class="card-desc"
|
||||
>I saw the 3D version of this algorithm in a game dev log and was
|
||||
inspired to create this 2d land/sea map generator thing.</span
|
||||
inspired to create this 2D land-and-sea map generator.</span
|
||||
>
|
||||
<span class="tag-row">
|
||||
<span class="tag tag-green">JavaScript</span>
|
||||
@@ -567,7 +580,8 @@
|
||||
<span class="card-date">2 Apr 2020</span>
|
||||
<span class="card-title">Müller-Lyer illusion</span>
|
||||
<span class="card-desc"
|
||||
>JavaScript visualisation of the Müller-Lyer optical illusion.</span
|
||||
>JavaScript visualisation of the Müller-Lyer optical
|
||||
illusion.</span
|
||||
>
|
||||
<span class="tag-row">
|
||||
<span class="tag tag-green">JavaScript</span>
|
||||
@@ -582,8 +596,8 @@
|
||||
<span class="card-date">27 Feb 2019</span>
|
||||
<span class="card-title">Fourier series</span>
|
||||
<span class="card-desc"
|
||||
>Builds a square wave from sine components to show Fourier series in
|
||||
motion.</span
|
||||
>Builds a square wave from sine components to show Fourier series
|
||||
in motion.</span
|
||||
>
|
||||
<span class="tag-row">
|
||||
<span class="tag tag-green">JavaScript</span>
|
||||
@@ -601,6 +615,7 @@
|
||||
>A geometric construction demo inspired by
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
href="https://youtu.be/xdIjYBtnvZU?si=uI66LS_O_eAWqG4e"
|
||||
>3Blue1Brown's video</a
|
||||
>
|
||||
@@ -617,7 +632,7 @@
|
||||
data-href="projects/pi_approximation.html"
|
||||
>
|
||||
<span class="card-date">18 Mar 2018</span>
|
||||
<span class="card-title">Calculating PI</span>
|
||||
<span class="card-title">Calculating Pi</span>
|
||||
<span class="card-desc"
|
||||
>A Monte Carlo approximation of pi using random sampling.</span
|
||||
>
|
||||
@@ -652,6 +667,7 @@
|
||||
>Discovered the
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
href="https://youtu.be/HyK_Q5rrcr4?si=G6g8xDHK0cc_MwhG"
|
||||
>Coding Train's channel</a
|
||||
>
|
||||
@@ -686,10 +702,10 @@
|
||||
<h2>Let's <em>talk</em></h2>
|
||||
<p>
|
||||
I am currently employed and open to the right software engineering
|
||||
opportunity, particularly backend or full-stack roles with friendly,
|
||||
close-knit teams.
|
||||
opportunity, particularly backend or full-stack roles with
|
||||
friendly, close-knit teams.
|
||||
</p>
|
||||
<p>For professional enquiries, please contact me on LinkedIn.</p>
|
||||
<p>For professional enquiries, connect with me on LinkedIn.</p>
|
||||
</div>
|
||||
<div class="contact-links">
|
||||
<a
|
||||
@@ -721,13 +737,17 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<!-- ─── Footer ─────────────────────────────────────────────────── -->
|
||||
<footer>
|
||||
<span>umbra.mom - John Gatward</span>
|
||||
<span>
|
||||
Source code (self‑hosted):
|
||||
<a href="https://gitea.umbra.mom/jay/havox" target="_blank"
|
||||
<a
|
||||
href="https://gitea.umbra.mom/jay/havox"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>repository</a
|
||||
>
|
||||
</span>
|
||||
|
||||
@@ -115,6 +115,31 @@ body::after {
|
||||
color: var(--crust);
|
||||
}
|
||||
|
||||
:focus-visible {
|
||||
outline: 2px solid var(--mauve);
|
||||
outline-offset: 4px;
|
||||
}
|
||||
|
||||
.skip-link {
|
||||
position: fixed;
|
||||
top: 0.75rem;
|
||||
left: 50%;
|
||||
z-index: 200;
|
||||
padding: 0.6rem 1rem;
|
||||
border-radius: 4px;
|
||||
background: var(--mauve);
|
||||
color: var(--crust);
|
||||
font-size: 0.8rem;
|
||||
font-weight: 700;
|
||||
text-decoration: none;
|
||||
transform: translate(-50%, -200%);
|
||||
transition: transform 0.2s;
|
||||
}
|
||||
|
||||
.skip-link:focus {
|
||||
transform: translate(-50%, 0);
|
||||
}
|
||||
|
||||
/* ─── Scrollbar ────────────────────────────────────────── */
|
||||
::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
@@ -1165,3 +1190,18 @@ footer a:hover {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
html {
|
||||
scroll-behavior: auto;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
animation-duration: 0.01ms !important;
|
||||
animation-iteration-count: 1 !important;
|
||||
scroll-behavior: auto !important;
|
||||
transition-duration: 0.01ms !important;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user