<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Andrei Lavrenov · writing</title><description>Essays on shipping, design systems, and the occasional footnote.</description><link>https://lav.ren</link><language>en</language><atom:link href="https://lav.ren/rss.xml" rel="self" type="application/rss+xml"/><item><title>A reader mode for forum stories that keeps the comments</title><link>https://lav.ren/blog/2026-08-xenforo-story-reader</link><guid isPermaLink="true">https://lav.ren/blog/2026-08-xenforo-story-reader</guid><description>A Tampermonkey userscript that turns a threadmarked XenForo thread into an AO3-style reader — chapter TOC, discussion as comments, EPUB export, one file.</description><pubDate>Mon, 31 Aug 2026 10:00:00 GMT</pubDate><category>userscript</category><category>dev-tools</category><category>javascript</category></item><item><title>Replacing the Proximus ONT with a single SFP+ stick</title><link>https://lav.ren/blog/2026-06-proximus-byod-ont-sfp-stick</link><guid isPermaLink="true">https://lav.ren/blog/2026-06-proximus-byod-ont-sfp-stick</guid><description>How I threw out the operator&apos;s Nokia ONT and B-box and ran my whole fiber connection through one FS.com SFP+ module inside my own router — PON serial registration, VLAN 20, optical levels, and the O5.1 state. Tested on the Proximus network.</description><pubDate>Wed, 03 Jun 2026 09:00:00 GMT</pubDate><category>fiber</category><category>xgs-pon</category><category>proximus</category><category>home-network</category><category>unifi</category></item><item><title>Getting fiber to the garage</title><link>https://lav.ren/blog/2026-05-getting-fiber-to-the-garage</link><guid isPermaLink="true">https://lav.ren/blog/2026-05-getting-fiber-to-the-garage</guid><description>A free install that quietly cancelled itself, then a polite installer, a shared pole, and a same-day surprise that turned &quot;next week&quot; into that same afternoon.</description><pubDate>Fri, 29 May 2026 09:00:00 GMT</pubDate><category>fiber</category><category>belgium</category><category>proximus</category><category>home-network</category></item><item><title>Building an annotation editor that writes its own YAML</title><link>https://lav.ren/blog/2026-04-building-an-annotation-editor</link><guid isPermaLink="true">https://lav.ren/blog/2026-04-building-an-annotation-editor</guid><description>A dev-only visual tool for authoring the margin notes, stamps, and arrows on lav.ren. Drag to position, click to create, auto-saves to MDX frontmatter.</description><pubDate>Sun, 26 Apr 2026 18:00:00 GMT</pubDate><category>astro</category><category>dev-tools</category><category>vite</category><category>hmr</category></item><item><title>A palette mixer for tuning ink on paper</title><link>https://lav.ren/blog/2026-04-palette-mixer-dev-tool</link><guid isPermaLink="true">https://lav.ren/blog/2026-04-palette-mixer-dev-tool</guid><description>Live color tuning in the Astro dev toolbar — five axes, two modes, one SVG filter I never would have found without sliders.</description><pubDate>Sun, 26 Apr 2026 14:00:00 GMT</pubDate><category>astro</category><category>dev-tools</category><category>design</category><category>css</category></item><item><title>Three iterations of a portrait parallax</title><link>https://lav.ren/blog/2026-04-portrait-parallax</link><guid isPermaLink="true">https://lav.ren/blog/2026-04-portrait-parallax</guid><description>From CSS translate to WebGL depth-map displacement — building a 2.5D portrait effect for the homepage, one iteration at a time. Interactive demos with sliders at each step.</description><pubDate>Sun, 26 Apr 2026 10:00:00 GMT</pubDate><category>webgl</category><category>css</category><category>react</category><category>parallax</category><category>retrospective</category></item><item><title>Six attempts at folding paper with CSS</title><link>https://lav.ren/blog/2026-04-six-attempts-at-folding-paper</link><guid isPermaLink="true">https://lav.ren/blog/2026-04-six-attempts-at-folding-paper</guid><description>A corner-fold effect that took two days and six approaches — from empty clip-path overlays through Three.js mesh deformation back to pure CSS with a single quadratic bezier.</description><pubDate>Sat, 25 Apr 2026 09:00:00 GMT</pubDate><category>css</category><category>clip-path</category><category>threejs</category><category>retrospective</category></item><item><title>Solar tracker or just more panels? The math said panels.</title><link>https://lav.ren/blog/2026-04-solar-tracker-for-my-garden</link><guid isPermaLink="true">https://lav.ren/blog/2026-04-solar-tracker-for-my-garden</guid><description>A weekend of clear-sky math to decide: single-axis tracker or two more fixed panels for the same money? At 50.76°N with 1,600 sunshine hours, it wasn&apos;t close — buy the panels.</description><pubDate>Wed, 15 Apr 2026 09:00:00 GMT</pubDate><category>solar</category><category>belgium</category><category>retrospective</category></item><item><title>Rebuilding lav.ren in Astro (and why)</title><link>https://lav.ren/blog/2026-04-rebuilding-lav-ren-in-astro</link><guid isPermaLink="true">https://lav.ren/blog/2026-04-rebuilding-lav-ren-in-astro</guid><description>Notes from rebuilding a four-year-old Bootstrap 4 site as Astro 5 + React islands. Zero JS on the static pages, one clever hydration pattern I almost got wrong, no regrets.</description><pubDate>Tue, 14 Apr 2026 09:00:00 GMT</pubDate><category>astro</category><category>react</category><category>architecture</category><category>meta</category></item></channel></rss>