Adobe

Articles published in December, 2010

Happy New Year!

2010 is almost finished and yet, when I look back I can’t believe how packed was this year for those earning a living using the Flash Platform. I mean just look at the extension of the Flash Platform on mobile devices, the changes and improvements we’ve made to Flex and Flash Builder, the new capabilities added to the platform. It’s amazing that I can use today Flex “Hero” to build desktop applications and mobile applications (for Android, BlackBerry Playbook; iOS support is coming in 2011).

What continues to amaze me is the community around the Flash Platform. I truly feel privileged because I travel around and get a chance to meet and talk to you. This is one of the best parts of my job for sure. So, I want to thank you for the events you’ve organized this year and I’m looking forward to see you again next year.

And finally, I want to thank all my readers. It is so much easier writing tutorials and blog posts when you know people will read them :) .

To all of you, I wish you A Happy New Year! And don’t forget, 2011 seems to be even better than 2010 – well I do work for Adobe so I have some inside information :) .

My Technology Choices for the New Year

I get a lot of questions throughout the year about what technology I am currently using. This includes things like what phone, tablet, computer, and camera I am using. As 2010 comes to an end I thought I would write a quick article that talks about my current technology choices and why I made them. So here goes in no particular order.

Phone
This is always the trickiest one as there are so many quality phones being released. Google releasing the Nexus S with no 3G support of AT&T was a real bummer. It doesn’t deserve to be a called an unlocked phone in my opinion. I have been using my Samsung Captivate for months and it is still my favorite phone. The whole Galaxy S line from Samsung are the only phones that have a screen that can match up against the iPhone 4. To me a phone lives or dies by its screen. While a beautiful device, the iPhone 4 and its screen are too small for me. Another thing that is important is the software. Since my Captivate runs on Android, I can install whatever ROM I want on it to get the best performance and also ditch the crappy AT&T/Samsung software. I’m currently using some version of Cezar’s ROM (can’t remember which one) with the Gingerbread keyboard that has been really solid. (p.s. you suck Samsung for still not officially updating to froyo)

Tablet
Here Apple is the clear winner with the iPad. I bought one when they first came out and was supremely unimpressed. That was the result of the small number of tablet-optimized applications available. Now however there are thousands of great apps built just for the iPad. I use it mainly to check email and social networks from the couch and also for travelling. Lately I’ve been reading my Kindle books on there too (something I said I would never do). Samsung blew it with the first Samsung Tab in my opinion. They should have included a super-AMOLED display like on the Galaxy S phones. The screen looks downright blurry compared to my phone. Hopefully Apple competitors will step up their game in 2011.

Laptop
Once again Apple trounces the competition in this area. The Macbook Pro is still my preferred laptop simply because of the industrial design of it. It feels good, has a nice screen, and the backlit keyboard is a must for me. I’m really hoping that HTC gets into the laptop arena as they are great at industrial design. How about a soft touch laptop?

Operating System
While Apple wins the hardware award from me, Windows 7 is my operating system of choice. I have been using it for almost a year now and I don’t miss OSX for a second. Actually that is not entirely true. I do miss the Unix command line but I can get along with Cygwin just fine. Microsoft really nailed Windows 7 as I have yet to have a single blue-screen or OS crash since I started using it.

Gaming console
The PS3 was always my favorite console but the XBOX 360 has recently blown it out of the water. The Netflix integration is awesome and that is one of the main things I use it for. I also recently got the Kinect camera and I’m loving that thing as well.

Camera
Like I have mentioned before, I use the Canon 7D for all my shooting projects. I shoot everything at 60fps so that I can get buttery smooth-slow motion if I need it. For a lens, I currently carry a Canon 20mm 2.8 lens that I use for everything I do. You can see the video in the last post for an example. That is shot with the on-camera microphone, which is surprisingly good.

Audio gear
When I want to do a professional interview I record the audio using an Edirol R-09HR recorder and a hard-wired lapel mic that I got from Radio Shack. For recording tutorials I am currently using a Blue Snowball microphone with a hiss and pop filter screen over it. Plosives blow!

Well that’s what I’m using right now. Catch me in a month and it all might be different :-) .

My Technology Choices for the New Year

I get a lot of questions throughout the year about what technology I am currently using. This includes things like what phone, tablet, computer, and camera I am using. As 2010 comes to an end I thought I would write a quick article that talks about my current technology choices and why I made them. So here goes in no particular order.

