<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Smolka</title><link>https://smolka.dev/</link><description>Recent content on Smolka</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 07 May 2026 19:11:03 +0200</lastBuildDate><atom:link href="https://smolka.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>White / Blue / Silver</title><link>https://smolka.dev/posts/white-blue-silver/</link><pubDate>Thu, 07 May 2026 19:11:03 +0200</pubDate><guid>https://smolka.dev/posts/white-blue-silver/</guid><description>&lt;p>I went down the Japanese knife rabbit hole over Christmas. Getting into something new can feel quite overwhelming, especially for me. I tend to skip the Dunning-Kruger effect and immediately notice that I know nothing about the topic and that it is infinitely complex. Even in this post, there are some details I skip because they are too difficult for my liking &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>.&lt;/p></description></item><item><title>Gyotaku</title><link>https://smolka.dev/posts/gyotaku/</link><pubDate>Mon, 20 Apr 2026 17:35:26 +0200</pubDate><guid>https://smolka.dev/posts/gyotaku/</guid><description>&lt;p>My father was an angler. He frequented the ponds and rivers near us and, on occasion, went night, ice and sometimes even deep-sea fishing. Few foods are comparable to the taste of fresh and smoked fish, especially eel. Unfortunately, they are a pain in the ass to catch. You sit still the entire night, eat canned ravioli and return home empty-handed if unlucky. I gave it a fair chance back then, but I was way too impatient.&lt;/p></description></item><item><title>workin²</title><link>https://smolka.dev/posts/workin-2/</link><pubDate>Sun, 28 Dec 2025 16:42:00 +0100</pubDate><guid>https://smolka.dev/posts/workin-2/</guid><description>&lt;p>Today, workin celebrates its &lt;a
 href="https://github.com/jsmolka/workin/releases/tag/1.0.0"
 target="_blank"
 
>second birthday&lt;/a> and the release of &lt;a
 href="https://github.com/jsmolka/workin/releases/tag/2.0.0"
 target="_blank"
 
>version 2.0&lt;/a>. Writing software for oneself and using it extensively feels like a rare thing in software engineering. It begins with &lt;code>for&lt;/code> loops and calculators in school, advances to sorting algorithms in university and ends with REST applications for work. At no point are you creating something useful for &lt;strong>yourself&lt;/strong>.&lt;/p></description></item><item><title>10,000 Tasks Later</title><link>https://smolka.dev/posts/10000-tasks-later/</link><pubDate>Fri, 21 Nov 2025 13:29:03 +0100</pubDate><guid>https://smolka.dev/posts/10000-tasks-later/</guid><description>&lt;p>The year of high numbers concludes with a follow-up post to my &lt;a
 href="https://smolka.dev/posts/5000-tasks-later/"
 
 
>2024 Todoist review&lt;/a>. The app continues to serve as my second brain and eliminates the mental load of remembering tasks. Despite being an easy recommendation for everybody searching for a productivity tool, I have noticed some shortcomings that I want to discuss here.&lt;/p></description></item><item><title>Horizons</title><link>https://smolka.dev/posts/horizons/</link><pubDate>Sun, 20 Jul 2025 19:55:00 +0200</pubDate><guid>https://smolka.dev/posts/horizons/</guid><description>&lt;blockquote>
&lt;p>In a restless search for new opportunities and new ways of living&lt;br>
The mystery and the promise of distant horizons&lt;br>
Always have called men forward&lt;br>&lt;/p></description></item><item><title>10,000 Hamburgers</title><link>https://smolka.dev/posts/10000-hamburgers/</link><pubDate>Fri, 23 May 2025 19:30:00 +0200</pubDate><guid>https://smolka.dev/posts/10000-hamburgers/</guid><description>&lt;p>I started cycling back in mid-2020. It wasn't due to COVID-19, like for many others. I finished my bachelor's degree in October the year before and got myself a job. I had the income of a junior software developer and the lifestyle of a student. For the first time in my life, I could afford nice things: a larger apartment closer to work and a shiny new bike worth riding.&lt;/p></description></item><item><title>The Bottle</title><link>https://smolka.dev/posts/the-bottle/</link><pubDate>Sun, 09 Feb 2025 17:12:00 +0100</pubDate><guid>https://smolka.dev/posts/the-bottle/</guid><description>&lt;p>The water bottle is an essential cycling accessory. It comes in a more or less standardized shape and can hold anything from 500 to 1000 ml of liquid, usually a mixture of water, carbohydrates, electrolytes and flavorings. Athletes new to the sport might disregard the importance of the latter and go for a ride with just plain water. If they are unlucky, they will &lt;a
 href="https://en.wikipedia.org/wiki/Hitting_the_wall"
 target="_blank"
 
