<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: modulovalue</title><link>https://news.ycombinator.com/user?id=modulovalue</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 25 Sep 2026 01:13:09 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=modulovalue" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by modulovalue in "Fearless SIMD v1.0"]]></title><description><![CDATA[
<p>> Pattern types could potentially maybe in the future allow for the compiler to know more details though.<p>Thanks, I’ll take a look!</p>
]]></description><pubDate>Thu, 24 Sep 2026 19:11:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=49835481</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=49835481</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49835481</guid></item><item><title><![CDATA[New comment by modulovalue in "Fearless SIMD v1.0"]]></title><description><![CDATA[
<p>I’m not sure I agree on the impossible part, I feel like a sufficiently smart interprocedural analysis that also implements range analysis interprocedurally could prove a lot to where it becomes useful.<p>I guess what I would like to see is SIMD libraries being able to confidently say nobody needs to use intrinsics (or differentiate between relaxed/normal SIMD on the user API level) because the language + high level SIMD APIs are smart enough to choose the right implementation.<p>IIRC IEEE min/max with proper NaN handling needs 8 instructions on x86 vs 1 on arm64 I find it very sad that we apparently haven’t really solved that yet without forcing the user to use different APIs.</p>
]]></description><pubDate>Thu, 24 Sep 2026 19:07:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=49835441</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=49835441</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49835441</guid></item><item><title><![CDATA[New comment by modulovalue in "Fearless SIMD v1.0"]]></title><description><![CDATA[
<p>I’m currently working on adding better SIMD support to Dart (<a href="https://github.com/dart-lang/sdk/issues/64170" rel="nofollow">https://github.com/dart-lang/sdk/issues/64170</a>) and I have a question for the author or others here.<p>Does Rust or any other language support customizing the compiler so that interprocedural analyses can track custom subsets of, for example, doubles so that the compiler can choose the most efficient instruction sequence for example for min/max? If we know a double is never NaN then we can emit only one instruction on x86, but have to emit one more on arm64. If we know a double is never zero and never NaN, we can emit a single instruction on both.<p>This whole conversation between relaxed SIMD and deterministic SIMD seems to only exist because our compilers are not smart enough and/or their whole program analyses don’t support any plugin-like capabilities.<p>There are other examples where if we know a SIMD bitmask is canonical (all 1s per lane) then we can implement horizontal reductions more efficiently. This is very niche and I doubt that any language supports interprocedural analyses with such a rich domain, so it feels like a hole in the programming language space.</p>
]]></description><pubDate>Thu, 24 Sep 2026 18:43:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=49835084</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=49835084</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49835084</guid></item><item><title><![CDATA[New comment by modulovalue in "Minikotlin"]]></title><description><![CDATA[
<p>I built something similar, but I managed to compile the Dart VM, its compiler and the static analyzer to wasm using emscripten:<p>- repo: <a href="https://github.com/modulovalue/dart-live" rel="nofollow">https://github.com/modulovalue/dart-live</a><p>- demo: <a href="https://modulovalue.com/dart-live/" rel="nofollow">https://modulovalue.com/dart-live/</a><p>It's on my todo list to support compiling dart code through the wasm bundle to wasm directly. Right now it's running the dart arm simulator on the web because it supports hot reload.<p>I'm wondering if there are any cool use-cases that motivate having the compiler itself run in wasm. I did it mostly for fun and besides building tooling for compiler developers themselves or IDEs, I can't come up with much.<p>There was one guy that wanted a sandboxed environment for agents as he couldn't find anything else. A few other people used the dart live project to build playgrounds for their own packages.<p>Who's the target audience for minikotlin? I'm just curious.<p>In any case, cool project, thanks for sharing!</p>
]]></description><pubDate>Fri, 17 Jul 2026 13:46:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=48947367</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=48947367</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48947367</guid></item><item><title><![CDATA[New comment by modulovalue in "RISC-V Is Inevitable: State of the Union Keynote Argues"]]></title><description><![CDATA[
<p>I'm working on making SIMD better in Dart. Dart supports RISC-V as a target architecture for compilation, but I'm not really excited about figuring out how to map the wasm-SIMD-style primitives to RISC-V's RVV and so I don't really plan to look into it at all.<p>This is mostly because their approach to SIMD is so different, but also because I can't test it at all. Are there any RISC-V "machines"? that one can use to do something useful or fun with that someone here could recommend?<p>I guess it would be fun seeing all my SIMD-fiable use-cases become orders of magnitude faster on RISC-V, too, but I sadly never hear anything about machines that use RISC-V.</p>
]]></description><pubDate>Wed, 15 Jul 2026 08:04:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=48917665</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=48917665</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48917665</guid></item><item><title><![CDATA[New comment by modulovalue in "WASI 0.3"]]></title><description><![CDATA[
<p>It's already a breakthrough in my opinion.<p>Many things are possible that weren't possible before. For example, I was able to compile the Dart VM (the compiler + analyzer + VM) to wasm and run it on the web: <a href="https://github.com/modulovalue/dart-live" rel="nofollow">https://github.com/modulovalue/dart-live</a> it supports hot reload and many other cool features. It runs essentially everywhere and it's a very bare proof of concept for a fully integrated programming development system.<p>The problem is that things just take time if you have to coordinate across a bunch of languages and teams while trying to make everyone happy.<p>To give you a sense of what else is coming: the wasm ecosystem is moving towards supporting a component model. Eventually you'll be able to import any piece of code from any programming language that supports it. Wasm interface types will make that possible.</p>
]]></description><pubDate>Fri, 12 Jun 2026 14:46:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48504878</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=48504878</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48504878</guid></item><item><title><![CDATA[Show HN: Dart Live – compiler, VM, analyzer and hot reload on the web via WASM]]></title><description><![CDATA[
<p>I managed to get the Dart VM to compile to WebAssembly so that I can compile Dart programs in the browser. Dart ships with a basic ARM interpreter and by using that, hot reload works directly in the browser.<p>It's 7.6 MB gzipped and there's no server running behind it, so I was able to host it directly on github pages.<p>Here's the github repo with some more info: <a href="https://github.com/modulovalue/dart-live" rel="nofollow">https://github.com/modulovalue/dart-live</a></p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48119587">https://news.ycombinator.com/item?id=48119587</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 13 May 2026 09:16:23 +0000</pubDate><link>https://modulovalue.com/dart-live/</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=48119587</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48119587</guid></item><item><title><![CDATA[New comment by modulovalue in "We've had front end reactivity since 2018 – via Async Iterables"]]></title><description><![CDATA[
<p>There's an important issue with async iterables: what's the initial value of derived "signals"?<p>In the Dart/Flutter world, async iterables are known as streams. The biggest problem is that they are asynchronous so if you derive new streams from existing streams, you won't have a value immediately for those streams available, you'll have to wait a frame for values to propagate. That's not a problem if you're just processing data, but if you're using them in a UI framework and your UI framework is coupled to the event loop, then you have a problem.<p>This doesn't happen with the ReactiveX approach because things are evaluated immediately, one doesn't have to wait for the event loop to tick. (A fun historical artifact is that ReactiveX has not caught on in the Dart/Flutter community around 2019-ish because it was eventually migrated to use Streams and the initial-value-problem was a real problem that made the benefits of ReactiveX not carry its weight nobody noticed that but I was heavily involved and I am still using a custom framework derived from my observations back then).<p>If we zoom out a bit, the problem is actually that we are trying to define a computation graph and then need a strategy for evaluation it. I think Elm has actually made the biggest progress on that front (here's THE talk on that topic that shows how complicated working out all the kinks can be: <a href="https://www.youtube.com/watch?v=Agu6jipKfYw" rel="nofollow">https://www.youtube.com/watch?v=Agu6jipKfYw</a>)<p>I still think that functional reactive programming solves most of the problems we have in UI-land, but the complexity that we have to deal with when we use traditional methods of state mutation, that complexity becomes enormous when trying to define a reactive programming framework, especially in languages that are not purely functional.<p>I think in 10 or 20 years there will be somebody that solves this problem, I don't see it happening anytime soon, sadly. It's just too complicated and we need programming languages that are built around those ideas for them to become comfortable enough to be usable in practice.</p>
]]></description><pubDate>Sun, 22 Mar 2026 09:21:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=47475785</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=47475785</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47475785</guid></item><item><title><![CDATA[243,000 words dictated in 39 days, speech-to-text changed how I work]]></title><description><![CDATA[
<p>Article URL: <a href="https://modulovalue.com/blog/voxtral-transcribe-and-wispr-flow/">https://modulovalue.com/blog/voxtral-transcribe-and-wispr-flow/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46894410">https://news.ycombinator.com/item?id=46894410</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 05 Feb 2026 01:25:38 +0000</pubDate><link>https://modulovalue.com/blog/voxtral-transcribe-and-wispr-flow/</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=46894410</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46894410</guid></item><item><title><![CDATA[New comment by modulovalue in "Show HN: Nocterm – Flutter-inspired TUI framework with hot reload (Dart)"]]></title><description><![CDATA[
<p>Very interesting, I always believed we should have more declarative frameworks in other domains and not just UI. My experience shows me this gives LLMs a much smaller space to explore which leads to better results.</p>
]]></description><pubDate>Wed, 04 Feb 2026 14:25:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=46886180</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=46886180</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46886180</guid></item><item><title><![CDATA[I built a 2x faster lexer, then discovered I/O was the real bottleneck]]></title><description><![CDATA[
<p>Article URL: <a href="https://modulovalue.com/blog/syscall-overhead-tar-gz-io-performance/">https://modulovalue.com/blog/syscall-overhead-tar-gz-io-performance/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46693460">https://news.ycombinator.com/item?id=46693460</a></p>
<p>Points: 187</p>
<p># Comments: 92</p>
]]></description><pubDate>Tue, 20 Jan 2026 16:10:01 +0000</pubDate><link>https://modulovalue.com/blog/syscall-overhead-tar-gz-io-performance/</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=46693460</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46693460</guid></item><item><title><![CDATA[Benchmarking my parser generator against LLVM: I have a new target]]></title><description><![CDATA[
<p>Article URL: <a href="https://modulovalue.com/blog/benchmarking-against-llvm-parser/">https://modulovalue.com/blog/benchmarking-against-llvm-parser/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46670891">https://news.ycombinator.com/item?id=46670891</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 18 Jan 2026 18:52:04 +0000</pubDate><link>https://modulovalue.com/blog/benchmarking-against-llvm-parser/</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=46670891</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46670891</guid></item><item><title><![CDATA[I built a 2x faster lexer, then discovered I/O was the real bottleneck]]></title><description><![CDATA[
<p>Article URL: <a href="https://modulovalue.com/blog/syscall-overhead-tar-gz-io-performance/">https://modulovalue.com/blog/syscall-overhead-tar-gz-io-performance/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46604982">https://news.ycombinator.com/item?id=46604982</a></p>
<p>Points: 5</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 13 Jan 2026 18:01:45 +0000</pubDate><link>https://modulovalue.com/blog/syscall-overhead-tar-gz-io-performance/</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=46604982</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46604982</guid></item><item><title><![CDATA[Statistical Methods for Reliable Benchmarks]]></title><description><![CDATA[
<p>Article URL: <a href="https://modulovalue.com/blog/statistical-methods-for-reliable-benchmarks/">https://modulovalue.com/blog/statistical-methods-for-reliable-benchmarks/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46519772">https://news.ycombinator.com/item?id=46519772</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 06 Jan 2026 22:33:25 +0000</pubDate><link>https://modulovalue.com/blog/statistical-methods-for-reliable-benchmarks/</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=46519772</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46519772</guid></item><item><title><![CDATA[The Case for Snake Case: A Kolmogorov Complexity Argument]]></title><description><![CDATA[
<p>Article URL: <a href="https://modulovalue.com/blog/snake-case-vs-camel-case-kolmogorov-complexity/">https://modulovalue.com/blog/snake-case-vs-camel-case-kolmogorov-complexity/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46403028">https://news.ycombinator.com/item?id=46403028</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Sat, 27 Dec 2025 16:45:40 +0000</pubDate><link>https://modulovalue.com/blog/snake-case-vs-camel-case-kolmogorov-complexity/</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=46403028</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46403028</guid></item><item><title><![CDATA[Show HN: Concepts Reader, a Backup Plan for My Life]]></title><description><![CDATA[
<p>I manage my life in Concepts (iPad drawing app) using dependency graphs. My boards grew to gigabytes and I got worried - what if the app stops working for my use case? So I built a viewer as a backup plan. It's Flutter Web, open source, and runs in the browser.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46336223">https://news.ycombinator.com/item?id=46336223</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 20 Dec 2025 13:56:00 +0000</pubDate><link>https://modulovalue.com/blog/concepts-reader-a-backup-plan-for-my-life/</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=46336223</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46336223</guid></item><item><title><![CDATA[Understanding Dart Class Modifiers by Using Lattices]]></title><description><![CDATA[
<p>Article URL: <a href="https://modulovalue.com/blog/understanding-dart-class-modifiers-lattices/">https://modulovalue.com/blog/understanding-dart-class-modifiers-lattices/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46324557">https://news.ycombinator.com/item?id=46324557</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 19 Dec 2025 11:18:49 +0000</pubDate><link>https://modulovalue.com/blog/understanding-dart-class-modifiers-lattices/</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=46324557</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46324557</guid></item><item><title><![CDATA[New comment by modulovalue in "Inverted Indexes: A Step-by-Step Implementation Guide (2023)"]]></title><description><![CDATA[
<p>NIT: That's not quite correct if your first statement is meant to imply an equality rather than a subset relation.<p>The idea of an index is more general, as an index can be built for many different domains. For example, B-trees can index monoidal data and inverted indexes are just an instance of such a monoid that a B-tree can efficiently index.<p>Furthermore, metric spaces (e.g., levenshtein distance) can also be efficiently indexed using other trees: metric trees. So calling inverted indexes just indexes would be really confusing since string data is not the only kind of data that a database might want to support having efficient indexes for.</p>
]]></description><pubDate>Sat, 26 Jul 2025 18:33:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=44696082</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=44696082</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44696082</guid></item><item><title><![CDATA[New comment by modulovalue in "As a programmer, get your math sorted"]]></title><description><![CDATA[
<p>The university I went to started its math education with groups, which is really unfortunate and they never even mentioned monoids.<p>Monoids are a key idea in computer science and I think that everyone should know what monoids are. Monoids are EVERYWHERE and once you recognize that you have a monoid you can immediately use known methods to compute over monoids in efficiently (e.g. <a href="https://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf" rel="nofollow">https://static.googleusercontent.com/media/research.google.c...</a>).<p>Once you have a certain lattice (I'm leaving out some details), you can solve problems efficiently by known methods (e.g. using dataflow solvers) and automatically have a proof that the solution always terminates.<p>I really wish that more people took their time to learn these fundamentals and I think this is a wonderful introductory site. I don't mean to offend anyone, but if you've never heard of most of that stuff, then I think that you don't deserve to call yourself a professional programmer. Why? You will reinvent solutions to problems that have been solved before much more efficiently then you will be able to i.e. you're an amateur.</p>
]]></description><pubDate>Mon, 26 May 2025 14:43:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=44097924</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=44097924</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44097924</guid></item><item><title><![CDATA[New comment by modulovalue in "Using Euro coins as weights (2004)"]]></title><description><![CDATA[
<p>That's a very good point. I wonder about the durability of a paper based solution, but 3d printed rolls might also be suboptimal in that regard. This needs some experimentation.</p>
]]></description><pubDate>Sun, 20 Oct 2024 13:55:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=41895383</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=41895383</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41895383</guid></item></channel></rss>