<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: ufo</title><link>https://news.ycombinator.com/user?id=ufo</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 08 Apr 2026 12:30:21 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=ufo" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by ufo in "LÖVE: 2D Game Framework for Lua"]]></title><description><![CDATA[
<p>That EWD is one if my pet peeves. Dijkstra makes an unfair comparison because he lists plenty of examples where 0-based indexing is more convenient but ignores the equally numerous situations where 1-based is more convenient. For example, iterating backwards over an array is much better in an 1-based world.<p>I like the argument that 1-based is better for indexing and 0-based is better for offsets:
<a href="https://hisham.hm/2021/01/18/again-on-0-based-vs-1-based-indexing/" rel="nofollow">https://hisham.hm/2021/01/18/again-on-0-based-vs-1-based-ind...</a></p>
]]></description><pubDate>Mon, 06 Apr 2026 09:39:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47658741</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=47658741</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47658741</guid></item><item><title><![CDATA[New comment by ufo in "Artemis II crew see first glimpse of far side of Moon [video]"]]></title><description><![CDATA[
<p>There's a little bit of far side on the right of the picture.</p>
]]></description><pubDate>Sun, 05 Apr 2026 16:01:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=47650765</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=47650765</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47650765</guid></item><item><title><![CDATA[New comment by ufo in "Recursive Problems Benefit from Recursive Solutions"]]></title><description><![CDATA[
<p>Tail call optimization optimizes the situations where the recursion doesn't actually need any stack space, but I think the parent poster is asking about situations that aren't tail recirsive.</p>
]]></description><pubDate>Sat, 14 Mar 2026 12:21:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47375944</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=47375944</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47375944</guid></item><item><title><![CDATA[New comment by ufo in "Recursive Problems Benefit from Recursive Solutions"]]></title><description><![CDATA[
<p>It's indeed very mechanical and some programming languages can do it for you.<p>I think you're mainly asking for heap-allocated stacks. Some languages always use the heap for stack frames instead of the native stack and can set the stack limit as high as there's memory available.<p>You might also want to look into stackful coroutines, which allow one to pause the execution of a recursive function and switch to another function. This can provide you with multiple call stacks, which is another reason people sometimes choose to use write explicit stacks.</p>
]]></description><pubDate>Sat, 14 Mar 2026 12:20:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=47375931</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=47375931</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47375931</guid></item><item><title><![CDATA[New comment by ufo in "Notes on Baking at the South Pole"]]></title><description><![CDATA[
<p>Even if soaked, beans still take hours to cook without a pressure cooker.</p>
]]></description><pubDate>Tue, 10 Mar 2026 00:08:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47317551</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=47317551</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47317551</guid></item><item><title><![CDATA[New comment by ufo in "Training students to prove they're not robots is pushing them to use more AI"]]></title><description><![CDATA[
<p>Few students do optional assignments unfortunately. Other tasks that are directly worth a gradetend to take priority (e.g. studying for another class that has an exam this week).</p>
]]></description><pubDate>Sat, 07 Mar 2026 23:43:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=47292622</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=47292622</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47292622</guid></item><item><title><![CDATA[New comment by ufo in "Training students to prove they're not robots is pushing them to use more AI"]]></title><description><![CDATA[
<p>Students are also people. If we're managing a software project, a single deadline at the end is sure to suffer from delays. It's better to split things into shorter deliverables  with more frequent feedback.</p>
]]></description><pubDate>Sat, 07 Mar 2026 22:19:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47292008</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=47292008</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47292008</guid></item><item><title><![CDATA[New comment by ufo in "Training students to prove they're not robots is pushing them to use more AI"]]></title><description><![CDATA[
<p>Students are very grade-motivated and unfortunately they rarely do the homework assignments if they are not worth points.<p>At-home coding projects, writing essays, etc also exercise different skiils than you can test for in a 2 hour written exam. It's unfortunate that due to rampant AI cheating, we can no longer reward the students who put in the work and develop these skills.</p>
]]></description><pubDate>Sat, 07 Mar 2026 22:15:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47291974</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=47291974</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47291974</guid></item><item><title><![CDATA[New comment by ufo in "Discord cuts ties with identity verification software, Persona"]]></title><description><![CDATA[
<p>J.K. Rowling is now infamous for using her vast wealth to lobby against transgender rights.</p>
]]></description><pubDate>Tue, 24 Feb 2026 17:48:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47140137</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=47140137</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47140137</guid></item><item><title><![CDATA[New comment by ufo in "My journey to the microwave alternate timeline"]]></title><description><![CDATA[
<p>A microwave lifehack I recently learned:<p>If you're gonna brown some onions, microwave them for a bit before tossing them into the pan. The first step of browning onions is just boiling away the water, which microwaves are great at. You may find that it begins to brown sooner this way.</p>
]]></description><pubDate>Mon, 23 Feb 2026 18:57:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=47126966</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=47126966</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47126966</guid></item><item><title><![CDATA[New comment by ufo in "How to choose between Hindley-Milner and bidirectional typing"]]></title><description><![CDATA[
<p>Indeed. The point I was trying to make is that an ad-hoc type inference scheme that works by recursively traversing the tree will probably be most similar to unidirectional or bidirectional type inference.</p>
]]></description><pubDate>Thu, 19 Feb 2026 19:04:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=47077683</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=47077683</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47077683</guid></item><item><title><![CDATA[New comment by ufo in "How to choose between Hindley-Milner and bidirectional typing"]]></title><description><![CDATA[
<p>If your language is typed it's good to know at least a bit, so you can do the type inference properly; there are many ways to shoot yourself in the foot when it's ad-hoc.<p>Bidirectional type inference is a type inference style where you traverse the syntax tree once. Sometimes the type info flows top to bottom and sometimes it flows bottom up. If your type inference algorithm works by traversing the syntax tree, I suggest reading more about bidirectional type inference to get a better idea of how to best coreograph when the type info goes up and when it goes down.<p>Hindley-Milner type inference works by solving constraints. First you go through the code and figure out all the type constraints (e.g. a function call f(x) introduces the constraint that x must have the same type as the argument of f). Then you solve the system of equations, as if you'd solve a sudoku puzzle. This sort of "global type inference" can sometimes figure out the types even if you don't have any type annotations at all. The catch is that some type system features introduce constraints that are hard to solve. For example, in object oriented languages the constraints are inequalities (instanceof) instead of equalities. If you plan to go this route it's worth learning how to make the algorithm efficient and which type system features would be difficult to infer.</p>
]]></description><pubDate>Thu, 19 Feb 2026 15:23:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47074780</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=47074780</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47074780</guid></item><item><title><![CDATA[New comment by ufo in "Kim Jong Un chooses teen daughter as heir"]]></title><description><![CDATA[
<p>Considering that the primary source is South Korea's spy agency, I think it's worth taking this news with a grain of salt. When north and south korea release news about each other it is always hard to tell which parts are factual and which parts are propaganda.</p>
]]></description><pubDate>Thu, 12 Feb 2026 15:23:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=46989919</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=46989919</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46989919</guid></item><item><title><![CDATA[New comment by ufo in "Thoughts on Generating C"]]></title><description><![CDATA[
<p>Related to shadow stacks, I've had trouble convincing the C optimizer that no one else is aliasing my heap-allocated helper stacks. Supposedly there ought to be a way to tell it using restrict annotations, but those are quite fiddly: only work for function parameters, and can be dusmissed for many reasons. Does anyone know of a compiler that successfully used restrict pointers in their generated code? I'd love to be pointed towards something that works.</p>
]]></description><pubDate>Mon, 09 Feb 2026 15:28:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=46946286</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=46946286</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46946286</guid></item><item><title><![CDATA[New comment by ufo in "What if AI is both good and not that disruptive?"]]></title><description><![CDATA[
<p>An indirect effect though is that if we no longer dedicate a portion of the grade to homework, fewer students do the homework and then they crash in the written exam. (Students have always been very grade-motivated. If it's not worth points they'll deprioritize it.)</p>
]]></description><pubDate>Thu, 22 Jan 2026 00:25:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=46713621</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=46713621</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46713621</guid></item><item><title><![CDATA[New comment by ufo in "What if AI is both good and not that disruptive?"]]></title><description><![CDATA[
<p>I was referring to other kinds of assessment such as exercise lists, take-home coding projects, technical writing, etc.</p>
]]></description><pubDate>Thu, 22 Jan 2026 00:22:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46713598</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=46713598</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46713598</guid></item><item><title><![CDATA[New comment by ufo in "What if AI is both good and not that disruptive?"]]></title><description><![CDATA[
<p>The most frustrating part is that giving feedback on their essays or source code is a lot of work, which goes to waste if the student cheated.<p>Unlike calculators, making an assessment slop-proof often demands more resources to grade it, be it because the assignment needs to be more complicated, or because it needs more teaching assistants, or more time allotted for oral presentations. I also shudder at the suggestions to just come up with assignments that assume the students will use AI assistance anyway. That's how you end up with Programming 102 students that can't code their way around a for loop.</p>
]]></description><pubDate>Wed, 21 Jan 2026 23:31:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=46713199</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=46713199</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46713199</guid></item><item><title><![CDATA[New comment by ufo in "What if AI is both good and not that disruptive?"]]></title><description><![CDATA[
<p>In my work as a professor, AI has demonstrated a noticeable disruptive impact for the worse.<p>It has become difficult to grade students using anything other than in-person pen and paper assessments, because AI cheating is rampant and hard to detect. It is particularly bad for introductory-level courses; the simpler the material the hardest it is to make it AI-proof.</p>
]]></description><pubDate>Wed, 21 Jan 2026 22:53:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=46712813</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=46712813</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46712813</guid></item><item><title><![CDATA[New comment by ufo in "I hate GitHub Actions with passion"]]></title><description><![CDATA[
<p>The tricky bit for me was figuring out which cache to use, and how to use and test it locally. Do you use the proprietary github actions stuff? If the installation process inside the actions runner is different from what we use in the developer machines, now we have two sets of scripts and it's harder to test and debug...</p>
]]></description><pubDate>Wed, 14 Jan 2026 13:55:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=46616103</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=46616103</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46616103</guid></item><item><title><![CDATA[New comment by ufo in "I hate GitHub Actions with passion"]]></title><description><![CDATA[
<p>How do you handle persistent state in your actions?<p>For my actions, the part that takes the longest to run is installing all the dependencies from scratch. I'd like to speed that up but I could never figure it out. All the options I could find for caching deps sounded so complicated.</p>
]]></description><pubDate>Wed, 14 Jan 2026 12:57:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=46615502</link><dc:creator>ufo</dc:creator><comments>https://news.ycombinator.com/item?id=46615502</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46615502</guid></item></channel></rss>