<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: needlesslygrim</title><link>https://news.ycombinator.com/user?id=needlesslygrim</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 11 Jun 2026 08:43:09 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=needlesslygrim" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by needlesslygrim in "Why Objective-C"]]></title><description><![CDATA[
<p>While Swift now has the `borrowing` and `consuming` keywords, support for storing references is nonexistent, and the only way to return/store `Span`s, etc, is only possible through using experimental `@lifetime` annotations.<p>Swift is a nice language, and it's new support for the bare necessity of affine types is a good step forward, but it's not at all comparable with Rust.</p>
]]></description><pubDate>Mon, 02 Mar 2026 18:53:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=47222347</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=47222347</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47222347</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Ruby Symbols"]]></title><description><![CDATA[
<p>> extremely inefficient strings (erlang)<p>Doesn't most modern Erlang code use binaries instead of charlists? Elixir and Gleam certainly do.</p>
]]></description><pubDate>Tue, 18 Nov 2025 17:24:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=45969258</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=45969258</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45969258</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Systems Programming with Zig"]]></title><description><![CDATA[
<p>> Rust has some support for zero-runtime, but a lot of it's features is either useless of outright in the way when you are not using a heap.<p>Could you give some examples?</p>
]]></description><pubDate>Sat, 04 Oct 2025 20:12:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=45476312</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=45476312</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45476312</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Framework Laptop 16"]]></title><description><![CDATA[
<p>That's good to hear, I guess it's possible a thicker module could be made in the future with more cooling potential?</p>
]]></description><pubDate>Tue, 26 Aug 2025 16:52:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=45029155</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=45029155</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45029155</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Framework Laptop 16"]]></title><description><![CDATA[
<p>I'm very impressed you managed to get nvidia to give you access to the 5070! I have one queetion though, is the 5070 limited to 100W because of the docking connector, or for cooling reasons?</p>
]]></description><pubDate>Tue, 26 Aug 2025 15:45:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=45028137</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=45028137</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45028137</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Using Microsoft's New CLI Text Editor on Ubuntu"]]></title><description><![CDATA[
<p>That makes sense, and it's interesting that both you and Linus Torvalds maintain your own versions of Micro Emacs. Sign of greatness perhaps :)</p>
]]></description><pubDate>Tue, 24 Jun 2025 05:52:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=44363192</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=44363192</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44363192</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Using Microsoft's New CLI Text Editor on Ubuntu"]]></title><description><![CDATA[
<p>I'm curious, why don't you use GNU Emacs?</p>
]]></description><pubDate>Sun, 22 Jun 2025 15:59:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=44347961</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=44347961</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44347961</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Four Lectures on Standard ML (1989) [pdf]"]]></title><description><![CDATA[
<p>Oh I see. I assumed being able to explicitly yield unit meant statements were essentially just syntax sugar for unit. Thanks for the correction.</p>
]]></description><pubDate>Tue, 01 Apr 2025 07:19:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=43543786</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=43543786</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43543786</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Four Lectures on Standard ML (1989) [pdf]"]]></title><description><![CDATA[
<p>Well, Rust barely has statements [1]. Nearly everything in Rust is an expression, and AFAIK statements /are/ essentially expressions that yield `()` [2].<p>[1]: <a href="https://doc.rust-lang.org/reference/statements.html" rel="nofollow">https://doc.rust-lang.org/reference/statements.html</a><p>[2]: <a href="https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=12aacef98d63cb28ec12b0ae96308619" rel="nofollow">https://play.rust-lang.org/?version=stable&mode=debug&editio...</a></p>
]]></description><pubDate>Mon, 31 Mar 2025 10:16:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=43533210</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=43533210</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43533210</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Google will develop Android OS behind closed doors starting next week"]]></title><description><![CDATA[
<p>In China WeChat is the dominant messaging platform, SMS is only used for delivery notifications, spam, etc.</p>
]]></description><pubDate>Wed, 26 Mar 2025 22:27:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=43488183</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=43488183</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43488183</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Ask HN: A retrofitted C dialect?"]]></title><description><![CDATA[
<p>That's probably fair.</p>
]]></description><pubDate>Mon, 10 Mar 2025 04:53:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=43317122</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=43317122</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43317122</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Ask HN: A retrofitted C dialect?"]]></title><description><![CDATA[
<p>> Async Rust is painful<p>On the other hand, I've found normal threading in Rust quite simple (generally using a thread pool).</p>
]]></description><pubDate>Tue, 25 Feb 2025 16:34:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=43174048</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=43174048</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43174048</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Roc rewrites the compiler in Zig"]]></title><description><![CDATA[
<p>Well if you're going to eat crow, I may as well eat pigeon, for I didn't realise that paper wasn't showing real source.<p>Thanks for the link to the LCF text though :^)</p>
]]></description><pubDate>Wed, 05 Feb 2025 15:32:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=42949908</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=42949908</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42949908</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Zig; what I think after months of using it"]]></title><description><![CDATA[
<p>I think this criticism is silly. Here's what your first example would look like in a language with keywords (where reasonable, perhaps like C#) instead:<p><pre><code>  pub fn play<lifetime p>(in out self, player: mut ref AnimationPlayer lifetime p, new_animation: AnimationNodeIndex, transition_duration: Duration) -> mut ref AnimationPlayer lifetime p
</code></pre>
But, this is still confusing! Let's remove even more symbols, and make the syntax more obvious by removing abbreviations:<p><pre><code>  PUBLIC FUNCTION Play
  LIFETIMES
    P
  PARAMETERS
    IN OUT Self
  Player AS MUTABLE REFERENCE TO AnimationPlayer WITH LIFETIME P
  NewAnimation AS AnimationNodeIndex
  TransititionDuration AS Duration
  RETURNS MUTABLE REFERENCE TO ActiveAnimation
  BEGIN
  ...
  END
