Dan's Website

Ramblings of a Disaffected Geek

 
Home > Portfolio
Portfolio
Here's a sample of some projects that I've worked on over the past few years.



DirectoryAustralia.com

Started: February 2006

Completed: Several stages, the last one December 2006

Purpose: A b2b business directory. The central portal is hosted at www.directoryaustralia.com, with about 3500 industry-specific portals hosted on generic domains from www.accountantsaustralia.com to www.zoosaustralia.com. 

The concept behind DA is that businesses can list for free, or pay for premium features such as being promoted to the top of search results, having a graphic banner "hotspot" ad displayed in the search results, or being featured on the portal's front page.  The country is broken down into about 80 regions and further into local areas comprised of neighboring suburbs, which gives a way for people to search for businesses within, say, the Northern Rivers region in NSW rather than trying to specify a number of km from a given postcode or town.

An accountant would list their business on www.accountantsaustralia.com, which gets indexed by search engines alongside other accountants. The portal also contains news and other information related to accountants, which makes it a one stop shop for anything relating to to the industry.  By listing in this portal, the business is also searchable from the global search facility at www.directoryaustralia.com.

The site also has a sophisticated administrative management system with ACL allowing multiple levels of administrators access to specific admin features. This was used by outbound call-center operators to sign clients up to the premium system features, and for back-end admins to approve new listings submitted via the web.  A simple reporting system is also available to approved admins.

Platform: Multiple Solaris 10 hosts running load balanced Apache with PHP5, MySQL 5.0 and Memcache.

 

Tasks: 

  • Acquisition and configuration of hardware, operating system, database and web platform.
  • Database and web software design from ground up
  • Coding of directory software
  • Data cleansing
  • Web design
  • Building of payment gateway
  • Maintenance and support

Implementation Notes: 

A significant number (hundreds of thousands) of business listings had been already collected and regional zones already defined.  Using this data, I built the site literally from the ground up.

Platform-wise, I handled everything from plugging drives and RAM into servers (the company was on a tight budget and had a few reasonable older Sun servers already available from a previous project which simply needed new drives and more memory), to installation of the servers, switches, firewalls, routers and load balancers at the datacentre. Then followed configuration of all hardware and installation of Solaris 10 (these old Sparc machines weren't going to run Linux comfortably) and compilation of custom MySQL, Apache and PHP builds.  A previously acquired HP Proliant made an excellent CentOS database server.

Some initial work on the software had already been started by a part time contractor (whom I'd previously worked with) a short while before I came on board and we agreed on PHP as the platform of choice.  I refactored the existing code into PHP5-style classes and got to work building the site around it.  Pseudo MVC modeling was done using Smarty for templating, a thin layer of PHP for the controller and a large set of objects encapsulating business logic and handling database operations.

After the initial deployment of the project, adjusting of database queries and indexing, I addressed some scalability issues by using multiple levels of caching - APC gave a significant boost by saving on pre-execution compilation time.  Memcache was a real boon, initially for caching some database queries and eventually whole chunks of generated HTML.  Client and webserver side caching (playing with Apache Expires and MCache directives) all gave further improvements. Finally, mod_rewrite magic was used to create SEF URLs.

Some use of Xajax library on the administration system provided a little AJAX goodness to speed the system up for call centre staff.

Due to budgetary constraints, I had to do the web design myself - something I've never claimed to be expert in.  The layout there is not wonderful, but the feedback has been that it is certainly usable and unobtrusive for user experience.

For a period I worked with an overseas-based developer on the system, so developed a simple branching and merging and release strategy for our SVN code repository to manage development.  Bugs were tracked using Mantis.

 

 
Cars.com.au

Started: January 2008

Completed: May 2008

Purpose: An online cars classifieds site. The site is hosted at www.cars.com.au.

Tasks:

  • Acquisition and configuration of hardware, operating system, database and web platform, CMS and classified engine software.
  • Integration of software packages by rewriting core classified engine and CMS modules
  • Database performance tuning
  • Sourcing of external data suppliers
  • Development of external feed input system, to allow integration with suppliers' database feeds
  • Data cleansing
  • Building of payment gateway
  • Maintenance and support

Implementation Notes:

Cars was developed during my last few months at Einfo, using an open source PHP classifieds engine, which I modified rather heavily to integrate with an open source content management system. The off the shelf CMS was necessary to provide ease of use to content producers already familiar with the system.

The fact that both software packages were PHP based gave me a head start. It was just a matter of untangling the rather messy codebase of the classifieds engine and tapping key entry points to integrate with the reasonably well designed MVC framework of the CMS.

DB Backend is MySQL on Linux, front end PHP 5.2 on Solaris 10. Keeping this consistent with the infrastructure already rolled out for DirectoryAustralia.com allowed us to move the sites seemlessly between servers as load dictated.

 
Blue Dog Training - WA Blue Card

Started: July 2007

Completed: November 2007

Purpose: Online certification site for construction tradesmen in Western Australia. The site is hosted at http://learn.bluedogtraining.com.au/course/wa.

Tasks:

  • Extension of existing framework to support new course types
  • Development of automated bluecard printing system
  • Support and maintenance

Implementation Notes:

The site was built during my brief stint at Blue Dog Training, an online training firm based in Brisbane. The WA Blue Card site was based on Blue Dog's existing QLD Blue Card site. The original site had been well constructed using the nascent Zend Framework (which at the time, had many quirks), but the underlying framework needed to be generalised further in order to support the new course and possible future courses.

Over the course of a couple of months, the modifications were made, and the site went live in late 2007. This was a real education into the concepts of MVC design and how many framework implementations are still striving to achieve optimal separation of the layers.

 
Yahoo Europe - Personals Billing

Started: January 2003

Completed: October 2004

Purpose: Billing system for a Personals site for European customers, hosted at http://personals.yahoo.co.uk.

Tasks:

  • Development of cross-site billing infrastructure
  • Design and maintenance of databases
  • Internationalization of billing site contents

Implementation Notes:

At the time, this was one of Yahoo's first PHP endeavours (previous sites had usually been Perl based). Working as part of a team of 4, we were tasked with building a billing system that could be used in Europe to support premium services for sites in a number of languages. While there was MySQL work involved (we were using good ol' 3.23.56 - a stable release with rather basic functionality), the sites had to be robust enough to support customer transactions even when the database servers were unavailable. This was accomplished with some C-based PHP modules talking to a proprietary transaction queueing system.

The project covered all sorts of work from i18n support to PHP module development and DB tuning. At the time, it was also used for charging for extra large web mailboxes at uk.yahoo.com / de.yahoo.com / fr.yahoo.com, until GMail came along and nuked that market.

I had a really great time with a fantastic team working on this project. We've all gone our separate ways to different parts of the world since then, but I found this work invaluable for gaining experience in distributed development and n-tier systems.