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}}
+32 -12
View File
@@ -52,18 +52,38 @@
</p> </p>
</div> </div>
<br> <br>
<div class="exp-flex"> <p class="exp-body">
<p class="exp-body">I love my custom Linux setup. I use Hyprland, which automatically arranges app windows Programming can be a chore, but for me it's a source of joy. It's something I do as a hobby, and I
on my screen so everything stays organized without dragging things around. I also use Quickshell, which don't use LLMs much. It's about having fun and making a fool of yourself. It's not about how good it is,
lets me customize menus, shortcuts, and system controls to work exactly how I want. 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.
My system is based on Arch Linux or Manjaro Linux, which are versions of Linux that give you more </p>
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. <img src="/static/images/sql.png" style="width: 70%; padding: 10px 15% 10px; align-self: center;">
<a class="outlink" href="https://git.samantha42.xyz/samantha/dotfiles">Git repo</a> <p class="exp-body">
</p> I chose SQLite3 because it's a SQL-based database that doesn't need a live server, just a single db file.
<img src="/static/images/sql.png" style="height: 400px; align-self: center;"> The idea is to use a monolith to control the book records, so no collisions should happen. The IDs and other
</div> fields are kept very basic because of SQLite's minimal type support.
</section>
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"> <section id="product">
<div class="section-head"> <div class="section-head">
+77 -128
View File
@@ -1,140 +1,89 @@
{{define "nav"}} {{define "nav"}}
<div> <div>
<p class="sidebar-label">pages</p> <p class="sidebar-label">subjects</p>
<div class="sidebar-links"> <div class="skill-list">
<a href="/automation">automation</a> <div class="skill-item">movies</div>
<a href="/research">research</a> <div class="skill-item">music</div>
<a href="/bookkeeping">bookkeeping</a> <div class="skill-item">games</div>
<div class="skill-item">linux</div>
</div> <div class="skill-item">git</div>
</div> <div class="skill-item">programing</div>
</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>
{{end}} {{end}}
{{define "body"}} {{define "body"}}
<section id="interests"> <section id="interests">
<div id="interests-body" > <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 class="toplist-group"> <div class="section-head">
<h3>Top 5 Shows</h3> <h2>Link Tree</h2>
<div class="toplist-body"> </div>
<div class="poster-grid"> <div class="exp-grid">
<div class="poster-item"> <div class="exp-card link" onclick="window.location.href='https://letterboxd.com/samantha42/'">
<img src="/static/posters/foundation.jpg" alt="foundation"> <div class="exp-header">
<p>Foundation</p> <span class="exp-title">Movies</span>
</div> <span class="exp-tag">LetterBoxed</span>
<div class="poster-item"> </div>
<img src="/static/posters/Chernobyl.webp" alt="Chernobyl"> <p class="exp-body">film reviews/ratings and watchlist</p>
<p>Chernobyl</p> </div>
</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">
<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 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. 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 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 control and customization than a typical computer setup. The result is a clean, fast, and super
efficient desktop thats hard to go back from. efficient desktop that's hard to go back from.
<a class="outlink" href="https://git.samantha42.xyz/samantha/dotfiles">Git repo</a> <a class="outlink" href="https://git.samantha42.xyz/samantha/dotfiles">
</p> <button style="background: var(--surface);">Git repo</button>
<img src="/static/images/rice.png" style="width: 400px; align-self: center;"> </a>
</div> </p>
<div class="section-head"> <img src="/static/images/rice.png" style="width: 95%; align-self: center;">
<h2>programing</h2>
</div> <div class="section-head">
<div class="exp-flex"> <h2>programing</h2>
<img src="/static/images/program.png" style="height: 500px;" alt="program"> </div>
<div> <p class="exp-body">
<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
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 LLMs much. It's about having fun and making a fool of yourself. It's not about how good it is,
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 small beauty in understanding why a bug was there in the first place.
in this case, I'd rather just listen to music and drink a cup of tea. I enjoy the struggle to debug, the </p>
beauty in understanding why a bug is there to begin with.
</p> <br>
<br>
<p class="exp-body"> <div class="section-head">
The text editor I use most is VS Code, but I love the Neovim setup as it enables me to code on a <h2>Music playlists</h2>
low-level system without a desktop environment being necessary. I do most of my coding on my own </div>
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 <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>
movie posters and see.
</p> <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>
</div>
</div> <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>
<br>
<div class="section-head"> </section>
<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>
{{end}} {{end}}
Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB