<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: gajus</title><link>https://news.ycombinator.com/user?id=gajus</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 19 Aug 2026 13:58:20 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=gajus" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by gajus in "Launch HN: machine0 (YC S26) – Persistent CPU and GPU VMs from the CLI"]]></title><description><![CDATA[
<p>The funny thing is that DO itself has an MCP for spinning up VMs, resolving IPs, etc.</p>
]]></description><pubDate>Tue, 18 Aug 2026 18:42:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=49350555</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=49350555</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49350555</guid></item><item><title><![CDATA[New comment by gajus in "Launch HN: machine0 (YC S26) – Persistent CPU and GPU VMs from the CLI"]]></title><description><![CDATA[
<p>OpenRouter is valuable because it has a large catalogue of competing providers for a fungible service. This does the opposite (lock in with a specific vendor).</p>
]]></description><pubDate>Tue, 18 Aug 2026 18:40:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=49350503</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=49350503</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49350503</guid></item><item><title><![CDATA[New comment by gajus in "Launch HN: machine0 (YC S26) – Persistent CPU and GPU VMs from the CLI"]]></title><description><![CDATA[
<p>Can you give me a practical example of 3 most deserving use cases? Something that customers are actually using them for today.</p>
]]></description><pubDate>Tue, 18 Aug 2026 18:37:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=49350461</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=49350461</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49350461</guid></item><item><title><![CDATA[New comment by gajus in "Show HN: CSS-in-JS Arena Bamboo, StyleX and Panda on Pixel-Identical Apps"]]></title><description><![CDATA[
<p>A few other things to callout:<p>* Bamboo started as a fork of Panda. The vast majority of the codebase has been refactored. However, their test suite has been incredibly useful to identify all the edge cases.<p>* Bamboo's API is a subset of Panda. One of Bamboo goals has been to introduce more consistency to how we write styles (without introducing lint rules). Bamboo dropped JSX factories, template literals and style props.<p>* Strict API is also what allows us fold 100% of styles.<p>* Strict API is also what allows to prune unused styles.<p>* Bamboo resolution is _strict_. Missing tokens will produce build error.</p>
]]></description><pubDate>Tue, 18 Aug 2026 14:37:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=49346265</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=49346265</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49346265</guid></item><item><title><![CDATA[Show HN: CSS-in-JS Arena Bamboo, StyleX and Panda on Pixel-Identical Apps]]></title><description><![CDATA[
<p>A little context, I've been working on Contra for the last 6 years. It's a marketplace-network – an application that's comparable to the likes of LinkedIn, UpWork, and similar in terms of its surface area. That's hundreds of routes, thousands of components, and tens of thousands of styles.<p>Over the last year, we have been obsessed with performance. We have optimized every layer of our infrastructure to the point where profiling the application increasingly started to surface bottlenecks in client-side (bundle size, and metrics like TBT, LCP, and INP). That's where CSS-in-JS comes in.<p>6 years ago, we started with styled-components. Then zero-runtime alternatives emerged and we started to experiment with them, eventually landing on Panda CSS. Panda took us a long way, but... they aren't _actually_ zero-runtime. Panda extracts CSS at build time, but it uses ~15KB runtime to map those style objects at runtime. This overhead surfaced repeatedly when profiling pages with lots of components (server-side and client-side).<p>That's where I ended up writing Bamboo to solve this.<p>Bamboo folds styles at build-time achieving _near_ zero-runtime (0.5KB vs 15 KB). If you write:<p><div className={css({ fontSize: 'lg', fontWeight: 'bold' })}>Title</div><p>it becomes:<p><div className="fs_lg fw_bold">Title</div><p>at build time.<p>If the variant is dynamic, then bundle is inlined with pre-computed map of classes.<p><span className={pick(status, {
  ok:   "d_inline-flex px_8px bg_successSoft c_success",
  warn: "d_inline-flex px_8px bg_warningSoft c_warning",
  err:  "d_inline-flex px_8px bg_dangerSoft c_danger",
})} /><p>That's the main idea behind Bamboo.<p>Thanks to folding, we were able to improve our server-side and client-side performance.<p>I built CSS-in-JS Arena as a sanity benchmark to track how we compare to Panda, but also to any other emerging frameworks.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49346044">https://news.ycombinator.com/item?id=49346044</a></p>
<p>Points: 1</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 18 Aug 2026 14:21:25 +0000</pubDate><link>https://github.com/gajus/css-in-js-arena</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=49346044</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49346044</guid></item><item><title><![CDATA[Clawtopus]]></title><description><![CDATA[
<p>Article URL: <a href="https://clawtopus.com">https://clawtopus.com</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49306426">https://news.ycombinator.com/item?id=49306426</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Sat, 15 Aug 2026 00:52:32 +0000</pubDate><link>https://clawtopus.com</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=49306426</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49306426</guid></item><item><title><![CDATA[New comment by gajus in "How Claude marks AI-generated content"]]></title><description><![CDATA[
<p>this gives strong "you wouldn't steal a car" vibes</p>
]]></description><pubDate>Tue, 11 Aug 2026 20:13:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=49263798</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=49263798</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49263798</guid></item><item><title><![CDATA[New comment by gajus in "How Claude marks AI-generated content"]]></title><description><![CDATA[
<p>The moment Google announced SynthID, the first domain I bought was deSynthID.com<p>Several open-source projects have already proven SynthID to be ineffective.</p>
]]></description><pubDate>Mon, 10 Aug 2026 22:25:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=49250712</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=49250712</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49250712</guid></item><item><title><![CDATA[New comment by gajus in "How Claude marks AI-generated content"]]></title><description><![CDATA[
<p>There are already small models trained specifically to prevent statistical detection, e.g., <a href="https://huggingface.co/kalpeshk2011/dipper-paraphraser-xxl" rel="nofollow">https://huggingface.co/kalpeshk2011/dipper-paraphraser-xxl</a><p>I guess whoever is the policy maker is assuming that some protection is better than none and that most people will not reach for such tools.</p>
]]></description><pubDate>Mon, 10 Aug 2026 22:24:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=49250689</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=49250689</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49250689</guid></item><item><title><![CDATA[New comment by gajus in "How Claude marks AI-generated content"]]></title><description><![CDATA[
<p>Most likely watermark will be proportional to the input/output ratio, i.e. if you input a long document and ask to make edits, it will not attempt to watermark it. On the other hand, if you provide a tweet and ask it to write an article, that will include watermark. Just a guess (and yes, it feels flawed)</p>
]]></description><pubDate>Mon, 10 Aug 2026 22:21:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=49250643</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=49250643</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49250643</guid></item><item><title><![CDATA[New comment by gajus in "GitHub Actions and Pages are experiencing degraded availability"]]></title><description><![CDATA[
<p>so... what happened?</p>
]]></description><pubDate>Thu, 06 Aug 2026 19:17:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=49201049</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=49201049</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49201049</guid></item><item><title><![CDATA[New comment by gajus in "Scriptc by Vercel: TypeScript-to-Native compiler, no JavaScript engine in binary"]]></title><description><![CDATA[
<p>Excellent problem space.<p>Related problem: Using AI to write compilers that optimize runtime code. I did this for Zod.<p><a href="https://github.com/gajus/zod-compiler" rel="nofollow">https://github.com/gajus/zod-compiler</a><p>Zod schemas, compiled at build time into raw boolean chains. 2-74x faster. No code changes. The plugin swaps Zod with compiled parse.<p>I wrote almost none of the optimizations. Claude did, in a loop, over 100+ iterations.<p>It works because the compiled version can be diffed against real Zod. Correctness isn't a judgment call. Same as scriptc.<p>This applies to every program with a reference implementation and a benchmark. Compilers, serializers, formatters, query planners, etc.<p>Excited for faster Internet.</p>
]]></description><pubDate>Mon, 27 Jul 2026 14:44:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=49070449</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=49070449</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49070449</guid></item><item><title><![CDATA[New comment by gajus in "What happened to TheNumbers.com"]]></title><description><![CDATA[
<p>What a throwback. Back in 2015 I have started Applaudience, which at the time was the only provider of real-time cinema ticket sales data. I still remember comparing our numbers against TheNumbers.com as part of calibration. I have since moved on to other businesses, but this remains one of my favorite pieces of technology that I have developed. Would love to bring it back one day.</p>
]]></description><pubDate>Thu, 23 Jul 2026 18:00:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=49025660</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=49025660</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49025660</guid></item><item><title><![CDATA[New comment by gajus in "Postmortem: TanStack NPM supply-chain compromise"]]></title><description><![CDATA[
<p>Reminder to secure your npm environments.<p><a href="https://gajus.com/blog/3-pnpm-settings-to-protect-yourself-from-supply-chain-attacks" rel="nofollow">https://gajus.com/blog/3-pnpm-settings-to-protect-yourself-f...</a><p>Just a handful of settings to save a whole lot of trouble.</p>
]]></description><pubDate>Mon, 11 May 2026 22:00:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=48101226</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=48101226</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48101226</guid></item><item><title><![CDATA[New comment by gajus in "Tanstack NPM Packages Compromised in Ongoing Supply-Chain Attack"]]></title><description><![CDATA[
<p>A reminder to secure your npm environment:<p><a href="https://gajus.com/blog/3-pnpm-settings-to-protect-yourself-from-supply-chain-attacks#2-set-blockexoticsubdeps" rel="nofollow">https://gajus.com/blog/3-pnpm-settings-to-protect-yourself-f...</a></p>
]]></description><pubDate>Mon, 11 May 2026 21:47:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=48101106</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=48101106</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48101106</guid></item><item><title><![CDATA[New comment by gajus in "Vite 8.0 is out!"]]></title><description><![CDATA[
<p>Congrats to the team!<p>We've been using it (in beta) for months now. It makes for a very enjoyable developer experience.</p>
]]></description><pubDate>Thu, 12 Mar 2026 20:28:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=47356586</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=47356586</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47356586</guid></item><item><title><![CDATA[New comment by gajus in "Show HN: Teemux – Zero-config log multiplexer with built-in MCP server"]]></title><description><![CDATA[
<p>Funny you ask. This project started as a very different project almost five years ago. It was called roarr.io, and the primary purpose was exactly that: adhoc collecting logs from remote machines. However, I've not ported this functionality (yet).</p>
]]></description><pubDate>Sat, 24 Jan 2026 17:46:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=46745722</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=46745722</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46745722</guid></item><item><title><![CDATA[New comment by gajus in "Show HN: Teemux – Zero-config log multiplexer with built-in MCP server"]]></title><description><![CDATA[
<p>That would require restarting your services to redirect their output. Fine for one-off scripts, but impractical when you have long-running processes and don't want to restart them every time an agent needs to read logs.<p>With teemux, a persistent MCP server gives multiple AI agents access to logs as needed—without interrupting your development flow.</p>
]]></description><pubDate>Fri, 23 Jan 2026 20:01:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=46737122</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=46737122</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46737122</guid></item><item><title><![CDATA[New comment by gajus in "Show HN: Teemux – Zero-config log multiplexer with built-in MCP server"]]></title><description><![CDATA[
<p>Fair point</p>
]]></description><pubDate>Fri, 23 Jan 2026 19:44:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=46736884</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=46736884</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46736884</guid></item><item><title><![CDATA[New comment by gajus in "Show HN: Teemux – Zero-config log multiplexer with built-in MCP server"]]></title><description><![CDATA[
<p>lowkey thought it is a genius name<p>tee (Unix command that splits output) + mux (multiplexer) = teemux</p>
]]></description><pubDate>Fri, 23 Jan 2026 19:36:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=46736792</link><dc:creator>gajus</dc:creator><comments>https://news.ycombinator.com/item?id=46736792</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46736792</guid></item></channel></rss>