Making Websites


In 2025 I relaunched Control-Escape as a statically generated site built with Hugo. While pre-generated sites have many advantages, one of the drawbacks has traditionally been the difficulty of implementing a site search tool.
With no back end server process to conduct searches, an alternative approach must be used. One such approach is to run the search software in the user’s browser using JavaScript (shifted right). This requires building a search index at site build time (shifted left) and shipping that index as part of the site content.
The web isn’t magic. It runs on a handful of simple, powerful ideas that every developer should understand — but too many skip them, trusting frameworks and libraries to handle the details.
That’s fine… until things break. Until your site slows down, your users can’t reach it, or your code becomes an unmaintainable mess.
This article is your roadmap back to the fundamentals. If you truly want to master web development — not just the flavor of the month — you must know these seven core technologies.
uv is a tool from Astral.sh that helps you manage Python tools
and development projects. For all the details you can
read the docs, but here’s a quick lesson in what it can do
and how it can help Python developers in the daily grind of developing Python software.
We’ll walk through managing a hypothetical Django project.
If you work on a large Django project, there’s a good chance that you would describe your settings file as “a mess” (or perhaps you use harsher language). You may even have broken your settings out into a whole package with multiple files to try and keep things organized. We’re highly skilled and organized developers, how does this happen to us?
I believe part of the problem is that the “settings” bucket holds three different kinds of things without differentiating between them. If you make a clear distinction between these things in your own mind (and in your code), dealing with settings will become easier, if not easy.
The Debian distribution of Linux includes the Apache web server, both the venerable version 1 and the more modern version 2. The Debian maintainers have a peculiar way of arranging the configuration files for Apache 2.0 which is not documented in the standard Apache documentation. This introduction should help you get acclimated to the Debian way of configuring Apache 2.0.