Hoping for a Web App Future

If I think back to 2006/2007 I was very happy with how things were shaking out. The web was on the upswing and we were moving away from native applications. All of the great things about the web–its ubiquity, its freedom, its openness–were being harnessed to create native-like experiences that, I hoped at the time, would see us all do away with native apps. At the time, there wasn’t much (I thought) that web apps couldn’t do that we needed native apps for. How wrong I was. With the introduction of the iPhone, and subsequent smartphone releases, we’ve seen a huge shift back to native applications. Part of that is performance, right now native apps just feel better than mobile web apps, but it also came about because of just how many things native mobile apps could do. Geolocation, accelerometers, contact info–the smartphone showed how many things “apps” needed access to and for the most part those features have been exclusive to native applications. So just as the web was starting to really take off, we’ve slid back into native application territory.

It bummed me out, and still does. I thought AIR was an okay solution to the problem, but by the time AIR came around it was pretty clear that “the web” had come to mean HTML/JS, and I’m fine with that. So as PhoneGap started getting traction, and then Adobe took a major interest in the project, I was excited about the prospect of working on it as an Adobe evangelist, and more importantly, working with the teams behind it to see what else they had up their sleeves as the web moves forward.

But another side benefit is that it’s put me on what I’d consider the “right” side of the web argument. Two things got me thinking more about this. One was a very good post by a VC named Mark Suster, who while not telling his companies to focus exclusively on the web, has told them to make it a big part of what they do. So many startups nowadays are thinking completely mobile-first while ignoring the web, I’d say at their peril. When I think of my own usage, I’m still using a lot of native apps (for reasons I can’t quite figure out) but the ones I enjoy most have a web component that is well done and part of the overall experience. Yelp comes to mind. Another is Untappd. I can do almost anything I need to on the website version of Untappd so it’s not as though I’m getting a watered down experience. It more easily lets me move between contexts and devices while still using the service. I contrast that to something like Foursquare or Path. Both are mobile-centric, and with Foursquare I can’t check in because it wants to be sure that I am where I say I am (using GPS) but it still makes the web side of it less useful for me. Path is unusable when you’re not on a mobile device as far as I can tell. When I log in all I get is “download the app”. Which I hate. Mobile is clearly important but the web can’t be ignored.

Path Login

If this is what I see when I log into your site, you're too mobile-first.

The second thing that got me thinking more about this was something Brian Leroux pointed to on the Cordova mailing list, a post by Tim Berners-Lee about Installable Web Apps. This is a model I would love to see take hold. As Tim notes, there are a few things that users need to have when they’re installing web apps, and some trust/permissions issues that need to be figured out. Right now, I think PhoneGap is closest to this model, but a huge, huge, part of me wishes PhoneGap didn’t need to exist. If we could somehow skip the native shim and just take for granted that every platform supported, and at its core used, installable web apps. Maybe something like the WebOS model. But we’re not there yet. So for now, I’m glad I get to work with PhoneGap and build apps with web technologies. Eventually though I think PhoneGap can be used as inspiration for installable web apps. This is kind of how the standards world moves, as more and more people adopt something, people find ways to bring that something back into the standards. I think some of PhoneGap’s APIs and methodologies would make a great start at the idea of installable web apps. And I think the guys behind PhoneGap will be at the forefront of making those things happen, which means Adobe is going to be a really cool place to be over the next few years. It feels like there is a lot of potential to change the world and while I miss spending time with Flash, I feel like the HTML/JS/CSS work I’ve been doing and that Adobe is investing in, will make a similar impact on the web down the road.

Flash Player 11, AIR 3, and Flex/Flash Builder 4.6

Today is a pretty big day for Adobe developers. We’re officially announcing Flash Player 11, AIR 3, and Flex 4.6 and Flash Builder 4.6. The bits will be available in early October, but we’re announcing things today to help provide developers with information on what’s coming. I’ve been at Adobe for 4 years now and it’s been a very interesting 4 years as the landscape has evolved. It’s definitely been an up and down ride for Adobe developers, but the world has never been a better place for interactive developers, and these set of releases provide a ton of functionality aimed at helping Adobe developers create content in the most cutting edge places.

Gaming

