<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>The Cyanotic bytes</title><link>https://otacon.github.io/</link><description>Recent content on The Cyanotic bytes</description><generator>Hugo</generator><language>en-gb</language><lastBuildDate>Thu, 27 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://otacon.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>About</title><link>https://otacon.github.io/about/</link><pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate><guid>https://otacon.github.io/about/</guid><description>&lt;p&gt;I’m Orfeo, a software engineer with a soft spot for elegant systems, weird technical rabbit holes, and code that doesn’t&#10;make future-me angry.&lt;/p&gt;&#10;&lt;p&gt;I take software engineering seriously: architecture, maintainability, performance, good abstractions, boring&#10;reliability [&amp;hellip;] the usual things nobody notices when they work.&lt;/p&gt;&#10;&lt;p&gt;I just don’t think we need to be serious about ourselves all the time.&lt;/p&gt;&#10;&lt;p&gt;This blog is where I write about software, technology, ideas I’m exploring, and the occasional nerdy detour that seemed&#10;like a good use of an evening at the time.&lt;/p&gt;</description></item><item><title>Kassette goes Multiplatform</title><link>https://otacon.github.io/posts/kassette-goes-multiplatform/</link><pubDate>Mon, 24 Aug 2026 08:30:00 +0000</pubDate><guid>https://otacon.github.io/posts/kassette-goes-multiplatform/</guid><description>&lt;p&gt;From the beginning, I wanted Kassette to be multiplatform. An emulator seemed like a suitably unreasonable way to test&#10;that idea.&lt;/p&gt;&#10;&lt;p&gt;So far, though, Kassette has been JVM-only. And an emulator is not exactly the easiest application to make&#10;multiplatform: it needs sound, GPU rendering, UI, keyboard input, controller support, and all sorts of platform-specific&#10;integrations. So, could Kassette actually run across platforms?&lt;/p&gt;&#10;&lt;p&gt;I decided to find out by targeting desktop and WebAssembly. WASM was particularly interesting because, if it worked,&#10;Kassette could run directly in the browser. No installation, no setup, no executable downloaded from some random person&#10;on the internet. Just open a page and play.&lt;/p&gt;</description></item><item><title>The Post-MVP of Kassette</title><link>https://otacon.github.io/posts/the-post-mvp-of-kassette/</link><pubDate>Thu, 13 Aug 2026 08:30:00 +0000</pubDate><guid>https://otacon.github.io/posts/the-post-mvp-of-kassette/</guid><description>&lt;p&gt;In the &lt;a href="https://otacon.github.io/posts/a-plumber-two-prompts-and-3000-lines/" &gt;previous post&lt;/a&gt;, I covered how I got the&#10;MVP up and running. Now it was time to iterate. I tested a few other simple games that use the same hardware setup as&#10;&lt;em&gt;Super Mario Bros.&lt;/em&gt;, and they seemed to work just fine (or at least they looked fine to the naked eye).&lt;/p&gt;&#10;&lt;p&gt;Still, an NES emulator doesn’t feel quite right without sound effects, iconic soundtracks, and, most importantly, a&#10;gamepad. Playing Mario with a keyboard can only take you so far.&lt;/p&gt;</description></item><item><title>A plumber, two prompts and 3000 lines of Kotlin</title><link>https://otacon.github.io/posts/a-plumber-two-prompts-and-3000-lines/</link><pubDate>Thu, 06 Aug 2026 08:30:00 +0000</pubDate><guid>https://otacon.github.io/posts/a-plumber-two-prompts-and-3000-lines/</guid><description>&lt;p&gt;In this article, I’d like to explain how I built the MVP of Kassette (in case you’ve missed it, there is&#10;the &lt;a href="https://otacon.github.io/posts/announcing-kassette-a-kotlin-multiplatform/" &gt;first article&lt;/a&gt;). But before&#10;diving into the story, we need to cover one small detail: what an emulator actually is.&lt;/p&gt;&#10;&lt;h1 id="nerd-context---feel-free-to-skip-this"&gt;&#10; Nerd Context - feel free to skip this&#10; &lt;a class="heading-link" href="#nerd-context---feel-free-to-skip-this"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;The next few sections get a little technical. You do not need to understand all of this to follow the rest of the&#10;article, so feel free to skip ahead if buses, memory addresses, and CPU instructions are not your idea of a good time.&lt;/p&gt;</description></item><item><title>Announcing Kassette: a Kotlin Multiplatform NES Emulator</title><link>https://otacon.github.io/posts/announcing-kassette-a-kotlin-multiplatform/</link><pubDate>Fri, 31 Jul 2026 08:30:00 +0000</pubDate><guid>https://otacon.github.io/posts/announcing-kassette-a-kotlin-multiplatform/</guid><description>&lt;h2 id="the-passion"&gt;&#10; The passion&#10; &lt;a class="heading-link" href="#the-passion"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;I’ve always had a passion for technology, and like many children of my generation, it probably started with video games.&lt;/p&gt;&#10;&lt;p&gt;I still remember unboxing our NES on Christmas morning and watching my dad connect it to the big TV in the living room.&#10;A few minutes later, the whole family was playing &lt;em&gt;Super Mario Bros.&lt;/em&gt; We kept going for about four hours straight.&lt;/p&gt;</description></item></channel></rss>