<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: hardwaresofton</title><link>https://news.ycombinator.com/user?id=hardwaresofton</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 18 Apr 2026 10:54:29 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=hardwaresofton" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by hardwaresofton in "Mozilla Thunderbolt"]]></title><description><![CDATA[
<p>Wow HN really does have a problem with commenting on anything to do with Mozilla.<p>Anyway, awesome to see this from the team inside Mozilla — hope this can become a new revenue stream over the long term.<p>Really excited to see some tight integration with Firefox and Thunderbird in the future.<p>People are going to hate this, but if someday Mozilla expands to being a productivity suite I’d be pretty happy to give them my money. ProtonMail is doing it and I trust them as well.</p>
]]></description><pubDate>Fri, 17 Apr 2026 03:17:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=47802123</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=47802123</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47802123</guid></item><item><title><![CDATA[New comment by hardwaresofton in "Founder of GitLab battles cancer by founding companies"]]></title><description><![CDATA[
<p>Incredibly badass. This is the best news I’ve read all year — world is better with Sid in it.</p>
]]></description><pubDate>Sun, 29 Mar 2026 00:09:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=47559222</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=47559222</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47559222</guid></item><item><title><![CDATA[New comment by hardwaresofton in "Making WebAssembly a first-class language on the Web"]]></title><description><![CDATA[
<p>I think we probably disagree on the most important parts of the tooling. I’m a lot more focused on what it lets me do/whether the abstractions are right.<p>That said, people have worked on IDE integration (it’s not zero, ex. WIT syntax highlighting), there is existing integration with upstream language tool chains, but trying to debate that seems silly. Whether tech is good or worth exploring is not dictated by IDE support, I think!<p>There has been substantial work on improving debugging, DX and documentation! Hopefully in the LLM age the existing can move even faster</p>
]]></description><pubDate>Thu, 12 Mar 2026 11:41:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47349279</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=47349279</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47349279</guid></item><item><title><![CDATA[New comment by hardwaresofton in "Making WebAssembly a first-class language on the Web"]]></title><description><![CDATA[
<p>Very reductive :) there are flavors and hints of all these previous technologies /paradigms in WebAssembly + Component Model today, because only fools would attempt to build something without considering relevant prior art.<p>Won't bother trying going through differences/how-this-is-not-that but I'll say this: This time, it's slightly better, just like every time before.<p>I'd even go so far as to say this iteration is <i>much</i> better than what came before, and the speed of adoption by multiple language toolchains, platforms, operating systems, browsers proves that.</p>
]]></description><pubDate>Thu, 12 Mar 2026 08:46:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=47348049</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=47348049</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47348049</guid></item><item><title><![CDATA[New comment by hardwaresofton in "Making WebAssembly a first-class language on the Web"]]></title><description><![CDATA[
<p>> Get your blatant component model propaganda outta here ;)<p>It's perfectly good content, sir!<p>> (to elaborate: WASM works just fine without the component model, it's not "the future of WebAssembly", just an option built on top of it, and of questionable value tbh)<p>WebAssembly absolutely works fine without the component model, and I'd argue it's <i>much</i> better with the component model.<p>Here's my simple pitch.<p>world before component model:<p><pre><code>    > be me
    > build a webassembly core module
    > give it to someone
    > they ask what imports it needs
    > they ask how to run it
    > they ask how to provide high level types to it
</code></pre>
world after component model:<p><pre><code>    > be me
    > write an IDL (WIT[0]) interface which specifies what the component should do
    > write the webassembly component
