Sunday, May 11, 2008


Mailing List:


Tags


SEO - For Flash Freaks

February 24th, 2008 by retsoced

Roadkill on the Information Super Highway - photo by evilclown on istockphoto.comI've talked about this before, and there is plenty of information out there meandering along the Super Highway - but a lot of people still seem to really miss the boat on this. Maybe it's as simple as they feel they don't have time, or that it won't really matter anyway; either case though, that's the wrong attitude to have. If you have a website or maybe more importantly if you are building a website for a company - then that website needs to be able to be indexed by the spiders that index for all of the major search engines. For my purposes today, I'm not going to focus on any; rather just touch on what you should do to get your hard work noticed by these hard working agents of search.

With more than 100 million websites called the web their home, you don't want to get hit by your competitors' truck pulling out of the driveway - so you have to do it right from the start. One way to get more information about your Flash site is to place some text within the first frame specifically for this. Google and Yahoo(I think this is the case with Yahoo as well) are able to scan SWF files, and back when Macromedia still existed - they created a tool specifically for checking the results of this, the Flash Search Engine SDK. Take a look at a previous post here for more info.

Getting Started

Let's get right into it and start off with getting the Flash content into the page. You have to start with placement of the SWF into the page, I use SWFObject exclusively. Adobe has some code they use to do this as well, but SWFObject is much cleaner, and I have used for a few years now and there is no real reason to switch. So now a simple starting page could look like this:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>most awesome site on the planet</title>
        <meta name="description" content="" />
        <meta name="keywords" content="" />
        <meta name="robots" content="index,follow" />
          <link rel="stylesheet" type="text/css" href="/includes/css/screen.css"  _fcksavedurl=""/includes/css/screen.css" " _fcksavedurl=""/includes/css/screen.css" " />
        <link rel="Shortcut Icon" type="image/x-icon" href="favicon.ico" />
        <script language="JavaScript" src="/includes/javaScript/swfobject.js" type="text/javascript"></script>
    </head>
    <body>
        <center>
            <div id="mainFlashUI"></div>
        </center>
        <script type="text/javascript">
            // <![CDATA[
               
                var so = new SWFObject("/media/UI/mainLoader.swf", "microSite", "750", "625", "8", "#FFFFFF");
                so.addParam("quality", "high");
                so.addParam("wmode", "transparent");
                so.addParam("scale", "noscale");
                so.write("mainFlashUI");
                   
            // ]]>
        </script>
        <!-- Google Analytics Code -->
        <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
        <script type="text/javascript"> _uacct = "UA-664899-42"; urchinTracker();</script>
    </body>
</html>

What you want to focus on right now is the mainFlashUI div. This is where you will place all of the information you would like to have indexed in regards to the entry point of your site. The other thing to consider here, is this isn't a place to put just a note about the user needing Flash, this is where you place your alternate content so folks who don't have Flash, or choose to turn it off or have a disability can get the same or similar information that is conveyed within the Flash. This is really the big issue; this should be designed with all of those things in mind, and not just SEO. The text and links within the mainFlashUI div will get crawled before any Flash is loaded over that div, and that is what will get attached to the results, this way you don't wind up with something like this:

LOADING PAGE Contact Contact Contact Contact COMPANY NAME Your nice company slogan

When creating this content, be standards oriented and keep the overall code to content very low, and validate your work. This will help with the indexing as well since the crawlers will be able to get to the content easier.

There are some other things to consider here too in regards to SEO; keep the description and keywords precise and relevant to the content being displayed. If you are so inclined, work through some JavaScript to get these values to change as the various parts of the site is loaded, even changing the page title to reflect the current section the user is navigating through.

More Options

When creating the Flash site, it is always a good idea to create multiple sections then load those sections into the main UI of the site. This will keep the initial bandwidth load more tolerable, as well as possibly getting more information to the crawler parsing your Flash site. I don't know if Google or Yahoo actually follow a loadMovie, but it wouldn't surprise if they can.

If the site you are creating is large, you might want to consider using SWFAddress to allow for deep linking to the various sections within your Flash site. These links could then be added directly to the initial page content (or site map) allowing for more links to be crawled and indexed. Also adding some custom JavaScript to your file loading to change the Meta tag information, page title and alternate content could also greatly increase how well your site is indexed. Flash is pretty efficient with JavaScript and you could use the External API built into the last two versions (8 and CS3) and do some pretty fancy AFLAX interactions.....

