<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>rninja Blog</title><description>Build-engineering notes from the rninja team: where ninja leaves perf on the table, drop-in caching that respects determinism, and honest profiling of build graphs.</description><link>https://rninja.neullabs.com/</link><language>en-us</language><item><title>Profiling build graphs honestly</title><link>https://rninja.neullabs.com/blog/profiling-build-graphs-honestly/</link><guid isPermaLink="true">https://rninja.neullabs.com/blog/profiling-build-graphs-honestly/</guid><description>Most build profiling work is done with the wrong tool, the wrong granularity, or the wrong assumptions about what &apos;slow&apos; means. Here is how to do it well.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Drop-in caching that doesn&apos;t break determinism</title><link>https://rninja.neullabs.com/blog/drop-in-caching-that-doesnt-break-determinism/</link><guid isPermaLink="true">https://rninja.neullabs.com/blog/drop-in-caching-that-doesnt-break-determinism/</guid><description>Caching can speed up a build or break it. The difference is what the cache hashes and what it remembers. Here is the design that lets rninja cache aggressively without changing the result.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate></item><item><title>Where ninja leaves perf on the table</title><link>https://rninja.neullabs.com/blog/where-ninja-leaves-perf-on-the-table/</link><guid isPermaLink="true">https://rninja.neullabs.com/blog/where-ninja-leaves-perf-on-the-table/</guid><description>ninja is fast because it strips the executor down to its essentials. That same minimalism is also where the modern speedups live. Here is the map of the table.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate></item></channel></rss>