Adam Howitt's Blog

Sep 10
2007

Profitable Online Marketing with Google Analytics

After 9 years of working for other people I've decided to go solo and start my own consulting business.  The site is rudimentary right now as I only handed in my notice today.  As regular readers may be aware, I've evolved from an entry level programmer to a Senior Application Architect in my current role since getting my Masters in Software Engineering and developed an interest in implementing Google technologies.  In my spare time I've been fostering a worldwide smash-hit, WalkJogRun.net, with over 4,000 visitors per day and 100,000 routes worldwide.  I'm addicted to Google Analytics and have a white paper due out under my current employers, Duo Consulting, explaining how to monitor the effectiveness of your marketing campaigns and tune the content on your website.

The last three years at Duo has been a fantastic experience for me giving me the freedom to explore exciting new technologies and all under billable hours because our clients are willing to try new things.  I've load tested and refined the Chicago Park District programs website to support as many as 3,000 transactions in the first 3 minutes of registration every quarter, debugged and load tested third-party ColdFusion CMS tools and built a Cicada Emergence Google Mashup in the last year alone.  I've implemented Google Analytics for many of our clients resulting in important business changing results.  Clients have paused underperforming ad campaigns, monitored the performance of redesign work, reallocated advertising dollars and even redesigned their shopping cart checkout process on the strength of tell-tale numbers through my analysis.

The primary focus of my new business will be helping clients to install Google Analytics, establish their goals for the websites and then monitor the effectiveness of their sites and the advertising campaigns they create.  I'll help them identify areas of their sites underperforming and evaluate their ad campaigns to get the most out of every dollar.  I have colleagues who can help with content development, Duo will be my first referral as far as deeper restructuring work and I can do development work too.  

The secondary focus for my business will be to load test web applications and either help developers benchmark the sites or discover the bottlenecks and resolve them.  I see this as a huge opportunity as the web continues to grow and web applications surpass the lowly traffic expectations they were initially conceived to handle.  In some cases the trouble will be at the database level, sometimes it is the JVM, sometimes it's an innocuous ColdFusion funciton like createUUID that hit the OS behind the scenes and crash JRun every 10 concurrent visitors.  
If you have read any of my posts in the past and value the expertise you have found, or if you have read this description and think you or someone you know would value from this kind of service, please pass on the link or get in touch.  I can be reached by email at adamhowitt@gmail.com or by phone at +1 (312) 714 9229.  Thanks for reading and stay tuned for more of the same tips, tricks and commentary.

Jul 20
2006

Bad application variables and the site redesign launch

I spent most of monday ripping my hair out trying to work out why the redesign of the Chicago Park District website was crashing each server systematically.  The application is over 4 years old and the latest round of changes were to reskin the pages and add new content to the home page. After 4 hours of troubleshootizing :-) and load testing the application in a pre-production environment I found the issue.

Somehow, the application variables were being recreated with each request, in this case that included the rssHandler CFC responsible for pulling in the RSS feeds driving parts of the page.  What I spotted was that the cfapplication tag typically set in the application.cfm was not set there but in fact later on the fbx_settings.cfm file after some environment specific code had been processed (am I in dev, stage, preprod or live).  As soon as I changed the code around my load testing results pivoted sharply from 20 concurrent users killing the server to maxing out our load testing setup. 

Some of the limitations you encounter when attempting your first load test:

  1. Client machine pipe size.  Regardless of your load testing tool you are limited by the bandwidth connecting your client to the internet so you may struggle to simulate over 180 users remotely
  2. Client IP stack and socket limitations.  A standard windows XP install typically only supports about 200 users before you see socket errors.
  3. Client software.  Trial licenses of load testing software can limit the number of users you can simulate so make sure you understand the limitations of the tool.
  4. Web server pipesize.  Even if your client has a fat pipe to connect to the internet, if your webserver is on a 10 mbps switch or is on a T1 it will restrict the number of users it supports.  With 10 mbps it has to support inbound traffic, outbound traffic and if you have a database server on a separate machine (which you should) it will also have inbound and outbound requests there too.  My suggestion would be to use a good SNMP graphing tool like Cacti to monitor each port on the webserver and your infrastructure so you can easily spot the point where your webserver has maxed out the pipe.

The load testing tools need not cost a small fortune and once you have a set of load scripts for a client, it helps with regression testing to make sure your funky new piece of code on the home page hasn't degraded the performance of your application to a crawl.

Microsoft has a free tool called Web Application Stress Tool (WAST) which we have used on a occasion to generate large loads.  High end load testing tools typically have a master machine and then clients installed on multiple machines to distribute load over several IP addresses.  For WAST, simply have some of your team members work at home or log on one evening for an hour, co-ordinate the tests over IM and all push the big red button when the test leader says go.  This means 8 people can generate a load of 200x8= 1600 concurrent users. 

WAST doesn't do very well at ramping up the number of users so we have licenses for Paessler's Load Test tool at $249 per seat which allow us to simulate slightly more users and create a better ramp up profile to warm up the servers before nailing them.  It also has a better interface and, if your infrastructure supports it, the potential to generate up to 10,000 concurrent users per machine.

The other benefit of this low budget load testing approach is that your team are accessing the site from geographically diverse locations similar to the way your site will be accessed in the wild.  This introduces elements like increased request latency and also means your load balancer tool (if you have one) is more likely to distribute the load more evenly than it would coming from the same IP address or local network, depending on your configuration.

I hope this was useful since I don't see much on the CF lists in the way of practical load testing on a budget.  If anyone would like to see more on this topic let me know since I have done quite a bit over the last year while working with the Chicago Park District site.  Once per quarter we run tests to ensure that the registration application section can support 3000 registrants in under 3 minutes.

Jul 07
2006

How to Design a large AJAX Application

In the guide which you can download from the link below I'll cover the process I have developed in the course of implementing two AJAX applications as a developer for Duo Consulting  in Chicago.  This approach has made it easier for me to work with the design team, produce estimates for this type of project and communicate what is involved each step of the way to the project managers for scheduling purposes.

Download the PDF guide (105kb)

If this sounds like the type of work you enjoy and you live in Chicago or are willing to move here check out our careers page as we are looking for talented ColdFusion developers.

Feb 21
2006

Chicago Park District AJAX application launched

It has been 2 months since I started work on a prototype for the Chicago Park District to rebuild the registration application to make it lean, mean and easier to use.  It's really exciting to work at a company like Duo Consulting where I get to do this exciting stuff for a living. Did I mention we are looking for a developer to hire?  See the company website for details. 

I mentioned 2 weeks ago that the application had launched but yesterday was the tell tale Spring 2006 registration day when we saw 3000 people visit in the first 5 minutes.

The new application was developed  with AJAX to provide the search mechanism and the rest of the features on the page.  The app is load balanced across four servers currently with two more coming online before summer registration.  Upcoming posts will go in depth into what decisions were made along the way, what worked, what didn't and I will provide code samples.  I will also be posting on the Duo Consulting blog with a high level version for marketing or executive types who don't need this much detail.  For now take a look at the registration application and explore some of the great things they offer, from Dodgeball to Environmental Education.  I was able to register for an 8 week/ 16 hour Photography class for just $60!  If you have any specific questions you would like me to address during the series, please use the comments or email me directly at ahowitt at duoconsulting dot com.