<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: _0w8t</title><link>https://news.ycombinator.com/user?id=_0w8t</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 16 Apr 2026 23:56:34 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=_0w8t" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by _0w8t in "Scripting with Go (2022)"]]></title><description><![CDATA[
<p>The error handling verbosity in Go should be blamed partially on the formatter that replaces one-liner if err != nil { return err } with 3 lines.</p>
]]></description><pubDate>Sun, 20 Aug 2023 18:25:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=37201710</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=37201710</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37201710</guid></item><item><title><![CDATA[New comment by _0w8t in "Scripting with Go (2022)"]]></title><description><![CDATA[
<p>From a technical point of view    nothing prevents the scripting package to be just as informative with errors as bash and have a helper to log and clear the error. If it is not already the case, I call it a bug.</p>
]]></description><pubDate>Sun, 20 Aug 2023 18:19:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=37201654</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=37201654</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37201654</guid></item><item><title><![CDATA[New comment by _0w8t in "Why Tailwind CSS Won"]]></title><description><![CDATA[
<p>There are plenty of web site builders that allow for a drag-and-drop construction. But people who use them are not programmers.<p>I.e. programming is not supposed to be easy. So if one sticks to it, the problem has to be hard at least from the management point of view.</p>
]]></description><pubDate>Wed, 16 Aug 2023 14:58:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=37148108</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=37148108</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37148108</guid></item><item><title><![CDATA[New comment by _0w8t in "JWST spots giant black holes all over the early universe"]]></title><description><![CDATA[
<p>Experimentally one never observes waves. Light is detected based on its interaction with electrons and that is always by an electron absorbing a quanta of energy, not via some continuous process as would be the case with waves.<p>Classically one can imagine that as if electron was hit by a particle. But then we have light diffraction and interference, which classically is described as a wave. So from a classical point of view light travels as a wave but interact as a particle.<p>As of nature of the light, then consider that there is a reformulation of a classical electrodynamics that eliminates electromagnetic waves all together. There are only electrons that interacts with each other directly with no waves in between. Feynman spent quite some time trying to develop quantum electrodynamic based on that. He failed. Still the point stands that we never observe light directly but only through its effects on electrons and other charged particles. So it could be that  what we call light is a theoretical artifact and there is no light in reality.</p>
]]></description><pubDate>Mon, 14 Aug 2023 22:33:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=37127599</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=37127599</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37127599</guid></item><item><title><![CDATA[New comment by _0w8t in "What is gained and lost with 63-bit integers? (2014)"]]></title><description><![CDATA[
<p>This describes 32 bit CPU. As opposite to V8, SpiderMonkey, Mozilla’s JS engine, uses 64 bit words and NaN boxing, even on a 32 bit CPU, to represent a generic JS thing.</p>
]]></description><pubDate>Sun, 13 Aug 2023 05:09:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=37106876</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=37106876</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37106876</guid></item><item><title><![CDATA[New comment by _0w8t in "What is gained and lost with 63-bit integers? (2014)"]]></title><description><![CDATA[
<p>When there are more bits in a pointer than NaN 52 bits allows, the trick is to replace pointers with indexes from the start of JS heap. This is not efficient even with arrangement like having heap aligned, say, on 4GB or even more granular address so to get the full pointer one just use bit operation, not an add. But if one wants efficiency, then make sure that types in the code is stable and JIT will generate type-specific code.</p>
]]></description><pubDate>Sat, 12 Aug 2023 16:45:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=37101955</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=37101955</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37101955</guid></item><item><title><![CDATA[New comment by _0w8t in "Iterators in Go: A proposed extension"]]></title><description><![CDATA[
<p>I.e. C# and many other languages transform a function with the yield statement into a state machine implementing the iteration protocol.<p>This proposal does the opposite. It transforms the loop body into a closure passed into the iterator.</p>
]]></description><pubDate>Sat, 12 Aug 2023 11:53:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=37099266</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=37099266</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37099266</guid></item><item><title><![CDATA[New comment by _0w8t in "Iterators in Go: A proposed extension"]]></title><description><![CDATA[
<p>Defer will be executed normally when the function exits. yield here is not a statement but a normal function.</p>
]]></description><pubDate>Sat, 12 Aug 2023 11:45:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=37099206</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=37099206</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37099206</guid></item><item><title><![CDATA[New comment by _0w8t in "Wendelstein 7-X: Gigajoule energy turnover generated for eight minutes"]]></title><description><![CDATA[
<p>The big plus of stellarator design is inherent absence of plasma instabilities affecting tokamaks. Notice that future upgrade of Wendelstein may allow to hold plasma for a hour compared with minutes at best with tokamaks. Many physicists for that reason believes stellarator is the only way to archive practical fusion.</p>
]]></description><pubDate>Sat, 12 Aug 2023 10:25:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=37098751</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=37098751</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37098751</guid></item><item><title><![CDATA[New comment by _0w8t in "What is gained and lost with 63-bit integers? (2014)"]]></title><description><![CDATA[
<p>In modern JS engines with 64-bit CPU when the engine cannot deduce types and must use a generic word to represent any kind of values numbers (double values) are not boxed. Rather for everything else a NaN tag bit pattern is used. I.e. code checks if the word matches the NaN pattern. If not, a double is assumed. Otherwise the NaN is checked if it is a real NaN o something else masked as NaN.<p>This slows down object access as detecting and stripping the NaN tag requires few CPU instructions. Plus it assumes that pointers only have 48 bits with rest are zeros (true for AMD, ARM and Intel) or at  least have fixed values (can be arranged on more exotic CPUs). But that does not require to box numbers greatly reducing GC pressure.</p>
]]></description><pubDate>Sat, 12 Aug 2023 10:10:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=37098679</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=37098679</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37098679</guid></item><item><title><![CDATA[New comment by _0w8t in "Speed Up C++ Compilation"]]></title><description><![CDATA[
<p>The primary reason for Pimpl is to ensure binary compatibility for C++. QT uses it extensively precisely for this reason. Reduced compilation time is just a nice bonus.</p>
]]></description><pubDate>Sat, 05 Aug 2023 20:19:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=37015930</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=37015930</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37015930</guid></item><item><title><![CDATA[New comment by _0w8t in "Speed Up C++ Compilation"]]></title><description><![CDATA[
<p>Chromium once supported unity builds. For me it speeded up builds from 6 hours down to 1 hour 20 minutes on a Windows laptop. And Chromium tries to make their headers reasonable.<p>Chromium eventually dropped support for such builds. At Google the developers have access to a compilation farm that compiles within like 5 minutes. With such farm unity builds makes things slower as they decrease parallelism. So Google decided not to support them not to deal with very occasional compilation breakage.</p>
]]></description><pubDate>Sat, 05 Aug 2023 20:10:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=37015862</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=37015862</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37015862</guid></item><item><title><![CDATA[New comment by _0w8t in "Philosophy of Science 101: What is the problem of induction?"]]></title><description><![CDATA[
<p>Bayesian inference is mathematically sound as it is based on a very generic postulates and allows to compare probabilities based in the current information and made a decision accordingly. With the proper approach the errors are automatically accounted for. I.e. if the errors are large, then one will see that probabilities are too close each other to make a sound decision. Still if one must made a decision, then one can just use the answer based on Bayesian reasoning.<p>The problem in practice is that accounting for the existing information is hard with guessing of priors etc. But that is the problem of applicability of Bayesian inference, not the problem with the principle itself.<p>I.e. Bayesian inference is a good answer to the philosophical problem of induction. It is sad that the article has not even touched on that subject.</p>
]]></description><pubDate>Tue, 01 Aug 2023 14:56:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=36956776</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=36956776</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36956776</guid></item><item><title><![CDATA[New comment by _0w8t in "Philosophy of Science 101: What is the problem of induction?"]]></title><description><![CDATA[
<p>The article has not mentioned Bayesian inference, which allows to make sound decisions under uncertainty.<p>For example, in practice the raven problem is not to guess if all ravens are black but to predict the color of the next raven if that color affects a decision.<p>From that perspective if one knows absolutely nothing about ravens and has seen a single black raven, then it is mathematically sound to guess that the next raven will be black, not white, and make a decision accordingly.</p>
]]></description><pubDate>Tue, 01 Aug 2023 05:11:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=36952572</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=36952572</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36952572</guid></item><item><title><![CDATA[New comment by _0w8t in "Austral Programming Language"]]></title><description><![CDATA[
<p>Inferring the number of loop integrations or recursion levels is in practice impossible when the number depends on the user input.<p>For a system language I would like to see that when the compiler cannot infer the bound on the stack size or when that static bound exceeds   some static limit, a function call is treated as fallible.</p>
]]></description><pubDate>Fri, 28 Jul 2023 18:27:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=36911113</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=36911113</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36911113</guid></item><item><title><![CDATA[New comment by _0w8t in "Austral Programming Language"]]></title><description><![CDATA[
<p>To statically ensure a stack overflow does not happen requires that recursion is rejected by the type system.  Austral does not do that so the stack overflow is a dynamic condition similar to memory allocation failures.</p>
]]></description><pubDate>Fri, 28 Jul 2023 06:13:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=36903548</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=36903548</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36903548</guid></item><item><title><![CDATA[New comment by _0w8t in "Austral Programming Language"]]></title><description><![CDATA[
<p>Yet Austral returns optional types from any memory allocation function rather than calling abort.<p>And stack overflow is a memory allocation failure, so why is the discrepancy? I.e. for the language focusing on correctness this is an unfortunate omission.<p>On the other hand none of popular or semi-popular system languages allows to explicitly control stack consumption. Zig has some ideas, but I am not sure if those will be implemented.</p>
]]></description><pubDate>Fri, 28 Jul 2023 01:56:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=36902349</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=36902349</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36902349</guid></item><item><title><![CDATA[New comment by _0w8t in "C++23: The Next C++ Standard"]]></title><description><![CDATA[
<p>One never writes such expression in a serious code. Even with move semantic and lazy evaluation proxies it is hard to avoid unnecessary copies. Explicit temporaries make code mode readable and performant:<p>auto t = minus(vec1, vec2);
mul_by(t, 0.5/0.3);
add(t, vec3);
mul_by(t, 0.3);
v4 = std::move(t);</p>
]]></description><pubDate>Tue, 11 Jul 2023 22:58:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=36688352</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=36688352</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36688352</guid></item><item><title><![CDATA[New comment by _0w8t in "The halting problem is decidable on a set of asymptotic probability one (2006)"]]></title><description><![CDATA[
<p>Markov’s variety of the constructive mathematics is just what Bishop did plus the assumption that Church-Markov-Turing thesis holds. One does not need to assume that to recover any result of classical mathematics applicable in the real world. Also all those weird results of Markov’s approach that apparently “contradict” the classical mathematics is a consequence of Church thesis. Without that one cannot prove them. So Bishop’s approach is always compatible with classical mathematics.<p>As for Hahn—Banach I can only site the book “Techniques of Constructive Analysis” by Douglas S. Bridges:<p>For example, our proof of the Hahn-Banach theorem (Theorem 5.3.3) is, as it stands, a valid algorithmic proof of the classical Hahn Banach theorem. Moreover and this is one advantage of a constructive proof in general our proof embodies an algorithm for the construction of the functional whose existence is stated in the theorem. This algorithm can be extracted from the proof, and, as an undeserved bonus, the proof itself demonstrates that the algorithm is correct or, in computer science parlance, "meets its specifications".
…<p>The Hahn-Banach theorem enables us to extend a normed linear functional, with an arbitrarily small increase in norm, from a subspace of a normed space to the entire space. This fundamental result has numerous applications throughout functional analysis.<p>In the constructive context we deal only with the extension of linear functionals on subspaces of a separable normed space. The standard classical proofs extending the theorem to nonseparable normed spaces depend on Zorn's lemma and are therefore nonconstructive.
…
The classical Hahn-Banach theorem says that we can extend a bounded linear functional v from Y to a functional u on the whole space X with exact preservation of norm. In general, as Exercise 5 shows, we cannot do this constructively. But, as we shall see, if we impose extra conditions on the norm of X, then we can make the extension norm-preserving.</p>
]]></description><pubDate>Mon, 29 May 2023 07:20:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=36111550</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=36111550</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36111550</guid></item><item><title><![CDATA[New comment by _0w8t in "The halting problem is decidable on a set of asymptotic probability one (2006)"]]></title><description><![CDATA[
<p>The notion of uncountable set assumes certain axioms and classical logic. If instead one assumes rules of constructive mathematics, then one cannot construct uncountable set. Simplifying only computable numbers can exist.</p>
]]></description><pubDate>Sun, 28 May 2023 19:39:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=36107051</link><dc:creator>_0w8t</dc:creator><comments>https://news.ycombinator.com/item?id=36107051</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36107051</guid></item></channel></rss>