We’ve been doing a lot of work to help enable console-esque games on top of the Flash Platform. Flash Player 11 includes Stage3D, which is going to open up a whole new world for game developers. Zombie Tycoon and Tanki are initial examples of what can be done and I can’t wait to see what comes of it. I’m reminded very much of the early days of Flash where a bunch of creative people were given a technology that was pretty open-ended and poked and prodded to create a bunch of very cool things. I think we’ll see that kind of revolution with Stage3D because of the ubiquity of Flash and the creativity of our developer community. Also in the gaming bucket is a framework we’re working on called Starling, which leverages Stage3D to create a super-fast way of doing parts of 2D games. It’s a great merger between the underlying technology/performance benefits of Stage3D and the kinds of things people want to do in 2D games. I think it’s also going to see some traction beyond games as agencies start to use it to enhance 2D content.

Mobile Applications

Flex and AIR have really found a great place in mobile applications. The performance enhancements in 2.7 made building native-experiences with AIR possible and we’ve seen some great examples of that in action including Machinarium and Caltrain Times. I’ve been impressed with performance on my 100 Days of Exercise application on iOS. I’m incredibly, incredibly excited by what this means for Flash. There’s a definite need to create mobile apps that can be deployed to multiple application stores. The Flash Platform provides a way to create great looking, high-design applications with near-native performance that can run on multiple devices. That’s a big deal.

And this release of AIR 3 goes where we haven’t gone before on the Flash Platform with native extensions. Now if there are features that aren’t included in AIR, like access to a credit card reader, you can build those extensions in native code and then link them to your AIR applications and leverage those libraries. It’s a great mix of native for specific use cases and AIR/Flash for fantastic user interfaces. It’s a big, big, big deal to be able to extend the platform and it’s a huge step.

I also think we have one of the best mobile-tool chains out there. Flash Builder 4.6 is going to help with creating those native extensions while also enabling the use of captive runtime in AIR so your applications don’t need to rely on the external AIR runtime on Android. Combine that with the enhancements that are coming in Flex 4.6 and it adds up to a world class mobile development platform that lets you reach more devices that matter. Flex 4.6 is especially exciting because of the new components that have been added. Flex and AIR are far and away the best toolset for interactive developers or any mobile developer who needs to create content for multiple devices. The apps you can build with Flex and AIR are going to stand out from the boring, standard apps that have started to litter app stores. Creativity will win the day and creativity is at the core of Flex/AIR.

Beyond

So this is a huge release, and I’m excited. But I’m also excited about the future of Adobe and how we are responding and will continue to respond to the evolving marketplace. As Danny Winokur, VP and GM of the Flash Platform, said recently:

“We’re not so concerned about what the right technology is for that as long as we’ll be able to deliver those experiences. We’re working with Microsoft and other members of the HTML community including Google, Apple, and others to enable rich experiences on HTML5.”

This is not a technology war. Adobe is about enabling developers to build the best possible experiences with the technology they want. We want to build tools and services that cater to that ethos. That takes the form of cutting-edge gaming features like Stage3D and world-class mobile app features with Flex, AIR and Flash Builder. But HTML5 is exciting for a lot of reasons, and Adobe will help developers there as well. If you’re an interactive developer, the future is very, very bright for you.

So you better get a good pair of sunglasses.

RIA Unleashed and Cigars

If you’re on the East Coast and haven’t registered for RIAUnleashed yet, you should (and it’s super cheap). Last year it was a lot of fun, maybe even the best conference aside from MAX that I went to last year. The speakers were great, the vibe was perfect, and there were a lot of new faces as well as old ones that made the evenings really fun. This year it falls just a couple of weeks after MAX. To me, that’s perfect timing. If you aren’t going to be at MAX, we’ll be showing some of the things we talked about there. If you are going, it’s a chance to come talk about what you saw, and keep the momentum rolling.

And if you’re into cigars, Terry Ryan and I are going to be doing a little cigar get-together probably the night before the conference. It’s going to be a chance to hang out, chill, enjoy a cigar, and probably make fun of Terry. The spot we go to will have limited seating, so if you’re interested in it, drop me an email and I’ll send out invites individually. It’s first come, first serve AND you’ve got to be registered for RIAUnleashed. But I’ll be covering scotch and cigars, so you can consider that a discount off the ticket price.

