🌐 Adds i18n capabilities
All checks were successful
Gitea Build Action / build-astro (push) Successful in 9m31s

This commit is contained in:
2025-10-22 13:53:44 +02:00
parent 7eb1783986
commit 330060f954
5 changed files with 361 additions and 310 deletions

View File

@@ -10,5 +10,12 @@ export default defineConfig({
// @ts-ignore
plugins: [tailwindcss()]
},
integrations: [vue()]
integrations: [vue()],
i18n: {
locales: ["en", "sk"],
defaultLocale: "en",
routing: {
prefixDefaultLocale: true,
}
}
});

18
src/i18n/ui.ts Normal file
View File

@@ -0,0 +1,18 @@
export const languages = {
en: 'English',
sk: 'Slovak',
};
export const defaultLang = 'en';
export const ui = {
en: {
'nav.home': 'Home',
'nav.hello': 'Hello',
'nav.twitter': 'Twitter',
},
sk: {
'nav.home': 'Start',
'nav.hello': 'Hallo',
},
} as const;

7
src/i18n/utils.ts Normal file
View File

@@ -0,0 +1,7 @@
import {ui, defaultLang} from "./ui";
export function useTranslations(lang: keyof typeof ui) {
return function t(key: keyof typeof ui[typeof defaultLang]) {
return key in ui[lang] ? (ui[lang] as any)[key] : ui[defaultLang][key];
}
}

View File

