<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: flohofwoe</title><link>https://news.ycombinator.com/user?id=flohofwoe</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 28 Oct 2026 11:33:53 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=flohofwoe" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by flohofwoe in "Four Months of Zig"]]></title><description><![CDATA[
<p>> Completely destroying any forward compatibility!<p>Microsoft breaking the ntdll.dll function interface is <i>extremely</i> unlikely, there's too much popular software in the wild depending on it.</p>
]]></description><pubDate>Wed, 28 Oct 2026 08:00:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=50270453</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50270453</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50270453</guid></item><item><title><![CDATA[New comment by flohofwoe in "Four Months of Zig"]]></title><description><![CDATA[
<p>> This is what RAII semantics in C++ are for.<p>...which typically has more overhead than a good GC though and <i>much</i> more overhead than using arenas for lifetime management.</p>
]]></description><pubDate>Wed, 28 Oct 2026 07:48:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=50270370</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50270370</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50270370</guid></item><item><title><![CDATA[New comment by flohofwoe in "Four Months of Zig"]]></title><description><![CDATA[
<p>That just means you haven't run into the problems yet that a global allocator brings with it. Other people have and welcome the better control over allocation provided by the Zig std library. The challenge is of course to balance convenience and flexibility. Also if you write code that prefers to not allocate in the first place (which should be the default), you're not affected anyway.</p>
]]></description><pubDate>Wed, 28 Oct 2026 07:44:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=50270349</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50270349</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50270349</guid></item><item><title><![CDATA[New comment by flohofwoe in "Ghostty 1.4"]]></title><description><![CDATA[
<p>For me it's simply that iTerm2 got really fat over the years, and Ghostty was a nice and slim alternative - plus it has one of the better Kitty Graphics Protocol implementations which is fun to tinker with. e.g.: <a href="https://github.com/floooh/chipz-kitty" rel="nofollow">https://github.com/floooh/chipz-kitty</a> (needs zig-0.17.0).</p>
]]></description><pubDate>Tue, 27 Oct 2026 17:42:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=50262860</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50262860</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50262860</guid></item><item><title><![CDATA[New comment by flohofwoe in "New 14‑inch MacBook Pro with M6"]]></title><description><![CDATA[
<p>Why would you want greasy fingerprints all over your display and gorilla arm syndrome when there's a perfectly fine keyboard and touchpad attached to the display for free?</p>
]]></description><pubDate>Tue, 27 Oct 2026 17:29:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=50262629</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50262629</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50262629</guid></item><item><title><![CDATA[New comment by flohofwoe in "New 14‑inch MacBook Pro with M6"]]></title><description><![CDATA[
<p>Hmm, still no OLED displays? I wonder what's the holdup? (I have a fairly mainstream PC laptop with OLED display, and the display is the <i>one</i> thing where my MBP looks pretty poor in direct comparison).</p>
]]></description><pubDate>Tue, 27 Oct 2026 17:21:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=50262518</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50262518</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50262518</guid></item><item><title><![CDATA[New comment by flohofwoe in "Software may be getting worse, but it used to be horrible"]]></title><description><![CDATA[
<p>Yeah PC was a horrible platform before Win2k, but there was a beautiful short time period when we had alternatives like Amiga, Atari, NeXT and SGI (NeXT and SGI too expensive for the average nerd of course, but those machines played the same role as Ferrari or Lamborghini for the Opel Manta and Ford Escort garage tinkerers ;)</p>
]]></description><pubDate>Tue, 27 Oct 2026 16:39:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=50261811</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50261811</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50261811</guid></item><item><title><![CDATA[New comment by flohofwoe in "I still teach OpenGL ES 3.0"]]></title><description><![CDATA[
<p>Fortunately "beauty lies in the eye of the beholder" ;) I definitely prefer the D3D model instead of the extension soup of GL or Vulkan.</p>
]]></description><pubDate>Tue, 27 Oct 2026 16:35:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=50261745</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50261745</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50261745</guid></item><item><title><![CDATA[New comment by flohofwoe in "I still teach OpenGL ES 3.0"]]></title><description><![CDATA[
<p>Very interesting. Thanks for the insights! ...and yeah, Larrabee is an interesting case, I actually wonder whether it's time for another attempt :)</p>
]]></description><pubDate>Tue, 27 Oct 2026 14:01:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=50259513</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50259513</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50259513</guid></item><item><title><![CDATA[New comment by flohofwoe in "I still teach OpenGL ES 3.0"]]></title><description><![CDATA[
<p>> don't forget that the drivers for GPUs would until recently get updates to patch specific video games for performance issues (not sure if they still do that ?)<p>I bet it's all the same if not worse, and that's why GPU drivers are closing in on the gigabyte "sound barrier" (and I guess on Linux that part is played by Proton... e.g. I bet there's a ton of game-specific 'workarounds' in Proton, if not for performance, then at least to fix 3D API misuse).</p>
]]></description><pubDate>Tue, 27 Oct 2026 12:37:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=50258207</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50258207</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50258207</guid></item><item><title><![CDATA[New comment by flohofwoe in "I still teach OpenGL ES 3.0"]]></title><description><![CDATA[
<p>The rigid resource binding model via BindGroup objects in WebGPU is already outdated (and funny enough, an area where WebGPU is actually <i>slower</i> than WebGL2, at least when assuming that bindings need to change frequently and unpredictably).<p>This was a restriction of the Vulkan 1.0 API and modelling the WebGPU resource binding model around that was a quite predictable problem. It would have been better to come up with a slim abstraction that might cost some performance on Vulkan (which is only really relevant on Android phones and Linux desktops), but at least would not slow down WebGPU across <i>all</i> platforms.<p>And now even the Vulkan maintainers have realized the problem and are introducing the much more flexible descriptor-heap extension (about a decade late, but better late than never).<p>WebGPU is essentially the frozen cross-section of 3D APIs from about a decade ago, and the state of GPU hardware from about 15 to 20 years ago (but tbf, apart from the broken binding model there wasn't much that could be done, because most restrictions are coming from mobile GPUs which a browser 3D API simply <i>must</i> support).</p>
]]></description><pubDate>Tue, 27 Oct 2026 12:22:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=50258064</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50258064</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50258064</guid></item><item><title><![CDATA[New comment by flohofwoe in "I still teach OpenGL ES 3.0"]]></title><description><![CDATA[
<p>> If they can’t program in C/C++ and debug the error messages how are they going to survive in the wild?<p>The problem is that you don't get *any* error messages from native GL in the first place (unless you wire up a debug-message callback via the optional KHR_debug extension which isn't available everywhere), and the builtin error system via glGetError() is pretty much completely useless.<p>Other APIs don't suffer from this problem, D3D, Vulkan and Metal all have excellent validation layers which give very helpful messages, and WebGL or WebGPU running in browsers basically implement such a validation layer out of the box.</p>
]]></description><pubDate>Tue, 27 Oct 2026 11:41:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=50257651</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50257651</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50257651</guid></item><item><title><![CDATA[New comment by flohofwoe in "I still teach OpenGL ES 3.0"]]></title><description><![CDATA[
<p>Tbf, it all depends on how deep you look into the fractal ;) The main differences between the modern APIs are in how resource binding is done, but many other concept overlap quite well between Vulkan, D3D12 and Metal (especially in more recent Vulkan revisions).<p>> Of all of these, only Metal has a reasonable on-ramp for newcomers to 3D graphics.<p>...unless you start with Metal 4, which is bringing in a lot of Vulkan/D3D12 concepts (for better or worse, it's definitely not great for 'convenience' but may help with porting Vulkan or D3D12 code over).</p>
]]></description><pubDate>Tue, 27 Oct 2026 10:38:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=50257065</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50257065</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50257065</guid></item><item><title><![CDATA[New comment by flohofwoe in "I still teach OpenGL ES 3.0"]]></title><description><![CDATA[
<p>> writing a good constant buffer manager is witchcraft<p>Tbh, I think the main lesson is simply to not try to work around the specific 3D API conventions too much, e.g. don't try to shoehorn mechanisms into the D3D11 layer that would be straightforward in Vulkan or D3D12 but would disable the special fast-paths in D3D11.<p>E.g. for a traditional "one uniform update per draw call" loop with one small constant buffer per shader updated via plain old UpdateSubresource(), D3D11 is incredibly fast (you can easily do hundreds-of-thousands update+drawcall pairs like this per 60Hz frame on a somewhat recent - e.g. post-2016 or so - mid-level gaming PC.<p>Of course trying to emulate D3D11 on Vulkan or D3D12 might have all sorts of issues that don't exist on a good "native" D3D11 driver.<p>Also somewhat related: in a GL shim it's typically still faster to update uniform data via the old glUniform*v calls instead of using uniform buffers, apparently most GL drivers lack the special fast-path optimizations of small D3D11 constant buffers, and the more abstract glUniform calls seems to give the driver more 'wiggle room' to implement an optimal upload path.</p>
]]></description><pubDate>Tue, 27 Oct 2026 10:07:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=50256798</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50256798</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50256798</guid></item><item><title><![CDATA[New comment by flohofwoe in "I still teach OpenGL ES 3.0"]]></title><description><![CDATA[
<p>> they also contain a whole lot of fixed function hardware that is specialized for real-time computer graphics. This hardware isn't exposed as "fancy instructions", it is set up in other ways, which is achieved through a device driver.<p>Those hardwired fixed-function parts are getting fewer and less important though (ok, and then raytracing units entered the scene...). Also AFAIK something like a texture sampling operation is indeed a 'fancy instruction'(?), even though the actual texture sampling is done by a 'fixed function' hardware unit.<p>> This also necessitates a device driver to manage scheduling, synchronization, etc. with the main OS.<p>I bet this type of GPU/CPU handshaking work could also be baked into the hardware (similar to CPU mirocode) and exposed via a standardized memory mapped IO interface (or whatever the current mechanism is for letting the CPU control the GPU). E.g. a CPU also implements similar protocols to talk to the rest of the computer system (e.g. memory and other CPUs), but this is mainly implemented as "hardware protocols" - drivers "just" offer more flexibility for hardware vendors because they can delegate the standardization into software.<p>...also a lot of the "CPU / GPU software ecosystem" was probably shaped by CPU and GPU vendors historically being different companies, and once the big consolidation started, the conventions were already set in stone.</p>
]]></description><pubDate>Tue, 27 Oct 2026 09:52:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=50256691</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50256691</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50256691</guid></item><item><title><![CDATA[New comment by flohofwoe in "I still teach OpenGL ES 3.0"]]></title><description><![CDATA[
<p>I think most of it comes down to 'historical accidents' tbh.<p>E.g. if CPUs would have closed ISAs and heavily guarded IPs, you'd also need a 'driver' and an 'OpenCPU API' to make any use of them (of course the public ISA of a CPU <i>is</i> essentially the driver interface  baked into the hardware).<p>The other big difference is focus on decent single-thread performance for CPUs versus performing thousands of small tasks in parallel on GPUs, but each one slowly. This difference causes a different programming model (e.g. running an entire application in a single 'main' function from start to finish, versus spawning small specialized tasks which are running across hundreds of threads).<p>And the specific problem with Vulkan is that it tried to solve two conflicting requirements: on one hand being an explicit low-level API without 'magic abstractions', on the other hand supporting very different GPU architectures (especially the mobile GPU zoo). The resulting mess was quite predictable to be honest...</p>
]]></description><pubDate>Tue, 27 Oct 2026 07:53:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=50255835</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50255835</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50255835</guid></item><item><title><![CDATA[New comment by flohofwoe in "I still teach OpenGL ES 3.0"]]></title><description><![CDATA[
<p>I mostly agree regarding GL's programming model, but tbf some problems have been fixed by WebGL2 (much better validation and error reporting - e.g. very helpful error messages right on the browser console - and it's probably the least buggy and most portable 3D API implementation of them all, including the current state of WebGPU.<p>For teaching I would generally use the web browser via WebGL2 or WebGPU, just because those APIs require much less boilerplate in the browser environment to get to your first triangle and the edit-test-loop is pretty much instant.</p>
]]></description><pubDate>Tue, 27 Oct 2026 07:44:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=50255772</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50255772</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50255772</guid></item><item><title><![CDATA[New comment by flohofwoe in "I still teach OpenGL ES 3.0"]]></title><description><![CDATA[
<p>> but I wish there was a middle ground between it and VK<p>There's WebGPU (probably the best option for teaching), D3D11 and Metal.<p>And (shameless plug): sokol-gfx tries to find a balance between simplicity and modern 3D APIs:<p><a href="https://github.com/floooh/sokol" rel="nofollow">https://github.com/floooh/sokol</a><p>Demos with links to C source and shader code:<p>WebGL2 backend: <a href="https://floooh.github.io/sokol-html5/" rel="nofollow">https://floooh.github.io/sokol-html5/</a><p>WebGPU backend (has a couple more demos which use features not available on GLES3.0/WebGL2, like compute shaders): <a href="https://floooh.github.io/sokol-webgpu/" rel="nofollow">https://floooh.github.io/sokol-webgpu/</a></p>
]]></description><pubDate>Tue, 27 Oct 2026 07:24:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=50255660</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50255660</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50255660</guid></item><item><title><![CDATA[New comment by flohofwoe in "Lula wins election after final votes tallied"]]></title><description><![CDATA[
<p>I wouldn't mix countries and software projects though. When the "benevolent leader" of a software project goes crazy there will be a bit of social media drama and that's it. When the same thing happens in a country, people are massacred (and in essence this is also the reason why countries shouldn't be governed like a company, a country can't simply shut down like a company when things go south).</p>
]]></description><pubDate>Mon, 26 Oct 2026 10:57:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=50241814</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50241814</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50241814</guid></item><item><title><![CDATA[New comment by flohofwoe in "Where the Romans Fought (interactive map)"]]></title><description><![CDATA[
<p>I would guess because the whole region is surrounded by mountain ranges which must have been impassable "jungle". E.g. the Ore Mountains in the north were only settled after 1000 AD and mostly because of various "silver rushes". I guess the Bohemian forest to the west was similar harsh, no large rivers like the Rhine to transport troops on, and the whole area probably a scary, dark and "barbarian" wilderness like Germania north-east of the Rhine. Just speculating though :)</p>
]]></description><pubDate>Mon, 26 Oct 2026 09:46:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=50241334</link><dc:creator>flohofwoe</dc:creator><comments>https://news.ycombinator.com/item?id=50241334</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50241334</guid></item></channel></rss>