<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: Kodiologist</title><link>https://news.ycombinator.com/user?id=Kodiologist</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 22 Apr 2026 10:21:06 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=Kodiologist" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by Kodiologist in "Google.com search now refusing to search for FF esr 128 without JavaScript"]]></title><description><![CDATA[
<p>I got it to work again with a user agent from Links: `Links (2.29; Linux 6.11.0-13-generic x86_64; GNU C 13.2; text)`.</p>
]]></description><pubDate>Fri, 17 Jan 2025 21:17:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=42743344</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=42743344</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42743344</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>Admittedly, I've tried not to document the implementation. Yeah, they're pretty much simple dirty Common Lisp macros. Internally, they're functions that are called with the arguments converted to models (via `hy.as-model`), and then the return value is converted to a model. If a macro's first parameter is named `_hy_compiler`, it gets access to the current compiler object; this is undocumented since it's only meant for internal use. Reader macros have no parameters, but can access the current reader object as `&reader`. When it's defined, a reader macro is added to the current reader's dispatch table.</p>
]]></description><pubDate>Wed, 25 Sep 2024 02:30:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=41643120</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41643120</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41643120</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>Yeah, at a certain point I realized that both the maintenance and the use of the language became much slicker if unnecessary deviations from Python were minimized. After all, when I'm writing Hy code, I'm usually spending a lot more time referring to the documentation of Python or third-party Python libraries than the documentation of Hy. I felt there were a number of ways Python could be improved upon, but e.g. the old feature that let you spell `True` as `true` in deference to Clojure was just a needless complication.</p>
]]></description><pubDate>Mon, 23 Sep 2024 20:43:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=41630317</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41630317</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41630317</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>You can add all the same type annotations as in Python, but from what I've seen,  type-checkers expect Python source text and don't just use standard Python introspection, so you'll need to use `hy2py` first to actually check your program's types.</p>
]]></description><pubDate>Mon, 23 Sep 2024 12:06:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=41625207</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41625207</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41625207</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>You're welcome. There are no actual breaking changes from 0.29.0, so you're already up to date if you got that far.</p>
]]></description><pubDate>Mon, 23 Sep 2024 02:09:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=41621807</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41621807</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41621807</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>Yes, such as: metaprogramming via macros and reader macros; arbitrary compile-time computation; removal of restrictions on mixing statements and expressions; and other arities for Python's binary operators. See <a href="http://hylang.org/hy/doc/v1.0.0/whyhy#hy-versus-python" rel="nofollow">http://hylang.org/hy/doc/v1.0.0/whyhy#hy-versus-python</a><p>Dynamically shadowing global variables is not built-in, but easy to write a macro for if you want it. See e.g. <a href="https://stackoverflow.com/a/71618732" rel="nofollow">https://stackoverflow.com/a/71618732</a></p>
]]></description><pubDate>Mon, 23 Sep 2024 02:08:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=41621804</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41621804</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41621804</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>Sparse? I got a whole chapter for ya: <a href="https://hylang.org/hy/doc/v1.0.0/macros" rel="nofollow">https://hylang.org/hy/doc/v1.0.0/macros</a></p>
]]></description><pubDate>Sun, 22 Sep 2024 21:02:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=41620049</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41620049</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41620049</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>Learning Python is not required to get started and do some simple stuff, but it is effectively required to master Hy.</p>
]]></description><pubDate>Sun, 22 Sep 2024 20:59:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=41620025</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41620025</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41620025</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>Hy-pothetically, yes, you could take Hy code in and spit Python code out via `hy2py`. I think at one point I considered supporting this officially, but then decided there was really no advantage.</p>
]]></description><pubDate>Sun, 22 Sep 2024 20:57:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=41620007</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41620007</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41620007</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>Now I know how those guys felt who were on the same episode of Ed Sullivan that introduced the Beatles.</p>
]]></description><pubDate>Sun, 22 Sep 2024 20:35:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=41619848</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41619848</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41619848</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>I don't think so? <a href="https://youtrack.jetbrains.com/issue/PY-48754/Support-for-hy-language" rel="nofollow">https://youtrack.jetbrains.com/issue/PY-48754/Support-for-hy...</a></p>
]]></description><pubDate>Sun, 22 Sep 2024 18:44:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=41619053</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41619053</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41619053</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>Thanks. I enjoyed compiling a huge list of buzzwords to use for it.</p>
]]></description><pubDate>Sun, 22 Sep 2024 18:41:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=41619039</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41619039</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41619039</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>I see. That's pretty similar to the feature set of [pdb](<a href="https://docs.python.org/3/library/pdb.html" rel="nofollow">https://docs.python.org/3/library/pdb.html</a>). You may then logically ask "Does Hy support pdb?". The answer is "sort of". I've fixed one or two bugs, but we don't test it. I suspect there are various features of pdb that assume Python syntax and would need some hooks to get working properly with Hy.</p>
]]></description><pubDate>Sun, 22 Sep 2024 18:02:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=41618729</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41618729</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41618729</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>1. I don't know what a breakloop is. Hy uses Python's exception system, which is more like a traditional exception system than Common Lisp's condition system.<p>2. No, sorry.</p>
]]></description><pubDate>Sun, 22 Sep 2024 17:34:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=41618544</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41618544</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41618544</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>> Are there Python language features I can't use in Hy?<p>At the semantic level, no. I work to cover 100% of Python AST node types with Hy's core macros. It does take me a little bit to implement a new core macro after the CPython guys implement a new feature, but you can always use the `py` or `pys` macros to embed the Python you need, should it come to that.<p>> Or performance penalties in using Hy?<p>Compiling Hy (that is, translating it to Python AST) can be slow for large programs (I've seen it top out at about 3 seconds), but at runtime you shouldn't see a difference. Hy always produces bytecode, which can be used to skip the compilation step if the code is unchanged.</p>
]]></description><pubDate>Sun, 22 Sep 2024 17:31:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=41618512</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41618512</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41618512</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>> this compiler is written in Python<p>Yes, that's right. Hy is not self-hosted.<p>> The various ways you can embed a Lisp look very different and have very different tradeoffs.<p>Hy itself provides options. Typically the process is that the Hy source code becomes Python AST objects, which Python then complies and executes, but you can also translate the Python AST objects into Python source text. Or you can use Python from Hy or vice versa: <a href="https://hylang.org/hy/doc/v1.0.0/interop" rel="nofollow">https://hylang.org/hy/doc/v1.0.0/interop</a></p>
]]></description><pubDate>Sun, 22 Sep 2024 17:27:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=41618487</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41618487</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41618487</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>I eliminated a lot of whimsy from Hy and its documentation years ago because it was distracting and created noisy test failures, but I did go too far at some point, and have tried to reintroduce a little whimsy more recently.</p>
]]></description><pubDate>Sun, 22 Sep 2024 15:52:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=41617880</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41617880</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41617880</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>I'm not sure. I was going to say that Mojo is proprietary software and so I've never tried it, but I just checked and apparently it's free now. If nothing else, you can probably get a lot of Hy code to run on Mojo via `hy2py`, if Mojo supports a lot of Python as it claims to.<p>Edit: actually, confusingly, the GitHub repository for Mojo doesn't have an interpreter. The language is still proprietary.</p>
]]></description><pubDate>Sun, 22 Sep 2024 15:50:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=41617868</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41617868</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41617868</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>Well, this is a little embarrassing: Clojure was one of the biggest influences on Hy in its youth, but that was mostly before I got involved in 2016. I never actually learned Clojure. So hopefully somebody who knows both Hy and Clojure well can answer. I can tell you that at run-time, Hy is essentially Python code, so Hy is more tightly coupled to Python than Clojure is to Java; a better analogy is CoffeeScript's relationship with JavaScript.<p>I get the impression that Clojure tries to convince the programmer to avoid side-effects a lot more strenuously than Hy does, but it's still not a purely functional language, so I don't know how consequential that is in practice.</p>
]]></description><pubDate>Sun, 22 Sep 2024 15:38:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=41617794</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41617794</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41617794</guid></item><item><title><![CDATA[New comment by Kodiologist in "Hy 1.0 – Lisp dialect for Python"]]></title><description><![CDATA[
<p>Remarkably enough, yes, we got it to work, on our 3rd or 4th try.</p>
]]></description><pubDate>Sun, 22 Sep 2024 15:32:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=41617746</link><dc:creator>Kodiologist</dc:creator><comments>https://news.ycombinator.com/item?id=41617746</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41617746</guid></item></channel></rss>