Doctrine – An ORM (Object Relational Mapper) for PHP

Doctrine is an Object Relational Mapper (ORM) written for the PHP programming language. First off, for those who don’t know, an ORM is programming technique of connecting objects to the data stored in a relational database. What this provides is an object based method of modifying and interacting with the database instead of writing sql

// PHP //
Read More

Black Hat Search Engine Optimization – A guide on what not to do

Search Engine Optimization (SEO) techniques can be categorized as white hat or black hat. White hat optimization is when approved techniques are used to enhance your website’s page rank, I have covered the basics of those in a previous post in this entry am going to focus on black hat or in more forwardly: what

// SEO //
Read More

JQuery Image Navigation w/ Active State and Rollover – Part 1

Overview A very important element of any website is its navigation or menu, and a good website has a non-obtrusive but prominent one that the user knows intuitively to interact with. A common menu technique I use is having an image as the menu item with a second image as the roll-over state.  To accomplish

Search Engine Optimization (SEO) – For Beginners

Overview Search Engine Optimization (SEO) is straightforwardly the modification of your website to make it friendlier to Search Engines with the goal of increasing your page ranking from Organic Search. Unfortunately implementing SEO on a site is not as straightforward as Google and other Search Engines  utilize proprietary algorithms that utilize hundreds of variables to

// SEO //
Read More

Google Analytics API

Tired of accessing Google Analytics via their web interface to obtain your web statistics? Great news Google has released a beta version API for accessing the analytics data.  For the full documentation you can access the official google labs page. As with most APIs google does place a quota on the calls you can make

Trac Project – An Issue Tracking System

Overview An Issue Tracking System is a software application that allows for a group or individual to manage issues or tickets on a subject/project.  In relation to software development an issue tracking system allows developers to outline releases for their project with associated tickets for bug fixes and new features. In addition it can be

Anti-Pattern Fun


Anti-Patterns are a pattern of behavior or design that proves to be counterproductive or inefficient to a project.  Although Anti-Patterns exist for Software and Object-Oriented designs my favorites mostly apply to organizational and project management (personal and group behaviors). Some patterns are listed below, if these sound familiar to you and you happen to be a project manager or a team lead then you may want to do research into how to modify the group’s or your own behavior.

Analysis Paralysis

This anti-pattern is defined as spending too much time on the analysis and planning of a project that too little time is left to the actual development or completion of the project.  Basically the project sits around with meetings and research going on but no work is being done on the actual project deliverable, until the implementation time period is shortened to the point the project is delayed or even canned.

Mushroom Management

This one I think explains itself in that the management keeps the team uninformed and fed lies (crap).

Death March

A project that everyone knows is going to be a disaster, which results in stress and pressure to work nights and weekends (or depending on the situation mandatory overtime). This can be caused by a multitude of factors some prominent ones are unrealistic time-lines, lack of necessary skills for the project, and poor management.

Scape Goat

Another one that probably needs no explanation but one I have often come across the brunt of. A scape goat is the individual that gets blamed for the failings of a project regardless of the factors that caused the project to fail. Ever been blamed for something when everyone knows their were a dozen other reasons that it went wrong? Congratulations!!, you were the goat BLEAT.

Wrap Up

There are dozens of other anti-patterns and hundred more unofficial ones, a quick way to find ones are to visit Wikipedia or the Anti Patterns Catalog. Some other ones i am fond of are Feature Creep ( I prefer CreepingFeaturitis ), Design By Committee, and Group Think.

Decorator : Design Pattern

Overview Design Patterns are a reusable solutions to a commonly seen software desgin problem. The key item to remember is that these patterns are more like templates and instructions and are not reusable code. Although helpful and can solve many problems they are not usefull in every case and can hinder you from finding the

Drop Downs in Open Office Calc


When utilizing a spreadsheet you may find your self repeatedly entering the same set of  information row after row. Drop Downs is an easy way to make sure you enter the exact values you want without introducing typos, or variations.  This tutorial outlines methods for creating drop downs within Open Office Calc.

Method 1: A Static List

The first method to create a drop down is to define a Validator for a cell. What this will do is define what values are allowed in a cell. This cell can then be copied to other cells that should have the same value.

  1. Select a cell in the spreadsheet
  2. Select “Data” from the application menu
  3. Select “Validity” from the sub menu
  4. Select the “List” option from the Allow field of the Validity dialog box
  5. Enter your values in the Entries text box one value per line
  6. Click OK

Now if you select the cell you initily selected you will noticed an arrow to the right of it. Clicking on the arrow will give you a drop down to select from. If you want to restrict your input to strictly the values in your list you will have to add an alert to your validation.

  1. Select the cell that has validation
  2. Select “Data” from the application menu
  3. Select “Validity” from the sub menu
  4. Select “Error Alert” from the dialog menu tabs
  5. Check “Show error message when invalid values are entered
  6. Action input should be Stop
  7. Enter a Title for the error dialog
  8. Enter a Message for the error dialog
  9. Click “OK”

Now if you input a value into the cell that does not match a value in your list you will see a error dialogue with your title, and message.  This method is a simple way to create drop downs from unchanging lists. However if you have a list that will change over time then I would suggest method2.

