Learning any programming language is about learning how to debug it. But a malformed command in Python usually returns an error message that prevents the code from running, not a command that fails miserably but even worse, going beyond its creator's intentions. With HTML, we are all Doctor Frankenstein.
One of my favorite websites of all time is Embroidery Troubleshooting Guide. Today it is only available via Internet Archiveunless (like me) you have a local copy. At the top, it looks like a typical small business website, if a bit outdated. But when you look down, you'll immediately notice something strange about it. The text, all centered in alternating red and blue Arial, gradually gets larger, with phrases forcing line breaks or reaching the edge mid-word, filling the screen like Alice trying to wriggle out through increasingly smaller doors in Wonderland.
When you look at the source code (is there any other program that makes viewing source as easy as a website?), you'll quickly discover what happened. Each line of centered text begins with
or
title tag never closes. Each title tag—which establishes only relative size, not absolute size, part of the semantic richness of the web's flexible grammar—builds upon the last tag, creating different The nested dolls gradually get larger. Tags are designed to define a text hierarchy that runs amok, creating chaos. The fact that the words themselves talk about how and why the strings can break makes it poetry.
On its own, the Embroidery Troubleshooting Guide would be a clever enough piece of conceptual art. But by viewing the source, downloading the files, and replacing the instructions for troubleshooting common sewing problems with whatever text you like, you can make that work of art your own. I love taking my favorite poem, decoding it, and forcing myself to read it with new eyes.
“Broken” websites like this one undo the great achievement of semantic HTML. As it evolved, semantic HTML increasingly separated structure from presentation: Instead tags strictly specify that text be presented in italics, which we use tag to define emphasis (or tags for book or movie titles, etc). These elements may then be presented as italics on a computer screen but read with a different intonation by a screen reader. Instructions for troubleshooting Embroidery hijacking the semantic tag and causing it to display something unexpected. The same building blocks that allow a website to be displayed dynamically on a small phone or giant television screen can make a website essentially impossible to display. This is interesting.
I appreciate the utility of content management systems and complex websites that generate dynamic HTML, but it's fun to build websites from simple HTML files that you can edit by hand. I still edit my own website this way, organizing it so I can see every tag, section, and paragraph break. I even enjoy editing my own ebooks, turning PDFs into uniquely formatted HTML-based EPUB files that are never published to anyone: my private library of pages independent website. During the height of the pandemic, editing these files and their stylesheets by hand was a great thing.
Finally, even though HTML has become a specialized field, it still cannot be controlled. This is what makes so many programmers nervous about the web and sometimes pathetically desperate to maintain the all-too-real walls they have erected between software engineers and web developers. But HTML writers know that hierarchy is designed to destroy it. All you need is a tag that doesn't close where you expect it to.
What other programmers might say disdainfully is what HTML lovers love: Anyone can do it. Whether we are using complex frameworks or very simple tools, the promise of HTML is that we can build, create, code, and DO whatever we want.