I have redesigned the website again. Anyone who has been here for a while probably saw that coming. This time I am using new-to-me programming languages and newer frameworks to make the website load and react faster. Including more mobile friendly.

After publishing online since 2000, I still enjoy opening the hood and rearranging things. A personal website gives me somewhere to write, display photographs, and experiment with the machinery that makes both possible. Apparently, twenty-six years of doing that has done very little to cure my urge to tinker.

This release gets an appropriately excessive designation: v1.1.0+0x2a.borges. The numerical portion follows the version currently attached to the theme’s CSS and JavaScript files. Everything after the plus sign is commemorative build metadata. 0x2a is hexadecimal for 42.

The homepage gives my two main pursuits their own space: the journal and the gallery. Dates, titles, and short excerpts introduce the writing; photography has a separate invitation to explore. Search and the Pages menu keep navigation close at hand. The result feels like an independent web journal with room for a photographic practice. Take a look around.

There are several programming languages involved, each with a different job.

HTML supplies the document’s structure. It identifies headings, paragraphs, links, images, and navigation. It is a markup language rather than a programming language: its role is to describe what the content means and how its parts fit together. The live site includes a “Skip to content” link, for example, giving readers using keyboard navigation a direct route past the header.

CSS supplies the presentation. Typography, color, spacing, borders, and layout belong to this layer. Responsive CSS can adapt a layout to the available screen width, letting the same document work across phones and larger displays. The current theme loads its own assets/site.css file, giving the design a dedicated stylesheet.

JavaScript supplies browser-side behavior. It is the language commonly used to respond to clicks, update interface state, and control interactive elements. The theme loads assets/site.js, alongside scripts supplied by WordPress and installed plugins. Search and the expandable navigation are visible interactive features; confirming precisely how they are implemented would require examining the script itself.

That is the foundation currently serving the site. My earlier redesign announcement also outlines another direction: TypeScript, React with TSX, CSS, and SQL, with Vinext and Cloudflare D1.

TypeScript builds on JavaScript by adding a type system. A gallery image, for example, could have a defined structure containing its source, caption, and alternative text. Type checking can catch code that passes the wrong kind of value or expects a field that does not exist. Those checks happen during development; the browser ultimately runs JavaScript. TypeScript helps catch mistakes before deployment, while incoming data still needs validation when the application runs. 

React organizes an interface into reusable components. An article preview, gallery item, or navigation control can become a component used in multiple places. TSX is the syntax used when TypeScript files contain JSX, the markup-like expressions commonly used to describe React interfaces. It combines typed application logic with an expressive way to define what appears on screen. 

Vinext provides a Vite-based implementation of the Next.js API surface. It belongs to the application tooling and framework layer, handling capabilities beyond the visual components themselves. Its project describes Cloudflare Workers as the primary deployment target. That makes it relevant to the proposed application architecture, although its presence in the announcement does not establish that the live site is running it. 

For Marginalia, the proposed storage layer is Cloudflare D1, a managed database with SQLite SQL semantics. SQL is the language used to insert, retrieve, and update records. A short entry could be stored with its text and publication time, then retrieved in chronological order. D1 would run through Cloudflare’s service, so that portion of the proposed system would depend on infrastructure beyond my personal server. 

There is plenty of machinery behind a page that mostly asks you to read something or look at a photograph. That is part of the attraction for me. I get to work on the words, the images, and the system carrying them.

My ability to leave it alone remains an experimental feature.

Total time for redesign? 4 hours. Wow.

Oh, and see if you can spot and click on the hidden rabbits to see where they lead you.