>hit the wall&lt;/a> a few hours in &amp;mdash; the so-called &lt;strong>bonk&lt;/strong> &amp;mdash; and crawl to the next cafe, supermarket or gas station to consume sweet sustenance.&lt;/p></description></item><item><title>5000 Tasks Later</title><link>https://smolka.dev/posts/5000-tasks-later/</link><pubDate>Wed, 11 Dec 2024 13:43:15 +0100</pubDate><guid>https://smolka.dev/posts/5000-tasks-later/</guid><description>&lt;p>Organizing my thoughts and shifting mental load to a different medium were both part of my &lt;a
 href="https://smolka.dev/posts/year-of"
 
 
>yearly theme&lt;/a>. I wanted to move away from Google's Notes app because it couldn't keep up with my growing demand. My brain thinks in lists, and after trying a few apps, I ended up with probably the most popular one of them all: Todoist, which has been my faithful companion ever since.&lt;/p></description></item><item><title>Pixel Soup</title><link>https://smolka.dev/posts/pixel-soup/</link><pubDate>Fri, 31 May 2024 09:38:15 +0200</pubDate><guid>https://smolka.dev/posts/pixel-soup/</guid><description>&lt;p>I published the last &lt;a
 href="https://smolka.dev/posts/christmas-spirit/"
 
 
>post&lt;/a> about my NES emulator spirit in December 2022. After that, work continued, the progress became visible, and I created the draft of this post a few months later. Now, over a year has passed and nothing has changed. I can't remember why I stopped, but I hate unfinished projects. It shouldn't take too long to finish, considering my previous work. Let's see if I can find the time and motivation to continue.&lt;/p></description></item><item><title>Restless Mind</title><link>https://smolka.dev/posts/restless-mind/</link><pubDate>Tue, 05 Mar 2024 21:00:00 +0100</pubDate><guid>https://smolka.dev/posts/restless-mind/</guid><description>&lt;p>I tend to go through periods of obsessive behavior &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>. Once I'm focused on a particular thing, something that really captivates my imagination, it's hard to concentrate on anything else. A recent example of this is &lt;a
 href="https://smolka.dev/projects/#workin"
 
 
>workin&lt;/a>. I had to take a week off work to finish it, because I couldn't concentrate on the task at hand. No matter what I had in front of me, my mind would just slowly drift back to it. Don't get me wrong, I love my &lt;a
 href="https://smolka.dev/projects/"
 
 
>side projects&lt;/a>, but I wish they weren't so &lt;strong>intense&lt;/strong>.&lt;/p></description></item><item><title>Year of ...?</title><link>https://smolka.dev/posts/year-of/</link><pubDate>Fri, 12 Jan 2024 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/year-of/</guid><description>&lt;p>I listened to lots of &lt;a
 href="https://www.youtube.com/@cortexFM"
 target="_blank"
 
>Cortex podcast&lt;/a> episodes over the last months. In some of them, the hosts &lt;a
 href="https://www.youtube.com/@CGPGrey"
 target="_blank"
 
>CGP Grey&lt;/a> and Myke Hurley discuss their &lt;a
 href="https://www.youtube.com/watch?v=NVGuFdX5guE"
 target="_blank"
 
>yearly themes&lt;/a>: year of refinement, year of order, year of novelty. A theme is different from a New Year's resolution. It's something broad that guides your decision-making. Something you can't fail at. Something that steers your life in a positive direction.&lt;/p></description></item><item><title>Nothing Newt</title><link>https://smolka.dev/posts/nothing-newt/</link><pubDate>Thu, 28 Dec 2023 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/nothing-newt/</guid><description>&lt;p>During the process of designing a new logo, I also stumbled across the idea of creating one featuring my favorite animal: the alpine newt &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>. I used to hunt these majestic creatures in a small pond at the edge of my hometown. I went there for frogs, which was hard enough, but every once in a while, I had a small blue and orange jackpot in the landing net.&lt;/p></description></item><item><title>Procrastination Project</title><link>https://smolka.dev/posts/procrastination-project/</link><pubDate>Tue, 19 Dec 2023 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/procrastination-project/</guid><description>&lt;p>If I had to describe this blog in two words, it would be time sink. It went through many design iterations and each time I thought: "This one looks nice. It can stay like that forever". But there was always something I didn't like. Make it more minimalistic. Make it more efficient. Add a feature here. Change a minor thing there. It became the thing I worked on when I had nothing to do. It became the &lt;strong>procrastination project&lt;/strong>.&lt;/p></description></item><item><title>workin</title><link>https://smolka.dev/posts/workin/</link><pubDate>Mon, 20 Nov 2023 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/workin/</guid><description>&lt;p>Despite their name, smart trainers are pretty dumb out of the box. To get the most out of them, you need an external service like &lt;a
 href="https://zwift.com/"
 target="_blank"
 
