<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: kh9000</title><link>https://news.ycombinator.com/user?id=kh9000</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 22 Apr 2026 16:49:29 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=kh9000" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by kh9000 in "Windows Server 2025 Runs Better on ARM"]]></title><description><![CDATA[
<p>It's a combinination of bit flags. The lowest bit controls whether segment heap is on or off. The 2nd lowest bit bit controls some additional optimizations that go along with it, something about multithreading. A value of 3 (both flags set) gives you identical behavior to what specifying <heapType>SegmentHeap</heapType> in your application manifest does.<p>Using the application manifest approach is the right way to ship software that opts into segment heap. The registry thing is just a convenience for local testing.</p>
]]></description><pubDate>Wed, 22 Apr 2026 06:27:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=47859803</link><dc:creator>kh9000</dc:creator><comments>https://news.ycombinator.com/item?id=47859803</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47859803</guid></item><item><title><![CDATA[New comment by kh9000 in "Windows Server 2025 Runs Better on ARM"]]></title><description><![CDATA[
<p>Windows developer here. After reading this post, my gut instinct is that this is due to something called 'segment heap'.<p>A bit of backstory: there are two, totally independent implementations behind the Windows heap allocation APIs (i.e. the implementation code behind RtlHeapAlloc and RtlHeapFree, which are called by malloc/free). The older of the two, developed uring the Dave Cutler era, is known as the "NT heap". The newer implementation, developed in the 2010s, is known as "segment heap". This is all documented online if anyone wants to read more. When development on segment heap was completed, it was known to be superior to the NT heap in many ways. In particular, it was more efficient in terms of memory footprint, due to lower fragmentation-related waste.  Segment heap was smarter about reusing small allocations slots that were recently free'd. But, as ever, Windows was very serious about legacy app compat. Joel Spolsky calls this the 'Raymond Chen camp'. So, they didn't want to turn segment heap on universally. It was known that a small portion of legacy software would misbehave and do things like, rely on doing a bit of use-after-free as a treat. Or worse, it took dependencies on casting addresses to internal NT heap data structures. So, the decision at the time was to make segment heap the default for <i>packaged</i> executables. At that time, Windows Phone still existed, and Microsoft was pushing super hard on the Universal platform being the new, recommended way to make apps on Windows. So they thought we'd see a gradual transition from unpackaged executables to packaged, and thus, a gradual transition from NT heap to segment heap. The dream of UWP died, and the Windows framework landscape is more fragmented than ever. Most important software on Windows is still unpackaged, and most of it runs on x64.<p>Why does this matter? Because segment heap is also enabled by default on arm. Same logic as the packaged vs unpackaged decision. Arm64 binaries on Windows are guaranteed not to be ancient, unmaintained legacy code. Arm64 windows devices have been a big success, and users widely report that they feel more responsive than x64 devices.<p>A not insignificant part of why Windows feels better on arm is because segment heap is enabled by default on arm.<p>I'd be interested to see how this test turns out if you force segment heap on x64. You can do it on a per-executable basis via creating a DWORD value named FrontEndHeapDebugOptions under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\<myExeName>.exe, and giving it a value of 8.<p>You can turn it on <i>globally</i> for all processes by creating a DWORD value named "Enabled" under HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Segment Heap, and giving it a value of 3. I do this on my dev machine and have encountered zero problems. The memory footprint savings are pretty crazy. About 15% in my testing.</p>
]]></description><pubDate>Wed, 22 Apr 2026 02:41:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=47858177</link><dc:creator>kh9000</dc:creator><comments>https://news.ycombinator.com/item?id=47858177</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47858177</guid></item><item><title><![CDATA[New comment by kh9000 in "Slop Creep: The Great Enshittification of Software"]]></title><description><![CDATA[
<p>Nothing to add other than that I agree, and this is a easy to understand, correct way of framing the problem. But the framing probably won't convince exuberant AI folks. These tools are incredibly powerful, but they can only take you faster in the direction you were already going. Using them responsibly requires discipline, and not everyone has it, and we're about to undertake a grand social experiment in seeing how it plays out.<p>Unnecessary complexity was already a big problem in software prior to LLMs, and I think we're about to see it become, unbelievably, a much much bigger problem than before. My personal belief is that there are a lot of exponential harms that stack up as complexity increases:<p>1) Difficulty of understandinga codebase rises expontentially with code size. A 100kLOC codebase is more than 10x harder to understand than a 10kLOC codebase.
2) Large codebases get larger faster, classic snowball effect. Implementing a given feature against a larger codebase requires a larger change, even if it's the ideal, perfect change. Plus, ast shortcuts and bad abstractions make future shortcuts and bad abstractions much more likely.
3) Team size increases with codebase size, larger team size triggers Brooks law: number of communication paths grows quadratically with team size.<p>Prior to LLMs, the world already had large codebases that had essentially become emergent organisms that became so complex, the organizations that created them completely lost control of the ability to work in them effectively. Visual Studio and MSBuild, or Microsoft Teams come to mind. But historically, it was very expensive to get to this point. Now it's going to be much easier</p>
]]></description><pubDate>Mon, 16 Mar 2026 01:06:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47393902</link><dc:creator>kh9000</dc:creator><comments>https://news.ycombinator.com/item?id=47393902</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47393902</guid></item><item><title><![CDATA[New comment by kh9000 in "Windows NT/OS2 Design Workbook"]]></title><description><![CDATA[
<p>The section coding.pdf has their code style guidelines, colloquially known as Cutler Normal Form, CNF for short. I'm conflicted on it. Definitely overly verbose, but you can't argue with the results of the NT team. Such a rigid style guide almost feels like the technical version of a dress code. And there's an idea called "enclothed cognition" which is like, if you wear a business suit to work, it exerts a subconscious influence that results in you taking the work more seriously, focusing your attention, etc: <a href="https://en.wikipedia.org/wiki/Enclothed_cognition" rel="nofollow">https://en.wikipedia.org/wiki/Enclothed_cognition</a></p>
]]></description><pubDate>Sun, 15 Feb 2026 00:38:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=47019949</link><dc:creator>kh9000</dc:creator><comments>https://news.ycombinator.com/item?id=47019949</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47019949</guid></item><item><title><![CDATA[New comment by kh9000 in "Windhawk Windows classic theme mod for Windows 11"]]></title><description><![CDATA[
<p>I imagine it would be frustrating to be the windows shell dev who has to investigate the torrent of bizarre memory corruption bugs that inevitably occur on Windhawk users’ machines after major OS updates. There’s really no avoiding it when you detour unstable “implementation detail” sort of functions across the taskbar/systray/start/etc. especially now that c++ coroutines are in widespread usage therein.<p>But to be fair, I understand the demand for products like this, because of several painful feature takebacks between 10 -> 11. It would be nice if cleaner approaches like wholesale shell replacement were still as straightforward as they were prior to windows 8. The “immersive shell” infra running in explorer + the opaque nature of enumerating installed UWPs + a bunch of other things make that almost impossible today.</p>
]]></description><pubDate>Sat, 15 Nov 2025 23:25:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=45941418</link><dc:creator>kh9000</dc:creator><comments>https://news.ycombinator.com/item?id=45941418</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45941418</guid></item><item><title><![CDATA[New comment by kh9000 in "Windows-Use: an AI agent that interacts with Windows at GUI layer"]]></title><description><![CDATA[
<p>Using the UIA tree as the currency for LLMs to reason over always made more sense to me than computer vision, screenshot based approaches. It’s true that not all software exposes itself correctly via UIA, but almost all the important stuff does. VS code is one notable exception (but you can turn on accessibility support in the settings)</p>
]]></description><pubDate>Fri, 12 Sep 2025 15:55:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=45223534</link><dc:creator>kh9000</dc:creator><comments>https://news.ycombinator.com/item?id=45223534</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45223534</guid></item></channel></rss>