A Little Project Failure, Anyone?

This is a story of a small project that went nowhere and ended by slinking off with a whimper to the land of wasted time.

I was working for a small internet marketing start-up, performing the role of website developer and search engine optimization (SEO) specialist. Our standard package involved tweaks to a client’s existing website meta-data, a series of marketing videos linked to the website, implementation of a mailing list system for subscriber capture and newsletter broadcast, and creating a linked blog site for the client to draw Google search-engine interest through regular addition of new content. The typical project was un-complicated and small in scope.

We were contacted by a local business to increase their website traffic with the goal of increasing their business volume. The client asked if some modifications could be made to the site to “punch it up a bit”. To close the deal, I agreed to some aesthetic improvements in addition to performing the typical SEO work. As part of the project, the client was given a training course in the use of their blog, and the value of this blog was explained in depth. It was shortly after this point that the project began to degrade.

As part of the website aesthetics sub-project I met with the client to discuss the particulars. I proposed a list of  modifications (background color, a simple cascading style sheet (CSS) to get away from obsolete table formatting, a change to the images in the existing slideshow) and noted the client preferences for layout and color scheme in a text document on my laptop. At meeting end, I assured the client that the changes would be done in a week and that I would schedule a meeting at that time to close the project. That scenario played out, but not as I expected.

At the next meeting I was presented with a new list of vague changes by a client that was very unsatisfied. Their complaints ran the gamut of the site “just not looking right” to disappointment in the number of “hits” the site received. Taken aback, I once again explained what our marking processes did, the time that it took for the SEO modifications to “mature”, and the large part that their contribution to their blog would make (I had been checking their blog since installation and they had not made one entry). Being one who does not like to say “No”, I reviewed their list with them, culled some things that were too impractical to work on, and promised that I would work on the rest. This had not been a good day, and I resolved to redouble my efforts to satisfy this client.

Sadly, this was not to be. On subsequent meetings and visits for video shoots I was met with more verbal change requests and comments of disappointment with the site. Clearly, this project had stopped being about SEO and had become a full-blown website design and development project, without any budget increase, defined schedule, or discernable goal. If you are shaking your head then you’ve probably been there.

Businesses exist to generate cash flow and make a profit. Any activity conducted by a business must have some tie to this rule, even those that are tangential (i.e.: the company picnic, which is part of team building and morale boosting to spur employee retention and production). In the project world, where large expenditures of time, effort, and money are consumed, it would be wise to know that the expenditures would have a return on investment (ROI). There are some simple guiding categories that can be used to determine if an ROI is in the offing:

  • Cost reduction – The elimination of hardware, software or “wetware” (people) expenses that can be attributed to the proposed project.
  • Cost avoidance – The avoided cost of additional resources for a specific job function because of an increased capacity to perform that job function in the future.
  • Increased revenue – The increased dollar amount of sales attributed to the project.
  • Retained revenue – The dollar amount of sales that will be lost if the project is not pursued.     (Monteforte, 2005)

The returns may not be all about the money. In a closing address to the PMI global congress in North America Dr. Harold Kerzner put it like this: Time and cost used to drive all decisions. Now we’re saying, ‘Wait a minute, are we providing value?’ (Miller, 2009). Kerzner suggests that the issue goes beyond purely monetary consideration to include goodwill or reputation (Miller, 2009). As the old Canon ads used to say, “Image is everything”.

The marketing project my company proposed had a defined business objective that was aligned with the business strategy: Improve the Google search-engine ranking for the client’s website, based on a variety of commonly used search keywords, to place them in the top ten of page-one search results. So, how did that work out? The project was hijacked by the client’s wish to redesign their website, a task that would do very little to help their business. Oddly enough, while pulling the alignment from the business goal made the project futile, it did not stop the project from continuing. I believe the project continues in other hands, probably with the same results.

There were plenty of mistakes made in this fiasco, not least of which was in my neglect in setting the scope of the additional website development (a lesson well learned!). But the largest error was the client’s focus on a task with minimal value to the business. Even admitting that the website is an extension of their “image”, and that a minor update in aesthetics could provide a little intangible ROI, the goal of the project we were selling was an increase in revenue through increased visibility and awareness of their business, something that they agreed to but never followed through on. In retrospect, changing the website was probably a pet project that had been simmering for some time, a sticky trap for an eager sap that became “the job that never ends”.

Learn from my unfortunate experience. When you get a client that wants a “little favor” on top of what you are offering, find out exactly what it is, clarify the scope with them (in writing is best. Just bang out the document right there on your laptop), and make sure they understand what to expect. You may even be able to negotiate the price up. Most of all, have a definite measurement for completion of the work, or you may be caught in an endless loop.

References

Miller, C. (2009, October 15). Harold Kerzner: Project Managers Must Understand Business. Retrieved January 28, 2011, from Voices on Project Management: http://blogs.pmi.org/blog/voices_on_project_management/2009/10/harold-kerzner-project-manager.html

Monteforte, J. (2005, November 15). Five Steps to Business/IT Project Alignment. Retrieved January 29, 2011, from CIO Update: http://www.cioupdate.com/budgets/article.php/3564406/Five-Steps-to-BusinessIT-Project-Alignment.htm

