<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: mbitsnbites</title><link>https://news.ycombinator.com/user?id=mbitsnbites</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 14 Apr 2026 12:35:32 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=mbitsnbites" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by mbitsnbites in "How to make Firefox builds 17% faster"]]></title><description><![CDATA[
<p>Same with BuildCache, except you also get a fast local cache so you effectively have an L1 and an L2 cache.<p>In fact, since you also have super fast "direct mode" caching that bypasses the preprocessor (like ccache but unlike sccache), BuildCache really has three logical levels of cache: direct, preprocessor and remote (S3, redis, ...).</p>
]]></description><pubDate>Tue, 14 Apr 2026 06:44:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47762080</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=47762080</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47762080</guid></item><item><title><![CDATA[New comment by mbitsnbites in "How to make Firefox builds 17% faster"]]></title><description><![CDATA[
<p>Though I'm not actively working with Firefox so can't speak for their use cases, one important use case for clobber builds is CI.<p>I'm the author of BuildCache, and where I work we make thousands of clobber builds every day in our CI. Caching helps tremendously for keeping build times short.<p>There are a few use cases for local development too. For instance if you switch between git branches you may have to make near full rebuilds (e.g. in C++ if some header file is touched that gets included by many files).<p>Another advantage as a local dev is that you can tap into the central CI cache and when you pull the latest trunk and build it, chances are that the CI system has already built that version (e.g. as part of a merge gate) so you will get cache hits.</p>
]]></description><pubDate>Tue, 14 Apr 2026 06:16:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=47761887</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=47761887</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47761887</guid></item><item><title><![CDATA[New comment by mbitsnbites in "How to make Firefox builds 17% faster"]]></title><description><![CDATA[
<p>For what it's worth, browser uptake is largely dictated by the browser being default shipped with some major OS. Very few users make an active choice (statistically speaking).<p>Safari is popular because it ships with iOS and macOS.<p>Edge (previously IE) is popular because it ships with Windows.<p>Chrome, however, is popular for several reasons. One reason is that it ships with Android and ChromeOS, but before that Google had a very aggressive multi-channel campaign where they pushed it with large banners on Google search (everyone used Google) and they made deals with Windows AV vendors so that when a user installed anti-virus on their computer Chrome was automatically installed and made the default browser. Another reason is that Google has consistently develeoped Chrome together with their web services, so things like search, maps, gmail, docs etc tend to work best in Chrome.<p>The only default channels that Firefox has, that I'm aware of, are verious Linux distros, and they have a pretty thin market slice.</p>
]]></description><pubDate>Tue, 14 Apr 2026 05:58:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47761780</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=47761780</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47761780</guid></item><item><title><![CDATA[New comment by mbitsnbites in "How to make Firefox builds 17% faster"]]></title><description><![CDATA[
<p>And a local cache (kind of level 1 and level 2 caches)</p>
]]></description><pubDate>Tue, 14 Apr 2026 05:33:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=47761636</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=47761636</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47761636</guid></item><item><title><![CDATA[How to make Firefox builds 17% faster]]></title><description><![CDATA[
<p>Article URL: <a href="https://blog.farre.se/posts/2026/04/10/caching-webidl-codegen/">https://blog.farre.se/posts/2026/04/10/caching-webidl-codegen/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47756321">https://news.ycombinator.com/item?id=47756321</a></p>
<p>Points: 186</p>
<p># Comments: 35</p>
]]></description><pubDate>Mon, 13 Apr 2026 18:50:08 +0000</pubDate><link>https://blog.farre.se/posts/2026/04/10/caching-webidl-codegen/</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=47756321</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47756321</guid></item><item><title><![CDATA[New comment by mbitsnbites in "Show HN: A luma dependent chroma compression algorithm (image compression)"]]></title><description><![CDATA[
<p>Just a note for the posterity: The continuation of the project is called Bitfrost CC and lives here: <a href="https://codeberg.org/mbitsnbites/bitfrostcc" rel="nofollow">https://codeberg.org/mbitsnbites/bitfrostcc</a></p>
]]></description><pubDate>Fri, 13 Feb 2026 08:42:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47000456</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=47000456</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47000456</guid></item><item><title><![CDATA[New comment by mbitsnbites in "Show HN: A luma dependent chroma compression algorithm (image compression)"]]></title><description><![CDATA[
<p>Thanks for the references! After writing the blog I was looking for such references.</p>
]]></description><pubDate>Mon, 09 Feb 2026 15:52:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=46946566</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=46946566</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46946566</guid></item><item><title><![CDATA[New comment by mbitsnbites in "Show HN: A luma dependent chroma compression algorithm (image compression)"]]></title><description><![CDATA[
<p>Thanks for the feedback, and the interesting ideas. It's good to know that I was on to something and not completely off :-)<p>I'm mostly doing this for learning purposes, but a hidden agenda is to create a low-latency codec that can be used in conjunction with other codecs that deal primarily with luma information. AV1 and friends are usually too heavy in those settings, so I try to keep things simple.</p>
]]></description><pubDate>Mon, 09 Feb 2026 15:39:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=46946399</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=46946399</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46946399</guid></item><item><title><![CDATA[New comment by mbitsnbites in "Show HN: A luma dependent chroma compression algorithm (image compression)"]]></title><description><![CDATA[
<p>I truly get that. That's also one of the reasons why I started from scratch once I got the idea, rather than researching all the available papers and implementations etc (because the latter is quite overwhelming, while the former took me about a week of spare time hacks).<p>My scope is also a bit unusual, I think, because one of the applications I'm thinking about is to "augment" luma-only codecs with chroma. One such codec is <a href="https://gitlab.com/llic/llic" rel="nofollow">https://gitlab.com/llic/llic</a><p>But most of all, I wanted to learn.</p>
]]></description><pubDate>Mon, 09 Feb 2026 15:32:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=46946323</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=46946323</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46946323</guid></item><item><title><![CDATA[Show HN: A luma dependent chroma compression algorithm (image compression)]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.bitsnbites.eu/a-spatial-domain-variable-block-size-luma-dependent-chroma-compression-algorithm/">https://www.bitsnbites.eu/a-spatial-domain-variable-block-size-luma-dependent-chroma-compression-algorithm/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46884412">https://news.ycombinator.com/item?id=46884412</a></p>
<p>Points: 59</p>
<p># Comments: 13</p>
]]></description><pubDate>Wed, 04 Feb 2026 11:13:33 +0000</pubDate><link>https://www.bitsnbites.eu/a-spatial-domain-variable-block-size-luma-dependent-chroma-compression-algorithm/</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=46884412</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46884412</guid></item><item><title><![CDATA[Calculate time to crack a cryptographic key (web tool)]]></title><description><![CDATA[
<p>Article URL: <a href="https://bruteforce.bitsnbites.eu/">https://bruteforce.bitsnbites.eu/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44540910">https://news.ycombinator.com/item?id=44540910</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 12 Jul 2025 10:20:27 +0000</pubDate><link>https://bruteforce.bitsnbites.eu/</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=44540910</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44540910</guid></item><item><title><![CDATA[New comment by mbitsnbites in "Zed now predicts your next edit with Zeta, our new open model"]]></title><description><![CDATA[
<p>The model is based on Qwen2.5-Coder-7b it seems. I currently run some quantized variant of Qwen2.5-Coder-7b locally with llama.cpp and it fits nicely in the 8GB VRAM of my Radeon 7600 (with excellent performance BTW), so it looks like it should be perfectly possible.<p>I would also only use Zeta locally.</p>
]]></description><pubDate>Fri, 14 Feb 2025 13:12:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=43047955</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=43047955</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43047955</guid></item><item><title><![CDATA[New comment by mbitsnbites in "Reciprocal Approximation with 1 Subtraction"]]></title><description><![CDATA[
<p>When measuring the errors I exhaustively iterate over all possible floats in the range [1, 2), by enumerating all IEEE 754 single precision representations in that range. That's "only" 2^23 numbers, so perfectly doable.<p>My selection criteria was  abit complex, but something like this:<p>1. Maximize number of accurate bits in the approximation.<p>2. Same in NR step 1, then NR step 2 etc.<p>3. Minimize the max error in the approximation, and then the avg ertor in the approximation.<p>4. Same for NR step 1, 2, ...</p>
]]></description><pubDate>Thu, 02 Jan 2025 17:40:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=42576577</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=42576577</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42576577</guid></item><item><title><![CDATA[New comment by mbitsnbites in "Reciprocal Approximation with 1 Subtraction"]]></title><description><![CDATA[
<p>Given my search criteria, the optimal magic number turns out to be: 0x7ef311c2<p><pre><code>  Initial approximation:
    Good bits min: 4
    Good bits avg: 5.242649912834
    Error max: 0.0505102872849 (4.30728 bits)
    Error avg: 0.0327344845327 (4.93304 bits)

  1 NR step:
    Good bits min: 8
    Good bits avg: 10.642581939697
    Error max: 0.00255139507338 (8.61450 bits)
    Error avg: 0.00132373889641 (9.56117 bits)

  2 NR steps:
    Good bits min: 17
    Good bits avg: 19.922843217850
    Error max: 6.62494557693e-06 (17.20366 bits)
    Error avg: 2.62858584054e-06 (18.53728 bits)

  3 NR steps:
    Good bits min: 23
    Good bits avg: 23.674004554749
    Error max: 1.19249960972e-07 (22.99951 bits)
    Error avg: 3.44158509521e-08 (24.79235 bits)
</code></pre>
Here, "good bits" is 24 minus the number of trailing non-zero-bits in the integer difference between the approximation and the correct value, looking at the IEEE 754 binary representation (if that makes sense).<p>Also, for the NR steps I used double precision for the inner (2.0 - x * y) part, then rounded to single precision, to simulate FMA, but single precision for the outer multiplication.</p>
]]></description><pubDate>Thu, 02 Jan 2025 10:03:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=42573188</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=42573188</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42573188</guid></item><item><title><![CDATA[New comment by mbitsnbites in "Reciprocal Approximation with 1 Subtraction"]]></title><description><![CDATA[
<p>The big cores do. They essentially pump division through something like an FMA (fused multiply-add) unit, possibly the same unit that is used for multiplication and addition. That's for the Newton-Raphson steps, or Goldschmidt steps.<p>In hardware it's much easier to do a LUT-based approximation for the initial estimate rather than the subtraction trick, though.<p>It's common for CPUs to give 6-8 accurate bits in the approximation. x86 gives 13 accurate bits. Back in 1975, the Cray 1 gave 30 (!) accurate bits in the first approximation, and it didn't even have a division instruction (everything about that machine was big and fast).</p>
]]></description><pubDate>Thu, 02 Jan 2025 07:22:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=42572468</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=42572468</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42572468</guid></item><item><title><![CDATA[New comment by mbitsnbites in "Reciprocal Approximation with 1 Subtraction"]]></title><description><![CDATA[
<p>We have memcpy behind a C++ template function that mimics the interface of std::bit_cast.</p>
]]></description><pubDate>Thu, 02 Jan 2025 07:08:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=42572409</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=42572409</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42572409</guid></item><item><title><![CDATA[New comment by mbitsnbites in "Reciprocal Approximation with 1 Subtraction"]]></title><description><![CDATA[
<p>Your suggestion got me intrigued. I have a program that does an exhaustive check for maximum and average error, so I'll give your numbers a spin.</p>
]]></description><pubDate>Thu, 02 Jan 2025 07:04:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=42572398</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=42572398</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42572398</guid></item><item><title><![CDATA[New comment by mbitsnbites in "Reciprocal Approximation with 1 Subtraction"]]></title><description><![CDATA[
<p>If you're not constrained to software solutions you have a whole world of opportunities. E.g. if it's a graphics or neural net pipeline you can pour tricks like this (or better) onto it. If it's a CPU then you can add special instructions that do exponent manipulation and the likes.</p>
]]></description><pubDate>Wed, 01 Jan 2025 21:12:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=42569349</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=42569349</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42569349</guid></item><item><title><![CDATA[New comment by mbitsnbites in "Reciprocal Approximation with 1 Subtraction"]]></title><description><![CDATA[
<p>Excellent! Will have a look.</p>
]]></description><pubDate>Wed, 01 Jan 2025 21:08:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=42569315</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=42569315</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42569315</guid></item><item><title><![CDATA[New comment by mbitsnbites in "Reciprocal Approximation with 1 Subtraction"]]></title><description><![CDATA[
<p>There is also the case with machines that lack FP support, like some ARM Cortex M variants.</p>
]]></description><pubDate>Wed, 01 Jan 2025 20:05:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=42568831</link><dc:creator>mbitsnbites</dc:creator><comments>https://news.ycombinator.com/item?id=42568831</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42568831</guid></item></channel></rss>