<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, 19 Jun 2026 11:56:08 +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 "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><item><title><![CDATA[New comment by modulovalue in "Using Euro coins as weights (2004)"]]></title><description><![CDATA[
<p>It's very easy. I'm using the cheapest weighted vest that I could find and it came with blue bags that I've just filled with coins. You don't really need straps to make the weights tight because the money just kind of spreads inside of the bag and doesn't move at all once it's there.<p>It's on my todo list to 3d print some containers to replace the bags with actual "money rolls" so that I can remove them more easily.</p>
]]></description><pubDate>Sun, 20 Oct 2024 13:25:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=41895229</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=41895229</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41895229</guid></item><item><title><![CDATA[New comment by modulovalue in "Using Euro coins as weights (2004)"]]></title><description><![CDATA[
<p>It's a vest that you can fill with stuff to increase the intensity of a workout.<p>There was a time in my life when my legs started hurting and shaking from muscle atrophy because I was programming too much and moving too little.<p>I was looking for a way to fix that issue and I didn't want to waste time going to a gym, so I started talking walks with a weighted vest. Walking is nice because you can think while walking and with a weighted vest you don't have to walk for hours for it to have a useful effect on your body.</p>
]]></description><pubDate>Sun, 20 Oct 2024 13:10:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=41895143</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=41895143</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41895143</guid></item><item><title><![CDATA[New comment by modulovalue in "Using Euro coins as weights (2004)"]]></title><description><![CDATA[
<p>I'm using euro cents as weights in my weighted vest.<p>When I started doing this I didn't want to afford dedicated weights as it seemed like a waste of money, but I had many cents saved up from my childhood, which I started to use instead.<p>I have roughly 15kg in euro cents in my vest and I'm regularly talking walks with it.<p>To get one kilo you need 435 cents and it turns out that in Germany you can also "buy" coins "for free" at the "Bundesbank", that is, you can exchange actual money for weights without any fees. You give 4 euros and 35 cents and you get a kilo. Once you need the money back, you can also sell those coins back to them for free.</p>
]]></description><pubDate>Sun, 20 Oct 2024 12:53:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=41895049</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=41895049</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41895049</guid></item><item><title><![CDATA[New comment by modulovalue in "Creating invariant floating-point accumulators"]]></title><description><![CDATA[
<p>> How do you gain associativity then? At a minimum, you can't throw information away.<p>That's an interesting perspective that I haven't considered before, thank you.<p>Now I'm wondering, could we throw away some information in just the right way and still maintain associativity? That is, it doesn't seem like throwing information away is fundamentally what's preventing us from having an associative operation, since we can throw information away and still maintain associativity by, for example, converting each summand to a 0 and adding them, and that operation would be associative. However, we would have thrown all information away, which is not useful, but we would have an associative operation.</p>
]]></description><pubDate>Wed, 04 Sep 2024 19:23:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=41449607</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=41449607</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41449607</guid></item><item><title><![CDATA[New comment by modulovalue in "Creating invariant floating-point accumulators"]]></title><description><![CDATA[
<p>I'm still wondering if there could exist an alternative world where efficient addition over decimal numbers that we developers use on a day to day basis is associative. Is that even possible or is there perhaps some fundamental limit that forces us to trade associativity for performance?<p>It seems to me that non associative floating point operations force us into a local maximum. The operation itself might be efficient on modern machines, but could it be preventing us from applying other important high level optimizations to our programs due to its lack of associativity? A richer algebraic structure should always be amenable to a richer set of potential optimizations.<p>---<p>I've asked a question that is very much related to that topic on the programming language subreddit:<p>"Could numerical operations be optimized by using algebraic properties that are not present in floating point operations but in numbers that have infinite precision?"<p><a href="https://www.reddit.com/r/ProgrammingLanguages/comments/145kps7/could_numerical_operations_be_optimized_by_using/" rel="nofollow">https://www.reddit.com/r/ProgrammingLanguages/comments/145kp...</a><p>The responses there might be interesting to some people here.</p>
]]></description><pubDate>Tue, 03 Sep 2024 13:29:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=41434754</link><dc:creator>modulovalue</dc:creator><comments>https://news.ycombinator.com/item?id=41434754</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41434754</guid></item></channel></rss>