<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: paavohtl</title><link>https://news.ycombinator.com/user?id=paavohtl</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 29 Jun 2026 21:39:52 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=paavohtl" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by paavohtl in "WebGL Without a GPU"]]></title><description><![CDATA[
<p>Indeed, the post is rather obviously written by Claude. It's just missing a few "load-bearing"s and a "golden", so that I could have the full picture.</p>
]]></description><pubDate>Mon, 29 Jun 2026 15:42:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48720765</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=48720765</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48720765</guid></item><item><title><![CDATA[New comment by paavohtl in "Show HN: Decomp Academy – Learn to decompile GameCube games into matching C"]]></title><description><![CDATA[
<p>> The source code is theirs, binaries mixed with other copyrighted content is not.<p>Distributing binaries should not matter. If the binary is just compiled from the source code, the binary is just an (non-)infringing as the source code.<p>> They also allegedly violated a EULA<p>Meaningless. EULAs are not the law.</p>
]]></description><pubDate>Sun, 28 Jun 2026 07:47:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=48705285</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=48705285</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48705285</guid></item><item><title><![CDATA[New comment by paavohtl in "Show HN: Decomp Academy – Learn to decompile GameCube games into matching C"]]></title><description><![CDATA[
<p>Yes, quite easily. It requires some setup, but the basic idea is that you create a DLL and a simple loader program which injects it into your target process. You can then use a hooking library like MinHook to replace individual functions with your own implementations. If the target application is in C++, you can additionally do vtable hooking and replace functions even easier (though it will always be a combination of the two techniques).</p>
]]></description><pubDate>Sun, 28 Jun 2026 07:03:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=48705093</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=48705093</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48705093</guid></item><item><title><![CDATA[New comment by paavohtl in "Linux eliminates the strncpy API after six years of work, 360 patches"]]></title><description><![CDATA[
<p>Rust is a significantly higher level language than C, but it can be used it almost all environments where C is used; provided there's a supported compiler target for it. In (safe) Rust, null is basically a guaranteed compiler optimization. Optional / nullable values are represented via Option<T>, which is a sum type of Some(T) and None. When a reference or other pointer-like value (e.g. Box<T>, an owned heap allocation) is wrapped in Option, the compiler can use the invalid bit patterns of T (such as null) to represent the None variant. This is called niche optimization.<p>So yes, it's nulls underneath, but the developer never has to think about them.</p>
]]></description><pubDate>Sun, 21 Jun 2026 05:53:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=48616047</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=48616047</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48616047</guid></item><item><title><![CDATA[Bevy 0.19]]></title><description><![CDATA[
<p>Article URL: <a href="https://bevy.org/news/bevy-0-19/">https://bevy.org/news/bevy-0-19/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48606640">https://news.ycombinator.com/item?id=48606640</a></p>
<p>Points: 6</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 20 Jun 2026 05:39:58 +0000</pubDate><link>https://bevy.org/news/bevy-0-19/</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=48606640</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48606640</guid></item><item><title><![CDATA[New comment by paavohtl in "Port React Compiler to Rust"]]></title><description><![CDATA[
<p>We have used React Compiler in production for a large ecom / media website for about a year. Performance has been fine overall, and we haven't ran into any major bugs attributable to it in that time.</p>
]]></description><pubDate>Wed, 10 Jun 2026 10:15:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=48474089</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=48474089</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48474089</guid></item><item><title><![CDATA[New comment by paavohtl in "SimCity 3k in 4k (2025)"]]></title><description><![CDATA[
<p>I'm the author of said technical analysis! (<a href="https://blog.paavo.me/cities-skylines-2-performance/" rel="nofollow">https://blog.paavo.me/cities-skylines-2-performance/</a>)<p>But yes, at launch Cities Skylines 2 was very heavily GPU bound, due to very unoptimized meshes and a poor culling implementation. I haven't profiled it afterwards, but from what I've read they've optimized it enough that on most systems the limiting factor is now the CPU.</p>
]]></description><pubDate>Thu, 28 May 2026 05:27:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=48304944</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=48304944</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48304944</guid></item><item><title><![CDATA[New comment by paavohtl in ".NET (OK, C#) finally gets union types"]]></title><description><![CDATA[
<p>More like 25. C# 1.0 already had capabilities Java developers are still dreaming of, like structs / value types, properties and operator overloading. C# 2.0 in 2005 introduced generics, implemented far more competently than Java ever did.</p>
]]></description><pubDate>Sun, 24 May 2026 05:17:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=48254615</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=48254615</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48254615</guid></item><item><title><![CDATA[New comment by paavohtl in "Async Rust never left the MVP state"]]></title><description><![CDATA[
<p>Considering the latest commits and issues in effects-initiative are about 2 years old, the keyword generics initiative seems effectively dead.</p>
]]></description><pubDate>Tue, 05 May 2026 11:23:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=48020954</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=48020954</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48020954</guid></item><item><title><![CDATA[New comment by paavohtl in "Metal Gear Solid 2's source code has been leaked on 4chan"]]></title><description><![CDATA[
<p>As it happens I do have the habit of writing very long blog posts - though none on OpenWA so far. The OpenWA readme file serves as a bit of an introduction, though it's already a month old.</p>
]]></description><pubDate>Sun, 03 May 2026 20:47:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=48001310</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=48001310</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48001310</guid></item><item><title><![CDATA[New comment by paavohtl in "Metal Gear Solid 2's source code has been leaked on 4chan"]]></title><description><![CDATA[
<p>I don't think it's impossible, but it would take a lot of time and a lot of money; likely more time than good enough models have been commercially available.<p>I have been working on an incremental decompilation-based reimplementation (basically how OpenRCT2 was done) of Worms Armageddon for the past 2 months with a lot of help from LLM tools; primarily Claude Code and Ghidra MCP. I've worked on it almost every day, reaching Claude Code Max 5x's 5 hour session limit multiple times every day. Suffice to say as a software rendered, sprite-based 90s PC game, Worms Armageddon is several orders of magnitude simpler than MGS2. Despite that, I think it will be 2-3 more months of work before I can compile a fully independent version of the game.<p>This is despite the game being an almost ideal candidate for automated RE, as it uses deterministic game logic with built-in checksum checks in replays and multiplayer. I've downloaded all the speedruns I could find for the game (as replay files) and I've retrofitted the replay system into a massively parallel test framework, which simulates over 600 games in about 30 seconds. So Claude can port all game logic independently without much need for manual testing; the replay tests can almost guarantee perfect correctness.<p>MGS2 doesn't have anything like that, so every ported function requires extensive manual testing. Even with LLM tools, an accurate decomp could take years (unless you're willing spend thousands of $currency per month on it).</p>
]]></description><pubDate>Sun, 03 May 2026 20:15:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48000939</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=48000939</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48000939</guid></item><item><title><![CDATA[New comment by paavohtl in "Every GPU That Mattered"]]></title><description><![CDATA[
<p>I think pairing RX 5700 XT with Control as the "defining game" is an interesting choice, considering the facts 1. AMD cards were incapable of RT at the time and 2. Control was basically the first game with a good, comprehensive RT implementation that had a massive positive impact on the graphics.</p>
]]></description><pubDate>Tue, 07 Apr 2026 09:15:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47672554</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=47672554</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47672554</guid></item><item><title><![CDATA[New comment by paavohtl in "Zero-day CSS: CVE-2026-2441 exists in the wild"]]></title><description><![CDATA[
<p>Absolutely nothing in the announcement or other publicly available source implies that, to my knowledge. Might as well speculate if a random passer-by on the street is secretly a martian.</p>
]]></description><pubDate>Wed, 18 Feb 2026 17:41:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=47063760</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=47063760</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47063760</guid></item><item><title><![CDATA[New comment by paavohtl in "Lightpanda migrate DOM implementation to Zig"]]></title><description><![CDATA[
<p>For Android specifically, by Q3 of last year more new lines of Rust were being added per week than new lines of C++: <a href="https://security.googleblog.com/2025/11/rust-in-android-move-fast-fix-things.html" rel="nofollow">https://security.googleblog.com/2025/11/rust-in-android-move...</a></p>
]]></description><pubDate>Mon, 12 Jan 2026 14:28:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=46588980</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=46588980</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46588980</guid></item><item><title><![CDATA[New comment by paavohtl in "Rust's Block Pattern"]]></title><description><![CDATA[
<p>At least in simple cases the compiler will just inline the closure, as if it never existed. There shouldn't be any measurable overhead.</p>
]]></description><pubDate>Sat, 20 Dec 2025 09:38:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=46334814</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=46334814</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46334814</guid></item><item><title><![CDATA[1000 Days in 32:9]]></title><description><![CDATA[
<p>Article URL: <a href="https://blog.paavo.me/1000-days-in-32-by-9/">https://blog.paavo.me/1000-days-in-32-by-9/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46253728">https://news.ycombinator.com/item?id=46253728</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 13 Dec 2025 11:06:00 +0000</pubDate><link>https://blog.paavo.me/1000-days-in-32-by-9/</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=46253728</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46253728</guid></item><item><title><![CDATA[New comment by paavohtl in "'No One Lives Forever' turns 25 and you still can't buy it legitimately"]]></title><description><![CDATA[
<p>The source is only partially available; they released the source code of the game logic, but the engine was not included in the source release. You'd need to reverse engineer & remake the engine to make any major improvements to the game, such as porting it to new platforms.</p>
]]></description><pubDate>Sat, 15 Nov 2025 07:10:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=45935617</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=45935617</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45935617</guid></item><item><title><![CDATA[New comment by paavohtl in "XSLT RIP"]]></title><description><![CDATA[
<p>And even that isn't enough; no browser supports WebGPU on all platforms out of the box. <a href="https://caniuse.com/webgpu" rel="nofollow">https://caniuse.com/webgpu</a><p>Chrome supports it on Windows and macOS, Linux users need to explicitly enable it. Firefox has only released it for Windows users, support on other platforms is behind a feature flag. And you need iOS 26 / macOS Tahoe for support in Safari. On mobile the situation should be a bit better in theory, though in my experience mobile device GPU drivers are so terrible they can't even handle WebGL2 without huge problems.</p>
]]></description><pubDate>Mon, 10 Nov 2025 08:59:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=45873969</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=45873969</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45873969</guid></item><item><title><![CDATA[New comment by paavohtl in "XSLT RIP"]]></title><description><![CDATA[
<p>I know you're being sarcastic, but to be pedantic WebGPU (usually) uses canvas. Canvas is the element, WebGPU is one of the ways of rendering to a canvas, in addition to WebGL and CanvasRenderingContext2D.</p>
]]></description><pubDate>Mon, 10 Nov 2025 08:05:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=45873601</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=45873601</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45873601</guid></item><item><title><![CDATA[New comment by paavohtl in "Affinity Studio now free"]]></title><description><![CDATA[
<p>Photoshop has had smart objects for quite literally 20 years - have they gained some important features recently? Smart filters have also been included since CS3 in 2007.</p>
]]></description><pubDate>Fri, 31 Oct 2025 17:42:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=45774631</link><dc:creator>paavohtl</dc:creator><comments>https://news.ycombinator.com/item?id=45774631</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45774631</guid></item></channel></rss>