Midnight Beach logo

Midnight Beach - Ethiopia

The pages of a web site should all have a consistent look and feel, and it should be easy to change that look and feel. Partly because I came to the web so early that there really weren't a lot of the tools that I needed when I started to need them, and partly because of a militant laziness that might surprise even Larry Wall, I've never tried to find off the shelf software that would do what I want - I always just wrote my own.

My first program let me replace various design elements with macro calls. However, if I wanted to change or add a design element, I had to change the program itself. Over time it became obvious that what I wanted was a way to pour the unique text of each page into a template. A templating system would ensure that each page had the group skin, and a templating system would allow me to separate the site map from the page contents.

.Net is a wonderful environment for this sort of lexical programming and the template system quickly evolved, using the pattern language built into the .Net Format() function to provide semantic markup that applies to behavior, not just appearance. Ultimately, I added a full-fledged script compiler so that even macros that need to exercise judgement or make system calls can be included in the template, and can thus be customized for each group of pages. (The script discussion is a bit more technical than the other pages under this one.)

So, what I've got is not quite a markup language, and it's not quite a "general purpose" programming language. This led to my naming the system Ethiopia, after that country's long, fascinating history as a border region.

Created on May 10, 2003, last updated May 23, 2003 • Contact jon@midnightbeach.com