Method 2: A Dynamic list

If you find yourself using the same value across multiple sheets in a file and that you are adding new values as you continue to work then this method is for you.  Method 2 is done by defining a name to a set of cells in your spreadsheet. So if you define a column as the set then as you add a new row then all drop downs that use that named set will be updated. Outlined below are the steps to defining the named set and creating the drop down.

  1. Create a list of values in a new sheet in one column 1 value per row
  2. Select the Column – (click on the letter above the column)
  3. Select “Insert” from the application menu
  4. Select “Names – define” from the sub menu
  5. Enter a name into the dialog box
  6. Click “Add”
  7. Close the Dialog box.  You have successfully created a named set
  8. Select the cell you want to create a drop down in
  9. Select “Data” from the application menu
  10. Select “Validity” from the sub menu
  11. Select “Cell Range” from the Allow Input item in the dialog
  12. Enter the name from step 5 in the “Source” input
  13. Click “OK”

You will now find that the drop down is pulling values from your values you entered in your spreadsheet.  Now if you add/edit/delete values in your list all drop downs that use that named set will be updated.  Please note that if you modify a value in your named set then any drop down cells that have that value selected will not be updated you will have to update them manually.


Drop Downs are an excellent way to consistently enter information.  If you find yourself working with financial data, maybe keeping track of your monthly finances then creating a drop down of your monthly bills can save you time and energy.

// Open Office //

Google Analytics Quick Start Guide : Part 3 – Campaign Tracking


Part 1 and Part 2 of the Quick Start Guide showed how to include Google Analytics on your website and how to track internal searches and content links. In the final chapter of the Guide we will look at how to track how users come to your site by the use of Campaign Tracking.  Please note that by default the source that the user comes to your site will be recorded this section explains how to get detailed information about ad tracking.

Understanding the Basics

Google Analytics allows you to tag your urls with 5 parameters for tracking visitors source. The 5 parameters are:

  • Source – The Campaign Source defines where the visitors are coming for these could be email newsletters, websites, etc.
  • Medium – The Campaign Medium defines by what medium they were directed to your site for example, banner ad, email, cpc (cost-per-click)
  • Name – The Campaign Name defines the name of the campaign this link is associated with for example you could be running a Summer Promotion and have various banners and emails in the campaign.
  • Term – The Campaign Term contains the search term the user used to find this link, this is most commonly used for keyword searches
  • Content – The Campaign Content defines information about the content associated with the link. For example if you have 2 different versions of a banner ad that are both part of the same campaign you could have their content set to Version A and Version B to distinguish which banner ad version the visitor clicked on.

How to create the campaign link

To help build your links Google Provides a Link Builder Tool. However to be comprehensive you could create a link manually by replacing -FIELD- with the value for the given field. Also note that you do not need to have all the fields in every link only use what you need.

Please note that the portion before the ? will be swapped with the url of where you would like the user to end up on your site.

Customizing the Campaign Link

In the case that you utilize multiple analytics packages or that you have parameters set up within your website that don’t correlate to the ones above you can modify the parameters associated with the campaign tracking. The API Calls are listed below.

  • Modify Source
    _setCampSourceKey ( “value” )
  • Modify Medium
    _setCampMediumKey ( “value” )
  • Modify Name
    _setCampSourceKey ( “value” )
  • Modify Term
    _setCampTermKey ( “value” )
  • Modify Content
    _setCampContentKey ( “value” )

These calls will have to be made prior to the_trackPageview() call. An example is below.

var pageTracker = _gat._getTracker("UA-6713355-1");

The sample url would be”Start Guide”

Understanding Output

To view information obtained from campagin tracking you will need to access the Traffic Sources Reports following the below instructions.

  1. Sign-in to Google Analytics at
  2. Select Account to View
  3. Select View Report for the Profile you want to view
  4. Select Traffic Sources from the left Navigation

Using the sub-reports you will be able to find out details about your campaign. If you select Campaigns you will be able to see how the individual campaigns are doing in relation to each other. Selecting Ad Versions will display information based on the Content parameter.  Last but certainly not last selecting All Traffic Sources will display for you  the Source/Medium combination for your site example / banner.


Be warned that google tracks query urls as seperate pages, this is in the case that your pages contain dynamic content. To filter out query parameters that do not affect content you will need to enter parameters into the Exclude URL Query Parameters in the Edit Profile page by following the below steps.

  1. Return to Analytics Settings Page
  2. Select Edit for the Account Profile
  3. Select Edit for the “Main Website profile Information” section
  4. Enter query info into the “Exclude URL Query Parameters” each parameter separated by a comma, if by example you use a custom source query parameter of “source”, and a custom keyword paramter of “keywords”. you would want to put source, keywords into this
  5. Save Changes
  6. Now pages with different above query parameters will not be saved as separate pages.


That wraps up the Google Analytics Quick Start Guide.  You should now know how to set-up and gather analytics on your site including tracking of content links, site searching, and advertising campaigns.  There are many more features available within Google Analytics so don’t hesitate to explore or simply stay tuned for additional advanced articles.

// Analytics //