Worst Company Name Ever

Good company names can be hard to find, but terrible names should be easy to avoid. I wish I was at the meeting when they came up with this one.

so unique we're uneek
Can you use it in a sentence? Could I have the language of origin?

There are so many things here that I disagree with. With spelling and layout alone:

  • The first letter is not capitalized
  • They’ve taken out a space and crammed two words together
  • The second word is capitalized when the first isn’t
  • There are on-purpose misspellings everywhere; “ee” instead of “i”, “k” instead of “que”, “f” instead of “ph”, and “x” instead of “ics”

The meaning is just as bad as the layout and spelling. Calling yourself unique doesn’t make it true. Nor does applying any of the cliches above (actually, 4 misspellings might be original).  Nothing in the name links to a memory or feeling you might have. It doesn’t create a new space in your mind. There’s nothing memorable about it except for how bad it is.

And they’re using the ® symbol? I seriously doubt they paid to register this mark. Look out uniquegraphics.com.

Surf’s Up: The Branding of Google Wave vs. Microsoft Bing

Catch a wave and you’re sitting on top of the world.

Last Thursday, tech giants Microsoft and Google each had a big announcement. The former officially announced its new search engine Bing, an announcement that the tech world knew was coming, as its latest attempt to reverse the tide of Google’s search dominance. The latter surprised its audience of developers with a deluge of information in its preview of Google Wave, an amalgam of email, IM, wiki/document editing, photo sharing, etc., all done in real-time, that according to its creators “is what email would look like if it were invented today.”

Google’s tsunami of an announcement drowned out Microsoft’s news for the day and as the swell grows its easy to forecast that the storm isn’t over. As developers join the flow and create their own applications, we will all feel the ripples for a long time. Never content to ride out a current success, Google seems ever capable of looking over the current crest for the next opportunity to catch more momentum. Bing’s release though, instead of being the watershed moment hoped for by Microsoft, may only turn out to be a drop in the bucket.

Ok, enough of that. In case you missed the point, I crammed a boat load (another one!) of metaphor into the preceding paragraphs to illustrate the branding effectiveness of Google Wave, which I think is a great name, especially when compared to Bing. A great name attaches itself like a barnacle (again!) to thoughts and feelings you already have thus making it more memorable. Wave does this fluidly (I can’t stop). Bing does not.

Take note of how a product is launched and you’ll see how confident a company is in it’s branding. Google Wave is introduced and the developers are wearing some cheap tshirts; Bing is annouced with an $80 million advertising budget. A good name “has legs.” It’s easy to talk about. A bad name has an advertising plan while a good name IS the advertising plan.

Branding aside, both products look nice. I did a few searches on Bing and the results look fine. But I’m so tied into Gmail, Google Calendar, Google Docs, etc. that I don’t think I’ll be spending much more time getting used to it. I also watched the video of the Wave presentation, and it looks like another home run for Google.

Flash Preloading Errors? Turn Off gzip.

While finishing up a project a couple months ago, I ran into a problem trying to preload a SWF. Everything worked fine in my development environment. I was throttling my bandwidth using Charles to test things, and the preloader was working as expected. But when I posted it to staging my Flash preloader was broken. My loading bar was animating backwards and my percentage was coming back as infinity.

So what gives? Well, the staging environment was serving SWFs with gzip compression and this was messing up the bytesLoaded and bytesTotal properties that my preloader SWF was trying to read from the main SWF. Different browsers reacted differently too. Some saw bytesTotal as 0 (IE), which is what gave me the infinity percentage (dividing bytesLoaded / 0 will give you Infinity), while others reported bytesTotal as the same as bytesLoaded (Firefox). Hard coding a fake bytesTotal was my temporary fix.

To check to see how your server is sending your files, you can use Charles to inspect your web traffic. Here’s the one that was breaking because of gzip compression:

A SWF served with gzip compression will cause preloading errors.
A SWF served with gzip compression will cause preloading errors.

And here’s what it should look like:

A SWF correctly served without gzip compression.
A SWF correctly served without gzip compression.

I originally thought the issue was with the SWF being served with the wrong MIME type of “text/plain” but changing that didn’t fix my problems. The moral of the story is to check these server settings before wasting a Saturday (Gasp? Working on a weekend?) trying different versions of a Flash preloader and waiting for staging to build the site after each try.