@@ -0,0 +1,326 @@
---
import Layout from "../../layouts/Layout.astro";
import ArrowLink from "../../components/ArrowLink.astro"
import {useTranslations} from "../../i18n/utils.ts";
const now = new Date();
let years = now.getFullYear() - 2006 - 1;
if (now.getMonth() > 7 || (now.getMonth() === 7 && now.getDate() >= 23)) {
years++;
}
let a = years === 18 ? "an " : "a ";
const {lang} = Astro.params;
const t = useTranslations(lang as "en" | "sk");
export function getStaticPaths() {
return [
{params: {lang: "en"}},
{params: {lang: "sk"},},
];
}
---
<style>
td {
vertical-align: top;
}
td.flex {
padding: 0.25rem 0 0.5rem 0;
}
th {
text-align: left;
font-weight: normal;
font-style: italic;
font-size: 1.05rem;
}
tr {
border-bottom: 1px solid black;
}
tr:last-of-type {
border-bottom: none;
}
.hashtag {
padding: 0 0.2rem;
background-color: #e8e8e8;
border-radius: 0.25rem;
}
</style>
<Layout>
<div class="w-screen h-full flex items-center justify-start flex-col overflow-x-scroll">
<div class="w-1 h-10 shrink-0"/>
<main class="w-[90vw] sm:w-[80vw] md:w-[70vw] lg:w-[60vw] xl:w-[50vw] border-solid border-black border-1 p-3 shrink-0 overflow-auto">
<p>Note: this page has been kept simple in favor of accessibility</p>
<div class="h-4"/>
<h1 class="text-xl">Hi, I'm <span class="font-bold">Daniel Svitaň</span>, {a} {years} year-old aspiring
engineer</h1>
<p>Residence: Bratislava, Slovakia</p>
<div class="h-4"/>
<p>Contacts:</p>
<ul class="list-none">
<li>
<a href="mailto:daniel@svitan.dev" target="_blank" class="underline">daniel@svitan.dev</a>
</li>
<li>
<a href="tel:+421948309804" target="_blank" class="underline">+421 948 309 804</a> (you can text me
on Signal)
</li>
<li>
<a href="https://matrix.to/#/@selfsigned-ash:svitan.dev" target="_blank" class="underline">@selfsigned-ash:svitan.dev</a>
</li>
</ul>
<div class="h-4"/>
<p>Socials:</p>
<ul class="list-none">
<li>
<a href="https://github.com/Streamer272" target="_blank" class="underline">GitHub</a>
</li>
<li>
<a href="https://gitea.svitan.dev/Streamer272" target="_blank" class="underline">Gitea</a>
</li>
<li>
<a href="https://codeberg.org/selfsigned-ash" target="_blank" class="underline">Codeberg</a>
</li>
<li>
<a href="https://kolektiva.social/@selfsigned_ash" rel="me" target="_blank"
class="underline">Mastodon</a>
</li>
<li>
<a href="https://pixelfed.de/selfsigned-ash" target="_blank" class="underline">Pixelfed</a>
</li>
</ul>
<div class="h-6"/>
<h2 class="text-lg">Experience:</h2>
<table class="w-full">
<tr>
<th class="max-w-48"><p class="px-1">When</p></th>
<th><p class="px-1">Occupation and details</p></th>
</tr>
<tr>
<td>July, 2024 - present</td>
<td>Data Scientist<br/>
Faculty of Electronics and Informatics, Slovak Technical University in Bratislava (FEI STU)
<ul class="list-disc mt-2">
<li>Created data labeling system for the ECG quality classification neural network</li>
<li>Contributed to the ECG quality classification neural network</li>
<li>Created quality classification system based on ECG quality classification neural
network
</li>
<li>Wrote the Tom & Jerry LabChart Text File Dynamic Sync Algorithm</li>
</ul>
<p class="mt-2 flex items-center gap-x-1">
Publications:
<ArrowLink link="https://ieeexplore.ieee.org/document/10844607"/>
</p>
</td>
</tr>
</table>
<div class="h-6"/>
<h2 class="text-lg">Education:</h2>
<table class="w-full">
<tr>
<th class="max-w-48"><p class="px-1">When</p></th>
<th><p class="px-1">Where</p></th>
</tr>
<tr>
<td>2024 - present</td>
<td>Evanjelické Lýceum Bratislava - 5-year Bilingual Gymnasium (high school)</td>
</tr>
<tr>
<td>2023 - 2024</td>
<td>Spojená škola Svätej Rodiny v Bratislave - 8-year Gymnasium (high school)</td>
</tr>
<tr>
<td>2022 - 2023</td>
<td>Del Mar High School in San Jose, California, United States of America</td>
</tr>
</table>
<div class="h-6"/>
<h2 class="text-lg">Skills:</h2>
<ul class="ml-4">
<li>Languages: Slovak (native), English (C1), German (B1)</li>
<li>Data science: PyTorch (neural networks), Matplotlib, SciPy, NumPy</li>
<li>Sysadmin: Docker, Caddy, ZFS, Linux</li>
<li>Frontend: HTML, CSS/SCSS, JavaScript/TypeScript, TailWindCSS, React, Vue, Nuxt, Astro</li>
<li>Backend: Ktor (Kotlin), Fiber (Go), Echo (Go), FastAPI (Python), NestJS (TypeScript)</li>
<li>Database: MySQL, PostgreSQL, Redis/Valkey, Firestore, MongoDB</li>
<li>Math: Calculus (1), Statistics, Linear algebra</li>
<li>Other: Driver license type B (Slovak), LibreOffice</li>
</ul>
<p class="mt-1">Having my own TrueNAS Scale server at home, I've self-hosted multiple apps and projects,
including Nextcloud, Immich, Gitea, Prometheus+Grafana, ngIRCd, WireGuard Easy, and many more.</p>
<p>I route them all through my Caddy reverse proxy, but since my server is behind NAT, I also have a VPS
that is connected to my server through a tunnel and routes all of the traffic to my server through that
tunnel.</p>
<p>I also protect myself against data loss with a RAIDZ1 ZFS pool, regular backups (monthly to an
off-site physical drive owned by me and every two days to a cloud storage box), and regular ZFS
Scrubs.</p>
<p>And everything is encrypted, my pool and both backups with a randomly generated binary file.</p>
<p>Needless to say, I've got some experience with system administration as well as Linux systems, since I
also daily drive Arch Linux.</p>
<div class="h-6"/>
<h2 class="text-lg">Some of my projects:</h2>
<table class="w-full">
<tr>
<th class="max-w-60"><p class="px-1">Name</p></th>
<th class="max-w-24"><p class="px-1">Reference</p></th>
<th><p class="px-1">Description</p></th>
<th class="max-w-32"><p class="px-1">Tags</p></th>
</tr>
<tr>
<td>SOČ 2024/2025 Paper</td>
<td class="flex gap-x-2">
<ArrowLink link="https://gitea.svitan.dev/Streamer272/soc-2024"/>
<ArrowLink link="https://github.com/Streamer272/soc-2024"/>
</td>
<td>Research paper entitled "Faktory ovplyvňujúce študijné výsledky a identifikácia rizikových
skupín", which won first place in the regional round of the competition
</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">#statistics</span>
<span class="hashtag">#research</span>
</td>
</tr>
<tr>
<td>State SOČ Cross Examination</td>
<td class="flex gap-x-2">
<ArrowLink link="https://gitea.svitan.dev/Streamer272/state-soc-cross"/>
</td>
<td>Cross examination of the Slovak State SOC Competition results and the analysis of the judges'
bias
</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">#statistics</span>
</td>
</tr>
<tr>
<td>Door alarm</td>
<td class="flex gap-x-2">
<ArrowLink link="https://gitea.svitan.dev/Streamer272/door-alarm"/>
</td>
<td>A home-made door alarm based on ultrasound sensor distance measurements (in development)</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">#electronics</span>
<span class="hashtag">#go</span>
</td>
</tr>
<tr>
<td>Green School / Zelená Škola</td>
<td class="flex gap-x-2">
<ArrowLink link="https://github.com/Streamer272/green-school"/>
<ArrowLink link="https://zelena.svr.sk/"/>
</td>
<td>A website for a school club of environmentalists</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">#web-dev</span>
<span class="hashtag">#nuxt</span>
</td>
</tr>
<tr>
<td>Automod</td>
<td class="flex gap-x-2">
<ArrowLink link="https://github.com/Streamer272/automod"/>
</td>
<td>A discord bot for my local community</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">#discord</span>
<span class="hashtag">#kotlin</span>
</td>
</tr>
<tr>
<td>Pwetty</td>
<td class="flex gap-x-2">
<ArrowLink link="https://gitea.svitan.dev/Streamer272/pwetty"/>
</td>
<td>A very, very simple json prettifier</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">#c</span>
<span class="hashtag">#assembly</span>
</td>
</tr>
<tr>
<td>Keys</td>
<td class="flex gap-x-2">
<ArrowLink link="https://gitea.svitan.dev/Streamer272/keys"/>
</td>
<td>A very simple client-server based keylogger for Windows, Linux, and MacOS</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">#go</span>
<span class="hashtag">#keylogger</span>
</td>
</tr>
<tr>
<td>Adventná Výzva</td>
<td class="flex gap-x-2">
<ArrowLink link="https://github.com/7274-dev/AdventnaVyzva-React"/>
<ArrowLink link="https://github.com/7274-dev"/>
</td>
<td>An interactive game-like app for kids with an advent theme</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">#web-dev</span>
<span class="hashtag">#react</span>
</td>
</tr>
</table>
<p class="mt-1">And many other closed-source projects, especially contracts (like NatArt) and the
tens of projects at FEI STU (including multiple algorithms and labeling / data processing systems,
mostly concerned with bio-medical signals like ECG or PPG).</p>
<div class="h-6"/>
<h2 class="text-lg">About me and my interests:</h2>
<p>I spend most of my free time working on various projects of mine; I've recently decided to expand my
horizons and work on some projects that are not pure computer science. But other than that, I like to go
on walks, listen to music, and I occasionally play video games.</p>
<p>I also love going rollerblading and I used to play airsoft, but I haven't had the time to play recently.
And, believe it or not, I like to cook and read books as well.</p>
<p>When I grow up, I want to study mechanical engineering, since I take interest in engineering in general,
not just programming. I'm still not sure which university I want to go to, but chances are that it will
be somewhere in Germany, Benelux, or Scandinavia (or Czechia and Slovakia as a last resort). Both my
parents are successful engineers (chemical, not mechanical though), so I have a lot to live up
to.</p>
<p>But currently, I'm just trying to survive high school.</p>
<div class="h-6"/>
<p>Note: the source code of this website is available
<a href="https://gitea.svitan.dev/Streamer272/svitan.dev" target="_blank" class="underline">here</a>
</p>
</main>
<div class="w-1 h-10 shrink-0"/>
</div>
</Layout>

