<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: lukehaas</title><link>https://news.ycombinator.com/user?id=lukehaas</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 06 Sep 2026 11:38:02 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=lukehaas" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by lukehaas in "Music Theory for Programmers"]]></title><description><![CDATA[
<p>I can't play an instrument, even after multiple attempts. The main problem for me was understanding the theory. When you start learning, you're expected to accept a lot of things at face value with very little explanation for why things in music are the way they are.<p>This article documents my own journey into understanding music through writing code and taking a first-principles approach. This enabled me to understand things like why there are 12 notes and why notes in the same key sound good. Hopefully, if you are in a similar position to me, this will give you a foundational understanding of music that you can reason about instead of memorising.<p>Disclosure: I built RunJS, and this is on its blog. It gets a mention in the last paragraph and nowhere else.</p>
]]></description><pubDate>Tue, 18 Aug 2026 14:20:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=49346026</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=49346026</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49346026</guid></item><item><title><![CDATA[Music Theory for Programmers]]></title><description><![CDATA[
<p>Article URL: <a href="https://runjs.app/blog/music-theory-for-programmers">https://runjs.app/blog/music-theory-for-programmers</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49346025">https://news.ycombinator.com/item?id=49346025</a></p>
<p>Points: 3</p>
<p># Comments: 2</p>
]]></description><pubDate>Tue, 18 Aug 2026 14:20:39 +0000</pubDate><link>https://runjs.app/blog/music-theory-for-programmers</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=49346025</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49346025</guid></item><item><title><![CDATA[Show HN: RunPy – simple desktop app for tinkering with Python]]></title><description><![CDATA[
<p>RunPy is a playground app that gives you a quick and easy way to run Python code. There's no need to create files or run anything in the terminal; you don't even need Python set up on your machine.<p>It's handy for learning, teaching or doing quick experiments. Available for mac, windows and linux. Please give it a try, and I'd be really keen to hear any thoughts, feedback or ideas for improvements. Thanks!</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44522540">https://news.ycombinator.com/item?id=44522540</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 10 Jul 2025 16:06:21 +0000</pubDate><link>https://runpy.app</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=44522540</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44522540</guid></item><item><title><![CDATA[New comment by lukehaas in "Ask HN: Those making $500/month on side projects in 2024 – Show and tell"]]></title><description><![CDATA[
<p>I built <a href="https://runjs.app" rel="nofollow">https://runjs.app</a> because I wanted an easy way to run JavaScript and test out ideas.
It turned out that a lot of other people wanted the same thing.<p>The first version was free and very basic. After getting a lot of suggestions and feedback from the people using it, I added more features and introduced a freemium pricing model.</p>
]]></description><pubDate>Wed, 11 Dec 2024 13:14:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=42387378</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=42387378</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42387378</guid></item><item><title><![CDATA[Show HN: A JavaScript playground that shows the result of each expression]]></title><description><![CDATA[
<p>Article URL: <a href="https://runjs.app/play">https://runjs.app/play</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=39828207">https://news.ycombinator.com/item?id=39828207</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 26 Mar 2024 14:23:10 +0000</pubDate><link>https://runjs.app/play</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=39828207</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39828207</guid></item><item><title><![CDATA[Equations that changed the world – rewritten in JavaScript]]></title><description><![CDATA[
<p>Article URL: <a href="https://runjs.app/blog/equations-that-changed-the-world-rewritten-in-javascript">https://runjs.app/blog/equations-that-changed-the-world-rewritten-in-javascript</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=39441582">https://news.ycombinator.com/item?id=39441582</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 20 Feb 2024 14:17:06 +0000</pubDate><link>https://runjs.app/blog/equations-that-changed-the-world-rewritten-in-javascript</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=39441582</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39441582</guid></item><item><title><![CDATA[Mathematical Notation for JavaScript Developers Explained]]></title><description><![CDATA[
<p>Article URL: <a href="https://runjs.app/blog/mathematical-notation-for-javascript-developers-explained">https://runjs.app/blog/mathematical-notation-for-javascript-developers-explained</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=31654813">https://news.ycombinator.com/item?id=31654813</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 07 Jun 2022 14:25:25 +0000</pubDate><link>https://runjs.app/blog/mathematical-notation-for-javascript-developers-explained</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=31654813</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31654813</guid></item><item><title><![CDATA[New comment by lukehaas in "Show HN: ePaper.js – Easily create an ePaper display using JavaScript and HTML"]]></title><description><![CDATA[
<p>I built something that's similar to what you're describing, here's an article about it: <a href="https://www.hackster.io/lukehaas/e-ink-display-for-daily-news-weather-and-more-3dd7b1" rel="nofollow">https://www.hackster.io/lukehaas/e-ink-display-for-daily-new...</a><p>It combines a Pi Zero with a 2000mAh lipo, updates every 6 hours and lasts for around 90 days per charge.</p>
]]></description><pubDate>Sat, 22 Aug 2020 10:42:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=24243206</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=24243206</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24243206</guid></item><item><title><![CDATA[Alexa Powered Rotary Phone]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.hackster.io/lukehaas/alexa-powered-rotary-phone-d58644">https://www.hackster.io/lukehaas/alexa-powered-rotary-phone-d58644</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=23905725">https://news.ycombinator.com/item?id=23905725</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 21 Jul 2020 10:20:42 +0000</pubDate><link>https://www.hackster.io/lukehaas/alexa-powered-rotary-phone-d58644</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=23905725</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23905725</guid></item><item><title><![CDATA[Show HN: RunJS – a JavaScript scratchpad that auto-evaluates as you type]]></title><description><![CDATA[
<p>Article URL: <a href="https://projects.lukehaas.me/runjs/">https://projects.lukehaas.me/runjs/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=18672719">https://news.ycombinator.com/item?id=18672719</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 13 Dec 2018 15:00:43 +0000</pubDate><link>https://projects.lukehaas.me/runjs/</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=18672719</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=18672719</guid></item><item><title><![CDATA[New comment by lukehaas in "Ask HN: What's a good static site generator to use for a blog in 2018?"]]></title><description><![CDATA[
<p>Gatsby is worth taking a look at.</p>
]]></description><pubDate>Tue, 27 Feb 2018 11:21:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=16472531</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=16472531</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=16472531</guid></item><item><title><![CDATA[New comment by lukehaas in "Ask HN: How can I get better at bash?"]]></title><description><![CDATA[
<p>Just googled ABSG and all I got was 'Adult Bible Study Guide'</p>
]]></description><pubDate>Mon, 26 Jun 2017 13:16:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=14636515</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=14636515</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14636515</guid></item><item><title><![CDATA[New comment by lukehaas in "Show HN: Generate Lorem Ipsum text from your terminal"]]></title><description><![CDATA[
<p>No new features planned at the moment but I'd be open to suggestions or pull requests.</p>
]]></description><pubDate>Tue, 17 Jan 2017 13:50:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=13417454</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=13417454</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13417454</guid></item><item><title><![CDATA[Show HN: Generate Lorem Ipsum text from your terminal]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/lukehaas/getlorem">https://github.com/lukehaas/getlorem</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=13417067">https://news.ycombinator.com/item?id=13417067</a></p>
<p>Points: 4</p>
<p># Comments: 2</p>
]]></description><pubDate>Tue, 17 Jan 2017 13:02:23 +0000</pubDate><link>https://github.com/lukehaas/getlorem</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=13417067</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13417067</guid></item><item><title><![CDATA[New comment by lukehaas in "Show HN: CSS Pokemon – created with clip-path and CSS variables"]]></title><description><![CDATA[
<p>It's important for web developers to experiment with new browser features. Browser vendors encourage this as it can help them with crushing bugs early and refining their specs.</p>
]]></description><pubDate>Wed, 14 Dec 2016 09:46:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=13174874</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=13174874</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13174874</guid></item><item><title><![CDATA[New comment by lukehaas in "Show HN: CSS Pokemon – created with clip-path and CSS variables"]]></title><description><![CDATA[
<p>Unfortunately Firefox only supports clip-path behind a flag.</p>
]]></description><pubDate>Tue, 13 Dec 2016 16:55:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=13168268</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=13168268</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13168268</guid></item><item><title><![CDATA[Show HN: CSS Pokemon – created with clip-path and CSS variables]]></title><description><![CDATA[
<p>Article URL: <a href="https://projects.lukehaas.me/css-pokemon/">https://projects.lukehaas.me/css-pokemon/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=13166514">https://news.ycombinator.com/item?id=13166514</a></p>
<p>Points: 79</p>
<p># Comments: 43</p>
]]></description><pubDate>Tue, 13 Dec 2016 13:17:40 +0000</pubDate><link>https://projects.lukehaas.me/css-pokemon/</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=13166514</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13166514</guid></item><item><title><![CDATA[New comment by lukehaas in "Show HN: A collection of useful regex patterns"]]></title><description><![CDATA[
<p>Thanks, those are great, I'll add them in.</p>
]]></description><pubDate>Wed, 23 Nov 2016 19:27:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=13025079</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=13025079</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13025079</guid></item><item><title><![CDATA[New comment by lukehaas in "Show HN: A collection of useful regex patterns"]]></title><description><![CDATA[
<p>Thanks, I'll update that</p>
]]></description><pubDate>Wed, 23 Nov 2016 19:26:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=13025075</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=13025075</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13025075</guid></item><item><title><![CDATA[Show HN: A collection of useful regex patterns]]></title><description><![CDATA[
<p>Article URL: <a href="https://projects.lukehaas.me/regexhub/">https://projects.lukehaas.me/regexhub/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=13015626">https://news.ycombinator.com/item?id=13015626</a></p>
<p>Points: 14</p>
<p># Comments: 4</p>
]]></description><pubDate>Tue, 22 Nov 2016 17:24:00 +0000</pubDate><link>https://projects.lukehaas.me/regexhub/</link><dc:creator>lukehaas</dc:creator><comments>https://news.ycombinator.com/item?id=13015626</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13015626</guid></item></channel></rss>