About this site's technology

I have built this site using PHP, an open source web development language. The blog portion of the site utilizes Serendipity, an open source blogging package built in PHP. The remainder of the site has been written using Zend Framework, a project sponsored by my employer, Zend, and for which I am a core contributor. It uses the Model-View-Controller (MVC) pattern:

  • Model: This is the data and the 'business logic' for accessing and manipulating it. The way I interpret this and practice it is that the Model is used to access a data source, and includes all the business logic related to that access.
  • View: This is how data returned from the model is displayed. In web development, this is usually accomplished via templates and stylesheets, with placeholders for the data that will fill them in. A View may contain logic elements that determine where and when data will be displayed within the page, including looping elements for repeated data blocks.
  • Controller: The Controller takes user input, filters it, and determines what calls need to be made to the Model. It then takes the data returned by the calls, acts on it if necessary, and passes output to the View. I like to think of this as an old-time phone operator.

I've been using MVC for many years now, including porting perl's CGI::Application to PHP (Cgiapp), and acting as lead developer on Zend's MVC layer.

This website is actually fairly simple; I have routes registered for each static page, and a controller that then takes the static page and displays the template. I also have an integration controller that runs Serendipity through my framework front controller; this allows me to do things such as require a valid login for certain pages in the blog.

All this is running on a standard LAMP system. I am using PHP5 with the Apache web server, MySQL 4.1, and running it all on a Gentoo Linux machine running a 2.6 kernel.