What changed on this site, when, and what it did to speed, security or reliability. Mistakes are logged like everything else. This page is in English; subscribe by feed.
Layout fixes from a visual pass on phones, tablets and laptops
The navigation was cut off on tablets (the links and the search button ran past the screen between 768 and about 1100 pixels), and the floating badges around the portrait were cut off on 1280-pixel laptops. The links now show from 1280 pixels and a menu below that; the badges keep clear of the screen edge and of the text. On phones the years badge no longer hangs off the screen, the profile highlights stack one per row so long words such as Ciberseguridad fit, the scroll cue is a 44-pixel target, and the Italian footer line is in Italian. Ten layout tests across the three languages fail on the old layout.
Engineering log, build notes and keyboard shortcuts
This log, a page on how the site is built (decisions and what each one costs), and keyboard shortcuts: ? lists them, l switches language, g then a letter jumps to a section.
Contact card link fixed on the Spanish and Italian pages
The Save to contacts link of the release below pointed at /es/ and /it/ paths that do not exist (404). It is root-relative now, and the test requests the link as the browser resolves it from each page. Found by checking the live site after the deploy.
Instant navigation, a live performance panel, trust pages, contact card
Chromium prerenders the next page when you rest on a link; analytics and the consent banner wait until the page is actually shown. Early Hints send the critical file list before the page is ready. A footer panel shows what your own visit cost, from the browser’s Performance API. Trust pages in three languages state how the site protects visitors and ships changes. A vCard per language, and a clean printed page.
Page transitions made reliable
The cross-fade between languages sometimes did not run. Cause: the opt-in rule sat inside a reduced-motion media query, which Chromium can evaluate too late on the new page. It is now one top-level rule, and reduced motion switches the animation off instead. Failures at the top of the page under heavy load fell from about 58% to about 12%; the rest is Chromium skipping transitions on a saturated machine, which gives an ordinary page load.
Test suite 4 minutes to about 77 seconds
The suite runs as parallel groups behind one required check, and the CI browser is installed without the system package manager, which had stalled one run for 8 minutes. Production deploys run the same groups.
Whole head visible in the About portrait
On desktop the photo was cropped at the forehead; it is now aligned to the top.
Portrait no longer flashes square when switching language
The transition snapshot was taken of the image inside the round frame. The name now sits on the circle itself, and a test fails if anything inside it is named.
Performance budget enforced in tests
A first visit may use 200 KB, 12 requests, 30 KB of script, 11 KB of CSS, 110 KB of fonts and 25 KB of images; a change over any limit fails the build. At the time of writing a visit is 9 requests and about 152 KB.
Cross-fade between language pages
Switching language fades instead of flashing white, with the navigation bar and portrait held in place. Pure CSS, no library.
Production health check every 30 minutes
An automatic check confirms the site and its security headers, the redirects from the old and www addresses, certificate validity (at least 14 days), mail routing and the security contact file. A failure sends an alert.
Link previews in the page language
Each language page shares its own 1200 by 630 card, rendered at build time from the page content.
Command menu, live Milan time, llms.txt and security.txt
Ctrl or Cmd K opens a menu to jump anywhere; the hero shows the time in Milan. /llms.txt summarises the site for AI assistants and /.well-known/security.txt gives a security contact (RFC 9116).
Mobile menu readable after scrolling
The drawer was clipped by the blurred navigation bar once the page had scrolled. It now sits outside the bar.
New primary domain
The site moved to carlosfernandezsanmillan.com. The previous domain and the www address redirect permanently, keeping path and query. Mail addresses on the new domain forward to the owner and cannot be used to send.
Production on Cloudflare Pages
Real security headers (a strict Content Security Policy, HSTS, no framing) and one-year caching for fingerprinted files. Publishing needs a typed confirmation and a reviewer’s approval; the previous hosting stays available as a fallback.