</code></pre>
WebAssembly gives us an incredible tool -- a new compilation target that is secure, performant and extensible. We could crudely liken this to RISCV. In $CURRENT_YEAR it doesn't make sense to stop at the RISCV layer and then let everyone create their own standards and chaos in 50 directions on what the 1/2/3 step higher abstractions should be.<p>Emscripten carried the torch (and still does great work of course) in building this layer that people could build on top of, but it didn't go far enough. Tools like wasm_bindgen in Rust work great but lack cross-platform usage.<p>The Component Model is absolutely the future of WebAssembly. Maybe not the future of WebAssembly core, but if you want to be productive and do increasingly interesting things with WebAssembly, the Component Model is the standards-backed, community-driven, cross-platform, ambitious way to do things with WebAssembly.<p>To be incredibly blunt, the failure of other attempts to centralize community, effort, and bring people along to build a shared thing that is <i>just</i> low cost enough that everyone can build on top is impressive. Nothing against other efforts, but I just can't find any similar efforts that others have standardized on in any meaningful way.<p>We're talking about a (partially already here) world where every popular programming language just outputs to WebAssembly natively and computers on every popular architecture/platform have an easy time running those binaries and libraries? If that's not the future, paint me a different one/show me movement in that direction -- genuinely would love to see what I'm missing!<p>And in all of this, the Component Model is optional -- if you don't like it, don't use it. If WebAssembly core works for you, you are absolutely free to build! wasm32-unknown-unknown is right there, waiting for you to target it (in Rust at least).</p>
]]></description><pubDate>Thu, 12 Mar 2026 08:43:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47348031</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=47348031</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47348031</guid></item><item><title><![CDATA[New comment by hardwaresofton in "Making WebAssembly a first-class language on the Web"]]></title><description><![CDATA[
<p>If you’d like to get acquainted with modern WebAssembly, check out the component model book:<p><a href="https://component-model.bytecodealliance.org/" rel="nofollow">https://component-model.bytecodealliance.org/</a><p>It includes high level concepts, practical code samples and more that introduce the really powerful parts of WebAssembly.<p>With regards to the JS ecosystem specifically there are 3 projects to know:<p><a href="https://github.com/bytecodealliance/StarlingMonkey" rel="nofollow">https://github.com/bytecodealliance/StarlingMonkey</a><p><a href="https://github.com/bytecodealliance/ComponentizeJS" rel="nofollow">https://github.com/bytecodealliance/ComponentizeJS</a><p><a href="https://github.com/bytecodealliance/jco" rel="nofollow">https://github.com/bytecodealliance/jco</a><p>The most mature tool chain right now is Rust, but there is good support for most things with LLVM underneath (C/C++ via clang). Golang, python and support for other languages is getting better and better (tinygo and big go) and there’s even more to come.<p>One of the goals of WebAssembly is to melt right into your local $TOOLCHAIN as a compilation target, and we are getting closer every week.</p>
]]></description><pubDate>Wed, 11 Mar 2026 22:49:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47343451</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=47343451</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47343451</guid></item><item><title><![CDATA[New comment by hardwaresofton in "My “grand vision” for Rust"]]></title><description><![CDATA[
<p>*linear types (the leak free future bit)<p>This description is also a good crystallization of why one would want linear types</p>
]]></description><pubDate>Mon, 09 Mar 2026 08:39:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=47306292</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=47306292</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47306292</guid></item><item><title><![CDATA[New comment by hardwaresofton in "My “grand vision” for Rust"]]></title><description><![CDATA[
<p>Really excited for the possibilities here.<p>People undoubtedly thought going for Affine types was too much, and even simple things like null safety or enums-with-values and the prevalence of Result saw debate with minimalists voicing concerns.<p>A world where you could write a Rust program that is memory leak free with Affine types is one I want to live in. Haskell can do it now, but its just not easy and Rust has beat out Haskell with its mix of ML-strength types and practicality.<p>IMO these changes maintain Rusts winning mix of academia and practicality. Heres a proof point — dependent types weren't mentioned :)</p>
]]></description><pubDate>Mon, 09 Mar 2026 00:36:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47303334</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=47303334</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47303334</guid></item><item><title><![CDATA[New comment by hardwaresofton in "MinIO Is Dead, Long Live MinIO"]]></title><description><![CDATA[
<p>Please just contribute to seaweedfs or the other options instead!<p>There are a lot of other options when it comes to locally hosted S3, minio has not been the best option for a long while.<p>It was used the most in introductory articles/examples maybe but there were better options</p>
]]></description><pubDate>Sun, 01 Mar 2026 00:32:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=47202262</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=47202262</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47202262</guid></item><item><title><![CDATA[New comment by hardwaresofton in "Heroku is not dead"]]></title><description><![CDATA[
<p>If someone has written an article about how $X is not dead, $X is probably dead.</p>
]]></description><pubDate>Thu, 12 Feb 2026 03:32:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=46984599</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=46984599</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46984599</guid></item><item><title><![CDATA[New comment by hardwaresofton in "Reliable 25 Gigabit Ethernet via Thunderbolt"]]></title><description><![CDATA[
<p>Not much to add here but wanted to agree, this is post was actually hacker news (tm)</p>
]]></description><pubDate>Sun, 01 Feb 2026 21:54:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=46849768</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=46849768</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46849768</guid></item><item><title><![CDATA[New comment by hardwaresofton in "Show HN: Share private Git repo activity without granting code access"]]></title><description><![CDATA[
<p>Hey just a heads up, the submission link is missing a ‘t’</p>
]]></description><pubDate>Sat, 24 Jan 2026 15:59:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=46744662</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=46744662</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46744662</guid></item><item><title><![CDATA[New comment by hardwaresofton in "Finding and fixing Ghostty's largest memory leak"]]></title><description><![CDATA[
<p>Those are great points, thanks for mentioning this, re-enabling overflow checks for release builds would indeed make the code safer with only a config change.<p>It's great that there are lots of options other than wrapping as well, checked, saturating, etc -- that at the cost of a little inefficiency make code that is robust to such failures really obvious.</p>
]]></description><pubDate>Mon, 12 Jan 2026 17:18:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=46591416</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=46591416</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46591416</guid></item><item><title><![CDATA[New comment by hardwaresofton in "Finding and fixing Ghostty's largest memory leak"]]></title><description><![CDATA[
<p>> Thank you for the kind words.<p>Absolutely, I meant them.<p>> This is trivially false... for instance here's a line:<p>Yep, that was really wrongly stated on my part -- what I meant is that the kind of protections that "safe" Rust provides are not available <i>anywhere</i> in average lines of Zig code (though they can be detected with tooling, etc).<p>What I <i>should</i> have written is that I could easily write unsafe code anywhere in Zig (as in C). In practice of course most people don't because they're not trying to destroy their own computers, and most code is benign. Rust will at least save me from myself <i>some</i> of the time.<p>> Also IMO the word "safety" should include integer overflow. I don't agree that those kind of bugs are so unimportant as to not be checked in safe builds.<p>Rust does do some work to catch trivial overflows, but you're right that it does not catch any slightly more complex overflows, and that is certainly unsafe in a sense. I don't think any reasonable person would disagree with that.<p>Rust's answer to this of course is checked_{op}/wrapping_{op}/etc options, and that's what I often see in high quality codebases where it matters. Of course, this is a footgun that <i>could</i> have had a safety applied and it's too late now (AFAIK) to change the default to be always wrapping or something (also, I think people may oppose always checked for perf reasons).<p>[EDIT] Just to compare/make this more concrete, playgrounds:<p><a href="https://zig.fly.dev/p/LGnrBGXPlVJ" rel="nofollow">https://zig.fly.dev/p/LGnrBGXPlVJ</a><p><a href="https://play.rust-lang.org/?version=stable&mode=release&edition=2024&gist=56f483894b6514484232dc4aa43e31fa" rel="nofollow">https://play.rust-lang.org/?version=stable&mode=release&edit...</a><p>Rust in this case of doing something obviously wrong is at least a little more helpful -- the obvious overflow does not compile.<p>And of course you can get rust to do it like it allows (and what would be present in any codebase with real complexity):<p><a href="https://play.rust-lang.org/?version=stable&mode=release&edition=2024&gist=0c4f8a32f2903abd399e40cd10409a01" rel="nofollow">https://play.rust-lang.org/?version=stable&mode=release&edit...</a><p>It's just that little bit of safety that makes it easy for me (personally) to default to Rust. Very possible that someday that won't be true.<p>[EDIT2] Also, somewhat under-discussed, but if Zig supported a bolt-on a "safety check compile mode" that ran with some stricter (maybe not quite borrow checking level) semantics, that would be pretty dope. Of course not something anyone should devote any real time to for a long time (or ever?) BUT it would trivialize a lot of these discussions maybe.<p>But in the mean time people just using what they're comfortable with/the feel they want is obviously fine.</p>
]]></description><pubDate>Mon, 12 Jan 2026 02:33:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46583246</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=46583246</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46583246</guid></item><item><title><![CDATA[New comment by hardwaresofton in "Finding and fixing Ghostty's largest memory leak"]]></title><description><![CDATA[
<p>It’s not that you NEED RAII (or any other language abstraction), it’s that this case would have been avoided with that usage.<p>Clearly, the current state of things was not enough.</p>
]]></description><pubDate>Sun, 11 Jan 2026 13:30:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=46575600</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=46575600</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46575600</guid></item><item><title><![CDATA[New comment by hardwaresofton in "Finding and fixing Ghostty's largest memory leak"]]></title><description><![CDATA[
<p>> If you wanted to match Ghostty's performance in Rust, you'd need to use unsafe in order to use these memory mapping APIs, then you'd be in the exact same boat.<p>Yea, but not for all the parts — being able to isolate the unsafe and build abstractions that ensure certain usage parts of the unsafe stuff is a key part of high quality rust code that uses unsafe.<p>In this case though I think the emphasis is on the fact that there is a place where that code <i>should have been</i> in Rust land, and writing that function would have made it clear and likely avoided the confusion.<p>Less about unsafe and more about the resulting structure of code.<p>> Actually you'd be in a worse boat because Zig is safer than unsafe Rust<p>Other people have mentioned it but I disagree with this assertion.<p>Its a bit simplistic but I view it this way — every line of C/Zig is unsafe (lots of quibbling to do about what “unsafe” means of course) while <i>some</i> lines of rust are unsafe. Really hard for that assertion to make sense under that world view.<p>That said, I’m not gonna miss this chance to thank you and the Zig foundation and ecosystem for creating and continuously improving Zig! Thanks for all the hard work and thoughtful API design that has sparked conversation and progress.</p>
]]></description><pubDate>Sun, 11 Jan 2026 13:28:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=46575576</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=46575576</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46575576</guid></item><item><title><![CDATA[New comment by hardwaresofton in "Finding and fixing Ghostty's largest memory leak"]]></title><description><![CDATA[
<p>Was going to say this, but I don't think anyone actually wants to hear that Rust actually <i>would</i> have helped here.<p>As you're saying, the bug was the equivalent of an incorrectly written Drop implementation.<p>Nothing against Zig, and people not using Rust is just fine, but this is what happens when you want C-like feel for your language. You miss out on useful abstractions along with the superfluous ones.<p>"We don't need destructors, defer/errdefer is enough" is Zig's stance, and it was mostly OK.<p>Impossible to predict this kind of issue when choosing a project language (and it's already been discussed why Zig was chosen over Rust for Ghostty, which is fine!), so it's not a reason to always choose Rust over Zig, but sometimes that slightly annoying ceremony is useful!<p>Maybe some day I'll be smart enough to write Zig as a default over Rust, but until that day I'm going to pay the complexity price to get more safety and keep more safety mechanisms on the shotgun aimed at my foot. I've got plenty of other bugs I can spend time writing.<p>Another good example is the type vs type alias vs wrapper type debate. It's probably <i>not</i> reasonable to use a wrapper type every single time (e.g. num_seconds probably can probably be a u32 and not a Seconds type), but it's really a Rorschach test because some people lean towards one end versus the other for whatever reason, and the plusses/minuses are different depending on where you land on the spectrum.<p>[EDIT] also some good discussion here<p><a href="https://ziggit.dev/t/zig-what-i-think-after-months-of-using-it/9434/12" rel="nofollow">https://ziggit.dev/t/zig-what-i-think-after-months-of-using-...</a></p>
]]></description><pubDate>Sun, 11 Jan 2026 06:57:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=46573293</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=46573293</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46573293</guid></item><item><title><![CDATA[New comment by hardwaresofton in "Marmot – A distributed SQLite server with MySQL wire compatible interface"]]></title><description><![CDATA[
<p>Thanks for the consideration! The reason something like litestream is interesting to me is that it’s (now[0]) an off the shelf way to do PITR backups for SQLite.<p>Sure, I could piece together or write something myself to catch the CDC stream or run another replica, but simply running one more process on one of the boxes and having peace of mind that there’s an S3 backup continuously written is quite nice.<p>I thought debezium was mostly for moving around CDC records, not a backup tool per say. I.e. if I were to write debezium records to object storage with their connectors it’s my job to get a recent dump and replay?<p>[0]: <a href="https://fly.io/blog/litestream-v050-is-here/" rel="nofollow">https://fly.io/blog/litestream-v050-is-here/</a></p>
]]></description><pubDate>Fri, 02 Jan 2026 14:01:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=46464811</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=46464811</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46464811</guid></item><item><title><![CDATA[New comment by hardwaresofton in "Marmot – A distributed SQLite server with MySQL wire compatible interface"]]></title><description><![CDATA[
<p>Just want to note that every time I see it I’m impressed with the project, great job so far.<p>The fact that you’ve been running this with WP is also a really huge use case/demonstration of trust in your different software — IMO this should be on the README prominently.<p>These days I personally just ignore projects that insist on MySQL — Postgres has won in my mind and is the better choice. The only way I’d run something like a WP hosting service is with a tool like Marmot.<p>One thing you might find interesting is trying marmot with something like Litestream v2 — marmot of course has its own replication system but I like the idea of having a backup system writing to s3. It seems trivial (as you’ve noted that you can still work directly on the s3 file) but would be a nice blog post/experiment to see “worked out” so to speak.(and probably wouldn't sink to the bottom of hn!)</p>
]]></description><pubDate>Fri, 02 Jan 2026 06:32:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=46462030</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=46462030</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46462030</guid></item><item><title><![CDATA[New comment by hardwaresofton in "Show HN: I built middleware to connect legacy SOAP APIs to AI agents in 2 weeks"]]></title><description><![CDATA[
<p>A bit late but hopefully you find more users soon — 3 days is still early!</p>
]]></description><pubDate>Fri, 19 Dec 2025 21:16:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=46331032</link><dc:creator>hardwaresofton</dc:creator><comments>https://news.ycombinator.com/item?id=46331032</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46331032</guid></item></channel></rss>