>Zwift&lt;/a> or &lt;a
 href="https://www.trainerroad.com/"
 target="_blank"
 
>TrainerRoad&lt;/a> to control the target power. These services are usually subscription-based and cost around 15$ per month. For that price, you can choose between watching a road race video, playing a video game or staring at blue bars &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>.&lt;/p></description></item><item><title>Bitfield</title><link>https://smolka.dev/posts/bitfield/</link><pubDate>Sun, 29 Jan 2023 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/bitfield/</guid><description>&lt;p>A lot of emulation comes down to bit manipulation. Consoles are nothing more than microcontrollers designed to be as efficient as possible without wasting precious memory. Memory-mapped I/O registers are the norm and control everything from the pixels you see on the screen to the samples that come out of the speakers. A typical data structure to deal with that kind of data is a bitfield, which Rust doesn't support &lt;a
 href="https://github.com/rust-lang/rfcs/pull/3113"
 target="_blank"
 
>natively&lt;/a>.&lt;/p></description></item><item><title>Christmas Spirit</title><link>https://smolka.dev/posts/christmas-spirit/</link><pubDate>Wed, 28 Dec 2022 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/christmas-spirit/</guid><description>&lt;p>The transition time between two side projects is something I like a lot. There is no place for the mind to wander to during downtime, no sudden ideas in the bed that prevent you from sleeping and no frustration because something doesn't work even though it should &amp;mdash; I don't make mistakes. All of that sounds horrible for something you'd do in your free time, but the dopamine hits when you pass the first test, see the first pixel and get utterly blasted by the first audio sample, make more than up for it. Nostalgia, especially in emulation, is one hell of a drug.&lt;/p></description></item><item><title>A New Hope</title><link>https://smolka.dev/posts/a-new-hope/</link><pubDate>Sat, 29 Oct 2022 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/a-new-hope/</guid><description>&lt;p>The &lt;a
 href="https://smolka.dev/posts/the-slow-finale/"
 
 
>previous post&lt;/a> was meant to mark the end of sprite and drizzle development. I achieved everything I ever wanted: a working programming language and a program large enough to prove its maturity to handle medium-scale problems. But some part of me just couldn't let it go. I love efficient programs, and the fact that sprite could not run games at native speed bothered me, so I decided to make one final push toward performance.&lt;/p></description></item><item><title>The Slow Finale</title><link>https://smolka.dev/posts/the-slow-finale/</link><pubDate>Sat, 08 Oct 2022 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/the-slow-finale/</guid><description>&lt;p>Hello ladies and gentlemen! Please take a seat and enjoy the finale of the series nobody asked for: yet another Game Boy emulator. Over the course of the &lt;a
 href="https://github.com/jsmolka/sprite/compare/0.3...0.4"
 target="_blank"
 
>last few episodes&lt;/a>, we managed to implement a stunning three of eight relevant memory banking controllers. That allowed us to load ROMs with a size of up to two megabytes and increased our catalog of potential commercial games to more than two. Technology is truly incredible!&lt;/p></description></item><item><title>Four Shades of Green</title><link>https://smolka.dev/posts/four-shades-of-green/</link><pubDate>Sat, 17 Sep 2022 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/four-shades-of-green/</guid><description>&lt;p>Progress over the last months has been quite slow. I focused on improving my performance on the bike and took big strides in that regard. I found some time to tinker on sprite during my vacation. With a working CPU implementation in place, there isn't much left to do anyway. I had to fix a few timing-related problems and implement interrupts to pass the &lt;a
 href="https://github.com/retrio/gb-test-roms"
 target="_blank"
 
>blargg tests&lt;/a> I'm interested in. One nasty thing was a &lt;a
 href="https://github.com/jsmolka/drizzle/commit/acfb44b259298132a40482f15fcb9ff20e6f73be"
 target="_blank"
 
