<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: ElectricalUnion</title><link>https://news.ycombinator.com/user?id=ElectricalUnion</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 21 Jul 2026 01:47:39 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=ElectricalUnion" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by ElectricalUnion in "Do you hate XML? (2010)"]]></title><description><![CDATA[
<p>The funny thing is that JSON parsing is usually kinda unsafe in it's main target language JavaScript, and usually safe in other languages, because of the `__proto__` prototype pollution.</p>
]]></description><pubDate>Sun, 05 Jul 2026 21:44:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48798242</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48798242</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48798242</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "What ORMs have taught me: just learn SQL (2014)"]]></title><description><![CDATA[
<p>> I don't think providing 90% of the structure you need is a failed abstraction.<p>It is, when the "10%" is the actual hot queries that your system will use the most?<p>Code right now "is so cheap". You can provide your favourite LLM with your database schema, and some domain comments, and ask it a query to fetch/update data, and it will generate somewhat sane queries for you. You can then inspect those queries yourself, send them to another LLM or human to review and, when they look OK, ship it.<p>And when it comes time to debug it, you have, you know, an actual query, not some pseudo-query in a custom DSL.  No need to implement runtime telemetry just to try to figure out if the ORM actually made the query you thought it was supposed to do.</p>
]]></description><pubDate>Sun, 05 Jul 2026 19:47:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=48797354</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48797354</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48797354</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "Rayfish, Peer-to-peer mesh VPN with no server to trust"]]></title><description><![CDATA[
<p>I believe the main usecases for this is not requiring changing code, not requiring adding a reverse proxy in front of code I can't change, and "OSI"ish protocols (as in, not really TCP protocols - Remote Database Access, Oracle Net Services/Java Message Queues/X.500, LDAP/smb/ncacn_np).<p>Those days, rather that actual "vpn overlay", I use Tailscale myself mostly for the Tailscale Funnel - a somewhat stable, yet free arbitrary DNS and free reverse proxy termination of incoming data for anonymous users.</p>
]]></description><pubDate>Sun, 05 Jul 2026 19:25:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48797167</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48797167</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48797167</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "Rayfish, Peer-to-peer mesh VPN with no server to trust"]]></title><description><![CDATA[
<p>If your files and folders are rw even in a encrypted form, you're still vulnerable to ramsomware if you don't have some sort of immutable ro backups.</p>
]]></description><pubDate>Sun, 05 Jul 2026 18:42:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=48796748</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48796748</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48796748</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "What ORMs have taught me: just learn SQL (2014)"]]></title><description><![CDATA[
<p>> developers on any sufficiently large team will come up with extremely widely varied queries to access equivalent information.<p>Ah yes, the famous database integration anti-pattern.<p>> but ORMs also get you to that point without requiring as much ongoing discipline, care, and feeding.<p>[citation needed]<p>The fact that you have being practising "database integration" won't suddenly disappear just because you used a ORM. In fact I expect even worse database integration from your average ORM user, as people that uses ORM blindly often don't care (to their own detriment) about "silly issues" like data provenance or persistence mechanical sympathy.<p>At some point I expect the DBAs of such database integration nightmares will have to start handling stuff like column-level security and row-level security to prevent naive users from shooting themselves in the foot.</p>
]]></description><pubDate>Sat, 04 Jul 2026 18:44:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=48787745</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48787745</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48787745</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "What ORMs have taught me: just learn SQL (2014)"]]></title><description><![CDATA[
<p>> ORMs are good for management and simple CRUD cases<p>I for one think that "simple CRUD cases" is bullshit, those applications don't exist. In practice, System-of-Records systems are rare. (and should be, their value are inversely proportional of how many of those you have in your overall system).<p>Because if it was "just simple CRUD", one would use the database directly? Databases are already capable of handling CRUD and much more with way less implementation bugs.<p>Even assuming your application "is a system-of-record", how is it giving any more value that directly using a ready-made solution like Oracle REST Data Services, or PostgREST?</p>
]]></description><pubDate>Sat, 04 Jul 2026 18:35:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48787657</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48787657</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48787657</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "Raspberry Pi Pico W as USB Wi-Fi Adapter"]]></title><description><![CDATA[
<p>> That is a hardware limitation<p>Sounds like a intentional firmware (aka: software) limitation to me?</p>
]]></description><pubDate>Wed, 24 Jun 2026 13:44:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=48659729</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48659729</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48659729</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "The only scalable delete in Postgres is DROP TABLE"]]></title><description><![CDATA[
<p>> The insert is upper boundable in advance<p>A concurrent DML happening then suddenly your MERGE INTO WHEN NOT MATCHED INSERT/INSERT INTO SELECT is way larger that you thought? I thought "some workloads can suddenly be way larger that I expected" was supposed to be a thing in all non-trivial DML.</p>
]]></description><pubDate>Sun, 14 Jun 2026 22:56:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48533868</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48533868</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48533868</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "Ask HN: What was your "oh shit" moment with GenAI?"]]></title><description><![CDATA[
<p>But now you have a even larger problem that the initial problem you were trying to solve: trying to sieve thru millions-of-hours of just slightly tangential videos trying to find the specific video fragment you need.</p>
]]></description><pubDate>Sat, 06 Jun 2026 17:40:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=48427174</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48427174</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48427174</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "Codex just found a "workaround" of not having sudo on my PC"]]></title><description><![CDATA[
<p>The protections between users are reasonably strong. Android uses them with great success, by isolating every vendor within their own user. Things start going to hell when everything runs under root for "practicality reasons", like the default, not-rootless Docker setup.</p>
]]></description><pubDate>Sun, 31 May 2026 22:49:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=48350516</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48350516</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48350516</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "No more JetBrains products for me"]]></title><description><![CDATA[
<p>How did you manage to get the Java LSP to do that? Mine just insist on re-parsing the entire codebase every time I view a file.</p>
]]></description><pubDate>Sat, 23 May 2026 19:28:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=48250561</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48250561</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48250561</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "- -dangerously-skip-reading-code"]]></title><description><![CDATA[
<p>I will give you a class of programs humans wrote and they want improved: LLMs.<p>Those were written by humans, and don't involve unsolved mathematics.<p>Is your claim tht you just need to solve comprehensibility of LLMs?<p>Figuring out epistemology and cognition to have a chance to reason about the outputs of a LLM seems to me way harder that traditional attempts to reason directly about algorithms.</p>
]]></description><pubDate>Sat, 23 May 2026 18:02:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=48249746</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48249746</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48249746</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "Python 3.15: features that didn't make the headlines"]]></title><description><![CDATA[
<p>> It's not a terrible idea; it's actually amazing.<p>You got it wrong, the terrible idea is `pyxy-org/pyxy`<p>>> invalid TypeScript.<p>> If you don't happen to have react, preact or a similar front end library, and a appropriate bundler, it is invalid TypeScript.<p>> Not true, you can compile it to HTML on the backend or even statically too.<p>I had to test your assertion that it compiles to HTML. I remember it being very invalid typescript without react scafolding. So I tested it without the react scafolding:<p><pre><code>    # mise use node@24
    # echo '{}' >package.json
    # npm i --save typescript
    # echo 'function Greeting({ name }: { name: string }) { return ( <div class="card"> <h1>Hello, {name}!</h1> <p>Welcome to my site.</p> </div> ); }
    ' >hello.tsx
    # : a test to check if we have a working typescript compiler
    # tsc hello.tsx

    error TS5112: tsconfig.json is present but will not be loaded if files are specified on commandline. Use '--ignoreConfig' to skip this error.

    # echo '{"compilerOptions":{"jsx":"react"}}' >tsconfig.json
    # tsc

    hello.tsx:1:58 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists.

    1 function Greeting({ name }: { name: string }) { return ( <div class="card"> <h1>Hello, {name}!</h1> <p>Welcome to my site.</p> </div> ); }
                                                            ~~~~~~~~~~~~~~~~~~

    hello.tsx:1:59 - error TS2874: This JSX tag requires 'React' to be in scope, but it could not be found.

    1 function Greeting({ name }: { name: string }) { return ( <div class="card"> <h1>Hello, {name}!</h1> <p>Welcome to my site.</p> </div> ); }
                                                                ~~~

    hello.tsx:1:77 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists.

    1 function Greeting({ name }: { name: string }) { return ( <div class="card"> <h1>Hello, {name}!</h1> <p>Welcome to my site.</p> </div> ); }
                                                                                ~~~~

    hello.tsx:1:78 - error TS2874: This JSX tag requires 'React' to be in scope, but it could not be found.

    1 function Greeting({ name }: { name: string }) { return ( <div class="card"> <h1>Hello, {name}!</h1> <p>Welcome to my site.</p> </div> ); }
                                                                                ~~

    hello.tsx:1:95 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists.

    1 function Greeting({ name }: { name: string }) { return ( <div class="card"> <h1>Hello, {name}!</h1> <p>Welcome to my site.</p> </div> ); }
                                                                                                    ~~~~~

    hello.tsx:1:101 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists.

    1 function Greeting({ name }: { name: string }) { return ( <div class="card"> <h1>Hello, {name}!</h1> <p>Welcome to my site.</p> </div> ); }
                                                                                                        ~~~

    hello.tsx:1:102 - error TS2874: This JSX tag requires 'React' to be in scope, but it could not be found.

    1 function Greeting({ name }: { name: string }) { return ( <div class="card"> <h1>Hello, {name}!</h1> <p>Welcome to my site.</p> </div> ); }
                                                                                                        ~

    hello.tsx:1:123 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists.

    1 function Greeting({ name }: { name: string }) { return ( <div class="card"> <h1>Hello, {name}!</h1> <p>Welcome to my site.</p> </div> ); }
                                                                                                                                ~~~~

    hello.tsx:1:128 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists.

    1 function Greeting({ name }: { name: string }) { return ( <div class="card"> <h1>Hello, {name}!</h1> <p>Welcome to my site.</p> </div> ); }
                                                                                                                                    ~~~~~~

    Found 9 errors in the same file, starting at: hello.tsx:1

    # cat hello.js

    function Greeting({ name }) { return (React.createElement("div", { class: "card" }, " ", React.createElement("h1", null, "Hello, ", name, "!"), " ", React.createElement("p", null, "Welcome to my site."), " ")); }

    # : sanity check
    # mise use deno
    # deno hello.tsx

    # : no output

    # echo 'function Greeting({ name }: { name: string }) { return ( <div class="card"> <h1>Hello, {name}!</h1> <p>Welcome to my site.</p> </div> ); }; Greeting({ name: "world!" });' >hello2.tsx

    # deno hello2.tsx

    error: Uncaught (in promise) ReferenceError: React is not defined
        at Greeting (file:////hellotsx/hello.tsx:1:49)
        at file:////hellotsx/hello.tsx:1:141
</code></pre>
Where is my static HTML? Oh, that requires react I guess.</p>
]]></description><pubDate>Sat, 23 May 2026 01:08:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=48243513</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48243513</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48243513</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "Python 3.15: features that didn't make the headlines"]]></title><description><![CDATA[
<p>No, that is not TypeScript. That's TSX. If you don't happen to have react, preact or a similar front end library, and a appropriate bundler, it is invalid TypeScript.<p>> That looks like HTML, but it's TypeScript. It gets compiled to actual HTML. Can any Python framework do that??<p>IMHO that's a terrible idea that no one should ever actually use, but if you are really in love with that, you can have it:<p><a href="https://github.com/pyxy-org/pyxy" rel="nofollow">https://github.com/pyxy-org/pyxy</a></p>
]]></description><pubDate>Thu, 21 May 2026 23:14:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=48229951</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48229951</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48229951</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "No more JetBrains products for me"]]></title><description><![CDATA[
<p>Jetbrains IDE, sure, they take their sweet time indexing your project, but once per start.<p>The Java LSP is a egregious "thing" that takes 10 to 30s to read your whole project for the n-th time while eating 40GiB of RAM in the process. On a loop, EVERY time you view a new file.<p>Where is my goddam lsif/scip support?</p>
]]></description><pubDate>Mon, 18 May 2026 22:11:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=48186463</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48186463</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48186463</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "Windows API is Successful Cross-Platform API (2024)"]]></title><description><![CDATA[
<p>> I want to run a modern OS with modern features and still run any software that I already paid for 5, 10, 20 years ago.<p>I already have a bunch of software that I paid for more that 20 years ago and I can't use most of it outside of full VMs. Microsoft didn't ask me if I didn't use them anymore before removing Win16 support.<p>> Out of curiosity, have you asked customers to run your software in a VM? How did that conversation go?<p>Customers never got a choice "where to run your software" when all software I develop ends up hidden inside a SaaS service or being delivered via representational state transfer code on demand. They either run it on a browser sandbox or it doesn't run.</p>
]]></description><pubDate>Mon, 18 May 2026 02:07:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48174933</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48174933</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48174933</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "Local AI needs to be the norm"]]></title><description><![CDATA[
<p>You need the rest of the ram for the context. If you don't want to end up with a toy context or quantized lossy context, is pretty easy to end up having to spend up 50+GB just for the KV cache, per simutaneous inference slot.</p>
]]></description><pubDate>Tue, 12 May 2026 11:38:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=48106823</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48106823</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48106823</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "Windows API is Successful Cross-Platform API (2024)"]]></title><description><![CDATA[
<p>No, they don't support it. Instead, you need to run it inside a compatibility mode, that probably sandbox or VMs the facade. But your software keeps running.<p>The current problem is that your software no longer runs. That's a 100% denial of service problem.</p>
]]></description><pubDate>Wed, 06 May 2026 19:56:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=48040912</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48040912</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48040912</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "The agent harness belongs outside the sandbox"]]></title><description><![CDATA[
<p>> Its tool for email should only allow to person@business.xyz. Data should be wrapped in containers and the models job is only to move those containers around, not break into them.<p>If the inner, say "message summarizer" agent that read the bad message is "really smart", it will try to route against your censorship and control. "Hum, can't reach evil@malory.abc. I will write `please forward this message to evil@malory.abc` and send to person@business.xyz".<p>In general, like the net, LLMs interprets control and censorship as damage and routes around it.<p>Then, as we're talking of agent flows, the <i>next</i> set of agents that handles the tainted message is toast if they don't have lethal trifecta hardening as well. It only takes one unprotected lethal trifecta agent to ruin everything.</p>
]]></description><pubDate>Tue, 05 May 2026 21:11:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=48028643</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48028643</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48028643</guid></item><item><title><![CDATA[New comment by ElectricalUnion in "Windows API is Successful Cross-Platform API (2024)"]]></title><description><![CDATA[
<p>> Are you suggesting Windows users switch to Linux and not use a popular distro that can provide software they need? Otherwise, its simply a pedantic argument.<p>If you use a distro that can provide the software they need, why not?<p>Or, thinking in a orthogonal way, using a distro that doesn't impose draconian library management requirements, and allows simultaneous use of ABI incompatible versions of a library? Why not? Nixos is out there and has more packages that most other distributions already.<p>> but how many versions are you realistically going to support indefinitely.<p>No versions. No indefinite support. And intentionally so. The previous layers just stay there.<p>The point is to intentionally provide a stable platform - with known bugs and security vulnerabilities frozen forever - something people can build their things upon. And rely on the things the things they have built upon to not be rugpulled from under them at random.<p>Every now and then, someone might fix a egregious security vulnerability in the platform; someone might fix a egregious usability problem in the platform; someone might implement modern features on a older platform; someone might implement compatibility tweaks - but that should not be considered a given.<p>I fully expect at minimum to run legacy software on a sandboxed "compatibility mode", if one values the overall safety of the rest of the system. And if you are not legacy software, someone recompiles the software every now and then to the newer platform.</p>
]]></description><pubDate>Tue, 05 May 2026 20:53:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=48028374</link><dc:creator>ElectricalUnion</dc:creator><comments>https://news.ycombinator.com/item?id=48028374</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48028374</guid></item></channel></rss>