Escritura

Blog

49 artículos
Notas recientes

Arquitectura, sistemas y herramientas construidas desde la práctica.

01
2026

CSS print layout: floats, BFC, and image containment

Four print layout behaviors that break screen assumptions: why floats beat CSS Grid for variable-height sidebars, why DOM order matters for floats, why overflow:hidden on a float sibling breaks multi-page layouts, and how to draw rules that actually print.

→

JSON-LD Entity Graph for Brand Disambiguation on Minimal Sites

How to use JSON-LD with @id, sameAs, and rel=me to establish a coherent entity graph that disambiguates a brand sharing its name with unrelated entities — the three-node minimum, Wikidata's role, and what structured data cannot do.

→

RSS as a cross-site content bridge in Astro SSG

Using RSS as a stateless content contract between two independent Astro static sites, with GitHub Actions repository_dispatch to trigger rebuilds only when Markdown content changes — not on every commit.

→

av.js — self-hosted analytics embed

API reference for av.js: the minimal analytics snippet for Avelor-hosted projects. Covers the embed pattern, the pageview payload structure, custom event API, session ID strategy, and implementation constraints like keepalive fetches and localhost filtering.

→

Using the URL fragment as an encryption key carrier

Client-side AES-256-GCM encryption where the key lives exclusively in the URL fragment — never transmitted to the server. The design, the constraints around browser history and intermediaries, and why out-of-band key delivery defeats the UX goal.

→

A WebSocket relay as a self-hosted tunnel

A single Node.js process that exposes localhost over public HTTPS using a persistent outbound WebSocket from the CLI — token auth in the handshake, request queuing with UUID correlation, 30s timeout, and no inbound ports on the developer's machine.

→

tailscale serve sets REMOTE_ADDR to 127.0.0.1 for every request

tailscale serve is a reverse proxy, not a network filter — it collapses all caller identities to 127.0.0.1, silently bypassing any REMOTE_ADDR-based auth guard. The only reliable identity signal is the Tailscale-User-Login header it injects.

→

Building gob.co.nz: A Static Corrections Register

Architecture notes for gob.co.nz, a static public corrections register for the tech industry — stack decisions, Astro 6 Content Layer footguns, build-time OG image generation with sharp, and Pagefind client-side search integration.

→

Building Octa: Architecture Decisions for a Static Engineering Notebook

Design decisions behind Octa: why Astro over Next.js, how the type/project dual-classification model works, the sidebar architecture, Mermaid diagram rendering without a build-time headless browser, and what was deliberately left out.

→
Archivo

Artículos anteriores sobre tecnología, aprendizaje y desarrollo de software.

02