<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: gw</title><link>https://news.ycombinator.com/user?id=gw</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 11 Jun 2026 04:22:44 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=gw" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[Show HN: Ansiwave, an ANSI art and MIDI music mashup]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/oakes/ansiwave">https://github.com/oakes/ansiwave</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=26924343">https://news.ycombinator.com/item?id=26924343</a></p>
<p>Points: 103</p>
<p># Comments: 14</p>
]]></description><pubDate>Sat, 24 Apr 2021 12:15:10 +0000</pubDate><link>https://github.com/oakes/ansiwave</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=26924343</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26924343</guid></item><item><title><![CDATA[New comment by gw in "Launch HN: Athens Research (YC W21) – Open-Source Roam Research"]]></title><description><![CDATA[
<p>Is it a "javascript application" or a "page with text that uses javascript for dynamic features"...</p>
]]></description><pubDate>Tue, 02 Mar 2021 20:39:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=26320320</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=26320320</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26320320</guid></item><item><title><![CDATA[New comment by gw in "Launch HN: Athens Research (YC W21) – Open-Source Roam Research"]]></title><description><![CDATA[
<p>Y'all both are making great tools but consider giving a read-only view of the page when javascript is disabled. After disabling JS this gives me a blank white screen: <a href="https://athensresearch.github.io/athens/" rel="nofollow">https://athensresearch.github.io/athens/</a> Same thing when i tried it with roam.</p>
]]></description><pubDate>Tue, 02 Mar 2021 17:36:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=26317886</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=26317886</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26317886</guid></item><item><title><![CDATA[New comment by gw in "Implementing "defer""]]></title><description><![CDATA[
<p>You sure? <a href="https://forum.nim-lang.org/t/4022#25046" rel="nofollow">https://forum.nim-lang.org/t/4022#25046</a> edit: the docs seem to say you're right, maybe that forum post is outdated but it's from nim's author.</p>
]]></description><pubDate>Thu, 25 Feb 2021 14:49:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=26263270</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=26263270</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26263270</guid></item><item><title><![CDATA[New comment by gw in "Implementing "defer""]]></title><description><![CDATA[
<p>Not the commenter but which one of these is the defer generating?<p><pre><code>    // option 1
    try {
      fp = os.open(x)
      fp.read()
    }
    finally {
      fp.close()
    }

    // option 2
    fp = os.open(x)
    try {
      fp.read()
    }
    finally {
      fp.close()
    }
</code></pre>
Should we close if open fails? Maybe, maybe not, but with try/finally it is obvious which one it is doing.</p>
]]></description><pubDate>Thu, 25 Feb 2021 13:47:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=26262666</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=26262666</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26262666</guid></item><item><title><![CDATA[New comment by gw in "Implementing "defer""]]></title><description><![CDATA[
<p>Nim's defer just wraps the current scope in a try/finally, with the deferred code running in the finally. It is probably better just to use try/finally directly because it's more explicit about what is in the try block. It's not worth it to obscure that just to avoid a new level of indentation...</p>
]]></description><pubDate>Thu, 25 Feb 2021 12:53:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=26262226</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=26262226</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26262226</guid></item><item><title><![CDATA[New comment by gw in "Recreating Real-World Terrain with React, Three.js and WebGL Shaders"]]></title><description><![CDATA[
<p>You can still hold on to references to textures and meshes you uploaded to the GPU without using a full-blown scene graph. Some state is necessary no doubt, but this seems more like unnecessary state that could be replaced by something more direct. But i don't know, i'm not familiar with three.js; the click handlers seem useful.</p>
]]></description><pubDate>Tue, 23 Feb 2021 19:52:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=26242012</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=26242012</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26242012</guid></item><item><title><![CDATA[New comment by gw in "Recreating Real-World Terrain with React, Three.js and WebGL Shaders"]]></title><description><![CDATA[
<p>That makes sense, but it seems like a case of building an abstraction to solve a problem caused by another abstraction. If a scene graph creates a new chore for me that necessitates yet another dependency, i think it'd be simpler to not fuss with these layers at all. That's a choice i don't have with the DOM.</p>
]]></description><pubDate>Tue, 23 Feb 2021 19:30:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=26241714</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=26241714</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26241714</guid></item><item><title><![CDATA[New comment by gw in "Recreating Real-World Terrain with React, Three.js and WebGL Shaders"]]></title><description><![CDATA[
<p>That looks neat but why would you need a react-style reconciler to render a webgl scene? It's immediate mode...every frame is rendered according to the latest state available. What is even being reconciled?</p>
]]></description><pubDate>Tue, 23 Feb 2021 17:48:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=26240317</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=26240317</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26240317</guid></item><item><title><![CDATA[New comment by gw in "I Really Blew It (2020)"]]></title><description><![CDATA[
<p>Crawford says nobody truly followed in his footsteps but I think Jason Rohrer qualifies. The two even shot a documentary together, and the scene where Crawford showed off his Storytron project to Jason was pretty revealing. Jason called it baroque and Crawford responded that he'd consider his life a failure if the project fails:<p><a href="https://www.youtube.com/watch?v=zA_0_dSD3-Q&t=27m35s" rel="nofollow">https://www.youtube.com/watch?v=zA_0_dSD3-Q&t=27m35s</a><p>Crawford definitely is not doing enough introspection. I hope the man resets and makes an inspiring project without the self-romanticizing or self-pitying.</p>
]]></description><pubDate>Mon, 15 Feb 2021 06:18:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=26139695</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=26139695</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26139695</guid></item><item><title><![CDATA[New comment by gw in "Fossil"]]></title><description><![CDATA[
<p>Yeah it's a bit bifurcated. Internally there's a lot of coupling -- HTML embedded directly in the C code and whatnot. This could be resolved if tools could be built on top of fossil, but the CLI code uses `exit` everywhere which makes it impossible to use as a library. I think they made an incomplete attempt at a JSON API, but what you really need is a proper linkable library like libgit2.</p>
]]></description><pubDate>Wed, 30 Sep 2020 21:12:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=24643919</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=24643919</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24643919</guid></item><item><title><![CDATA[Show HN: O'Doyle Rules – a new rules engine for Clojure]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/oakes/odoyle-rules">https://github.com/oakes/odoyle-rules</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=24471015">https://news.ycombinator.com/item?id=24471015</a></p>
<p>Points: 100</p>
<p># Comments: 18</p>
]]></description><pubDate>Mon, 14 Sep 2020 15:05:40 +0000</pubDate><link>https://github.com/oakes/odoyle-rules</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=24471015</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24471015</guid></item><item><title><![CDATA[New comment by gw in "The lack of namespaces on crates.io is a feature"]]></title><description><![CDATA[
<p>It would at least be far less of an issue. I don't see anyone being confused that <a href="https://github.com/facebook/react" rel="nofollow">https://github.com/facebook/react</a> is the official repo, and not <a href="https://github.com/react/react" rel="nofollow">https://github.com/react/react</a>. It's the fact that a collapsed name is a shortcut that imbues it with this special stature. And i believe maven central doesn't even <i>allow</i> one-segment group names for new libraries, though clojars obviously does.</p>
]]></description><pubDate>Fri, 11 Sep 2020 18:52:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=24446083</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=24446083</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24446083</guid></item><item><title><![CDATA[New comment by gw in "The lack of namespaces on crates.io is a feature"]]></title><description><![CDATA[
<p>I wasn't even addressing the crates.io team, i was addressing the author of the post.</p>
]]></description><pubDate>Fri, 11 Sep 2020 18:07:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=24445559</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=24445559</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24445559</guid></item><item><title><![CDATA[New comment by gw in "The lack of namespaces on crates.io is a feature"]]></title><description><![CDATA[
<p>The quote was a guideline, not a requirement. Cognitect (who makes the clojure CLI tool) doesn't even control clojars, the main clojure maven repo, so they wouldn't be able to enforce that even if they wanted to.</p>
]]></description><pubDate>Fri, 11 Sep 2020 17:40:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=24445252</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=24445252</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24445252</guid></item><item><title><![CDATA[New comment by gw in "The lack of namespaces on crates.io is a feature"]]></title><description><![CDATA[
<p>I didn't choose the shorter names because i "care[d] about having shorter names", i did so defensively, because i figured if i chose `net.sekao/iglu`, someone else would choose `iglu/iglu` which would imply that theirs was the original or official version.<p>Another point i didn't mention is that maven was designed from the start to be decentralized; many companies run their own private maven repos, but also pull artifacts from maven central. Having group names reduces the chances of collisions between their private servers and a public maven server.</p>
]]></description><pubDate>Fri, 11 Sep 2020 17:29:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=24445134</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=24445134</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24445134</guid></item><item><title><![CDATA[New comment by gw in "The lack of namespaces on crates.io is a feature"]]></title><description><![CDATA[
<p>You really should look to other ecosystems and see what lessons they've learned. In java, packages are normally "namespaced" by the author's reverse domain name, like `org.lwjgl/lwjgl`.<p>Since clojure uses maven as well, the same applies, but clojure tools like leiningen decided to create a shortcut: if the group and artifact name are the same, like `iglu/iglu`, they can be collapsed into one name: `iglu`<p>Well, that just encouraged everyone to choose collapsible names. In retrospect, this didn't buy us much. Who cares about saving a few characters of typing? Most now seem to agree it wasn't a good idea.<p>When the "collapsed" name falls out of maintenance, the forks will all seem somehow less "official", even if they are much higher quality. Forks are inevitable; why would you want to discourage them?<p>I finally decided to start using the reverse of my personal domain for my future libraries. The java folks were right all along.</p>
]]></description><pubDate>Fri, 11 Sep 2020 16:28:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=24444434</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=24444434</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24444434</guid></item><item><title><![CDATA[New comment by gw in "What Clojure Spec is and what you can do with it"]]></title><description><![CDATA[
<p>I think the instrumenting and generator stuff gets disproportionate attention. For me by far the biggest win from spec has been with parsing. This completely changes how you'd write a library that takes a data structure and parses it into something meaningful (for example, what hiccup does for html or what honeysql does for sql).<p>In the past, this required a lot of very ugly parsing code and manual error-checking. With spec, you write specs and call s/conform. If it failed, you get a nice error, especially if you pair it with expound. If it succeeded, you get a destructured value that is really easy to pull data out of. I've done this in a half dozen different libraries and i'm pretty sure i wouldn't have even written them without spec.</p>
]]></description><pubDate>Thu, 10 Sep 2020 15:05:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=24432987</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=24432987</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24432987</guid></item><item><title><![CDATA[New comment by gw in "Zink (OpenGL on Vulkan) performance better than expected"]]></title><description><![CDATA[
<p>Deprecated, not removed. In fact opengl will still be supported in the new ARM macs.</p>
]]></description><pubDate>Thu, 10 Sep 2020 02:02:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=24428168</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=24428168</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24428168</guid></item><item><title><![CDATA[New comment by gw in "Zink (OpenGL on Vulkan) performance better than expected"]]></title><description><![CDATA[
<p>Interesting. When you say "save and restore state", do you mean actually serializing it and loading it later? In what situation would you want to do this? Not doubting that there is one but i haven't heard of this before.</p>
]]></description><pubDate>Wed, 09 Sep 2020 23:36:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=24427236</link><dc:creator>gw</dc:creator><comments>https://news.ycombinator.com/item?id=24427236</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24427236</guid></item></channel></rss>