<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: ceronman</title><link>https://news.ycombinator.com/user?id=ceronman</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 23 Apr 2026 15:24:33 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=ceronman" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by ceronman in "Wero – Digital payment wallet, made in Europe"]]></title><description><![CDATA[
<p>1. Credit cards are not that common. People usually have debit cards. Those can sometimes be used online but they're not widely accepted. My debit card is Maestro, which is not accepted in many places.<p>2. Even with my Mastercard credit card, the process is still inconvenient. For small purchases, it's fine. But for larger ones, there is an annoying second factor authentication, I have to enter a special password, and the wait to receive an SMS.<p>3. Visa and Mastercard fees. Most of the time these are paid by the merchant. But sometimes the customer has to pay more if the payment method is credit card. Some places don't accept these at all.<p>In general iDEAL is simple, secure and convenient. Not only to pay online, but also for example for splitting a bill with friends. I'm very happy to see this being adopted more widely in Europe.</p>
]]></description><pubDate>Mon, 16 Feb 2026 20:40:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=47040038</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=47040038</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47040038</guid></item><item><title><![CDATA[New comment by ceronman in "Crafting Interpreters"]]></title><description><![CDATA[
<p>A switch or pattern matching approach is useful, but not practical for some cases. For example, there are cases where you are interested in only a single kind of node in the three, for those cases the Visitor pattern is very helpful, while doing pattern matching is cumbersome because you have to match and check almost every node kind. That's why, for example, the Rust compiler still uses the visitor pattern for certain things, and pattern matching for others.</p>
]]></description><pubDate>Thu, 15 Jan 2026 15:00:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=46633461</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=46633461</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46633461</guid></item><item><title><![CDATA[New comment by ceronman in "Crafting Interpreters"]]></title><description><![CDATA[
<p>The parsers in crafting interpreters do not use the visitor pattern. The visitor pattern is used when you already have a tree structure or similar. The parser is what gives you such tree structure, the AST. When you have this structure, you typically use the visitor pattern to process it for semantic analysis, code generation, etc.</p>
]]></description><pubDate>Thu, 15 Jan 2026 13:31:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=46632245</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=46632245</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46632245</guid></item><item><title><![CDATA[New comment by ceronman in "Crafting Interpreters"]]></title><description><![CDATA[
<p>The visitor pattern is very common in programming language implementations. I've seen it in the Rust compiler, in the Java Compiler, in the Go compiler and in the Roslyn  C# compiler. Also used extensively in JetBrains' IDEs.<p>What do you have against this pattern? Or what is a better alternative?</p>
]]></description><pubDate>Thu, 15 Jan 2026 13:27:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=46632192</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=46632192</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46632192</guid></item><item><title><![CDATA[New comment by ceronman in "Meet the real screen addicts: the elderly"]]></title><description><![CDATA[
<p>The elderly, the kids, the teenagers, the adults. Screen addiction is a pandemic. The biggest one humanity has ever seen.<p>The richest, most powerful organizations are spending billions every month to make it more addictive, to reach more people.</p>
]]></description><pubDate>Sat, 25 Oct 2025 07:51:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=45702078</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=45702078</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45702078</guid></item><item><title><![CDATA[New comment by ceronman in "Things you can do with a debugger but not with print debugging"]]></title><description><![CDATA[
<p>I used to agree with this, but then I realized that you can use trace points (aka non-suspending break points) in a debugger. These cover all the use cases of print statements with a few extra advantages:<p>- You can add new traces, or modify/disable existing ones at runtime without having to recompile and rerun your program.<p>- Once you've fixed the bug, you don't have to cleanup all the prints that you left around the codebase.<p>I know that there is a good reason for debugging with prints: The debugging experience of many languages suck. In that case I always use prints. But if I'm lucky to use a language with good debugging tooling (e.g Java/Kotlin + IntelliJ IDEA), there is zero chance to ever print for debugging.</p>
]]></description><pubDate>Wed, 10 Sep 2025 08:16:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=45194762</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=45194762</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45194762</guid></item><item><title><![CDATA[New comment by ceronman in "The Expression Problem and its solutions (2016)"]]></title><description><![CDATA[
<p>I don't know why you're getting down voted. But you are right. Rust type system solves this in a very nice way. Maybe to clarify we can show how to do the exact same example shown with Clojure multi-methods, but in Rust:<p><pre><code>    struct Constant { value: i32 }
    struct BinaryPlus { lhs: i32, rhs: i32 }
    
    trait Evaluate {
        fn evaluate(&self) -> i32;
    }
    
    impl Evaluate for Constant {
        fn evaluate(&self) -> i32 { self.value }
    }
    
    impl Evaluate for BinaryPlus {
        fn evaluate(&self) -> i32 { self.lhs + self.rhs }
    }
    
    // Adding a new operation is easy. Let's add stringify:
    
    trait Stringify {
        fn stringify(&self) -> String;
    }
    
    impl Stringify for Constant {
        fn stringify(&self) -> String { format!("{}", self.value) }
    }
    
    impl Stringify for BinaryPlus {
        fn stringify(&self) -> String { format!("{} + {}", self.lhs, self.rhs) }
    }
    
    // How about adding new types? Suppose we want to add FunctionCall
    
    struct FunctionCall { name: String, arguments: Vec<i32> }
    
    impl Evaluate for FunctionCall {
        fn evaluate(&self) -> i32 { todo!() }
    }
    
    impl Stringify for FunctionCall {
        fn stringify(&self) -> String { todo!() }
    }</code></pre></p>
]]></description><pubDate>Sun, 07 Sep 2025 20:56:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=45162066</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=45162066</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45162066</guid></item><item><title><![CDATA[New comment by ceronman in "The Expression Problem and its solutions (2016)"]]></title><description><![CDATA[
<p>> That's not the expression problem.<p>To me it looks like this is exactly the expression problem. The expression problem is not about adding methods to a trait, it's about adding an operation to a set of types. In this case every operation is defined by a single trait.<p>The idea behind the expression problem is to be able to define either a new operation or a new type in such a way that the code is nicely together. Rust trait system accomplish this beautifully.<p>> That's not unique to Rust, you can add new interfaces in any language...<p>Many languages have interfaces, but most of them don't allow you to implement them for an arbitrary type that you have not defined. For example, in Java, if you create an interface called `PrettyPrintable`, but you can't implement it for the `ArrayList` type from the standard library. In Rust you can do this kind of things.</p>
]]></description><pubDate>Sun, 07 Sep 2025 20:47:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=45161972</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=45161972</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45161972</guid></item><item><title><![CDATA[New comment by ceronman in "The Expression Problem and its solutions (2016)"]]></title><description><![CDATA[
<p>Why would the the orphan rule be a problem here?<p>The orphan rule only disallow impls if both the trait <i>and</i> the type are defined outside the crate.<p>But in this example if you are adding a new type (struct) or a new operation (trait), well this new item should be in your crate, so all the impls that follow are allowed.</p>
]]></description><pubDate>Sun, 07 Sep 2025 20:31:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=45161851</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=45161851</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45161851</guid></item><item><title><![CDATA[New comment by ceronman in "Writing a C compiler in 500 lines of Python (2023)"]]></title><description><![CDATA[
<p>Very cool. I think Wasm is a nice instruction set, but I agree that its structured control flow is a bit weird and also the lack of instructions to handle the memory stack. But it's much more cleaner than something like x86_64.<p>If you are interesting in learning in more detail how to write a C compiler, I highly recommend the book "Writing a C Compiler" by Nora Sandler [0]. This is a super detailed, incremental guide on how to write a C compiler. This also uses the traditional architecture of using multiple passes. It uses its own IR called Tacky and it even includes some optimization passes such as constant folding, copy propagation, dead code elimination, register allocation, etc. The book also implements much more features, including arrays, pointers, structs/unions, static variables, floating point, strings, linking to stdlib via System V ABI, and much more.<p>[0] <a href="https://norasandler.com/book/" rel="nofollow">https://norasandler.com/book/</a></p>
]]></description><pubDate>Thu, 04 Sep 2025 07:08:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=45124443</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=45124443</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45124443</guid></item><item><title><![CDATA[New comment by ceronman in "AI is predominantly replacing outsourced, offshore workers"]]></title><description><![CDATA[
<p>China dominance in manufacturing, at least in tech, it's not based on cheap labor, but rather in skills, tooling and supply chain advantages.<p>Tim Cook explains it better that I could ever do:<p><a href="https://www.youtube.com/watch?v=2wacXUrONUY" rel="nofollow">https://www.youtube.com/watch?v=2wacXUrONUY</a></p>
]]></description><pubDate>Mon, 18 Aug 2025 15:34:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=44941778</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=44941778</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44941778</guid></item><item><title><![CDATA[New comment by ceronman in "Blip: Peer-to-peer massive file sharing"]]></title><description><![CDATA[
<p>This looks really cool. I especially like the "Keep your progress, whatever happens" feature.<p>The product looks polished and I definitely see myself using it. My only concern is: Are they taking VC money? Is this going to be enshittified to death trying to pursue a 1000x investment return?</p>
]]></description><pubDate>Tue, 22 Jul 2025 17:14:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=44650233</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=44650233</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44650233</guid></item><item><title><![CDATA[New comment by ceronman in "Slack's 57MB 404 page"]]></title><description><![CDATA[
<p>- The Legend of Zelda: Ocarina of Time: 32 MB</p>
]]></description><pubDate>Fri, 11 Jul 2025 10:02:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=44530366</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=44530366</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44530366</guid></item><item><title><![CDATA[New comment by ceronman in "Why is the Rust compiler so slow?"]]></title><description><![CDATA[
<p>I bet that if you take those 278k lines of code and rewrite them in simple Rust, without using generics, or macros, and using a single crate, without dependencies, you could achieve very similar compile times. The Rust compiler can be very fast if the code is simple. It's when you have dependencies and heavy abstractions  (macros, generics, traits, deep dependency trees) that things become slow.</p>
]]></description><pubDate>Thu, 26 Jun 2025 21:05:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=44391359</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=44391359</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44391359</guid></item><item><title><![CDATA[New comment by ceronman in "Show HN: I recreated 90s Mode X demoscene effects in JavaScript and Canvas"]]></title><description><![CDATA[
<p>Hi! That sounds very interesting, where can I find information about this workshop? I am interested in participating.</p>
]]></description><pubDate>Tue, 17 Jun 2025 09:30:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=44297227</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=44297227</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44297227</guid></item><item><title><![CDATA[New comment by ceronman in "Gukesh becomes the youngest chess world champion in history"]]></title><description><![CDATA[
<p>It was. But he had 9 minutes vs more than an hour for Gukesh. The entire match has been Ding defending miraculously, I thought it was a matter of time before he eventually failed. The fact that it happened on the last moves of the last game, it's definitely hard for Ding, but fair for Gukesh IMO.</p>
]]></description><pubDate>Thu, 12 Dec 2024 13:50:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=42399108</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=42399108</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42399108</guid></item><item><title><![CDATA[Is doom scrolling rotting our brains?]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.theguardian.com/commentisfree/2024/dec/09/brain-rot-word-of-the-year-reality-internet-cognitive-function">https://www.theguardian.com/commentisfree/2024/dec/09/brain-rot-word-of-the-year-reality-internet-cognitive-function</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42368060">https://news.ycombinator.com/item?id=42368060</a></p>
<p>Points: 7</p>
<p># Comments: 2</p>
]]></description><pubDate>Mon, 09 Dec 2024 17:16:28 +0000</pubDate><link>https://www.theguardian.com/commentisfree/2024/dec/09/brain-rot-word-of-the-year-reality-internet-cognitive-function</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=42368060</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42368060</guid></item><item><title><![CDATA[New Kindle e-readers no longer appear on computers]]></title><description><![CDATA[
<p>Article URL: <a href="https://goodereader.com/blog/kindle/new-kindle-e-readers-no-longer-appear-on-computers">https://goodereader.com/blog/kindle/new-kindle-e-readers-no-longer-appear-on-computers</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41938916">https://news.ycombinator.com/item?id=41938916</a></p>
<p>Points: 4</p>
<p># Comments: 1</p>
]]></description><pubDate>Thu, 24 Oct 2024 19:33:58 +0000</pubDate><link>https://goodereader.com/blog/kindle/new-kindle-e-readers-no-longer-appear-on-computers</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=41938916</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41938916</guid></item><item><title><![CDATA[New comment by ceronman in "Intel's Core Ultra 2 Chip Posts Nearly 24-Hour Battery Life in Lunar Lake"]]></title><description><![CDATA[
<p>x86 is certainly not dead, and I don't think it will anytime soon, but they are still behind Apple M3 in terms of performance per watt. And M4 is about to arrive. I'm a bit disappointed because I really want more competition for Apple, but they're just not there yet, nor x86 nor Qualcomm.</p>
]]></description><pubDate>Tue, 24 Sep 2024 19:30:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=41640048</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=41640048</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41640048</guid></item><item><title><![CDATA[New comment by ceronman in "Intel's Core Ultra 2 Chip Posts Nearly 24-Hour Battery Life in Lunar Lake"]]></title><description><![CDATA[
<p>Take it with a grain of salt. Other reviewers such as Hardware Canucks [1] have mentioned that they have not been able to get such long hours. Their numbers are closer to 15 hours.<p>[1] <a href="https://www.youtube.com/watch?v=CxAMD6i5dVc" rel="nofollow">https://www.youtube.com/watch?v=CxAMD6i5dVc</a></p>
]]></description><pubDate>Tue, 24 Sep 2024 19:27:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=41640021</link><dc:creator>ceronman</dc:creator><comments>https://news.ycombinator.com/item?id=41640021</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41640021</guid></item></channel></rss>