Phone
This is always the trickiest one as there are so many quality phones being released. Google releasing the Nexus S with no 3G support of AT&T was a real bummer. It doesn’t deserve to be a called an unlocked phone in my opinion. I have been using my Samsung Captivate for months and it is still my favorite phone. The whole Galaxy S line from Samsung are the only phones that have a screen that can match up against the iPhone 4. To me a phone lives or dies by its screen. While a beautiful device, the iPhone 4 and its screen are too small for me. Another thing that is important is the software. Since my Captivate runs on Android, I can install whatever ROM I want on it to get the best performance and also ditch the crappy AT&T/Samsung software. I’m currently using some version of Cezar’s ROM (can’t remember which one) with the Gingerbread keyboard that has been really solid. (p.s. you suck Samsung for still not officially updating to froyo)

Tablet
Here Apple is the clear winner with the iPad. I bought one when they first came out and was supremely unimpressed. That was the result of the small number of tablet-optimized applications available. Now however there are thousands of great apps built just for the iPad. I use it mainly to check email and social networks from the couch and also for travelling. Lately I’ve been reading my Kindle books on there too (something I said I would never do). Samsung blew it with the first Samsung Tab in my opinion. They should have included a super-AMOLED display like on the Galaxy S phones. The screen looks downright blurry compared to my phone. Hopefully Apple competitors will step up their game in 2011.

Laptop
Once again Apple trounces the competition in this area. The Macbook Pro is still my preferred laptop simply because of the industrial design of it. It feels good, has a nice screen, and the backlit keyboard is a must for me. I’m really hoping that HTC gets into the laptop arena as they are great at industrial design. How about a soft touch laptop?

Operating System
While Apple wins the hardware award from me, Windows 7 is my operating system of choice. I have been using it for almost a year now and I don’t miss OSX for a second. Actually that is not entirely true. I do miss the Unix command line but I can get along with Cygwin just fine. Microsoft really nailed Windows 7 as I have yet to have a single blue-screen or OS crash since I started using it.

Gaming console
The PS3 was always my favorite console but the XBOX 360 has recently blown it out of the water. The Netflix integration is awesome and that is one of the main things I use it for. I also recently got the Kinect camera and I’m loving that thing as well.

Camera
Like I have mentioned before, I use the Canon 7D for all my shooting projects. I shoot everything at 60fps so that I can get buttery smooth-slow motion if I need it. For a lens, I currently carry a Canon 20mm 2.8 lens that I use for everything I do. You can see the video in the last post for an example. That is shot with the on-camera microphone, which is surprisingly good.

Audio gear
When I want to do a professional interview I record the audio using an Edirol R-09HR recorder and a hard-wired lapel mic that I got from Radio Shack. For recording tutorials I am currently using a Blue Snowball microphone with a hiss and pop filter screen over it. Plosives blow!

Well that’s what I’m using right now. Catch me in a month and it all might be different :-) .

Setting Custom Labels on Lists with the PlayBook

By default, it seems like the only property that the QNX List class can display as a label is label. In Flex I was used to being able to set my own label property or my own custom label function but it doesn’t look like that’s possible in the QNX List. Luckily, it’s not TOO hard to set up a class to do just that.

First step is to create a class that extends CellRenderer. There’s a lot that seems to go on in CellRenderer but I’m just starting to dig into it so I’ll save that for a later post. The easiest method I found was to override the setter for data and then use the setLabel function there. You can pass in whatever string you want to that setLabel function and it will display as the default label with the default font.

One of the issues I’m having is trying to figure out exactly when the data gets set on the CellRenderer component. Some of the other things I tried (setting it in the constructor, setting it on the drawLabel method) all didn’t work because the data object was still null. So I’m trying to figure out exactly when data becomes available. Hopefully I’ll have that for a followup post that goes into more detail on creating custom renderers for the list class.

Here’s the code I used for my example:

package com.pintley.components.listClasses
{
import qnx.ui.core.SizeUnit;
import qnx.ui.listClasses.CellRenderer;
import qnx.ui.text.Label;
 
public class BeerItemRenderer extends CellRenderer
{
     private var _beer:Object;
 
     public function BeerItemRenderer()
     {
          super();
     }
 
     override public function set data(value:Object):void
     {
          _beer = value;
          setLabel(_beer.beerName);
     }
}
}

