<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: Dwedit</title><link>https://news.ycombinator.com/user?id=Dwedit</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 19 Jun 2026 22:38:15 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=Dwedit" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by Dwedit in "What was nice about the UI of Windows 2000"]]></title><description><![CDATA[
<p>I think Windows XP looks very nice if you install the Royale theme.  It's a shiny and glassy version of the default XP style.</p>
]]></description><pubDate>Thu, 18 Jun 2026 15:47:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48587197</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48587197</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48587197</guid></item><item><title><![CDATA[New comment by Dwedit in "I hate compilers"]]></title><description><![CDATA[
<p>Looks like the formatting ate your asterisks at *(int*)buffer.  Use \* to get an asterisk.</p>
]]></description><pubDate>Thu, 18 Jun 2026 11:37:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=48583866</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48583866</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48583866</guid></item><item><title><![CDATA[New comment by Dwedit in "Sixty percent of US consumers say 'AI' in brand messaging is a turnoff"]]></title><description><![CDATA[
<p>Saying something is "AI" makes sense if it actually uses an AI model.  But to appease certain people, you need to disguise or obfuscate that AI is used.  I don't think the anti-AI crowd is up in arms about Firefox having a local translation feature, despite that it uses an AI model.</p>
]]></description><pubDate>Wed, 17 Jun 2026 14:45:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=48571279</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48571279</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48571279</guid></item><item><title><![CDATA[New comment by Dwedit in "MicroUI – A tiny, portable, immediate-mode UI library written in ANSI C"]]></title><description><![CDATA[
<p>One clearly defined starting point is exposing any custom controls to accessibility APIs that are used to enumerate and interact (simulated mouse actions, reading the text, etc) with controls on the screen.  Both scripting tools and screen readers make use of these.  Built-in controls already have the enumeration and interaction feature and don't need additional code, but custom controls may not have that.<p>In the MicroUI example here, there are buttons and text labels and other kinds of controls, but no ability for an outside process to enumerate or interact with the controls.  Any program will just set a single giant window with no text and no controls inside.  Accessibility software can still hook text output APIs, but not if it also uses custom font rendering.<p>Anyway, the Windows accessibility API is just implementing a few COM objects, and COM (other than the specific ABI used for storing the vtable and function call convention) is not necessarily specific to Win32.</p>
]]></description><pubDate>Wed, 17 Jun 2026 14:19:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=48570931</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48570931</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48570931</guid></item><item><title><![CDATA[New comment by Dwedit in "GPT‑NL: a sovereign language model for the Netherlands"]]></title><description><![CDATA[
<p>What really matters is the sovereign capability to finetune the LLM models.  Any model could be vetted and tested, but you need finetuning/lora training to prevent the model from being outdated.</p>
]]></description><pubDate>Tue, 16 Jun 2026 23:46:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48563875</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48563875</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48563875</guid></item><item><title><![CDATA[New comment by Dwedit in "The time the x86 emulator team found code so bad they fixed it during emulation"]]></title><description><![CDATA[
<p>Is this actually real?  I thought fread just multiplied the two numbers together to compute a total size.  Meanwhile, the Win32 API call ReadFile actually does do a separate system call if you call it multiple times.</p>
]]></description><pubDate>Tue, 16 Jun 2026 20:35:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=48561668</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48561668</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48561668</guid></item><item><title><![CDATA[New comment by Dwedit in "What every coder should know about gamma (2016)"]]></title><description><![CDATA[
<p>This kind of thing is why you need a separate watchdog process that gets notified when the other process terminates.</p>
]]></description><pubDate>Tue, 16 Jun 2026 05:29:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=48550976</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48550976</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48550976</guid></item><item><title><![CDATA[New comment by Dwedit in "Banned book library in a wi-fi smart light bulb"]]></title><description><![CDATA[
<p>Android loves to auto-disconnect you from any Wifi network that doesn't provide Internet.  You need to go through a bunch of arcane settings to disable that feature.</p>
]]></description><pubDate>Tue, 16 Jun 2026 01:17:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=48549320</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48549320</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48549320</guid></item><item><title><![CDATA[New comment by Dwedit in "The Birth and Death of JavaScript (2014)"]]></title><description><![CDATA[
<p>C syntax dropped the ball badly on operator precedence.  Left Shift <<, Right Shift >>, and Bitwise And & should have been at the same priority as multiplication or division, while Bitwise Or (|) should have been at the same priority as addition.</p>
]]></description><pubDate>Sun, 14 Jun 2026 22:18:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=48533450</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48533450</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48533450</guid></item><item><title><![CDATA[New comment by Dwedit in "The Birth and Death of JavaScript (2014)"]]></title><description><![CDATA[
<p>The presentation is a work of speculative fiction presented in a deadpan manner.  The things demonstrated in the presentation (Unix shell with C compiler targeting asm.js running inside a web browser) did not actually exist at the time.</p>
]]></description><pubDate>Sun, 14 Jun 2026 22:15:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=48533424</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48533424</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48533424</guid></item><item><title><![CDATA[New comment by Dwedit in "Windows 1.0 and the WinAPI, 40 Years Later"]]></title><description><![CDATA[
<p>It might be stable, but when Vista came around, there was a huge change to how Window Rects worked.  Something so basic got a big breaking change.<p>Before Vista, there were two rects, the Window Rect (which included the title bar, menu bar, and the resize border), and the Client Rect, which includes the work area of the window.<p>Once Vista came around, Window Rects became completely different.  After a window becomes shown, the Window Rect expands outwards (around 8 pixels or so) to include a drop shadow and larger resize area.  So it's no longer just Window Rect and Client Rect, now there's a third rect called the DWM Extended Frame Bounds, and that corresponds to what the Window Rect used to be on earlier versions of Windows.<p>To try to make things more compatible, the Window Rect will behave like older versions of windows before the window is shown, and there is no way to access DWM Extended Frame Bounds before a window is shown.  But once a window is shown, your Window Rect is bigger now, and in a different location.  Programs that try to move the window will instead move it to a location 8 pixels down-right of the target location.  Programs that try to resize the window will instead make it 16 pixels too narrow and short.  If a program tried to remember the difference between the Client Rect and Window Rect, suddenly that number changed just because the window got shown.<p>So newer programs need to ask for the DWM Extended Frame Bounds to get an idea of where their window actually is.  And it also happens that DWM Extended Frame Bounds are <i>not</i> DPI adjusted, but the Window Rect and Client Rect are.  So you need to DPI adjust it into a coordinate system which matches the Window Rect.  Now you finally have your three rects, and can properly place a window somewhere on the screen.</p>
]]></description><pubDate>Sun, 14 Jun 2026 16:18:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=48528972</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48528972</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48528972</guid></item><item><title><![CDATA[New comment by Dwedit in "The Birth and Death of JavaScript (2014)"]]></title><description><![CDATA[
<p>I don't think Javascript is still interpreted though?</p>
]]></description><pubDate>Sun, 14 Jun 2026 14:25:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=48527490</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48527490</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48527490</guid></item><item><title><![CDATA[New comment by Dwedit in "The Birth and Death of JavaScript (2014)"]]></title><description><![CDATA[
<p>Within the video's story, they removed virtual memory and memory protection because the JIT was good enough.  Nothing like that has happened at all.</p>
]]></description><pubDate>Sun, 14 Jun 2026 14:23:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=48527473</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48527473</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48527473</guid></item><item><title><![CDATA[New comment by Dwedit in "Windows 1.0 and the WinAPI, 40 Years Later"]]></title><description><![CDATA[
<p>To be fair, the C standard for types is pretty dreadful.  How big is an int?  A long?  Want an integer type that matches the size of a pointer?  <stdint.h> did fix a lot of the issues, but people targeting an early C version don't have this header available.<p>Windows type names have stayed mostly stable since Win32, but some of them are still misleading.  DWORD, UINT and ULONG are all 32-bit unsigned integer types.  But in C#, "ulong" is a 64-bit type despite having the same name, this leads to making mistakes when transcribing Win32 type names into C# code.<p>Windows came up with its type names before <stdint.h> existed, so you won't see any uint32_t in there, just DWORD.</p>
]]></description><pubDate>Sun, 14 Jun 2026 13:01:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48526829</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48526829</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48526829</guid></item><item><title><![CDATA[New comment by Dwedit in "Windows 1.0 and the WinAPI, 40 Years Later"]]></title><description><![CDATA[
<p>16-bit windows applications aren't supported natively by 64-bit windows, but OTVDM (based on Wine code) will run most of them fine.</p>
]]></description><pubDate>Sun, 14 Jun 2026 12:50:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=48526747</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48526747</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48526747</guid></item><item><title><![CDATA[New comment by Dwedit in "Windows 1.0 and the WinAPI, 40 Years Later"]]></title><description><![CDATA[
<p>The game is known as Qix, Xonix (title of a clone) is not a common name for the game.</p>
]]></description><pubDate>Sun, 14 Jun 2026 12:48:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=48526733</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48526733</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48526733</guid></item><item><title><![CDATA[New comment by Dwedit in "Police officer investigated for using AI to 'create evidence' in multiple cases"]]></title><description><![CDATA[
<p>Seems like this idea solves a different problem than signed timestamps.  You have access to not only the current random numbers, but also any random number from the past (as long as someone somewhere wrote it down).  I just don't quite get what this could solve if you can either use a current number or an old number.  Just not a future number because they're not around yet.<p>Embedding a public random number also doesn't resist tampering, unlike signed timestamps.</p>
]]></description><pubDate>Sun, 14 Jun 2026 11:35:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=48526268</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48526268</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48526268</guid></item><item><title><![CDATA[New comment by Dwedit in "WASI 0.3"]]></title><description><![CDATA[
<p>Just allowing more than one arraybuffer could go a long way to help with performance.  One array buffer for the wasm memory space, then an arraybuffer for each input or output argument.</p>
]]></description><pubDate>Fri, 12 Jun 2026 16:16:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=48506002</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48506002</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48506002</guid></item><item><title><![CDATA[New comment by Dwedit in "WASI 0.3"]]></title><description><![CDATA[
<p>My task in question was a number crunching task, basically doing multiply-and-add for 336-bit integers.  I wrote a JS version, and a C version compiled into WASM by using Zig.  You'd think that WebAssembly would trounce JS here, but it actually didn't.<p>The JS code had been written carefully to avoid allocations, and also avoiding the built-in JavaScript BigInt.  I rolled my own BigInt instead using an array of numbers.  Each number, despite being a double, was basically a 48-bit integer.  Long multiplication requires splitting a 48-bit integer into two 24-bit integers so an intermediate multiplication result will fit in 48 bits.<p>The C version used 32x32=64-bit integer math.  (Would have been nice if WASM had supported 64x64=128-bit multiplication)<p>Even with the overhead of using doubles instead of integers, the JavaScript and C versions ran at nearly the same speed.  I think the C version was slightly faster, but not significantly.  The C version took a lot longer to load, as it had to instantiate a Webassembly object, and had to run glue code to copy things in and out of Webassembly memory.</p>
]]></description><pubDate>Fri, 12 Jun 2026 16:11:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=48505942</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48505942</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48505942</guid></item><item><title><![CDATA[New comment by Dwedit in "WASI 0.3"]]></title><description><![CDATA[
<p>WebAssembly doesn't beat JavaScript in performance, and that is embarrassing.</p>
]]></description><pubDate>Fri, 12 Jun 2026 15:22:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=48505327</link><dc:creator>Dwedit</dc:creator><comments>https://news.ycombinator.com/item?id=48505327</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48505327</guid></item></channel></rss>