<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: fouronnes3</title><link>https://news.ycombinator.com/user?id=fouronnes3</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 20 Jun 2026 20:04:58 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=fouronnes3" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by fouronnes3 in "A pictorial introduction to differential geometry (2017)"]]></title><description><![CDATA[
<p>I recently came across the existence of Penrose string diagram after curiously and naively researching the existence of index free notation for linear algebra. This seems to be a very interesting paper in the very same category of things I'd love to study and learn about but probably won't ever find the time!</p>
]]></description><pubDate>Sun, 31 May 2026 11:37:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=48344929</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=48344929</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48344929</guid></item><item><title><![CDATA[New comment by fouronnes3 in "The Green Side of the Lua"]]></title><description><![CDATA[
<p>Is a paper that publishes a 0.01% improvement of something at the cost of 5 times more power really an improvement? I believe that every single computer science measurement metric should have Joules or Watts in the denominator. If you are training a model I want to see performance per total energy consumed. If you are measuring inference accuracy, measure PER WATT.<p>I've always been a bit confused by the apparent tendency of the computer science field to mostly ignore energy and power. We are too often satisfied with the idea that software and programs exist in a perfect whiteboard world of xkcd 505 abstract compute.</p>
]]></description><pubDate>Thu, 28 May 2026 06:04:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=48305179</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=48305179</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48305179</guid></item><item><title><![CDATA[New comment by fouronnes3 in "PyTorch Landscape"]]></title><description><![CDATA[
<p>I work on differentiable geometric optics with PyTorch. Seeing a list like this is really illustrative of the power that PyTorch provides when you start considering it like a general purpose GPU-enabled state of the art numerical optimization framework.<p>One thing I wonder is why no one has made a fork of PyTorch yet that removes all the API surface that doesn't produce GPU friendly code. Make dtype and device arg mandatory without defaults, remove in place operations that trigger a CPU sync, etc. This would increase confidence that written code will run on the GPU and pass torch.export() on the first try.</p>
]]></description><pubDate>Tue, 19 May 2026 07:19:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48190295</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=48190295</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48190295</guid></item><item><title><![CDATA[New comment by fouronnes3 in "Show HN: I made a calculator that works over disjoint sets of intervals"]]></title><description><![CDATA[
<p>That's a very cool idea :) It was proposed as far back as 1968 (!) in a paper by none other than the legend of floating point himself: Wiliam Kahan <a href="https://interval.louisiana.edu/historical-preprints/1968-Kahan-a-more-complete-interval-arithmetic.pdf" rel="nofollow">https://interval.louisiana.edu/historical-preprints/1968-Kah...</a></p>
]]></description><pubDate>Sat, 18 Apr 2026 14:08:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=47816050</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47816050</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47816050</guid></item><item><title><![CDATA[New comment by fouronnes3 in "It's OK to compare floating-points for equality"]]></title><description><![CDATA[
<p>You should use <i>two</i> tolerances: absolute and relative. See for example numpy.allclose()<p><a href="https://numpy.org/doc/stable/reference/generated/numpy.allclose.html" rel="nofollow">https://numpy.org/doc/stable/reference/generated/numpy.allcl...</a></p>
]]></description><pubDate>Sat, 18 Apr 2026 11:55:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47815195</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47815195</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47815195</guid></item><item><title><![CDATA[New comment by fouronnes3 in "Show HN: I made a calculator that works over disjoint sets of intervals"]]></title><description><![CDATA[
<p>Thanks! Arbitrary precision arithmetic is definitely something I'd like to learn more about, yeah. Haven't had time to study it so much yet unfortunately.</p>
]]></description><pubDate>Sat, 18 Apr 2026 10:30:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47814749</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47814749</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47814749</guid></item><item><title><![CDATA[New comment by fouronnes3 in "Show HN: I made a calculator that works over disjoint sets of intervals"]]></title><description><![CDATA[
<p>Interesting! I'm not familiar with IEEE 1788. The TypeScript library (not-so-float) that I wrote which powers the calculator uses the JS Number type which is double precision IEEE 754. Outward rounding is not supported by JS so I used a bit level manipulation hack by casting to TypedArray [0] to implement the equivalent of C's nextafter() function. Otherwise I mostly followed Hickey & van Emden paper which is really delightful [1]. The real hard work is actually generating all the test cases. Good luck getting 100% test coverage on interval division!<p>[0] <a href="https://github.com/victorpoughon/not-so-float/blob/main/src/nextafter.ts" rel="nofollow">https://github.com/victorpoughon/not-so-float/blob/main/src/...</a><p>[1] <a href="https://fab.cba.mit.edu/classes/S62.12/docs/Hickey_interval.pdf" rel="nofollow">https://fab.cba.mit.edu/classes/S62.12/docs/Hickey_interval....</a></p>
]]></description><pubDate>Sat, 18 Apr 2026 09:33:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=47814508</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47814508</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47814508</guid></item><item><title><![CDATA[New comment by fouronnes3 in "Show HN: I made a calculator that works over disjoint sets of intervals"]]></title><description><![CDATA[
<p>I don't handle it, ahah. You are right that if you take any classical numerical computing algorithm and replace the floating point reals by interval unions, most of the time the number of intervals in the unions in each of your variables will grow very fast. This is one of the problems of unions and as far as I'm aware it's a topic of active academic research.</p>
]]></description><pubDate>Sat, 18 Apr 2026 08:45:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=47814294</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47814294</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47814294</guid></item><item><title><![CDATA[New comment by fouronnes3 in "Show HN: I made a calculator that works over disjoint sets of intervals"]]></title><description><![CDATA[
<p>Yeah it's super interesting. Like you said, I learned that the IEEE 754 spec actually requires that complete implementations of floating point numbers expose a way to programmatically choose the rounding mode. As far as I know only C allows you to do that, and even then it depends on hardware support. For JS I had to use ugly typedarray casts. Which kinda only accidentally work due to endianess. But technically there should be an API for it!<p>There's other unused stuff in IEEE 754 like that: the inexact bit or signaling NaNs!</p>
]]></description><pubDate>Sat, 18 Apr 2026 07:02:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47813763</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47813763</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47813763</guid></item><item><title><![CDATA[New comment by fouronnes3 in "Show HN: I made a calculator that works over disjoint sets of intervals"]]></title><description><![CDATA[
<p>It's possible to support that but it makes the code very very much more complicated. I've decided early on to not support it. Would be a cool addition though!</p>
]]></description><pubDate>Sat, 18 Apr 2026 06:47:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=47813689</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47813689</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47813689</guid></item><item><title><![CDATA[New comment by fouronnes3 in "I’m spending months coding the old way"]]></title><description><![CDATA[
<p>I wonder if we could design a programming language specifically for teaching CS, and have a way to hard-exclude it from all LLM output. Kinda like anti virus software has special strings that are not viruses but trigger detections for testing.<p>This would probably require cooperation during model training, but now that I think of it, is there adversarial research on LLM? Can you design text data specifically to mess with LLM training? Like what is the 1MB of text data that if I insert it into the training set harms LLM training performance the most?</p>
]]></description><pubDate>Sat, 18 Apr 2026 01:50:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=47812508</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47812508</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47812508</guid></item><item><title><![CDATA[New comment by fouronnes3 in "I’m spending months coding the old way"]]></title><description><![CDATA[
<p>I've had a lot of enjoyment flipping the agentic workflow around: code manually and ask the agent for code review. Keeps my coding skills and knowledge of the codebase sharp, and catches bugs before I commit them!</p>
]]></description><pubDate>Sat, 18 Apr 2026 01:43:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=47812473</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47812473</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47812473</guid></item><item><title><![CDATA[New comment by fouronnes3 in "Show HN: I made a calculator that works over disjoint sets of intervals"]]></title><description><![CDATA[
<p>Author here. Outward rounding to combat precision issues is what interval arithmetic is most known for (try 0.1+0.2 with "full precision mode" enabled), but that's really a shame in my opinion. Outward rounding is cool, but the "inclusion property", as it's known in research papers, works at every scale! This is what enables things like:<p><pre><code>     50 * (10 + [-1, 1])
    [450, 550]
</code></pre>
which is lovely, I think. Adding the union layer to it enables even cooler things, like the true inverse of the square function. Did you know it's not sqrt? Try 'sqinv(64)'.<p>I made interval calculator actually mostly as a way to test my implementation of interval union arithmetic [0], which I needed for another project: a backwards updating spreadsheet [1][2].<p>[0] <a href="https://github.com/victorpoughon/not-so-float" rel="nofollow">https://github.com/victorpoughon/not-so-float</a><p>[1] <a href="https://victorpoughon.github.io/bidicalc/" rel="nofollow">https://victorpoughon.github.io/bidicalc/</a><p>[2] <a href="https://news.ycombinator.com/item?id=46234734">https://news.ycombinator.com/item?id=46234734</a></p>
]]></description><pubDate>Sat, 18 Apr 2026 01:35:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47812435</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47812435</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47812435</guid></item><item><title><![CDATA[Show HN: I made a calculator that works over disjoint sets of intervals]]></title><description><![CDATA[
<p>I've been studying interval arithmetic for the past few weeks and it's a really interesting field because while there is a ton of super interesting research published over the past decades, it has never really gotten the recognition that it deserves, IMO.<p>One reason for this is that standard interval arithmetic has really poor handling of division by intervals containing zero. If you compute 1 / [-1, 2] in regular interval arithmetic, you get either [-∞, +∞], or you have to say that the operation is undefined. Both solutions are virtually useless. The real answer of course is [-∞, -1] U [0.5, +∞]: i.e. a union of two disjoint intervals.<p>This is useful because you can confidently exclude a non empty set of the real numbers ([-1, 0.5]) from the set of possible values that you can get by dividing 1 by a number between -1 and 2.<p>But this definition of interval division yields a value that is not an interval. This is a problem if you want to define a closed arithmetic system, where you can build and evaluate arbitrary expression over interval values.<p>(This behavior extends to any non continuous function like tan() for example, which is implemented in my project - not without difficulties!)<p>Well the obvious solution is to define your arithmetic over disjoint unions of intervals. This is the subject of a 2017 paper called "Interval Unions" by by Schichl, H., Domes, F., Montanher, T. and Kofler, K..<p>This open-source project I made implements interval union arithmetic in TypeScript in the form of a simple interactive calculator, so you can try it out for yourself! The underlying TypeScript library is dependency free and implements interval union arithmetic over IEEE 754 double precision floats (JS native number type) with outward rounding. This guarantees accuracy of interval results in the presence of rounding issue inherent to floating point.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47812341">https://news.ycombinator.com/item?id=47812341</a></p>
<p>Points: 314</p>
<p># Comments: 54</p>
]]></description><pubDate>Sat, 18 Apr 2026 01:15:43 +0000</pubDate><link>https://victorpoughon.github.io/interval-calculator/</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47812341</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47812341</guid></item><item><title><![CDATA[New comment by fouronnes3 in "I’m spending months coding the old way"]]></title><description><![CDATA[
<p>This is awesome! I myself did a 12 weeks batch at RC (W1'24) and had an absolute blast. Happy coding! Stay curious.</p>
]]></description><pubDate>Fri, 17 Apr 2026 21:25:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=47810748</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47810748</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47810748</guid></item><item><title><![CDATA[New comment by fouronnes3 in "Herbie: Automatically improve imprecise floating point formulas"]]></title><description><![CDATA[
<p>Working with tensor datatypes in numerical computing, I've been wondering if it would be possible to somehow add an extra dimension to tensors that would serve as the "floating point precision" dimension, instead of a data type. After all why couldn't the bit depth be one of the tensor dims? Maybe it would be possible to implement arbitrary floating point precision that way?</p>
]]></description><pubDate>Sat, 04 Apr 2026 18:10:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=47641660</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47641660</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47641660</guid></item><item><title><![CDATA[New comment by fouronnes3 in "Herbie: Automatically improve imprecise floating point formulas"]]></title><description><![CDATA[
<p>This is very interesting! I made an interval arithmetic calculator a few months ago [0]. I wonder if you could combine the two techs to make something even more powerful.<p>[0] <a href="https://victorpoughon.github.io/interval-calculator/" rel="nofollow">https://victorpoughon.github.io/interval-calculator/</a></p>
]]></description><pubDate>Sat, 04 Apr 2026 18:06:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47641611</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47641611</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47641611</guid></item><item><title><![CDATA[New comment by fouronnes3 in "VisiCalc Reconstructed"]]></title><description><![CDATA[
<p>> not generally feasible or computable<p>You'd be surprised. It really depends on how you define the problem and what your goal is. My goal with bidicalc what to find ONE solution. This makes the problem somewhat possible since when there are an infinity of solution, the goal is just to converge to one. For example solving 100 = X + Y with both X and Y unknown sounds impossible in general, but finding one solution is not so difficult. The idea is that any further constraint that would help choose between the many solutions should be expressed by the user in the spreadsheet itself, rather than hardcoded in the backwards solver.<p>> What kind of problems can you solve backwardly?<p>This is the weakness of the project honestly! I made it because I was obsessed with the idea and wanted it to exist, not because I was driven by any use case. You can load some premade examples in the app, but I haven't found any killer use case for it yet. I'm just glad it exists now. You can enter any arbitrary DAG of formulas, update any value, input or output, and everything will update upstream and downstream from your edit and remain valid. That's just extremely satisfying to me.</p>
]]></description><pubDate>Fri, 20 Mar 2026 18:17:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47458506</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47458506</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47458506</guid></item><item><title><![CDATA[New comment by fouronnes3 in "VisiCalc Reconstructed"]]></title><description><![CDATA[
<p>Very cool article!<p>I also implemented a spreadsheet last year [0] in pure TypeScript, with the fun twist that formulas also update backwards. While the backwards root finding algorithm was challenging, I also found it incredibly humbling to discover how much complexity there is in the UX of the simple spreadsheet interface. Handling selection states, reactive updates, detecting cycles of dependency and gracefully recovering from them is a massive state machine programming challenge! Very fun project with a lot of depth!<p>I myself didn't hand roll my own parser but used Ohm-js [1] which I highly recommend if you want to parse a custom language in Javascript or TypeScript.<p>> One way of doing this is to keep track of all dependencies between the cells and trigger updates when necessary. Maintaining a dependency graph would give us the most efficient updates, but it’s often an overkill for a spreadsheet.<p>On that subject, figuring out the efficient way to do it is also a large engineering challenge, and is definitely not overkill but absolutely required for a modern spreadsheet implementation. There is a good description of how Excel does it in this famous paper "Build systems a la carte" paper, which interestingly takes on a spreadsheet as a build system [2].<p>[0] <a href="https://victorpoughon.github.io/bidicalc/" rel="nofollow">https://victorpoughon.github.io/bidicalc/</a><p>[1] <a href="https://ohmjs.org/" rel="nofollow">https://ohmjs.org/</a><p>[2] <a href="https://www.microsoft.com/en-us/research/wp-content/uploads/2018/03/build-systems.pdf" rel="nofollow">https://www.microsoft.com/en-us/research/wp-content/uploads/...</a></p>
]]></description><pubDate>Fri, 20 Mar 2026 17:21:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=47457685</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47457685</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47457685</guid></item><item><title><![CDATA[New comment by fouronnes3 in "Don't post generated/AI-edited comments. HN is for conversation between humans"]]></title><description><![CDATA[
<p>I feel you. I don't think I've ever finished reading a sentence that started with "I asked <LLM> and he said..."</p>
]]></description><pubDate>Wed, 11 Mar 2026 20:24:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=47340992</link><dc:creator>fouronnes3</dc:creator><comments>https://news.ycombinator.com/item?id=47340992</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47340992</guid></item></channel></rss>