Introducing SimpleStageVideo

SimpleStageVideoIf you played with Stage Video, one of the coolest feature of Flash Player 10.2. You may have noticed that this it requires a little bit of code to be leveraged and you have to deal with multiple events (StageVideoEvent, StageVideoAvailability, VideoEvent) to be used properly. While writing the Stage Video article for the Adobe devnet I realized that the need of a wrapper would be useful for developers, and a few days ago I came across StageVideoProxy by Kenny Bunch which is intended to simplify the use of Stage Video. This confirmed the idea that AS3 developers will need little wrappers for Stage Video, I know Tinic has his own version too for his tests.

Here is my version a little bit different, which should handle all the situations, switching automatically from Video to StageVideo and vice versa when Stage Video becomes available or unavailable. It handles all this automatically so you do not have to worry about it. It also handles something I ALWAYS need in my video players, respecting the video ratio when giving a specific maximum width and height to fit a specific surface to display the video :

To use, it is very simple, just use a few lines code :

// specifies the size to conform (will always preserve ratio)
var simpleStageVideo:SimpleStageVideo = new SimpleStageVideo(800, 600);
// dispatched when stream can be played (NetStream object cannot be played before attached to the video object)
simpleStageVideo.addEventListener(Event.INIT, onInit);
// attach the NetStream to it
simpleStageVideo.attachNetStream(ns);
// display it (this is for the sake of
addChild(simpleStageVideo);

One thing to notice is that even if we addChild the SimpleStageVideo object, the StageVideo object sits behind the stage, and the Video object used as a fallback will be added as a child of the stage so as a sibling of the main timeline. As a result, where you addChild the SimpleStageVideo object has no real impact on the nesting of the video surfaces.

Also, when working with the low level Stage Video APIs, you have to work with two events, StageVideoEvent.RENDER_STATE and VideoEvent.RENDER_STATE to detect how compositing is done and if hardware video decoding is performed. With SimpleStageVideo, those events are centralized through a single event called SimpleStageVideoEvent.STATUS which gives you access to the hardwareCompositing, hardwareDecoding and fullGPU properties :

private function onStatus(event:SimpleStageVideoEvent):void
{
	// informs you about the decoding, compositing states and if full GPU acceleration is performing
	var hardwareDecoding:Boolean = event.hardwareDecoding;
	var hardwareCompositing:Boolean = event.hardwareCompositing;
	var fullGPU:Boolean = event.fullGPU;
}

If you need to resize the video surfaces, use the resize API which does it automatically for you while preserving the image ratio :

simpleStageVideo.resize(stage.stageWidth, stage.stageHeight);

If you need to force the fallback from Video to StageVideo and vice versa for performance benchmarking, just use the toggle API :

simpleStageVideo.toggle(!inited);

Of course, when toggling, the SimpleStageVideoEvent.STATUS is dispatched every time, to let you know about the decoding, compositing, useful for logging, debugging, and performance benchmarking. A SimpleStageVideoToggleEvent.TOGGLE is also dispatched to inform you about the current video object used internally.

This can be useful if you need to draw the content of the video on a BitmapData. As the StageVideo object is not a DisplayObject, you cannot draw it, but you can use the toggle API, then wait for the SimpleStageVideoToggleEvent.TOGGLE, and then draw the underlying Video object used as a fallback, and there you go, you have your video content rasterized.

If you need to access the underlying Video and StageVideo objects you can use the proper getters :

var underlyingStageVideo:StageVideo = simpleStageVideo.stageVideo;
var underlyingVideo:Video = simpleStageVideo.video;

To view a live demo of it, click here (Flash Player 10.2 required). To download SimpleStageVideo, check the simplestagevideo project.

The Flash Platform Top 10 for 2010

Wow on you 2010! It’s the end of a decade that I liked to call the “oughts” (although I think I was the only one…) and an impressive year for the Flash Platform. There was some adversity to overcome, sure, but there were many more successes, innovations and milestones; all those things you can look back on and say, “cool – THAT happened.” So I’m happy to take the mantle of penning/typing the Top 10 List post for 2010, and provide a (relatively) swift look back at some of the most important Flash Platform advancements.