The Work

The bulk of the work will really reside in how well you design and develop your alternate content, and I know a lot of folks are really opposed to creating an alternate site once your Flash masterpiece has been completed. But it's not really about you is it? I try and say this with the least amount of sarcasm as possible, since you're most likely not putting up a website so you can be the only one to look at it. Take the time to layout out the page as semantically as possible, separating content from markup and creating a nice space that will allow the maximum number of folks to view your site. There are lots of references available for CSS and Standards Oriented Design: use them wisely.

In the end, you will have a site that is quite friendly to being indexed, and your results will reflect your hard work, and the effort put into making the site easy for crawlers to access.

Posted in Development, flashFoo | No Comments »

Web banners are cool again with PointRoll

February 21st, 2008 by retsoced

PointRollI know; you're like whatever! Banners aren't cool. They suck. They're annoying, the pop-up, pop-under, flash, blink, give you adware, and track how many times you change your boxers in a week... They're just evil right? That's why someone made those Flash blocking plug-ins for Firefox isn't it?

Well, you're all wrong. I know everyone has seen and clicked on a PointRoll served banner at some point, and it's equally as likely that you liked it. They serve up some of the hottest banner son the web, and rightly so. These guys are the sultans of web banners and they have the technology and knowledgeable staff to pack a wallop.

I just spent a good portion of my late morning hangin' with a couple of dudes from PointRoll, and what I learned simply blew me away. I thought I knew a bit about what they did, how they did it - but I was flat out wrong. They host all your banners through a partnership with Akamai, so all you have to do is drop a block of code in your placement page - and you're off and running. They can serve up Flash, and Rich media with style. I was a bit skeptical going into the meeting since I have made some Rich Media banners and know how big they can be, even with spending a lot of time optimizing - and that to me was a huge detractor from using them. A website shouldn't be hindered from fully loading by the likes of a banner; the banners should be the last and lightest thing to pop into the viewport of your browser. With PointRoll is basically is. Through creative and intelligent use of multiple file requests, they can keep the initial load to around 30k, then load the remaining Rich Media content as it is requested, rather than loading up the browser up front. The video is also sorted and served to the client based on a set of criteria including what their available bandwidth is, so they get the proper user experience based on what the capabilities are.