Slides and Demos from FITC San Francisco

FITC was an absolutely awesome event. Props to Shawn, Rick and team for another great event. I’m looking forward to them coming back to San Francisco next year. Thanks to everyone who attended my talk. I got some great questions and as I said in the sessions, if you have anything cool you’re doing with mapping and Flash, drop me an email.

Below are the slides I used and I’ve also posted all of the code for the demos I did. I haven’t really cleaned them up at all, but if you have any questions, let me know.

The Problem with Google Wave: User Experience

Google Wave is no more. For those who remember the sound of the jaws of the tech mainstream dropping when Google showed the demo at Google I/O, that may come as a shock. For those who tried to use it, it’s probably less of a shock. I kind of liked ReadWriteWeb’s take:

Why did Wave fail? Maybe because if you don’t call it an “email-killer” (and you shouldn’t) then you’d have to call it a “product, platform and protocol for distributed, real time, app-augmented collaboration.” That’s daunting and proved accessible to too few people.

To say that people don’t get collaboration or that Wave was ahead of its time is a cop out. Wave IS an awesome product. Real-time collaboration IS changing how the world works together. On the Flash side that is one of the reasons I’m so excited about Collaboration Services; real-time collaboration is fantastic.

But this was a case of Google’s user experience coming to bite them. Some people love the minimalistic experience of Gmail. And it worked a few years ago when it was first introduced, but the iPhone has shown how critical a great user experience is to user adoption. And frankly, Google’s user experience hasn’t changed much since the Gmail days and the applications are starting to feel dated. That’s not a big issue when you’re doing something as straightforward as email, but when you’re trying to completely change how people communicate, you need to provide a user experience that abstracts the technology and just makes it easy. Have we seen that done before?

iPhone

Exactly. Wave was a great technology showcase but it was not a great product. Google had the chance to fundamentally change communication on the web but they didn’t have the design chops to put it in a package that was useful to people and instantly easy for them to dive into. You can’t do an 80 minute demo for something that’s this big of a shift in thinking.

Hopefully Google takes this to heart and realizes that technology isn’t good enough. When you’re being revolutionary you have to design a user experience that makes the technology feel second nature.

The Problem with Technology Silos and Where Flash/HTML can Lead

There is a cool workshop being given by Jamie Kosoy called No Flash? No Problem and he had a great quote in the description:

There’s a long list of common complaints about the use of Flash, but many of the criticisms just aren’t true. Detractors say that Flash isn’t search engine friendly; Screen readers can’t understand Flash content; You can’t deeplink to specific pages…

You know what? They’re wrong. These criticisms are symptoms of misunderstanding by developers on the ways different technologies work together.

I think this is one of the biggest problems that Adobe has. Technology and development choices tends to be borderline religious in nature. And technology in general loves to have good guys and bad guys. That means the communities are very siloed and there is some resistance to incorporating or looking at other technologies. It’s HTML5 versus Flash, Microsoft versus Google, .NET versus Java, etc.

It’s also become a lot harder to be a generalist. Developers get rewarded (at least in terms of attention) for becoming experts in their niche. They’re asked to speak at conferences, they get better gigs, so becoming an expert has direct financial and publicity benefits. Who has time to dive into other technologies when there are so many advantages to drilling down into your own?

Because of that, I don’t think we’re seeing technology at its best. And it’s not limited to Flash. PhoneGap has been very successful by combining the iPhone with HTML/JS. But Flash suffers more than most. There are a lot of great integration points between HTML and Flash. We’ve got the Flex/Ajax bridge for Flex that lets you expose Flash methods to JavaScript and vice versa. We’ve got deep-linking support with SWFAddress that uses JavaScript and Flash. There are a lot of integration points but they don’t seem well publicized or well used. And there are no shortage of areas where Flash can augment JS/HTML to solve problems. File uploading, Webcam/Mic support, and charting.

But I also think Adobe is at fault. I don’t think we’ve done a good enough job of making it easy to integrate Flash and HTML. Even now internally you hear things like “HTML strategy”, or “HTML versus Flash” and I haven’t heard a lot of talk about how we’re going to take what we know about RIAs and web apps and apply that to both Flash and HTML.

