<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: escherize</title><link>https://news.ycombinator.com/user?id=escherize</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 03 Jul 2026 12:20:57 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=escherize" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by escherize in "Biff.core: system composition for Clojure web apps"]]></title><description><![CDATA[
<p>I wrote a book about setting up a small gleam project, covers organization of the project in general. A draft is live at <a href="https://escherize.com/gleam-katas" rel="nofollow">https://escherize.com/gleam-katas</a></p>
]]></description><pubDate>Tue, 09 Jun 2026 20:21:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=48467125</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=48467125</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48467125</guid></item><item><title><![CDATA[New comment by escherize in "I built ten custom subagents to tame a 500K-line Clojure codebase"]]></title><description><![CDATA[
<p>Author here. TL;DR: 10 domain-expert subagents, one per major backend area. Happy to talk about why we shaped them this way, what's worked, what hasn't (e.g. routing on overlapping domains is tricky).</p>
]]></description><pubDate>Wed, 29 Apr 2026 15:35:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=47949884</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=47949884</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47949884</guid></item><item><title><![CDATA[I built ten custom subagents to tame a 500K-line Clojure codebase]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.metabase.com/blog/ten-custom-subagents">https://www.metabase.com/blog/ten-custom-subagents</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47949864">https://news.ycombinator.com/item?id=47949864</a></p>
<p>Points: 46</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 29 Apr 2026 15:33:56 +0000</pubDate><link>https://www.metabase.com/blog/ten-custom-subagents</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=47949864</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47949864</guid></item><item><title><![CDATA[New comment by escherize in "Ask HN: What are you working on? (July 2025)"]]></title><description><![CDATA[
<p>Experimenting with exhaustive tagged-union support based on Clojure's defmulti.<p>I think it might be better to go the other way, and have a pattern-matchey form generate the defmethods instead, but I need to gain tacit knowledge about it first.<p><a href="https://github.com/escherize/clj-multimatch">https://github.com/escherize/clj-multimatch</a></p>
]]></description><pubDate>Mon, 28 Jul 2025 04:16:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=44707190</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=44707190</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44707190</guid></item><item><title><![CDATA[New comment by escherize in "Harvard will require test scores for admission again"]]></title><description><![CDATA[
<p>I might be wrong, but: What has science got to say about who should be admitted to schools, or more broadly what the priority of civilization should be? I think you're trying to universalize some of y(our) internalized beliefs into axioms.</p>
]]></description><pubDate>Thu, 11 Apr 2024 21:49:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=40007193</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=40007193</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40007193</guid></item><item><title><![CDATA[New comment by escherize in "Owl: A toolkit for writing command-line user interfaces in Elixir"]]></title><description><![CDATA[
<p>Is there something like this for Java?</p>
]]></description><pubDate>Sun, 08 Jan 2023 17:52:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=34301289</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=34301289</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34301289</guid></item><item><title><![CDATA[New comment by escherize in "Babashka Babooka: Write Command-Line Clojure"]]></title><description><![CDATA[
<p>Babashka has saved me a lot of time. I actually think it is the quickest and easiest way to get started learning Clojure, to a point. No startup time didn't seem like a big deal for my workflow until I got instant startup time when running script, and starting repls -- The kind of repl where you can inspect and act on anything in your program.<p>Babashka tasks is fantastic too! Multi-threaded, simple, and very few surprises.</p>
]]></description><pubDate>Thu, 05 Jan 2023 17:03:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=34262851</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=34262851</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34262851</guid></item><item><title><![CDATA[New comment by escherize in "Structuring Clojure applications"]]></title><description><![CDATA[
<p>Case and cond are nice, but they suffer from the expression problem. When you want to let other people add methods to your code without modifying the source you need to use multimethods (or protocols).<p>If your method only needs 1 argument then why should the other ones matter? I don't see a problem here. clj-kondo will guide people to name them as _ or _thing anyway so you don't even need to think about it.</p>
]]></description><pubDate>Mon, 19 Dec 2022 17:38:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=34054927</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=34054927</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34054927</guid></item><item><title><![CDATA[New comment by escherize in "Godot Engine Release Management: 4.0 and beyond"]]></title><description><![CDATA[
<p>It's not a book, but I think the most high quality introduction to Godot is by HeartBeast on youtube. I went through his "Pixel Platformer" video "Godot action RPG" playlist. These were quick and got me everything I needed to get started.<p>Here are some games I made as a hobbyist with godot, in increasing complexity:<p>- <a href="https://escherize.com/works/magnet" rel="nofollow">https://escherize.com/works/magnet</a>
- <a href="https://escherize.com/evermeet" rel="nofollow">https://escherize.com/evermeet</a>
- <a href="https://escherize.com/works/vampire" rel="nofollow">https://escherize.com/works/vampire</a></p>
]]></description><pubDate>Tue, 29 Nov 2022 21:55:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=33793916</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=33793916</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33793916</guid></item><item><title><![CDATA[New comment by escherize in "Joy: A maximalist web framework for Lisp aficionados"]]></title><description><![CDATA[
<p>Me too! I wrote this little site years ago to help explain what hiccup is: <a href="https://escherize.com/works/hiccup.space/" rel="nofollow">https://escherize.com/works/hiccup.space/</a></p>
]]></description><pubDate>Tue, 07 Jun 2022 17:53:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=31657885</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=31657885</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31657885</guid></item><item><title><![CDATA[Biff is a simple, easy, full-stack web framework for Clojure]]></title><description><![CDATA[
<p>Article URL: <a href="https://biffweb.com/p/new-release">https://biffweb.com/p/new-release</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=30922873">https://news.ycombinator.com/item?id=30922873</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 05 Apr 2022 18:25:05 +0000</pubDate><link>https://biffweb.com/p/new-release</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=30922873</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30922873</guid></item><item><title><![CDATA[New comment by escherize in "Show HN: GFun – Lisp 4 Go"]]></title><description><![CDATA[
<p>Was there something about Joker [0] that you didn't find suitable?<p>[0] - <a href="https://github.com/candid82/joker" rel="nofollow">https://github.com/candid82/joker</a></p>
]]></description><pubDate>Thu, 03 Mar 2022 19:19:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=30545443</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=30545443</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30545443</guid></item><item><title><![CDATA[New comment by escherize in "The perfect configuration format? Try TypeScript"]]></title><description><![CDATA[
<p>Good to see people coming to the same conclusions we have had for a while using Clojure. There's an up and coming runtime data validation framework called Malli that I use for these sorts of files.<p>You can get many of the benefits but also run custom validations (dictate how two keys in a map relate to eachother, or force a be of a certain shape instead of just a string).<p>Here's the example from the script: [0]<p>[0] - <a href="https://malli.io/?value=%7B%20%3Alocale%20%22en-US%22%0A%20%20%3Atimezone%20%22America%2FNew_York%22%0A%20%20%3Alog-level%20%22info%22%0A%20%20%3Aenvironment%20%22local%22%7D&schema=%5B%3Amap%20%0A%20%5B%3Alocale%20string%3F%5D%0A%20%5B%3Atimezone%20string%3F%5D%0A%20%5B%3Alog-level%20%5B%3Aenum%20%22trace%22%20%22debug%22%20%22info%22%20%22warn%22%20%22error%22%20%22fatal%22%5D%5D%0A%20%5B%3Aenvironment%20%5B%3Aenum%20%22local%22%20%22dev%22%20%22staging%22%20%22production%22%5D%5D%5D" rel="nofollow">https://malli.io/?value=%7B%20%3Alocale%20%22en-US%22%0A%20%...</a></p>
]]></description><pubDate>Wed, 17 Nov 2021 18:22:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=29256771</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=29256771</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29256771</guid></item><item><title><![CDATA[New comment by escherize in "Are iPhones Better for Privacy? Comparative Study of iOS and Android Apps"]]></title><description><![CDATA[
<p>I use lineage os for microG [0] myself, but can't find a good foss android keyboard. Is there such a thing?<p>[0] - <a href="https://lineage.microg.org/" rel="nofollow">https://lineage.microg.org/</a></p>
]]></description><pubDate>Mon, 11 Oct 2021 00:33:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=28823288</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=28823288</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28823288</guid></item><item><title><![CDATA[New comment by escherize in "ClojureScript 1.10.866 Release"]]></title><description><![CDATA[
<p>There is a new thing, and it's kind of a toy [0]. But it lets you load clojurescript from a script tag, so there is practically no setup needed!!<p>[0] - <a href="https://borkdude.github.io/sci-script-tag/index.html" rel="nofollow">https://borkdude.github.io/sci-script-tag/index.html</a></p>
]]></description><pubDate>Tue, 25 May 2021 16:38:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=27279041</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=27279041</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27279041</guid></item><item><title><![CDATA[New comment by escherize in "Learn Datalog Today"]]></title><description><![CDATA[
<p>Same here. Good stuff</p>
]]></description><pubDate>Mon, 17 May 2021 05:38:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=27180371</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=27180371</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27180371</guid></item><item><title><![CDATA[New comment by escherize in "Show HN: Favorite writing / journaling tool? Half-finished projects welcome"]]></title><description><![CDATA[
<p>I've been using logseq.com and it is great.<p>It has bidirectional references like you discussed, and sentence level referencing, and embedding.</p>
]]></description><pubDate>Sun, 07 Feb 2021 05:19:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=26052853</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=26052853</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26052853</guid></item><item><title><![CDATA[New comment by escherize in "Foam: A personal knowledge management and sharing system for VSCode"]]></title><description><![CDATA[
<p>I believe logseq.com fulfills those needs. Using the "properties" feature, you can tag any block or page.<p>What's more you can even write queries [0] to ask interesting questions about your notes, like what TODOS were written within a time period, etc.<p>Could you explain quick-linking a little more?<p>[0] <a href="https://logseq.github.io/page/Queries" rel="nofollow">https://logseq.github.io/page/Queries</a></p>
]]></description><pubDate>Thu, 14 Jan 2021 17:26:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=25779209</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=25779209</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25779209</guid></item><item><title><![CDATA[New comment by escherize in "Foam: A personal knowledge management and sharing system for VSCode"]]></title><description><![CDATA[
<p>I am a logseq user. The nice things about it include:<p>- all your usual backlinks, graph views, etc.<p>- saves files as plaintext<p>- md or org mode files<p>- operates on / syncs / saves plaintext files<p>- edit locally, or sync with a git repo<p>- accessible from mobile (via your github repo)<p>So I use this with org-mode files, and on my laptop I edit files locally (I have it pointed at a git repo), which is very reliable. Then the phone simply reads from (and writes to) the same git repo.<p>Since it runs on git, the interoperability of the notes is really nice. If I edit the same page on 2 machines or delete a file, it's just a simple merge conflict that I can use my favorite git merge tool to fix.<p>Not to mention the developer is extremely active and helpful.</p>
]]></description><pubDate>Thu, 14 Jan 2021 16:50:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=25778638</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=25778638</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25778638</guid></item><item><title><![CDATA[New comment by escherize in "Show HN: This website is valid JSON"]]></title><description><![CDATA[
<p>We do basically this. [0][1]<p>[0] escherize.com/w/hiccup.space<p>[1] escherize.com/w/cljsfiddle</p>
]]></description><pubDate>Wed, 09 Dec 2020 02:55:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=25354784</link><dc:creator>escherize</dc:creator><comments>https://news.ycombinator.com/item?id=25354784</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25354784</guid></item></channel></rss>