One of the coolest banners I saw today (unfortunately I can't find it online) was one they did with Ford for the Fusion. The banner guessed your zip code, then dropped it into a submit box where you could edit it, or just fire it off to have results returned to how many cars with details about each car were in stock at local dealerships; all within the banner interface - you never had to leave it to get the data. That is an excellent use of a banner, and goes light years beyond the early 90's style banners plastering websites world wide. I know I'm getting all worked up about banners, but these guys are a quantum leap beyond the garbage you usually get served up, and regardless of what you think about banners, the intelligent, user-centric design and implementation behind their strategy is a breath of fresh air from my inbox full of spam, and the pop-under banners I get daily.

I'm not a total fanboy though. Their BadBoy banners; you know the ones - the ones that float around the frickin' screen.... I really dislike those banners - in fact I would be happy enough if they never showed up anywhere. Sorry guys, but the BadBoy gots to go! I especially dislike the ones where the close button is every other location but where it should be, It seems like PointRoll places the close box/text in the upper right corner pretty routinely though, so it is probably some of the other guys doing that.

Check out their creative showcase and see for yourself. Here are a couple of my favorites:

Posted in Design, Development, flashFoo | 2 Comments »

Tracking Flash stats with Google Analytics

February 17th, 2008 by retsoced

One of the first things deployed after developing a new website is some sort of stats tracking. The insights that can be gained from analyzing the performance and user metrics can be invaluable - so it would be a shame to drop a load of cash on a swankin' Flash site to have the only stat you get back is how many times the index page gets stomped by the users.

If you use Google Analytics then it's easy to the point of it being a crime if you don't use it to some extent.

Once you have your site setup within the Analytics interface, and dropped your Google prescribed code in your page, you will need to create a function within your Flash site to fire off events to the JavaScript function to track as much or as little as you need. The function you want to concern yourself with is this one:

urchinTracker();

That's what will create your entries with the Analytics reporting interface. Now create a simple Flash Function to do the work.

function trackSectionData(sectionArg,subSection):Void{
    var dataToTrack:String = this.titlesArray[sectionArg];    
    if (subSection == 0){
        getURL("javascript:urchinTracker(" + dataToTrack + ");");
    } else {
        if (sectionArg == 1){
            dataToTrack += "/" + this.sectionTitles1[subSection];
        } else If (sectionArg == 2){
            dataToTrack += "/" + this.sectionTitles1[subSection];
        }
    getURL("javascript:urchinTracker(" + dataToTrack + ");");
    }
}

For the titlesArray I created an Array of the major sections (ones that were listed in the top level of the main navigation) so I could access them at the time the buttons were clicked by the user. There are also section titles, which were broken out into separate arrays, by each section. By leaving the first (or zero) entry blank for all of the arrays, it is easy to determine whether or not the user has clicked on a main level  menu button, or a sections sub navigation menu. It all looked like this:

var titlesArray:Array = new Array("","Home", "Portfolio", "News and Events", "FAQs", "About", "Contact");
var sectionTitles1:Array = new Array("","name","name");
var sectionTitles2:Array = new Array("","name","name");

This allows 2 variables to be passed, the main section (sectionArg), and the subsection (subSection).Then call the trackSectionData function:

this.trackSectionData(1,3);

The above function call was placed within another function which loaded external SWF files as each section was launched, but it could just as easily be placed within an on(release) on the button itself. This is pretty basic I know, but it doesn't need to be super complicated to work.

Another option would be to utilize the External API that was introduced in Flash 8. I haven't used it enough to make any statement as to which way is faster, but the code would be similar:

import flash.external.ExternalInterface;
send_button.addEventListener("click", clickListener);
function clickListener(eventObj:Object):Void {   
    var dataToTrack:String = this.titlesArray[sectionArg];    
    if (subSection == 0){   
        ExternalInterface.call("urchinTracker", dataToTrack);
    } else {
        if (sectionArg == 1){
            dataToTrack += "/" + this.sectionTitles1[subSection];
        } else If (sectionArg == 2){
            dataToTrack += "/" + this.sectionTitles1[subSection];
        }
    ExternalInterface.call("urchinTracker", dataToTrack); 
    }

This is enough to get you armed and ready to track all of the information you want from your users.

As a side note, you used to be able to track Flash through Mint as well, but the Flash tracking Pepper was developed for Mint 1, and is rumored to not work under the newer release. I used it a couple of times back in the day, and it worked very well - so there is hope for those who use Mint to get this sort of functionality back into their toolset - you may just have to develop your own Pepper.

Posted in Development, flashFoo | 2 Comments »

Standards, compliance and what about Flash?

February 7th, 2008 by retsoced

FlashIt seems there is a never-ending stream of chatter about proper CSS design and implementation; the use of Standards, as it is most commonly thought of and referred to. This is usually followed by very predictable banter about how you have to make concessions for browsers that aren't compliant (almost always an opportunity to bash Microsoft), then maybe some examples of hacks and fixes to get around these issues. None of it really addresses the core issues, and no one, save a very few folks, really want to try and do anything about it or recognize that there is a problem, even among the companies who proclaim standard compliance. When there are what.... 8 popular browsers and their various available versions, how exactly do you get them all to agree? You can't. There are specifications to follow, but everything is open to interpretation and/or coding errors. So you get variations in layout in every browser and have to figure how to accommodate the new versions when they are released, because invariably the new version breaks your layout where the old one worked just fine. The solution is right in front of our noses though. Give up trying.

Flash has been around for 12 years now and is simply the most ubiquitous web platform on the planet. So why utilize Flash to create dynamic, content driven websites rather than spend weeks perfecting a finicky CSS layout that the users won't care about or notice? It's still trendy to implement AJAX solutions to look like you're Web 2.0, and to be award oriented to get selected purely on the basis that you have this amazing tableless design and CSS website. In many cases both of these motivations remove the user from the equation driven by developer based decisions on how to build the coolest website to get one more Webby. Awards do have their place, but not at the detriment of the community for which the site or application was built to service. The biggest roadblocks for developers, in regards to developing with Flash, are community driven misconceptions fueled by regurgitations of false statements and uneducated opinions. Here are some of the biggest misconceptions:

  • Flash sites are too heavy and take too long to download
  • Flash does not support standards in accessibility
  • Flash sites are not indexable by search engines
        (I just added some updated information about Flash and SEO)
  • Site statistics can't be done or is too difficult in flash
        (here's a simple example of tracking a Flash site with Google Analytics)
  • Flash lacks cross platform support
  • Embed code doesn't validate
        (use SWF Object already....)

The examples above are some of the most common, and as such they are some of the easiest to debunk. In most cases, improper implementation is the culprit behind a lot of problems have with Flash, indeed that is the root behind most problems with anything - but when Flash is bad... it's generally bad. The reason I say this because with all of its inherent greatness, it has flaws which are easily accessible and in the wrong hands can be made so pronounced that the site being displayed is so unusable that it becomes painful. This has very little to do with Flash as a platform though. This isn't any different than if I were to poorly implement a .NET application or a half-baked AJAX solution and call it good.

A good portion of these (and other) misconceptions lies squarely on the shoulders of the developers. A minimal amount of diligence will provide solutions to nagging problems, and to potential pitfalls while developing any website or RIA; regardless of the platform on which it is delivered. It's easy to sit back and look at what the top results are for a search and stop there, but that will get you a very narrow view. Run a quick search for problems with Flash, and see what emerges. Jacob Neilsen's Alertbox post about Flash being 99% bad is still ringing in at #4. This is scary. An article which was written 8 years ago, one that is no longer relevant is still getting top billing. It's difficult to unseat something that well rooted, and while it's not relevant to Flash development today - it was at the time, and as such has value.

I guess what I'm getting at is to use Flash! Use it all over the place. Just try to use it well. Do a bit of research before you start and get a good idea of what you will need to do before you get to the end. With that in mind, here are listings of some excellent resources for expanding your Flash toolkit.

Posted in Design, Development, flashFoo | 2 Comments »

Portal: Intelligent gaming

February 3rd, 2008 by retsoced

Portal - watching my self fallOne of my left coast friends, Kent turned me onto the game Portal - which is included in The Orange Box, which you should definitely go out and buy. The game is really fun and totally different from any other game I have ever played. Unlike most of what I spend my gaming time with, this is not a FPS, and fragging and gib have nothing to do with it - although it's pretty easy to find yourself dead; a lot.

The screenshot posted is of me getting my achievement award for falling 35,000 feet or more. This could easily be seizure inducing, but basically you open a portal above you - then another directly below you, then enjoy the endless fall from ceiling to floor. The person below me in the shot is me. If you look up, you see yourself falling with you....

It's a nice change of pace from the mind-numbing games I usually play to have something on my computer that actually encourages and requires thought in order to complete. There are other puzzle games I like to play, but this is by far the most unique, and has the coolest graphics.

Now for my 300 foot jump and I will be all set......

Posted in Blatherings, Gaming, Geeking Out | No Comments »

Time stops for 5 minutes at Grand Central Terminal

February 1st, 2008 by retsoced

This last Saturday, the unthinkable happened at New York's Grand Central Terminal: for 200 people time stood still for 5 minutes. Adding another awesome concept to their arsenal of successful missions, Improve Everywhere gathered up more than 200 folks to descend unto Grand Central and simultaneous freeze in place - a pose they all held for 5 minutes. Then, as quickly as it began it was over and the 200 were back on their daily routine. I would have to say this is the best one that I have seen so far.

You have to watch the video to do it justice.

One of the first things that came to mind was how incredibly cool it would have been to have been there, camera and tripod in hand. This would have made an amazing long exposure - a once in a lifetime shot in fact. To have 200 stationary people, will hundreds of others milling about them wondering just what in the name of Sam Hill is going on. It would have most certainly looked like the moving folks were all Zombies from 28 Days Later, or time had indeed stopped.

Some of the images they grabbed while the event was unfolding are good too..... It's like a scene from Time Cop; only good.

Posted in Blatherings, Geeking Out | 1 Comment »