AIR 2 Beta 2 Available – Much Improved Printing Support

February 3rd, 2010 by ryanstewart

If you missed it yesterday, AIR 2 beta 2 is now available on Adobe labs. This release includes some bug fixes, some optimizations, and a few new features including support for TLS/SSL socket communication and much improved support for interacting with printers. I sat down with the engineer who did a lot of the work on the new printing API and interviewed him about it. He also walked me through a demo of the new features. The APIs let you have complete control over printing and customize the experience. It’s worth checking out.

Discussing New Printing Features in the AIR 2 Beta 2 from Ryan Stewart on Vimeo.

Posted in Adobe, Adobe AIR, Video having 1 comment »

Important Flex 3.5 Update

February 2nd, 2010 by ryanstewart

If you have updated to Flex 3.5 you want to be sure to grab the new version of the SDK. There is a bug that has been fixed which caused issues with the auto-update UI. Here’s the scoop.

The Flex team has released an update to the 3.5 SDK that addresses an issue with the Flex-based AIR auto-update UI packaged within the SDK (SDK-24766). The refreshed build, SDK 3.5a, has only a few files modified in order to fix this issue and this change does not affect the signing and caching of the SDK 3.5 RSLs originally released in December.

We encourage all developers using SDK 3.5 to upgrade their build to SDK 3.5a to continue their development. The SDK 3.5a can be found in the “Latest Milestone Release Build” table here:http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3.

Posted in Adobe, Flex having no comments »

HTML and Flash Thoughts

February 2nd, 2010 by ryanstewart

Kevin Lynch blogged today in response to a number of issues that have cropped up recently and does a great job of laying out both Adobe’s vision for Flash and for web tools. That and a couple of other posts got me thinking a bit. The first is Jeffrey Zeldman’s post. He contrasts Flash with some of the benefits of standards. Most of the time I see “HTML5 is going to kill Flash!!” without any kind of rational conversation on why. Jeffrey does a better job than most. His intro paragraph is a perfect example:

Lack of Flash in the iPad (and before that, in the iPhone) is a win for accessible, standards-based design. Not because Flash is bad, but because the increasing popularity of devices that don’t support Flash is going to force recalcitrant web developers to build the semantic HTML layer first. Additional layers of Flash UX can then be optionally added in, just as, in proper, accessible, standards-based development, JavaScript UX enhancements are added only after we verify that the site works without them.

My Current Problems with Flash

There are a couple of things I hate about Flash inside the browser. Both of them were covered very well by Richard Leggett in his Flash/HTML5 post. The first is browser integration. One of the things I think a lot of users find annoying about Flash is that it feels so alien in the browser. We have basically a single API, ExternalInterface, that developers can use to connect HTML and Flash. But it’s very awkward and it makes both the development experience and end user experience feel very different. Flash has become the “black box” of the browser. If you take a look at AIR, you see how great those two worlds can be. Flash and JavaScript can call each other’s APIs, Flash can access the DOM, and JavaScript can call Flash only when it needs to, for things like playing sound or performing graphical tricks. SVG and Canvas add a layer of complexity to that, but I don’t think that’s an insurmountable hurdle. In fact, I think those two technologies, when combined with Flash, would make a very interesting combination.

But that leads to the other problem. Flash is horrible when it comes to the semantic web. And this causes some other issues, like deep-linking or search engine optimization that we’ve worked on, but haven’t perfected yet. As Richard says, and Jeffrey notes, the current solutions aren’t entirely bad. Flash works very well with a CMS like Drupal so that you can have the semantic web layer and a Flash layer. And largely it depends on your project. In some cases that semantic layer isn’t going to be as important. It’s also important for developers to use Flash inside HTML where appropriate. Another thing I’d like to see is making it easier to create Flex applications that don’t take up the whole page, but work within an HTML context. Think a bit about what I said above combined with some kind of Dreamweaver/Flash Builder integration so that the developer can unify the HTML and Flash experience at a tooling level.

