Skip to main content

Writing

Book

Lightweight Django is a technical book that aims to show readers how to leverage the Django framework to work with modern web applications.

2026

Care Is Not a Feature Flag

A response to Nilay Patel's 'software brain' essay — why the chatbot I shipped last week has no LLM, and what I think people actually yearn for when they say they are tired of AI.

The Portfolio as Conversation

An experiment in replacing traditional portfolio navigation with a guided chatbot — pre-scripted, static, bilingual, and accessible.

Adding Text-to-Speech (TTS) to my writings

How I added a text-to-speech player to my static Hugo site using the Web Speech API — built for accessibility, tested for screen readers, low vision, and color blindness, and handy for listening on walks and drives.

Turn and Face the Strange

A complete rebuild of my personal website — new framework, new design, bilingual content, mobile-native layout, accessibility-first architecture, and answer engine optimization.

Answer Engine Optimization

Why optimizing for answer engines like ChatGPT, Perplexity, and Google AI Overviews matters — and the practical changes I made to my site to prepare for the shift from traditional SEO.

Accessibility is the Foundation

How accessibility shaped every decision in this site rebuild — focus indicators, skip navigation, semantic HTML, ARIA patterns, reduced motion, and dark mode.

Part 5: Starman

Deploying the rebuilt site with GitHub Actions, sub-second Hugo builds, Lighthouse-tested performance, and a pipeline that disappears.

Part 4: Space Oddity

Building a mobile experience with a bottom tab bar, 44pt touch targets, system fonts, and device-aware detection — not just responsive breakpoints.

Part 3: "Heroes"

Translating every page and all 54 blog posts into Spanish using Hugo's multilingual framework, i18n files, and hreflang tags.

Part 2: Modern Love

Redesigning the site with a fixed sidebar, earth-tone palette, Lora and Inter typography, dark mode, and a mobile-native layout.

Part 1: Ch-ch-ch-ch-changes

Migrating a 13-year-old Jekyll site to Hugo — cleaning up dead links, preserving every URL, and dropping dependencies to start fresh.

2024

2021

2019

2018

2017

2016

2015

2014

2013

2012

2011