<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: Leszek</title><link>https://news.ycombinator.com/user?id=Leszek</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 26 Jun 2026 13:27:01 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=Leszek" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by Leszek in "Gas Town: From Clown Show to v1.0"]]></title><description><![CDATA[
<p>It means they'd avoid an article on the benefits of smoking if it's posted by a company selling cigarettes.</p>
]]></description><pubDate>Tue, 14 Apr 2026 20:59:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=47771450</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=47771450</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47771450</guid></item><item><title><![CDATA[New comment by Leszek in "The acyclic e-graph: Cranelift's mid-end optimizer"]]></title><description><![CDATA[
<p>The dummies phrasing is my own, and I stand by it - I simply find the CFG way of thinking much easier to reason about than the SoN way, and I find myself falling back into it no matter how hard I try to follow what I totally (abstractly) appreciate is a more mathematically beautiful dependency/anti-dependency graph - I think that's a limitation of my ability to maintain that concept in my mind and that other people can do it better than me. I find it far easier to reason on CFG terms most of the time, and to raise the CFG temporarily into some dependency representation for doing eliminations/hoisting/LICM, than I do maintaining that dependency representation across all phases and accurately reasoning in each of those about what concrete dependency I forgot about when writing the reduction (concrete recent example, I tried to make reading from holes segfault by unmapping the hole, to force potential holey field access to always first compare against the sentinel, but I was foiled by TF since the load had no dependency on the hole compare branch and could be hosted above it). Implying that this was simply "some people" insisting on only thinking one way without trying to think the SoN way, or that it was some sort of CFG prejudice, is the actual strawman here.</p>
]]></description><pubDate>Tue, 14 Apr 2026 20:49:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47771323</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=47771323</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47771323</guid></item><item><title><![CDATA[New comment by Leszek in "The acyclic e-graph: Cranelift's mid-end optimizer"]]></title><description><![CDATA[
<p>(disclaimer: current V8 team member replying to senior ex-V8 team member)<p>I'd say there were a lot more things problematic in practice with SoN than not relaxing effect edges enough - I'd argue that the bigger problem was that a single effect chain was not enough to represent the flexibility that SoN promised, while keeping the costs, and getting that flexibility would mean effectively extending the effect chain to one effect colour per object per field. Maybe this was a JS specific idiosyncrasy, but my experience was that the effect chain became almost homomorphic to the control chain (and when it wasn't, we had bugs), and then you may as well merge the two into a CFG - if you have to skip over links in your effect chain to skip over certain kinds of effect then you can equally well skip over zero effect nodes too. With SoN, we got all the costs and (almost none) of the benefits, hoisting really isn't so difficult that you have to design your whole IR around it.<p>As for IR design and TFs good architectural decision, idk, I don't think it's all that different from what we ended up with in maglev. All those classes are just convenience views onto a consistent node layout (with e.g. the same trick as TF of putting inputs behind the node), and so far we haven't had issues with it - time will tell I suppose.<p>Overall, this narrative that TF, with it's SoN and other serial decisions, was super clever and built by very smart senior engineers that just all moved on and left behind just us dummies that don't get it -- I've honestly never argued against it. Hell, I can even agree with it, same as I totally believe Cliff when he says that he could easily solve every problem we struggled with (likely by doing it in the scheduler). Tony Stark built one in a cave with a bunch of scraps, but unfortunately I'm not Tony Stark, and we've ended up choosing human comprehension (instead of superhuman) as a design constraint so that us dummies can still work on it after all the senior engineers got promoted away or bored. I think this is a good decision and I stand by it.</p>
]]></description><pubDate>Tue, 14 Apr 2026 19:56:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47770647</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=47770647</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47770647</guid></item><item><title><![CDATA[New comment by Leszek in "404 Deno CEO not found"]]></title><description><![CDATA[
<p>Be careful to check whether you're in a glass house before throwing stones - "layoff" used to mean a temporary release from employment for seasonal labour before it meant a permanent one (<a href="https://www.etymonline.com/word/layoff" rel="nofollow">https://www.etymonline.com/word/layoff</a>).  "Standard" as an adjective also used to mean "being held to a standard of excellence" rather than "normal" or "average". It's ok for words to change meaning over time.</p>
]]></description><pubDate>Sat, 21 Mar 2026 19:36:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47470484</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=47470484</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47470484</guid></item><item><title><![CDATA[New comment by Leszek in "Show HN: X86CSS – An x86 CPU emulator written in CSS"]]></title><description><![CDATA[
<p>You can't currently "compile JS to Wasm", you can compile a JS engine (likely written in C++) to Wasm and run JS inside that (almost certainly at lower speed). So instead of "no more V8", it's closer to "ship V8 as part of the website, instead of part of the browser". Exposing DOM APIs to Wasm is a completely different question, though even those would actually have to be new APIs with a new API design that works for Wasm, since the existing DOM APIs are effectively defined in terms of JS objects being passed around.</p>
]]></description><pubDate>Tue, 24 Feb 2026 21:07:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=47143062</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=47143062</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47143062</guid></item><item><title><![CDATA[New comment by Leszek in "Show HN: X86CSS – An x86 CPU emulator written in CSS"]]></title><description><![CDATA[
<p>The complex parts of JavaScript are the semantics, not the syntax. You could reasonably easily spec a bytecode for JS to get rid of the syntax part, but nothing would change in the complexity (almost all modern engines parse to bytecode as the first step and operate on bytecode from then on).<p>If you wanted to implement JS in wasm, you'd either need a bunch of wasm extensions for JS semantics (dynamic object shape, prototypal inheritance, etc), or you'd need to implement them in wasm from scratch and basically ship a JS runtime written in wasm. Either that, or you need to change the language, which means de facto adding a new language since the old JS still has to stick around for old pages.</p>
]]></description><pubDate>Tue, 24 Feb 2026 06:11:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=47133446</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=47133446</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47133446</guid></item><item><title><![CDATA[New comment by Leszek in "Four Column ASCII (2017)"]]></title><description><![CDATA[
<p>I guess in this system, you'd also type lowercase letters by holding shift?</p>
]]></description><pubDate>Tue, 17 Feb 2026 08:12:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47044910</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=47044910</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47044910</guid></item><item><title><![CDATA[New comment by Leszek in "V8 Garbage Collector"]]></title><description><![CDATA[
<p>rr (<a href="https://rr-project.org/" rel="nofollow">https://rr-project.org/</a>) and memory watchpoints are a godsend when it comes to analysing heap corruptions.</p>
]]></description><pubDate>Fri, 14 Nov 2025 13:00:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=45926319</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=45926319</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45926319</guid></item><item><title><![CDATA[New comment by Leszek in "V8 Garbage Collector"]]></title><description><![CDATA[
<p>The signed length fields pre-date the sandbox, and at that point being able to corrupt the string length meant you already had an OOB write primitive and didn't need to get one via strings. The sandbox is the new weird thing, where now these in-sandbox corruptions can sometimes be promoted into out-of-sandbox corruptions if code on the boundary doesn't handle these sorts of edge cases.</p>
]]></description><pubDate>Fri, 14 Nov 2025 11:54:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=45925968</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=45925968</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45925968</guid></item><item><title><![CDATA[New comment by Leszek in "Writing Memory Safe JIT Compilers"]]></title><description><![CDATA[
<p>I said it "protects" against bugs, not that it "removes" them. The Truffle architecture removes mismatches between JIT and interpreted code (when it doesn't have bugs itself, which is not guaranteed either), but it doesn't remove runtime or object model logic errors that affect both.</p>
]]></description><pubDate>Fri, 26 Sep 2025 08:43:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=45384249</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=45384249</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45384249</guid></item><item><title><![CDATA[New comment by Leszek in "Writing Memory Safe JIT Compilers"]]></title><description><![CDATA[
<p>The V8 sandbox doesn't just protect against JIT issues, it also protects against logical issues in the runtime and object model.</p>
]]></description><pubDate>Fri, 26 Sep 2025 05:15:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=45382912</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=45382912</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45382912</guid></item><item><title><![CDATA[New comment by Leszek in "Find SF parking cops"]]></title><description><![CDATA[
<p>Ok, person with anonymous account name.</p>
]]></description><pubDate>Wed, 24 Sep 2025 14:40:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=45361113</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=45361113</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45361113</guid></item><item><title><![CDATA[New comment by Leszek in "This map is not upside down"]]></title><description><![CDATA[
<p>It certainly disproves that it's a pattern without exceptions, and therefore invalidates or at least questions the idea that every instance of up and down (like which way up north is) has to be mapped to good and bad.</p>
]]></description><pubDate>Fri, 19 Sep 2025 14:14:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=45301912</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=45301912</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45301912</guid></item><item><title><![CDATA[New comment by Leszek in "This map is not upside down"]]></title><description><![CDATA[
<p>More likely in feet than metres.</p>
]]></description><pubDate>Fri, 19 Sep 2025 11:10:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=45300272</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=45300272</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45300272</guid></item><item><title><![CDATA[New comment by Leszek in "This map is not upside down"]]></title><description><![CDATA[
<p>Are you <i>down</i> for looking for counterexamples? Do you want to get to the <i>bottom</i> of why people cherry pick examples for their argument? Is this what you want to <i>base</i> your argument on, or should it be <i>grounded</i> in a more complete linguistic analysis?</p>
]]></description><pubDate>Fri, 19 Sep 2025 11:08:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=45300262</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=45300262</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45300262</guid></item><item><title><![CDATA[New comment by Leszek in "Video Game Blurs (and how the best one works)"]]></title><description><![CDATA[
<p>The Dual-Kawase blur sounds like a texture-sampling-efficient variant of building a Gaussian pyramid (<a href="https://en.wikipedia.org/wiki/Pyramid_(image_processing)" rel="nofollow">https://en.wikipedia.org/wiki/Pyramid_(image_processing)</a>)?</p>
]]></description><pubDate>Sat, 06 Sep 2025 17:54:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=45151426</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=45151426</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45151426</guid></item><item><title><![CDATA[New comment by Leszek in "It's Beginning to Smell a Lot Like Stagflation"]]></title><description><![CDATA[
<p>"The data presented in this article is sourced from the United Nations International Migration Stock for the year 2020."</p>
]]></description><pubDate>Fri, 08 Aug 2025 12:19:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=44836144</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=44836144</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44836144</guid></item><item><title><![CDATA[New comment by Leszek in "How we made JSON.stringify more than twice as fast"]]></title><description><![CDATA[
<p>It's not - the general path is a bailout for the fast path which continues where the fast path stopped, so you don't have to check the whole object for fastness (and you get the fast path up until the bailout)</p>
]]></description><pubDate>Tue, 05 Aug 2025 04:38:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=44794397</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=44794397</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44794397</guid></item><item><title><![CDATA[New comment by Leszek in "The Convenience Trap: Why Seamless Banking Access Can Turn 2FA into 1FA"]]></title><description><![CDATA[
<p>What can't though?</p>
]]></description><pubDate>Tue, 29 Jul 2025 19:18:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=44727240</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=44727240</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44727240</guid></item><item><title><![CDATA[New comment by Leszek in "Fast Code Is Easy. Measuring It Is Hard"]]></title><description><![CDATA[
<p>Fast code isn't a quantum effect, it doesn't wait for a measurement to wave collapse into being fast. The _assertion_ that a certain piece of code is fast probably requires a measurement (maybe you can get away with reasoning, e.g. algorithmic complexity or counting instructions; each have their flaws but so does measurement).</p>
]]></description><pubDate>Sun, 06 Jul 2025 07:17:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=44478551</link><dc:creator>Leszek</dc:creator><comments>https://news.ycombinator.com/item?id=44478551</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44478551</guid></item></channel></rss>