<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: gpderetta</title><link>https://news.ycombinator.com/user?id=gpderetta</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 13 Jun 2026 08:10:26 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=gpderetta" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by gpderetta in "Starfish by Peter Watts (1999)"]]></title><description><![CDATA[
<p>it starts despairing. Then it gets worse.</p>
]]></description><pubDate>Thu, 11 Jun 2026 16:25:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=48492493</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48492493</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48492493</guid></item><item><title><![CDATA[New comment by gpderetta in "Starfish by Peter Watts (1999)"]]></title><description><![CDATA[
<p>Better here is purely in evolutionary terms, i.e. would a sub- or non non-conscious life form out-compete conscious life forms in its niche.</p>
]]></description><pubDate>Thu, 11 Jun 2026 13:33:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48490142</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48490142</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48490142</guid></item><item><title><![CDATA[New comment by gpderetta in "Starfish by Peter Watts (1999)"]]></title><description><![CDATA[
<p>> I'd say the case it was making has only become more relevant with the chatbot age.<p>Exactly. The central thesis, consciousness not being necessary for intelligence, is very relevant today.<p>Of course, the existential horror background in the book was also quite well done.</p>
]]></description><pubDate>Thu, 11 Jun 2026 11:45:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48489054</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48489054</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48489054</guid></item><item><title><![CDATA[New comment by gpderetta in "The beauty and simplicity of the good old C-style void* in C++"]]></title><description><![CDATA[
<p>I'm pretty sure GCC has been ABI stable far longer that MSVC which used to break ABI every release.<p>GCC was forced to break the std::string ABI by the C++11 standard and they have been lobbing ever since against ABI breaks.</p>
]]></description><pubDate>Tue, 09 Jun 2026 15:49:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48462687</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48462687</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48462687</guid></item><item><title><![CDATA[New comment by gpderetta in "The beauty and simplicity of the good old C-style void* in C++"]]></title><description><![CDATA[
<p>Making DoSomething a template because span is a template is a non-sequitur.<p>If DoSomething works with untyped bytes, it should require a std::span<byte> (or const byte if read only). Incidentally the standard provides a convenient as_bytes(std::span<T>)->std::span<byte>; There isn't an as convenient helper to convert a singular object to a span of bytes, but it is easy to write.<p>As to why one should use span, is that a) it helps making sure that the size travels together with the pointer for some additional safety, b) it is more convenient to work with byte ranges than void ptrs (which do not support pointer math), c) helps a bit communicating intent: in C++ void* are used more often for type erasure than for byte related things.</p>
]]></description><pubDate>Tue, 09 Jun 2026 15:38:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=48462541</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48462541</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48462541</guid></item><item><title><![CDATA[New comment by gpderetta in "The Smallest Brain You Can Build: A Perceptron in Python"]]></title><description><![CDATA[
<p>it not really an if statement here in a perceptron though. It is more akin a logic gate.<p>A transistor (driven to saturation) is a much better model.</p>
]]></description><pubDate>Mon, 08 Jun 2026 09:12:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=48442977</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48442977</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48442977</guid></item><item><title><![CDATA[New comment by gpderetta in "AI will consume as much water in 2030 as 1.3B people"]]></title><description><![CDATA[
<p>What a strange argument. People eat food to survive. Petaflops are not very tasty.</p>
]]></description><pubDate>Fri, 05 Jun 2026 08:02:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=48409434</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48409434</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48409434</guid></item><item><title><![CDATA[New comment by gpderetta in "They’re made out of weights"]]></title><description><![CDATA[
<p>> Reality has no distinction between "data" and "code"<p>yes, yes, ostensibly the universe is built on lisp.<p>But we all know that it was hacked together with a lot of perl[1].<p>[1] you all know the reference.</p>
]]></description><pubDate>Thu, 04 Jun 2026 12:19:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=48397606</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48397606</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48397606</guid></item><item><title><![CDATA[New comment by gpderetta in "They’re made out of weights"]]></title><description><![CDATA[
<p>> Accidentally stumbling on a mechanism that is simple enough to be recreated with every human birth might be possible, accidentally stumbling on a mechanism that took evolution billions of years to find and which it has hung onto by copying it and has never recreated it from scratch, could be much less likely, in a much bigger search space.<p>Maybe, but you could make the same argument about anything artificial.</p>
]]></description><pubDate>Thu, 04 Jun 2026 12:12:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=48397539</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48397539</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48397539</guid></item><item><title><![CDATA[New comment by gpderetta in "Artificial intelligence is not conscious – Ted Chiang"]]></title><description><![CDATA[
<p>While dreaming, the brain synthetizes sensory experience while cutting down (or greatly suppressing) most of external stimuli. Yet it is still conscious.</p>
]]></description><pubDate>Wed, 03 Jun 2026 23:44:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=48391679</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48391679</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48391679</guid></item><item><title><![CDATA[New comment by gpderetta in "What color is your function? (2015)"]]></title><description><![CDATA[
<p>definitely point 1.<p>Also: 5. Async/await is a necessarily evil that allows for extremely high concurrency (10s of millions of concurrent tasks) where stackful coroutines and threads wouldn't practically scale.</p>
]]></description><pubDate>Wed, 27 May 2026 16:14:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=48296448</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48296448</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48296448</guid></item><item><title><![CDATA[New comment by gpderetta in "What color is your function? (2015)"]]></title><description><![CDATA[
<p>See also Cilk/Cilk++</p>
]]></description><pubDate>Wed, 27 May 2026 15:58:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=48296197</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48296197</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48296197</guid></item><item><title><![CDATA[New comment by gpderetta in "What color is your function? (2015)"]]></title><description><![CDATA[
<p>I know approximately zero about webgpu, but I assume it allows for pipelining.</p>
]]></description><pubDate>Wed, 27 May 2026 15:56:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=48296172</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48296172</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48296172</guid></item><item><title><![CDATA[New comment by gpderetta in "What color is your function? (2015)"]]></title><description><![CDATA[
<p>Option 1 could be easily solved by having an atomic {} blocks that statically error if call any potentially async function in it. This is better as it document  where an externally visible invariant is temporarily broken (i.e. reentrancy is required), instead of being implied by the code and potentially being broken a a future code change.<p>Implicit thread safety across async blocks of course break if you introduce actual shared multithreading in the language, while if you have atomic blocks at least you can build transactional memory on top.</p>
]]></description><pubDate>Wed, 27 May 2026 15:54:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=48296149</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48296149</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48296149</guid></item><item><title><![CDATA[New comment by gpderetta in "What color is your function? (2015)"]]></title><description><![CDATA[
<p>With (unchecked) exceptions the custom validator can abort the whole stack non locally and transport the error to the original call stack, the validation library being none the wiser.<p>With stackful coroutines, the custom validator can transport the error to the original call site, handle it and resume back into the validation library if the error was recovered, or abandon the validation (as with exceptions) if unrecoverable.<p>With HKTs, the validation library can be agnostic on the specific return type of the custom validator.</p>
]]></description><pubDate>Wed, 27 May 2026 15:42:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=48295967</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48295967</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48295967</guid></item><item><title><![CDATA[New comment by gpderetta in "What color is your function? (2015)"]]></title><description><![CDATA[
<p>Exceptions are a very good comparison because they also perform non-local control flow.<p>Checked exceptions are a form of coloring, while unchecked aren't. But Java (which has checked exceptions) has an escape into unchecked land in the form of RuntimeError, most async languages do not, short of spawning a background thread (for sync->async) or force blocking (async->sync).<p>Interestingly, Result<T,E> based error models are semantically (and even syntactically, mostly, except for the call-site annotation) equivalent to checked exceptions. Usually these languages have enough abstraction capabilities (HKT for example) to make coloring not an issue, or, again, an escape into unchecked land (for example panic in rust or Go, although the latter hardly counts as having Result-like error handling).</p>
]]></description><pubDate>Wed, 27 May 2026 09:15:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=48291652</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48291652</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48291652</guid></item><item><title><![CDATA[New comment by gpderetta in "What color is your function? (2015)"]]></title><description><![CDATA[
<p>The problem with function color exists when you can't abstract  over it[1]<p>Some statically typed languages (I believe both Haskell, ocaml) have powerful type system that allow abstracting over function types <i>and</i> function colors. Color is not an issue here.<p>Some other statically typed languages (C#, rust, and C++ (at least with the built-in stackless coroutines)) can abstract over types but not over colors. This is a problem.<p>Some statically typed languages (Go) do not encode async-ness statically, so it is not an issue[2].<p>Some dynamically typed languages (scheme, Lua, lisp) also do not encode async-ness statically. Everything is fine.<p>Finally there are some dynamically typed languages (python, js) that,  eskew static types but for some reason still decide to encode async-ness statically. For me this is the most bizarre decision, especially as some of the justifications for static async-ness (performance, memory usage) are less relevant.<p>[1] for example, a litmus test is being able to implement an higher order function that inherits its color from one of its parameters. Essentially this is the problem of generically turning an internal iterator to an external one.<p>[2] fundamentally in these languages continuations are first class values that can be passed around, so the asyncness is naturally not bound to the function that created a continuation.<p>Edit: you can in principle abstract away color in any async language by simply assuming that any function call is async and await it. Then sync functions can trivially be made async. But at this point async annotations no longer convey any useful property: the language might as well implicitly await any function and require call-site annotations for diverging control flow or reentrancy requirements. More practically as languages with async evolve and grow asyncness becomes pervasive and pushes away any sync component.</p>
]]></description><pubDate>Wed, 27 May 2026 01:15:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=48288220</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48288220</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48288220</guid></item><item><title><![CDATA[New comment by gpderetta in "Ferrari Luce"]]></title><description><![CDATA[
<p>amusingly, the last Toyota Prius looks quite nice.</p>
]]></description><pubDate>Tue, 26 May 2026 09:56:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48277443</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48277443</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48277443</guid></item><item><title><![CDATA[New comment by gpderetta in "Ferrari Luce"]]></title><description><![CDATA[
<p>Ferrari has been doing in-house design for a while. With spotty results.</p>
]]></description><pubDate>Tue, 26 May 2026 06:53:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=48276038</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48276038</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48276038</guid></item><item><title><![CDATA[New comment by gpderetta in "Ferrari Luce"]]></title><description><![CDATA[
<p>I wouldn't say it is pretty, but to me it looks nicer on this picture than on the Ferrari website.<p>It is a very generic shape for sure!</p>
]]></description><pubDate>Tue, 26 May 2026 06:51:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=48276014</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=48276014</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48276014</guid></item></channel></rss>