<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: gilmi</title><link>https://news.ycombinator.com/user?id=gilmi</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 28 Apr 2026 22:15:58 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=gilmi" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by gilmi in "A decade of developing a programming language"]]></title><description><![CDATA[
<p>I've mentioned this in a different comment, but I've written several articles on type inference, trying to make the topic more approachable:<p><a href="https://gilmi.me/blog/tags/type%20inference" rel="nofollow noreferrer">https://gilmi.me/blog/tags/type%20inference</a><p>If you find that helpful, I've made more content on compilers (including live coding a compiler, without narration) which should be easily reachable from my website.</p>
]]></description><pubDate>Wed, 15 Nov 2023 07:19:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=38274138</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=38274138</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38274138</guid></item><item><title><![CDATA[New comment by gilmi in "A decade of developing a programming language"]]></title><description><![CDATA[
<p>I really enjoyed the article.<p>I think one way to simplify language creation is to use an existing language with somewhat similar operational semantics as a compilation target. This simplifies the backend a lot and leaves more time to explore what the language (frontend) should look like. The backend can always be rewritten at a later time. My personal choice is usually JavaScript[1].<p>Regarding type checkers/type inference, I've also ran into difficulties with this topic, and I've written several articles trying to make it more approachable[2].<p>[1]: <a href="https://gilmi.me/blog/post/2023/07/08/js-as-a-target" rel="nofollow noreferrer">https://gilmi.me/blog/post/2023/07/08/js-as-a-target</a><p>[2]: <a href="https://gilmi.me/blog/tags/type%20inference" rel="nofollow noreferrer">https://gilmi.me/blog/tags/type%20inference</a></p>
]]></description><pubDate>Wed, 15 Nov 2023 07:07:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=38274087</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=38274087</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38274087</guid></item><item><title><![CDATA[New comment by gilmi in "Unity's Trap"]]></title><description><![CDATA[
<p>Maybe the engine used for Dead Cells, <a href="https://heaps.io" rel="nofollow noreferrer">https://heaps.io</a> ?</p>
]]></description><pubDate>Sun, 17 Sep 2023 12:59:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=37544599</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=37544599</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37544599</guid></item><item><title><![CDATA[New comment by gilmi in "The Meaning of Monad in MonadTrans"]]></title><description><![CDATA[
<p>Monads are a bit like exiting vim. The complexity is exaggerated to the point of a meme, but in reality not very difficult, and they can be quite useful.</p>
]]></description><pubDate>Mon, 14 Aug 2023 05:37:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=37117820</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=37117820</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37117820</guid></item><item><title><![CDATA[New comment by gilmi in "Ask HN: When is pure functional programming beneficial?"]]></title><description><![CDATA[
<p>A different thing to look at is what enforcing referential transparency in your program means.<p>Referential transparency means that when we bind an expression to a name (e.g. `y = f x`), the two are interchangeable, and whenever we use `y` we could just as well use `f x` and vice versa, and the meaning of the code will stay the same.<p>Enforcing referential transparency in a programming language means that:<p>- We need to have more control over effects (purity)<p>- We can use substitution and equational reasoning<p>The value of referential transparency for me is that I can trust code to not surprise me with unexpected effects, I can use substitution to understand what a piece of code is doing, and I can always refactor by converting a piece of code to a new value or function because referential transparency guarantees that they are equivalent.<p>Because of that I feel like I can always understand how something works because I have a simple process to figure things out that doesn't require me keeping a lot of context in my head. I never feel like something is "magic" that I cannot understand. And I can easily change code to understand it better without changing its meaning.<p>Referential transparency is freeing, and makes me worry less when working with code!<p>---<p>The other part that is very notable about Haskell is one of its approaches to concurrency - Software Transactional Memory. Which is enabled by limiting the kind of effects we can perform in a transaction block:<p><a href="https://www.oreilly.com/library/view/parallel-and-concurrent/9781449335939/ch10.html" rel="nofollow noreferrer">https://www.oreilly.com/library/view/parallel-and-concurrent...</a></p>
]]></description><pubDate>Tue, 11 Jul 2023 14:51:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=36681836</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=36681836</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36681836</guid></item><item><title><![CDATA[New comment by gilmi in "Ask HN: Could you share your personal blog here?"]]></title><description><![CDATA[
<p><a href="https://gilmi.me" rel="nofollow noreferrer">https://gilmi.me</a><p>31 posts. I write mostly about Haskell, compilers, webdev, and my hobby projects.<p>- <a href="https://gilmi.me/blog/post/2016/10/14/lisp-to-js" rel="nofollow noreferrer">https://gilmi.me/blog/post/2016/10/14/lisp-to-js</a> - Compiling a lisp to JavaScript from scratch in 350 LOC<p>- <a href="https://gilmi.me/blog/post/2022/04/24/learn-twain-bulletin-app" rel="nofollow noreferrer">https://gilmi.me/blog/post/2022/04/24/learn-twain-bulletin-a...</a> - Build a bulletin board using Twain, Haskell, and friends<p>- <a href="https://gilmi.me/blog/post/2021/04/06/giml-type-inference" rel="nofollow noreferrer">https://gilmi.me/blog/post/2021/04/06/giml-type-inference</a> - Giml's type inference engine<p>- <a href="https://gilmi.me/blog/post/2022/12/13/learned-from-haskell" rel="nofollow noreferrer">https://gilmi.me/blog/post/2022/12/13/learned-from-haskell</a> - 7 things I learned from Haskell<p>- <a href="https://gilmi.me/blog/post/2023/07/01/why-i-use-twain" rel="nofollow noreferrer">https://gilmi.me/blog/post/2023/07/01/why-i-use-twain</a> - Why I use the Twain web framework</p>
]]></description><pubDate>Wed, 05 Jul 2023 06:28:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=36596248</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=36596248</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36596248</guid></item><item><title><![CDATA[New comment by gilmi in "MdBook – A command line tool to create books with Markdown"]]></title><description><![CDATA[
<p>you welcome :)</p>
]]></description><pubDate>Fri, 30 Jun 2023 06:25:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=36531230</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=36531230</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36531230</guid></item><item><title><![CDATA[New comment by gilmi in "MdBook – A command line tool to create books with Markdown"]]></title><description><![CDATA[
<p>I've written an online book with mdbook (<a href="https://lhbg-book.link" rel="nofollow noreferrer">https://lhbg-book.link</a>) and it was a breeze. I believe mdbook was one of the reasons I even finished the book.<p>1. It's super easy to install. If you have a rust toolchain, just `cargo install mdbook`<p>2. One command to initialize: `mdbook init my-book`<p>3. One command to get immediate continuous feedback: `mdbook serve`<p>4. It allowed me to keep writing in my preferred environment (emacs)<p>5. It looked good by default. I could focus on the content.<p>6. Setting up auto deploy ci on github is about 30 lines for yaml<p>Though one point of improvement would be better support for other export formats such as pdf and epub.<p>tl;dr mdbook allowed me to use the path of least resistence to complete my project, and I highly recommend it.<p>Also it is possible other platforms can do the same or better but I haven't tried them.</p>
]]></description><pubDate>Fri, 30 Jun 2023 03:26:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=36530176</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=36530176</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36530176</guid></item><item><title><![CDATA[New comment by gilmi in "Haskell in Production: Standard Chartered"]]></title><description><![CDATA[
<p>Please allow me to share a blog post and a learning resource:<p>- Consider Haskell - <a href="https://gilmi.me/blog/post/2020/04/28/consider-haskell" rel="nofollow">https://gilmi.me/blog/post/2020/04/28/consider-haskell</a><p>- Learn Haskell by building a blog generator - <a href="https://lhbg-book.link" rel="nofollow">https://lhbg-book.link</a></p>
]]></description><pubDate>Wed, 03 May 2023 16:07:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=35804089</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=35804089</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35804089</guid></item><item><title><![CDATA[New comment by gilmi in "Learn WebGPU"]]></title><description><![CDATA[
<p>You might be interested in <a href="https://futhark-lang.org" rel="nofollow">https://futhark-lang.org</a></p>
]]></description><pubDate>Fri, 28 Apr 2023 06:03:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=35737982</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=35737982</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35737982</guid></item><item><title><![CDATA[New comment by gilmi in "Rust vs. Haskell"]]></title><description><![CDATA[
<p>Very informative. Thanks!</p>
]]></description><pubDate>Tue, 14 Feb 2023 12:55:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=34788602</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=34788602</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34788602</guid></item><item><title><![CDATA[New comment by gilmi in "Ask HN: Resources for Best Practice Haskell"]]></title><description><![CDATA[
<p>- <a href="https://lhbg-book.link" rel="nofollow">https://lhbg-book.link</a><p>- <a href="https://marcosampellegrini.com/simple-haskell-book" rel="nofollow">https://marcosampellegrini.com/simple-haskell-book</a><p>- <a href="https://leanpub.com/production-haskell" rel="nofollow">https://leanpub.com/production-haskell</a></p>
]]></description><pubDate>Thu, 08 Dec 2022 20:05:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=33912567</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=33912567</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33912567</guid></item><item><title><![CDATA[New comment by gilmi in "Why I am learning category theory"]]></title><description><![CDATA[
<p>If you have 24 minutes, George Wilson's talk about propagators is really interesting and demonstrates how we can find solutions to problems by looking at math.<p><a href="https://www.youtube.com/watch?v=nY1BCv3xn24" rel="nofollow">https://www.youtube.com/watch?v=nY1BCv3xn24</a></p>
]]></description><pubDate>Wed, 30 Nov 2022 21:44:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=33808221</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=33808221</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33808221</guid></item><item><title><![CDATA[New comment by gilmi in "Ask HN: Do you recall any book or course that made a topic finally click?"]]></title><description><![CDATA[
<p>CS4410 and CSE131 (they are very similar, pick one) for compilation:<p>- <a href="https://course.ccs.neu.edu/cs4410sp21" rel="nofollow">https://course.ccs.neu.edu/cs4410sp21</a><p>- <a href="https://ucsd-cse131-f19.github.io" rel="nofollow">https://ucsd-cse131-f19.github.io</a><p>These two articles for garbage collection:<p>- <a href="http://www.more-magic.net/posts/internals-gc.html" rel="nofollow">http://www.more-magic.net/posts/internals-gc.html</a><p>- <a href="http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector" rel="nofollow">http://journal.stuffwithstuff.com/2013/12/08/babys-first-gar...</a></p>
]]></description><pubDate>Mon, 14 Nov 2022 22:06:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=33601934</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=33601934</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33601934</guid></item><item><title><![CDATA[New comment by gilmi in "Is Haskell really the language of geniuses and academia? (2019)"]]></title><description><![CDATA[
<p>I agree that there are many opinions and that Haskell people don't want to compromise on what they see is the value of the language, but I've also seen a lot of people express their desire for more adoption. For example in threads talking about the haskell.org download page, in threads about improving learning resources, and with the Haskell Foundation.<p>This desire is usually expressed with sentiments like "let's make this easier to learn" and "Let's fix this so it's not a footgun", and not "success at all cost".</p>
]]></description><pubDate>Sat, 20 Aug 2022 05:46:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=32529472</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=32529472</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32529472</guid></item><item><title><![CDATA[New comment by gilmi in "Is Haskell really the language of geniuses and academia? (2019)"]]></title><description><![CDATA[
<p>I don't think that's correct. Especially since there's a community-led organization with the specific goal of increasing adoption <a href="https://haskell.foundation/" rel="nofollow">https://haskell.foundation/</a></p>
]]></description><pubDate>Sat, 20 Aug 2022 05:21:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=32529337</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=32529337</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32529337</guid></item><item><title><![CDATA[New comment by gilmi in "Is Haskell really the language of geniuses and academia? (2019)"]]></title><description><![CDATA[
<p>- Learn Haskell by building a blog generator[0] (disclaimer: I wrote this)<p>- Simple Haskell Handbook[1]<p>- Haskell (Almost) Standard Libraries[2]<p>- [0]: <a href="https://lhbg-book.link" rel="nofollow">https://lhbg-book.link</a><p>- [1]: <a href="https://marcosampellegrini.com/simple-haskell-book" rel="nofollow">https://marcosampellegrini.com/simple-haskell-book</a><p>- [2]: <a href="https://leanpub.com/haskell-stdlibs/" rel="nofollow">https://leanpub.com/haskell-stdlibs/</a></p>
]]></description><pubDate>Sat, 20 Aug 2022 05:09:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=32529272</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=32529272</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32529272</guid></item><item><title><![CDATA[New comment by gilmi in "Is Haskell really the language of geniuses and academia? (2019)"]]></title><description><![CDATA[
<p>I wrote an article of a few usecases and why I think Haskell is a good match for them:<p><a href="https://gilmi.me/blog/post/2020/04/28/consider-haskell" rel="nofollow">https://gilmi.me/blog/post/2020/04/28/consider-haskell</a></p>
]]></description><pubDate>Sat, 20 Aug 2022 05:02:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=32529226</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=32529226</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32529226</guid></item><item><title><![CDATA[New comment by gilmi in "Learn Haskell by building a blog generator – a project-oriented Haskell book"]]></title><description><![CDATA[
<p>Thanks!</p>
]]></description><pubDate>Thu, 09 Jun 2022 12:43:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=31680499</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=31680499</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31680499</guid></item><item><title><![CDATA[New comment by gilmi in "Learn Haskell by building a blog generator – a project-oriented Haskell book"]]></title><description><![CDATA[
<p>Thank you!</p>
]]></description><pubDate>Thu, 09 Jun 2022 12:43:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=31680494</link><dc:creator>gilmi</dc:creator><comments>https://news.ycombinator.com/item?id=31680494</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31680494</guid></item></channel></rss>