<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: norswap</title><link>https://news.ycombinator.com/user?id=norswap</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 15 Apr 2026 10:49:24 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=norswap" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[Heritability Puzzlers]]></title><description><![CDATA[
<p>Article URL: <a href="https://dynomight.net/heritable/">https://dynomight.net/heritable/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45028539">https://news.ycombinator.com/item?id=45028539</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 26 Aug 2025 16:12:25 +0000</pubDate><link>https://dynomight.net/heritable/</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=45028539</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45028539</guid></item><item><title><![CDATA[Futarchy's Fundamental Flaw]]></title><description><![CDATA[
<p>Article URL: <a href="https://dynomight.net/futarchy-market/">https://dynomight.net/futarchy-market/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45005494">https://news.ycombinator.com/item?id=45005494</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 24 Aug 2025 16:25:10 +0000</pubDate><link>https://dynomight.net/futarchy-market/</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=45005494</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45005494</guid></item><item><title><![CDATA[New comment by norswap in "The Core of Rust"]]></title><description><![CDATA[
<p>Not really, he explicitly makes the point that it's easier to write useful simple programs in Javascript without the extra stuff, whereas in Rust you need to know about a whole lot of things to make the equivalent simple program.</p>
]]></description><pubDate>Sun, 24 Aug 2025 15:32:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=45004997</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=45004997</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45004997</guid></item><item><title><![CDATA[New comment by norswap in "Reading Neuromancer for the first time in 2025"]]></title><description><![CDATA[
<p>I read it and was disappointed, it's okay but probably my expectations were too high for this classic.<p>I would recommend Snow Crash instead, another Sci-Fi classic from the same era which I found to be a much more enjoyable read & more commensurate to the hype.</p>
]]></description><pubDate>Thu, 17 Jul 2025 16:25:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=44595045</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=44595045</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44595045</guid></item><item><title><![CDATA[New comment by norswap in "FSE meets the FBI"]]></title><description><![CDATA[
<p>Wasn't there a better technical way to block the scraper? Like blocking IPs/domains at ingress instead of serving requests? Probably you do still pay for request traffic though...<p>Isn't there a market for anti-DDOS third-party services for API endpoints (Cloudflare etc) — through probably for "Free Speech Extremist" that wouldn't be suitable solution, and there are charges too (though presumably when facing a situation like this you actually save money).</p>
]]></description><pubDate>Mon, 09 Jun 2025 20:54:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=44229358</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=44229358</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44229358</guid></item><item><title><![CDATA[New comment by norswap in "Garfield Minus Garfield"]]></title><description><![CDATA[
<p>Am I the only one wishing I could see the original afterwards, for comparison?</p>
]]></description><pubDate>Fri, 11 Apr 2025 01:22:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=43649531</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=43649531</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43649531</guid></item><item><title><![CDATA[New comment by norswap in "Happy 10k Day"]]></title><description><![CDATA[
<p>I think it did much better on safety in some tests (no I don't have sources, going from memory :/), but is less capable by design on some more trickier scenarios. Basically pretty much what you would something like this to be.</p>
]]></description><pubDate>Wed, 12 Mar 2025 04:42:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=43340020</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=43340020</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43340020</guid></item><item><title><![CDATA[New comment by norswap in "A 10x Faster TypeScript"]]></title><description><![CDATA[
<p>I used to work on compilers & JITs, and 100% this — polymorphic calls is the killer of JIT performance, which is why something native is preferable to something that JIT compiles.<p>Also for command-line tools, the JIT warmup time can be pretty significant, adding a lot to overall command-to-result latency (and in some cases even wiping out the JIT performance entirely!)</p>
]]></description><pubDate>Tue, 11 Mar 2025 17:24:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=43334875</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=43334875</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43334875</guid></item><item><title><![CDATA[New comment by norswap in "The Demoralization is just Beginning"]]></title><description><![CDATA[
<p>His "attempt" at self-driving is better than most of the industry, at a fraction of the cost.<p>The man does and tries things. Man in the arena.</p>
]]></description><pubDate>Wed, 05 Mar 2025 08:15:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=43264136</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=43264136</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43264136</guid></item><item><title><![CDATA[Have you ever seen a goth downtown?]]></title><description><![CDATA[
<p>Article URL: <a href="https://alexdanco.com/2025/02/14/have-you-ever-seen-a-goth-downtown/">https://alexdanco.com/2025/02/14/have-you-ever-seen-a-goth-downtown/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43050422">https://news.ycombinator.com/item?id=43050422</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 14 Feb 2025 16:59:23 +0000</pubDate><link>https://alexdanco.com/2025/02/14/have-you-ever-seen-a-goth-downtown/</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=43050422</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43050422</guid></item><item><title><![CDATA[New comment by norswap in "A better (than Optional) maybe for Java"]]></title><description><![CDATA[
<p>While I agree exceptions should not be used for control flow except in the rarest of circumstances (every rule has exceptions — pun fully intended), I think checked exceptions are very useful.<p>I wrote a whole article about this, way back when: <a href="https://norswap.com/checked-exceptions/" rel="nofollow">https://norswap.com/checked-exceptions/</a><p>But for the tl;dr: checked exceptions represent somewhat expected issues, things like IO errors. There are two okay ways to handle those: checked exceptions and result types, and one bad way: unchecked exceptions.<p>Unchecked exceptions end up being undocumented in the API, and people forget to handle them.<p>Result types add a lot of ceremony, as you have to unwrap them at every level of the call stack. I've seen code dominated by error checking logic many times in C and Go (and the frequent alternative is to ignore error, which is easy in C).<p>Checked exceptions are much less verbose, you just let the exception pass through and annotate the function signature with the checked exception. It's type-safe, self-documenting and easy.<p>Unchecked exceptions "leak", checked exceptions propagate at the type-level, which is exactly what you want — making sure every caller is aware of what exceptions might occur and letting them make an explicit decision to handle or pass the buck upwards.<p>By the way, checked exceptions are coming back in favour with "effects" which are basically a generalization of checked exceptions beyond the realm of errors, trying to encode things into the type system.</p>
]]></description><pubDate>Sat, 08 Feb 2025 10:21:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=42981953</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=42981953</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42981953</guid></item><item><title><![CDATA[New comment by norswap in "Prime numbers so memorable that people hunt for them"]]></title><description><![CDATA[
<p>Why use base 36 and not base 26?</p>
]]></description><pubDate>Tue, 21 Jan 2025 23:50:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=42786780</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=42786780</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42786780</guid></item><item><title><![CDATA[The Draw (and Danger) of Data]]></title><description><![CDATA[
<p>Article URL: <a href="https://aswathdamodaran.blogspot.com/2025/01/data-update-1-for-2025-draw-and-danger.html">https://aswathdamodaran.blogspot.com/2025/01/data-update-1-for-2025-draw-and-danger.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42662149">https://news.ycombinator.com/item?id=42662149</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 11 Jan 2025 00:41:54 +0000</pubDate><link>https://aswathdamodaran.blogspot.com/2025/01/data-update-1-for-2025-draw-and-danger.html</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=42662149</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42662149</guid></item><item><title><![CDATA[New comment by norswap in "I've Acquired a New Superpower"]]></title><description><![CDATA[
<p>Wow that's interesting — trying to cross my eyes produces hellish jitter.<p>I suspect it's because my left eye is slighty lazy.<p>But I was able to superimpose the right cat picture onto the left one (it's a lot harder for the more complex sky resort picture). It's pretty eerie, the right picture just slides right up the left one (I did need to figure out the right distance for it).<p>It doesn't help me pick out the differences though, I mostly only see the right picture, and if try to focus my left eye, the right picture slides out. Still, intersting.</p>
]]></description><pubDate>Fri, 10 Jan 2025 17:13:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=42657567</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=42657567</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42657567</guid></item><item><title><![CDATA[New comment by norswap in "Fogus: Things and Stuff of 2024"]]></title><description><![CDATA[
<p>Zig — here's the choice matrix:<p>- You need strong performance, your choices are:<p><pre><code>   * C: nope, unless it's super simple library-type code, must integrate as easily as possible with everything C compatible

   * C++: unless you have ecosystem lock-in, avoid this mess, stuck in an evolutionary rut where they can't undo bad decisions and keep adding more complexity (mostly good stuff, but total complexity too high)

   * Zig: better than C & fully compatible with it

   * Rust: ecosystem tailwinds, bit better safety than Zig, steeper learning curve and uglier code

   * Go: ok but GC probably means not the best perf

   * Java: JIT means it can handily beat non-painstakingly hand-optimized C code in some particular cases (requires a lot of wisdom to choose this for perf)

   * something that will incur a lot of pain in some other way like Fortran, Forth or Ada
</code></pre>
- You need to export to C code (all of the above have options to import from C code with C/C++/Zig being the easy choices)<p><pre><code>    * C: ez

    * Zig/C++: harder but still ez, need to write some wrappers when using features nont in C
</code></pre>
All in all, for new system or high-perf work with no ecosystem tie in, it's probably a battle between Rust and Zig. I think I'd use Zig on aesthetic grounds — find it less painful to use than Rust, and I'm not too worried about missing on the extra safety. The converse decisions seems reasonable too.</p>
]]></description><pubDate>Sat, 28 Dec 2024 14:42:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=42531337</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=42531337</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42531337</guid></item><item><title><![CDATA[New comment by norswap in "Ruby 3.4.0"]]></title><description><![CDATA[
<p>The biggest improvement from this (besides maybe performance) is that it should enable much better manually programmed syntax error messages. Those generated by yacc were pretty shit.<p>This is generally my #1 reason for using a manual parser — nobody has yet made a pretty good syntax error handling / reporting for parser generators or parser combinators.<p>It's genuinely very complex — I read the whole literature on that as of 2019 (there's surprisingly little). You basically have to  inject custom logic, though there are a few heuristics that you can prepackage and can be useful in a lot of places. But the custom aspect of it means this doesn't play nice with traditional LL/LR parser generators. It could be done for parser combinators (PEG etc) however. Didn't have enough time in my PhD thesis to play with this, and I moved on to other things, but I'm hoping someone will make this eventually.</p>
]]></description><pubDate>Sat, 28 Dec 2024 14:22:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=42531220</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=42531220</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42531220</guid></item><item><title><![CDATA[New comment by norswap in "Hoarder: Self-hostable bookmark-everything app"]]></title><description><![CDATA[
<p>Is there a way to import existing corpuses?<p>Thinking in particular of browser bookmark exports and Notion, I'm sure other people would like something else. Being able to parse any kind of text file for links would be great + full-text search in text files / markdown.</p>
]]></description><pubDate>Sat, 28 Dec 2024 14:15:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=42531178</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=42531178</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42531178</guid></item><item><title><![CDATA[New comment by norswap in "Unexpected Keyboard"]]></title><description><![CDATA[
<p>Oh that looks cool! I was really hoping it would have better emoji support than MessagEase as that is the one think I miss (the ability to search for emoji by name) but alas no.</p>
]]></description><pubDate>Sun, 15 Dec 2024 05:51:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=42421766</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=42421766</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42421766</guid></item><item><title><![CDATA[New comment by norswap in "Unexpected Keyboard"]]></title><description><![CDATA[
<p>See MessagEase for a similar keyboard (not programmer-focused) with less keys but letting you use the swiping motion to type ordinary — great for fat-fingered people.</p>
]]></description><pubDate>Thu, 12 Dec 2024 20:39:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=42403103</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=42403103</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42403103</guid></item><item><title><![CDATA[New comment by norswap in "Debanking (and Debunking?)"]]></title><description><![CDATA[
<p>I used to respect patio11's opinions, and obviously he has a lot of valuable knowledge and there are things to learn from him, but some of his takes on crypto have led me to heavily discount his writings on the topic.<p>On the face of it, this writeup is reasonable.<p>I'm a crypto founder, and I struggle with banking. We've had two banking applications rejected in Singapore.<p>Here's the thing: we're not doing anything remotely like what Patrick describes. I think he strawmans a lot.<p>We're a crypto-focused IT consultancy, but closely affiliated with an upcoming blockchain. The business is set up to be super boring: we bill the client for work and that's it. The company doesn't handle a token, doesn't get revenue from onchain activities, ... The blockchain in question is not anymore risky than any other and in many ways less. Not that the banks know or ass.<p>They just say "you're rejected and we can't tell you why".<p>Now this is Singapore, not the US. It's not a targeted plan but just general policies: "crypto is potentially bothersome for us, let's not bother". In the meantime we don't have a bank account. Though I do believe US attitudes and (lack of) regulation probably impact these policies a fair deal.</p>
]]></description><pubDate>Thu, 12 Dec 2024 09:57:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=42397821</link><dc:creator>norswap</dc:creator><comments>https://news.ycombinator.com/item?id=42397821</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42397821</guid></item></channel></rss>