Accurate Cross Browser Testing With

The worst job for any web developer is testing your creations across browsers. Until now, there has been no good way to test a website in various versions of IE, Firefox, Chrome, and Opera. When installing an updated version of each of these browsers your older version goes away. For many developers, this means you have to run special software packages that allow you to run various browser versions in conjunction or in the case of Mac users like myself you needed to keep an old PC around or run a version of Windows on your Mac. (Blah Yuck) To make matters worse, the addition of IE9 compounded this problem because it wouldn’t run on older versions of Windows often required to run IE6.

Thankfully, after years of waiting there is finally a viable solution to this problem, enter BrowserStack is a tool that lets you load up a browser complete with debugging tools running natively on a computer somewhere in the cloud. Unlike some of the screenshot services that have been around for awhile, BrowserStack allows you to actually interact with the website through the browser providing full Javascript testing abilities. You can do all of this directly from your Mac or PC development computer through a web-based interface.

I have been waiting for a tool like this for quite some time. I have been using BrowserStack for a couple weeks and have been very satisfied. The service is still currently in beta but you can request to be included in the beta here: The Service costs $19.99 a month and is well worth the money for me.

Cool Photos from West Medical Lake

I snapped a couple of cool photos last Sunday morning at West Medical Lake. West Medical is just a couple miles from my house and a great fishing hole. Enjoy.

Remove Unnecessary Querystring From .htaccess 301 Permanent Redirects

Today I ran into an odd problem while trying to create permanent redirects on a website to help with search engine optimization. The website I was working on used a fairly standard URL rewrite rule that rewrite all portions of the URL to a querystring and then the application handled the querystring internally. This methodology is common in many CMS systems and also in the popular Codeigniter framework. When I attempted to use standard .htaccess 301 permanent redirects they would add an unexpected querystring to the URL containing the previous URL that we were rewriting.

To illustrate the problem. I was attempting to rewrite /old-page to and when the redirection occurred I would get something along the address of

I couldn’t figure out a solution for the problem using standard redirects such as:

Redirect 301 /old-url

I tried different variations and position and nothing seemed to work. After some experimentation I decided to approach the problem from another direction. Instead I created a RewriteRule to handle the rewriting and then included two designations [L] indicating this is the final rule and to tell apache to stop looking for additional rules if this condition is met and then I specified [R=301] indicating this is 301 redirect. (CAUTION: Do not just use [R] as this is recorded as 302 redirect which is not a preferred redirect type for SEO)

The final redirect looks like this in .htaccess and seems to work as expected.

RewriteRule ^old-url?/?$ [L,R=301]

There are likely other ways to approach this problem but this one is working great for me. Let me know if you have any problems implementing this methodology into your .htaccess file.

How to Detect a User’s Language with PHP

I was recently looking for a simple way to automatically detect a user’s language using PHP. There are a number of ways this could be accomplished but after some thought I realized the easiest is to get that information from the users web browser. Users are most likely to browse the web in a language they are comfortable with and your browser will send your accepted language in the HTTP headers when loading a page. After some quick research we realized this is indeed correct and the data is contained within the $_SERVER object, it just happened to be one of the variables we hadn’t used previously.

I put together a quick snippet below that extracts the two digit language code and stores it as a variable. You could use this to load different content, to redirect to another version of the website using the proper language, or to sculpt the user experience.

    $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

Start MySQL Auto-Increment at a Number Other Than 1

By default, MySQL will start auto incrementing from 1 with each new entry. This means the first entry in a database is 1, the second is 2, and so on. Occasionally, it may be helpful to start this number at another value. It could be for sequential product numbers, better disguised customer ID numbers, or any number of other programmatic reasons. Many regular MySQL users don’t realize it but MySQL has a simple method of choosing the auto increment starting value for a given table. You can adjust the number to whatever you would like by executing the following SQL:


(Where 1000 is the number you would like to start the auto incrementing at)

Easily Find the Latest Versions of Javascript Libraries at Google Code

A couple days ago Dustin brought a great site to my attention. It is called and is located at:

Using this site, a developer can easily locate and copy the latest stable version of their favorite library. This can be a real time saver in searching out the various library links. It would be really nice if they also had associated elements like the sets of pre-constructed stylesheets for jQuery UI. I keep a list here: but being able to get all of that information in one location would be fantastic.

Right now supports jQuery, jQuery UI, Chrome Frame, SwfObject, MooTools,m Prototype, YUI, Dojo, ExtJS, and All you have to do is find your library, click on the copy button, and you have on your clipboard all of the code required to embed the library.

The Grove in Cheney WA – The Downside to Facebook Fan Pages for Businesses

I was browsing Facebook today and a post from my little sister Kelsey caught my attention. Kelsey is currently a student at Eastern Washington University. She lives off campus at a privately owned apartment complex called the Grove. The Grove is a new complex designed specifically for students. It includes a number amenities like tanning, swimming, basketball, and shared recreational room. The post from Kelsey was a notification that she “likes” a fan paged named “Not living at the Grove next year.” Upon further inspection I realized that the group had at least count 323 people in agreement with my sister. Most of whom were or are residents of the complex. This caught my attention and I decided to dig deeper.

