<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: bollu</title><link>https://news.ycombinator.com/user?id=bollu</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 13 Apr 2026 20:57:45 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=bollu" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by bollu in "All elementary functions from a single binary operator"]]></title><description><![CDATA[
<p>Lambda calculus talks about <i>computable</i> functions, where the types of the inputs are typically something discrete, like `Bool` or `Nat`. Here, the domain is the real numbers.</p>
]]></description><pubDate>Mon, 13 Apr 2026 06:46:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47748512</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=47748512</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47748512</guid></item><item><title><![CDATA[New comment by bollu in "Ask HN: 500 citation MSc CS, stuck in a low-trust region. How to move forward?"]]></title><description><![CDATA[
<p>please send me an email <siddu.druid@gmail.com>. I'm a PhD student at cambridge, and might be able to put you in touch with folks who have positions to hire you as an RA if your research profile fits. even if there isn't an immediate fit, I'm happy to scout around and see if anything pops up. Best, Sid</p>
]]></description><pubDate>Tue, 13 Jan 2026 23:00:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=46609628</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=46609628</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46609628</guid></item><item><title><![CDATA[New comment by bollu in "Ask HN: Is building a calm, non-gamified learning app a mistake?"]]></title><description><![CDATA[
<p>how does one get to conversational level in a week? I would love to know!currently anki-flashcarding my way through italian...</p>
]]></description><pubDate>Mon, 15 Dec 2025 20:40:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46280298</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=46280298</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46280298</guid></item><item><title><![CDATA[New comment by bollu in "Revisiting "Let's Build a Compiler""]]></title><description><![CDATA[
<p>Having similar reasoning, I would up writing a tiny-optimizing-compiler tutorial that only explains how to write a <i>middle</i> and <i>back</i> end of a compiler: <a href="https://github.com/bollu/tiny-optimising-compiler" rel="nofollow">https://github.com/bollu/tiny-optimising-compiler</a></p>
]]></description><pubDate>Wed, 10 Dec 2025 14:25:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=46218045</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=46218045</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46218045</guid></item><item><title><![CDATA[New comment by bollu in "Memory access is O(N^[1/3])"]]></title><description><![CDATA[
<p>That's really neat, I hadn't seen the black hole argument before, that's <i>really</i> cute</p>
]]></description><pubDate>Thu, 09 Oct 2025 10:33:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=45525793</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=45525793</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45525793</guid></item><item><title><![CDATA[New comment by bollu in "My first verified imperative program"]]></title><description><![CDATA[
<p>yes, Lean is executable, and the proof of natural numbers runs with arbitrary width integers. they're stored as tagged pointers, with upto 63bit numbers being normal numbers, and larger numbers become GMP encoded.</p>
]]></description><pubDate>Mon, 07 Jul 2025 21:47:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=44495007</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=44495007</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44495007</guid></item><item><title><![CDATA[New comment by bollu in "The exceptional Jordan algebra (2020)"]]></title><description><![CDATA[
<p>How does one formally define a spinor? I've seen the definition of a spinor field as "things that transform like a spinor", and a spinor as a "representation of the spin group" (which representation), but I would like to know a canonical mathsy definition of what the heck a "spinor" is! May I please have one? :)</p>
]]></description><pubDate>Mon, 17 Mar 2025 11:28:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=43387330</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=43387330</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43387330</guid></item><item><title><![CDATA[New comment by bollu in "The Day the Muse Died"]]></title><description><![CDATA[
<p>How'd you recommend I learnt to paint? I've not really done much painting in my life at all, and I'd love a breakdown.</p>
]]></description><pubDate>Wed, 05 Mar 2025 21:55:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=43273159</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=43273159</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43273159</guid></item><item><title><![CDATA[Stuff I Learnt in 2024]]></title><description><![CDATA[
<p>Article URL: <a href="https://pixel-druid.com/articles/stuff-i-learnt-in-2024">https://pixel-druid.com/articles/stuff-i-learnt-in-2024</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42533675">https://news.ycombinator.com/item?id=42533675</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Sat, 28 Dec 2024 19:21:16 +0000</pubDate><link>https://pixel-druid.com/articles/stuff-i-learnt-in-2024</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=42533675</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42533675</guid></item><item><title><![CDATA[New comment by bollu in "Quantum Advantage for NP Approximation"]]></title><description><![CDATA[
<p>I'm curious, which solver did you work on? And yeah, I've been working on formally verifying bitblasting in Lean (<a href="https://github.com/leanprover/lean4/pulls?q=+is%3Apr+author%3Abollu+">https://github.com/leanprover/lean4/pulls?q=+is%3Apr+author%...</a>), and it's genius  --- the algorithms, the reductions, the heuristics, it's all so deep.</p>
]]></description><pubDate>Thu, 10 Oct 2024 14:37:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=41799286</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=41799286</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41799286</guid></item><item><title><![CDATA[New comment by bollu in "Poor man's signals – tiny vanilla JavaScript signals implementation"]]></title><description><![CDATA[
<p>Can you elaborate on the batching part for me? I don’t see it</p>
]]></description><pubDate>Wed, 04 Sep 2024 11:33:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=41444428</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=41444428</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41444428</guid></item><item><title><![CDATA[New comment by bollu in "Generating Mazes"]]></title><description><![CDATA[
<p>what definition of "fair" was reached upon?</p>
]]></description><pubDate>Sun, 25 Aug 2024 13:21:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=41347110</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=41347110</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41347110</guid></item><item><title><![CDATA[New comment by bollu in "Ruby's official documentation just got a new look"]]></title><description><![CDATA[
<p>Nice! As someone who understands very little CSS, could you explain why this works?</p>
]]></description><pubDate>Sun, 25 Aug 2024 13:13:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=41347056</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=41347056</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41347056</guid></item><item><title><![CDATA[New comment by bollu in "Tensors, the geometric tool that solved Einstein's relativity problem"]]></title><description><![CDATA[
<p>I've written about [this explanation of tensors](<a href="https://pixel-druid.com/articles/tensor-is-a-thing-that-transforms-like-a-tensor.html" rel="nofollow">https://pixel-druid.com/articles/tensor-is-a-thing-that-tran...</a>) before, and it seems worthwhile to write it down again:<p>There are two ways of using linear maps in the context of physics. One is as a thing that acts on the space . The other is a thing that acts on the coordinates . So when we talk about transformations in tensor analysis, we're talking about coordinate transformatios , not space transformations . Suppose I implement a double ended queue using two pointers:<p>```
struct Queue {int <i>memory, </i>start, <i>end; }
void queue_init(int size) {
  memory = malloc(sizeof(int) </i> size);
  start = end = memory + (size - 1) / 2;
}
void queue_push_start(int x) { <i>start = x; start--; }
void queue_push_end(int x) { end++; </i>end = x; }
int queue_head() { return <i>start; }
int queue_tail() { return </i>end; }
void queue_deque_head() { start++; }
void queue_deque_tail() { tail--; }
```<p>See that the state of the queue is technically three numbers, { memory, start, end } (Pointers are just numbers after all). But this is coordinate dependent , as start and end are relative to the location of memory. Now suppose I have a procedure to reallocate the queue size:<p>```
void queue_realloc(Queue <i>q, int new_size) {
   int start_offset = q->memory - q->start; 
   int end_offset = q->memory - q->end;
   int </i>oldmem = q->memory;
   q->memory = realloc(q->memory, new_size);
   memcpy(q->memory, oldmem + q->start, sizeof(int) * (end_offset - start_offset);
   q->start = q->memory + start_offset;
   q->end = q->memory - end_offset;
}<p>```<p>Notice that when I do this, the values of start and end can be completely different! However, see that the length of the queue, given by (end - start) is invariant : It hasn't changed!<p>---<p>In the exact same way, a "tensor" is a collection of numbers that describes something physical with respect to a particular coordinate system (the pointers start and end with respect to the memory coordinate system). "tensor calculus" is a bunch of rules that tell you how the numbers change when one changes coordinate systems (ie, how the pointers start and end change when the pointer memory changes). Some quantities that are computed from tensors are "physical", like the length of the queue, as they are invariant under transformations. Tensor calculus gives a principled way to make sure that the final answers we calculate are "invariant" / "physical" / "real". The actual locations of start and end don't matter, as (end - start) will always be the length of the list!<p>---<p>Physicists (and people who write memory allocators) need such elaborate tracking, to keep track of what is "real" and what is "coordinate dependent", since a lot of physics involves crazy coordinate systems , and having ways to know what things are real and what are artefacts of one's coordinate system is invaluable. For a real example, consider the case of singularities of the Schwarzschild solution to GR, where we initially thought there were two singularities, but it later turned out there was only one "real" singularity, and the other singularity was due to a poor choice of coordinate system:<p>Although there was general consensus that the singularity at r = 0 was a 'genuine' physical singularity, the nature of the singularity at r = rs remained unclear. In 1921 Paul Painlevé and in 1922 Allvar Gullstrand independently produced a metric, a spherically symmetric solution of Einstein's equations, which we now know is coordinate transformation of the Schwarzschild metric, Gullstrand–Painlevé coordinates, in which there was no singularity at r = rs. They, however, did not recognize that their solutions were just coordinate transform</p>
]]></description><pubDate>Mon, 12 Aug 2024 18:46:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=41227915</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=41227915</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41227915</guid></item><item><title><![CDATA[New comment by bollu in "Airlines are running out of 4-digit flight numbers"]]></title><description><![CDATA[
<p>I am curious why you feel that way.</p>
]]></description><pubDate>Mon, 05 Aug 2024 11:57:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=41160423</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=41160423</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41160423</guid></item><item><title><![CDATA[New comment by bollu in "The Second Law of Thermodynamics (2011)"]]></title><description><![CDATA[
<p>Does the temperature actually change discontinuously in a physical system from -infty to +infty, or is it a theoretical artifact that does not show up experimentally?</p>
]]></description><pubDate>Tue, 16 Jul 2024 12:09:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=40975781</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=40975781</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40975781</guid></item><item><title><![CDATA[New comment by bollu in "Rete algorithm"]]></title><description><![CDATA[
<p>I have a very well documented implementation of rete, that also produces nice looking SVGs of the state of the rete algorithm here: <a href="https://github.com/bollu/rete">https://github.com/bollu/rete</a><p>It's a really interesting algorithm, and allows one to get O(1) incremental pattern matching (ie, when one adds a pattern, one is told of a matching pattern in O(1) time) at the cost of O(npattern * nitems) memory usage. I was trying to use it in the context of pattern matching within a compiler, but I never went anywhere since I had COVID, then a PhD to get to :)</p>
]]></description><pubDate>Mon, 27 May 2024 13:00:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=40490333</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=40490333</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40490333</guid></item><item><title><![CDATA[New comment by bollu in "2D Rigid Body Collision Resolution"]]></title><description><![CDATA[
<p>Neat! do you have a resource that explains this perspective further?</p>
]]></description><pubDate>Fri, 24 May 2024 11:32:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=40465058</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=40465058</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40465058</guid></item><item><title><![CDATA[New comment by bollu in "Printing Music with CSS Grid"]]></title><description><![CDATA[
<p>Yes, lilypond generates SVG that rescales smoothly</p>
]]></description><pubDate>Wed, 01 May 2024 10:01:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=40221322</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=40221322</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40221322</guid></item><item><title><![CDATA[New comment by bollu in "The Elements of Differentiable Programming"]]></title><description><![CDATA[
<p>You're right on one count: no library implements forward mode. Hence, you're correct that no autodiff library (including pytorch) implement autodiff this way.<p>However, *you're wrong* that forward mode cannot be written in terms of dual numbers. The point is that the addition and multiplication operation for dual numbers correspond exactly to rules of the derivative of addition and the derivative of the product.</p>
]]></description><pubDate>Fri, 22 Mar 2024 23:57:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=39796089</link><dc:creator>bollu</dc:creator><comments>https://news.ycombinator.com/item?id=39796089</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39796089</guid></item></channel></rss>