Components

Zend Framework 1.9.5
A PHP MVC application framework. I really like the architecture and completeness of this framework. The documentation is superb and it promotes best practices for the development of PHP web applications.

jQuery 1.3
Lightweight Javascript library. This helps relieve the headaches that usually come with writing Javascript (DOM traversal, effects, class manipulation). This is hosted at Google AJAX Libraries API.

Subversion
I maintain this site's source code on subversion. Hopefully this will help visitors learn how to get a basic site running with the Zend Framework. It also keeps me especially mindful of the code I write since it is available to the public. The subversion server is provided by Dreamhost. I also maintain a changelog of updates which are read from svn log.

OpenID

Google AJAX Libraries API
I use this to offload the loading of SWFObject and jQuery.

SWFObject

JW FLV MEDIA PLAYER
Player provided through Dreamhost.

Hosting


Their webpanel can't be beat. I also have unlimited storage and bandwidth.

Validation

Valid CSS! Valid XHTML 1.1

Software

Zend Framework provides a great model for creating a well structured and maintainable website. I leverage the MVC pattern to organize the presentation and logic of this site.
Zend Framework 1.9.5 Module Usage
Zend_Cache I use Zend_Cache to both cache the table metadata fetched by Zend_Db_Table and to do full page caching. I use a cache that does not expire and I just manually clear the cache when I want to move an update from development to production. The performance gains are significant but are still limited by the lack of a PHP bytecode cache. The current performance improvement would be most noticeable under high load.
Zend_Config I store the database credentials in an .ini file that is parsed by Zend_Config.
Zend_Controller The (C) in MVC. All URL dispatching is done through Zend_Controller.
Zend_Db The (M) in MVC. Currently only musings are stored in the database. Initially I did not want to have a database component, but after realizing that musings had more metadata then a code file could manage, I decided to use a database table. I quelled my performance worries by using Zend_Cache.
Zend_Feed I created a custom feed to serve musings in ATOM format.
Zend_Form Zend_Form is minimally used to drive the contact form.
Zend_Layout The header and footer of the site are managed with Zend_Layout. It is quite helpful to manage the entire site's layout with a single file and well positioned placeholders.
Zend_Loader Zend_Loader::registerAutoload(); is used on this site. This feature is quite welcomed since it keeps me from writing lists of require_once'es. Though, without a competent use of a PHP bytecode cache (Dreamhost does not provide PECL and the custom PHP installation does not work for me) this can impede the performance of the site.
Zend_Mail This is used to mail me messages submitted through the contact form. The usage is remarkable short yet accomplishes all I need.
Zend_OpenId
Zend_Session Zend_Session is simply used to keep track of the last header image the user has seen to prevent them from seeing the same header image multiple times in a row.
Zend_View The (V) in MVC.

Performance

Fast page load time and resilience to heavy traffic is a priority for this site. The majority of pages are statically cached in HTML. Also, javascript prevents images from loading until they are in the viewport.

Design Decisions

I tried to keep the design as simple as possible while still being more than just flat unstyled HTML (which was an initial prototype). The current style is a product of my inability to stop fidgeting with the style parameters through FireBug. The rendered CTA map in the bottom corner takes away from the fact that it is just a simple rectangle layout and adds another dimension of color and shape to the main design. The color palette was also influenced by the lines on the CTA (red, green, blue, purple, brown, orange, and pink).
Comments