<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: midnight_eclair</title><link>https://news.ycombinator.com/user?id=midnight_eclair</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 29 Apr 2026 21:39:09 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=midnight_eclair" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by midnight_eclair in "Bringing Clojure programming to Enterprise (2021)"]]></title><description><![CDATA[
<p>the benefit of lisp in an editor with integrated repl environment is that you get to see immediate feedback by easily evaluating chunks of your code as you navigate it, without copying stuff back and forth between the editor and the repl<p>and the benefit of lisp comes from the fact that every expression is fully delineated by parentheses, so you don't need to select any text, find the start or the end of any syntactic construction, you just eval the form you're standing at and see the result<p>or just as easily you can wrap that form, bind the locals to test values and eval that to see what changes</p>
]]></description><pubDate>Thu, 02 Apr 2026 16:38:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=47616756</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47616756</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47616756</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Bringing Clojure programming to Enterprise (2021)"]]></title><description><![CDATA[
<p>i'm surprised anybody coming from clojure would say this.<p>you absolutely do NOT need to learn paredit to write lisp, any modern vim/emacs/vscode plugin will just handle parentheses for you automatically.<p>that said, if you <i>do</i> learn paredit style workflow - nobody in any language in any ide will come even close to how quickly you can manipulate the codebase.</p>
]]></description><pubDate>Thu, 02 Apr 2026 16:31:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47616670</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47616670</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47616670</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Bringing Clojure programming to Enterprise (2021)"]]></title><description><![CDATA[
<p>i can link you similarly undecipherable walls of text in rust and zig and c<p>but i bet if you sat down a junior developer not yet entrenched in any style yet, they'd be able to grok lisp code MUCH faster than the intricacies of syntax of the other alternatives ¯\_(ツ)_/¯</p>
]]></description><pubDate>Thu, 02 Apr 2026 16:27:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=47616617</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47616617</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47616617</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Bringing Clojure programming to Enterprise (2021)"]]></title><description><![CDATA[
<p>so many similar conversations happening, it's refreshing xD<p><a href="https://news.ycombinator.com/item?id=47587386">https://news.ycombinator.com/item?id=47587386</a></p>
]]></description><pubDate>Thu, 02 Apr 2026 16:15:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47616430</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47616430</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47616430</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Bringing Clojure programming to Enterprise (2021)"]]></title><description><![CDATA[
<p>every time i go back to writing non-clojure code outside of repl-driven environment i feel like a cave man banging rocks against each other<p>no amount of ide smartness or agentic shenanigans is going to replace the feeling of having development process in sync with your thought process</p>
]]></description><pubDate>Thu, 02 Apr 2026 11:22:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47612914</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47612914</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47612914</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Clojure: The Documentary, official trailer [video]"]]></title><description><![CDATA[
<p>> What you're calling "data-oriented DSLs" is not constrained<p>constraints come from the interpreter, not from the syntax<p>> in my book just specifying a data-structure doesn't make a language<p>correct, it does not<p>what makes it a language is defining constraints on that structure and rules for how it's interpreted<p>that works both for clojure (where the data structure can involve lists, vectors, maps and primitives) and traditional lisps (where data structure is lists, or to be precise cons cells and primitives)<p>in both cases macros can be used and are used (but don't <i>have</i> to be used) to prevent immediate evaluation of those data structures according to host language rules and instead change how they are evaluated according to DSL author's rules<p>for example, datomic queries are just data structures, but they clearly form a constrained language with well defined semantics and the fact that they're not implemented via macros doesn't make them less of a DSL</p>
]]></description><pubDate>Thu, 02 Apr 2026 07:14:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=47611016</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47611016</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47611016</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Clojure: The Documentary, official trailer [video]"]]></title><description><![CDATA[
<p>> the original person suggested it's not popular because it doesn't have one, and I just don't think that's true<p>i agree that it's not a sufficient condition, but it's an important factor and it would <i>significantly</i> improve the onboarding process by collapsing the decision space beginners have to navigate<p>even going by your definition of onboarding (the effort of getting more people) - dispersing that effort across multitude of dimensions and directions is certainly less effective than coordinating and converging<p>not intending to have an argument about popularity, but since you keep bringing up elixir - there's a lot that can be said about elixir/phoenix as to why they aren't more popular than they are, but they <i>are</i> more popular than clojure in every recent ranking i've checked ¯\_(ツ)_/¯<p>if anything, elixir/phoenix is a good example for how strong default improves onboarding and ecosystem cohesion, even if it doesn't make the language broadly popular<p>i don't look at it from perspective of "what should clojure do to be more popular than php" - there are fundamental reasons why that just can't happen in this timeline<p>i look at it from perspective of "what does this ecosystem lack that makes it hard for beginners to get going and stick"<p>and lack of "single recommended way of doing it" is at the top of my list</p>
]]></description><pubDate>Thu, 02 Apr 2026 06:53:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=47610847</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47610847</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47610847</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Functional programming accellerates agentic feature development"]]></title><description><![CDATA[
<p>even if i would generally agree with the principles, no amount of markdown prompting is going to increase my confidence in agent's output and so i keep asking this question:<p>> what do you use for normative language to describe component boundary, function and cross-component interactions?<p>something i can feed into a deterministic system that will run a generative suite of tests (quickcheck/hypothesis/clojure.spec) that will either give me the confidence or give the agent the feedback.</p>
]]></description><pubDate>Wed, 01 Apr 2026 18:46:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47604866</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47604866</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47604866</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Tom Scott is back on YouTube [video]"]]></title><description><![CDATA[
<p>inb4 it's AI generated and Tom sold his channel to some faceless corpo 3.. 2.. 1...</p>
]]></description><pubDate>Wed, 01 Apr 2026 16:04:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=47602706</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47602706</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47602706</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Clojure: The Documentary, official trailer [video]"]]></title><description><![CDATA[
<p>> DSLs not built with Clojure types and constructs<p>and in context of lisps that still <i>most likely</i> means macro-based DSLs using <i>traditional</i> lisp constructs ¯\_(ツ)_/¯</p>
]]></description><pubDate>Wed, 01 Apr 2026 16:03:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47602681</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47602681</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47602681</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Clojure: The Documentary, official trailer [video]"]]></title><description><![CDATA[
<p>that doesn't make sense, why would they be talking about departure from traditional lisps if they weren't talking about macro-based DSLs?</p>
]]></description><pubDate>Wed, 01 Apr 2026 08:30:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=47598337</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47598337</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47598337</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Clojure: The Documentary, official trailer [video]"]]></title><description><![CDATA[
<p>> DSLs typically involves constructing macros that are domain specific<p>a DSL is a constrained language for expressing domain concepts.<p>in traditional Lisps they are often syntax-oriented, because code is lists and macros are a natural tool.<p>in Clojure, pervasive use of keywords, vectors and maps allows you to shift DSL design towards data interpretation rather than syntax transformation.<p>so in Clojure doesn't discourage DSLs - clojure practicioners simply prefer data-oriented DSLs to macro-oriented ones, mostly because they are easier to reason about and process with existing tools, while macros are used more selectively.</p>
]]></description><pubDate>Wed, 01 Apr 2026 08:11:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=47598204</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47598204</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47598204</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Clojure: The Documentary, official trailer [video]"]]></title><description><![CDATA[
<p>> I'm not sure a framework is really going to change that onboarding process, or help with network effects that much<p>having one commonly accepted and recommended way <i>does</i> improve onboarding, because it collapses the decision space beginners face. right now they are supposed to make decisions (not even directly, but just through selecting one of the many frameworks) about things like:<p><pre><code>  1. which project templating tool to use? (lein, clj-new, neil)
  2. which dependencies management tooling to use? (lein, deps)
  3. which build tooling to use? (lein, tools build, boot)
  4. which web server? (jetty, httpkit, undertow)
  5. which routing library? (pedestal, reitit)
  6. which templating engine? (hiccup, rum, selmer)
  7. how to deal with javascript and it's build tooling? (clojurescript with a host of it's own decisions, bolt ts/js and wire it yourself, dodge that completely with htmx)
