<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: VPenkov</title><link>https://news.ycombinator.com/user?id=VPenkov</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 15 Apr 2026 04:28:06 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=VPenkov" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by VPenkov in "The JavaScript Oxidation Compiler"]]></title><description><![CDATA[
<p>> The vite plus idea is that you'll pay for visual tools.<p>From what I understand, Vite+ seems like an all-in-one toolchain. Instead of maintaining multiple configurations with various degrees of intercompatibility, you maintain only one.<p>This has the added benefit that linters and such can share information about your dependency graph, and even ASTs, so your tools doesn't have to compute them individually. Which has a very decent potential of improving your overall pre-merge pipeline. Then, on top of that, caching.<p>The focus here is of course enterprise customers and looks like it is supposed to compete with the likes of Nx/Moonrepo/Turborepo/Rush. Nx and Rush are big beasts and can be somewhat unwieldy and quirky. Nx lost some trust with its community by retracting some open-source features and took a very long time to (partially) address the backlash.<p>Vite+ has a good chance to be a contender on the market with clearer positioning if it manages to nail monorepo support.</p>
]]></description><pubDate>Mon, 23 Feb 2026 16:18:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=47124389</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=47124389</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47124389</guid></item><item><title><![CDATA[New comment by VPenkov in "The JavaScript Oxidation Compiler"]]></title><description><![CDATA[
<p>Oxc is not the first Rust-based product on the market that handles JS, there is also SWC which is now reasonably mature. I maintain a reasonably large frontend project (in the 10s of thousands of components) and SWC has been our default for years. SWC has made sure that there is actually a very decent support for JS in the Rust ecosystem.<p>I'd say my biggest concern is that the same engineers who use JS as their main language are usually not as adept with Rust and may experience difficulties maintaining and extending their toolchain, e.g. writing custom linting rules. But most engineers seem to be interested in learning so I haven't seen my concern materialize.</p>
]]></description><pubDate>Mon, 23 Feb 2026 06:56:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=47118955</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=47118955</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47118955</guid></item><item><title><![CDATA[New comment by VPenkov in "Shai-Hulud compromised a dev machine and raided GitHub org access: a post-mortem"]]></title><description><![CDATA[
<p>I had the chance to finish reading and it looks like Trigger were using an older version of PNPM which didn't do any of the above, and have since implemented everything I've mentioned in my post, plus some additional Git security.<p>So a slight amendment there on the human error side of things.</p>
]]></description><pubDate>Mon, 15 Dec 2025 18:26:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=46278331</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=46278331</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46278331</guid></item><item><title><![CDATA[New comment by VPenkov in "Shai-Hulud compromised a dev machine and raided GitHub org access: a post-mortem"]]></title><description><![CDATA[
<p>> you have no appetite for a better security model<p>For what it's worth, there are some advancements. PNPM - the packager used in this case - doesn't automatically run postinstall scripts. In this case, either the engineer allowed it explicitly, or a transitive dependency was previously considered safe, and allowed by default, but stopped being safe.<p>PNPM also lets you specify a minimum package age, so you cannot install packages younger than X.  
The combination of these would stop most attacks, but becomes less effective if everyone specifies a minimum package age, so no one would fall victim.<p>It's a bit grotesque because the system relies on either the package author noticing on time, or someone falling victim and reporting it.<p>NPM now supports publishing signed packages, and PNPM has a trustPolicy flag. This is a step in a good direction, but is still not enough, because it relies on publishers to know and care about signing packages, and it relies on consumers to require it.<p>There _is_ appetite for a better security model, but a lot of old, ubiquitous packages, are unmaintained and won't adopt it. The ecosystem is evolving, but very slowly, and breaking changes seem needed.</p>
]]></description><pubDate>Mon, 15 Dec 2025 10:20:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=46272570</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=46272570</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46272570</guid></item><item><title><![CDATA[New comment by VPenkov in "Tags to make HTML work like you expect"]]></title><description><![CDATA[
<p>Well you do learn that a no-build process can work at some scale, and you can see what tech stack is used and roughly how it works.<p>But regardless, I didn't mean to make any argument for or against this, I'm saying this was one of the points DHH made at some point.</p>
]]></description><pubDate>Mon, 27 Oct 2025 21:58:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=45726831</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=45726831</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45726831</guid></item><item><title><![CDATA[New comment by VPenkov in "Tags to make HTML work like you expect"]]></title><description><![CDATA[
<p>37 Signals [0] famously uses their own Stimulus [1] framework on most of their products. Their CEO is a proponent of the whole no-build approach because of the additional complexity it adds, and because it makes it difficult for people to pop your code and learn from it.<p>[0]: <a href="https://basecamp.com/" rel="nofollow">https://basecamp.com/</a>
[1]: <a href="https://stimulus.hotwired.dev/" rel="nofollow">https://stimulus.hotwired.dev/</a></p>
]]></description><pubDate>Mon, 27 Oct 2025 12:46:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=45720419</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=45720419</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45720419</guid></item><item><title><![CDATA[New comment by VPenkov in "Show HN: Helium Browser for Android with extensions support, based on Vanadium"]]></title><description><![CDATA[
<p>The repository introduces it as indeed based on Helium [0].<p>The cool part about Helium is that it's based on patches, rather than forking the full source code. I don't know how sustainable this is in the long term, but it's an interesting approach for sure.<p>[0]: <a href="https://helium.computer/" rel="nofollow">https://helium.computer/</a></p>
]]></description><pubDate>Mon, 27 Oct 2025 01:32:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=45716505</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=45716505</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45716505</guid></item><item><title><![CDATA[New comment by VPenkov in "Tinnitus Neuromodulator"]]></title><description><![CDATA[
<p>Same here. A few years ago I thought maybe the ringing isn't normal. It hadn't occurred to me before that.<p>I found a YouTube video of a "tinnitus demo" with the right sound and frequency. I could only start hearing it at about 80% volume. I gave my headphones to my partner and she said it was unbearable. I guess I'm used to my normal.<p>I slightly regret knowing about it, I seem to be paying more attention to it now.</p>
]]></description><pubDate>Sat, 18 Oct 2025 17:58:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=45629209</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=45629209</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45629209</guid></item><item><title><![CDATA[New comment by VPenkov in "Show HN: Autism Simulator"]]></title><description><![CDATA[
<p>One is impulsive, the other requires structure. The two are not mutually exclusive though, because both conditions are pretty diverse. AuDHD is a term used to describe people with both.</p>
]]></description><pubDate>Wed, 01 Oct 2025 15:23:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=45438810</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=45438810</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45438810</guid></item><item><title><![CDATA[New comment by VPenkov in "Shai-Hulud malware attack: Tinycolor and over 40 NPM packages compromised"]]></title><description><![CDATA[
<p>Yes it does, you're correct and I have misread. I can't edit, delete, or flag my initial reply unfortunately.</p>
]]></description><pubDate>Wed, 17 Sep 2025 15:11:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=45276822</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=45276822</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45276822</guid></item><item><title><![CDATA[New comment by VPenkov in "Shai-Hulud malware attack: Tinycolor and over 40 NPM packages compromised"]]></title><description><![CDATA[
<p>It does not, since version 11:<p><a href="https://docs.npmjs.com/cli/v11/using-npm/changelog#1100-pre0-2024-11-26" rel="nofollow">https://docs.npmjs.com/cli/v11/using-npm/changelog#1100-pre0...</a></p>
]]></description><pubDate>Wed, 17 Sep 2025 09:36:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=45273686</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=45273686</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45273686</guid></item><item><title><![CDATA[New comment by VPenkov in "Performance-focused forks of styled-components"]]></title><description><![CDATA[
<p>I'm really not a fan of CSS in JS, however it does have it's use-cases. Class mangling is very convenient with it and allows you to be prescriptive about how you're doing theming support, which is great when building libraries that 3rd parties embed on their websites.<p>The trade-off is that of course your customers can't style things you haven't anticipated, but it means you can control what changes are breaking.<p>And you can always add an extra variable in a new version if a customer wants to change a border color.</p>
]]></description><pubDate>Fri, 12 Sep 2025 10:15:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=45220609</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=45220609</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45220609</guid></item><item><title><![CDATA[New comment by VPenkov in "Malicious versions of Nx and some supporting plugins were published"]]></title><description><![CDATA[
<p>Oh, happy days!</p>
]]></description><pubDate>Wed, 27 Aug 2025 21:17:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=45045406</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=45045406</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45045406</guid></item><item><title><![CDATA[New comment by VPenkov in "Malicious versions of Nx and some supporting plugins were published"]]></title><description><![CDATA[
<p>Not a package manager, but Renovate bot has a setting like that (minimumReleaseAge). Dependabot does not (Edit: does now).<p>So while your package manager will install whatever is newest, there are free solutions to keep your dependencies up to date in a reasonable manner.<p>Also, the javascript ecosystem seems to slowly be going in the direction of consolidation, and supply chain attacks are (again, slowly) getting tools to get addressed.<p>Additionally, current versions of all major package managers (NPM, PNPM, Bun, I don't know about Yarn) don't automatically run postinstall scripts - although you are likely to run them anyway because they will be suggested to you - and ultimately you're running someone else's code, postinstall scripts or not.</p>
]]></description><pubDate>Wed, 27 Aug 2025 20:59:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=45045196</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=45045196</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45045196</guid></item><item><title><![CDATA[New comment by VPenkov in "Modern Node.js Patterns"]]></title><description><![CDATA[
<p>The term originates from a Joel Spolsky article (or at least it's where I know it from). It's a great read: <a href="https://www.joelonsoftware.com/2001/04/21/dont-let-architecture-astronauts-scare-you/" rel="nofollow">https://www.joelonsoftware.com/2001/04/21/dont-let-architect...</a><p>Feels unrelated to the article though.</p>
]]></description><pubDate>Mon, 04 Aug 2025 20:12:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=44790834</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=44790834</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44790834</guid></item><item><title><![CDATA[New comment by VPenkov in "Run TypeScript code without worrying about configuration"]]></title><description><![CDATA[
<p>Been using tsx for years. This had never occurred to me, but you're right</p>
]]></description><pubDate>Thu, 17 Jul 2025 21:40:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=44598557</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=44598557</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44598557</guid></item><item><title><![CDATA[New comment by VPenkov in "Espanso – Cross-Platform Text Expander Written in Rust"]]></title><description><![CDATA[
<p>I use it to shorten common requests I have for my colleagues, e.g. to not forget their code reviews, or alias phrases I commonly use to a :command. It's handy as a form filler too.<p>I've seen people using it to insert emojis, lorem ipsum text, or fixing common typos. It's quite powerful because you can even do HTTP requests and mash them with your text.<p>There is Expanso Hub here, it contains numerous other examples: <a href="https://hub.espanso.org/" rel="nofollow">https://hub.espanso.org/</a><p>I'm now thinking about writing an expansion to help me reference tickets, e.g. expand :searchticket <string> to a list of up to 5 URLs. Since it happens inline, I don't have to "submit" the list to anything/anyone until I've cleaned up the message.</p>
]]></description><pubDate>Sun, 18 May 2025 13:27:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=44021277</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=44021277</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44021277</guid></item><item><title><![CDATA[New comment by VPenkov in "My Scammer Girlfriend: Baiting a Romance Fraudster"]]></title><description><![CDATA[
<p>I can think of three things: serving as a guide, serving to raise awareness, and entertainment.<p>On the "serving as a guide" part, some people are activists and subscribe to the idea that if they are wasting a scammer's time, this means the scammer has one victim fewer.<p>On the raising awareness side, there are absolutely plenty of YouTube videos, but it's always good to educate people before they become targets. The psychological and financial impact of getting scammed can be devastating. Raised awareness could also prompt the authorities to crack down on scam centers.<p>On the entertainment side - some people just get a kick out of it.<p>Additionally, this particular article breaks down the various tactics used and teaches the reader to identify them.</p>
]]></description><pubDate>Fri, 14 Mar 2025 10:30:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=43361219</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=43361219</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43361219</guid></item><item><title><![CDATA[New comment by VPenkov in "JetBrains Fleet drops support for Kotlin Multiplatform"]]></title><description><![CDATA[
<p>I've been working for the same company for over 7 years and a lot of the shared code that other developers use is mine.<p>Frequently I would guide other developers to implementing something and in doing so I'd guide them down to what files to open and how to integrate it. I find this process a lot more convenient over Zoom where I can annotate with a pencil. I use that to underline blocks of code. It's a bit like you have a mouse and I have a mouse on the same screen but in a nice way.<p>In a workflow like that I sometimes want to write pseudo code and I would very much welcome a feature like that. Currently JetBrains has a "Code with me" plugin or something similar, but it's a bit laggy and struggles when fast typers meet. And a feature like that is good both when I take my laptop and sit next to you, and when we're on Zoom while talking.</p>
]]></description><pubDate>Wed, 12 Feb 2025 12:51:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=43024911</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=43024911</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43024911</guid></item><item><title><![CDATA[New comment by VPenkov in "Ask HN: What is interviewing like now with everyone using AI?"]]></title><description><![CDATA[
<p>My employer sends a take-home test. It is relatively easy and not very time-consuming. Its main purpose is to act as a basic filter and to provide some material to base an interview on.<p>In the recent couple of years I have seen a lot more people ace the test and not do very well during the actual interview. Take-home exams feel like they would always be ineffective now.</p>
]]></description><pubDate>Mon, 03 Feb 2025 07:44:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=42915904</link><dc:creator>VPenkov</dc:creator><comments>https://news.ycombinator.com/item?id=42915904</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42915904</guid></item></channel></rss>