>compiler bug&lt;/a> in drizzle, which caused some variables to be popped off the stack early and resulted in undefined behavior.&lt;/p></description></item><item><title>Interpreterception</title><link>https://smolka.dev/posts/interpreterception/</link><pubDate>Sat, 09 Jul 2022 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/interpreterception/</guid><description>&lt;p>The next project in the pipeline is a Game Boy emulator written in my own programming language. An interpreter within an interpreter and a stress test for the virtual machine and its functionality. It also opens the door for future optimizations because those are quite hard to do without a sizable program to test them on.&lt;/p></description></item><item><title>Emulation Ready</title><link>https://smolka.dev/posts/emulation-ready/</link><pubDate>Fri, 01 Jul 2022 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/emulation-ready/</guid><description>&lt;p>The latest version of drizzle adds the remaining language features required to implement a basic emulator. That includes a &lt;code>switch&lt;/code> statement to run the typical main loop:&lt;/p></description></item><item><title>Real Language Features</title><link>https://smolka.dev/posts/real-language-features/</link><pubDate>Sat, 04 Jun 2022 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/real-language-features/</guid><description>&lt;p>Following some weeks of pause and slow progress, I finally found the motivation to work on the remaining language features required to implement a Game Boy emulator in my own programming language.&lt;/p></description></item><item><title>Barely Functional</title><link>https://smolka.dev/posts/barely-functional/</link><pubDate>Tue, 01 Mar 2022 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/barely-functional/</guid><description>&lt;p>drizzle now supports functions and starts to look like a proper programming language. Its syntax is similar to an unknown &lt;a
 href="https://www.python.org/"
 target="_blank"
 
>snake-like language&lt;/a> used in niche fields like machine learning. Keeping in line with that theme, here is how a function is defined:&lt;/p></description></item><item><title>Abstract Syntax Tree</title><link>https://smolka.dev/posts/abstract-syntax-tree/</link><pubDate>Sat, 08 Jan 2022 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/abstract-syntax-tree/</guid><description>&lt;p>drizzle started with a single-pass compiler. It took a stream of tokens and converted them into bytecode. There was no intermediate representation and to be honest: there was no need for it. A single-pass compiler is sufficient for a programming language. Just take a look at &lt;a
 href="https://www.lua.org/"
 target="_blank"
 
>Lua&lt;/a>: it's small, simple and has fast startup times.&lt;/p></description></item><item><title>Signs of Life</title><link>https://smolka.dev/posts/signs-of-life/</link><pubDate>Sat, 09 Oct 2021 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/signs-of-life/</guid><description>&lt;p>I made some good progress with drizzle. It's now smart enough to understand expressions, statements and control flow. It's barebones but functional. The lack of shorthand operators results in more typing than necessary, but that's something I'll fix in the future.&lt;/p></description></item><item><title>A Glorified Calculator</title><link>https://smolka.dev/posts/a-glorified-calculator/</link><pubDate>Mon, 20 Sep 2021 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/a-glorified-calculator/</guid><description>&lt;p>Creating a programming language has been on my mind for a while, and the paperback release of &lt;a
 href="https://www.craftinginterpreters.com/"
 target="_blank"
 
>Crafting Interpreters&lt;/a>, as well as the 1.1 release of eggvance, finally gave me the time and motivation to start working on it. I didn't know much about grammar or parsing back then, but I know at least something now.&lt;/p></description></item><item><title>Progress Report #7</title><link>https://smolka.dev/posts/progress-report-7/</link><pubDate>Tue, 11 May 2021 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/progress-report-7/</guid><description>&lt;p>These were some productive weeks for me. I made visible, audible and technical progress, which pushed the project over the finish line. I never intended for this emulator to be good. Hell, I didn't even know if I could do it at all. I started working on it with the expectation of running Pokémon Emerald someday. The current version blows this expectation out of the window to the point that you could actually recommend it to another person. So let's go over the final improvements of version 1.0.&lt;/p></description></item><item><title>Progress Report #6</title><link>https://smolka.dev/posts/progress-report-6/</link><pubDate>Wed, 03 Feb 2021 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/progress-report-6/</guid><description>&lt;p>2020 came to an end and left me with an output of two progress reports and a simple, short release note. That's less than I was hoping for, but most time this year went into improving the codebase and some performance tinkering for personal pleasure. In my defense, the last progress report had a much higher quality than the ones before, and I'd like to keep it this way!&lt;/p></description></item><item><title>Release 0.2</title><link>https://smolka.dev/posts/release-0.2/</link><pubDate>Mon, 02 Nov 2020 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/release-0.2/</guid><description>&lt;p>I finally reached a point in development where I was not utterly discontent with the code I wrote and decided to release the second version of my emulator. It includes all the changes mentioned in previous progress reports as well as some other features like optional color correction. Binaries can be found on &lt;a
 href="https://github.com/jsmolka/eggvance/releases"
 target="_blank"
 