But I think that’s changing. So part of the post is to give heart. We recently had a big re-organization and most of the Creative Suite web tools and the Platform (Flash/AIR/Flex,etc) are together in one business unit. I think that means you’re going to see a lot of Flash-knowledge applied to our HTML tools and hopefully you’ll see a lot more about using Flash and JavaScript together so we don’t need sessions like Jamie’s a year from now.

With the web design tools and developer tools in one place, I’m looking forward to talking a lot more about rich web solutions that provide some innovative examples of technology working together and encouraging HTML/JS developers to look at Flash where appropriate and Flash developers to think about HTML/JS when it makes sense. The easier we can make that for developers the more success we’ll have and the better applications we’ll see.

What I Learned About Presenting From Cirque Du Soleil

As an evangelist, obviously a lot of what we do is presenting. I always wish I could make my presentations more interesting and more of a show so I’m always watching how other people present. A great example is Cirque Du Soleil, which came through Seattle as part of their Kooza show. At a basic level, the Cirque Du Soleil presentation isn’t too different from any other presentation. A lot flashier, a lot more badass, but still a basic presentation. As I was watching I noticed a few things that I wanted to jot down and (hopefully) incorporate in my future presentations.

Make the easy stuff seem hard

This one is pretty basic but the Cirque Du Soleil guys do a good job of it. At the beginning in most of the acts, the performers look a little tentative. There’s a bit of a dramatic flair, they look like they’re concentrating really hard (and they probably are) and setting a baseline for what’s coming later. By building up the suspense the audience is impressed right from the beginning. The stuff after that is just gravy. And when they break out the safety gear, you know stuff is going to get real.

Always mess up

I thought this was fascinating. In a couple of different performances, the performers screwed up the act. Once it was a high wire guy messing up a jump and another time it was during a giant spinning-dual hamster wheel act where one of the performers almost falls off. At first I wasn’t sure it was on purpose, but after asking around, they always mess up the same part of the show. Why? One, it adds dramatic flair. But most importantly, it adds to the perception that this is really hard stuff to do. Then when they go into the hard stuff and nail it, the crowd goes nuts. I’m not sure how to do this on the tech side, but I have a couple of ideas.

Know how awesome you are

These guys (and girls) do these acts on a pretty consistent basis. They’re so good they can create a fairly convincing fake mess up. At the end, they let you know it. They do a great job of selling what they just did and getting people to cheer for them. Ultimately I think this is about confidence, but it’s also about taking yourself outside of the bubble and remembering that not everyone can do what you do. When you travel with Cirque du Soleil all you see around you are people just like you, but you’ve got to remember that the audience can’t do what you do. And make them love you for it.

Have a theme

One of the reasons I love Cirque du Soleil is that every act has a theme. The costumes, the props, the music and the choreography all revolve around a central theme. Kooza had a definite South Asian feel and some of the acts played up that more than others. But all of it together helped tell a story and engage the audience more and each act built on the theme a little bit. This is probably a bit tougher to do in a technical presentation but I can think of some things I’d like to do that would be more thematic in my presentations.

If you get a chance to see Kooza, it’s a great show. Just watch for the mistakes.

One More Day for FITC San Francisco Early Bird

It’s looking like FITC San Francisco is going to be awesome. The speaker lineup is bomber and the diversity of the sessions means that there’s going to be something for everyone. Plus the fact that we’re down in San Fran means you’ll get to see a lot of Adobeans in the halls. I’m going to be doing a talk on Geolocation and Mapping with the Flash Platform, a more in-depth version of what I did at Flash and the City.

The early bird tickets are available for one more day so definitely register soon and lock it in. You can spend the extra money on beer.

ActionScript/Flash/Flex Library for Geonames

I’m working on a mobile application demo that relies heavily on the Geonames service and in the process started work on an ActionScript library for accessing the web service that you can find on Github. If you aren’t familiar with Geonames it’s a fantastic project. It’s a database of placenames from all over the world (over 8 million) and each has a bunch of data (including latitude and longitude) about it. The database includes everything from physical features like mountains to schools and parks in cities. And it’s all free.

The API is really basic right now and it only implements the findNearby method but hopefully it’s a start. And I want to round it out as I start to use it for more demos. It’s a really amazing amount of data.