About this site
1. Introduction
When I do something, I want to do it well. Even though my site is relatively simple, a lot of thought has gone into it, so that it's easy to work with for me and that shows off that I know what I'm doing, if only to other website engineers. Note that I do not call myself a web designer. A website doesn't need design, it needs to be well constructed and engineered.
I have a couple of strong opinions about how websites should be built, and I will elaborate on those here. Mostly, it usually comes down to "stick with W3's specifications and recommendations". I can't stand the disregard for standards and almost complete random ad hoc approach a lot of websites demonstrate. I can stand sites that only work in Internet Explorer even less, as Internet Explorer is the top browser when it comes to disregarding standards. Any site that only works properly in Internet Explorer, clearly demonstrates that the designer/engineer who built the website has never heard of W3 and/or their purpose, and thinks that Internet Explorer is the Internet.
2. Philosophies
2.1. Standard compliance
Adhering to standards is very important to me. When writing a page in HTML, XHTML or whatever, there are rules to follow. If you try to do things that are not specified by the language you're using but only work in one browser, or you're just careless and ignorantly write invalid mark-up, then the fact that your website works, is accidental at best. Imagine what would happen if a language like C would accept the grave violations of syntax and statements we see in websites today... As far as I'm concerned, browsers shouldn't even render pages that contain invalid HTML, CSS, or whatever, just like a C compiler won't compile invalid code.
Not only is adhering to the standards by the website builders important to me, browsers must do so as well. Therefore I don't care if Internet Explorer messes up my site. My site consists of completely valid, and not even exotic, HTML and CSS. The fact that it doesn't render properly in Internet Explorer is a bug in Internet Explorer. I have written my site precisely according to the standards designed for the web, so no fault lies with me.
2.2. Cool URL's don't change
What's more annoying than going to a webpage and getting a "404 Not Found" error? The links to your webpages are edged in stone, basically. Choose them well, and if you must change them, use redirects on the old URL's so that they link to the proper page.
2.3. Elegant URL's
"http://www.halfgaar.net/index.php?page_id=4". What the? The URL of a website is like the title, it should be elegant and descriptive, both for the user and for search engines. You shouldn't bother a user with telling them the page is PHP, ASP or whatever. "www.halfgaar.net/ferrari-f50" is what I call an elegant and descripte URL. Also, when using "multiviews" (URL's without extension) like I do, you are free to change the implementation of the page from one technology, like php, to another, like normal html, without the URL changhing. As I said, cool URL's don't change.
3. Technologies
3.1. Hosting Provider
I host my website at Nearly Free Speech. Not only are their terms of use very good, the technical quality is outstanding as well. You have SSH shell access, you can have your own MySQL process, extended CGI support and excellent technical support. And, running my website costs almost nothing for the 6000 visitors (at time of writing) I get per month. The only downside is, that they are somewhat slow sometimes.
Nearly Free Speech is not for noobs, though. They provide no help whatsoever in building your site. They provide the infrastructure, nothing more. And rightly so. I don't want to pay for other people's inadequacies (ouch, arrogant :)).
When reading the FAQ at the Nearly Free Speech website and you come across this, how can you not love them :)?
3.2. Rake
I use Rake to handle my processing pipeline. What this roughly entails, is collecting a list of pages to build the menu and a google sitemap, building the pages using XSLT and collecting all the relevant data and upload it to the hosting provider. "Make" is the classic way of doing this, but I find Rake much more convenient. And, Rakefiles are written in Ruby, which is a language I know and like pretty well.
3.3. Subversion
Not really website specific, but where would you be without version control? It doesn't need explaining, does it...?
3.4. XSLT, XHTML, HTML
I write my source documents in XHTML 1.0. My source documents are pages without the layout additions like header and footer, and without generated data such as chapter numbers. Layout data and generated data is added by an XSL transformation. The transformation sheet adds the commonly repeating data such as the menu or generates data such as a list of references for articles which require them. The generated pages are in HTML 4.01. The reason I use HTML as opposed to XHTML is because XHTML has not been adopted very well. For one, Internet Explorer doesn't understand when you serve it as an XML document, like you should. Not that I care too much about people not being able to view my site properly with Internet Explorer, but them not seeing anything is a little bit too extreme for me.
XSLT is relatively new to me, and thanks goes out to my buddy Bigsmoke for helping me out with it.
3.5. JavaScript
I use JavaScript primarly on two places: to display my Internet Explorer warning and to generate the table of contents for relevant pages. The reason I do the latter with JavaScript and not with XSLT, is because the table of contents is only there to aid the user. Bots don't need to see the table of contents of my pages; it would only create an inefficient index of my website.
3.6. jQuery
To simplify the use of JavaScript, I make use of jQuery. However, there is hardly any JavaScript on my site, so it's barely used (for now :)).
3.7. GeSHi
For syntax highlighting code, I use GeSHi. Migrations in MySQL demonstrates the use of it. The GeSHi library is called by my Rake processing pipeline, and the highlighted code is then inserted into the page.
4. Final words
I hope this gives some insight into the thoughts and ideas behind my website. It is part of my resumé and what kind of information technologist would I be with a broken website?