<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>Tue, 28 Apr 2026 20:43:26 +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 "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><item><title><![CDATA[New comment by reichstein in "A Debate about Words"]]></title><description><![CDATA[
<p>Pretty much. _Language_ is how we propagate meaning.<p>Words are units of language, that can be used to build larger composite language constructs. 
(And words, _when written_, are themselves built from smaller syntactic units, letters, at least in non-idiographic writing. But words exist independent of writing, writing is just one way to represent words and language.)<p>And as with everything human, context is important. The same word can have different uses, and the receiver depends on context to determine which meaning the word should carry.
That context can come from the grammar (is it a noun or a verb?), pronunciation (it's really a different word then, it just happens to be spelled the same), and general social context (where are we, and what are we talking about?)<p>It's all pragmatic. It's what we have made to work. Building larger things from smaller things is how we've made language scale to thousands of words, millions of books, which can all still be read my most people. (And maybe understood.)<p>The article seems to be about a discussion that is really about proper names. That's a more philosophical discussion because it touches on "identity", what it means to be "the same".<p>But even names are usually just context dependent designators for an entity that all the participants already (are expected to) agree on what is. That's why using a name is enough to designate it.<p>Language isn't deep. If it was, it wouldn't work.
Anything that two people can agree on, can be used to transfer meaning.</p>
]]></description><pubDate>Sun, 05 May 2024 12:51:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=40264493</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=40264493</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40264493</guid></item><item><title><![CDATA[New comment by reichstein in "We Are a Place of Business"]]></title><description><![CDATA[
<p>When you read the post, it does sound slightly deranged, but if you check the links, they're not actually as bad as they sound.<p>If everybody agrees, you won't get the kind of conflict about company choices that this is about, so obviously there is a disagreement. But that disagreement doesn't have to be between "leadership" and "employees". It doesn't have to be a culture war, or about "SJW"s. It may really just be about _how far_ you can go in your advocacy in the workplace.<p>It's quite possible that there are still lots of internal discussions about Google's engagement with various governments.
But there are limits to how you can express your displeasure, and there should be. 
You can be too antagonistic, too aggressive, to the point where you _do_ appear threatening or disparaging to your coworkers, and that is not ok.<p>In the end, it is a place of work, and every other _worker_ should be able to feel safe. Because they have to be there too.
That's the line that you shouldn't cross when advocating or demonstrating in the workplace.<p>Whether you're political or vegan, don't call your coworkers names for disagreeing with you. Any words you sling in your protest, assume that some of your coworkers will be hit by them.
Even if you think anyone believing what they believe must be "bad people", you were the one to break the truce and start a conflict in the workplace if you say, fx, "all meat eaters are morally bankrupt".<p>You have to work with those people again afterwards. And they have to work with you. And maybe they no longer want to.</p>
]]></description><pubDate>Sat, 20 Apr 2024 08:12:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=40095700</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=40095700</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40095700</guid></item><item><title><![CDATA[New comment by reichstein in "On the impossibility of composing finalizers and FFI"]]></title><description><![CDATA[
<p>GC is usually not specified to happen at particular times, or saying which values are definitely going to be GCed.
Instead it relies on the language semantics, so that any value which is used later in the program, is not going to be GCed. How and when the runtime system determines that a value is not going to be used again is an optimization problem, not a correctness problem.<p>So everything you quote Lua a saying here is consistent. 
The thing is that it only considers "used later" as "used later by the Lua program".
Or rather, it only considers Lua values as "values". A value stored in non-managed memory is not a value. It's not GCed. The `ffi.new`-created Lua value is, and it's finalizer happens to free the native memory that the pointer refers to.<p>So non -Lua "values" are not GCed, they are freed as side effects of Lua values being GCed.</p>
]]></description><pubDate>Tue, 27 Feb 2024 08:50:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=39521709</link><dc:creator>reichstein</dc:creator><comments>https://news.ycombinator.com/item?id=39521709</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39521709</guid></item></channel></rss>