<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: jng</title><link>https://news.ycombinator.com/user?id=jng</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 22 May 2026 23:12:52 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=jng" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by jng in "A Forth-inspired language for writing websites"]]></title><description><![CDATA[
<p>LLM-based coding is enabling so much! The crazy weekend project now can have compilation to native code and web assembly, allow server-side or client-side rendering, manage multiple types of persistence, include adaptive compression, and do all of this without breaking a sweat.<p>It's scary but I love it.</p>
]]></description><pubDate>Fri, 22 May 2026 15:50:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=48237510</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=48237510</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48237510</guid></item><item><title><![CDATA[New comment by jng in "We rewrote JSONata with AI in a day, saved $500k/year"]]></title><description><![CDATA[
<p>I've found Claude Code with Opus 4.5+ to be excellent at generating test cases that exercise the different features, and even push into the edge cases. You sometimes need to nudge it into generating more convoluted cases when necessary, but then it is just nudging. I now routinely generate more LOCs of test cases than actual core code, while I used to only write very limited test cases just for the most complex areas amenable to automated testing.<p>I've been successful at using Claude Code this way:<p>1. get it to generate code for complex data structures in a separate library project<p>2. use the code inside a complex existing project (no LLM here)<p>3. then find a bug in the project, with some fuzzy clues as to causes<p>4. tell CC about the bug and ask it to generate intensive test cases in the direction of the fuzzy clues<p>5. get the test cases to reproduce the bug and then CC to fix it by itself<p>6. take the new code back to the full project and see the issue fixed<p>All this using C++. I've been a pretty intensive developer for ~35 years. I've done this kind of thing by hand a million times, not any more. We really live in the future now.</p>
]]></description><pubDate>Fri, 27 Mar 2026 00:12:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=47537528</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=47537528</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47537528</guid></item><item><title><![CDATA[New comment by jng in "AWS introduces Graviton5–the company's most powerful and efficient CPU"]]></title><description><![CDATA[
<p>They usually end up upgrading most instance types to new graviton generations, it just takes time to do the full rollout.</p>
]]></description><pubDate>Wed, 10 Dec 2025 10:31:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=46216188</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=46216188</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46216188</guid></item><item><title><![CDATA[New comment by jng in "Forth – Is it still relevant?"]]></title><description><![CDATA[
<p>yosefk had the ultimate take on this: <a href="https://yosefk.com/blog/my-history-with-forth-stack-machines.html" rel="nofollow">https://yosefk.com/blog/my-history-with-forth-stack-machines...</a></p>
]]></description><pubDate>Sun, 09 Nov 2025 07:33:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=45863662</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=45863662</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45863662</guid></item><item><title><![CDATA[New comment by jng in "Interviewing Intel's Chief Architect of x86 Cores"]]></title><description><![CDATA[
<p>Oops, sorry about carelessly throwing the "cringe" label at that. Thanks for the transcript which allowed me to enjoy the content, which I did find very interesting.<p>I haven't watched the video so I am not sure how he actually talks, but what read cringe to me was things like the following paragraph:<p>"Stephen Robinson: Yeah. So let’s, let’s break it down into address generation versus execution. So, when you have three load execution ports, you need three load address generators. And so that’s there. On the store side, we have four store address generation units. But we only sustain two stores into the data cache."<p>Which reads weird. "let's" repeated twice, probably a stutter, could be transcribed just once. The "So" or "And so" the interviewee uses all the time at the start of sentences can also be removed for clearer and easier reading most of the time, without loss of meaning. Some sentences can almost be removed completely as they provide no actual information. The previous paragraph could be transcribed like this:<p>"Stephen Robinson: Let’s break it down into address generation versus execution. When you have three load execution ports, you need three load address generators. That’s there. On the store side, we have four store address generation units. But we only sustain two stores into the data cache."<p>I hesitate to remove "That's there." so I left it. But everything else I removed, it makes it clearer, and I think I'm not being unfaithful to the original. Removing the duplicate "let's" is a given as it's normal to stutter when speaking, but you don't really want to transcribe that unless the goal is to transcribe the talking imperfections we all have. And all the other things I removed, "Yeah", "So", "And so", are basically the same type of thing.<p>I thought this was automated because it had so many of the meaningless go-to words and hesitations from the original. Now that you mention it, automated transcription would probably never have produced something this good. And otherwise we are talking about stylistic preference here, always subjective -- although I'd definitely prefer the style of transcription suggest here.<p>Thanks again. I read chips and cheese with interest, quite often, and enjoy it quite a lot. Keep up the good work. And sorry for the careless put-down.</p>
]]></description><pubDate>Wed, 15 Oct 2025 17:05:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=45595552</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=45595552</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45595552</guid></item><item><title><![CDATA[New comment by jng in "Interviewing Intel's Chief Architect of x86 Cores"]]></title><description><![CDATA[
<p>He is no Jim Keller, and the mostly[1] automated transcript makes it read cringe, but it is not at all devoid of content.<p>Some examples of very interesting, non-obvious content:<p>* Even if store ports are kept fixed (2 in his example), adding store address generators (up to 4 in his example) actually improves performance, because it frees up load port dependencies.
* Within the same core, they use two different styles of load/address address contention mechanisms which he describes as two tables, one with explicit "allows" and the other one with explicit "denies" -- which of course end up converging (I understand it refers to two different encodings which vary in what is stored).
* Between cores, they have completely separate teams which reach different designs for things like this.
* It was interesting to me to discover how isolated the different core design teams work (which makes sense)
* It was interesting to me to picture the load/store address contention subsystem, which must be quite complex and needs to be really fast.<p>And I stop listing, re different types of workloads, gaming workloads being similar to DB workloads, and even more similar between them than to SPEC benchmarks and so on.<p>Just go read the interview if you're interested in CPU design!<p>[1] mostly automated: at least the dialog name labels seem to be hand-edited, as one of them has a typo</p>
]]></description><pubDate>Wed, 15 Oct 2025 10:05:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=45590205</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=45590205</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45590205</guid></item><item><title><![CDATA[New comment by jng in "Piano Keys"]]></title><description><![CDATA[
<p>The white keys form a sequence of notes (frequencies) that is known as the diatonic scale. It's the foundation underlying all popular western music. It is not random or arbitrary, it has some nice dual mathematical and musical properties: intervals between the notes in the scale have special frequency ratios that sound pleasing to the ear (read Helmholtz's "On the sensations of tone" for a fascinating physically-based take on why it is like that -- he is known as "the father of acoustics", and that book contains the distillation of 8 years of deep, smart research way before we had the means or understanding we hav today). A ton, if not most, of popular music can be played using only the white keys.<p>There used to be keyboards with other different arrangements, which were actually extremely cumbersome and actually didn't allow very rich and interesting musical excursions like modulations (look up "microtonal keyboards"). Today's standard keyboard and tuning is a compromise between those fundamentally mathematical and perceptual acoustic relations (the tonic, the fourth, the fifth, the sixth, the major and minor third, the "sensible" or subtonic...) and the ability to perform those trans-tonality excursions. A fully regular keyboard like you propose would lend itself more easily to those excursions, at the cost of being less apt at the foundational diatonic model and most popular music.<p>Interestingly also, the notes used by modern keyboards and all modern instruments, and to which we are all so accustomed that we thing it "just is", is an imperfect compromise that needed a lot of selling back in the day, much of which was done by Bach (the compromise scale is called the "tempered scale", and Bach authored the arch-famous "Well-tempered clavier" pieces to show it off -- impossible to perform on keyboards with other tunings).<p>And of course, there is a tradition factor. English isn't written like this because it's optimizing for any easily describable or measurable optimization metric, more like it minimized a socio-perceptual function covering many centuries of UX.<p>Finally, if you want an instrument where all keys are equal, you can always move to a fretboard based one like the guitar. Funnily, it has a one-semitone-short jump between strings 3 and 2 that will throw off the desire of full regularity... again due to diatonic leanings. A bass guitar is fully regular, even when they add a 5th and 6th string, so that may fulfill your wish of a fully regular instrument... and it sounds awesome! Just can't do the same things as a piano or a guitar.</p>
]]></description><pubDate>Sat, 19 Jul 2025 21:03:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=44619380</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=44619380</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44619380</guid></item><item><title><![CDATA[New comment by jng in "CIEL Is an Extended Lisp"]]></title><description><![CDATA[
<p>surely not a coincidence</p>
]]></description><pubDate>Fri, 30 Aug 2024 22:17:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=41404996</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=41404996</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41404996</guid></item><item><title><![CDATA[New comment by jng in "PCIe 5.0 is nearly 4 years old and it's still virtually worthless in gaming PCs"]]></title><description><![CDATA[
<p>Such a needlessly negative article. PCIe 5.0 is early, peripherals are scarce-to-non-existant, and existing rigs are not infinitely flexible. Otherwise, it all looks pretty good to me. Even buying one of those may prove worthwhile as new graphics cards and SSDs are released.</p>
]]></description><pubDate>Tue, 30 Apr 2024 20:11:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=40215719</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=40215719</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40215719</guid></item><item><title><![CDATA[New comment by jng in "A. K. Dewdney has died"]]></title><description><![CDATA[
<p>I'm so grateful to him, his early work was a massive influence for me as a kid. I lent one of Dewdney's books to a neighbor friend's dad, an architect, and he gave me my first paid gig as a programmer. Can't overstate the influence in my career.<p>Also, I distinctly remember his column showing how to generate text based on statistics learned from an existing corpus. It has come to mind more than once in this last period of LLM magic -- the essence was already there.<p>Thank you and rest in peace.</p>
]]></description><pubDate>Sun, 31 Mar 2024 22:05:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=39888499</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=39888499</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39888499</guid></item><item><title><![CDATA[New comment by jng in "A. K. Dewdney has died"]]></title><description><![CDATA[
<p>what's the connection?</p>
]]></description><pubDate>Sun, 31 Mar 2024 22:02:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=39888471</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=39888471</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39888471</guid></item><item><title><![CDATA[New comment by jng in "SSDs have become fast, except in the cloud"]]></title><description><![CDATA[
<p>Nitro "virtual NVME" device are mostly (only?) for EBS -- remote network storage, transparently managed, using a separate network backbone, and presented to the host as a regular local NVME device. SSD drives in instances such as i4i, etc. are physically attached in a different way -- but physically, unlike EBS, they are ephemeral and the content becomes unavaiable as you stop the instance, and when you restart, you get a new "blank slate". Their performance is 1 order of magnitude faster than standard-level EBS, and the cost structure is completely different (and many orders of magnitude more affordable than EBS volumes configured to have comparable I/O performance).</p>
]]></description><pubDate>Tue, 20 Feb 2024 19:44:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=39445944</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=39445944</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39445944</guid></item><item><title><![CDATA[New comment by jng in "ZX Spectrum Raytracer"]]></title><description><![CDATA[
<p>Beautiful, I love it, congratulations! I started my programming journey with Basic on a ZX Spectrum +, then Z80 assembly language, then 8086 and the rest from there... 40 years of programming and my appreciation for my original platform is still there. Thank you for the tribute.</p>
]]></description><pubDate>Wed, 24 Jan 2024 20:17:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=39122116</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=39122116</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39122116</guid></item><item><title><![CDATA[New comment by jng in "Cracking the code of Linear B"]]></title><description><![CDATA[
<p>I've often heard about the Linear B mystery and its final decipherment, but never in so much detail. That was fun. Now, when will there be something similar for the Iberian language...</p>
]]></description><pubDate>Fri, 19 Jan 2024 00:04:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=39049818</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=39049818</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39049818</guid></item><item><title><![CDATA[New comment by jng in "LLM in a Flash: Efficient LLM Inference with Limited Memory"]]></title><description><![CDATA[
<p>Probably because changing the software to use a different read pattern is doable in a few weeks/months on your existing systems, and changing anything in the flash controller is a wicked project probably only available to hardware manufacturers, and which will take months to years given the immensely slower hardware iteration cycles (even if it's "just" firmware changes).</p>
]]></description><pubDate>Wed, 20 Dec 2023 07:07:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=38706170</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=38706170</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38706170</guid></item><item><title><![CDATA[New comment by jng in "A standalone zero-dependency Lisp for Linux"]]></title><description><![CDATA[
<p>Oh so it's a GCC-specific thing... that explains it. In any case, congratulations on the lisp! It's beautiful code. I wish my current codebase was that beautiful. I mean, it's a lot of us contributing to it so the beauty is a kind of "meeting of the minds" situation... but still :)<p>PS: My current project implements a lisp... rendered as JSON. Some other angle on beauty...</p>
]]></description><pubDate>Tue, 07 Nov 2023 00:19:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=38171287</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=38171287</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38171287</guid></item><item><title><![CDATA[New comment by jng in "A standalone zero-dependency Lisp for Linux"]]></title><description><![CDATA[
<p>Beautiful. Also, after 30+ years of writing C and C++, I learned one thing by casually browsing the source code: you can use a preprocessor macro in an #include statement. Thanks.</p>
]]></description><pubDate>Mon, 06 Nov 2023 20:51:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=38168817</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=38168817</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38168817</guid></item><item><title><![CDATA[New comment by jng in "The missing C++ smart pointer"]]></title><description><![CDATA[
<p>I have written and been using that same smart pointer type for years, under the pretty horrible name of holder_cloner_t<> (at least it's clear). It is indeed the right solution to a very common and important type of problem. Looking forward to something like this in the standard library one of these decades.</p>
]]></description><pubDate>Sun, 20 Aug 2023 20:18:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=37202576</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=37202576</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37202576</guid></item><item><title><![CDATA[New comment by jng in "My Hardest Bug Ever (2013)"]]></title><description><![CDATA[
<p>I used reader view in Safari.</p>
]]></description><pubDate>Tue, 07 Mar 2023 23:37:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=35062983</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=35062983</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35062983</guid></item><item><title><![CDATA[New comment by jng in "The Zen of Forth"]]></title><description><![CDATA[
<p>I've always thought this really-well-written old post by Yosef Kreinin is quite enlightened regarding the reality of Forth (even if a bit snarky, as usual from him):<p><a href="https://yosefk.com/blog/my-history-with-forth-stack-machines.html" rel="nofollow">https://yosefk.com/blog/my-history-with-forth-stack-machines...</a></p>
]]></description><pubDate>Fri, 30 Dec 2022 10:10:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=34183652</link><dc:creator>jng</dc:creator><comments>https://news.ycombinator.com/item?id=34183652</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34183652</guid></item></channel></rss>