<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: writebetterc</title><link>https://news.ycombinator.com/user?id=writebetterc</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 22 Apr 2026 10:10:28 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=writebetterc" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by writebetterc in "Spotify won court order against Anna's Archive, taking down .org domain"]]></title><description><![CDATA[
<p>> This is also a big party of why artists don’t earn shit.<p>The pie that Spotify divides up among the artists is a global one. It's not like you listen to one artist, so they get your 10 bucks every month. You're paying Taylor Swift, even though you never listen to her.</p>
]]></description><pubDate>Wed, 21 Jan 2026 22:43:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=46712699</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46712699</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46712699</guid></item><item><title><![CDATA[New comment by writebetterc in "Improving the performance of WAT parser"]]></title><description><![CDATA[
<p>The grammar matters also, of course. A pure Python program is going to be much slower than the equivalent Rust program, just because CPython is so slow.<p>I don't know if this does semantic analysis of the program as well.</p>
]]></description><pubDate>Tue, 20 Jan 2026 11:11:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=46690563</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46690563</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46690563</guid></item><item><title><![CDATA[New comment by writebetterc in "Improving the performance of WAT parser"]]></title><description><![CDATA[
<p>So it went from parsing at 25MiB/s to 115MiB/s. I feel like 115MiB/s is very slow for a Rust program, I wonder what it's up to that makes it so slow now. No diss to the author, good speedup, and it might be good enough for them.</p>
]]></description><pubDate>Tue, 20 Jan 2026 10:51:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=46690431</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46690431</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46690431</guid></item><item><title><![CDATA[New comment by writebetterc in "Deconstructing the LuaJIT Pseudo Memory Leak"]]></title><description><![CDATA[
<p>This has to be AI slop text... It doesn't actually say what it does. If you've got a non-compacting GC that's fragmenting memory. If you need to release memory, then you better make sure that the blocks the GC is using are empty, and munmap them.</p>
]]></description><pubDate>Tue, 13 Jan 2026 12:12:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=46599984</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46599984</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46599984</guid></item><item><title><![CDATA[New comment by writebetterc in "Allow me to introduce, the Citroen C15"]]></title><description><![CDATA[
<p>> (not counting emergency and service vehicles)<p>Just gotta read the last line too :P</p>
]]></description><pubDate>Sat, 10 Jan 2026 16:19:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=46566965</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46566965</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46566965</guid></item><item><title><![CDATA[New comment by writebetterc in "Allow me to introduce, the Citroen C15"]]></title><description><![CDATA[
<p>> The solution to city air pollution is a different vehicle with a different drive train: an EV.<p>Priority list should basically be:<p>0. Bicycles
1. Metro
2. Buses
3. EVs<p>(not counting emergency and service vehicles)</p>
]]></description><pubDate>Sat, 10 Jan 2026 15:23:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=46566442</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46566442</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46566442</guid></item><item><title><![CDATA[New comment by writebetterc in "Eat Real Food"]]></title><description><![CDATA[
<p>> chicken breast is more than twice as "good" ratio wise.<p>Yes, at more than twice the price for me.<p>> for the average person's protein intake, yes.<p>The average person doesn't need that ratio, reaching 60-90g of protein is trivial. That ratio is good for bodybuilding purposes. Now, eating that much tofu, that sucks. Generally, getting 200g of protein sucks, even when you eat protein powder.</p>
]]></description><pubDate>Sat, 10 Jan 2026 13:16:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=46565478</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46565478</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46565478</guid></item><item><title><![CDATA[New comment by writebetterc in "OLED, Not for Me"]]></title><description><![CDATA[
<p>I'm on a M4 Macbook, and I can see it. I'm inclined to totally accept the blog author's experience as true for them, I'd probably experience the same thing.</p>
]]></description><pubDate>Sat, 10 Jan 2026 07:45:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=46563687</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46563687</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46563687</guid></item><item><title><![CDATA[New comment by writebetterc in "Eat Real Food"]]></title><description><![CDATA[
<p>Tofu's ratio is really good, though? I can get 162kcal/18g of protein tofu here. Anything where P*10 > KCAL is a very good protein source, imo.</p>
]]></description><pubDate>Thu, 08 Jan 2026 08:18:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=46538632</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46538632</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46538632</guid></item><item><title><![CDATA[New comment by writebetterc in "Backing up Spotify"]]></title><description><![CDATA[
<p>I am not, how did they solve that?</p>
]]></description><pubDate>Mon, 22 Dec 2025 09:18:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=46352485</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46352485</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46352485</guid></item><item><title><![CDATA[New comment by writebetterc in "Brent's Encapsulated C Programming Rules (2020)"]]></title><description><![CDATA[
<p>I can't edit my comment any longer, but I really like nullprogram.com</p>
]]></description><pubDate>Tue, 09 Dec 2025 16:03:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=46206471</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46206471</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46206471</guid></item><item><title><![CDATA[New comment by writebetterc in "Brent's Encapsulated C Programming Rules (2020)"]]></title><description><![CDATA[
<p>void* is basically used for ad-hoc polymorphism in C, and it is a vital part of C programming.<p><pre><code>    void new_thread(void (*run)(void*), void* context);
</code></pre>
^- This let's us pass arbitrary starting data to a new thread.<p>I don't know whether this counts as "very few use cases".<p>The Memory Ownership advice is maybe good, but why are you allocating in the copy routine if the caller is responsible for freeing it, anyway? This dependency on the global allocator creates an unnecessarily inflexible program design. I also don't get how the caller is supposed to know how to free the memory. What if the data structure is more complex, such as a binary tree?<p>It's preferable to have the caller allocate the memory.<p><pre><code>    void insert(BinTree *tree, int key, BinTreeNode *node);
</code></pre>
^- this is preferable to the variant where it takes the value as the third parameter. Of course, an intrusive variant is probably the best.<p>If you need to allocate for your own needs, then allow the user to pass in an allocator pointer (I guessed on function pointer syntax):<p><pre><code>    struct allocator { void* (*new)(size_t size, size_t alignment); void (*free)(void* p, size_t size); void* context; }.*</code></pre></p>
]]></description><pubDate>Tue, 09 Dec 2025 13:15:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=46204613</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46204613</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46204613</guid></item><item><title><![CDATA[New comment by writebetterc in "Applets are officially gone, but Java in the browser is better"]]></title><description><![CDATA[
<p>No, it's not? Using a VM is one way of preventing buffer overflows, it's not orthogonal.</p>
]]></description><pubDate>Mon, 08 Dec 2025 09:28:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=46190223</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46190223</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46190223</guid></item><item><title><![CDATA[New comment by writebetterc in "Applets are officially gone, but Java in the browser is better"]]></title><description><![CDATA[
<p>> A stack based machine? Why?<p>The JVM being a stack-machine is probably the least controversial thing about it. Wasm, CPython and Emacs all also have a stack-based bytecode language. The value, of course, comes from having a generic machine that you can then compile down into whatever machine code you want. Having a register machine doesn't seem very useful, as it's completely unnecessary for the front-end compiler to minimize register usage (the backend compiler will do that for you).<p>Specifying classpath isn't fun, I agree with that. Launch performance isn't good, and is generally a consequence of its high degree of dynamicism and JIT compiler, though of course there are ways around that (Leyden).<p>> I've written entire programs in JVM bytecode, without a compiler, and I see very little of value in it<p>I agree, I also see very little value in manually writing JVM bytecode programs. However, compiling into the JVM classfile format? Pretty darn useful.</p>
]]></description><pubDate>Mon, 08 Dec 2025 09:27:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=46190215</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46190215</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46190215</guid></item><item><title><![CDATA[New comment by writebetterc in "IBM CEO says there is 'no way' spending on AI data centers will pay off"]]></title><description><![CDATA[
<p>I think it's the realm of maybe in Silicon Valley. That's 5000 dollars. Look at this statement:<p>>  Let's say only about 1/3 of the world's adult population is poised to take advantage of paid tools enabled by AI<p>2/3 of the world's adult population is between 15 and 65 (roughly: 'working age'), so that's 50% of the working world that is capable of using AI with those numbers. India's GDP per capita is 2750USD, and now the price tag is even higher than 5k.<p>I don't know how to say this well, so I'll just blurt it out: I feel like I'm being quite aggressive, but I don't blame you or expect you to defend your statements or anything, though of course I'll read what you've got to say.</p>
]]></description><pubDate>Wed, 03 Dec 2025 08:55:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=46132036</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46132036</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46132036</guid></item><item><title><![CDATA[New comment by writebetterc in "IBM CEO says there is 'no way' spending on AI data centers will pay off"]]></title><description><![CDATA[
<p>You're saying $8 billion to cover interest, another commenter said 80, but the actual article says ""$8 trillion of CapEx means you need roughly $800 billion of profit just to pay for the interest". Eight HUNDRED billion. Where does the eight come from, from 90% of these companies failing to make a return? If a few AI companies survive and thrive (which tbh, sure, why not?) then we're still gonna fall face down into concrete.</p>
]]></description><pubDate>Wed, 03 Dec 2025 08:34:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=46131786</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46131786</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46131786</guid></item><item><title><![CDATA[New comment by writebetterc in "URL in C (2011)"]]></title><description><![CDATA[
<p>It's a joke</p>
]]></description><pubDate>Tue, 02 Dec 2025 12:11:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46120460</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46120460</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46120460</guid></item><item><title><![CDATA[New comment by writebetterc in "URL in C (2011)"]]></title><description><![CDATA[
<p>This is why you should only use /* */ as your comment style.</p>
]]></description><pubDate>Tue, 02 Dec 2025 07:55:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=46118779</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46118779</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46118779</guid></item><item><title><![CDATA[New comment by writebetterc in "Inside Rust's std and parking_lot mutexes – who wins?"]]></title><description><![CDATA[
<p>>I am very familiar with how Java does locks. This is different. Look at the ParkingLot/parking_lot API. It lets you do much more than just locks, and there’s no direct equivalent of what Java VMs call the inflated or fat lock. The closest thing is the on demand created queue keyed by address.<p>Are you familiar with the new LightweightSynchronizer approach with an indirection via a table, instead of overwriting the markWord? I'd say that this has pushed the ParkingLot approach and Java's (Hotspot's, really) approach closer to each other than before. I think the table approach in Java could be encoded trivially into ParkingLot API, and the opposite maybe. Obviously the latter would be a lot more hamfisted.</p>
]]></description><pubDate>Sat, 29 Nov 2025 10:35:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=46086534</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46086534</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46086534</guid></item><item><title><![CDATA[New comment by writebetterc in "Implications of AI to schools"]]></title><description><![CDATA[
<p>The students had identical answers, I presume</p>
]]></description><pubDate>Mon, 24 Nov 2025 22:11:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=46039999</link><dc:creator>writebetterc</dc:creator><comments>https://news.ycombinator.com/item?id=46039999</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46039999</guid></item></channel></rss>