Adobe Is a Web Tools Company

People seem to think that Adobe has eschewed HTML5 in favor of Flash. A lot of innovation goes into Flash. We have a number of features that our customers want and we’re able to add those to the runtime and create tooling around them because we can move quickly and innovate. HTML5 is obviously more consensus driven. As a result, some of the details that would be required to add tooling support haven’t been fully nailed down yet. But we’ve moved ahead to do what we can. Dreamweaver continues to have great HTML and JavaScript framework support. We’ve shown sneaks of BrowserLab that will help HTML/JS developers see how their site looks in various browsers. We’ve included the latest versions of WebKit in Adobe AIR so that HTML developers can take advantage of a lot of HTML5 features in a desktop context, and in ColdFusion we’ve got support for creating ExtJS 3.0 components with ColdFusion tags. We even sneaked a feature at MAX that used Flash and Illustrator to display animated vector content using the canvas tag. So Adobe is supporting HTML5 in a number of different ways already and experimenting with even more. When the spec is nailed down, you’re going to see a lot of Adobe tools that support it.

Flash Is Driven By Customers

It’s important to remember that Flash isn’t some isolated plug-in that we maliciously deployed on 98% of web browsers and that consistently hits 80% penetration for new versions in 6 months. Flash is driven by customers. Both developers and end users. Developers still want content that runs the same way across browsers (and now devices). They still want web content that provides innovation around things like video, sockets, animation, data push, web camera, 3D transformations, and works across multiple platforms and 98% of the people on the web. There are some developers who won’t ever use Flash, and that’s fine. There are others who want to do things that HTML5 just doesn’t have an option for now. Flash is there to fill that gap. Part of the reason we can innovate with Flash is because we control the source code. While we’ve worked hard to be more open, ultimately it’s our customers demand for innovation that drives us. And I wouldn’t want Flash to open up and lose that ability to innovate. It wouldn’t be fair to our customers.

I’d love to see Flash do a better job of integrating with the browser and the semantic web. And I hope HTML5 pushes us more in that direction. I disagree that the era of plug-ins is coming to a close because I think there will always be web developers who want to do a little bit more and have the same experience across devices and platforms. Adobe can move at that speed while still offering tools for web developers of all stripes because both HTML and Flash are baked into our DNA. I genuinely wish for a more open dialogue between standards organizations and the Flash community. Unfortunately it seems like a “my way or the highway” attitude when it comes to web standards. I can understand that to some degree, but I think the web would be a much better place of everyone took a deep breath and took another look at Flash’s deficiencies and its strengths. With that as a starting point, I think there could be some very valuable conversations about how Flash can do more to support standards while still catering to customers who want new features.

Posted in Adobe, Flash, Flex, Rich Internet Applications having 15 comments »

The Locked iPuzzle

January 29th, 2010 by ryanstewart

So the iPad came and as expected, everyone can’t stop talking about it. I was cautiously optimistic about Apple’s tablet. I’m a sci-fi fan with a gadget fetish and I was loving the idea of carrying around a computer tablet just like they do in all of the latest science fiction movies. And Apple has a way of completely turning the computing world upside down. They have an elegance and polish that makes the intersection of software and hardware a nirvana.

Part of that is because they rule their platforms with an iron fist. The iPhone is obvious. It’s arguably the most closed platform in recent memory. Every application has to go through Apple’s approval process, can only be listed on Apple’s store, and Apple takes a cut. It’s a fantastic device, it provides developers a way to make money, but it is incredibly closed and arguably bordering on big brother. But OS X isn’t perfect either. While I can install my own applications and control my own settings, things like getting the right APIs for Flash Player to handle video or multi-touch aren’t possible.

The iPad Cometh

So when the iPad was released and it was just a bigger iPod Touch, I was incredibly disappointed. If this is the future of computing then we’ve already lost. Apple is taking total control to a new and unfortunate level. It’s the same pay-to-play model as the iPod Touch so that you’ll be buying your applications from Apple (so they can take their cut), buying your videos and music from Apple, buying your books from Apple, and dealing with their DRM for all three. The ultimate lock-in.

The Honey Trap

This is what bugs me. As an evangelist I’m annoyed Flash isn’t on the iPhone. But as a user, I’m terrified that Apple has put a vice grip on getting content on my devices. It used to be that when you bought a device, you owned it and could basically do whatever you want with it. The model of the iPad and the iPhone is the opposite of that. You’re essentially paying for a device that then gives you the privilege to buy content from Apple. The honey pot of a seamless software-hardware experience has become a nightmarish trap that keeps you stuck and struggling.

As Mike Chambers said better than I can, having some support for HTML5 in Safari doesn’t make an open platform. One of the great parts of the “open web” is exactly how open it is. Anyone can put up any piece of content, at any time, without asking for permission. The web is accepting of Flash content, HTML content, Silverlight content, numerous video and audio codecs, and other plug-ins. Users have the ultimate choice about what they want to see and how they want to see it. That ecosystem has led to a lot of great, free content like games, video, and applications.

Which is why Apple has locked down the device. They can’t make money off of free. And instead of giving users choice and opening up their devices, they’ve decided to lock it down. The iPhone and iPad are each great pieces of technology and Apple deserves to make money off of them. But they could be so much better if they were open. The number of innovative things that an open ecosystem could do with this technology is mind-boggling. But that won’t happen because the only ideas that will see the light of day are ideas Apple lets through.

We’ve come a long way from 1984, but obviously not long enough.

Posted in General, Personal, Uncategorized having 17 comments »

On Google, YouTube, HTML5, Adobe, and Flash

January 21st, 2010 by ryanstewart

Last night Google blogged about how they were experimenting with offering some videos on YouTube that support the HTML5 video tag and the H.264 codec, and that work in Chrome and Safari. This is part of TestTube, where YouTube’s engineers test out different products without rolling them into the main YouTube experience. YouTube and Flash obviously have a deep relationship. It was Flash that helped YouTube become one of the most visited sites on the Internet, and YouTube has helped increase penetration of newer versions of Flash Player by rolling out features, like H.264 support, that required the newer Flash Player versions.

There is always an undercurrent questioning if Flash is “going away” when it comes to HTML5. But I think YouTube is actually the perfect example of Flash and HTML working together. The same day Google blogged about the TestTube project, YouTube also rolled out a new rental service for some of the Sundance Film Festival videos, which is powered by Flash. And I think that shows the relationship that Flash and services like YouTube have in helping drive the web forward.

Video on the web isn’t just about watching a clip any more. There are ways to monetize it, either with advertising or by adding ways to protect content that lets people watch something after they pay. There are accessibility issues that need to be addressed like closed-captioning support. What about being able to consume video on mobile devices that don’t support the HTML5 video tag? These are all areas that Flash has found solutions to, which has helped the growth of video on the web and provided a reference for the HTML5 groups to see what works. And while there may be some arguments over the use of the H.264 codec, having Flash add support for that codec meant that companies like Google could roll out a Flash version and an HTML5 version without having to re-encode video. Flash has made possible many of the features in HTML5 by showing how good the experience can be. And Flash will continue to innovate and provide solutions to challenges on the web before those solutions can be standardized. It will remain the best way to provide cutting-edge technology to 98% of people online.

Open standards are incredibly important to the future of the web. Adobe continues to work hard to contribute to that movement and balance that with the need for our customers and developers to be able to create next-generation content that runs the same way on every operating system and device. If Flash wasn’t providing value to people, it wouldn’t be on 98% of the world’s computers and we wouldn’t see penetration for new versions reach 80% within 6 months of release.

So congrats to YouTube on the HTML5 video work. This is good for HTML and I think there will be a lot of Adobe, Flash, and HTML5 collaboration moving forward. Flash has an important role to play by providing innovative ideas and solutions for an increasingly multi-screen and multi-platform world.

Posted in Adobe, Flash, Rich Internet Applications having 21 comments »

What’s Up With All the PHP? Or My New(ish) Role at Adobe

January 18th, 2010 by ryanstewart

I’ve been blogging more recently about PHP, which may be confusing for people who know me and my ColdFusion background. But in looking at things, the PHP community has been incredibly vibrant and successful on a number of fronts. We’ve started adding more support for PHP developers through partnerships and support of things like Zend AMF, the PHP Data Wizards in Flex Builder, and encouraging community speakers at events like ZendCon. On the Adobe side, Mihai Corlan has done a fantastic job of creating resources for PHP developers who want to learn Flex. The team needed someone to take the lead here in North America and I asked to do it (Lee is busy with cool Flash stuff and going to Latin and South America). So now PHP developers have a go-to guy here in North America working to further the PHP agenda here at Adobe and helping more PHP developers be successful with Flex and Flash.

So why me, someone with little PHP experience? I’ve always felt like evangelism is about growing your developer community and developer relations is about helping the community you have. At Adobe we don’t really have a specific developer relations role (it’s basically Mike Chambers) so the evangelists end up doing both. Which is fun because our community is awesome. But I also wanted a challenge and to grow professionally as an evangelist. I thought the best way to do that would be to get out of my comfort zone, immerse myself in a new technology, and execute on ideas that could be applied to any technology by any evangelist.

Luckily we’re working with some great PHP people and the PHP community is a very welcoming and open place. There are a lot of places where PHP and Flash fit really well together so there are features like data visualization, collaboration, video, and data-heavy applications where I think PHP developers can use Flash in a helpful way. And in the process hopefully I’ll end up being a better evangelist and helping to grow the number of Flex developers.

If you’ve got ideas, or applications that show off Flash and PHP together, I’d love to hear them. You can always drop me an email at ryan@adobe.com or call/text me at (307) 438-9716. I think 2010 is going to be a huge year for PHP and Flash momentum.

Posted in Adobe, Flash, Flex, Personal, php having 7 comments »

New Zend AMF with 10x Performance Boost

January 18th, 2010 by ryanstewart

Wade just blogged about a patch that was submitted by Mark Reidenbach to Zend AMF that provides a 10x performance boost over the old one. This isn’t a final release and everyone is still making sure the patch hasn’t introduced any new bugs so he’s encouraging everyone to download this one and make sure it works correctly. If you have issues, add it to the current open bug.

From Wade’s post:

Thanks so much Mark! I have also added a reference check optimization that uses SPL_object_hash to quickly see if an object has been seen before or not. Overall you should see a big performance increase. The test case I used was the James Ward’s census data from my ZendCon talk which consists of random people objects ranging from 1 – 100 duplicates totaling 5k total rows. Xdebug profiling analyzed by KCacheGrind showed roughly a 10X increase in performance!

Posted in Flex, php having 3 comments »

Mapping Data Types from PHP to Flex with Zend AMF and Flash Builder 4

January 15th, 2010 by ryanstewart

I assume this has to be out there somewhere but I couldn’t find it so hopefully this helps someone who Google’s things the same way I do. And Wade has a great tutorial for doing this when you’re just dealing with the Zend AMF code but I was looking for something that worked with Flash Buidler 4’s wizards.

While using the Flash Builder 4 data-centric design wizards to generate the service calls for a PHP class I was having trouble figuring out how to make sure that the data types I had set up in my MySQL database were being carried all the way through to my Flex application. When I retrieved data from the database in PHP and then had Flash Builder 4 inspect my class, the properties of my returned class were all strings.

If you use the data-centric design wizards to create a class based on a database, the class properties are typed correctly. If you use a class you’ve already written, all of the properties come back as strings. Luckily I chatted with our Flex/PHP guru, Mihai Corlan, and he pointed me in the direction of type casting.