(I should note before jumping in that this is my own list in my own order, and the order is like a Letterman Top 10: most of these could be anywhere in the list and the #1 listing could maybe be #2 or 3 on yours. So, feel free to leave a comment if you think I left something out. And even better, feel free to provide your own list – such as… “The Top 10 things you created with the Flash Platform in 2010 that you couldn’t have done in 2009.” Make sure to send links to sites and apps so everyone can check em out and we can promote with Flash Rocks, a program we’ll be building out more strongly in 2011.)

(Oh and thanks for the feedback on what to include here. I think I got most of it…)

On to the show:

#10 – Mobile/multiscreen Development with Flex and Flash Builder
“There’s going to be wholesale reversal to start thinking of mobile devices first, not as an adjunct or secondary,…If you’re designing content–applications, video, web pages–you’ve got to starting thinking about mobile.” So said Kevin Lynch in a MAX 2008 interview with CNET. And this year it went full force with the preview releases of Flex SDK “Hero” and Flash Builder “Burrito” so developers can begin mobile application development with Flex. The goal? Help reduce the time and cost associated with development and testing while providing users with great apps for tablets smartphones et al. You can get Burrito and Hero on labs. Read more here and watch more here.

#9 – Introduction of InMarket
So now that you’re creating mobile apps, how do you get them in the different mobile markets? With Adobe InMarket, you’ll use one centralized portal to publish and manage your apps in multiple stores. Using it yet? It’s free to get started.

#8 – MAX 2010 – Giveaways and More Giveaways and Demos and More Demos
Of course so much happened at MAX 2010 I could probably have just made it the entire top 10 list, but two of the greatest things from MAX (like in life) were free: the Droid 2 and Google TV giveaways for attendees. We teamed up with Motorola and Google to get developers and designers to start making great content.

Watch when Moto took the stage to announce their giveaway:

Watch Kevin Lynch demo Google TV on stage at MAX.

MAX also hosted the first live demo of the RIM Playbook, which has AIR all over it.

And the Device Bar at MAX had even more gadgets to show off:

#7 – Flash Access 2.0
Are you providing premium content as a stream or download to a browser or app? Check out Flash Access 2.0, which can be used on its own, e.g. to protect content delivered over progressive download, or in combination with other video distribution technologies such as Flash Media Server or HTTP Dynamic Streaming. With support for subscriptions or rentals, Flash Access can create new opportunities for developers and media companies, such as new revenue sources, and it’s good for your customers who can get access to great video content that otherwise wouldn’t be available online. Learn more about how you would use Flash Access.

#6 – Open Source Media Framework 1.0
Want to create a video player with customized playback controls, that keeps the look and feel of your app design? OSMF is free and lets you assemble, rather than code, new player functionality. Gives you more time to focus on custom features and overall UI and UE. Go to OSMF.org to get more info, docs, forums and tutorials.

#5 – Partnership with Amazon: Use Flash Media Server on Amazon Web Services – Pay as You Go
In order to fulfill one of the most requested features by developers and business who use Amazon Web Services and Flash Media Server – Adobe is now partnering with Amazon to lower the entry barrier for developers and companies who want to leverage the full feature set of the Adobe Flash Platform, including all the communication and streaming functionality enabled by Flash Media Server. You can use Flash Media Server on Amazon Web Services without purchasing hardware, network infrastructure, or a full license of Flash Media Server.
This is for you if:

  • You work for a business that needs to maximize delivery capacity while minimizing network and licensing costs
  • You work for a school or other educational institution that wants to create virtual classrooms or broadcast live interactive experiences
  • You work for a government agency that needs to implement real-time communication or interactive training
  • You simply want a low-cost way to evaluate and deploy Flash Media Server.

All you need to know to get started is here.

#4 – AIR for TV
When AIR 2.5 came out, we announced support for smartphones and tablets based on Android OS, BlackBerry Tablet OS, and iOS; desktops running Win, Mac and Linux – and TVs, with Samsung as the first television manufacturer to ship Adobe AIR in its line of Samsung SmartTV devices. AIR for TV, to me at least, is pretty intriguing. I’m hoping it means that I’ll be able to watch a football game at home, with my buddies who are in front of their own TVs, and maybe we can text each other about the game in real time, on our screens, with the game on the screen. Perfect for fantasy football razzing! And if Pizza Hut makes their AIR app available, then I can order food without having to leave the couch or game. I like. Can’t miss a minute, you know.

2011 is going to be an interesting year as the web and TVs start to converge. Got some ideas for good TV apps? Start learning about how to make them by watching Don Woodward’s MAX 2010 session.

#3 – 3D “Molehill” APIs for Flash Player
AT MAX 2010 we showed 3D functionality for Flash Player in the form of the “Molehill” API’s. Boy did that get a lot of attention – and we were simply showing what could be done, it’s not broadly available. So why the interest? These will be a new set of low-level, GPU-accelerated 3D APIs to give advanced 3D and 3D engine developers the flexibility to leverage GPU hardware acceleration. Today, Flash Player 10.1, renders thousands of non z-buffered triangles at approximately 30 Hz. With the new 3D APIs, developers can expect hundreds of thousands of z-buffered triangles to be rendered at HD resolution in full screen at around 60 Hz. The 3D capabilities enabled by the new APIs will also be available to the broader developer community through popular ActionScript 3D frameworks, such as Alternativa3D, Away3d, Flare3D, Sophie3D or Yogurt3D. Visit Tony Lukasavage’s blog to see some pretty awesome demos, including what we showed at MAX. So when is it all coming? Developer beta program expected first half of 2011.

#2 – FP 10.2 beta – Stage Video preview
CPU/battery power/Flash Player sure is a popular topic. Flash Player 10.2 (in beta from Adobe Labs) might help squelch performance issues for users watching video in Flash Player. FP 10.2 introduced “Stage Video,” a new method for video playback so developers can leverage complete hardware acceleration of the video rendering pipeline. Stage Video can dramatically decrease processor usage and enables higher frame rates, reduced memory usage, and greater pixel fidelity and quality.

No better way to show it off than Tinic’s demo from MAX 2010:

#1 – Flash Player 10.1 for Mobile
Here’s why having Flash Player 10.1 on my Droid Pro is so great. I was looking up a question about how to grout my bathtub and a site I found had videos so I clicked on one and it played. Just clicked and played right there on the browser page. I watched, and listened a little and scrolled while listening to read the instrutions near the video. All happening right then and there. No need for me to leave the site for another app. For me – that’s the difference between having a phone with the internet and a phone with the “full web.”

Flash Player 10.1 was completely redesigned and optimized for mobile. It has new interaction methods with support for mobile-specific input models, support for accelerometer and Smart Zooming, to scale content to full screen mode. Built initially for desktops and laptops that have loads of battery and processing power and storage – it was no small feat getting Flash Player to work on small devices. Not to mention all the different chipsets and specs that need to work with Flash Player. No small feat at all. A truly incredible job by the Flash Player team. That’s why Flash Player 10.1 for Mobile is my #1 in 2010.

Want to know if your device supports Flash Player yet? Check here. Be sure to visit m.flash.com from your device, Adobe’s showcase site for optimized Flash content, and for more information on how to optimize Flash content for mobile, visit www.adobe.com/go/fpmobile.

Thanks for getting to the end!
Wha’d I miss?

Making a mountain out of a molehill – Flash 3D FAQ

Lee Brimelow filmed a great FAQ video with Thibault Imbert, Flash Player product manager, covering some interesting details about the new Flash 3D functionality.

Happy Holidays from Flashstreamworks

2011 is going to be an exciting year. What better way to celebrate it than with an Xtranormal movie. Enjoy!

Adobe Evangelist Blogroll released with seasonal theme

Before I go to my family for Christmas Eve I just wanted to share with everyone that I released new version of Adobe Evangelists Blogroll application that comes with nice seasonal theme Also I created this simplistic microsite for AEB app so that you can easily navigate to Android Market or use QR Code to get it [...]

Happy Holidays!

id="top" />2010 was definitely a year with some spectacular roller coasters… I’ve been thinking all morning about which highlight I would pick if I had to choose one. Adobe MAX was definitely a huge highlight for me this year. The keynotes, MAX online, meeting Martha Stewart and William Shatner, the amazing buzz and meeting some amazing people at the MAX Bash, … It’s going to be tough to top that this year! But the biggest highlight is probably seeing how great the Flash community is. From the people that organize great events like FOTB, FFK, AUGXL, FITC, Flash Camps, user group meetings, … to the people that share code / help others and the people who read my blog and/or follow me on Twitter and Facebook. You guys are truly amazing. Wow… This is starting to sound like some acceptance speech for some award or something… Ehr… Before it gets too mushy… ;-) Happy holidays! 2011 is going to rock!