<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>MatthewLab</title><link>https://matthewlab.com/</link><description>AI, software and the decisions behind them.</description><language>en</language><item><title>Your token count isn’t your AI bill.</title><link>https://matthewlab.com/token-counts-and-ai-bills/</link><guid isPermaLink="true">https://matthewlab.com/token-counts-and-ai-bills/</guid><pubDate>Thu, 05 Nov 2026 01:17:14 +0000</pubDate><description>Before comparing AI usage, check what the report counts, where the day begins, and which records are missing.</description></item><item><title>Before debugging the value, check the context.</title><link>https://matthewlab.com/javascript-context-before-coercion/</link><guid isPermaLink="true">https://matthewlab.com/javascript-context-before-coercion/</guid><pubDate>Thu, 05 Nov 2026 01:17:14 +0000</pubDate><description>Why the same JavaScript characters can produce different results—and what to preserve in a useful reproduction.</description></item><item><title>A rollback button is not a recovery plan.</title><link>https://matthewlab.com/rollback-is-not-data-recovery/</link><guid isPermaLink="true">https://matthewlab.com/rollback-is-not-data-recovery/</guid><pubDate>Thu, 05 Nov 2026 01:17:14 +0000</pubDate><description>Application code, database state, and uploaded files can travel back to different points in time. Make the boundary explicit.</description></item><item><title>Twenty characters. According to which counter?</title><link>https://matthewlab.com/javascript-string-length-graphemes/</link><guid isPermaLink="true">https://matthewlab.com/javascript-string-length-graphemes/</guid><pubDate>Thu, 05 Nov 2026 02:40:12 +0000</pubDate><description>A name field needs a definition of character before it needs a validation library. Compare code units, code points, visible clusters and storage bytes.</description></item><item><title>The test was green before the fix, too.</title><link>https://matthewlab.com/regression-test-passes-before-fix/</link><guid isPermaLink="true">https://matthewlab.com/regression-test-passes-before-fix/</guid><pubDate>Thu, 05 Nov 2026 02:40:12 +0000</pubDate><description>A unique database row can hide repeated attempts and repeated side effects. Choose the observation that matches the bug.</description></item><item><title>No value is not one instruction.</title><link>https://matthewlab.com/api-null-empty-omitted-fields/</link><guid isPermaLink="true">https://matthewlab.com/api-null-empty-omitted-fields/</guid><pubDate>Thu, 05 Nov 2026 02:40:12 +0000</pubDate><description>An update request can mean keep, clear or reject. Preserve that distinction through form state, JSON serialization and server validation.</description></item><item><title>After Cancel, the old answer can still arrive.</title><link>https://matthewlab.com/async-ui-cancel-stale-results/</link><guid isPermaLink="true">https://matthewlab.com/async-ui-cancel-stale-results/</guid><pubDate>Thu, 05 Nov 2026 02:40:12 +0000</pubDate><description>Transport cancellation and permission to update the screen are separate. Use request identity to stop a late answer from replacing newer input.</description></item><item><title>Does a still 3D scene need another frame?</title><link>https://matthewlab.com/on-demand-rendering-static-3d/</link><guid isPermaLink="true">https://matthewlab.com/on-demand-rendering-static-3d/</guid><pubDate>Thu, 05 Nov 2026 02:40:12 +0000</pubDate><description>A static product viewer and an animation have different inputs. Name the changes that require a redraw before changing the render loop.</description></item><item><title>The container finished. Where did the file go?</title><link>https://matthewlab.com/docker-container-output-files/</link><guid isPermaLink="true">https://matthewlab.com/docker-container-output-files/</guid><pubDate>Thu, 05 Nov 2026 02:40:12 +0000</pubDate><description>A successful exit does not establish that a report survives outside its container. Trace the output path before cleaning up the run.</description></item><item><title>Average first, convert later? The order changes the answer.</title><link>https://matthewlab.com/average-before-nonlinear-conversion/</link><guid isPermaLink="true">https://matthewlab.com/average-before-nonlinear-conversion/</guid><pubDate>Thu, 05 Nov 2026 02:40:12 +0000</pubDate><description>The average of converted measurements can differ from the conversion of their average. A two-number example makes the choice visible.</description></item></channel></rss>