new text adn interests page

This commit is contained in:
samantha42
2026-09-10 12:17:56 +02:00
parent 796bf7dd64
commit 8b2e72d245
4 changed files with 109 additions and 196 deletions
-56
View File
@@ -1,56 +0,0 @@
{{define "nav"}}
{{end}}
{{define "body"}}
<section id="automation">
<div class="page-header">
<h2 class="page-title">Technical Tools & Automation</h2>
<span class="page-sub">engineering/programing</span>
</div>
<div class="exp-grid">
<p class="exp-body">
The task here is simple: to reduce work, it's a simple investment. The choice of picking the correct
bottleneck is as important as the tool itself, as this gives it use. If it's never used, it never creates
value. The same goes for uptime, it's important that stability is almost perfect, as downtime undermines
the utility of having the tool. Remember that making and using a tool also creates debt for future
maintenance of the tool.
<br>
To adhere to this, I often choose Golang or Python as they are cheap to maintain. Golang has good
stability because it is easy to code and compile checks give early error detection. A word of caution on
AI generated tools: while they are cheap to make, the maintenance debt grows exponentially, as the code is
often poorly understood by the team and difficult to reason about over time.
</p>
<div class="exp-card" >
<div class="exp-header">
<span class="exp-title">Portfolio Engine</span>
</div>
<p class="exp-body">A lightweight portfolio and financial data backend written in Go. Tracks companies,
currencies, revenue reports, and trades across configurable time periods — replacing spreadsheets with a
proper database, REST API, and interactive shell.</p>
<span class="exp-title">Roadmap</span>
<ul style="padding: 20px;">
<li class="exp-body">Price update endpoint</li>
<li class="exp-body">Multi-currency conversion</li>
<li class="exp-body">Frontend dashboard</li>
<li class="exp-body">Shares outstanding history database table</li>
<li class="exp-body">Earnings per share (EPS) based on shares owned</li>
<li class="exp-body">First-In, First-Out (FIFO) realized gains</li>
<li class="exp-body">Dividends earned and related taxes</li>
<li class="exp-body">Total tax obligations</li>
</ul>
<a class="outlink" href="https://git.samantha42.xyz/samantha/Portfolio-Engine">Git repo</a>
</div>
<div class="exp-card">
<div class="exp-header">
<span class="exp-title">Accounting Management</span>
</div>
<p class="exp-body">
A lightweight, SQL-backed, web-based CLI system designed to track assets and liabilities. The goal is to
provide a simple, fast, and scalable financial tracking tool that can grow from personal use to more
advanced scenarios.</p>
</div>
</div>
</section>
{{end}}
+31 -11
View File
@@ -52,18 +52,38 @@
</p>
</div>
<br>
<div class="exp-flex">
<p class="exp-body">I love my custom Linux setup. I use Hyprland, which automatically arranges app windows
on my screen so everything stays organized without dragging things around. I also use Quickshell, which
lets me customize menus, shortcuts, and system controls to work exactly how I want.
My system is based on Arch Linux or Manjaro Linux, which are versions of Linux that give you more
control and customization than a typical computer setup. The result is a clean, fast, and super
efficient desktop that's hard to go back from.
<a class="outlink" href="https://git.samantha42.xyz/samantha/dotfiles">Git repo</a>
<p class="exp-body">
Programming can be a chore, but for me it's a source of joy. It's something I do as a hobby, and I
don't use LLMs much. It's about having fun and making a fool of yourself. It's not about how good it is,
in this case, I'd rather just listen to music and drink a cup of tea. I enjoy the struggle to debug, the small beauty in understanding why a bug was there in the first place.
</p>
<img src="/static/images/sql.png" style="height: 400px; align-self: center;">
</div>
</section>
<img src="/static/images/sql.png" style="width: 70%; padding: 10px 15% 10px; align-self: center;">
<p class="exp-body">
I chose SQLite3 because it's a SQL-based database that doesn't need a live server, just a single db file.
The idea is to use a monolith to control the book records, so no collisions should happen. The IDs and other
fields are kept very basic because of SQLite's minimal type support.
Entries are ints and strings. The history of changes, saved as events, is stored as blobs, since retrieving
these should only happen on rare occasions. Mostly the resulting changes are saved, while the more granular
event-by-business-action log is timestamped, and its id relates to the resulting entries (account movements).
</p>
<img src="/static/images/directory.png" style="width: 60%; padding: 10px 15% 10px; align-self: center;">
<p class="exp-body">
Space can be a concern, so I save attachments in a compressed format. By separating attachments, a linked
directory could be saved on a hard disk drive instead, as these will probably almost never get accessed after
saving. Only occasionally in an audit scenario.
<br>
The filename is the id from the db. This way, if there's ever a corruption scare, I could read the db as a
text file and find the metadata from the id. It also makes naming irrelevant, so filenames can't collide.
</p>
</section>
<section id="product">
<div class="section-head">
+76 -127
View File
@@ -1,140 +1,89 @@
{{define "nav"}}
<div>
<p class="sidebar-label">pages</p>
<div class="sidebar-links">
<a href="/automation">automation</a>
<a href="/research">research</a>
<a href="/bookkeeping">bookkeeping</a>
</div>
</div>
<div>
<p class="sidebar-label">subjects</p>
<div class="skill-list">
<div class="skill-item">movies</div>
<div class="skill-item">games</div>
<div class="skill-item">linux</div>
<div class="skill-item">board games</div>
</div>
</div>
<p class="sidebar-label">subjects</p>
<div class="skill-list">
<div class="skill-item">movies</div>
<div class="skill-item">music</div>
<div class="skill-item">games</div>
<div class="skill-item">linux</div>
<div class="skill-item">git</div>
<div class="skill-item">programing</div>
</div>
</div>
{{end}}
{{define "body"}}
<section id="interests">
<div id="interests-body" >
<span class="matrix-hidden" id="matrix-hidden">
Boy: Do not try and bend the spoon. That's impossible. Instead... only try to realize the truth.
<br>
Neo: What truth?
<br>
Boy: There is no spoon.
</span>
<div class="section-head">
<h2>Movie/Show Top list</h2>
</div>
<div class="toplist-group">
<h3>Top 5 Movies</h3>
<div class="toplist-body">
<div class="poster-grid">
<div class="poster-item posterhover" onclick="bladerunnerClick()">
<img src="/static/posters/bladerunner2049.jpg" alt="Blade Runner 2049">
<p>Blade Runner 2049</p>
</div>
<div class="poster-item posterhover" onclick="cureClick()">
<img src="/static/posters/AcureForWellness.jpg" alt="A Cure of Wellness">
<p>A Cure of Wellness</p>
</div>
<div class="poster-item posterhover" onclick="matrixClick()">
<img src="/static/posters/matrix.jpg" alt="matrix">
<p>The Matrix</p>
</div>
<div class="poster-item posterhover" onclick="draculaClick()">
<img src="/static/posters/Dracula.webp" alt="Dracula: A Love Tale">
<p>Dracula: A Love Tale</p>
</div>
<div class="poster-item posterhover" onclick="dragonTypewriterClick()">
<img src="/static/posters/TheGirlwiththeDragonTattoo.webp" alt="Girl with a Dragon Tattoos">
<p>Girl with a Dragon Tattoo</p>
</div>
</div>
</div>
<div id="interests-body">
<div class="toplist-group">
<h3>Top 5 Shows</h3>
<div class="toplist-body">
<div class="poster-grid">
<div class="poster-item">
<img src="/static/posters/foundation.jpg" alt="foundation">
<p>Foundation</p>
</div>
<div class="poster-item">
<img src="/static/posters/Chernobyl.webp" alt="Chernobyl">
<p>Chernobyl</p>
</div>
<div class="poster-item">
<img src="/static/posters/Breaking Bad.webp" alt="Breaking Bad">
<p>Breaking Bad</p>
</div>
<div class="poster-item">
<img src="/static/posters/Avatar.webp" alt="Avatar: The Last Airbender">
<p>Avatar: The Last Airbender</p>
</div>
<div class="poster-item">
<img src="/static/posters/Adolescence.webp" alt="Adolescence">
<p>Adolescence</p>
</div>
</div>
</div>
</div>
<div class="section-head">
<h2>Lunix rice</h2>
</div>
<div class="exp-flex">
<div class="section-head">
<h2>Link Tree</h2>
</div>
<div class="exp-grid">
<div class="exp-card link" onclick="window.location.href='https://letterboxd.com/samantha42/'">
<div class="exp-header">
<span class="exp-title">Movies</span>
<span class="exp-tag">LetterBoxed</span>
</div>
<p class="exp-body">film reviews/ratings and watchlist</p>
</div>
<p class="exp-body">I love my custom Linux setup. I use Hyprland, which automatically arranges app windows
<div class="exp-card link" onclick="window.location.href='https://git.samantha42.xyz/samantha'">
<div class="exp-header">
<span class="exp-title">Git repo</span>
<span class="exp-tag">Gitea profile</span>
</div>
<p class="exp-body">Personal public repos.</p>
</div>
<div class="exp-card link" onclick="window.location.href='https://steamcommunity.com/id/samantha42/'">
<div class="exp-header">
<span class="exp-title">Games</span>
<span class="exp-tag">Steam</span>
</div>
<p class="exp-body">games and inventory</p>
</div>
</div>
</div>
<br>
<div class="section-head">
<h2>Lunix rice</h2>
</div>
<p class="exp-body">I love my custom Linux setup. I use Hyprland, which automatically arranges app windows
on my screen so everything stays organized without dragging things around. I also use Quickshell, which
lets me customize menus, shortcuts, and system controls to work exactly how I want.
My system is based on Arch Linux or Manjaro Linux, which are versions of Linux that give you more
control and customization than a typical computer setup. The result is a clean, fast, and super
efficient desktop thats hard to go back from.
<a class="outlink" href="https://git.samantha42.xyz/samantha/dotfiles">Git repo</a>
</p>
<img src="/static/images/rice.png" style="width: 400px; align-self: center;">
</div>
<div class="section-head">
<h2>programing</h2>
</div>
<div class="exp-flex">
<img src="/static/images/program.png" style="height: 500px;" alt="program">
<div>
<p class="exp-body">
Programming can be a task, but for me it's a source of joy. This is something I do as a hobby, and I
don't use AI much. It's about having fun and making a fool of yourself. It's not about how good it is,
in this case, I'd rather just listen to music and drink a cup of tea. I enjoy the struggle to debug, the
beauty in understanding why a bug is there to begin with.
</p>
<br>
<p class="exp-body">
The text editor I use most is VS Code, but I love the Neovim setup as it enables me to code on a
low-level system without a desktop environment being necessary. I do most of my coding on my own
desktop, synced with Git to other systems, like the server that hosts this website, which I have built
myself. The creation of this website is more of a fun dumb activity for me... go click on one of the
movie posters and see.
</p>
</div>
</div>
<br>
<div class="section-head">
<h2>Games</h2>
</div>
<p class="exp-body" >Game i will play in my free time to wind down.</p>
<div hx-get="/static/components/games.html" hx-trigger="load" hx-swap="outerHTML">
<span class="spinner">Loading stats…</span>
</div>
</div>
</section>
efficient desktop that's hard to go back from.
<a class="outlink" href="https://git.samantha42.xyz/samantha/dotfiles">
<button style="background: var(--surface);">Git repo</button>
</a>
</p>
<img src="/static/images/rice.png" style="width: 95%; align-self: center;">
<div class="section-head">
<h2>programing</h2>
</div>
<p class="exp-body">
Programming can be a chore, but for me it's a source of joy. It's something I do as a hobby, and I
don't use LLMs much. It's about having fun and making a fool of yourself. It's not about how good it is,
in this case, I'd rather just listen to music and drink a cup of tea. I enjoy the struggle to debug, the small beauty in understanding why a bug was there in the first place.
</p>
<br>
<div class="section-head">
<h2>Music playlists</h2>
</div>
<iframe data-testid="embed-iframe" style="border-radius:12px" src="https://open.spotify.com/embed/playlist/6cp6fCnsOaNd2WDTPRuOR1?utm_source=generator" width="100%" height="200" frameBorder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe>
<iframe data-testid="embed-iframe" style="border-radius:12px" src="https://open.spotify.com/embed/playlist/4aGMTgl6eNMspp37jrQ799?utm_source=generator" width="100%" height="200" frameBorder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe>
<iframe data-testid="embed-iframe" style="border-radius:12px" src="https://open.spotify.com/embed/playlist/4yxijQILgLkF0UDCUDAauc?utm_source=generator" width="100%" height="200" frameBorder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe>
</section>
{{end}}
Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB