<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Lab on Ariel Marin — Architectural Visualization</title><link>https://arielsmarin.com/lab/</link><description>Recent content in Lab on Ariel Marin — Architectural Visualization</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sat, 20 Jun 2026 00:00:00 -0300</lastBuildDate><atom:link href="https://arielsmarin.com/lab/index.xml" rel="self" type="application/rss+xml"/><item><title>Render Queue Worker</title><link>https://arielsmarin.com/lab/render-queue/</link><pubDate>Sat, 20 Jun 2026 00:00:00 -0300</pubDate><guid>https://arielsmarin.com/lab/render-queue/</guid><description>&lt;p&gt;A small daemon that turns a watched directory into a render job queue. Jobs are JSON
files; claiming a job is an atomic &lt;code&gt;mv&lt;/code&gt;; recovery after a crash means moving files
back. No database, no broker, no web UI.&lt;/p&gt;
&lt;h2 id="design-notes"&gt;Design notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The filesystem is the queue — &lt;code&gt;mv&lt;/code&gt; gives atomicity for free.&lt;/li&gt;
&lt;li&gt;systemd handles restarts, logging and memory limits.&lt;/li&gt;
&lt;li&gt;Notifications go out through a Telegram bot on job completion or failure.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="status"&gt;Status&lt;/h2&gt;
&lt;p&gt;Running in production on my render node since mid-2026. Next step: a &lt;code&gt;--dry-run&lt;/code&gt;
mode that estimates job duration from scene statistics.&lt;/p&gt;</description></item><item><title>Contact Sheet Generator</title><link>https://arielsmarin.com/lab/contact-sheet/</link><pubDate>Wed, 11 Feb 2026 00:00:00 -0300</pubDate><guid>https://arielsmarin.com/lab/contact-sheet/</guid><description>&lt;p&gt;Clients review sets of images, not single files. This CLI takes a folder of renders
and produces a single annotated contact sheet: filename, resolution, and an optional
note under each thumbnail.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;contact-sheet ./renders --columns 4 --out review-r03.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="why"&gt;Why&lt;/h2&gt;
&lt;p&gt;Every delivery used to involve ten minutes of manual layout in an image editor.
Now it&amp;rsquo;s one command in the delivery script.&lt;/p&gt;
&lt;h2 id="status"&gt;Status&lt;/h2&gt;
&lt;p&gt;Prototype — works for my delivery format; flags and defaults still shifting.&lt;/p&gt;</description></item></channel></rss>