<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    
    <title>Sebastian Schöner</title>
    
    
    <description>Personal blog of Sebastian Schöner</description>
    
    <link>https://blog.s-schoener.com/</link>
    <atom:link href="https://blog.s-schoener.com/feed.xml" rel="self" type="application/rss+xml" />
    
    
      <item>
        <title>Learnings from creating a GUI library</title>
        <description>
          
          I have spent a lot of time recently on creating a GUI library. I have simply not found a library that satisfies my specific list of (partially subjective) requirements: has a C interface, looks reasonably good by default and allows to create things that actually look good, compiles to WASM,...
        </description>
        <pubDate>Mon, 09 Feb 2026 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2026-02-09-gui/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2026-02-09-gui/</guid>
      </item>
    
      <item>
        <title>Putting slim locks on a diet</title>
        <description>
          
          Let’s talk about reader-writer locks. Reader-writer locks are what you employ when you know that multiple readers can safely access a resource concurrently, but once there is a single writer that writer will need exclusive access to said resource. In my particular case, there is a C# program which is...
        </description>
        <pubDate>Wed, 28 Jan 2026 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2026-01-28-rwlocks/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2026-01-28-rwlocks/</guid>
      </item>
    
      <item>
        <title>Clauded optimism</title>
        <description>
          
          This post is a continuation of my last post about programming with AI agents. I wanted to specifically talk about one property of Claude Code: The constant “Yes, of course!” and “That’s a brilliant idea!” Instead of joining the choir of people that (rightfully) say that a machine that basically...
        </description>
        <pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2026-01-14-claude-optimism/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2026-01-14-claude-optimism/</guid>
      </item>
    
      <item>
        <title>An early good bye to 2025</title>
        <description>
          
          There are less than 2 weeks left in 2025 and this means it is time to look back at the last year. In last year’s review I ended on this note: For the next year, I hope to spend more timing painting in broad strokes so I get better at...
        </description>
        <pubDate>Fri, 19 Dec 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-12-19-year-2025/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-12-19-year-2025/</guid>
      </item>
    
      <item>
        <title>When better codegen doesn&apos;t help</title>
        <description>
          
          I want to write a few words about what sorts of games benefit from my build postprocessor for Unity il2cpp builds, cpp2better. It’s not the case that every game unconditionally benefits from it to the same extent. cpp2better essentially takes on the role of a compiler: given some program, it...
        </description>
        <pubDate>Thu, 04 Dec 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-12-04-when-does-cpp2better-help/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-12-04-when-does-cpp2better-help/</guid>
      </item>
    
      <item>
        <title>How to figure out why C# projects are rebuilding</title>
        <description>
          
          A friend recently joked that all my blog posts are to some level just trauma processing. He is not entirely wrong. Today’s trauma is “why does it take 12s to recompile C# when nothing has changed?” I have found no good answers for google-queries like “how do I profile C#...
        </description>
        <pubDate>Mon, 24 Nov 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-11-24-msbuild-csharp/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-11-24-msbuild-csharp/</guid>
      </item>
    
      <item>
        <title>cpp2better, an il2cpp postprocessor</title>
        <description>
          
          It’s been a while since I last talked about cpp2better. Time for an official “here it is” post. What is cpp2better? cpp2better is a tool that hooks into your build pipeline for Unity to achieve better CPU performance in il2cpp builds. cpp2better achieves this by post-processing the C++ code that...
        </description>
        <pubDate>Tue, 04 Nov 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-11-04-cpp2better-release/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-11-04-cpp2better-release/</guid>
      </item>
    
      <item>
        <title>Meta&apos;s support is an embarassing dumpster fire</title>
        <description>
          
          For a while now, I have been helping along a journey to recover an Instagram account, unsuccessfully. As with so many websites it is an infuriating process of stumbling through a set of pages alternatingly labelled “helpcenter” and “support”, until you realize that their links just go in circles. They...
        </description>
        <pubDate>Mon, 03 Nov 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-11-03-support/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-11-03-support/</guid>
      </item>
    
      <item>
        <title>Hard links, hard times</title>
        <description>
          
          On Windows, you can’t delete a file while someone else is watching you using it. Or so they say. On Mac or Linux, you can totally delete a file while someone else is using it. This difference has been keeping me busy for a few days. In my concrete scenario,...
        </description>
        <pubDate>Tue, 07 Oct 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-10-07-windows-hard-links/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-10-07-windows-hard-links/</guid>
      </item>
    
      <item>
        <title>What can go wrong in cross compilation</title>
        <description>
          
          I have been unfortunate enough to embark on a journey of C++ cross-compilation, by choice nonetheless. In my case, I use clang to compile on a Linux machine to get binaries for a Windows machine. This is surprisingly approachable nowadays. I do not want to bore you with the details...
        </description>
        <pubDate>Mon, 29 Sep 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-09-29-cross-compilation/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-09-29-cross-compilation/</guid>
      </item>
    
      <item>
        <title>Async, too much</title>
        <description>
          
          Over the past years, I have written async code on Windows with both C++ and C#. Compared to C#, the C++ side is poorly documented, full of landmines, and just generally requires a good bit of experience and caution to handle. For a taste, you can scroll through this piece...
        </description>
        <pubDate>Mon, 22 Sep 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-09-22-async-linq/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-09-22-async-linq/</guid>
      </item>
    
      <item>
        <title>How I became the control group in an AI experiment</title>
        <description>
          
          At the risk of alienating almost everyone reading this blog, I wanted to report some first hand experience of interacting with AI for programming. I specifically want to talk about how I accidentally served as a control group for an experiment with an AI agent. Here is the setup: Recently,...
        </description>
        <pubDate>Wed, 17 Sep 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-09-17-claude-control/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-09-17-claude-control/</guid>
      </item>
    
      <item>
        <title>TODO TITLE</title>
        <description>
          
          In the past, I used to work in a codebase that had a lot of // @TODO: comments in it. Those TODOs would rank from obvious, small improvements to calls for features that would require an entire rewrite. The TODOs always caused frustration on my end: Why did they not...
        </description>
        <pubDate>Mon, 08 Sep 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-09-08-todo/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-09-08-todo/</guid>
      </item>
    
      <item>
        <title>Unreasonable within reason</title>
        <description>
          
          Over the years I have come to appreciate “unreasonable” coworkers. What a weird sentence to write, right? When it comes to programming, you are usually fairly well advised to be “reasonable.” For example, debugging is much more effective if you have a theory for why things are going wrong and...
        </description>
        <pubDate>Fri, 29 Aug 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-08-29-reasonably-unreasonable/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-08-29-reasonably-unreasonable/</guid>
      </item>
    
      <item>
        <title>Speaking with curiosity</title>
        <description>
          
          I had two interactions recently that surprised me in light of how I think about this blog. In the first interaction, someone referred to me as a “performance expert.” Thank you, that’s very kind of you. I actually don’t think of myself as a performance expert. Maybe one can argue...
        </description>
        <pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-08-19-speaking-with-curiosity/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-08-19-speaking-with-curiosity/</guid>
      </item>
    
      <item>
        <title>Does C compile faster than C++?</title>
        <description>
          
          I recently found myself wondering whether it is faster to compile C than C++. On some level, the answer to this is an obvious “yes”: You can’t accidentally summon cthulhu SFINAE-thulhu in your C code, for example. But my question is a little bit more naive. What if I take...
        </description>
        <pubDate>Wed, 13 Aug 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-08-13-c-cpp-compile-time/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-08-13-c-cpp-compile-time/</guid>
      </item>
    
      <item>
        <title>Vector types and debug performance</title>
        <description>
          
          For reasons, I have found myself writing a vector math library. Like Aras some time ago I’ve found an unpleasant surprise when looking at the debug performance of some vector types. There is no point repeating what Aras already wrote, but I have some additional data points. My concrete example...
        </description>
        <pubDate>Thu, 07 Aug 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-08-07-vector-debug-codegen/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-08-07-vector-debug-codegen/</guid>
      </item>
    
      <item>
        <title>How to speed up random memory accesses</title>
        <description>
          
          At some point when optimizing software, you are left with a soup of pointers that you just have to dereference, even though you know that you are going to suffer a cache miss for every single read. Common knowledge suggests that you just should not read from random pointers in...
        </description>
        <pubDate>Mon, 28 Jul 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-07-28-random-access-ilp/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-07-28-random-access-ilp/</guid>
      </item>
    
      <item>
        <title>How to iterate over section data in C++</title>
        <description>
          
          Last time, we looked at callbacks you can directly embed into your binaries on Windows that are then called for every thread on start/end. The runtime is using this to initialize thread-locals that require more than just memcpy. Today, we are going to look at a mechanism that can be...
        </description>
        <pubDate>Mon, 14 Jul 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-07-14-section-data/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-07-14-section-data/</guid>
      </item>
    
      <item>
        <title>How to get thread create/exit callbacks on Windows</title>
        <description>
          
          I recently needed to run a callback on thread shutdown and creation, on Windows. For exiting, you can apparently use FlsAlloc (MSDN), which is a part of the Fiber API. I’ve tried that, it works. But there are other options! If you have ever built a DLL on Windows, you...
        </description>
        <pubDate>Mon, 07 Jul 2025 00:00:00 +0000</pubDate>
        <link>https://blog.s-schoener.com/2025-07-07-thread-callbacks-windows/</link>
        <guid isPermaLink="true">https://blog.s-schoener.com/2025-07-07-thread-callbacks-windows/</guid>
      </item>
    
  </channel>
</rss>