</code></pre>
IMO, using keywords instead of symbols for references, lifetimes, etc, would just make Rust overly verbose, and there's a reason BCPL used braces instead of BEGIN/END :^)</p>
]]></description><pubDate>Wed, 05 Feb 2025 15:28:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=42949850</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=42949850</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42949850</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Roc rewrites the compiler in Zig"]]></title><description><![CDATA[
<p>Well, ML (or at least the first versions of it) used a λx • x syntax [1] for λ-abstractions, the same (excluding the use of • over .) notation as used with the Lambda Calculus, and I've always assumed \ was an ASCII stand in.<p>[1]: <a href="https://homepages.inf.ed.ac.uk/wadler/papers/papers-we-love/milner-type-polymorphism.pdf" rel="nofollow">https://homepages.inf.ed.ac.uk/wadler/papers/papers-we-love/...</a> (can be spotted on page 353)</p>
]]></description><pubDate>Wed, 05 Feb 2025 01:08:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=42941995</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=42941995</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42941995</guid></item><item><title><![CDATA[New comment by needlesslygrim in ""We're building a new static type checker for Python""]]></title><description><![CDATA[
<p>Unfortunately,  while `dynamic` is used for dynamic typing in C#, `var` is just type inferenfe like `auto` in C++.</p>
]]></description><pubDate>Thu, 30 Jan 2025 09:47:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=42876382</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=42876382</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42876382</guid></item><item><title><![CDATA[Sony Proposes Changing LLVM Clang Default to C++20 Mode]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.phoronix.com/news/Sony-LLVM-Clang-CXX20-Default">https://www.phoronix.com/news/Sony-LLVM-Clang-CXX20-Default</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42665533">https://news.ycombinator.com/item?id=42665533</a></p>
<p>Points: 13</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 11 Jan 2025 12:54:51 +0000</pubDate><link>https://www.phoronix.com/news/Sony-LLVM-Clang-CXX20-Default</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=42665533</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42665533</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Swift for C++ Practitioners: Move Semantics"]]></title><description><![CDATA[
<p>This is interesting because these semantics seems to be a direct(ish) clone of Rust's. I wonder if this moves Swift's performance ceiling closer to Rust's?</p>
]]></description><pubDate>Fri, 10 Jan 2025 03:35:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=42652181</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=42652181</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42652181</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Ghostty 1.0"]]></title><description><![CDATA[
<p>I'm also interested in why the MIT license was chosen. I guess it's because of the plan to create 'libghostty'?</p>
]]></description><pubDate>Fri, 27 Dec 2024 10:36:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=42521225</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=42521225</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42521225</guid></item><item><title><![CDATA[New comment by needlesslygrim in "Fault Report – and alternative to Result in F#"]]></title><description><![CDATA[
<p>I agree, this doesn't seem to be much better than adding `throws Throwable` to all your methods that can fail in Java. The reason sum types are so useful for error handling is that all possible cases can be exhaustively checked against at compile time.</p>
]]></description><pubDate>Sun, 22 Dec 2024 06:31:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=42484743</link><dc:creator>needlesslygrim</dc:creator><comments>https://news.ycombinator.com/item?id=42484743</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42484743</guid></item></channel></rss>