Thomas A. Alspaugh
The tech: how this site is put together


I hope it's no longer necessary to explain the benefits of following open standards.

I use XHTML (1.1) because it's simpler to check XHTML's regular syntax than HTML. I've worked extensively with XML so the XML structure is familiar. I foresee incorporating MathML when Webkit browser support eventually catches up (sigh) (test page), and that will work best with XHTML. HTML5 seems still too much in flux to use yet.

I like the idea of separating form and content: it has worked well for me on and off the web. So to a substantial extent the layout, format, and style choices of the web site are specified in CSS (2).

I use a small number of CSS 3 features that have been broadly implemented in recent browser versions (Firefox, Opera, Safari) but don't validate yet:

When the CSS 3 ::marker pseudo-element is widely implemented, or Safari fixes its li:before bug, I'll probably use the glyph ❧ rather than an image of it list style image as at present.

Now that nearly all up-to-date browsers support SVG images I am gradually making SVG versions of each diagram image and using them rather than the original PNG versions. The advantages are substantial: for diagrams, the images are sharp at any magnification (if the browser supports that) and the files are smaller. I started by generating some SVG images using scripts (no PNG predecessors for these) and am continuing with diagrams produced with OmniGraffle.

Page construction

I edit the page content in a configurable FOSS text editor (jEdit) that I've set up for quick XHTML editing, and build the pages using the m4 macro processor, because it's widely available FOSS and I'm already familiar with it, and a handful of my own tools for incorporating BibTEX data and making tables of contents. Macro processing lets me avoid retyping shared code, keep repeated components consistent, and easily rearrange the XHTML file layout.


I strive to use javascript as little as possible and to do whatever it is at build time with m4 or at view time with CSS instead. But there are some things that still require javascript, or that are substantially more effective with it:


I saw an exhibit that included original plates from Josef Alber's Interaction of Color (Josef Albers: Innovation and Inspiration at the Hirshhorn) and was fascinated. The colors in this site are influenced by what I am learning, however imperfectly: if you flip the background you'll see that some colors are roughly even in brightness between the two backgrounds but of different hues, or some groups of colors roughly divide a difference in brightness. The pages use these non-gray colors:


Three fonts are used:

I use a few images in place of symbols that I haven't found or can't use in the XHTML/CSS context I need:

  1. list style image for list markers, as mentioned above
  2. disjoint union for disjoint union of ordered sets.

Visual cueing

Light heart

Some things aren't really necessary but they were fun to figure out and set up:

flip bgunflip