<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: liamilan</title><link>https://news.ycombinator.com/user?id=liamilan</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 03 Aug 2026 01:47:35 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=liamilan" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by liamilan in "Show HN: I'm a 15 Year Old Wannabe Engineer, This Is a Cycloidal Gearbox I Built"]]></title><description><![CDATA[
<p>Brothers think alike ;)<p><a href="https://news.ycombinator.com/item?id=17871313">https://news.ycombinator.com/item?id=17871313</a></p>
]]></description><pubDate>Sun, 02 Aug 2026 05:25:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=49141380</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=49141380</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49141380</guid></item><item><title><![CDATA[Show HN: Implementing and Training a Transformer and Tokenizer in Rust]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/liam-ilan/gpt-rs">https://github.com/liam-ilan/gpt-rs</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44779552">https://news.ycombinator.com/item?id=44779552</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 03 Aug 2025 20:37:26 +0000</pubDate><link>https://github.com/liam-ilan/gpt-rs</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=44779552</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44779552</guid></item><item><title><![CDATA[Show HN: Terminal3d – View 3D Models in Your Terminal, Built with Rust]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/liam-ilan/terminal3d">https://github.com/liam-ilan/terminal3d</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42166940">https://news.ycombinator.com/item?id=42166940</a></p>
<p>Points: 17</p>
<p># Comments: 1</p>
]]></description><pubDate>Sun, 17 Nov 2024 20:30:01 +0000</pubDate><link>https://github.com/liam-ilan/terminal3d</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=42166940</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42166940</guid></item><item><title><![CDATA[New comment by liamilan in "What you learn by making a new programming language"]]></title><description><![CDATA[
<p>I built Crumb (<a href="https://github.com/liam-ilan/crumb">https://github.com/liam-ilan/crumb</a>) a year ago, before starting university. It completely changed the way I conceptualized programming as a whole. You start feeling deja-vu every time you open a new language, and the "ah-ha!" feeling you get when you see something in another language you had to think about when implementing your own is super rewarding.<p>A year later (this summer) I used Crumb to land my first job at a pretty cool startup! The payoff was way more than I could have ever expected.</p>
]]></description><pubDate>Tue, 13 Aug 2024 21:22:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=41239997</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=41239997</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41239997</guid></item><item><title><![CDATA[New comment by liamilan in "Crafting Interpreters"]]></title><description><![CDATA[
<p>It was my first time making a language, so I built into the language whatever was needed to build something cool with Crumb.<p>Wanted first class functions to simplify the parse step (they can be treated like any other value), but I needed a different mechanism to invoke “native code” vs user-defined methods, so there’s two different types for that.<p>Needed some kind of compound data type, but I didn’t want to deal with side effects from pass by reference, so Crumb implements lists, but they are always pass by value :)<p>P.s. theres some pretty neat stuff build with Crumb at <a href="https://github.com/topics/crumb">https://github.com/topics/crumb</a> if anyone’s interested!</p>
]]></description><pubDate>Sat, 13 Jul 2024 19:00:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=40956085</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=40956085</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40956085</guid></item><item><title><![CDATA[New comment by liamilan in "Crafting Interpreters"]]></title><description><![CDATA[
<p>Read Crafting Interpreters when building Crumb (<a href="https://github.com/liam-ilan/crumb">https://github.com/liam-ilan/crumb</a>). It was indispensable, especially the sections on scope and local variables. The balance between technical implementation and conceptual insights is super helpful, especially when trying to go off of the book’s set path.<p>It’s inspiring to see technical writing done like this. As an aspiring engineer, this sets a really high standard to aim for - excellent resource.</p>
]]></description><pubDate>Sat, 13 Jul 2024 03:35:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=40951571</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=40951571</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40951571</guid></item><item><title><![CDATA[New comment by liamilan in "Ask HN: Who wants to be hired? (March 2024)"]]></title><description><![CDATA[
<p><p><pre><code>  Location: Vancouver, BC
  Remote: Yes, can work onsite/hybrid as well
  Willing to relocate: Yes
  Technologies: JavaScript, Node.js, Express, Python, Poetry, Flask, Git, Java, C, C++
  Résumé/CV: https://drive.google.com/file/d/1rxE6SmDzM02jQikSbBFKIH1-ptAQ8rV6/view?usp=sharing
  Email: liamilanyvr@gmail.com
</code></pre>
Hi! I'm Liam, a freshman at UBC, aiming to specialize in Computer Science/Physics. Looking for a software related internship in the summer. I've been programming for 7 years, and built dozens of projects, most of them can be found on my Github (<a href="https://github.com/liam-ilan">https://github.com/liam-ilan</a>).<p>Over the summer, I built Crumb (<a href="https://github.com/liam-ilan/crumb">https://github.com/liam-ilan/crumb</a>), a programming language from scratch, which was front paged here a couple months ago! I'm also a member of the firmware team at UBC Formula Electric, working on porting firmware for the Front Sensor Module to our next car.<p>Open to doing just around anything you need me to do. If you have an opening, or any advice, hit me up :D</p>
]]></description><pubDate>Fri, 01 Mar 2024 23:45:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=39568222</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=39568222</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39568222</guid></item><item><title><![CDATA[New comment by liamilan in "The Flix Programming Language"]]></title><description><![CDATA[
<p>Just a friendly UBC piggyback on Waterloo’s programming language ;)<p>Over summer, I built my own little functional language, Crumb (<a href="https://github.com/liam-ilan/crumb">https://github.com/liam-ilan/crumb</a>). Unlike Flix, the scope is tiny, but some pretty awesome stuff has been done with it. (Checkout this pixel art editor in your terminal, 100% Crumb: <a href="https://github.com/ronilan/crumbicon">https://github.com/ronilan/crumbicon</a>).<p>There’s a template (<a href="https://github.com/liam-ilan/crumb-template">https://github.com/liam-ilan/crumb-template</a>) and vscode highlighter (<a href="https://github.com/liam-ilan/crumb-vscode">https://github.com/liam-ilan/crumb-vscode</a>) for anyone who wants to mess around with it. Any feedback super appreciated :D</p>
]]></description><pubDate>Sun, 26 Nov 2023 06:58:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=38419734</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=38419734</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38419734</guid></item><item><title><![CDATA[Show HN: The Periodic Table of Electron Orbitals]]></title><description><![CDATA[
<p>Article URL: <a href="https://liam-ilan.github.io/electron-orbitals/">https://liam-ilan.github.io/electron-orbitals/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38338991">https://news.ycombinator.com/item?id=38338991</a></p>
<p>Points: 11</p>
<p># Comments: 3</p>
]]></description><pubDate>Sun, 19 Nov 2023 22:21:00 +0000</pubDate><link>https://liam-ilan.github.io/electron-orbitals/</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=38338991</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38338991</guid></item><item><title><![CDATA[Show HN: Tiny Syntax Highlighter]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/liam-ilan/crumb-vscode">https://github.com/liam-ilan/crumb-vscode</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38271721">https://news.ycombinator.com/item?id=38271721</a></p>
<p>Points: 3</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 15 Nov 2023 00:18:59 +0000</pubDate><link>https://github.com/liam-ilan/crumb-vscode</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=38271721</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38271721</guid></item><item><title><![CDATA[Show HN: A Simple Show HN TUI Client in 93 Lines of Crumb]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/liam-ilan/crumb-show-hn">https://github.com/liam-ilan/crumb-show-hn</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=37743603">https://news.ycombinator.com/item?id=37743603</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Mon, 02 Oct 2023 19:56:21 +0000</pubDate><link>https://github.com/liam-ilan/crumb-show-hn</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=37743603</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37743603</guid></item><item><title><![CDATA[Show HN: 34 X 34 Crumb Script Renders a Spinning Cube]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/liam-ilan/crumb-cube">https://github.com/liam-ilan/crumb-cube</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=37538410">https://news.ycombinator.com/item?id=37538410</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 16 Sep 2023 20:29:39 +0000</pubDate><link>https://github.com/liam-ilan/crumb-cube</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=37538410</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37538410</guid></item><item><title><![CDATA[Minor Issue]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/liam-ilan/crumb/issues/8">https://github.com/liam-ilan/crumb/issues/8</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=37364157">https://news.ycombinator.com/item?id=37364157</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 02 Sep 2023 18:30:14 +0000</pubDate><link>https://github.com/liam-ilan/crumb/issues/8</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=37364157</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37364157</guid></item><item><title><![CDATA[New comment by liamilan in "Show HN: Going into freshman year, figured I should build an interpreter"]]></title><description><![CDATA[
<p>Robert Nystrom's Crafting Interpreters (<a href="https://craftinginterpreters.com/" rel="nofollow noreferrer">https://craftinginterpreters.com/</a>) is an awesome resource :D<p>Though I didn't implement his language exactly, a lot of what he talks about carries over anywhere. It especially helped me figure out how to handle the memory management and scoping.<p>Vincent Jacques' DrawGrammar (<a href="https://jacquev6.github.io/DrawGrammar/" rel="nofollow noreferrer">https://jacquev6.github.io/DrawGrammar/</a>) was also super helpful. Getting to see the syntax definition visually made writing it so much easier :).</p>
]]></description><pubDate>Sun, 27 Aug 2023 23:31:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=37287702</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=37287702</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37287702</guid></item><item><title><![CDATA[New comment by liamilan in "Show HN: Going into freshman year, figured I should build an interpreter"]]></title><description><![CDATA[
<p>Thanks!</p>
]]></description><pubDate>Sun, 27 Aug 2023 22:36:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=37287295</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=37287295</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37287295</guid></item><item><title><![CDATA[New comment by liamilan in "Show HN: Going into freshman year, figured I should build an interpreter"]]></title><description><![CDATA[
<p>Yeah actually, stay tuned! :D</p>
]]></description><pubDate>Sun, 27 Aug 2023 22:35:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=37287291</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=37287291</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37287291</guid></item><item><title><![CDATA[New comment by liamilan in "Show HN: Going into freshman year, figured I should build an interpreter"]]></title><description><![CDATA[
<p>Crumb is garbage collected (there is no need to manually allocated/deallocate memory)... though there is no background "garbage collector" process running... The interpreter for Crumb is a tree-walk interpreter, and it just frees memory whenever it can... Crumb frees memory in the following cases:<p>1) When a function is finished, all memory related to the scope of that runtime is freed.<p>2) When an value is not returned out of a statement, or assigned to a variable, said value is freed.<p>3) When a function is applied, if an argument has no reference (it is not stored in a variable), it is freed.<p>4) Additionally, if the function itself has no reference (such as in the case of an immediately invoked function), it is freed.<p>Hope that clarifies things a bit :D</p>
]]></description><pubDate>Sun, 27 Aug 2023 04:04:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=37279358</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=37279358</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37279358</guid></item><item><title><![CDATA[Show HN: Going into freshman year, figured I should build an interpreter]]></title><description><![CDATA[
<p>Hi all!<p>I'm going into my freshman year, and figured that the best way to prepare for the intro to programming Racket course would be to implement my own garbage-collected, dynamically typed, functional programming language in C ;)<p>Anyways... here's the repo:
https://github.com/liam-ilan/crumb<p>I started learning C over the summer, so I still have a whole lot to learn... Any feedback would be greatly appreciated! :D</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=37274882">https://news.ycombinator.com/item?id=37274882</a></p>
<p>Points: 138</p>
<p># Comments: 79</p>
]]></description><pubDate>Sat, 26 Aug 2023 17:28:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=37274882</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=37274882</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37274882</guid></item><item><title><![CDATA[Show HN: Visualizing the Impossible – How to Simulate Electrons]]></title><description><![CDATA[
<p>Article URL: <a href="https://liam-ilan.github.io/time-dependent-schrodinger-equation/">https://liam-ilan.github.io/time-dependent-schrodinger-equation/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=37014528">https://news.ycombinator.com/item?id=37014528</a></p>
<p>Points: 5</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 05 Aug 2023 17:40:39 +0000</pubDate><link>https://liam-ilan.github.io/time-dependent-schrodinger-equation/</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=37014528</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37014528</guid></item><item><title><![CDATA[Show HN: My first C project – An interpreter built with WASM and Emscripten]]></title><description><![CDATA[
<p>Article URL: <a href="https://liam-ilan.github.io/math-interpreter/">https://liam-ilan.github.io/math-interpreter/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=36792164">https://news.ycombinator.com/item?id=36792164</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 19 Jul 2023 19:48:56 +0000</pubDate><link>https://liam-ilan.github.io/math-interpreter/</link><dc:creator>liamilan</dc:creator><comments>https://news.ycombinator.com/item?id=36792164</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36792164</guid></item></channel></rss>