About the Code
This site uses a single PHP script to serve all of its webpages, with the details of which page to load given by GET variables. In other words, each page of the site is in reality of the form index.php?act=page. This directs the script to include the file with the relevant text in – so, for example, a request to index.php?act=about includes the file about.php. It then places the text from this file in its correct place in the XHTML, which it then echoes.
This is slightly different if the page requested is one of the archive, info or about pages, which have more than one attribute. The archive action also has the variables $year, $month and $title, corresponding to the entry's year, month and short title respectively. The about and info actions also check the $page variable to determine which of the pages should be loaded.
As you have no doubt noticed, what appears in the title bar is not in fact the PHP page, but a directory structure. I use the Apache module mod_rewrite to redirect requests to these directories to the PHP script.
I also check the HTTP header to see what doctypes the user agent accepts, and provide an HTML as opposed to XHTML page to those who can't handle the latter. Unfortunately Safari doesn't mention what it supports, so I have to give it the XHTML by a simple browser detect (something I shouldn't have to do). Safari also doesn't like most named HTML entities, so until I get round to changing all the named entities it doesn't support, Safari users will see things like ’ and £ in some places. (Any kind-hearted Safari user who wants to tell me where will receive my never-ending gratitude for approximately twenty minutes.)
I write entries to the blog with Movable Type, a fantastic piece of Perl software. The templates I use in Movable Type, rather than being of the normal (X)HTML layout, are in the form of PHP scripts, so that entries I write in MT are picked up by my script. I use many plugins for MT, including Markdown and SmartyPants by John Gruber to make writing blog entries even easier than it currently is with MT. The only thing it doesn't do is automatically create <abbr> and <acronym> tags, so until I find an automatic solution I like, I'll be writing these in by hand.
The random header image in the top right of the page is a PHP script saved as a PNG image, with an .htaccess file forcing it to parse as a PHP script. The script selects a random image from a directory and outputs it. The menu is created by Javascript and you're free to open up the file to see how it works.