<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: inbx0</title><link>https://news.ycombinator.com/user?id=inbx0</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 26 Apr 2026 08:29:14 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=inbx0" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by inbx0 in "Axios compromised on NPM – Malicious versions drop remote access trojan"]]></title><description><![CDATA[
<p>minimumReleaseAge and lockfiles also pin down transitive dependencies.</p>
]]></description><pubDate>Tue, 31 Mar 2026 17:30:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47590757</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=47590757</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47590757</guid></item><item><title><![CDATA[New comment by inbx0 in "Axios compromised on NPM – Malicious versions drop remote access trojan"]]></title><description><![CDATA[
<p>Number 1 would only be a win for zero-installs if it happened that registry was up when you made the security hotfix, since you'd need to install the depdencency the first time to get it in VC, but then suddenly down when doing a deploy. Seems like a highly unlikely scenario to me. Also, cases where npm CVEs must be patched with such urgency or bad things will happen are luckily very rare, in my experience.<p>Most npm CVEs are stuff like DDoS vulnerabilities, and you should have mitigations for those in place for at the infra-level anyway (e.g. request timeouts, rate limits, etc), or you are pretty much guaranteed to be cooked sooner or later anyway. The really dangerous stuff like arbitrary command execution from a library that takes end user input is much much more rare. The most recent big one I remember is React2shell.<p>Number 2 hasn't been much of an issue for a long time. npm doesn't allow unpublishing package after 72 hours (apart from under certain rare conditions).<p>Don't know about number 3. Would feel to me that if you have something running that can modify lockfile, they can probably also modify the chekced-in tars.<p>I can see how zero-installs are useful under some specific constraints where you want to minimize dependencies to external services, e.g. when your CI runs under strict firewalls. But for most, nah, not worth it.</p>
]]></description><pubDate>Tue, 31 Mar 2026 11:38:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=47585863</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=47585863</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47585863</guid></item><item><title><![CDATA[New comment by inbx0 in "Axios compromised on NPM – Malicious versions drop remote access trojan"]]></title><description><![CDATA[
<p>> Run Yarn in zero-installs mode (or equivalent for your package manager). Every new or changed dependency gets checked in.<p>Idk, lockfiles provide almost as good protection without putting the binaries in git. At least with `--frozen-lockfile` option.</p>
]]></description><pubDate>Tue, 31 Mar 2026 08:08:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=47584146</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=47584146</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47584146</guid></item><item><title><![CDATA[New comment by inbx0 in "Optimizing Top K in Postgres"]]></title><description><![CDATA[
<p><p><pre><code>  - saves infra costs 
  - saves infra headaches 
  - devs only need to be experts in one system (or well I guess one and a half, probably there's something to learn about ParadeDB too, but probably less than in learning Lucine) 
  - no need to worry about keeping data up to date in the separate seach system
  - all data is available when you want to do new queries that you handn't thought of when implementing the data transfer/indexing</code></pre></p>
]]></description><pubDate>Wed, 11 Mar 2026 11:06:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=47334068</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=47334068</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47334068</guid></item><item><title><![CDATA[New comment by inbx0 in "Experiment: Making TypeScript immutable-by-default"]]></title><description><![CDATA[
<p>At TypeScript-level, I think simply disallowing them makes much more sense. You can already replace .push with .concat, .sort with .toSorted, etc. to get the non-mutating behavior so why complicate things.</p>
]]></description><pubDate>Tue, 18 Nov 2025 19:12:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=45970607</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=45970607</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45970607</guid></item><item><title><![CDATA[New comment by inbx0 in "The Case Against PGVector"]]></title><description><![CDATA[
<p>I don't have much experience in dedicated vector databases, I've only used pgvector, so pardon me if there's an obvious answer to this, but how do people do similarity search combined with other filters and pagination with separate vector DB? It's a pretty common use case at least in my circles.<p>For example, give me product listings that match the search term (by vector search), and are made by company X (copanies being a separate table). Sort by vector similarity of the search term and give me top 100?.<p>We have even largely moved away from ElasticSearch to Postgres where we can, because it's just so much easier to implement with new complex filters without needing to add those other tables' data to the index of e.g. "products" every time.<p>Edit: Ah I guess this is touched a bit in the article with "Pre- vs. Post-Filtering" - I guess you just do the same as with ElasticSearch, predict what you'll want to filter with, add all of that to metadata and keep it up to date.</p>
]]></description><pubDate>Tue, 04 Nov 2025 12:22:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=45810084</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=45810084</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45810084</guid></item><item><title><![CDATA[New comment by inbx0 in "Being blocked from contributing to lodash"]]></title><description><![CDATA[
<p>Ehh what. I would give some merit to arguments like "no one should use lodash in 2025 because you can do most of it with built-ins nowadays" or maybe because it doesn't tree-shake well or maybe even because it doesn't seem to have much active development now.<p>But stating matter-of-factly that no one should use it because some of its well-documented functions are mutating ones and not functional-style, and should instead use one particular FP library out of the many out there, is not very cool.</p>
]]></description><pubDate>Tue, 07 Oct 2025 06:59:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=45500144</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=45500144</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45500144</guid></item><item><title><![CDATA[New comment by inbx0 in "The Temporal Dead Zone, or why the TypeScript codebase is full of var statements"]]></title><description><![CDATA[
<p>The post links to a TS issue [1] that explains<p>> As of TypeScript 5.0, the project's output target was switched from es5 to es2018 as part of a transition to ECMAScript modules. This meant that TypeScript could rely on the emit for native (and often more-succinct) syntax supported between ES2015 and ES2018. One might expect that this would unconditionally make things faster, but surprise we encountered was a slowdown from using let and const natively!<p>So they <i>don't</i> transpile to ES5, and that is the issue.<p>1: <a href="https://github.com/microsoft/TypeScript/issues/52924" rel="nofollow">https://github.com/microsoft/TypeScript/issues/52924</a></p>
]]></description><pubDate>Fri, 03 Oct 2025 21:12:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=45467848</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=45467848</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45467848</guid></item><item><title><![CDATA[New comment by inbx0 in "Oh no, not again a meditation on NPM supply chain attacks"]]></title><description><![CDATA[
<p>I don't think pinning deps will help you much, as these incidents often affect transitive dependencies not listed in package.json. package-lock.json is there to protect against automatic upgrades.<p>I know there are some reports about the lockfile not always working as expected. Some of those reports are outdated info from like 2018 that is simply not true anymore, some of that is due to edge cases like somebody on team having outdated version of npm or installing a package but not committing the changes to lockfile right away. Whatever the reason, pinned version ranges wouldn't protect against that. Using npm ci instead of npm install would.</p>
]]></description><pubDate>Wed, 17 Sep 2025 15:08:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=45276771</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=45276771</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45276771</guid></item><item><title><![CDATA[New comment by inbx0 in "Shai-Hulud malware attack: Tinycolor and over 40 NPM packages compromised"]]></title><description><![CDATA[
<p>The main issue there is that the maintainer lost access to their account. Yanking malicious packages is better, but even just being able to release new patch versions would've stopped the spread, but they were not able to do so for the packages that didn't have a co-publisher. How would crates.io help in this situation?<p>FWIW npm used to allow unpublishing packages, but AFAIK that feature was removed in the wake of the left-pad incident [1]. Altho now with all the frequent attacks, it might be worth considering if ecosystem disruption via malicious removal of pacakge would be lesser of two evils, compared to actual malware being distributed.<p>1: <a href="https://en.wikipedia.org/wiki/Npm_left-pad_incident" rel="nofollow">https://en.wikipedia.org/wiki/Npm_left-pad_incident</a></p>
]]></description><pubDate>Wed, 17 Sep 2025 05:27:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=45272062</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=45272062</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45272062</guid></item><item><title><![CDATA[New comment by inbx0 in "A set of smooth, fzf-powered shell aliases&functions for systemctl"]]></title><description><![CDATA[
<p>fzf [1] provides the TUI.<p>1: <a href="https://github.com/junegunn/fzf" rel="nofollow">https://github.com/junegunn/fzf</a></p>
]]></description><pubDate>Mon, 15 Sep 2025 12:24:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=45248833</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=45248833</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45248833</guid></item><item><title><![CDATA[New comment by inbx0 in "Malicious versions of Nx and some supporting plugins were published"]]></title><description><![CDATA[
<p>According to the description in advisory, this attack was in a postinstall script. So it would've helped in this case with nx. Even if you ran the tool, this particular attack wouldn't have been triggered if you had install scripts ignored.</p>
]]></description><pubDate>Wed, 27 Aug 2025 21:15:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=45045383</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=45045383</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45045383</guid></item><item><title><![CDATA[New comment by inbx0 in "Malicious versions of Nx and some supporting plugins were published"]]></title><description><![CDATA[
<p>Periodic reminder to disable npm install scripts.<p><pre><code>    npm config set ignore-scripts true [--global]
</code></pre>
It's easy to do both at project level and globally, and these days there are quite few legit packages that don't work without them. For those that don't, you can create a separate installation script to your project that cds into that folder and runs their install-script.<p>I know this isn't a silver bullet solution to supply chain attakcs, but, so far it has been effective against many attacks through npm.<p><a href="https://docs.npmjs.com/cli/v8/commands/npm-config" rel="nofollow">https://docs.npmjs.com/cli/v8/commands/npm-config</a></p>
]]></description><pubDate>Wed, 27 Aug 2025 14:33:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=45040282</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=45040282</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45040282</guid></item><item><title><![CDATA[New comment by inbx0 in "How we made JSON.stringify more than twice as fast"]]></title><description><![CDATA[
<p>My guess would be because they affect property ordering, complicating the stringification.<p>The default object property iteration rules in JS define that numeric properties are traversed first in their numeric order, and only then others in the order they were added to the object.
Since the numbers need to be in their numeric, not lexical, order, the engine would also need to parse them to ints before sorting.<p><pre><code>    > JSON.stringify({b: null, 10: null, 1: null, a: null})
    '{"1":null,"10":null,"b":null,"a":null}'</code></pre></p>
]]></description><pubDate>Tue, 05 Aug 2025 11:57:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=44796973</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=44796973</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44796973</guid></item><item><title><![CDATA[New comment by inbx0 in "SQLx – Rust SQL Toolkit"]]></title><description><![CDATA[
<p>SeaQuery looks like a similar dynamic query builder for Rust as Kysely is for JS/TS, so yeah, that'd probably solve the dynamic query problem. But I think parent wasn't so much asking for another library but for patterns.<p>How do people who choose to use a no-dsl SQL library, like SQLx, handle dynamic queries? Especially with compile-time checking. The readme has this example:<p><pre><code>  ...
  WHERE organization = ?
</code></pre>
But what if you have multiple possible where-conditions, let's say 
"WHERE organization = ?", "WHERE starts_with(first_name, ?)", "WHERE birth_date > ?",
and you need to some combination of those (possibly also none of those) based on query parameters to the API. I think that's a pretty common use case.</p>
]]></description><pubDate>Tue, 29 Jul 2025 08:22:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=44720611</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=44720611</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44720611</guid></item><item><title><![CDATA[New comment by inbx0 in "Cats as Horror Movie Villains"]]></title><description><![CDATA[
<p>To quote a TV show Community character Jeff Winger:<p>> What makes humans different from other animals? We're the only species on earth that observes Shark Week. Sharks don't even observe Shark Week, but we do. For the same reason I can pick up this pencil, tell you its name is Steve and go like this...
[breaks pencil. Abed reacts in shock]
Jeff Winger: and part of you dies just a little bit on the inside. Because people can connect with anything.</p>
]]></description><pubDate>Sat, 19 Jul 2025 11:24:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=44614560</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=44614560</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44614560</guid></item><item><title><![CDATA[New comment by inbx0 in "When parameterization fails: SQL injection in Nim using parameterized queries"]]></title><description><![CDATA[
<p>Yes. And that is what a client should 100% do from the security standpoint. But since you mention caching - from the perf standpoint, it could sometimes be beneficial for the query planner to know the values before coming up with the query plan. Sometimes I have done little optimizations by replacing prepared statement placeholders with baked-in numbers or known enum values.</p>
]]></description><pubDate>Wed, 02 Apr 2025 22:49:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=43562671</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=43562671</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43562671</guid></item><item><title><![CDATA[New comment by inbx0 in "Mako: Fast, production-grade web bundler"]]></title><description><![CDATA[
<p>They seem to be measuring things like how long it takes for the dev server to spin up, and how long HMR updates take. I don't think ESBuild offers these features out of the box. I guess it could be in the "Cold build" chart. AFAIK Vite uses ESBuild at least for some of its building, though. node_modules, dev builds maybe. Not sure if it was used in this benchmark or not.</p>
]]></description><pubDate>Sun, 09 Mar 2025 18:32:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=43312171</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=43312171</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43312171</guid></item><item><title><![CDATA[New comment by inbx0 in "Abusing C to implement JSON parsing with struct methods"]]></title><description><![CDATA[
<p>Does the JSON spec actually say that those objects should be "equal", or does it just leave that detail to implementations?<p>In JavaScript at least, those two are not exactly "the same", in the sense that you can observe the difference if you want to. If you parse those JSON strings and then iterate the keys (e.g. with Object.keys), the ordering will be different.</p>
]]></description><pubDate>Sun, 02 Mar 2025 14:01:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=43230564</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=43230564</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43230564</guid></item><item><title><![CDATA[New comment by inbx0 in "JavaScript Temporal is coming"]]></title><description><![CDATA[
<p>It's great that Temporal is coming, and I'm sure there are bunch of other nice things coming up too, but unfortunately I don't share your optimism with the specific proposals that you mention (even though those would be very nice).<p>Pipelines, pattern matching and records+tuples have all been in the works for 4+ years, and are all still in stages 1-2. I don't think any of them has seen any significant progress in the past year, except maybe pattern matching. According to an issue in the records and tuples repo, there's been pushback on the value semantics of it (i.e. whether === can be made to work). Dropping value semantics would significantly reduce the whole proposal's usefulness.<p>I think all of them are at least a year or two away from reaching stage 3, if they ever do. But hey at least we now have array grouping functions.</p>
]]></description><pubDate>Thu, 30 Jan 2025 15:52:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=42878881</link><dc:creator>inbx0</dc:creator><comments>https://news.ycombinator.com/item?id=42878881</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42878881</guid></item></channel></rss>