</code></pre>
whats worse - most of the alternatives overlap in various ways, so making the "best choice" in order to reduce future headache induces quite a bit of anxiety.<p>yes, multiple frameworks exist that make those choices for you, but then you inevitably hit the problem that some of the components haven't been updated in a while, so documentation is out of date and when you try updating it just for your project you need to fix the framework plumbing and due to number of frameworks, the corpus of useful information on the internet is quite fragmented and the community help is limited, and on and on.<p>none of this is good beginner experience.<p>and don't get me wrong, choice by itself isn't bad, focus on composability of smaller libraries is important, dominant framework is not going to improve anything when it locks people into bad decisions.<p>what we lack is convergence behind a single "reference stack" of libraries that ought to be good enough for the general case and a minimal framework of plumbing that doesn't require dozens of files just to get started.<p>there doesn't need to be a single way of doing it, but there needs to be a single <i>recommended</i> way of doing it.</p>
]]></description><pubDate>Wed, 01 Apr 2026 07:33:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=47597964</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47597964</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47597964</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Clojure: The Documentary, official trailer [video]"]]></title><description><![CDATA[
<p>it really isn't, unless your goal is to scare away the casuals.</p>
]]></description><pubDate>Tue, 31 Mar 2026 18:30:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=47591522</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47591522</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47591522</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Clojure: The Documentary, official trailer [video]"]]></title><description><![CDATA[
<p>no, not really. when people talk about DSLs in context of lisps, they usually still mean staying in the domain of s-expressions.</p>
]]></description><pubDate>Tue, 31 Mar 2026 18:18:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47591408</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47591408</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47591408</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Clojure: The Documentary, official trailer [video]"]]></title><description><![CDATA[
<p>yep, every word.</p>
]]></description><pubDate>Tue, 31 Mar 2026 17:50:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47591054</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47591054</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47591054</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Clojure: The Documentary, official trailer [video]"]]></title><description><![CDATA[
<p>clojure itself is a joy to use, on the web or outside of it<p>BUT<p>it doesn't have the equivalent of rails, mostly because lispers are an opinionated bunch and can't come together to agree on how web development should be done<p>the frameworks that do exist are more of a collections of libraries with some plumbing to connect the dots</p>
]]></description><pubDate>Tue, 31 Mar 2026 13:57:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=47587487</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47587487</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47587487</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Clojure: The Documentary, official trailer [video]"]]></title><description><![CDATA[
<p>> Clojure style discourages building DSLs<p>does it really? <a href="https://github.com/simongray/clojure-dsl-resources" rel="nofollow">https://github.com/simongray/clojure-dsl-resources</a></p>
]]></description><pubDate>Tue, 31 Mar 2026 13:50:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47587386</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47587386</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47587386</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Clojure: The Documentary, official trailer [video]"]]></title><description><![CDATA[
<p>the wonders of visibility algorithm: <a href="https://news.ycombinator.com/item?id=47556827">https://news.ycombinator.com/item?id=47556827</a></p>
]]></description><pubDate>Tue, 31 Mar 2026 12:10:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47586165</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47586165</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47586165</guid></item><item><title><![CDATA[New comment by midnight_eclair in "Clojure: The Documentary, official trailer [video]"]]></title><description><![CDATA[
<p>virtually all abstractions are built on top of primitive data types and mappings</p>
]]></description><pubDate>Tue, 31 Mar 2026 12:07:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47586142</link><dc:creator>midnight_eclair</dc:creator><comments>https://news.ycombinator.com/item?id=47586142</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47586142</guid></item></channel></rss>