<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: robto</title><link>https://news.ycombinator.com/user?id=robto</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 29 Apr 2026 06:58:57 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=robto" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by robto in "Functional Flocking Quadtree in ClojureScript"]]></title><description><![CDATA[
<p>I think the flocking behavior of birds is one of the most entrancing natural phenomena, it's great to see it play out in such an intuitive way here. Is a quadtree generalizable to three dimensions? This looks like so much fun, thank you for sharing, I'm looking forward to playing with this over the holiday.</p>
]]></description><pubDate>Mon, 22 Dec 2025 07:31:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=46352064</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=46352064</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46352064</guid></item><item><title><![CDATA[New comment by robto in "Clojure Async Flow Guide"]]></title><description><![CDATA[
<p>I've been meaning to try this out, from my read it's a declarative way to get some structured concurrency. I work in a codebase that heavily uses core.async channels to manage concurrency and you really need to pay close attention to error handling. When you're spawning new threads you need to set up your own custom machinery to re-throw errors on a chans, close chans, and it looks like core.async.flow is a way to do all of this declaratively.<p>Just like `core.async` itself was a frontrunner of Virtual Threads on the JVM, I view `core.async.flow` as the Clojure version of the upcoming [0]Structured Concurrency JEP. I do wonder if it will use that under the hood once it becomes stable, the same way `core.async` is planning to move away from the `go` macro to just have it dispatch a virtual thread.<p>[0]<a href="https://openjdk.org/jeps/453" rel="nofollow">https://openjdk.org/jeps/453</a></p>
]]></description><pubDate>Mon, 18 Aug 2025 02:04:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=44936691</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=44936691</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44936691</guid></item><item><title><![CDATA[New comment by robto in "Join the W3C Exploration Interest Group: where standards start"]]></title><description><![CDATA[
<p>I think the RDF standards have produced many useful tools for those that work with graph data. And the W3C is a useful coordination place for new standards like Verifiable Credentials[0] and Decentralized identifiers[1] and JSON Linked Data[2], which are all being used in ActivityPub, Bluesky, and a lot of other decentralizing projects.<p>[0]<a href="https://en.wikipedia.org/wiki/Verifiable_credentials" rel="nofollow">https://en.wikipedia.org/wiki/Verifiable_credentials</a>
[1]<a href="https://en.wikipedia.org/wiki/Decentralized_identifier" rel="nofollow">https://en.wikipedia.org/wiki/Decentralized_identifier</a>
[2]<a href="https://en.wikipedia.org/wiki/JSON-LD" rel="nofollow">https://en.wikipedia.org/wiki/JSON-LD</a></p>
]]></description><pubDate>Tue, 22 Apr 2025 15:34:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=43763389</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=43763389</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43763389</guid></item><item><title><![CDATA[New comment by robto in "Concurrency in Haskell: Fast, Simple, Correct"]]></title><description><![CDATA[
<p>Haha, I read The Joy of Clojure way back in 2013 and conflated the different reference types with STM. So thanks for mentioning that, I always thought it weird that you'd need STM for vars and atoms too.<p>That said, I have never used a ref, nor seen one in use outside of a demo blogpost.</p>
]]></description><pubDate>Sat, 19 Apr 2025 03:14:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=43733941</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=43733941</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43733941</guid></item><item><title><![CDATA[New comment by robto in "Concurrency in Haskell: Fast, Simple, Correct"]]></title><description><![CDATA[
<p>Clojure atoms use STM, though. I've been writing Clojure for almost a decade now, it's not that STM isn't great, it's just that immutable data will carry you a very long way - you just don't need coordinated mutation except in very narrow circumstances. In those circumstances STM is great! I have no complaints. But it just doesn't come up very often.</p>
]]></description><pubDate>Thu, 17 Apr 2025 17:02:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=43719540</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=43719540</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43719540</guid></item><item><title><![CDATA[New comment by robto in "Functors, Applicatives, and Monads"]]></title><description><![CDATA[
<p>One of the fun things about Clojure that reinforces this "trivially true" perspective is that maps and sets are functions:<p><pre><code>    ;; "maps" the keys to the values
    (map {1 "a" 2 "b"} (take 5 (cycle 1 2))) ;;=> '("a" "b" "a" "b" "a")
    ;; acts as a predicate that tests for membership
    (filter #{"a" "b" "c"} ["a" "b" "c" "d" "e" "f"]) ;;=> '("a" "b" "c")
</code></pre>
Once you get used to this idiom you naturally start thing of other functions (or applicative functors) the same way. The syntax sugar makes for some very concise and expressive code too.</p>
]]></description><pubDate>Mon, 31 Mar 2025 02:19:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=43530097</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=43530097</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43530097</guid></item><item><title><![CDATA[New comment by robto in "Age Verification Laws: A Backdoor to Surveillance"]]></title><description><![CDATA[
<p>I wonder if there's any chance of technology like Verifiable Credentials[0] getting any adoption because of these laws. I think there are legitimate use cases where you would want to say, "hey, some third-party authority can vouch for me that ____", and not reveal to the third party who's asking for verification and not reveal to the party requiring verification any other claim besides the specific one that they need (say, age in this case).<p>[0]<a href="https://en.wikipedia.org/wiki/Verifiable_credentials" rel="nofollow">https://en.wikipedia.org/wiki/Verifiable_credentials</a></p>
]]></description><pubDate>Fri, 07 Mar 2025 22:34:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=43295537</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=43295537</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43295537</guid></item><item><title><![CDATA[New comment by robto in "Show HN: TideCloak – Decentralized IAM for security and user sovereignty"]]></title><description><![CDATA[
<p>Is the Cybersecurity Fabric an open standard? I didn't see any licenses in the Github repository. Is Tidecloak just an implementation of an open protocol? Or is it entirely proprietary?</p>
]]></description><pubDate>Fri, 20 Dec 2024 21:18:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=42475146</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=42475146</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42475146</guid></item><item><title><![CDATA[Break Versioning (BreakVer)]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.taoensso.com/break-versioning">https://www.taoensso.com/break-versioning</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42057025">https://news.ycombinator.com/item?id=42057025</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 06 Nov 2024 03:15:33 +0000</pubDate><link>https://www.taoensso.com/break-versioning</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=42057025</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42057025</guid></item><item><title><![CDATA[New comment by robto in "A Simple open-source Phone programmable with Arduino"]]></title><description><![CDATA[
<p>I could see using one of these as a landline replacement. I was lamenting with another parent the expense of a landline and how difficult it is for kids to call each other to arrange a park meetup or other games - this could fill that gap perfectly.</p>
]]></description><pubDate>Sat, 19 Oct 2024 17:12:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=41889042</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=41889042</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41889042</guid></item><item><title><![CDATA[New comment by robto in "Dasel: Select, put and delete data from JSON, TOML, YAML, XML and CSV"]]></title><description><![CDATA[
<p>All data is a graph, and so graph query languages work well for this. SPARQL is my tool of choice but cypher and maybe GQL (though that's new).</p>
]]></description><pubDate>Mon, 19 Aug 2024 15:05:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=41291668</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=41291668</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41291668</guid></item><item><title><![CDATA[New comment by robto in "Spaced repetition for teaching two-year olds how to read"]]></title><description><![CDATA[
<p>That looks pretty nice - my youngest lost interest once the stories started, and I think that was partly because the stories weren't particularly engaging. But overall I was extremely impressed with the pedagogy, it was so easy it felt like cheating!<p>Now I need to figure out a fun way to do spelling, since both of the kids like to write but English is really tricky to spell.</p>
]]></description><pubDate>Sat, 15 Jun 2024 15:23:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=40690330</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=40690330</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40690330</guid></item><item><title><![CDATA[New comment by robto in "Spaced repetition for teaching two-year olds how to read"]]></title><description><![CDATA[
<p>For what it's worth, the oldest got all the way through on his own power, asking to do it each day. The next kid petered out around day 45 and we didn't try to force it, but she's even more advanced than the first one was at her age now. Not stressing about it seems to be a good approach : )</p>
]]></description><pubDate>Sat, 15 Jun 2024 04:37:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=40687558</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=40687558</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40687558</guid></item><item><title><![CDATA[New comment by robto in "Spaced repetition for teaching two-year olds how to read"]]></title><description><![CDATA[
<p>I taught my kids how to read pretty early (4, not 2) using the Teach Your Child to Read in 100 Easy Lessons book, which was astoundingly easy.<p>Both kids are now in school and reading significantly above grade level and I have different concern - their ability far outstrips their experience. So even though they can read large unfamiliar words, the subject matter of the stories that are challenging enough to be interesting to them deal with themes and experiences that are pretty foreign. Books that deal more with their experiences and interests are written at a much more basic reading level and are not interesting to them.<p>They seem to really enjoy reading but sometimes I wonder if early reading is really beneficial in the long run. On the other hand, I certainly read some books too young, but I don't really regret that, so maybe I'm just making up problems to worry about.</p>
]]></description><pubDate>Sat, 15 Jun 2024 03:58:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=40687423</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=40687423</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40687423</guid></item><item><title><![CDATA[New comment by robto in "Try Clojure"]]></title><description><![CDATA[
<p>This is my goto:<p>webserver: ring-jetty9-adapter[0]<p>routing: reitit[1]<p>html templates: hiccup[2]<p>never used an ORM, but happily used HugSQL for making composable queries[3].<p>[0]<a href="https://github.com/sunng87/ring-jetty9-adapter">https://github.com/sunng87/ring-jetty9-adapter</a>
[1]<a href="https://github.com/metosin/reitit">https://github.com/metosin/reitit</a>
[2]<a href="https://github.com/weavejester/hiccup">https://github.com/weavejester/hiccup</a>
[3]<a href="https://www.hugsql.org/" rel="nofollow">https://www.hugsql.org/</a></p>
]]></description><pubDate>Wed, 22 May 2024 21:22:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=40446751</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=40446751</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40446751</guid></item><item><title><![CDATA[New comment by robto in "A walk through Chicago Pedway (2017)"]]></title><description><![CDATA[
<p>Reminds me of the Minneapolis Skyway[0]. I wonder if other cold-weather cities have similar systems.<p>[0]<a href="https://www.skywaymyway.com/" rel="nofollow">https://www.skywaymyway.com/</a></p>
]]></description><pubDate>Mon, 12 Feb 2024 19:51:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=39349492</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=39349492</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39349492</guid></item><item><title><![CDATA[New comment by robto in "Ask HN: Good books on philosophy of engineering?"]]></title><description><![CDATA[
<p>They say naming is one of the hard problems of computer science, but there's not much concrete work addressing it.<p>I'd recommend Elements of Clojure[0].<p>Don't be fooled by the title, it's not really about Clojure, it just uses Clojure as an illustration as it discusses a very subtle general problem. From the website:<p>> The first chapter, Names, explains why names define the structure of our software, and how to judge whether a name is any good.<p>> The second chapter, Idioms, provides specific, syntactic advice for writing Clojure which is clean and readable.<p>> The third chapter, Indirection, looks at how code can be made simpler and more robust through separation.<p>> The final chapter, Composition, explores how the constituent pieces of our code can be combined into an effective whole.<p>I find it a thoughtful and considerate overview of an area that everybody has some implicit knowledge of, and something that leads to a more abstract concept of quality.<p>[0]<a href="https://elementsofclojure.com/" rel="nofollow">https://elementsofclojure.com/</a></p>
]]></description><pubDate>Fri, 19 Jan 2024 20:57:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=39061052</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=39061052</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39061052</guid></item><item><title><![CDATA[New comment by robto in "I miss human curation"]]></title><description><![CDATA[
<p>The list of text links is basically what <a href="https://pinboard.in" rel="nofollow">https://pinboard.in</a> is, basically - social bookmarking. I only use it privately, but it does have the exact function you're talking about as well. I don't think I would use it with thumbnail previews, since I like how lightweight it is, but it wouldn't be difficult to build something like that.</p>
]]></description><pubDate>Tue, 16 Jan 2024 22:41:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=39020163</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=39020163</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39020163</guid></item><item><title><![CDATA[New comment by robto in "The Death Star and the Final Trench Run (2017)"]]></title><description><![CDATA[
<p>The books weren't actually destroyed, there is a shot of Rey with them on Millenium Falcon at the end of the movie when they pick up all the survivors. I was actually really excited about this foreshadowing a Jedi reformation - a rediscovery of true orthodoxy a la Luther and a rejection of the corrupt ediface of the Jedi Order, as seen by its fruits. This was further paralleled by the stable boy at the end using the force to summon his broom - a parallel to turning over of interpretational authority of scripture from the ecclesiastics to the laity.<p>Of course, all this was thrown away in the next installment, so it turns out I'm the fool!</p>
]]></description><pubDate>Mon, 20 Nov 2023 21:59:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=38355510</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=38355510</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38355510</guid></item><item><title><![CDATA[New comment by robto in "W3C Invites Implementations of RDF Dataset Canonicalization"]]></title><description><![CDATA[
<p>I haven't seen much else that's competing in the same space, and it seems to be progressing as a standard, albeit slowly.</p>
]]></description><pubDate>Fri, 03 Nov 2023 04:00:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=38124346</link><dc:creator>robto</dc:creator><comments>https://news.ycombinator.com/item?id=38124346</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38124346</guid></item></channel></rss>