>GitHub&lt;/a>.&lt;/p></description></item><item><title>Progress Report #5</title><link>https://smolka.dev/posts/progress-report-5/</link><pubDate>Sat, 06 Jun 2020 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/progress-report-5/</guid><description>&lt;p>Over four months have passed since the last progress report. During that period, I invested a lot of time into cleaning up the current codebase, improving performance and adding some nice features. Unfortunately, there were no notable fixes to broken games so please don't expect nice screenshots with before/after comparisons.&lt;/p></description></item><item><title>Progress Report #4</title><link>https://smolka.dev/posts/progress-report-4/</link><pubDate>Tue, 07 Jan 2020 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/progress-report-4/</guid><description>&lt;p>Hello there! It has been quite a while since the last progress report, two months to be exact. Development of the emulator has slowed down a little during that time because I started working full-time. Apart from cleaning up the codebase, I also fixed and implemented some things that might be of interest to some people.&lt;/p></description></item><item><title>Progress Report #3</title><link>https://smolka.dev/posts/progress-report-3/</link><pubDate>Sun, 03 Nov 2019 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/progress-report-3/</guid><description>&lt;p>This month in your favorite emulator: a complete rewrite. That's what happens when you aren't satisfied with your project and have a whole month of spare time at your disposal. Some parts have been reused, but almost every area has been improved to some extent, accuracy and performance-wise.&lt;/p></description></item><item><title>Progress Report #2</title><link>https://smolka.dev/posts/progress-report-2/</link><pubDate>Mon, 30 Sep 2019 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/progress-report-2/</guid><description>&lt;p>One month has passed since the last progress report, and I'm back with another one. Most of this month's effort went into accuracy and performance improvements of the pixel processing unit (PPU). Its main purpose is converting data stored in memory like VRAM and object attribute memory (OAM) into pixels on the screen.&lt;/p></description></item><item><title>Progress Report #1</title><link>https://smolka.dev/posts/progress-report-1/</link><pubDate>Sat, 31 Aug 2019 00:00:00 +0000</pubDate><guid>https://smolka.dev/posts/progress-report-1/</guid><description>&lt;p>I finished my introduction project to C++ at the end of last year. Since then, I've read some books and watched a couple of performance-orientated talks about the language, and it really started to grow on me. It is quite versatile and expressive with lots of horrific corners you better stay away from. Mastering this beast seems like an impossible task, but I'll do my best.&lt;/p></description></item><item><title>About</title><link>https://smolka.dev/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://smolka.dev/about/</guid><description>&lt;blockquote>
&lt;p>Living life one obsession at a time.&lt;/p>
&lt;p>&lt;cite>Me&lt;/cite>&lt;/p>&lt;/blockquote>
&lt;p>What's up! I am Julian, a 27-year-old software developer from Leipzig, Germany. In my spare time, I like gaming, &lt;a
 href="https://www.strava.com/athletes/juliansmolka"
 target="_blank"
 
>cycling&lt;/a> and working on &lt;a
 href="https://smolka.dev/projects/"
 
 
>side projects&lt;/a>. That's pretty much all I do actually. Lately, I've focused a lot on &lt;a
 href="https://smolka.dev/tags/emulation/"
 
 
>emulation&lt;/a>, which will probably cover most of this site.&lt;/p></description></item><item><title>Projects</title><link>https://smolka.dev/projects/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://smolka.dev/projects/</guid><description>&lt;h1 id="bottle">&lt;a
 href="#bottle">bottle&lt;/a
>&lt;/h1>
&lt;p>&lt;a
 href="https://github.com/jsmolka/bottle"
 target="_blank"
 
>bottle&lt;/a> is a companion &lt;a
 href="https://bottle.smolka.dev/"
 target="_blank"
 
>web app&lt;/a> for the &lt;a
 href="https://smolka.dev/posts/the-bottle"
 
 
>identically titled post&lt;/a>. It calculates the glucose/fructose ratio, electrolyte contents and osmolarity of a cycling bottle. It also provides reference values to aid evaluation and tries to shed some light on an often overlooked nutrition topic.&lt;/p></description></item></channel></rss>