<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: reichstein</title><link>https://news.ycombinator.com/user?id=reichstein</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 21 Jun 2026 02:21:33 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=reichstein" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by reichstein in "I Stored a Website in a Favicon"]]></title><description><![CDATA[
<p>Just because it's my windmill to tilt at: `[\s\S]` can be written shorter and more precisely as `[^]`.</p>
]]></description><pubDate>Sat, 20 Jun 2026 10:18:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=48608052</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=48608052</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48608052</guid></item><item><title><![CDATA[New comment by reichstein in "Int a = 5; a = a++ + ++a; a =? (2011)"]]></title><description><![CDATA[
<p>Assigning to multiple variables in a single expression is fine and useful. Take<p>``` 
  target[i++] = source1[j++] + source2[k++];
```
That's idiomatic, it shows the intent to read and consume the value in a single expression. 
You can write it longer, but not more clearly.<p>It's only when you assign to the same variable multiple times, or read it after it was assigned, that it introduces ordering issues.<p>A single `i++` or `++i`/`i += 1` is safe and useful.</p>
]]></description><pubDate>Fri, 15 May 2026 08:16:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=48145914</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=48145914</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48145914</guid></item><item><title><![CDATA[New comment by reichstein in "Int a = 5; a = a++ + ++a; a =? (2011)"]]></title><description><![CDATA[
<p>The value of the variable is not hoisted by the Java compiler. (It's not that JVM, that only executes the byte code, what y doesn't have that kind of ambiguities.)<p>The semantics of Java is not undefined on multiple assignments to the same variable in an expression, so it can't hoist something if it would change the outcome.<p>Now, I don't actually know what the outcome is, because I don't remember whether `a += e` reads the value of `a` before or after evaluating `e`. The code is still confusing and unreadable to humans, so you shouldn't write it, but the compiler behavior is not undefined.<p>And if your variable is accessed from multiple threads, it may be undefined which intermediate values night be seen.</p>
]]></description><pubDate>Fri, 15 May 2026 07:26:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=48145581</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=48145581</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48145581</guid></item><item><title><![CDATA[New comment by reichstein in "It's hard to justify Tahoe icons"]]></title><description><![CDATA[
<p>... thus falling into the Pitt of failure, where every way out is just a little too far away.</p>
]]></description><pubDate>Mon, 05 Jan 2026 19:05:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=46503164</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=46503164</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46503164</guid></item><item><title><![CDATA[New comment by reichstein in "Why is Zig so cool?"]]></title><description><![CDATA[
<p>Semantic major/minor version 0.15 means it's still in development. It's not supposed to be stable. 
Going from 0.14 to 0.15 allows breaking changes.<p>Try making a similar change between version 5.0 and 6.0, with hundreds of thousands of existing users, programs, packages and frameworks that all have to be updated. (Yes, also the users who have to learn the new thing.)</p>
]]></description><pubDate>Sat, 08 Nov 2025 09:00:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=45855282</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=45855282</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45855282</guid></item><item><title><![CDATA[New comment by reichstein in "Asynchrony is not concurrency"]]></title><description><![CDATA[
<p>So "cooperative multitasking is not preemptive multitasking".<p>The typical use of the word "asynchronous" means that the _language is single-threaded_ with cooperative multitasking (yield points) and event based, and external computations may run concurrently, instead of blocking, and will report result(s) as events.<p>There is no point in having asynchrony in a multithreaded or concurrent execution model, you can use blocking I/O and still have progress in the program while that one execution thread is blocked.
Then you don't need the yield points to be explicit.</p>
]]></description><pubDate>Sat, 19 Jul 2025 06:56:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=44613205</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=44613205</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44613205</guid></item><item><title><![CDATA[New comment by reichstein in "Nvidia won, we all lost"]]></title><description><![CDATA[
<p>Aks. "Every beef anyone has ever had with Nvidia in one outrage friendly article."<p>If you want to hate on Nvidia, there'll be something for you in there.<p>An entire section on 12vhpwr connectors, with no mention of 12V-2x6.<p>A lot of "OMG Monopoly" and "why won't people buy AMD" without considering that maybe ... AMD cards are not considered by the general public to be as good _where it counts_. (Like benefit per Watt, aka heat.)
Maybe it's all perception, but then AMD should work on that perception. If you want the cooler CPU/GPU, perception is that that's Intel/Nvidia. That's reason enough for me, and many others.<p>Availability isn't great, I'll admit that, if you don't want to settle for a 5060.</p>
]]></description><pubDate>Sat, 05 Jul 2025 07:04:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=44470670</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=44470670</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44470670</guid></item><item><title><![CDATA[New comment by reichstein in "Why I no longer have an old-school cert on my HTTPS site"]]></title><description><![CDATA[
<p>JSON is a text format. A parser must recognize the text `2` as a valid production of the JSON number grammar.<p>Converting that text to _any_ kind of numerical value is outside the scope of the specification.
(At least the JSON.org specification, the RFC tries to say more.)<p>As a textural format, when you use it for data interchange between different platforms, you should ensure that the endpoints agree on the _interpretation_, otherwise they won't see the same data.<p>Again outside of the scope of the JSON specification.</p>
]]></description><pubDate>Fri, 23 May 2025 20:42:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=44076423</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=44076423</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44076423</guid></item><item><title><![CDATA[New comment by reichstein in "The scientific “unit” we call the decibel"]]></title><description><![CDATA[
<p>Your irony detector may need calibration.<p>Or mine does.</p>
]]></description><pubDate>Thu, 22 May 2025 07:39:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=44059647</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=44059647</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44059647</guid></item><item><title><![CDATA[New comment by reichstein in "Abusing C to implement JSON parsing with struct methods"]]></title><description><![CDATA[
<p>The JSON spec only defines the JSON text format. It doesn't say what the text means. There are obvious interpretations, but every program that reads or writes JSON can decide what it does with it.<p>On the other hand, the thing that makes JSON actually useful is the interoperability, that JSON written by one program, on one platform, can be read by another preterm on another platform. 
Those programs have to agree on a protocol, what the JSON text must satisfy and what it means.
It's usually not considered valuable to require object properties to be in a specific order, so they don't. But they could.</p>
]]></description><pubDate>Sun, 02 Mar 2025 15:33:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=43231424</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=43231424</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43231424</guid></item><item><title><![CDATA[New comment by reichstein in "A marriage proposal spoken in office jargon"]]></title><description><![CDATA[
<p>So you're saying that "an ask" is "an order" or "a demand", rather than "a request".
Why not use those words?<p>I don't understand what "an ask" means. 
I don't know what the speaker intended with it, and I wouldn't know how a receiver would understand it.<p>It's just communicating badly, using words with no fixed shared meaning.
Or somebody too afraid to be confrontational to phrase a demand as actually demanded.<p>And "learnings" is just somebody too lazy to say "lessons learned".</p>
]]></description><pubDate>Thu, 16 Jan 2025 01:15:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=42719745</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=42719745</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42719745</guid></item><item><title><![CDATA[New comment by reichstein in "Ternary Operators"]]></title><description><![CDATA[
<p>I'm personally convinced that the reason the conditional operator of called "the ternary operator" it's that the ANSI C Programming Language book contains the phrase "the ternary operator, ?:", and a lot of readers didn't know what "ternary" meant and thought it was a name.</p>
]]></description><pubDate>Tue, 05 Nov 2024 21:59:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=42055549</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=42055549</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42055549</guid></item><item><title><![CDATA[New comment by reichstein in "Ternary Operators"]]></title><description><![CDATA[
<p>Agree, other than that I wouldn't use "2-arity". Maybe "2-ary", but that's just "binary" written confusingly. It works for "n-ary".<p>I'd rather say that a binary operator _has_ an arity of 2 or talk about the arity _of_ an operator.</p>
]]></description><pubDate>Tue, 05 Nov 2024 21:55:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=42055530</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=42055530</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42055530</guid></item><item><title><![CDATA[New comment by reichstein in "How to succeed in MrBeast production (Leaked PDF)"]]></title><description><![CDATA[
<p>"Success" is to achieve the intended goal, without causing new problems that outweigh the benefit of reaching that goal.<p>Reaching the goal is not a moral measurement, it is all about efficiency. If you don't reach the goal, your efficiency is zero.
The moral question is what new problems are acceptable. That's where reasonable people can disagree.</p>
]]></description><pubDate>Mon, 16 Sep 2024 10:16:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=41554552</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=41554552</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41554552</guid></item><item><title><![CDATA[New comment by reichstein in "Conservative GC can be faster than precise GC"]]></title><description><![CDATA[
<p>Many quick-sort implementations are deterministic, so will consistently have their worst case behavior on the same inputs again and again.
The good ones try to do a little better than choosing the center element as pivot, but with a well crafted input, it can easily become polynomial anyway.<p>Luckily sorting is something you can easily choose another implementation of, if the default over didn't fit your use-cade, unlike the GC built into the single language implementation that your customer uses.</p>
]]></description><pubDate>Sat, 07 Sep 2024 15:33:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=41474457</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=41474457</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41474457</guid></item><item><title><![CDATA[New comment by reichstein in "Is My Blue Your Blue?"]]></title><description><![CDATA[
<p>That's not how it works.<p>Maybe if I'm given two colors inside that range, I can say which is bluer and which is greener.
Given just one color, I simply cannot say that it's green or blue, or even if it's more green than blue or vice versa.<p>I stopped at the 3rd or 4th come because I couldn't give a honest answer. That makes the test useless. 
I can't complete it with correct answers, and if I give incorrect answers, the conclusion is useless.</p>
]]></description><pubDate>Tue, 03 Sep 2024 06:40:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=41431956</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=41431956</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41431956</guid></item><item><title><![CDATA[New comment by reichstein in "Building LLMs from the Ground Up: A 3-Hour Coding Workshop"]]></title><description><![CDATA[
<p>The word "development" can mean several things. I don't think "software development" sounds bad when grouped with a phrase like "urban development".
It describes growing and tuning software for, well, working better, solving more needs, and with fewer failure modes.<p>I do agree that a "coder" creates code, and a programmer creates programs. I expect more of a complete program than of a bunch of code. If a text says "coder", it does set an expectation about the professionalism of the text. 
And I expect even more from a software solution created by a software engineer. At least a specification!<p>Still, I, a professional software engineer and programmer, also write "code" for throwaway scripts, or just for myself, or that never gets completed. Or for fun. 
I will read articles by and for coders too.<p>The word is a signal. It's neither good nor bad, but If that's not the signal the author wants to send, they should work on their communication.</p>
]]></description><pubDate>Sun, 01 Sep 2024 09:38:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=41415522</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=41415522</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41415522</guid></item><item><title><![CDATA[New comment by reichstein in "Computer scientists invent an efficient new way to count"]]></title><description><![CDATA[
<p>And I got it. When the algorithm sees a word that is already in the list, it discards the word in the list first. Then it adds the word again with the same probability as any other word. 
This ensures that only the last occurrence of each word can occur in the final list, so the final occurrence of each word are all in the final list with the same probability, and prior occurrences are always removed, if no earlier then when the next occurrence is seen.<p>If the input is known to be large, there is no reason to start by adding every element. It can treat the first round like any other, and start out with a _p0_ that is smaller than 1.</p>
]]></description><pubDate>Fri, 17 May 2024 23:47:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=40395250</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=40395250</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40395250</guid></item><item><title><![CDATA[New comment by reichstein in "Computer scientists invent an efficient new way to count"]]></title><description><![CDATA[
<p>The way I'd describe it is:<p>- You have a buffer. You initially try to fit every unique word on there. 
- If the buffer gets full, you know that you can't fit all the unique words in there. So you decide to keep only a fraction, _p1_, of them. Run through the buffer, keep each value with probability _p1_.
- Keep adding new words, again only with probability _p1_.
- If the buffer gets full again, _p1_ was too large, so you choose a lower fraction, _p2_, retain existing elements only with probability _p2_/_p1_, and continue adding new words with probability _p2_.
- Every time the buffer gets full, you lower the faction of words you try to retain.<p>The choice of using _pn_ = (1/2)^n is just easy for a computer, it only needs entire random bits at each step.<p>What I _don't_ get is how this is correct for counting unique words. If I have a text of 16384 unique words, then I can accept that each will be in the final list with the same probability. But if I take that list and repeat the last word 30000 times, then it becomes overwhelmingly plausible that that word is in the final list, even though I haven't changed the number of unique words. 
Maybe there is some statistical property that evens things out, but I couldn't see it from the article.</p>
]]></description><pubDate>Fri, 17 May 2024 20:30:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=40393919</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=40393919</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40393919</guid></item><item><title><![CDATA[New comment by reichstein in "Show HN: I'm 17 and wrote a guide on how to build your own programming language"]]></title><description><![CDATA[
<p>NAND gates are enough to computer any boolean function.
Being Turing complete requires some notion of state and state transition.<p>However, a RAM machine where the program counter is memory mapped, can be Turing complete with a [single machine instruction]( <a href="https://en.m.wikipedia.org/wiki/One-instruction_set_computer" rel="nofollow">https://en.m.wikipedia.org/wiki/One-instruction_set_computer</a>).</p>
]]></description><pubDate>Thu, 16 May 2024 22:37:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=40384179</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=40384179</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40384179</guid></item></channel></rss>