<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: doyougnu</title><link>https://news.ycombinator.com/user?id=doyougnu</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 01 Jun 2026 18:12:34 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=doyougnu" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by doyougnu in "C array types are weird"]]></title><description><![CDATA[
<p>IIRC that talk of about using indices (u32) to represent data in an array. That is orthogonal to representing that information in the type system since you can just type the index</p>
]]></description><pubDate>Wed, 27 May 2026 01:35:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=48288367</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=48288367</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48288367</guid></item><item><title><![CDATA[Functional Programmers need to take a look at Zig]]></title><description><![CDATA[
<p>Article URL: <a href="https://pure-systems.org/posts/2026-04-29-functional-programmers-need-to-take-a-look-at-zig.html">https://pure-systems.org/posts/2026-04-29-functional-programmers-need-to-take-a-look-at-zig.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47952758">https://news.ycombinator.com/item?id=47952758</a></p>
<p>Points: 5</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 29 Apr 2026 18:57:09 +0000</pubDate><link>https://pure-systems.org/posts/2026-04-29-functional-programmers-need-to-take-a-look-at-zig.html</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=47952758</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47952758</guid></item><item><title><![CDATA[Dear AI companies: Your rate limits are my favorite feature]]></title><description><![CDATA[
<p>Article URL: <a href="https://pure-systems.org/posts/2026-04-10-dear-ai-companies-your-limits-are-a-feature.html">https://pure-systems.org/posts/2026-04-10-dear-ai-companies-your-limits-are-a-feature.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47719755">https://news.ycombinator.com/item?id=47719755</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 10 Apr 2026 15:38:27 +0000</pubDate><link>https://pure-systems.org/posts/2026-04-10-dear-ai-companies-your-limits-are-a-feature.html</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=47719755</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47719755</guid></item><item><title><![CDATA[New comment by doyougnu in "Type Theorists need to take a look at Zig"]]></title><description><![CDATA[
<p>Some shameless self-promotion</p>
]]></description><pubDate>Fri, 27 Mar 2026 20:38:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=47547952</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=47547952</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47547952</guid></item><item><title><![CDATA[Type Theorists need to take a look at Zig]]></title><description><![CDATA[
<p>Article URL: <a href="https://pure-systems.org/posts/2026-03-27-the-type-theorists-need-to-take-a-look-at-zig.html">https://pure-systems.org/posts/2026-03-27-the-type-theorists-need-to-take-a-look-at-zig.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47547951">https://news.ycombinator.com/item?id=47547951</a></p>
<p>Points: 5</p>
<p># Comments: 1</p>
]]></description><pubDate>Fri, 27 Mar 2026 20:38:51 +0000</pubDate><link>https://pure-systems.org/posts/2026-03-27-the-type-theorists-need-to-take-a-look-at-zig.html</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=47547951</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47547951</guid></item><item><title><![CDATA[New comment by doyougnu in "This time is different"]]></title><description><![CDATA[
<p>I think this is exactly right. I've been thinking of "this time" as similar to the advent of digital spreadsheets. Spreadsheets existed for thousands of years but spreadsheet programs transformed spreadsheet work that took hours or weeks into seconds. You still had to know what you were doing, and if you knew what you were doing you were easily 10x faster than those that didn't.<p>I think we are in a similar situation with code generation now, then only difference in my mind is that LLMs come with a massive platform risk. Who's to say that one day anthropic decides my company is too much of a competitor to use their tool (like they've already done with openai) or what if they decide that instead of pulling their product from my use they just make it generate worse code, or even insert malicious payloads. A dependence on these tools is wildly more risky than dependency on a word processor or a spreadsheet program. It  reminds me of the arguments around net neutrality and I cannot fathom how people building on top of, and with, these tools do not see the mountain of risks around them.</p>
]]></description><pubDate>Fri, 27 Feb 2026 00:42:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47174669</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=47174669</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47174669</guid></item><item><title><![CDATA[New comment by doyougnu in "An AI agent published a hit piece on me – more things have happened"]]></title><description><![CDATA[
<p>I'm honestly shocked by this having been an Ars reader for over ten years. I miss the days when they would publish super in-depth articles on computing. Since the Conde Nast acquisition I basically only go to ars for Beth Mole's coverage which is still top notch. Other than that I've found that the Verge fulfills the need that I used to get from Ars. I also support the Verge as a paid subscriber and cannot recommend them enough.</p>
]]></description><pubDate>Sat, 14 Feb 2026 17:11:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47016199</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=47016199</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47016199</guid></item><item><title><![CDATA[New comment by doyougnu in "Where are you supposed to go if you don't care about growth?"]]></title><description><![CDATA[
<p>My recommendation: find and cultivate vision, then view the $JOB not as separate from _your_ work towards _your_ vision, but part of it. Its the part that funds you enough to continue to progress on your own plan.<p>Here's how I think of it: If I were a painter, I would paint, explore and experiment in my free time because its what I want to do. Maybe, as a painter, my vision is to improve the state of the art of some kind of dye or brush or canvas and that is my vision. But! That does not mean that I cannot be commissioned to work on a mural or put on a retainer for a museum or something else. The only difference is that in the latter you are being explicitly payed by a patron to produce something they want. And furthermore I need that work, I work for myself but still need projects to bring in money to do the work I care about.<p>I view my software dev as the same thing. I have a vision of where I want to be, what I want to do, and how I want to contribute to advance the state of the art of the things I care about. I do not care, and am unconcerned about the corporate needs of the thing I care about, its for me and for people like me. My $JOB is just one part of that larger goal and the path I walk towards that goal. Its an important part, sure, and I show up and give a good faith effort and my expert opinion, but its not the part that enriches me as much as my personal stuff. The distinction is that the $JOB is not separate, its a necessary and important part of my plan to execute on my vision.<p>Once you have vision I think you'll find its much easier to find similar people who want to work on the same things you want to work on. And I think you'll find it much easier to tolerate capitalist minutiae because you will reduce the things you need from $JOB.</p>
]]></description><pubDate>Tue, 09 Dec 2025 13:35:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=46204781</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=46204781</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46204781</guid></item><item><title><![CDATA[New comment by doyougnu in "Everyone in Seattle hates AI"]]></title><description><![CDATA[
<p>I've interfaced with some AI generated code and after several examples of finding subtle and yet very wrong bugs I now find that I digest code that I suspect coming from AI (or an AI loving coworker) with much much more scrutiny than I used to. I've frankly lost trust in any kind of care for quality or due diligence from some coworkers.<p>I see how the use of AI is useful, but I feel that the practitioners of AI-as-coding-agent are running away from the real work. How can you tell me about the system you say you have created if you don't have the patience to make it or think about it deeply in the first place?</p>
]]></description><pubDate>Wed, 03 Dec 2025 21:12:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=46140180</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=46140180</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46140180</guid></item><item><title><![CDATA[New comment by doyougnu in "Zig's new plan for asynchronous programs"]]></title><description><![CDATA[
<p>Couldn't have said it better myself. But IIUC Andrew stated that its not a monad because it does not build up a computation and then run. Rather, its as if every function runs a `runIO#` or `runReader` every time the io parameter is used.</p>
]]></description><pubDate>Wed, 03 Dec 2025 13:53:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=46134474</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=46134474</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46134474</guid></item><item><title><![CDATA[New comment by doyougnu in "Zig's new plan for asynchronous programs"]]></title><description><![CDATA[
<p>Agreed. the Haskeller in me screams "You've just implemented the IO monad without language support".</p>
]]></description><pubDate>Tue, 02 Dec 2025 16:39:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=46123083</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=46123083</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46123083</guid></item><item><title><![CDATA[New comment by doyougnu in "I'm making a small RPG and I need feeback regarding performance"]]></title><description><![CDATA[
<p>Not a game dev. Besides profiling, I would create game scenarios that exercise certain parts of the game engine.<p>For example, I would create a game fight scenario where the player has infinite health and the enemy just attacks super fast at some settable rate. That way you could monitor whats happening in extreme abnormal conditions with the hypothesis that if the game works in extreme conditions then it will work in normal conditions.<p>Another example. If you have random encounters like in old school JRPGs then I would create a scenario where a fight happens per step of the player, the fight loads, then the enemy immediately dies, rinse wash and repeat. That should allow you to asses how the game performs after 100s of fights quickly.<p>The idea here is to create tests that improve your signal to noise ratio. So you create a scenario that will create a large signal so that then you can more easily diagnose the performance issues.</p>
]]></description><pubDate>Fri, 07 Nov 2025 15:06:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=45847160</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=45847160</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45847160</guid></item><item><title><![CDATA[New comment by doyougnu in "The Rust Foundation Maintainers Fund"]]></title><description><![CDATA[
<p>I haven't dabbled in rust since 2018, but if rust has managed to be as complicated as C++ while being a fraction of the age then I would think that would be some kind of macabre achievement in its own right.</p>
]]></description><pubDate>Tue, 04 Nov 2025 19:01:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=45814662</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=45814662</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45814662</guid></item><item><title><![CDATA[New comment by doyougnu in "Why study programming languages (2022)"]]></title><description><![CDATA[
<p>I still like Olin Shiver's take on this: <a href="https://www.ccs.neu.edu/home/shivers/papers/why-teach-pl.pdf" rel="nofollow">https://www.ccs.neu.edu/home/shivers/papers/why-teach-pl.pdf</a></p>
]]></description><pubDate>Tue, 14 Oct 2025 09:00:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=45577775</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=45577775</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45577775</guid></item><item><title><![CDATA[New comment by doyougnu in "Leaving Haskell behind"]]></title><description><![CDATA[
<p>Does every usage site have to change? You would alter fibonacci to be:<p><pre><code>  fibonacci :: (MonadLogger m, MonadState (Int, Int, Int) m) => m Int
  fibonacci ...
</code></pre>
and now of course all callers must support MonadLogger. But instead of using the MonadLogger (or any mtl constraint directly) you should just be constructing an abstraction boundary with a type class synonym:<p><pre><code>  class (MonadLogger m, MonadState s m) => MyMonads s m
</code></pre>
and now you change fibonacci:<p><pre><code>  fibonacci :: MyMonads (Int, Int, Int) m => m Int
  fibonacci ...
</code></pre>
And now if you need to add a monad or add Eq or whatever you just have to change your type class synonym rather than every function. Its not a problem with the language its just programing with modularity in mind, even in the type system.</p>
]]></description><pubDate>Thu, 24 Aug 2023 14:48:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=37249395</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=37249395</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37249395</guid></item><item><title><![CDATA[New comment by doyougnu in "Haskell Optimization Handbook"]]></title><description><![CDATA[
<p>Great! If you could open an issue and perhaps lay out what you would like to see I would be more than happy to add a chapter like this. This book should serve the community and I think you've described a good gap that the book has which we could close with such a chapter.</p>
]]></description><pubDate>Tue, 30 May 2023 19:02:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=36129118</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=36129118</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36129118</guid></item><item><title><![CDATA[New comment by doyougnu in "Haskell Optimization Handbook"]]></title><description><![CDATA[
<p>I think that is a fair assessment of that chapter. The goal of the chapter was to take a project that has never done any kind of optimization and to show an optimization engineering pass. Basically one has to be sure the implementation doesn't have any obvious easy to fix leaks before considering a different algorithm or something like that.<p>So I would argue that the real message of that chapter is demonstrating, step-by-step the methods used to find the memory leaks: info-table profiling and biographical/retainer profiling and ticky-ticky profiling.</p>
]]></description><pubDate>Tue, 30 May 2023 18:34:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=36128672</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=36128672</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36128672</guid></item><item><title><![CDATA[New comment by doyougnu in "Haskell Optimization Handbook"]]></title><description><![CDATA[
<p>A chapter dedicated to understanding laziness is indeed doable, but my target audience is Haskellers that have already read through LYAH, Real-World Haskell and perhaps UPenn's CIS 194 class; each of which cover laziness and so I want to focus on things that should be more widely used or known, such as info table profiling, eventlog or the one-shot monad trick.<p>But that doesn't mean that laziness doesn't come up! For example, its impossible to demonstrate using (or defining) unboxed or unlifted types without discussing laziness. The same goes for using GHC.Exts and explaining the difference between Data.Map and Data.Map.Strict.</p>
]]></description><pubDate>Tue, 30 May 2023 18:24:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=36128532</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=36128532</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36128532</guid></item><item><title><![CDATA[New comment by doyougnu in "Haskell Optimization Handbook"]]></title><description><![CDATA[
<p>Author here! I figured it was only a matter of time before this showed up on HN after the haskell foundation announced we had moved it the HF org. If you have any recommendations then by all means please open an issue, but bear in mind that the book is still very much a work in progress. And most chapters are just todos at the moment.<p>My goal is to have a handbook that consolidates and demystifies optimizing GHC Haskell because I think this resource is sorely missing in the Haskell community. So that includes reading and understanding Core, Stg, and Cmm as well as understanding the tools that already exist for GHC Haskell but are under documented in addition to the real advanced features, like altering the RunTimeRep your data types to control their behavior at runtime. Needless to say there is a lot to do :)</p>
]]></description><pubDate>Tue, 30 May 2023 18:19:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=36128446</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=36128446</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36128446</guid></item><item><title><![CDATA[JavaScript backend merged into the Glasgow Haskell Compiler]]></title><description><![CDATA[
<p>Article URL: <a href="https://engineering.iog.io/2022-12-13-ghc-js-backend-merged/">https://engineering.iog.io/2022-12-13-ghc-js-backend-merged/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=33984080">https://news.ycombinator.com/item?id=33984080</a></p>
<p>Points: 12</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 14 Dec 2022 14:42:28 +0000</pubDate><link>https://engineering.iog.io/2022-12-13-ghc-js-backend-merged/</link><dc:creator>doyougnu</dc:creator><comments>https://news.ycombinator.com/item?id=33984080</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33984080</guid></item></channel></rss>