<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: noonat</title><link>https://news.ycombinator.com/user?id=noonat</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 06 Sep 2026 19:48:25 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=noonat" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by noonat in "AI Can Make You Suck Faster Too"]]></title><description><![CDATA[
<p>Speaking anecdotally, at least: I don't think the lack of publicly available software is necessarily evidence that AI tools are ineffective.<p>From the limited perspective I have as a senior developer working in industry, I think that:<p>1. It has been a relatively short amount of time since the November 2025 quality increase in frontier LLMs.
2. It takes time for developers to learn how to use agents effectively, once they begin to trust them.
3. There is a significant difference in the output quality dependent on how you guide the agent.
4. Experienced developers are creating lots of quality software that is used internally (or only personally by them) but which they don't have the time or confidence to release for others to use.</p>
]]></description><pubDate>Thu, 03 Sep 2026 05:16:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=49546199</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=49546199</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49546199</guid></item><item><title><![CDATA[New comment by noonat in "Javascript: call functions without using parentheses"]]></title><description><![CDATA[
<p><a href="https://observablehq.com" rel="nofollow">https://observablehq.com</a> also uses this to great effect.</p>
]]></description><pubDate>Wed, 19 Sep 2018 16:34:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=18025447</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=18025447</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=18025447</guid></item><item><title><![CDATA[New comment by noonat in "Tao Tajima – WebGL and GreenSock Animation"]]></title><description><![CDATA[
<p>The later versions of Flash supported a Stage3D object, which was basically a Flash version of what you’d expect today from WebGL. It was hardware accelerated (with a software rendering fallback, if I remember correctly) and supported anti aliasing and shaders and all the things you’d expect. Performance was pretty wonderful. If you wrote things using this, you wouldn’t notice much of a  performance difference for Flash.</p>
]]></description><pubDate>Fri, 14 Sep 2018 14:21:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=17987373</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=17987373</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17987373</guid></item><item><title><![CDATA[New comment by noonat in "Compressing Networked State Data"]]></title><description><![CDATA[
<p>A common solution is to have the server track which state frames that the clients have acknowledged receiving. The server can then delta compress from that client’s frame, for each client. It’s a bit more costly on the server side, as it means you need to maintain state frames back to the oldest acknowledged frame across all clients, but it guarantees you will be sending a packet a client can understand. Usually this is combined with some sort of limit which kicks a client off as timed out if its acknowledged frame strays too far from the most recent one.</p>
]]></description><pubDate>Tue, 05 Jun 2018 19:27:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=17241165</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=17241165</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17241165</guid></item><item><title><![CDATA[New comment by noonat in "Show HN: LÖVR – VR framework for Lua"]]></title><description><![CDATA[
<p>I haven't tried following them, but the compiling doc[0] has instructions for macOS.<p>[0] <a href="https://github.com/bjornbytes/lovr/blob/master/COMPILING.md#macos" rel="nofollow">https://github.com/bjornbytes/lovr/blob/master/COMPILING.md#...</a></p>
]]></description><pubDate>Tue, 05 Sep 2017 19:33:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=15178407</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=15178407</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15178407</guid></item><item><title><![CDATA[New comment by noonat in "Async Iterators: These Promises Are Killing My Performance"]]></title><description><![CDATA[
<p>You're correct. The spec only specifies that "onFulfilled or onRejected must not be called until the execution context stack contains only platform code." This doesn't require that the implementation use the same macro-task scheduling mechanism that setTimeout might use.</p>
]]></description><pubDate>Sun, 27 Aug 2017 22:23:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=15113143</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=15113143</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15113143</guid></item><item><title><![CDATA[New comment by noonat in "Happy 20th Birthday, Quake"]]></title><description><![CDATA[
<p>The earliest concepts for the game were quite different than Doom. You were supposed to be playing a Thor-like character named Quake, who wielded a giant hammer.</p>
]]></description><pubDate>Thu, 23 Jun 2016 14:12:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=11960959</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=11960959</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11960959</guid></item><item><title><![CDATA[New comment by noonat in "How big an issue is the nausea problem for VR products?"]]></title><description><![CDATA[
<p>I've experienced quite a bit of nausea from goggle only VR products like GearVR. Even the menu was enough to get me sick -- moving my head forward without the menu changing distance with me seemed to make my body think I should feel movement but didn't, or something like that. The nausea in these situations was quite bad and lasted for 30-60 minutes or more after taking off the goggles.<p>But I have to say that the experience was quite a bit different with the room scale VR like the HTC Vive. The only time I experienced any nausea in there was in Hover Junkers. The game has you riding a vehicle with frequent changes in direction at high speeds.  This again seemed to be related to the perception of motion without corresponding sensations.<p>But the teleportation used in games like Budget Cuts didn't affect me at all. (There were some disturbing bouts of claustrophobia when I teleported too close to a wall, but that didn't induce any nausea.)<p>At the time that I tried the Vive, I spent about 20 hours total playing with it, spread across probably 4 sessions. I think my longest duration without a break was 6 hours. It was exhausting but not nauseating. The others with me had similar experiences. In fact, one of them normally gets so nauseated by things like this that they have prescription medication for nausea for use while riding in the car -- and they didn't experience any nausea at all.</p>
]]></description><pubDate>Sun, 29 May 2016 20:52:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=11798160</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=11798160</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11798160</guid></item><item><title><![CDATA[New comment by noonat in "Show HN: What every browser knows about you"]]></title><description><![CDATA[
<p>Multiplayer gaming is a legitimate use of data channels, but I don't see why it couldn't prompt for permission.</p>
]]></description><pubDate>Sat, 02 Apr 2016 01:15:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=11409740</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=11409740</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11409740</guid></item><item><title><![CDATA[New comment by noonat in "JavaScript libraries should be written in TypeScript"]]></title><description><![CDATA[
<p>Just wanted to point out that that isn't the JS you know because that's just typing information -- it isn't generating any code at all, it's telling TS what the types look like for Underscore's external methods. This would be stripped out completely in the compiled code. The <i>actual</i> code that results in JS just below that is much more typical.</p>
]]></description><pubDate>Wed, 16 Mar 2016 17:51:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=11299269</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=11299269</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11299269</guid></item><item><title><![CDATA[New comment by noonat in "Responsive Pixel Art"]]></title><description><![CDATA[
<p>This is really cool! If you look at the source, it appears that the images themselves are defined as JS code, almost like a vector image. For example, Zeus: <a href="http://essenmitsosse.de/pixel/scripts/zeus.px" rel="nofollow">http://essenmitsosse.de/pixel/scripts/zeus.px</a><p>The author then has a renderer to turn these into pixel data. It seems to render them down to an actual pixel image on the fly.</p>
]]></description><pubDate>Wed, 09 Mar 2016 17:09:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=11254136</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=11254136</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11254136</guid></item><item><title><![CDATA[New comment by noonat in "Agar.io"]]></title><description><![CDATA[
<p>Unfortunately, nginx doesn't allow you to set custom headers for error responses by default. You need to add something like the ngx_headers_more[1] plugin for that.<p>[1]: <a href="http://wiki.nginx.org/HttpHeadersMoreModule" rel="nofollow">http://wiki.nginx.org/HttpHeadersMoreModule</a></p>
]]></description><pubDate>Thu, 30 Apr 2015 15:15:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=9465560</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=9465560</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=9465560</guid></item><item><title><![CDATA[New comment by noonat in "The best ping story I've ever heard"]]></title><description><![CDATA[
<p>After a cross country move to a remote coastal town, my wife and I were left at our destination with only a small portion of our possessions. The rest of our stuff was making its way there with the hired movers.<p>I got into a strange situation where I needed my Mac Mini for something, but it was still trying to connect to an old wired connection instead of the new wireless one. I didn't have any of my cables or display adapters -- just a keyboard.<p>Long story short: the Mac Mini has an internal speaker, and OS X comes with a vocoder shell program. I managed to boot into the OS and launch terminal, and blindly typed commands into it, piping the output to the vocoder app until I got things working.</p>
]]></description><pubDate>Fri, 09 Jan 2015 16:05:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=8862757</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=8862757</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8862757</guid></item><item><title><![CDATA[New comment by noonat in "Show HN: Lit – a modern literate programming tool"]]></title><description><![CDATA[
<p>I personally have been using it to document the more complex code that I write -- that is, the code that I have the most trouble explaining to others. I'm quite happy with the results for my collision detection library. [1] The library itself serves as a basic tutorial on collision detection, and I've used it myself for reference when I step away from the code for a while.<p>[1] <a href="https://noonat.github.io/intersect/" rel="nofollow">https://noonat.github.io/intersect/</a></p>
]]></description><pubDate>Sat, 16 Aug 2014 03:11:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=8185282</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=8185282</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8185282</guid></item><item><title><![CDATA[New comment by noonat in "Roda – A new Ruby web framework"]]></title><description><![CDATA[
<p>Definitely feels like an improvement on Cuba! I'm not a huge fan of the `is` method here, though. I feel like you could get the same thing from a terser DSL if you treated HTTP methods as terminators and only allowed `on` to filter the path.</p>
]]></description><pubDate>Fri, 08 Aug 2014 17:19:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=8153950</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=8153950</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8153950</guid></item><item><title><![CDATA[New comment by noonat in "Don't Wake Up the Programmer"]]></title><description><![CDATA[
<p>This is a great way to explain it. My wife used to suggest that I work on a side project of mine when I had a few free minutes here or there. I had a hard time explaining why it wasn't really worth the effort unless I could work on it for at <i>least</i> an hour. She trusts me on that, even if I didn't do a great job explaining why, but it seems like this explanation would make the reasons easier to convey.</p>
]]></description><pubDate>Tue, 22 Jul 2014 18:14:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=8070626</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=8070626</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8070626</guid></item><item><title><![CDATA[New comment by noonat in "You never did math in high school"]]></title><description><![CDATA[
<p>In my years of mentoring and tutoring, I've run into a number of students of programming (and, indeed, teachers) with the same problem.<p>Programming is about problem solving first, and teaching programming is about teaching someone to look at a problem analytically, and how to use an abstract flow of logic to solve a problem, and how to diagnose issues with your own logic when things go wrong. It's about critical thinking. It's about attention to detail.<p>It's about all of these things first, and about slapping keys second. But too many people see learning programming as learning the act of typing code, and focus too much on rote memorization of syntax, or teaching tools instead of thinking. Someone should come out of a course saying that they learned how to think in this new way as programmer, not that they learned a new programming language.</p>
]]></description><pubDate>Mon, 05 May 2014 14:24:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=7698706</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=7698706</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=7698706</guid></item><item><title><![CDATA[New comment by noonat in "Working simultaneously vs. waiting simultaneously"]]></title><description><![CDATA[
<p>> Indeed you can hardly do many things at once - not in a single pure Python process. One thread doing something takes the GIL and the other thread waits.<p>> You can however wait for many things at once just fine - for example, using the multiprocessing module (pool.map), or you could spawn your own thread pool to do the same.<p>This paragraph is a bit deceiving. The multiprocessing module does spawn subprocesses by default, so it can indeed be used to workaround a GIL issue and <i>do</i> many things at once. It's not the same as a thread pool (although the multiprocessing module does offer a compatible interface which uses threads).</p>
]]></description><pubDate>Fri, 02 May 2014 19:35:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=7687655</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=7687655</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=7687655</guid></item><item><title><![CDATA[New comment by noonat in "Worse"]]></title><description><![CDATA[
<p>I see arguments about whether or not Amazon Instant Video is worth the money, but I think that's beside the point, isn't it? The important part of the discussion here is that Amazon Instant Video is not of interest to a large number of existing Amazon Prime subscribers, and they are likely paying the price for those who use it.<p>It's a bit of a frustrating trend to see companies bundling new technologies like this, often at the expense of their loyal customers. I am an Amazon Prime subscriber, and will continue to be one, but I would love it if Amazon Instant video were a separate subscription that I could choose to pay for on its own merits.</p>
]]></description><pubDate>Sun, 16 Mar 2014 04:28:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=7407817</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=7407817</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=7407817</guid></item><item><title><![CDATA[New comment by noonat in "Android AOSP maintainer quits"]]></title><description><![CDATA[
<p>I am not familiar with this issue myself, but this appears to be a decent summary of it:
<a href="http://www.cmosnetworks.com/OLPC-MarvellIssue-MyWriteUpOfTheSituation.html" rel="nofollow">http://www.cmosnetworks.com/OLPC-MarvellIssue-MyWriteUpOfThe...</a></p>
]]></description><pubDate>Wed, 07 Aug 2013 19:37:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=6175089</link><dc:creator>noonat</dc:creator><comments>https://news.ycombinator.com/item?id=6175089</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=6175089</guid></item></channel></rss>