<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: ack_complete</title><link>https://news.ycombinator.com/user?id=ack_complete</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 06 Apr 2026 04:39:36 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=ack_complete" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by ack_complete in "Microsoft hasn't had a coherent GUI strategy since Petzold"]]></title><description><![CDATA[
<p>The most offensive part of the Sinofsky response is this part:<p>> WinRT (2012) - it (or the embodiment in Windows 8) failed in the market but it also showed both the problem and potential solution to building for new markets while respecting the past<p>I can't express how wrong this is. WinRT was the most destructive thing that the Windows team ever did to the OS. It drove a hard stake into Windows, splitting it in half and declaring that anything previous to Windows 8, oriented toward desktop, or using primary input through mouse and keyboard over touch was dead. Microsoft basically told all existing Windows developers that if they weren't building a new, touch-oriented, mobile-style app specifically for Windows 8, they didn't matter and wouldn't get any support whatsoever, which is exactly what happened every time they broke existing desktop functionality. Calling this "respecting the past" is a crass insult and taking no responsibility for damaging the Windows development experience and accelerating development away from native Windows apps.</p>
]]></description><pubDate>Mon, 06 Apr 2026 00:27:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=47655452</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=47655452</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47655452</guid></item><item><title><![CDATA[New comment by ack_complete in "StackOverflow: Retiring the Beta Site"]]></title><description><![CDATA[
<p>The place I work at tried using an SO enterprise instance and it was quite ineffective. We didn't have the toxicity of the public instance, but generally having a Q&A forum double as a knowledge base is an oddball format that doesn't work out. Adding AI integration is not likely to compensate for that.</p>
]]></description><pubDate>Sun, 05 Apr 2026 20:36:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=47653626</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=47653626</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47653626</guid></item><item><title><![CDATA[New comment by ack_complete in "Use string views instead of passing std:wstring by const&"]]></title><description><![CDATA[
<p>The Windows API uses WCHAR = wchar_t, so if you use char16_t, you have to convert back and forth to avoid running afoul of strict aliasing rules. This imposes conversion costs without benefits; both using wchar_t directly or converting to/from UTF-8 are better.</p>
]]></description><pubDate>Wed, 01 Apr 2026 07:19:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47597892</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=47597892</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47597892</guid></item><item><title><![CDATA[New comment by ack_complete in "Gzip decompression in 250 lines of Rust"]]></title><description><![CDATA[
<p>Doesn't need to be inline assembly, just pre-encoded lookup tables and intrinsics-based vectorized CRC alone will add quite a lot of code. Most multi-platform CRC algorithms tend to have at least a few paths for byte/word/dword at a time, hardware CRC, and hardware GF(2) multiply. It's not really extreme optimization, just better algorithms to match better hardware capabilities.<p>The Huffman decoding implementation is also bigger in production implementations for both speed and error checking. Two Huffman trees need to be exactly complete <i>except</i> in the special case of a single code, and in most cases they are flattened to two-level tables for speed (though the latest desktop CPUs have enough L1 cache to use single-level).<p>Finally, the LZ copy typically has special cases added for using wider than byte copies for non-overlapping, non-wrapping runs. This is a significant decoding speed optimization.</p>
]]></description><pubDate>Fri, 27 Mar 2026 15:50:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=47544302</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=47544302</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47544302</guid></item><item><title><![CDATA[New comment by ack_complete in "Windows native app development is a mess"]]></title><description><![CDATA[
<p>Yes, and this is also how Windows 10/11 explorer turns some parts of its UI dark like scrollbars. But notably, Microsoft refuses to officially support Explorer's dark control themes or ship a complete dark theme, and because the theming engine only loads themes signed by Microsoft, no one else can ship one either without patching the OS.</p>
]]></description><pubDate>Mon, 23 Mar 2026 19:22:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=47493956</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=47493956</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47493956</guid></item><item><title><![CDATA[New comment by ack_complete in "Windows native app development is a mess"]]></title><description><![CDATA[
<p>Dark mode for apps is a setting in the OS and a general expectation now, it's suboptimal to ship a new UI that doesn't support it. And, again, Win32 message boxes in your program will switch to dark mode whether you want them to or not.<p>Win32 controls ignoring system colors goes much farther back than dark mode being introduced in Windows 10. The theming engine that broke a lot of that functionality was introduced in Windows XP. Beyond that, there were always a few hardcoded colors like disabled gray text going back to Windows 95.<p>Dark mode ignoring Win32 system colors is not incompetence. It was _intentional_. Dark mode was introduced by the UWP side, which intentionally did not extend it to Win32. To this day, there is not even a Win32 API for desktop apps to query whether dark mode is even enabled. The official recommendation is to compute the luminance of the UWP foreground color setting:<p><a href="https://learn.microsoft.com/en-us/windows/apps/desktop/modernize/ui/apply-windows-themes#know-when-dark-mode-is-enabled" rel="nofollow">https://learn.microsoft.com/en-us/windows/apps/desktop/moder...</a></p>
]]></description><pubDate>Sun, 22 Mar 2026 19:31:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=47481193</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=47481193</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47481193</guid></item><item><title><![CDATA[New comment by ack_complete in "Windows native app development is a mess"]]></title><description><![CDATA[
<p>One difference is that the Mac OS itself was not initially 32-bit clean, with the top byte being used by the Memory Manager.</p>
]]></description><pubDate>Sun, 22 Mar 2026 18:58:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47480838</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=47480838</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47480838</guid></item><item><title><![CDATA[New comment by ack_complete in "Windows native app development is a mess"]]></title><description><![CDATA[
<p>The main thing that's hard going down this route is dark mode support. The Win32 USER and common controls just don't not support dark mode, but are actively hostile to it due to the amount of hardcoded light colors and backgrounds in the system. All of the system colors are light regardless of the dark/light system setting, highlights are hardcoded to light blue, disabled controls use a hardcoded color, half of the window messages for changing control colors are silently ignored with theming is enabled. Menus are among the more difficult to deal with as they require extensive owner draw.<p>On top of this, there are a small handful of system UIs that do support dark mode and make your program look inconsistent with dark mode regardless. Message boxes will switch to dark mode, and so will file dialogs -- which is a problem if you've used the Vista-style customization, as any syslinks will appear in a color of blue that's hard to read against the dark mode background.</p>
]]></description><pubDate>Sun, 22 Mar 2026 18:48:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47480746</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=47480746</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47480746</guid></item><item><title><![CDATA[New comment by ack_complete in "Windows native app development is a mess"]]></title><description><![CDATA[
<p>Or, unless they've changed it, hardware accelerated rendering. Winforms was based on System.Drawing, which used GDI+, which was largely software rendering. This was confusing because GDI+ was not really related to GDI, which had and still does retain some hardware acceleration support. Even basic color fills start becoming an issue with a big window/monitor.<p>Winforms is also .NET based, so it's inaccessible if you don't want to write your UI in and take a dependency on .NET.</p>
]]></description><pubDate>Sun, 22 Mar 2026 18:39:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=47480650</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=47480650</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47480650</guid></item><item><title><![CDATA[New comment by ack_complete in "Windows native app development is a mess"]]></title><description><![CDATA[
<p>It's hard to describe how uselessly restrictive the UWP model was when they originally introduced it as "Metro-style apps" in Windows 8. Among the things it officially did not support included:<p>- Multiple monitors
- Non-full screen views
- Sideloading outside of the Store
- Offline installation
- Explicit threads - thread pool only
- Aligned memory allocation - malloc only
- Any C++ compiler other than MSVC
- Support for any version of Windows other than Windows 8
- Running apps as administrator
- Running more than one instance of an app at a time
- Runtime shader compilation<p>If any ONE of these things was a blocker, you could not write a Metro style app. And yet Microsoft pushed this extremely hard -- including almost completely ending any maintenance of Win32 APIs. And despite the many relaxations and extensions, UWP is still largely useless today, and now even itself seems to be going into maintenance mode. All of which has done a lot of damage to the state of Windows desktop platform development.<p>As an example of how bizarre UWP is, for some reason every time they published a list of new APIs added to it, they converted the list of API identifiers to lowercase in the documentation:<p><a href="https://learn.microsoft.com/en-us/windows/uwp/whats-new/windows-10-build-15063-api-diff" rel="nofollow">https://learn.microsoft.com/en-us/windows/uwp/whats-new/wind...</a><p>It's relatively insignificant, but... why? Just one of many things that showed how immature UWP was.</p>
]]></description><pubDate>Sun, 22 Mar 2026 18:32:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47480590</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=47480590</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47480590</guid></item><item><title><![CDATA[New comment by ack_complete in "Even faster asin() was staring right at me"]]></title><description><![CDATA[
<p>Even that is not necessarily needed, I have gotten major speedups from LUTs even as large as 1MB because the lookup distribution was not uniform. Modern CPUs have high cache associativity and faster transfers between L1 and L2.<p>L1D caches have also gotten bigger -- as big as 128KB. A Deflate/zlib implementation, for instance, can use a brute force full 32K entry LUT for the 15-bit Huffman decoding on some chips, no longer needing the fast small table.</p>
]]></description><pubDate>Mon, 16 Mar 2026 19:33:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=47403692</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=47403692</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47403692</guid></item><item><title><![CDATA[New comment by ack_complete in "AVX2 is slower than SSE2-4.x under Windows ARM emulation"]]></title><description><![CDATA[
<p>There are also mode switching and calling convention issues.<p>The way that the vector registers were extended to 256-bit causes problems when legacy 128-bit and 256-bit ops are mixed. Doing so puts the CPU into a mode where all legacy 128-bit ops are forced to blend the high half, which can reduce throughput of existing SSE2-based library routines to as low as 1/4 throughput. For this reason, AVX code has to aggressively use the VZEROUPPER instruction to ensure that the CPU is not left in AVX 256-bit vector mode before possibly returning to any library or external code that uses SSE2. VZEROUPPER sets a flag to zero the high half of all 256-bit registers, so it's cheap on modern x86 CPUs but can be expensive to emulate without hardware support.<p>The other problem is that only the low 128 bits of vector registers are preserved across function calls due to the Windows x64 calling convention and the VZEROUPPER issue. This means that practically any call to external code forces the compiler to spill all AVX vectors to memory. Ideally 256-bit vector usage is concentrated in leaf routines so this isn't an issue, but where used in non-leaf routines, it can result in a lot of memory traffic.</p>
]]></description><pubDate>Wed, 18 Feb 2026 16:52:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47063093</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=47063093</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47063093</guid></item><item><title><![CDATA[New comment by ack_complete in "80386 Barrel Shifter"]]></title><description><![CDATA[
<p>Don't think the memory operand version would work here. If I understand the x86 architectural manual description, the 32-bit operand form interprets the bit offset as <i>signed</i>. A 64-bit operand could work around that but then run into issues with over-read due to fetching 64 bits of data.</p>
]]></description><pubDate>Wed, 11 Feb 2026 03:51:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=46970576</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=46970576</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46970576</guid></item><item><title><![CDATA[New comment by ack_complete in "Let's compile Quake like it's 1997"]]></title><description><![CDATA[
<p>The VS debugger got an order of magnitude slower in the transition from VS6 to Visual Studio .NET. It's been sped up a bit but is still nowhere near as fast as the VS6 debugger at responding to step commands, debug output, or conditional breakpoints. In VS.NET you could be waiting as long as a full second on a contemporary dev machine for the debugger to finish stepping forward one line.<p>Funny thing is that at the time, I was lamenting how much slower VC6 was than VC4. Macro playback, for instance, got much slower in VC6. It's all relative.</p>
]]></description><pubDate>Mon, 09 Feb 2026 00:14:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=46939996</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=46939996</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46939996</guid></item><item><title><![CDATA[New comment by ack_complete in "The New Collabora Office for Desktop"]]></title><description><![CDATA[
<p>Standard LibreOffice Writer doesn't have the issue for me either, only the version  shipped in Collabora Office for Desktop.</p>
]]></description><pubDate>Fri, 06 Feb 2026 00:44:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=46907566</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=46907566</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46907566</guid></item><item><title><![CDATA[New comment by ack_complete in "The New Collabora Office for Desktop"]]></title><description><![CDATA[
<p>Yeah, unfortunately this seems to combine the UI and performance issues of LibreOffice with new issues from the new front end.<p>It also has a basic mistake in text editor UX: the caret blinks independently of caret movement. This means that the caret is invisible half of the time while trying to navigate text. Most text editors avoid this by restarting the blink cycle to force the caret visible on each movement.</p>
]]></description><pubDate>Thu, 05 Feb 2026 19:03:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=46903546</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=46903546</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46903546</guid></item><item><title><![CDATA[New comment by ack_complete in "State of the Windows: What is going on with Windows 11?"]]></title><description><![CDATA[
<p>A major culprit is background processes that scan the drive in the background, like CompatTelRunner.exe. Works fine if you're on an SSD, but grinds an HDD to a halt. They also forgot about their own I/O prioritization API from Vista, so it also spammed I/O at Normal instead of Background priority in the early versions. Not to mention the periodic Defender scans, the Malware Removal Tool scan that runs before each major update, etc.<p>Similarly, Windows Update used to consume ungodly amounts of CPU time because the update system would write a multi-hundred megabyte text log and then spend forever compressing it for upload. Then they remembered their own ETL system and switched to much more efficient binary logs.<p>Firefox also has problems on HDD, I remember it locking up for minutes at a time doing cache maintenance until I switched permanently to SSDs.</p>
]]></description><pubDate>Tue, 27 Jan 2026 02:43:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=46774864</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=46774864</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46774864</guid></item><item><title><![CDATA[New comment by ack_complete in "80386 Multiplication and Division"]]></title><description><![CDATA[
<p>The timeline for fast multiplies is also a bit off, IMUL was already 4c latency / 1c throughput on the Pentium Pro (1995) and Pentium II (1997). Pretty sure IMUL was also only a few cycles on the AMD K6 (1997). Though Intel slowed it back down again in the Pentium 4, until they reverted back to the P6 architecture in the Pentium M.</p>
]]></description><pubDate>Sat, 24 Jan 2026 18:42:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=46746273</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=46746273</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46746273</guid></item><item><title><![CDATA[New comment by ack_complete in "A Couple 3D AABB Tricks"]]></title><description><![CDATA[
<p>Typically intersection checks outnumber updates, so it's better to optimize the former. Also, that only works if the object's pivot is at the center of the bounding box or you're accumulating movements without an explicit position.<p>That being said, a lot of tricks work better with center/extent instead of min/max, such as computing the AABB around an OBB or doing separating axis tests with abs() tricks. A bounding box and bounding sphere can also be stored together as center/extent/radius with only one additional value needed. Min/max works better for accumulation, though.</p>
]]></description><pubDate>Mon, 12 Jan 2026 20:29:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=46593849</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=46593849</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46593849</guid></item><item><title><![CDATA[New comment by ack_complete in "The struggle of resizing windows on macOS Tahoe"]]></title><description><![CDATA[
<p>This shows up in a lot of other areas, like small game companies that have a devoted following. It can get pretty nasty because these types of people are able to be condescending just short of ToS, while baiting other people into crossing the line. A common thread is weak moderation or biased moderation.<p>As a developer, it's easy to be blind to this because they're on "your side", but it's bad for the health of your support forums.</p>
]]></description><pubDate>Mon, 12 Jan 2026 20:05:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=46593485</link><dc:creator>ack_complete</dc:creator><comments>https://news.ycombinator.com/item?id=46593485</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46593485</guid></item></channel></rss>