Now, I can’t say much for or against the Grove because I have never lived there personally. I know both my sisters have lived there and neither enjoyed the experience. I did assist them when they moved in and I can say that their apartment was completely filthy, the electricity didn’t work in one bathroom, the mattress had a huge brown stain that went clear through, the door to that bathroom didn’t open all the way because it hit the toilet, and there were insects breeding in the closet. However, I also must say the furniture was brand new, all the appliances worked, and when they called maintenance someone was there in less then 30 minutes on move in Saturday to help fix the various electrical problems. Overall, in my opinion, even with the various negatives it was far superior to the nasty old houses most of my friends lived in while I was attending EWU.

Anyway, enough background, now to my point. After discovering so many students disliked the grove I did a search to see if I could find a Facebook page for Grove residents sponsored by management. I was unable to find an official page but I was able to find a page called, “We ♥ The Grove in Cheney, WA.” This group only had 36 fans at the time of writing this. After doing some additional research the only positive information about The Grove I could find was from their poorly designed website that contained a wealth of multi-cultural photos and very little relevant information. Aside from what I found on Facebook I also found a number of negative Twitter posts and reviews on various review websites none of which had an official response from The Grove management.

Making an impression is important. Both of my sisters were very excited about living in The Grove last Spring when they signed their lease and now as the end of the year is coming they couldn’t be more excited about leaving. The Grove could’ve created evangelists and multi-year tenants but after a number of poor experiences they have created enemies, both of whom are willing to go out of their way from discouraging their friends from moving there next year. When your primary target audience is a tightly knit group like college students it is incredibly important to maintain a good reputation because word spreads very quickly about any problems that occur. Social media outlets like Facebook magnify this problem to an entirely new level. What does it say to a prospective tenant when the group against living somewhere has 900% more fans than the group supporting it? I think some reputation management would be a fantastic idea for the folks at the Grove. The Grove could be actively monitoring the Facebook, Twitter, and review websites and offering solutions to people that post about problems but instead they are nowhere to be found online. I suppose this is fitting, at least the online experience mirrors the real-life experience students are reporting. Every business should be monitoring their reputation online. There may not be much activity on a daily or weekly basis but if there is a negative review it is important to resolve that issue as soon as possible before it evolves into a social war like one The Grove is about to be fighting in Cheney.

CSS3 Support for Internet Explorer 6, 7, and 8

Internet Explorer, the browser with the largest percentage of legacy users tends to lag far behind the other popular browsers in adopting new standards. This is like a double roundhouse kick to a web developer. There are a number of great JavaScript tools out there that help Internet Explorer 6 and even 7, and 8 peform like a modern standards compliant browser.

Now thanks to a script you can get CSS3 support in the latest 3 versions of Internet Explorer with very little work. I tested it out and it worked great for me, however, there are a few known bugs you should review before implementing it.

You can get the script here:

2010 Yakima Advertising Federation Chinook Awards

Zipline Interactive has been a participating member in Spokane Advertising Federation since we opened shop in 2005. Our team members have attended a number of programs, helped with events, sat on the SAF board, and even helped develop and host the SAF website. 

We believe the SAF is an important resource for Spokane creatives. The SAF helps to educate, inspire, and motivate our creative community. This in turns raises the image of Spokane and all regional companies that rely on the SAF members for their marketing and advertising needs.

This year we had the privilege of hosting the judging for the Yakima Advertising Federation at our office on Madison Street here in Spokane. It was a great event. There were a number of good entries from both students and professionals.

The judges for the event where:

Kevin Armstrong – Addison/Kimberly

Jesse Pierpoint – Pierpoint Design & Branding

Rick Hosmer – Klündt | Hosmer
Ryan Stemkoski – Zipline Interactive

Judging took several grueling hours but in the end kings were crowned. We won’t share the winners now but hopefully once they are announced we can share some of this great work with you.

Google Analytics Not Tracking Data on Your Website? Could be a JavaScript Error.

This fix wont solve all Google Analytics tracking problems but it does address a specific issue. Outside of this problem, there are many other issues including disabled cookies, disabled JavaScript etc. that cannot be helped or fixed. If you have an existing website and Google Analytics is installed properly but is not collecting data please read on.

I recently talked to a new customer with an existing website. Her website was working great and was bringing in lots of business, however, no matter what she did she could not get Google Analytics to work on her website. The website was well designed, and modern, the Google Analytics tracking code was installed properly and the code did not contain any errors. I was perplexed so I started digging deeper.

The Solution:

After reviewing her code and analyzing her website I started reviewing the source code to see if some of the other JavaScript was somehow interfering with the Google Analytics. This was not the problem, but the problem was directly related to JavaScript. Some of the JavaScript code copy and pasted from another source contained a small syntax error. This syntax error occurred early in the page and was preventing the rest of the on page JavaScript including Google Analytics from being executed. The error, didn’t however effect the user experience and had gone unnoticed by her previous development company. Once we repaired the issue Google Analytics begin to function as expected.

Note: If you think this may be your problem I would suggest installing the web developer toolbar for Firefox. It has a fantastic error and warning notification system that will help you find and debug these types of errors.