Archive for July, 2006

Todd Wagner’s Vision of Entertainment

Monday, July 31st, 2006

For those who don’t know who Todd Wagner is, Todd is best known as having been the CEO of Broadcast.com and one of it’s founders. Alongside his partner, Mark Cuban, they sold the company to Yahoo! in 1999 for $5.7 billion. Currently, Todd and Mark coown and manage a number of properties including 2929 Entertainment, HDNet Films, Magnolia Pictures, Landmark Theatres, HDNet, and HDNet Movies. While I was visiting Hollywood last week, I was fortunate enough to receive a verbal braindump from Todd on what his vision of the past, present, and future are. With so much power, he has the influence to create change. Being able to hear his insight first hand was truely a privilege.

Todd started his dump with the past, speaking to Broadcast.com and what their vision was. In a nutshell, I got the feeling he was describing it as a global, archived library of media to the effect of a YouTube, but with only traditional media assets. He made comparisons with what is going on today and mentioned that it is just a reverb of what happened then, only now it is being truely realized. He went on to reason that the dramatic push we see today is rooted in a generation coming of age. He felt that the youth that grew up in this digital age are now pushing it as part of their lives. Though I agree with this, I would add that there is a deeper root, experince and technology. At the time of Broadcast.com, the experience and technology were completely different. Broadband wasn’t a commonality like it is today and the metaphor for the web was a page and not an application. There was an explosion of services and information early on, but it didn’t fit into our lives easily. The web was slower, the applications more cumbersome, and the information harder to sift through. We have seen all of these elements mature. To that effect, the masses won’t adopt something unless it is a pleasure to use and provides some benefit in their daily lifes. Case in point, look at MP3s, Napster, and the IPod. Though we all may have visions of what is to come, they will never be realized until we make them accessible to the masses. It is when things become beneficial to us by either desire or need that we push them into our lives and our culture.

As Todd switched gears to what he is doing in the present, the endpoint of his ideas touched on “experience”. You can see from Todd and Mark’s endeavor’s that they are vertically integrated in the entertainment industry, from production to distribution. This integration could be partially compared to Apple’s vertical integration with ITunes Store, ITunes software, and the IPod. Though parts are different, they are seeking to make the end to end routing of entertainment more efficient. Apple currently handles the digital route, while Todd and Mark are seeking both traditional and digital routes. Todd’s thoughts on these routes came out like a line for line play out of Bill Gate’s “The Road Ahead”. In Gate’s book, published in 1995, he describes entertainment breaking down into a multiplatform release, with variant pay points for each platform. For example, some will pay more for the convience of accessing a movie at home, while others want the experience of socialization and will go to the theaters. I completely agree, and would say that it applies to various media distribution, as we have seen with ITunes. The problem is that traditional media fears emerging distribution routes as being canablistic on existing routes. In reality, parts of the consuming public don’t feel the experience of existing routes are appealing. Therefore, some people are not consuming because the routes are not appealing to them, and an entire audience is being missed out on. Therefore in a lot of ways, emerging routes are for an audience that you are not getting, or are losing. If you do not open up an easy route for that audience, they are lost or they turn to unsanctioned (pirated) routes.

In retrospect, I would say I’m excited about what Todd and Mark are doing. They are owning the “shop” versus convincing it, which I struggle with constantly. Being in the same space, it was an honor to get first hand insight from someone so influential in shaping the future of entertainment.

Making SWFs Aware of Browser Sessions

Tuesday, July 25th, 2006

In my previous post about the Nascar slideshow, I mentioned how the module had variant behavior based on whether you had seen it or not during the current browser session. Though I briefly described the process to make this happen, I've decided to share example code of how this is done.

What is a Browser Session?
First off, when I speak of a browser session it is important to know exactly what I mean. Loosely defined, a browser session is the time duration from the point at which a session is started (while the browser is open) until all instances of that browser are closed. A session typically can be started by setting the session on entrance to a site, at login to a site, or at some other predetermined time.

Does a SWF know about a Browser Session?
A SWF has no internal way of knowing whether it was being visited another time by navigating in the same browser (page forward, page back, page refresh, etc), or whether it is the initial visit by a fresh browser instance. This lack of knowing presents an issue of being able to act on a temporary browser session. Essentially, the SWF doesn't know when or how it was opened. For example, setting a Shared Object and reading it, you don't have a way to clear it when a browser closes (without help) or know whether it was set before you restarted your computer. Thus it knows nothing of its opening relationship, only that it was opened. Instead, the information has to be given to the SWF by the browser, since the browser is aware of it.

Making the SWF aware of the Browser Session
In order to do make the SWF aware of the session, you can create a browser based session cookie (a temporary cookie that is removed when the browser is closed). You can then pass the existance of this cookie into the SWF as a FlashVar with a Boolean value. If it exists you know that you are in a current session, if not the SWF is being opened for the first time in this particular browser instance. The timing at which you do this is important, as you want to write out the SWF first, then create the session cookie so it is available for subsequent embeds .

EXAMPLE CODE:
Using SWFObject, adding the session information to a swf is pretty easy to do:

var so = new SWFObject("TestBrowserSession.swf", "session" , 50, 50, 6, "#FFFFFF");
// session flag to swf
so.addVariable("FLASHVARS_hasSession", (document.cookie.indexOf("session=exists")!=-1) ? "true" : "false");
so.write("sessionDiv");
// set session
document.cookie = "session=exists;";

A working example can be seen here.

Dreamsocket chosen to develop gaming console application for Cartoon Network

Tuesday, July 25th, 2006

Dreamsocket (my personal company) was chosen to develop a game console application for Cartoon Network in partnership with Sony, Dreamworks/PDI, Microsoft Entertainment, Dualstar Entertainment, GA Tech, The Barbarian Group, and Beyond Z. In preparation, I will be flying out to Hollywood tonight with Cartoon Network's Art Director for introduction meetings and will be there until Friday. I'm pretty excited given the context of the project and the people involved.

Flash 9: Scripting Stage Elements

Tuesday, July 11th, 2006

In Flash 9, you can have a Actionscript class associated with the _root of the Movie. You do this by creating a class that extends MovieClip and represents the _root, then in the properties pane, you assign it as the Document Class.

When attempting to use this new feature, I have had a lot of people asking me why they get the error


ReferenceError: Error #1056:
Cannot create property test1_btn on Test.
at flash.display::Sprite/flash.display:Sprite::constructChildren()
at flash.display::Sprite$iinit()
at flash.display::MovieClip$iinit()
at Test$iinit()

This is due to the fact that you must publicly declare any element (Buttons, MovieClips, TextFields, etc.) instance in your class that exist on the stage and is named.

For example, if you have a Movieclip drawn on the stage named "myMc" it would be defined as a public var in your Document class like :

package
{
     import flash.display.MovieClip;

     public class Test extends MovieClip
     {
          public var myMc:MovieClip;

          public function Test()
          {
          }
     }
}