Power! It’s a good thing…

This has surely been written about somewhere, but I felt compelled to bring it up here: Power.

I’m talking about the power supply unit (PSU) in your computer. If you’re like me, you probably didn’t give much thought to that part of your hardware when you bought it. If you never open the case to add memory, disk drives, or extra cards, and only use USB components that have their own power source, then you are probably just fine.

But, just in case you are one of those folks who like to tweak things up a bit, I’d just like to add my two cents; check your power supply wattage.  Here’s why:

Every component you add to your computer, unless it has an external power supply, draws current from the PSU.  The PSU is rated for a certain number of watts, and the components use a certain number of watts (there are also amperage and voltage considerations, but those points are for another discussion).  The add-ins can use up a lot of watts quickly, and overloading your PSU can cause problems that may leave you wondering what is going on.  What’s more, you can permanently damage your computer!

You may think “But Jeff, I’ve got the best computer that (insert company name here) has for sale.  Certainly the PSU thingy will handle whatever I need it to do”.  Au Contraire, mon ami. Most computer manufacturers use the lowest wattage PSU they can get away with.  Why?  Cost control.  A 750 watt PSU from Newegg (great company, by the way) can cost up to $129.00.  A 300 watt PSU runs less than $30.00.  With economy of scale, it’s probably much less.  Besides, if a lower watt PSU can slowly erode your system’s innards, it won’t be long before you’ll be buying another computer; job security!  Don’t take my word for it, read your PSU tag yourself (yeah, you’ll probably have to open the case).  And, just to get an idea of how close you are to overloading, pop over to Newegg’s Power Supply Calculator and put in your system components as they are now, then re-calculate with one extra something (hard drive, video card, etc.) and see how much more power you’ll need.  The Antec site has a more technical version of the calculator.

Now, I’m not trying to make computer manufacturers out to be bad.  They have a business to run, and part of the ability to remain competitive is to contain costs.  Every penny counts, so matching PSU wattage to what is in the box is a reasonable way to save money.  And, it is likely that a considerable number of users will never add anything that overloads the PSU.  However, if you need more space for your family pictures or rapidly-expanding ITunes collection and decide to add an internal hard drive to your “Off The Shelf” computer, or you want to add a graphics card so you can watch YouTube videos on your flat-panel television, you should probably spring for a bigger PSU.  It will save you from problems later.

Updating your dev environment after a Snow Leopard upgrade

I’ve avoided upgrading to Snow Leopard for ages for a number of reasons:

  • didn’t want to spend ages re-setting up all my ports, I’ve heard SL creates a havoc
  • wanted to maintain java apps that stop working in SL, like Zend 5.5 (it may be old but still has the best debugger around)
  • wasn’t crazy about tinkering with my Cocoa dev environment

Finally I was forced to upgrade, in a panic in fact, as it’s the only way to build iOS apps for iPhone and iPad for version 4 or later.  And since the iOS 4 update broke a lot of our 3.1.3 apps, I had to get fixes out asap.

So what’s involved?  Well on the database side, forget about downloading the dmg for MySQL, it’s poorly setup.  And forget about globally upgrading your ports, the various approaches suggested here and here simply don’t work.

Unfortunately you have to take the advice on the official Macports page and uninstall everything, then selectively re-install the ports you want.  The suggestion labelled “Automatically reinstall ports” refers to a script that collapses almost instantly when it fails to find Tcl libs which certainly don’t exist in my bog standard ports setup.

So one thing you need to keep in mind is to reinstall your ports with the +universal option which specifies 32 and 64 bit architectures will be accommodated.

For a basic PHP+Apache install this page has some good suggestions but is not up to date.  And you need to go here for advice on installing MySQL, which obviously needs to be done before you install PHP.  I’ve summarise the steps required here:

Apache 2

Install apache as follows:

sudo port install apache2 +universal

Then run the following, as advised, to get it to startup automatically after reboots:

sudo port load apache2

Just installing apache installed 16 ports including all the deps.  For tweaks the config the file is here:

/opt/local/apache2/conf/httpd.conf

MySQL 5.1

To get the ball rolling with MySQL, the following:

sudo port install mysql5 +universal

Then you need to issue you a

sudo port install mysql5-server +universal

which just takes a few secs and the server is setup.

To start the server on reboot do

sudo port load mysql5-server

and if you wanted to setup a new db from scratch you could issue

sudo -u _mysql mysql_install_db5

If you want to change any of the configuration the file is here:

/opt/local/etc/mysql5/my.cnf

PHP 5.3

Now that you have your Apache and MySQL installed, it’s time to install PHP and link to them:

sudo port install php5 +apache2 +universal

To enable PHP in Apache, run

cd /opt/local/apache2/modules
/opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so

then add the PHP modules you want after:

sudo port install php5-mysql

Then, to get MySQL working with PHP you need to edit /opt/local/etc/php5/php.ini and set

mysql.default_socket, mysqli.default_socket and pdo_mysql.default_socket to /tmp/mysqld.sock

And that should do the trick!

edit /opt/local/etc/php5/php.ini and set
mysql.default_socket, mysqli.default_socket and pdo_mysql.default_socket
to /opt/local/var/run/mysql5/mysqld.sock