<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: heavenlyhash</title><link>https://news.ycombinator.com/user?id=heavenlyhash</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 21 Apr 2026 15:36:50 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=heavenlyhash" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by heavenlyhash in "All phones sold in the EU to have replaceable batteries from 2027"]]></title><description><![CDATA[
<p>I've come to realize (I think) that this actually does have a lot to do with waterproofness <i>ratings</i> -- a legibility trap.<p>I notice that Fairphone excludes headphones from their latest devices, and attributes it to the necessary of doing so in order to get an "IP55" rating.<p>I'm not sure if that ultimately makes sense (and suspect that it... doesn't), but the legibility trap of that ratings system might actually be part of the cause of the current market absence of a feature so many people still talk about after years of its unavailability.</p>
]]></description><pubDate>Mon, 20 Apr 2026 18:07:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47838268</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=47838268</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47838268</guid></item><item><title><![CDATA[New comment by heavenlyhash in "Allocating on the Stack"]]></title><description><![CDATA[
<p>I want to like this, and it's directionally good work...<p>But it's hard to see this as very useful unless we also start to see some increases in legibility, and ways to make sure these optimizations are being used (and that textually minor changes don't cause non-obvious performance regressions).<p>I've written a lot of golang code that was benchmarked to shreds, and in which we absolutely cared about stack-vs-heap allocations because they were crucial to overall performance.  I've spent a lot of time pouring over assembler dumps, because grepping those for indications of new object creation was sometimes clearer (and certainly more definitive) than trying to infer it from the source code level.  The one thing I've learned from this?<p>It's very, very easy for all those efforts to come to naught if the rules change slightly.<p>And it's very, very, VERY easy for a co-maintainer on a project to stroll in and make seemingly textually trivial changes that have outsized impacts.  (I'm looking at inliner thresholds, specifically.  Hoo boy.)<p>The best balm we have for this right now is writing benchmarks and making <i>sure</i> they report zero allocs.  (Or unit tests using the runtime memstats harness; potato potato.)  But that is a very fragile balm, and relatively complex to maintain, and (if DX is considered) is <i>not textually local to the code in question</i> -- which means someone changing the code can easily miss the criticality of a section (until the tests yell at them, at least).<p>I really yearn for some markup that can say "I expect this code to contain zero heap allocations; please flunk the compile if that is not the case".</p>
]]></description><pubDate>Sat, 28 Feb 2026 12:58:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=47194788</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=47194788</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47194788</guid></item><item><title><![CDATA[New comment by heavenlyhash in "Odin: Moving Towards a New "core:OS""]]></title><description><![CDATA[
<p>I'm an advocate for "both".<p>- `Option<T>` and `Result<T,E>` at core;<p>- `?T` and `T!E` as type declaration syntax that desugars to them;<p>- and `.?` and `.!` operators so chains like `foo()?.bar()!.baz()` can be written and all the relevant possible return branches are inserted without a fuss.<p>Having `Option` and `Result` be simply normal types (and not special-casing "nullable") has benefits that are... obvious, I'd say.  They're just _normal_.  Not being special cases is great.  Then, having syntactic sugars to make the very, _very_ common cases be easy to describe is just a huge win that makes correct typing more accessible to many more people by simply minimizing keystrokes.<p>The type declaration sugar is perhaps merely nice to have, but I think it really does change the way the average programmer is willing to write.  The chaining operators, though... I would say I borderline can't live without those, anymore.<p>Chaining operators can change the SLOC count of some functions by as much as... say, 75%, if we consider a language like Go with it's infamous "if err not nil" clause that is mandated to spread across three lines.</p>
]]></description><pubDate>Wed, 31 Dec 2025 14:58:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46444637</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=46444637</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46444637</guid></item><item><title><![CDATA[New comment by heavenlyhash in "Odin: Moving Towards a New "core:OS""]]></title><description><![CDATA[
<p>Language explorers looking for lower level languages like this may also want to take a peek at the V language.  <a href="https://vlang.io/" rel="nofollow">https://vlang.io/</a><p>I won't say with confidence either is better than the other; but I think both are worth a look.<p>Odin (iiuc) always makes you manage memory; Vlang permits you to, but does also have linking to the Boehm GC that it will generate for you in most cases.<p>Vlang and Odin in terms of syntax and legibility goals... well.  I suggest if you're interested, just quick look will say more than I can.  :)</p>
]]></description><pubDate>Wed, 31 Dec 2025 14:52:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=46444582</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=46444582</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46444582</guid></item><item><title><![CDATA[New comment by heavenlyhash in "Odin: Moving Towards a New "core:OS""]]></title><description><![CDATA[
<p>This is a delight to read.  I've been doing a survey of languages over the last several days, and Odin is one of the more interesting ones... but looking at the OS and FS related parts of the standard library made me back away at high velocity.  They seemed like litanies of generated code that simply describe every quirk of every platform: not an abstraction at all.  And while I do want those levels to be _available_, I also don't want to be dragged down there in every program.<p>Delighted to see more work will be focused there in the future.</p>
]]></description><pubDate>Wed, 31 Dec 2025 14:47:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=46444525</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=46444525</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46444525</guid></item><item><title><![CDATA[New comment by heavenlyhash in "Package managers keep using Git as a database, it never works out"]]></title><description><![CDATA[
<p>That is roughly the number of new requests per second, but these are not just light web requests.<p>The git transport protocol is "smart" in a way that is, in some ways, arguably rather dumb.  It's certainly expensive on the server side.  All of the smartness of it is aimed at reducing the amount of transfer and number of connections.  But to do that, it shifts a considerable amount of work onto the server in choosing which objects to provide you.<p>If you benchmark the resource loads of this, you probably won't be saying a single server is such an easy win :)</p>
]]></description><pubDate>Sat, 27 Dec 2025 12:45:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=46401468</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=46401468</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46401468</guid></item><item><title><![CDATA[New comment by heavenlyhash in "Europe is scaling back GDPR and relaxing AI laws"]]></title><description><![CDATA[
<p>Really depends on where you're from.<p>OP already mentioned in his area it's phonetically mostly "ew".<p>I'd say a lot of germanic areas also do something I'd describe as "oi".  That'd also make one inclined to use an "an" when speaking.</p>
]]></description><pubDate>Thu, 20 Nov 2025 17:37:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=45995273</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=45995273</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45995273</guid></item><item><title><![CDATA[New comment by heavenlyhash in "KDE launches its own distribution"]]></title><description><![CDATA[
<p>Ah, yes, the KDE people are definitely the people I trust most to deliver a reliable system and not go crazy chasing incongruent rewrites of things while abandoning what works...<p>/s</p>
]]></description><pubDate>Thu, 11 Sep 2025 13:54:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=45211732</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=45211732</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45211732</guid></item><item><title><![CDATA[New comment by heavenlyhash in "Understanding the PURL Specification (Package URL)"]]></title><description><![CDATA[
<p>My 2c (opinions may vary, etc, etc): I think that doing percent-encoding shenanigans is going to be widely perceived as "ugly" and will severely hamper adoption.  I'd reconsider.<p>I think it's quite likely that people are going to care a lot (<i>lot</i>) less about the semantic distinction between <namespace> and <name> (which is a semantic, handwavey, somewhat indistinct subject to begin with) than they are going to be turned off by percent encoding.<p>There's two broad categories of possible outcome for that kind of friction:<p>- Either people-in-the-wild do implement and obey the percent encoding rule, despite the friction (and adoption gets a debuff);<p>- Or, people-in-the-wild will just quietly <i>ignore</i> the percent encoding rule.  And I think this is significantly likely, considering that (iiuc) the only consequence is that the parts with slashes end up considered <name> and never <namespace>.<p>Neither of those outcomes is totally bad, but they're both unfortunate.  For the first one, an adoption debuff is never great. For the the second one (e.g. rule mostly ignored), there's other potential negative outcomes: the community might be fractured; and also, that figuring out what to do when writing a good renderer and some people followed the percent-encoding rule and some didn't... is going to be very, very ugly.<p>On the other hand, if the spec doesn't recommend (or support) percent encoding at all... yes, it loses the ability to express some <namespace> values.  But is that actually something that's truly load-bearing?  Maybe dropping that expressability is actually a viable trade.</p>
]]></description><pubDate>Sun, 08 Jun 2025 11:23:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=44216263</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=44216263</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44216263</guid></item><item><title><![CDATA[New comment by heavenlyhash in "Understanding the PURL Specification (Package URL)"]]></title><description><![CDATA[
<p>soo..... what's the guidance for when package names include a slash?<p>such as approximately everything in golang, which very often matches e.g. "github.com/*" as a package name?<p>Do would PURL suggest that "github.com/foobar/go-whatnot" should be parsed as namespace="github.com" (odd) and package name "foobar/go-whatnot" (since there aren't any more slashes in the blessed separators)?</p>
]]></description><pubDate>Thu, 05 Jun 2025 17:26:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=44193781</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=44193781</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44193781</guid></item><item><title><![CDATA[New comment by heavenlyhash in "Ccache – a fast C/C++ compiler cache"]]></title><description><![CDATA[
<p>Warpforge -- project website: <a href="http://warpforge.io" rel="nofollow">http://warpforge.io</a> / <a href="https://github.com/warptools/warpforge" rel="nofollow">https://github.com/warptools/warpforge</a> -- is a project I work on that's heading a bit in this direction.  Hashes in + build instruction = hashes out.  It's really a powerful primitive indeed.<p>Building big sharable package systems is indeed a second half of the problem.  Figuring out how to make the system have the hashy goodness AND be usefully collaborative with async swarms of people working independently and yet sharing work: tricky.  We're trying to do it, though!<p>We have our first few packages now published, here: <a href="https://catalog.warpsys.org/" rel="nofollow">https://catalog.warpsys.org/</a><p>You can also see _how_ we build things, because we publish the full rebuild instructions with each release: for example, here's how we packaged our bash: <a href="https://catalog.warpsys.org/warpsys.org/bash/_replays/zM5K3Vgei44et6RzTA785sEZGwuFV75vCazjhR11RH5veFdMTx7F5cg2c4NA5HXPK8Zv5TQ.html" rel="nofollow">https://catalog.warpsys.org/warpsys.org/bash/_replays/zM5K3V...</a><p>I'm in #warpforge on matrix with some collaborators if anyone's interested in joining us for a chat and some hacking :)</p>
]]></description><pubDate>Thu, 24 Nov 2022 16:58:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=33733505</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=33733505</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33733505</guid></item><item><title><![CDATA[New comment by heavenlyhash in "Textualize – A framework for building Text User Interface applications"]]></title><description><![CDATA[
<p>I want to see more things like this emerge too.<p>I think one of the bigger barriers is that terminals don't really have a component reuse boundary.<p>What I mean by that is: in the browser, you can always put more HTML inside a div tag, and generally speaking, it's gonna stay within the boundaries of that div tag, and things will compose and it won't be a fuss.  In the terminal: what's the equivalent of that?<p>It's possible, and yet not actually remotely pleasant, to make a new PTY/TTY for each component (or each small application that you want to embed within another), and then grab the state of that PTY and replicate it into a rectangular region in another PTY that's bigger.  There's so, so, SO much friction in this, though.  It also only solves the view bounding: it doesn't solve, for example, the ability to have a copy/paste operation that works on the interior content in a standard way (instead each terminal application solves that itself, usually with some unique bespoke shortcut sequence, because you need _application logic_ to find text ranges since what's rendered to a terminal vs what the logical text state is are usually different).<p>I think if someone created some very basic component-oriented UI system to solve the composition problem -- then kept most of the components as roughly PTY/TTY and TUI concepts! -- it could lead to interesting places that PTY stuff will have difficulty getting to alone.</p>
]]></description><pubDate>Sun, 24 Apr 2022 17:13:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=31145994</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=31145994</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31145994</guid></item><item><title><![CDATA[New comment by heavenlyhash in "C Package Manager"]]></title><description><![CDATA[
<p>Hey good news -- you might be interested in Warpforge: <a href="https://github.com/warpfork/warpforge" rel="nofollow">https://github.com/warpfork/warpforge</a><p>It's heading in exactly that direction.  In fact we specifically want to start using Starlark for module declaration (mind -- optionally.  It's still all declarative JSON API at the bottom!  APIs FTW!).<p>We're also going full hermetic and aiming for reproducible-by-default.  Those should be "duh" things in modern world.  The comparisons with the good parts of Nix should be obvious.<p>The starlark-adjacent parts are still (very) early, but you'll find some notes about the intention in our Notion already: <a href="https://www.notion.so/warpforge/Data-Execution-and-Formulas-552d07f284c843cf85ad2e4c87f66e62" rel="nofollow">https://www.notion.so/warpforge/Data-Execution-and-Formulas-...</a><p>Get in touch if you'd like to collaborate, we'd be thrilled to have more company working on it, or starting to package things!</p>
]]></description><pubDate>Tue, 08 Mar 2022 19:25:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=30605087</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=30605087</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30605087</guid></item><item><title><![CDATA[New comment by heavenlyhash in "Go’s major versioning sucks – From a fanboy"]]></title><description><![CDATA[
<p>You may be entertained by WarpVer: <a href="https://gist.github.com/warpfork/98d2f4060c68a565e8ad18ea4814c25f" rel="nofollow">https://gist.github.com/warpfork/98d2f4060c68a565e8ad18ea481...</a><p>It's not SemVer(tm).<p>That's it.  That's the whole pitch.<p>There's also a section specific to golang, which indeed advocates for sticking with version 0.x.x for a very long time: <a href="https://gist.github.com/warpfork/98d2f4060c68a565e8ad18ea4814c25f#warpver-for-golang" rel="nofollow">https://gist.github.com/warpfork/98d2f4060c68a565e8ad18ea481...</a></p>
]]></description><pubDate>Sun, 06 Mar 2022 14:09:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=30577687</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=30577687</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30577687</guid></item><item><title><![CDATA[New comment by heavenlyhash in "Crev is a code review system"]]></title><description><![CDATA[
<p>> Crev is an actual _code review system_ as opposed to typically practiced _code-change review system_.<p>You have my attention!</p>
]]></description><pubDate>Sun, 19 Sep 2021 07:24:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=28582384</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=28582384</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28582384</guid></item><item><title><![CDATA[New comment by heavenlyhash in "Norsk Data"]]></title><description><![CDATA[
<p>That fund affects day to day life a lot less than you might expect, FWIW.  It's not like we get to just... spend that; it's somewhat comparable to saying "the New York Stock Exchange contains over $foobar dollars per citizen" (although of course the fund isn't managed at all like a stock exchange, either).<p>The most direct influence I've seen of the oil fund is that it provides capital behind some investments systems that are aimed to drive business creation in _non_-oil sectors (including technology).</p>
]]></description><pubDate>Fri, 08 May 2020 09:25:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=23112894</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=23112894</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23112894</guid></item><item><title><![CDATA[New comment by heavenlyhash in "Fyne: Native Mobile UX in Go"]]></title><description><![CDATA[
<p>Layout is sort of the center of questions I have about it too.<p>There's a few built-in layout options: <a href="https://godoc.org/fyne.io/fyne/layout" rel="nofollow">https://godoc.org/fyne.io/fyne/layout</a> ... but not many; I think it'd be a stretch to say it's going to provide equivalents to many of the things one can very quickly and easily do in the web with a handful of divs and spans and (don't hit me) tables.<p>Most of the examples in <a href="https://github.com/fyne-io/examples/" rel="nofollow">https://github.com/fyne-io/examples/</a> don't shed further light on what complex applications might need: everything there appears to be things implemented with very simple and strict grids.  Nothing looks like it proves out a feature like tables that are resizable or can automatically choose reasonable sizes based on content, which would be a huge boon for making development as rapid as web platforms can be.<p>The key interface for making your own layout logic appears to be <a href="https://godoc.org/fyne.io/fyne#Layout" rel="nofollow">https://godoc.org/fyne.io/fyne#Layout</a> .  The good news: it's definitely something you can implement without forking the core of the library.  It looks a little... sparse, though.<p>Let's say I wanted to implement a system where each object I'm laying out can have collapsible margins, and it's the layout engine's responsibly to figure out the collective resolution of that.  Is this interface enough?  How would I proceed?<p>...<p>Maybe I just need more time with it to see the potential, but it's definitely something I find important to watch out for.  I've been burned enough lately by investing time in systems (I'm looking at you, nuklear) just to find their layout primitives are so far off the mark that they're in "start over" territory.  And I think we can also look to more ancient history like the Java Swing era to see that "layoutManager" objects that don't have _enough_ interface information to work with are pretty doomed, because they result in whole divergent non-compatible layout suites that the whole application has to opt into, which is just a nightmare for growing a community with reusable code.<p>Layout is hard.  And important.</p>
]]></description><pubDate>Wed, 12 Feb 2020 10:51:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=22307755</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=22307755</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22307755</guid></item><item><title><![CDATA[New comment by heavenlyhash in "Mural Raises $23M to Reimagine Visual Collaboration"]]></title><description><![CDATA[
<p>I really like Mural and am definitely cheering for them.<p>They <i>really</i> get UX.  It's hard to explain how fluid and useful their product is until you try it.  Nothing else I've experienced comes close for:<p>- quickly and meaningfully getting ideas on a screen<p>- freely organizing information in nonlinear space<p>- understanding <i>where other viewers attention is at</i>, and marshalling it to where it needs to be, in a group setting.<p>I use it both for personal brainstorming and in meetings, and it's great.<p>One wish -- if anyone from Mural is reading this -- would be better export tools.  The current situation where I ask for an export, I get an email with a link later (which <i>expires!</i>), etc, is super silly.  I'd much rather you make my browser hang for a few seconds, honestly -- taking me out of flow is super irritating.  (If this is intentional, to make exporting harder and build a walled garden -- stop it / don't bother!  Your product is already <i>good</i>; I'm exporting PDFs to attach to emails for (vigorous handwaving) Reasons; I will <i>tell</i> people to come back to your product to edit and collab in the second email to them!)</p>
]]></description><pubDate>Sat, 01 Feb 2020 10:33:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=22209812</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=22209812</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22209812</guid></item><item><title><![CDATA[New comment by heavenlyhash in "The most complete brain map: a fly's 'connectome'"]]></title><description><![CDATA[
<p>Computationally?  Think something like "NP hard", except the "verifier" function isn't even plausibly cheap either.<p>Experimentally from the real thing?  I'm not even sure we know how many new pieces of technology we'd need.<p>It's not even clear that "the weights" are the only variable we're still needing.  Even in the pure-computer-science conceptualization of neural networks, things like the activation functions matter; so, it's not unreasonable to suppose there are similar important features to track in biological systems... and whatever those are, we probably aren't getting them captured in a purely geographic connectivity scan.</p>
]]></description><pubDate>Sun, 26 Jan 2020 00:19:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=22149538</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=22149538</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22149538</guid></item><item><title><![CDATA[New comment by heavenlyhash in "DuckDuckGo Is Now a Default Search Engine Option on Android in the EU"]]></title><description><![CDATA[
<p>Sure, but grep the fine original article for the word "privacy".<p>It's not present.<p>HN is discussing HN's tangentially-related feelings more than HN is discussing the article.  I'm not surprised, but I'm certainly frustrated: in addition to being navel-gazing, in this situation it's also substantially missing the main reasons this is <i>good</i>: a regulatory agency is actually doing Reasonable Things -- things any privacy advocate should probably be pleased with -- but not just are they doing Reasonable Things, they're them in a relatively subtle, non-prescriptive way that actually keeps the options open for further future improvement.  This is <i>great</i>; DDG is an incidental detail.</p>
]]></description><pubDate>Mon, 13 Jan 2020 13:13:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=22034125</link><dc:creator>heavenlyhash</dc:creator><comments>https://news.ycombinator.com/item?id=22034125</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22034125</guid></item></channel></rss>