Skip to content

Commit a3c99a9

Browse files
committed
Improved About page
1 parent 0cafa5f commit a3c99a9

File tree

4 files changed

+41
-16
lines changed

4 files changed

+41
-16
lines changed

_includes/partials/aside.njk

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ aside {
4848
<div class="sticky-container">
4949

5050
<div class="recents-container aside-content">
51-
<span><b>Recents</b></span>
51+
<span><b>Recent Posts</b></span>
5252
<div>
5353
<nav>
5454
<ol>
@@ -62,16 +62,18 @@ aside {
6262
</div>
6363
</div>
6464

65-
{% set outline = content | toc %}
66-
{% if outline %}
67-
<div class="toc-container">
68-
<div class="toc-sticky aside-content">
69-
<span><b>Table of Contents</b></span>
70-
<div>
71-
{{ outline | safe }}
65+
{% if showTOC %}
66+
{% set outline = content | toc %}
67+
{% if outline %}
68+
<div class="toc-container">
69+
<div class="toc-sticky aside-content">
70+
<span><b>Table of Contents</b></span>
71+
<div>
72+
{{ outline | safe }}
73+
</div>
7274
</div>
7375
</div>
74-
</div>
76+
{% endif %}
7577
{% endif %}
7678

7779
</div>

content/about.md

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,37 @@ eleventyNavigation:
33
key: "About"
44
order: 5
55
showAside: true
6+
showTOC: false
67
---
7-
# About me
8+
# About me and this Blog
89

9-
Hi, I'm Joonatan Uusväli, a software engineer and architect from Tallinn, Estonia. I've spent over a decade designing and building systems that are practical, efficient, and easy to use. My work primarily focuses on backend development, where I use technologies like .NET Core, C#, Blazor, ASP.NET, and PostgreSQL to tackle challenges and create solutions tailored to real-world needs.
10+
I'm Joonatan Uusväli, a software engineer and architect based in **Tallinn, Estonia**. My passion lies in designing and building backend systems that solve real‑world problems with elegance and efficiency. I typically write services in **.NET Core** using **C#**, craft interactive UIs with **Blazor**, and expose **HTTP APIs (REST [or not](blog/2025/20250311_hyper-action-api/index.md))** via **ASP.NET**. When it comes to data storage, I choose the right tool for the task: **PostgreSQL** for its advanced feature set and extensibility, **Microsoft SQL Server** for seamless integration in enterprise Windows environments, and **MariaDB** when I need a drop‑in **MySQL** alternative with modern enhancements. I've also worked with **Oracle DB** and value the insights I gained from that experience.
1011

11-
Over the years, I've worked with a variety of tools and platforms, including cloud-native technologies like Azure and databases such as Microsoft SQL Server, MariaDB, and Oracle DB. I've also explored architectural patterns like Vertical Slice Architecture and implemented CI/CD pipelines to streamline development processes.
12+
## Crafting Modern Architectures
1213

13-
I enjoy contributing to open-source projects and have created libraries such as [C# ULID Implementation](https://github.com/ByteAether/Ulid), a performant library for generating unique identifiers, and [QueryLink](https://github.com/ByteAether/QueryLink), which simplifies how UI components interact with backend data. These projects reflect my focus on building tools that improve efficiency and address everyday developer challenges.
14+
Every project begins with a careful understanding of its domain and the challenges it poses. I frequently turn to **Vertical Slice Architecture** as a way to decompose complex systems into focused, end‑to‑end feature slices—each slice encapsulates its own API, data access, business logic, and UI contract, making development, testing, and deployment more manageable. Yet VSA is just one tool in my architectural toolbox. I also draw on **Domain‑Driven Design** to model rich business domains, **CQRS** when separation of reads and writes brings clarity and scale, and **Ports & Adapters (Hexagonal Architecture)** to isolate core logic from external dependencies. In fact, VSA can be applied within these broader architectures, helping to keep even the largest systems comprehensible and adaptable. To ensure safe, fast delivery, I build CI/CD pipelines (using **GitHub Actions** or **Azure DevOps**) that run builds, tests, and infrastructure changes on every commit. In cloud‑native scenarios, I leverage **Azure**'s managed services, container orchestration, and built‑in observability to deliver resilient, scalable applications.
1415

15-
Beyond backend development, I have a strong interest in embedded systems. I enjoy working with microcontrollers like ESP32, STM32, and AVR, using languages like C and C++ alongside tools like FreeRTOS. This hands-on work with hardware complements my software expertise and brings a fresh perspective to problem-solving.
16+
## Open‑Source Libraries
1617

17-
When I'm not writing code, I enjoy tinkering with new ideas, exploring emerging technologies, and finding ways to simplify complex systems. If you're curious about my work or want to connect, feel free to check out my [GitHub](https://github.com/ByteAether) or [LinkedIn](https://www.linkedin.com/in/joonatan-uusvali).
18+
My three flagship libraries emerged from many years of hands‑on experience with complex projects, where the same challenges kept popping up. I decided to solve these common problems once and for all by packaging robust, reusable solutions:
19+
20+
**[ByteAether.Ulid](/series/byteaether-ulid/)** ([GitHub](https://github.com/ByteAether/Ulid))
21+
A high‑performance C# implementation of [ULID—Universally Unique Lexicographically Sortable Identifiers](https://github.com/ulid/spec). Designed for scenarios where sortable, timestamp‑encoded IDs improve indexing, logging, and sharding, this library delivers collision‑resistant IDs with minimal overhead.
22+
23+
**[ByteAether.QueryLink](/series/byteaether-querylink/)** ([GitHub](https://github.com/ByteAether/QueryLink))
24+
Bridges UI components and backend data through type‑safe, `IQueryable`‑driven queries. QueryLink turns your LINQ expressions into HTTP‑friendly endpoints and stubs, eliminating boilerplate and ensuring compile‑time safety across the full stack.
25+
26+
**[ByteAether.WeakEvent](/series/byteaether-weakevent/)** ([GitHub](https://github.com/ByteAether/WeakEvent))
27+
Addresses the [.NET event subscription problem](https://learn.microsoft.com/en-us/dotnet/desktop/wpf/events/weak-event-patterns) by holding only weak references to handlers. Subscribers can be garbage‑collected naturally, preventing subtle memory leaks and “zombie” objects in long‑running applications.
28+
29+
## Embedded Systems and Beyond
30+
31+
While much of my work resides in the cloud, I thrive on low‑level tinkering. I've built firmware in **C** and **C++** for microcontrollers such as the **ESP32**, **STM32**, and classic **AVR** chips, often running **FreeRTOS**. Prototyping sensor networks or real‑time control loops reminds me of the constrained‑environment lessons that shape every robust server‑side solution I create.
32+
33+
## Philosophy and Outlook
34+
35+
At the heart of my approach is **elegance in code**—an equilibrium of performance, observability, maintainability, and ease of onboarding. Chasing raw performance at the expense of clarity leads to brittle, unmanageable systems; optimizing only for one metric can bloat or fragment your codebase. True elegance emerges when those qualities harmonize into a codebase that is efficient, transparent, and a joy for teams to grow with. I bring deep familiarity with architectural principles like Domain‑Driven Design, CQRS, and Ports & Adapters, and I remain eager to embrace whatever new paradigms and innovations the future holds—from the next wave of .NET features to emerging patterns in distributed systems.
36+
37+
## Let's Connect
38+
39+
All my public projects live on [GitHub](https://github.com/ByteAether). If you'd like to discuss architecture, open source, embedded systems, or simply swap ideas, reach out on [LinkedIn](https://www.linkedin.com/in/joonatan-uusvali/). I'm always excited to collaborate and learn together.

content/blog/blog.11tydata.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export default {
88
],
99
"layout": "layouts/post.njk",
1010
"showAside": true,
11+
"showTOC": true,
1112
"showComments": true,
1213
"eleventyComputed": {
1314
"imageUrl": data => headerImageUrl(data),

content/index.njk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ canonical: /
2626
<h1>Welcome to ByteAether!</h1>
2727
<p>Welcome to ByteAether, a space where technology meets curiosity. Whether you're here to explore the latest in .NET and C# development, deep-dive into the technical nuances of software engineering, or keep up with the newest releases from our open-source projects, you've come to the right place. ByteAether is more than just a blog - it's a gateway to tools, insights, and discussions for developers of all levels.</p>
2828

29-
<p>Here, you'll find a mix of release announcements for our NuGet packages, technical explorations of problem-solving strategies, and practical tips to enhance your coding workflow. If you're curious about the person behind ByteAether, feel free to visit the <a href="/about">About Me</a> section, where I share more about my journey, passions, and the work I do. Thanks for stopping by - happy reading and coding!</p>
29+
<p>Here, you'll find a mix of release announcements for our NuGet packages, technical explorations of problem-solving strategies, and practical tips to enhance your coding workflow. If you're curious about the person behind ByteAether, feel free to visit the <a href="/about">About</a> section, where I share more about my journey, passions, and the work I do. Thanks for stopping by - happy reading and coding!</p>
3030
{% endif %}
3131

3232
<h1>

0 commit comments

Comments
 (0)