Essentially you just need to add a bit of extra data when the properties are returned in the class so that Zend AMF knows what type of data to expect. So for my getAllItems() method, I iterate through the records of my database and create a PHP object for each one.

As you can see in the code below, to return as an int, just add a 0; to set it as a number, add 0.0; to set it as a date, just create a new DateTime object with the data from MySQL. As you can see from the Mapping Table you’ve got coverage for pretty much every data type.

public function getAllForests()
{
     $this->connect();
     $rs = mysql_query("select * from national_forests")
          or die ("Unable to complete query.");
 
     $national_forests = array();
 
     while( $row = mysql_fetch_assoc($rs) )
     {
          $forest = new NationalForest();
          $forest->id = $row['id']+0;
          $forest->state = $row['state'];
          $forest->area = $row['area']+0.0;
          $forest->established = new DateTime($row['established']);
          $forest->closest_city = $row['closest_city'];
          $forest->name = $row['name'];
 
          array_push($national_forests,$forest);
     }
 
     return $national_forests;
}

If there’s a better way to do this, I’d love to have it.

Posted in Flex, flash builder, php having 4 comments »

Register for 360|Flex and Be the First to Win Uber CS Next

January 14th, 2010 by ryanstewart

Are you planning on going to 360|Flex San Jose March 7-10th? Have you registered yet? If not I’ve got a deal for you. I’m going to be giving away a copy of whatever the highest suite level is for the next version of Creative Suite to a random attendee who registers on the 360Flex site with my URL which is http://360flex-rfs.eventbrite.com/. Here’s how it will work. I’ll randomly select one person from the list of people who register with that URL. If you’re the winner I’ll email you to find out if you want Mac or Windows. Then, if CS Next is released before 360Flex, I’ll bring you a copy to take home. If it’s released afterwards I’ll take your address and send it to you.

I’m also going to be holding a contest for the designer-types which I’ll announce later when I nail down the specifics. But hopefully this gives you all a jolt to register for 360Flex sooner rather than later.

Posted in General having 3 comments »

In-Game Payments with Flash and Social Gold

January 13th, 2010 by ryanstewart

Gaming is obviously a huge part of the Flash marketplace and luckily this year we as a company have started to acknowledge that and hopefully address developer needs. Part of that was the Flash CS5 support for creating iPhone applications. Another is the “Shibuya” try/buy service that we have, which allows developers to much more easily monetize their AIR applications (and thus AIR-based Flash games). But the coolest thing is seeing the ecosystem grow up around this. A great example is Social Gold.

Social Gold takes the monetization of Flash content to the next level by allowing users to make in-game purchases. They’ve got an API that lets you do everything from micropayments to recurring subscriptions. They’ve got a good demo of the workflow on their site. They handle all of the credit card processing so it’s relatively straightforward to include the Flash code in your application and start accepting payments. The revenue split is about 90-10, which seems very fair.

All of the samples are for games, but there’s nothing to prevent this from going in any other type of Flash application, so it’s a very interesting way to monetize Flash content in the browser or on the desktop with AIR. One of the main issues is security. Because SWF files can be decompiled, there’s the potential for problems if you try to embed secret keys inside of your Flash application. This can lead to a spoofing attack where a malicious SWF file gets your information and authenticates against Social Gold’s system. Social Gold attempts to solve this by keeping the keys on the server only and just passing session variables back and forth. I’m not a security guy, so I won’t comment on the implementation, but it seems like a reasonable approach considering the security constraints of Flash.

We saw with the iPhone how important it is for developers to monetize content and so it’s great to see more opportunities to do that come to the Flash Platform. I think 2010 is going to be a big year for small Flash shops or individual developers who want the freedom of making a living on the Platform.

Posted in Flash having 5 comments »

About Ryan Stewart – Rich Internet Application Mountaineer

A blog by a Platform Evangelist at Adobe covering Adobe's RIA platform. Includes posts about Adobe Flex, Adobe AIR, ColdFusion, LiveCycle, Thermo, and everything in between.