<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: sntran</title><link>https://news.ycombinator.com/user?id=sntran</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 08 Jun 2026 16:09:52 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=sntran" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by sntran in "Ask HN: What was your "oh shit" moment with GenAI?"]]></title><description><![CDATA[
<p>You will be surprised that there are lots of things you want to do yourself but haven't been able to (not just ability, but time and effort).</p>
]]></description><pubDate>Sat, 06 Jun 2026 19:18:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=48428033</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=48428033</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48428033</guid></item><item><title><![CDATA[New comment by sntran in "Ask HN: What was your "oh shit" moment with GenAI?"]]></title><description><![CDATA[
<p>I think it will click once you actually sit down with the AI agent, toggle Plan mode, and just tell it what you want to do in couple of sentences. It will immediately start building up the plan, presenting it to you what it thinks is the right approach , with the steps to take, with open questions that you can look at and answers. Then send them back to the AI. Repeat. That process along would give you a progress way further than you try to do it by yourself.<p>You can tell it to start implementing step 1. And you pick it up from there. Very natural how you would approach an expert for help, but you can always audit.</p>
]]></description><pubDate>Sat, 06 Jun 2026 19:16:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48428012</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=48428012</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48428012</guid></item><item><title><![CDATA[New comment by sntran in "Ultra-fast CSV parsing and encoding for Elixir"]]></title><description><![CDATA[
<p>I came across this repo while trying to find alternative to NimbleCSV, the go-to CSV parser for Elixir. NimbleCSV took 230s to parse a 250MB file with 35000 rows and 2000+ columns. RustyCSV took 1.7s.</p>
]]></description><pubDate>Sat, 06 Jun 2026 00:33:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=48420150</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=48420150</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48420150</guid></item><item><title><![CDATA[Ultra-fast CSV parsing and encoding for Elixir]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/jeffhuen/RustyCSV">https://github.com/jeffhuen/RustyCSV</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48420149">https://news.ycombinator.com/item?id=48420149</a></p>
<p>Points: 3</p>
<p># Comments: 1</p>
]]></description><pubDate>Sat, 06 Jun 2026 00:33:30 +0000</pubDate><link>https://github.com/jeffhuen/RustyCSV</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=48420149</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48420149</guid></item><item><title><![CDATA[New comment by sntran in "Show HN: Boxes.dev: ditch localhost; run Claude Code and Codex in the cloud"]]></title><description><![CDATA[
<p>It would be nice if there is an extension for VSCode or its forks that let you monitor your agent *running inside* your local machine, or VSCode adds support for it. I want to run agents on the codes I have open, not pushing them to a cloud "box" to run agents on there. But I do like being able to monitor or pick up the next steps from my phone.<p>Last time I tried to let AI build such extension, it told me that VSCode did not expose extension API to monitor AI chat.</p>
]]></description><pubDate>Thu, 04 Jun 2026 22:42:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=48405660</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=48405660</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48405660</guid></item><item><title><![CDATA[New comment by sntran in "OpenAI frontier models and Codex are now available on AWS"]]></title><description><![CDATA[
<p>I have just moved from a free environment in which I was able to use any AI harnesses or models to a strict enterprise environment.<p>I was shocked to realize how difficult it has been to have a GitHub CoPilot license on Azure. I mean, they're both Microsoft products. But no, the IT now has to figure out how to set up a GitHub enterprise, link to Azure subscription, and all that.</p>
]]></description><pubDate>Tue, 02 Jun 2026 01:33:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48364825</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=48364825</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48364825</guid></item><item><title><![CDATA[New comment by sntran in "Moving away from Tailwind, and learning to structure my CSS"]]></title><description><![CDATA[
<p>It's easy to look at one part of the HTML and see the Tailwind classes no different than inline styles.<p>But if you have to use `display: flex" in a lot of places, having the `flex` utility is better. And there are tons of such utilities with Tailwind.</p>
]]></description><pubDate>Sun, 17 May 2026 17:00:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48170710</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=48170710</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48170710</guid></item><item><title><![CDATA[New comment by sntran in "Moving away from Tailwind, and learning to structure my CSS"]]></title><description><![CDATA[
<p>When you inherit a front-end project for the Nth time, those `!important` become a nightmare.</p>
]]></description><pubDate>Sun, 17 May 2026 16:56:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48170670</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=48170670</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48170670</guid></item><item><title><![CDATA[New comment by sntran in "Rars: a Rust RAR implementation, mostly written by LLMs"]]></title><description><![CDATA[
<p>Good luck with keeping it online. Somebody built `rar-stream` with Rust, and its GitHub is no longer there.</p>
]]></description><pubDate>Thu, 14 May 2026 00:19:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=48129491</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=48129491</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48129491</guid></item><item><title><![CDATA[New comment by sntran in "Ask HN: What are you building that's not AI related?"]]></title><description><![CDATA[
<p>Between job searches, I'm working on implementing the WHATWG Web APIs on top of Elixir.<p><a href="https://github.com/sntran/web" rel="nofollow">https://github.com/sntran/web</a><p>I love Elixir but I had been a JS developer by trade. Bridging that interface keeps my brain focusing on building instead of splitting between JS and Elixir.<p>Still a lot to do, but I love the progress so far. This puts the joy of building something back to me.</p>
]]></description><pubDate>Thu, 09 Apr 2026 17:29:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=47706583</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=47706583</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47706583</guid></item><item><title><![CDATA[New comment by sntran in "Show HN: Signet.js – A minimalist reactivity engine for the modern web"]]></title><description><![CDATA[
<p>I built Signet.js because I wanted a reactive layer for high-performance edge applications that felt more like a browser standard than a "framework."<p>## The Architectural Context:<p>I’ve spent years working on high-performance websites and legacy CMS modernizations. I found that existing reactive frameworks often introduce excessive memory overhead or rigid DSLs that don't play well with bespoke, performant, or legacy-injected code. I wanted to see if I could build a "toolbox" instead of a "black box" that stays small.<p>## Design Philosophy & Trade-offs:<p>- Why `Proxy`? I initially explored `Object.defineProperty` to minimize bundle size, but I eventually pivoted to `Proxy`. While it adds a tiny bit of runtime trap cost, the engine-level optimizations in modern browsers make the performance impact negligible for UI cycles. More importantly, it allowed for clean, dynamic object handling without the "magic" workarounds required by descriptor-based reactivity.
- Standards-First: I’m building Signet to be a thin orchestration layer. It currently leverages `@preact/signals-core` for its robustness, but the architecture is designed as a drop-in reactive layer. My roadmap is to align the internal primitive with the upcoming [TC39 Signals Proposal](<a href="https://github.com/tc39/proposal-signals" rel="nofollow">https://github.com/tc39/proposal-signals</a>), treating Signet as a bridge to native browser reactivity as it matures.<p>## Why did I build Signet instead of using [Alpine / petite-vue]?<p>The `petite-vue` Gap: Petite-vue was the gold standard for "sprinkling" interactivity, but with it no longer being maintained, there's a real need for a modern alternative that bridges the gap between pure HTML and heavy SPA frameworks.<p>Solving "DOM Pollution": A common friction point I found when moving to Alpine was the "messy DOM"—state-heavy applications often left behind excessive attributes and listeners that made the DOM feel cluttered. Signet is architected to be "DOM-transparent," ensuring that reactive bindings don't leave a trail of debris when components unmount.<p>Signal-First Architecture: By building Signet directly on a Signal primitive, I’m opting for a "Reactive-first" model. This is fundamentally cleaner than the directive-heavy, "magic-attribute" approach of previous libraries, leading to more predictable data flows and easier debugging.<p>## Memory Stability:<p>I ran a 10,000-component mount/unmount stress test using WeakRef to verify garbage collection. The results confirmed stable heap usage, proving that you can achieve leak-free reactivity with Proxy if you manage the dependency graph lifecycle correctly.<p>## A Note on Implementation:<p>I approached the development of Signet as a human architect utilizing AI agents for the implementation. My role was defining the constraints (e.g., bundle size limits, dependency lifecycle logic, memory stability) and enforcing the "clean DOM" architecture, while the AI handled the boilerplate and repetitive logic. This allowed me to iterate on the internal signal graph and performance testing at a speed that would have been impossible manually. This project is a deliberate experiment in "AI-assisted architecture"—where the human provides the technical constraints and domain expertise, and the AI acts as a high-speed implementation engine. I also let the AI implementor construct the full document site at <a href="https://sntran.github.io/signet.js/" rel="nofollow">https://sntran.github.io/signet.js/</a>.</p>
]]></description><pubDate>Sun, 15 Mar 2026 02:58:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47383861</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=47383861</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47383861</guid></item><item><title><![CDATA[Show HN: Signet.js – A minimalist reactivity engine for the modern web]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/sntran/signet.js/">https://github.com/sntran/signet.js/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47383860">https://news.ycombinator.com/item?id=47383860</a></p>
<p>Points: 5</p>
<p># Comments: 1</p>
]]></description><pubDate>Sun, 15 Mar 2026 02:58:16 +0000</pubDate><link>https://github.com/sntran/signet.js/</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=47383860</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47383860</guid></item><item><title><![CDATA[New comment by sntran in "Ask HN: Who is hiring? (March 2026)"]]></title><description><![CDATA[
<p>Just want to say that the idea of your app is so cool!</p>
]]></description><pubDate>Tue, 03 Mar 2026 02:02:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=47226978</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=47226978</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47226978</guid></item><item><title><![CDATA[New comment by sntran in "The happiest I've ever been"]]></title><description><![CDATA[
<p>Very similar to Texas. It's all about the hours. Will take 4 years to get to journeyman while working 40 hours on the field.</p>
]]></description><pubDate>Sun, 01 Mar 2026 03:32:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=47203413</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=47203413</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47203413</guid></item><item><title><![CDATA[New comment by sntran in "The happiest I've ever been"]]></title><description><![CDATA[
<p>I feel similarly. Being laid off and doing job search recently got me thinking about switching to become an electrician. I don't mind starting over and lower wage, but mortgage and family depending on me still hold me off.</p>
]]></description><pubDate>Sat, 28 Feb 2026 21:10:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=47200267</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=47200267</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47200267</guid></item><item><title><![CDATA[New comment by sntran in "Show HN: I built a chess explorer that explains strategy instead of just stats"]]></title><description><![CDATA[
<p>I could not even see 1 opening move. Clicking on one from the home page shows me the login.</p>
]]></description><pubDate>Wed, 21 Jan 2026 19:22:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=46710225</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=46710225</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46710225</guid></item><item><title><![CDATA[New comment by sntran in "HelloTriangle: An easy-to-use platform for advanced 3D modeling"]]></title><description><![CDATA[
<p>A web-based 3d modelling app.</p>
]]></description><pubDate>Thu, 13 Nov 2025 02:28:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=45909762</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=45909762</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45909762</guid></item><item><title><![CDATA[HelloTriangle: An easy-to-use platform for advanced 3D modeling]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.hellotriangle.io">https://www.hellotriangle.io</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45909761">https://news.ycombinator.com/item?id=45909761</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Thu, 13 Nov 2025 02:28:28 +0000</pubDate><link>https://www.hellotriangle.io</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=45909761</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45909761</guid></item><item><title><![CDATA[New comment by sntran in "Implementing namespaces and coding standards in WordPress plugin development"]]></title><description><![CDATA[
<p>I do. I was not into WordPress until recently. Gutenberg has been very easy to get started versus writing a lot PHP. While there are still annoyances, I have managed to work around. Maybe my projects have not been that complicated, but I feel like the Gutenberg team is heading the right way.</p>
]]></description><pubDate>Mon, 15 Sep 2025 01:08:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=45245031</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=45245031</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45245031</guid></item><item><title><![CDATA[Modern Monaco]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/esm-dev/modern-monaco">https://github.com/esm-dev/modern-monaco</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44773451">https://news.ycombinator.com/item?id=44773451</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 03 Aug 2025 01:54:08 +0000</pubDate><link>https://github.com/esm-dev/modern-monaco</link><dc:creator>sntran</dc:creator><comments>https://news.ycombinator.com/item?id=44773451</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44773451</guid></item></channel></rss>