<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: DarkUranium</title><link>https://news.ycombinator.com/user?id=DarkUranium</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 16 Jun 2026 08:35:03 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=DarkUranium" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by DarkUranium in "Hetzner Price Adjustment"]]></title><description><![CDATA[
<p>There's a (IMO) great, if a bit long, article making exactly your argument. I found it on HN a few days ago: (lost the HN link, sorry)<p><a href="https://matthewbutterick.com/extinction-level-capitalism.html" rel="nofollow">https://matthewbutterick.com/extinction-level-capitalism.htm...</a></p>
]]></description><pubDate>Tue, 16 Jun 2026 02:15:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48549727</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48549727</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48549727</guid></item><item><title><![CDATA[New comment by DarkUranium in "The only scalable delete in Postgres is DROP TABLE"]]></title><description><![CDATA[
<p>One thing I did a while ago was to make deletes part of inserts, to amortize the cost.<p>The main reason was to avoid a separate cron job, but it had other benefits (and downsides) too. Something like:<p><pre><code>    DELETE FROM foo WHERE expires_at < now() LIMIT 10;
    INSERT INTO foo .....;
</code></pre>
Note the LIMIT: it ensures the latency stays under control even if we've suddenly hit 50k rows that need deleting.<p>And by deleting (up to) 10 each time we insert one, it ensures obsolete things will <i>eventually</i> get deleted.<p>Obviously, this isn't viable when the deletions must happen due to strict policy (e.g. legal compliance) since it can't ensure <i>when</i> things get deleted, just that they eventually do.
IIRC, in my case, I used it for a password reset tokens table. There's no legal issue there and keeping expired ones around is fine <i>as long as</i> the code also checks `expires_at` to make sure it's still valid (which would be a good practice regardless, for defense in depth).</p>
]]></description><pubDate>Mon, 15 Jun 2026 11:04:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=48539526</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48539526</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48539526</guid></item><item><title><![CDATA[New comment by DarkUranium in "The only scalable delete in Postgres is DROP TABLE"]]></title><description><![CDATA[
<p>Because of the guarantees they provide.<p>Storing some data in a binary file isn't very hard.
Making it so that you can do quick lookups on it (indexes) and implementing joins in a sane way is kinda hard, but easy compared to the real problem:<p>Ensuring ACID (in the case of "traditional" databases). I.e. Atomicity, Consistency, Isolation, Durability.<p>You need to protect against data corruption in the event of failure, all while guaranteeing atomic operations at the user level <i>concurrently</i> (in most production DBs; SQLite is a notable exception in that it fully serializes writes --- but it can get away with this because it's an embedded database with the primary use case of a single-process writer).
And the entire thing must land on a known good state at the end of all of those concurrent transactions.<p>... and they must do it all while maintaining good performance, and sometimes on a combination of filesystem + hardware that's actively hostile towards the idea of data integrity (e.g. hidden RAM caches in disk or RAID controllers that <i>don't</i> flush on power loss --- thankfully, those are getting rarer, or so I've come to understand).</p>
]]></description><pubDate>Mon, 15 Jun 2026 10:48:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=48539404</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48539404</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48539404</guid></item><item><title><![CDATA[New comment by DarkUranium in "Orthodox C++ (2016)"]]></title><description><![CDATA[
<p>Fancy running into you here.<p>Anyway, as it turns out, while the STL container situation is <i>better</i> than it was, it's still <i>really</i> terrible performance-wise.<p>So even nowadays, you're better off writing your own containers for performance-critical tasks; the benefits can be in orders of magnitude (depending on the task at hand, of course).</p>
]]></description><pubDate>Mon, 15 Jun 2026 02:44:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=48535983</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48535983</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48535983</guid></item><item><title><![CDATA[New comment by DarkUranium in "Orthodox C++ (2016)"]]></title><description><![CDATA[
<p>Addendum: I, for one, have used software that would constantly show exception-related error message dialogs.<p>Hell, I'm forced to use such software at work because we're (at least for now) stuck with a horrible legacy vendor.<p>It is <i>not</i> fun. So, no, "just show it to the userand let them decide" doesn't actuality resolve anything either.</p>
]]></description><pubDate>Mon, 15 Jun 2026 01:49:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=48535580</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48535580</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48535580</guid></item><item><title><![CDATA[New comment by DarkUranium in "Pyodide 314.0: Python packages can now publish WebAssembly wheels to PyPI"]]></title><description><![CDATA[
<p>I think one of the issues is that WASM is notoriously hard to generate code for because they decided to use an IR that's fundamentally incompatible with literally any existing native compiler backend's IR (not counting very specialized ones or toy direct-ast-to-machine-code compilers).<p>It feels like nobody actually consulted actual compiler writers when designing this. I'm sure that isn't true, but it definitely feels that way. (I suspect the truth is that they were consulted, but ignored.)<p>It means codegen needs to resort to all sorts of hacks (like the relooper) in order to target WASM, a property not shared by <i>any</i> other target.<p>And apparently, the way they handle variables also results in deoptimization, though I don't recall the details of that.<p>Add the fact that interacting with the browser on the web <i>still</i> has to go via JavaScript to this day (for the most part, at least), and, well.<p>---<p>TL;DR a combination of poor IR design that has a massive impedance mismatch with pre-existing compilers (and most new ones, because it turns out there's a reason the WASM approach isn't standard) plus WASM still being a second-class citizen in its supposed primary environment (the 'W' in WASM) --- the former ensures targeting it consumes a lot of resources/time, the latter ensures the bar for that to be worth it is much higher.<p>You can target most architectures with little trouble (at least a a baseline --- optimization's a hard problem regardless of target, except maybe SPIR-V due to the recommendation that pre-optimization is limited in scope). But WASM is completely out there, it's closer to trying to target e.g. Java (not JVM!) at the backend instead of machine code or some other IR.<p>You don't make an IR intended to be targeted by existing/native compilers by making it completely different to anything they had to target before <i>and</i> completely different to their own IRs and representations ... unless you're the guys behind WASM.</p>
]]></description><pubDate>Sun, 14 Jun 2026 03:03:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=48523795</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48523795</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48523795</guid></item><item><title><![CDATA[New comment by DarkUranium in "Tectonic: A modernized, complete, self-contained TeX/LaTeX engine"]]></title><description><![CDATA[
<p>LyX is specifically advertised not as WYSIWYG, but WYSIWYM ('M' = "Mean"). Note how the exported/final document looks very little like the in-UI one.<p>Typora & Obsidian apply the same ideas to Markdown.<p>I do think WYSIWYG is an absolutely broken paradigm for anything outside of literally just desktop publishing --- but WYSIWYM has a lot of merit.<p>Enough that I've been working on a stand-alone Markdown editor component that takes ideas from Typora et al.</p>
]]></description><pubDate>Sat, 13 Jun 2026 17:37:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=48519505</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48519505</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48519505</guid></item><item><title><![CDATA[New comment by DarkUranium in "Faking keyword arguments to functions in C++"]]></title><description><![CDATA[
<p>Addendum: I've been wanting to make my own shading language (for a number of reasons), and this feature is one I'd definitely include.<p>Think (for example) using a pluggable PBR module in this way, where you give it a config/options struct instead of a weird combination of `#if`, runtime arguments, and predefined uniforms and/or function names.</p>
]]></description><pubDate>Sat, 13 Jun 2026 11:04:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=48515980</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48515980</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48515980</guid></item><item><title><![CDATA[New comment by DarkUranium in "Faking keyword arguments to functions in C++"]]></title><description><![CDATA[
<p>I use this all the time in C (specifically, C99 or later). I first saw it used in anger in `sokol_gfx`, and loved it. `FLECS` does something similar.<p>C makes it much better than C++ in that the designated initializes can be set in any order --- so I don't need to remember the often-arbitrary order of struct fields for the options struct.<p>I find it weird that C++ took this great C feature and kneecapped it ...</p>
]]></description><pubDate>Sat, 13 Jun 2026 10:55:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=48515895</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48515895</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48515895</guid></item><item><title><![CDATA[New comment by DarkUranium in "Lies we tell ourselves about email addresses"]]></title><description><![CDATA[
<p>How did you manage to get Hotmail/Outlook to accept your email?<p>I got everything setup correctly, but Microsoft seems insistent on silently dropping my email.</p>
]]></description><pubDate>Fri, 12 Jun 2026 03:01:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=48499381</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48499381</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48499381</guid></item><item><title><![CDATA[New comment by DarkUranium in "Google is finally killing uBlock Origin in Chrome for good"]]></title><description><![CDATA[
<p>My favorite browser by far, especially since Mozilla/Firefox pissed me off one time too many.<p>Keep up the good work!</p>
]]></description><pubDate>Fri, 12 Jun 2026 00:50:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=48498476</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48498476</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48498476</guid></item><item><title><![CDATA[New comment by DarkUranium in "CSS: Unavoidable Bad Parts"]]></title><description><![CDATA[
<p>I feel like CSS would be in a much better place if they went with the Cassowary proposal for layout.<p>It would avoid the whole mess of block vs table vs float vs flexbox vs grid (and also absolute vs relative vs fixed) positioning.<p>Basically, it feels like 90% of CSS is it trying to fix its past layout mistakes & limitations.</p>
]]></description><pubDate>Fri, 12 Jun 2026 00:26:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=48498287</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48498287</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48498287</guid></item><item><title><![CDATA[New comment by DarkUranium in "Google Declaring War on the Web"]]></title><description><![CDATA[
<p>Voting with one's wallet pretty much never worked (with <i>few</i> exceptions). The conspiracy theorist in me suspects pushing this is astroturfing <i>by</i> the very aristocracy, to shift blame onto people (same with environment and such, but that one's been proven time and time again).</p>
]]></description><pubDate>Wed, 03 Jun 2026 12:59:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=48383412</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48383412</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48383412</guid></item><item><title><![CDATA[New comment by DarkUranium in "Jira Is Turing-Complete"]]></title><description><![CDATA[
<p>Leantime, Plane, Wekan come to mind.<p>Jira is absolutely huge, so it's hard to tell what <i>parts</i> of it you're interested in.</p>
]]></description><pubDate>Mon, 25 May 2026 20:59:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48271619</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48271619</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48271619</guid></item><item><title><![CDATA[New comment by DarkUranium in "Memory has grown to nearly two-thirds of AI chip component costs"]]></title><description><![CDATA[
<p>Someone was selling an Epyc machine with 512GB RAM @ 500 EUR last year. I regret not buying it now ...</p>
]]></description><pubDate>Sun, 24 May 2026 22:03:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=48261463</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48261463</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48261463</guid></item><item><title><![CDATA[New comment by DarkUranium in "Converting an Integer to a Decimal String in Under Two Nanoseconds"]]></title><description><![CDATA[
<p>Because maybe the choice of serialization format isn't under your control?</p>
]]></description><pubDate>Sun, 24 May 2026 16:27:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=48258629</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48258629</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48258629</guid></item><item><title><![CDATA[New comment by DarkUranium in "Sales and Dungeons: Thermal printer TTRPG utility"]]></title><description><![CDATA[
<p>It's actually <i>the</i> reason as to why I wanted to get a thermal printer a few years ago. To be honest, I'm surprised someone else had this idea, too.<p>Alas, that never materialized as the in-person campaign I was DMing fizzled out.</p>
]]></description><pubDate>Sun, 24 May 2026 00:12:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=48252937</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48252937</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48252937</guid></item><item><title><![CDATA[New comment by DarkUranium in "Saying goodbye to asm.js"]]></title><description><![CDATA[
<p>To be honest, with how bad a target WASM is for any existing compiler, I feel like what killed that possibility was WASM itself.<p>Its IR design is horrendeous.</p>
]]></description><pubDate>Wed, 20 May 2026 22:48:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=48215371</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48215371</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48215371</guid></item><item><title><![CDATA[New comment by DarkUranium in "Iran starts Bitcoin-backed ship insurance for Hormuz strait"]]></title><description><![CDATA[
<p>You don't need a truthful reason to have an excuse. Remember the whole Iraq WMD debacle?<p>Or, for that matter, Ukraine giving up its nuclear capabilities.</p>
]]></description><pubDate>Tue, 19 May 2026 00:44:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48187873</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48187873</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48187873</guid></item><item><title><![CDATA[New comment by DarkUranium in "Show HN: Files.md – Open-source alternative to Obsidian"]]></title><description><![CDATA[
<p>Considering Microsoft's been making more and more of VSCode non-FOSS, I'm pretty sure using it as your base is at odds with your goals.</p>
]]></description><pubDate>Mon, 18 May 2026 22:58:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=48187014</link><dc:creator>DarkUranium</dc:creator><comments>https://news.ycombinator.com/item?id=48187014</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48187014</guid></item></channel></rss>