<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: cmsj</title><link>https://news.ycombinator.com/user?id=cmsj</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 05 Apr 2026 22:34:38 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=cmsj" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by cmsj in "Hammerspoon"]]></title><description><![CDATA[
<p>v1 won't stop working until Apple breaks something it relies on, and there may be interested community people who step up to take over maintenance.</p>
]]></description><pubDate>Mon, 16 Mar 2026 19:31:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=47403660</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=47403660</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47403660</guid></item><item><title><![CDATA[New comment by cmsj in "Hammerspoon"]]></title><description><![CDATA[
<p>I expect that is possible, but the specific choice of JavaScript is because Apple ships a framework that bridges types very nicely between native and JS. It's used by WebKit, so it works really well and is very unlikely to disappear.<p>That means the core of Hammerspoon goes from being incredibly complicated, to really just a protocol conformance.</p>
]]></description><pubDate>Sun, 15 Mar 2026 00:27:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=47382885</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=47382885</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47382885</guid></item><item><title><![CDATA[New comment by cmsj in "Hammerspoon"]]></title><description><![CDATA[
<p>Mostly the former, but the latter is also attractive. Once I got the basic core working and a couple of modules implemented, I had Claude build me a script that extracts type information and method signatures, to automatically build a TypeScript definition file.<p>I have a feeling that letting people do what Hammerspoon can do, but in a TypeScript environment that they're much more likely to know, than Lua, will be huge for the project.</p>
]]></description><pubDate>Sun, 15 Mar 2026 00:25:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47382870</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=47382870</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47382870</guid></item><item><title><![CDATA[New comment by cmsj in "Hammerspoon"]]></title><description><![CDATA[
<p>Really there's very little that v2 might do, that v1 couldn't. This is almost all about me not wanting to maintain a big pile of Objective C and Lua anymore. I want to be working in Swift, and rather than maintain our own type bridging to/from Lua, we can get that for free from Apple's JavaScriptCore framework.<p>Beyond my enjoyment/productivity on the developer side though, I think v2 will be a big boost to user enjoyment/productivity, mostly because they'll be able to get much nicer IDE integrations for their config file, and be able to do things like write their config in TypeScript.</p>
]]></description><pubDate>Sun, 15 Mar 2026 00:23:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47382854</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=47382854</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47382854</guid></item><item><title><![CDATA[New comment by cmsj in "Hammerspoon"]]></title><description><![CDATA[
<p>Would it then interest you to know that the build process for v2 ships a hammerspoon.d.ts with the app? :)</p>
]]></description><pubDate>Sun, 15 Mar 2026 00:21:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47382831</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=47382831</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47382831</guid></item><item><title><![CDATA[New comment by cmsj in "Hammerspoon"]]></title><description><![CDATA[
<p>Not really any more or less than in v1 - which is to say that it's possible to execute those scripts from Hammerspoon, but there's no rich bridging between them.</p>
]]></description><pubDate>Sun, 15 Mar 2026 00:20:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47382828</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=47382828</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47382828</guid></item><item><title><![CDATA[New comment by cmsj in "Hammerspoon"]]></title><description><![CDATA[
<p>The limitation is entirely on the developer side - for years now there have only really been three of us working on Hammerspoon with any regularity, and that has been significantly dwindling down to mostly just me and Chris Hocking.<p>Honestly, in 2026, I do not want to be maintaining a 100k line Objective C program.<p>So, my current experimentation with a v2 is to see how easily I can catch up with where v1 is, just using Swift and JavaScriptCore.<p>There are lots of things about the Lua APIs that I don't like, and I'm addressing some of those as I go, but I'm currently in a phase where I'm targeting parity with everything I need for my v1 config, at which point I can cut over to running v2 and then see how things are looking and what can be refined/reworked.</p>
]]></description><pubDate>Sun, 15 Mar 2026 00:18:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=47382816</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=47382816</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47382816</guid></item><item><title><![CDATA[New comment by cmsj in "Hammerspoon"]]></title><description><![CDATA[
<p>I'll happily agree that JavaScript is not a very nice language, but to be honest, I don't think Lua is a very nice language either. It's easy to embed in C though, which is why we were able to do all of the things that Hammerspoon does.<p>Where JS massively wins here, to my mind, is that there is <i>so</i> much tooling available for it, to the point that I'm already not actually writing my v2 config in JS at all, I'm writing it in TypeScript and compiling it to JS.</p>
]]></description><pubDate>Sun, 15 Mar 2026 00:15:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47382797</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=47382797</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47382797</guid></item><item><title><![CDATA[New comment by cmsj in "Hammerspoon"]]></title><description><![CDATA[
<p>The simple answer is not having to maintain a really complicated language bridge anymore.<p>The more complex answer is that Hammerspoon is currently about 100k lines of Objective C, and none of us really want to work on it anymore when Swift is the much nicer place to be doing macOS development.<p>Technically we could slowly convert in-place from ObjC to Swift, but there will always be a need for "LuaSkin", the bridging code we've accumulated over the last 13+ years, and rewriting that in Swift would be significantly complicated.<p>JavaScript, however, is already bridged for us because WebKit needs it.</p>
]]></description><pubDate>Sun, 15 Mar 2026 00:11:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=47382764</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=47382764</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47382764</guid></item><item><title><![CDATA[New comment by cmsj in "Hammerspoon"]]></title><description><![CDATA[
<p>Hammerspoon maintainer here - I'm enjoying reading all the comments, and hoping that everyone isn't going to be annoyed that I'm mostly working on a v2 atm, which switches from Lua to JavaScript :D</p>
]]></description><pubDate>Fri, 13 Mar 2026 23:22:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=47371349</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=47371349</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47371349</guid></item><item><title><![CDATA[New comment by cmsj in "Data centers in space makes no sense"]]></title><description><![CDATA[
<p>Get those penguins doing something productive for once, put them on treadmills!</p>
]]></description><pubDate>Wed, 04 Feb 2026 17:28:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=46888686</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=46888686</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46888686</guid></item><item><title><![CDATA[New comment by cmsj in "Data centers in space makes no sense"]]></title><description><![CDATA[
<p>Space doesn't really change it though because the <i>effective</i> bandwidth between nodes is reduced by the overall size of the network and how much data they need to relay between each other.</p>
]]></description><pubDate>Wed, 04 Feb 2026 17:27:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=46888674</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=46888674</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46888674</guid></item><item><title><![CDATA[New comment by cmsj in "Tesla profit tanked 46% in 2025"]]></title><description><![CDATA[
<p>Meme stock must be protected, apparently.</p>
]]></description><pubDate>Thu, 29 Jan 2026 00:37:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=46804018</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=46804018</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46804018</guid></item><item><title><![CDATA[New comment by cmsj in "Tesla profit tanked 46% in 2025"]]></title><description><![CDATA[
<p>When you absolutely, positively, must find a nice thing to say about Tesla, yes, their 11% revenue decline - their second year in a row of revenue decline, was indeed slightly less bad than analysts expected...</p>
]]></description><pubDate>Wed, 28 Jan 2026 22:29:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=46802540</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=46802540</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46802540</guid></item><item><title><![CDATA[New comment by cmsj in "AI Usage Policy"]]></title><description><![CDATA[
<p>The experience is what you make of it. Personally I'm quite enjoying using AI as a way to generate code I can disagree with and refactor into what I want.</p>
]]></description><pubDate>Fri, 23 Jan 2026 13:44:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=46732403</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=46732403</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46732403</guid></item><item><title><![CDATA[New comment by cmsj in "AI Usage Policy"]]></title><description><![CDATA[
<p>The marketing is irrelevant. The AIs are not aware of what they are doing, or motivated in the ways humans are.</p>
]]></description><pubDate>Fri, 23 Jan 2026 13:43:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=46732398</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=46732398</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46732398</guid></item><item><title><![CDATA[New comment by cmsj in "Micron Announces Exit from Crucial Consumer Business"]]></title><description><![CDATA[
<p>They already have: <a href="https://newsletter.semianalysis.com/p/tpuv7-google-takes-a-swing-at-the" rel="nofollow">https://newsletter.semianalysis.com/p/tpuv7-google-takes-a-s...</a></p>
]]></description><pubDate>Fri, 05 Dec 2025 00:22:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=46155237</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=46155237</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46155237</guid></item><item><title><![CDATA[New comment by cmsj in "Micron Announces Exit from Crucial Consumer Business"]]></title><description><![CDATA[
<p>Intel GPUs are probably not going to last much longer, considering they did a deal with nvidia for integrated GPUs.</p>
]]></description><pubDate>Fri, 05 Dec 2025 00:21:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=46155230</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=46155230</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46155230</guid></item><item><title><![CDATA[New comment by cmsj in "Micron Announces Exit from Crucial Consumer Business"]]></title><description><![CDATA[
<p>Gaming is now less than 10% of nvidia's revenue. We're really not adding any meaningful diversity to their bottom line anymore.</p>
]]></description><pubDate>Fri, 05 Dec 2025 00:20:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=46155220</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=46155220</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46155220</guid></item><item><title><![CDATA[New comment by cmsj in "Don't be a scary old guy: My 40s survival strategy with charm"]]></title><description><![CDATA[
<p>I'm merely 47 and I don't really feel like I'm any older than I was in my 20s. Smarter hopefully, wiser certainly, but I never really completely put away childish things.</p>
]]></description><pubDate>Thu, 27 Nov 2025 15:41:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=46070257</link><dc:creator>cmsj</dc:creator><comments>https://news.ycombinator.com/item?id=46070257</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46070257</guid></item></channel></rss>