<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Marc Santos - Blog]]></title><description><![CDATA[Latest posts from Marc Santos on software engineering, product development, and photography experiments.]]></description><link>https://marcsantos.com</link><generator>GatsbyJS</generator><lastBuildDate>Fri, 10 Apr 2026 08:45:23 GMT</lastBuildDate><atom:link href="https://marcsantos.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><item><title><![CDATA[Stop Documentation Drift]]></title><description><![CDATA[I use npm run docs:check as a lightweight guardrail against documentation drift. Under the hood, that command runs one script: node scripts/check-docs.js.

This post uses that script as a concrete…]]></description><link>https://marcsantos.com/blog/2026/03/stop-documentation-drift</link><guid isPermaLink="false">https://marcsantos.com/blog/2026/03/stop-documentation-drift</guid><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><content:encoded>I use npm run docs:check as a lightweight guardrail against documentation drift. Under the hood, that command runs one script: node scripts/check-docs.js.

This post uses that script as a concrete…</content:encoded></item><item><title><![CDATA[Building a Travel Map]]></title><description><![CDATA[Scope creep: from simple map to interactive experience I wanted one simple thing: a map of where my photos were taken. One pin per location, no clutter, and no surprise API bills.

This was supposed to…]]></description><link>https://marcsantos.com/blog/2026/03/building-a-travel-map</link><guid isPermaLink="false">https://marcsantos.com/blog/2026/03/building-a-travel-map</guid><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate><content:encoded>Scope creep: from simple map to interactive experience I wanted one simple thing: a map of where my photos were taken. One pin per location, no clutter, and no surprise API bills.

This was supposed to…</content:encoded></item><item><title><![CDATA[Fifteen Years In (and Counting)]]></title><description><![CDATA[So… what’s the point of all this? Honestly, it started small.

I wanted my own personalized @ email address, and this website became a side effect.

Looking back at more than a decade of iterations…]]></description><link>https://marcsantos.com/blog/2026/03/fifteen-years-in-and-counting</link><guid isPermaLink="false">https://marcsantos.com/blog/2026/03/fifteen-years-in-and-counting</guid><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate><content:encoded>So… what’s the point of all this? Honestly, it started small.

I wanted my own personalized @ email address, and this website became a side effect.

Looking back at more than a decade of iterations…</content:encoded></item></channel></rss>