View File

@@ -1,315 +1,8 @@
---
import Layout from "../layouts/Layout.astro";
import ArrowLink from "../components/ArrowLink.astro"
const now = new Date();
let years = now.getFullYear() - 2006 - 1
if (now.getMonth() > 7 || (now.getMonth() === 7 && now.getDate() >= 23)) {
years++
}
let a = years === 18 ? "an " : "a ";
import {defaultLang} from "../i18n/ui.ts";
---
<style>
td {
vertical-align: top;
}
td.flex {
padding: 0.25rem 0 0.5rem 0;
}
th {
text-align: left;
font-weight: normal;
font-style: italic;
font-size: 1.05rem;
}
tr {
border-bottom: 1px solid black;
}
tr:last-of-type {
border-bottom: none;
}
.hashtag {
padding: 0 0.2rem;
background-color: #e8e8e8;
border-radius: 0.25rem;
}
</style>
<Layout>
<div class="w-screen h-full flex items-center justify-start flex-col overflow-x-scroll">
<div class="w-1 h-10 shrink-0"/>
<main class="w-[90vw] sm:w-[80vw] md:w-[70vw] lg:w-[60vw] xl:w-[50vw] border-solid border-black border-1 p-3 shrink-0 overflow-auto">
<p>Note: this page has been kept simple in favor of accessibility</p>
<div class="h-4"/>
<h1 class="text-xl">Hi, I'm <span class="font-bold">Daniel Svitaň</span>, {a} {years} year-old aspiring
engineer</h1>
<p>Residence: Bratislava, Slovakia</p>
<div class="h-4"/>
<p>Contacts:</p>
<ul class="list-none">
<li>
<a href="mailto:daniel@svitan.dev" target="_blank" class="underline">daniel@svitan.dev</a>
</li>
<li>
<a href="tel:+421948309804" target="_blank" class="underline">+421 948 309 804</a> (you can text me
on Signal)
</li>
<li>
<a href="https://matrix.to/#/@selfsigned-ash:svitan.dev" target="_blank" class="underline">@selfsigned-ash:svitan.dev</a>
</li>
</ul>
<div class="h-4"/>
<p>Socials:</p>
<ul class="list-none">
<li>
<a href="https://github.com/Streamer272" target="_blank" class="underline">GitHub</a>
</li>
<li>
<a href="https://gitea.svitan.dev/Streamer272" target="_blank" class="underline">Gitea</a>
</li>
<li>
<a href="https://codeberg.org/selfsigned-ash" target="_blank" class="underline">Codeberg</a>
</li>
<li>
<a href="https://kolektiva.social/@selfsigned_ash" rel="me" target="_blank"
class="underline">Mastodon</a>
</li>
<li>
<a href="https://pixelfed.de/selfsigned-ash" target="_blank" class="underline">Pixelfed</a>
</li>
</ul>
<div class="h-6"/>
<h2 class="text-lg">Experience:</h2>
<table class="w-full">
<tr>
<th class="max-w-48"><p class="px-1">When</p></th>
<th><p class="px-1">Occupation and details</p></th>
</tr>
<tr>
<td>July, 2024 - present</td>
<td>Data Scientist<br/>
Faculty of Electronics and Informatics, Slovak Technical University in Bratislava (FEI STU)
<ul class="list-disc mt-2">
<li>Created data labeling system for the ECG quality classification neural network</li>
<li>Contributed to the ECG quality classification neural network</li>
<li>Created quality classification system based on ECG quality classification neural
network
</li>
<li>Wrote the Tom & Jerry LabChart Text File Dynamic Sync Algorithm</li>
</ul>
<p class="mt-2 flex items-center gap-x-1">
Publications:
<ArrowLink link="https://ieeexplore.ieee.org/document/10844607"/>
</p>
</td>
</tr>
</table>
<div class="h-6"/>
<h2 class="text-lg">Education:</h2>
<table class="w-full">
<tr>
<th class="max-w-48"><p class="px-1">When</p></th>
<th><p class="px-1">Where</p></th>
</tr>
<tr>
<td>2024 - present</td>
<td>Evanjelické Lýceum v Bratislave - 5-year Bilingual Gymnasium (high school)</td>
</tr>
<tr>
<td>2023 - 2024</td>
<td>Spojená škola Svätej Rodiny v Bratislave - 8-year Gymnasium (high school)</td>
</tr>
<tr>
<td>2022 - 2023</td>
<td>Del Mar High School in San Jose, California, United States of America</td>
</tr>
</table>
<div class="h-6"/>
<h2 class="text-lg">Skills:</h2>
<ul class="ml-4">
<li>Languages: Slovak (native), English (C1), German (B1)</li>
<li>Data science: PyTorch (neural networks), Matplotlib, SciPy, NumPy</li>
<li>Sysadmin: Docker, Caddy, ZFS, Linux</li>
<li>Frontend: HTML, CSS/SCSS, JavaScript/TypeScript, TailWindCSS, React, Vue, Nuxt, Astro</li>
<li>Backend: Ktor (Kotlin), Fiber (Go), Echo (Go), FastAPI (Python), NestJS (TypeScript)</li>
<li>Database: MySQL, PostgreSQL, Redis/Valkey, Firestore, MongoDB</li>
<li>Math: Calculus (1), Statistics, Linear algebra</li>
<li>Other: Driver license type B (Slovak), LibreOffice</li>
</ul>
<p class="mt-1">Having my own TrueNAS Scale server at home, I've self-hosted multiple apps and projects,
including Nextcloud, Immich, Gitea, Prometheus+Grafana, ngIRCd, WireGuard Easy, and many more.</p>
<p>I route them all through my Caddy reverse proxy, but since my server is behind NAT, I also have a VPS
that is connected to my server through a tunnel and routes all of the traffic to my server through that
tunnel.</p>
<p>I also protect myself against data loss with a RAIDZ1 ZFS pool, regular backups (monthly to an
off-site physical drive owned by me and every two days to a cloud storage box), and regular ZFS
Scrubs.</p>
<p>And everything is encrypted, my pool and both backups with a randomly generated binary file.</p>
<p>Needless to say, I've got some experience with system administration as well as Linux systems, since I
also daily drive Arch Linux.</p>
<div class="h-6"/>
<h2 class="text-lg">Some of my projects:</h2>
<table class="w-full">
<tr>
<th class="max-w-60"><p class="px-1">Name</p></th>
<th class="max-w-24"><p class="px-1">Reference</p></th>
<th><p class="px-1">Description</p></th>
<th class="max-w-32"><p class="px-1">Tags</p></th>
</tr>
<tr>
<td>SOČ 2024/2025 Paper</td>
<td class="flex gap-x-2">
<ArrowLink link="https://gitea.svitan.dev/Streamer272/soc-2024"/>
<ArrowLink link="https://github.com/Streamer272/soc-2024"/>
</td>
<td>Research paper entitled "Faktory ovplyvňujúce študijné výsledky a identifikácia rizikových
skupín", which won first place in the regional round of the competition
</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">#statistics</span>
<span class="hashtag">#research</span>
</td>
</tr>
<tr>
<td>State SOČ Cross Examination</td>
<td class="flex gap-x-2">
<ArrowLink link="https://gitea.svitan.dev/Streamer272/state-soc-cross"/>
</td>
<td>Cross examination of the Slovak State SOC Competition results and the analysis of the judges'
bias
</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">#statistics</span>
</td>
</tr>
<tr>
<td>Door alarm</td>
<td class="flex gap-x-2">
<ArrowLink link="https://gitea.svitan.dev/Streamer272/door-alarm"/>
</td>
<td>A home-made door alarm based on ultrasound sensor distance measurements (in development)</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">#electronics</span>
<span class="hashtag">#go</span>
</td>
</tr>
<tr>
<td>Green School / Zelená Škola</td>
<td class="flex gap-x-2">
<ArrowLink link="https://github.com/Streamer272/green-school"/>
<ArrowLink link="https://zelena.svr.sk/"/>
</td>
<td>A website for a school club of environmentalists</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">#web-dev</span>
<span class="hashtag">#nuxt</span>
</td>
</tr>
<tr>
<td>Automod</td>
<td class="flex gap-x-2">
<ArrowLink link="https://github.com/Streamer272/automod"/>
</td>
<td>A discord bot for my local community</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">#discord</span>
<span class="hashtag">#kotlin</span>
</td>
</tr>
<tr>
<td>Pwetty</td>
<td class="flex gap-x-2">
<ArrowLink link="https://gitea.svitan.dev/Streamer272/pwetty"/>
</td>
<td>A very, very simple json prettifier</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">#c</span>
<span class="hashtag">#assembly</span>
</td>
</tr>
<tr>
<td>Keys</td>
<td class="flex gap-x-2">
<ArrowLink link="https://gitea.svitan.dev/Streamer272/keys"/>
</td>
<td>A very simple client-server based keylogger for Windows, Linux, and MacOS</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">#go</span>
<span class="hashtag">#keylogger</span>
</td>
</tr>
<tr>
<td>Adventná Výzva</td>
<td class="flex gap-x-2">
<ArrowLink link="https://github.com/7274-dev/AdventnaVyzva-React"/>
<ArrowLink link="https://github.com/7274-dev"/>
</td>
<td>An interactive game-like app for kids with an advent theme</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">#web-dev</span>
<span class="hashtag">#react</span>
</td>
</tr>
</table>
<p class="mt-1">And many other closed-source projects, especially contracts (like NatArt) and the
tens of projects at FEI STU (including multiple algorithms and labeling / data processing systems,
mostly concerned with bio-medical signals like ECG or PPG).</p>
<div class="h-6"/>
<h2 class="text-lg">About me and my interests:</h2>
<p>I spend most of my free time working on various projects of mine; I've recently decided to expand my
horizons and work on some projects that are not pure computer science. But other than that, I like to go
on walks, listen to music, and I occasionally play video games.</p>
<p>I also love going rollerblading and I used to play airsoft, but I haven't had the time to play recently.
And, believe it or not, I like to cook and read books as well.</p>
<p>When I grow up, I want to study mechanical engineering, since I take interest in engineering in general,
not just programming. I'm still not sure which university I want to go to, but chances are that it will
be somewhere in Germany, Benelux, or Scandinavia (or Czechia and Slovakia as a last resort). Both my
parents are successful engineers (chemical, not mechanical though), so I have a lot to live up
to.</p>
<p>But currently, I'm just trying to survive high school.</p>
<div class="h-6"/>
<p>Note: the source code of this website is available
<a href="https://gitea.svitan.dev/Streamer272/svitan.dev" target="_blank" class="underline">here</a>
</p>
</main>
<div class="w-1 h-10 shrink-0"/>
</div>
<meta http-equiv="refresh" content={`0;url=/${defaultLang}/`}/>
</Layout>