Easily Test & View Alternative Content while Using SWFObject

SWFObject is great. I’ve been using it to embed Flash content in my pages since the IE / Eolas “click to activate” thing when it was still called FlashObject.

But SWFObject is missing a feature. It’s not easy enough to test your non-Flash alternative content. You can bump up the required version number to one that doesn’t exist yet, which is a good way to make sure your expressInstall.swf is working. Or you can follow the directions in their FAQ and disable JavaScript or the Flash Player (17. How to disable Flash Player or JavaScript, e.g. to test alternative content?).

Those solutions take a bit more effort than should be required. What if you want to show a client at another location the alternative content? I’d rather send them a link than walk them through disabling/enabling their JavaScript. And what if you want to take it beyond just testing, and give your users in a live environment the option to view the non-Flash content?

Here’s what I do. The SWFObject API includes a useful method to get query string parameters, ingeniously called getQueryParamValue(), which can be used to grab query string information and then pass it into the SWF via the flashvars array. In this example, I use the method to determine whether or not to embed the SWF in the first place.

Your standard SWFObject embed code will look something like this:

<script type="text/javascript">
	var flashvars = {};
	var params = {};
	var attributes = {};
	attributes.id = "flashContent";
	swfobject.embedSWF("flashContent.swf", "alternativeContent", "100%", "100%", "9.0.28", "expressInstall.swf", flashvars, params, attributes);
</script>

Here’s my version with a simple if statement to determine if the non-Flash content should be shown.

<script type="text/javascript">
	var flashvars = {};
	var params = {};
	var attributes = {};
	attributes.id = "flashContent";
	if (swfobject.getQueryParamValue("viewAlt") == "true") {
		// This lets us test the alternative content. If "viewAlt" is true in the query string, we don't allow SWFObject to replace the alternativeContent div with the Flash content.
	}else{
		swfobject.embedSWF("flashContent.swf", "alternativeContent", "100%", "100%", "9.0.28", "expressInstall.swf", flashvars, params, attributes);
	}
</script>

So all it takes to view and test the alternative content is to throw ?viewAlt=true at the end of your URL. This will stop SWFObject from ever trying to embed your SWF.

Here is an example of this process in action.

And here is the source.

Forcing Vertical Scrollbar Gutter to Show to Prevent Page Shift while Using swffit

Update: This fix is no longer necessary. When explaining it to a coworker, we discovered a new version of swffit with a new method called showScrollV() that does the same thing.

A common problem with centered web site layouts is what’s been dubbed “page shift.” This happens as users move among pages that are too short for a vertical scrollbar and those that are long enough to require them, or when a page has expanding and collapsing content which forces the scrollbar to appear and disappear as the content is manipulated. When the scrollbar’s state changes, the page recenters itself so the content jumps back and forth horizontally.

Page shift is especially distracting on a page where the content resizes without refreshing the page (like in Flash) because you can see everything move. When you’re clicking through different pages, it’s not as big a deal because a new page wipes out items for a split second before the shift occurs. Nonetheless, it can be distracting and there is a CSS fix for it.

html {
overflow-y: scroll;
}

This tells the browser that we’ll be scrolling things vertically, so keep the y scrollbar ready (IE always keeps the scrollbar gutter there, but it’s an issue on other browsers).

When it comes to Flash sites, using the browser’s built in scrollbars is a great technique. Some people like to create their own scrollbars in Flash, but that takes time and things get a bit more complicated when you want to get the scroll wheel working. Why not use the built in version, whose usability is already established, instead of reinventing the (scroll – heh) wheel?

Luckily we have a great script, swffit, that can help us use our browsers’ scrollbars by allowing us to change our SWF’s height on demand. Unfortunately, swffit overwrites the CSS that fixes the page shift problem, so I had to adjust the script a touch. In swffit.js, search for

html.style.overflow="auto";

and change it to

html.style.overflowX="auto";
html.style.overflowY="scroll";

and you’ll be able to use swffit without seeing any page shift.

Some Oldies but Goodies

I’m bringing some old projects from former portfolios into this site and putting them in the blog with historically accurate (kind of) post dates. I wasn’t blogging back in ’02, but I’m posting these items back there anyway.

Here’s what I’ve added: