<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: TiddoLangerak</title><link>https://news.ycombinator.com/user?id=TiddoLangerak</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 16 May 2026 10:06:27 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=TiddoLangerak" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by TiddoLangerak in "'No way to prevent this,' says only package manager where this regularly happens"]]></title><description><![CDATA[
<p>You're missing the biggest root cause though, and that significantly hinders how well this translates between languages: the Java community has settled on fewer but large monolithic dependencies, whereas the JavaScript community has settled on many but small composable dependencies (for good historical reasons, but that's a topic in and off itself).<p>This directly influences how well e.g. version pinning works. In the Java world, package versions are _relatively_ independent from eachother and have few transitive dependencies, and as such version conflicts are relatively rare. This means you can get away with full pinning of all dependencies, with the occasional manual override of a conflicting transitive dependency.<p>This doesn't work in JavaScript. The dependency ecosystem is massively intertwined, if every library would specify exact versions you'd end up with literally hundreds of conflicts to resolve. That's not feasible. As a result, they've chosen the middle ground of using lock files in addition to version ranges.<p>This also hurts the effectiveness of verified namespaces: when packages come from hundreds of different sources, you're not going to notice 1 or 2 sketchy ones in there.<p>Other consequences of the big monolithic packages in Java are that updates tend to be less frequent, and more often from large reputable venders. Both of these help to reduce the problem too.<p>While the JavaScript toolchain can definitely learn a lot from the Java toolchains, the problems it needs to solve are not the same, and thus solutions don't translate 1-1.<p>At least I hope that they'll get rid of install scripts, that's such a low hanging fruit that really should've be done a decade ago.</p>
]]></description><pubDate>Sat, 16 May 2026 04:53:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=48156942</link><dc:creator>TiddoLangerak</dc:creator><comments>https://news.ycombinator.com/item?id=48156942</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48156942</guid></item><item><title><![CDATA[New comment by TiddoLangerak in "Pass: Unix Password Manager"]]></title><description><![CDATA[
<p>I have a different pubkey per device. I store all the pubkeys in the pass repo, and have a shell script to re-encrypt everything with those keys. So when I add a new device, I just need to add its pubkey, and then re-encrypt on an existing device.</p>
]]></description><pubDate>Sun, 14 Sep 2025 11:26:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=45239030</link><dc:creator>TiddoLangerak</dc:creator><comments>https://news.ycombinator.com/item?id=45239030</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45239030</guid></item><item><title><![CDATA[New comment by TiddoLangerak in "Pass: Unix Password Manager"]]></title><description><![CDATA[
<p>The beauty of pass is that there's a distinction between giving access to the encrypted vault vs giving access to decryption, and you can leverage this.<p>How I've been doing this is that I have 2 (sets of) backup people. The first set has access to the repo, but can't decrypt. The second set can decrypt (i.e. I have their pubkeys imported), but don't have access to the repo. I've chosen the people such that it's unlikely they collude against me, but in case something happens it's likely they'll be able to get in touch with each other.<p>There's also other possible approaches: e.g. instead of building a dead man's switch based on the encryption, you can build a dead man's switch based on the data. I.e. you'll use their pubkeys for encryption, but the repo itself is behind a dead man's switch.</p>
]]></description><pubDate>Sun, 14 Sep 2025 11:24:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=45239023</link><dc:creator>TiddoLangerak</dc:creator><comments>https://news.ycombinator.com/item?id=45239023</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45239023</guid></item><item><title><![CDATA[New comment by TiddoLangerak in "Exploiting CI / CD Pipelines for fun and profit"]]></title><description><![CDATA[
<p>Am I missing something, or does the step in<p>> Pushing Malicious Changes to the Pipeline<p>mean that they already have full access to the repository in the first place? Normally I wouldn't expect an attacker to be able to push to master (or any branch for that matter). Without that, the exploit won't work. And with that access, there's so many other exploits one can do that it's really no longer about ci/cd vulns.</p>
]]></description><pubDate>Mon, 09 Sep 2024 09:44:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=41486870</link><dc:creator>TiddoLangerak</dc:creator><comments>https://news.ycombinator.com/item?id=41486870</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41486870</guid></item></channel></rss>