This post is kind of a stub, I’m sitting in the Fox Theatre ready to live-blog.
The event started awhile ago, and I’ve been blogging it as it happens. As always, you can always hit the live video feed instead of reading my transcripts & witty commentary as well.
A special thanks to WeatherFlow Inc. for flying me out to the tour.
Information: http://onair.adobe.com/schedule/cities/atlanta.php
Live Feed: http://onair.adobe.com/live/
Live blogging after the jump…
10:05 AM - Mike Downey - Keynote
Overview of where and why AIR came about. History of web based applications, client/server GUI stuff, etc. Evolution of RIA. Introduction to AIR for developing RIAs (coincidence, I think not…). Cross platform runtime, with all the features of Flash Player as well as some new features coming out in the next dot release such as the fullscreen toggle. Uses WebKit, same as Safari. Cross engine access between WebKit, JS, and Flash. On top of that, added AIR specific stuff: SQL Lite local database store, File System Access, Network Detection, System Notifications. Case study, Ebay’s desktop application with alerts. Drag and drop from file system. Platform independence. Demonstrations… installation badges, sample applications for AIR. (demos) Getting ready to show off Pownce. Dragging and dropping files to the application from the desktop, yes, he’s using a Mac. 1 month, learning Flex, 1 developer wrote Pownce. Crazy. Simple Tasks, entirely AJAX application in AIR. Built in 24 hours. Looks good, like MS Office 2007. Very responsive, saves to local database. (Same guy who wrote ext-js framework.) Buzzword being demoed, online word processor. I’ve seen this before, very slick, rivals desktop apps. Ported to AIR from Flex. Drag and drop images and documents into Buzzword, only in AIR version. New VM in Flash Player 9, it’s fast. Text wrapping, very awesome, indeed. Former Lotus engineers built it. Last examples, Adobe Media Player. Public beta soon, desktop video player. Uses RSS to subscribe to video streams. Embedded skins in RSS to skin the application depending on the feed. Slick. Showing Reno 911 clip. Comments, ratings, sharing etc ad nauseum. AIR Derby, for entering your applications in the contest. Squishy ball included, courtesy of Mike Chambers. Short advertisement for MAX 2007 in Chicago.
10:41 AM - Mike Chambers - Building an AIR App
Hello world Flex based AIR application. Talking about WebKit, and why it was chosen. Open source, proven, small size and runs on mobile devices. Showing Flex Builder Beta 3, basic hello world app. Walking through Moxie creating a new AIR application in FB. Generates mxml and xml metadata. Daunting comments in the metadata xml file. In beta, can’t sign the applications yet but you will be able to. Editing version strings, application ID, title for the installer, description, etc in the xml file. Flex builder will automatically generate the SWF references. Profiling doesn’t work with AIR yet, but it will in the next FB beta. Short blurb about command line tools, showing how to put in the references manually. Able to style the windows with two options, system chrome (OS specific), or none. Allows you to do borderless windows, and if you set transparent to true then you have a nice way to make your own chrome. Awesome. Set application visibility on launch, icons, file type extensions, etc. Going over Flex basics, what it is, languages, etc. mx:WindowedApplication instead of Application for AIR. Built the entire hello world application, now going to distribute it. Christened AIR developers. Hehe. Setting up icons and various resolutions. Demoing the deployed installer. Plug for the Apollo book for Flex developers. PDF of the book is released under Creative Commons. It’s also on the swag CD. Sweet. Same with the AIR for JS Developers pocket guide. Plugging the URLs.
11:19 AM - Kevin Hoyt - JavaScript/XHTML Based AIR
Going over the binaries, ADL and ADT for developing AIR applications. (Launcher, Packager) Building a demo app in JS for AIR. Just a simple HTML page in TextMate, going into the SDK folder in Terminal to find ADL. Set up the metadata, run in ADL. I just finished hacking the Wind Graph into an AIR application, unfortunately the data connection at AIR Camp is very slow. Showing Dreamweaver as an AIR development tool. Make the hello world application do something… add a form for name and a button and save that information to a file on the desktop. Using the AIR JS extensions to write files. I just got the WindGraph to work in AIR, it is a hack, but it works! File IO code in the HTML/JS AIR demo is very clean. Doing something with Meebo. Showing off custom chrome from Meebo into the hello world application. That looks amazing.
Short break…
Flex 3 comes out when FB3 + Flex 2 key trial ends.
12:06 PM - Kevin Hoyt - About AIR & Script Bridging
About the integrated part of AIR. Embedded flash not supported in the browser component, but it is coming. Funny, iPhone runs on WebKit as well. Here’s hoping. Showing a basic HTML control demo using the mx:HTML component, and a tiny blurb of AS3. Debugging from artificial breakpoint to show HTML control data members. JavaScript Window and JavaScript Document elements for traversing the DOM. DOM inspection from Flex. Allusion, drag and drop image to AIR app, replace all images in document. getElementsById supported in the object and castes as Object. Currently, JS Array is not the same as an AS array, but they are working on that. Just set an input value using a Flex button object all through the HTML component. “Script Bridging”, as it were. Aptana demo, open source IDE for JS and AIR development, uses Eclipse. AIR aliases to shorten out file system function references. Flex 3 language reference plug, as available from JavaScript. i.e. flash.filesystem.file can be used in JavaScript. Scared yet? System icons included in the AIR packaging. Showing a XHMTL/JS AIR demo to grab the system icons and save them to disk. Adding event listeners in JS in a Flex like manner to work with the dom. Yes, he just did document.getElementById(’obj’).addEventListener() to add a file dialog. Grabbing the raw bitmap data and encoding using PNGEncoder (we use that to take snapshots over at WeatherFlow). Using a JS include to include a SWF’s functions and classes. It works! Reaching into the OS to grab system icons, from JS, using AS3 library. Showing AIRChat by Ted Patrick, amusing people posting on the big screen. “I’m naked right now.”, being the best one thus far. AIRChat used script bridging to leverage text wrapping.
Quick lunch, and it’s back to work…
1:07 PM - Adobe AIR API Overview - Daniel Dura
Going down the ’short’ list of features in AIR 1.0. Windowing API, multi-windowed, transparent, z-indexing and such. Showing off the ruler application to show transparency and no systemChrome. Running down creating windows, and the different types. Discussing different window types: standard, utility, and transparent. More on the HTML control and script bridging. Ability to override the typical behavior of JS and HTML calls. File I/O, full read and write. Clarifying that runtime is constrained by user permissions. Still, it is scary. Cross platform worms, anyone? Going over various file I/O native file dialogs. Both synchronous and asynchronous I/O libraries. Demo of file I/O dialogs. Very cool, looks easy enough. Definitely less code than say, Java, yet still familiar syntax. All dialogs return a reference to files or directories. Demoing writing to a file, hello world. It works, good stuff. Embedded SQLite database in AIR applications. Used to store to a file data from the AIR application. Drag and drop clipboard support including the modifiers copy, link, move. Dragging out of an application demo. Demo of dragging and drag types, drag a button, show drag image, data is a URL. Icon API, no icon files persay, uses standard PNGs etc. Service monitoring, online/offline, based on service not necessarily generally. Perfect. Demoing service monitor, checks if Google is up and accessible. Service monitor code is roughly 25 lines or so. Uses event handlers to trigger functions, etc. He just disconnected the EVDO card and it worked.
1:58 PM - Business Class AIR - Ron from Salesforce.com
Using the Salesforce database with AIR. Running through the Salesforce API architecture, with AIR on top. I wonder if it is hot air? No, bad pun, fine… SOAP API. URLs for the SourceForge project, AS class references, etc. He’s totally digging Flex Builder debugging. Salesforce toolkit library for AS as a layer between the database and Flex/Flash. Caches queries, monitors service, etc. Talking about the briefcase of queries. Demoing an application, login and connection. He’s purposely breaking the application to show off the debugging, and getting lost in the debug mode. I’ve done that at least once daily. Highlighting the SQLite connection and such. Local data connection vs. the live database. Running through the service monitor code and handlers. Showing the SQLite schema. Pretty cool for LAMP developers, as this localizes the whole thing. The debugger gets more love, and we get records out of the database. Use a recursive method to sequentially execute queries, thanks to Christophe. Back to the demo application, showing some real records in online mode, and then taking it offline. Queries against non-cached data faults, if it is cached it works! Very cool. Flex application, no changes, add on query caching. Showing the AIR SQLite Admin by Christophe to display the data. Deets to Christophe Coenraets for SQLite tutorials. Q+A. “An excercise left to the reader.”
2:20 PM - Introduction to the Embedded Database API - Christian Cantrell
Mike just caused a feedback loop and apologized, “-50 dkp.” Mike’s offering everyone 5 minutes of fame for their apps after the networking session. Christian’s up, and here we go. “Any of this information can change, and some of it almost certainly will.” Going over why they included SQLite. Aggregates functions, flat files, etc. Leveraging all the existing skills of web developers to create desktop applications. SQLite implementation may break compatibility along the way of Apollo–AIR development. Transactions, triggers, and views! Wow, seriously? Record space is variable. Sounds like, what was it, COBOL or FORTRAN. I can’t remember which. Multiple databases per connection. Zero setup database. Apollo–AIR that is.
Theoretical 2TB limit to databases. “If it did, it would.”, on database size not being supported in the OS. Date and time functions, data types (yes, null is supported). Super cool things with data types that he won’t tell us about it just in case it doesn’t happen. Hint: Storing MP3s and videos. Column affinity — “I mostly ignore this.”, basically data types for columns are very relaxed. Suggested data types, not strict. Synchronous and asynchronous APIs, synchronous blocks. Asynchronous is good for responsiveness. Data Services API, no details because he doesn’t know them, because it hasn’t been written yet. Basically, it’ll do all the database stuff for us, and produce a nice OO based design. Genius. 19 AS classes for SQLite. APIs will not align with Google Gears, despite everyone saying they were. They intended to, but Google has 2 classes, and they have 19. JS is not as OO as AS, so they decided not to align the APIs. Frameworks to bring alignment. Jack Slocum’s Ext.data.SqlDB, works with AIR and Google Gears. Ta da. Samples! API, Schema API, etc. Showing simple UI to demo SQLite direct queries using synchronous API. Creating the DB, opening it, and repopulating the DB in Flex/AS3. Can call all the queries in sequence, because it is using the synchronous API. getStatement function to create direct queries for the DB, awesome lazy coding. Fetching the results as an ArrayCollection. Beautiful. Going over the use of prepared statements for memory and processing concerns. He’s talking about state machines and relational linking. Nerding out. Sweet. Running through another example which reads SQLite databases, much like Christophe’s SQLite admin. One last demo, “Arise”, RSS aggregator. “It doesn’t look very good because I designed it.”, but it appears to be very responsive and functional. Stores read, unread information in the local SQLite database. Show by topic (tags), author, etc. Imports OPML, fast. Application stays responsive even when loading 1000’s of feeds. Plug for data services API.
Short break…
3:18 PM - Yahoo and Adobe AIR - Yahoo! (Micah Laaker)
Yahoo! Web Services. Mike is doing obscure trivia. Micah is back at the podium. 40+ web services. Wow, that’s a lot. Maps, flash APIs. RunningMap.com is up on the screen, alphaSearch.com, and YUI (Yahoo UI). Showing off some screenshots of YUI stuff: Rich text editor, layouts, etc. LocAmigos — Yahoo mail API. Ultimate Research Assistant — uses the Yahoo search terms (reverse lookup) to tell you whatever you searched for is. Boardr for storyboarding… delImport — delicious bookmarking spotlight plugin. Upcoming.org and then… Yahoo! Pipes. Just an aside, Pipes is great and I have no idea why it hasn’t been publicized to death. MyBlogLog! Wow, this is the first time I’ve seen “not the most beautiful thing” on the big screen! Congrats again to Todd and Eric.
Weather Module, just fetches Weather Channel data through Yahoo. BBAuth, another product that I think has been under advertised. Simple examples: Media Minibar, SpiffySearch. Media Minibar looks a lot like an OS X widget, but it is in AIR. That UI is very slick. SpiffySearch, looks like a search box! Live searching from a small, lightweight AIR application. Links are clickable and popup AIR browser windows. BBAuth and AIR WebKit windows had an issue, workaround was to create more than one WebKit window. All WebKit instances use the same cookie jar. Ick. Plugging some URLs for APIs.
3:38 PM - Adobe AIR e-commerce framework - Edward Mansouri
Mike says we’re going to see some quick demos. Sweet. ApolloApps.com –> AIRApps.net launched by these guys. His presentation is an AIR application. SlideRocket anyone? AIR-Commerce framework! “Flex is pretty awesome.”, yes, yes it is. Google maps in an AIR application using data from Yelp. Ed is importing the AIRCommerce SWC to his Moxie project. Setting the price on the ecommerce component, and there’s a form for ordering before letting the user access the data. Dummy, dummy credit card number, beautiful. In theory, this could be really useful. Talking about partners, PayPal, Wachovia, Card Services… Finally, a real API for PayPal which any good developer can use? Free CVS repositories at AIRApps.net. Planning for a final version that works by MAX. Thank yous, and questions.
3:54 - Alan’s Showing a Demo of… - Alan
Audio mixing application called DigiMix, in AIR. Dragging audio (wav file) into AIR, shows the wave form. It plays, slick. WAV file parser converts it into a Flash Sound object. Scrubbing audio doesn’t work yet, but it will. Edit and export as WAV file. He takes a clip, moves it back, and saves it. It plays. And now for something more complex… Multi-track project! Wow, it actually imports all 4 tracks and everything can be exported. He opens the original again, cuts the drum part out, moves it and duplicates it. He’s building the multi-track project from scratch. He does it, 3 tracks, and saves it as XML. Slick. Also saves a WAV export. Screenshot exporting using PNGEncoder and AIR. Early stages, online and AIR version. Effects coming later, as well as online component. “I do have a real job.”. DigiMix.com coming soon. Mike asks him about how he parsed the WAV files. “I’m glad you asked that. I was going to ask if you could include that in the next version.” Wow, he parsed the bytes individually by examining the difference between an empty SWF and one with WAV. That’s how he figured out how to parse the files. “Right now I have that in a for loop…”, on mixing.
4:06 PM - Q&A Session - Dan, Mike, and Kevin
(Not direct quotes, so please take this with a grain of salt.)
Q: “When is the next beta of Flex Builder 3 coming out?”
A: “I would suggest going to the MAX conference.”
Q: “What about running AIR in a lower security sandbox?”
A: “Not in version 1.”, “Looked at limited privilege model for version 2.”
Q: “Why would we want to write an AIR app instead of a .NET or <more> mature client side language?”
A: “AIR is focused on using web technologies that developers are familiar with.”, “We are not saying that AIR is the solution for every application.”
Q: “Is it possible in AIR to add icons on the taskbar (system tray)?”
A: “Not in the beta, but we will have that functionality.”
Q: “Could you tell us a little about the relationship between PDF and AIR?”
A: “It is not enabled in the public beta, maybe it is, but basically the way it works is you can instantiate the reader in the application.”
Q: “Are there any plans for delivering updates to AIR applications to the user?”
A: “Yes. We’ve given you, the developer, a low level API to initiate the update. All the logic you can control yourself.”
Time for two more questions…
Q: “Will there be any support for hardware acceleration?”
A: “Yes, actually we have an upcoming point release to the Flash Player that is currently available in beta form. In that update we’ve added better quality for video, multi-core support, and a few other related performance optimizations.”
Q: “For your HTML/JS/Flash developer is there any protection for our code?”
A: “It’s a zip file, so no there isn’t anything built in to do that but we are not explicitly supporting anything.”, “SWF Encrypt”
Mike is talking about things for 1.0: Data Encryption, Encrypted Local Store API (in there now, but maybe not the beta “it’s in my version”).
4:36 PM - ColdFusion Powered AIR Applications - Ben Forta
Mike’s on stage again giving out book bundles. Oglethorpe! He’s trying to talk very quickly, and making hilarious quips. Anyways, on with the show. He has contraband T-Shirts with unapproved code names. “The answer is, yes.” Shortest learning curve, lots of integrated services, underlying power of Java. No cost other than for hosting. Showing off the companies that use Cold Fusion, and most of it is behind the firewall. “Drank lots of PDF kool aid”, as well as… using Cold Fusion. Strong Flash and Flex integration. AIR integrates Flash and the web, so you can take existing CF apps and “airify” them. Going to show an example. “You did not get them from me.”, on the contraband shirt throwing. Showing Flex Builder as the CF IDE as well with the extension. “One IDE to rule them all.” There are tons of CF specific features (for) Eclipse, “none of which I will talk about now…” Showing off the new backend service wizard in FB3. “I must preface this by saying, it might break… if it does we’ll blame Eclipse.” He’s building a CF8 application, in Flex Builder, using the new wizard which has a query builder… not one set of data, no, two. Grid, to view, to edit. “It’s awesome? Good answer. They both said it’s awesome.” It apparently generates best practices code too, which is insane. As skeptical as I am about other languages you know, other than PHP, this is pretty slick syntax. He’s going to run it again and “make it more interesting”. AJAX & paging. Wow, he’s done. I look away for a minute and he’s done. He just dissed Firefox stability. Awesome. Let’s build an AIR project. More t-shirts! “You almost sacrificed your life for a shirt.” Shirts and questions!
6:02 PM - Using JavaScript Frameworks in AIR Applications - Andre Charland
Mike’s giving away a copy of FB2. Andre of Nitobi is on the stage. He doesn’t run a Mac? Shame. He co-authored an AJAX for enterprises book, and worked with a ton of big companies. Cool. He’s showing the sizes of various languages in market capital. JavaScript is pretty big. What can we do with AIR that we can’t with the browser? Mostly going over things we’ve seen recurring over the night, windows, file I/O, etc. Keyboard shortcuts, and notifications. He made a dock in AIR that loads all of the social networking sites. He’s talking about popping in any JS code into AIR and creating apps. Offline Salesforce demo coming up. He’s dragging, dropping vCards and syncing with Salesforce. Very cool. “If it works in Safari it will probably, might work in AIR.” Showing some code in Dreamweaver, and it is on his blog.
6:32 PM - Taking apart the bus - Mike Chambers
Quick demos from attendees will be after Andre. Kevin and Danny will be back to do some too. Mike’s asking us if we liked it, explaining how they like talking to us. MXNA plug. I’m actually talking to Kevin Hoyt now on AIR Chat about our wind data at WeatherFlow, and another attendee. Small world, or AIR application, as it were. Mike is showing the tracker for the bus off, explaining how the cron works. Very interesting implementation. The tracker does offline storage, and then syncs back up when it goes online. Demoing a Yahoo! Map with the data plotted on it as well as geo-encoding the bus Twitter entries using that data. Now he’s trying to melt the Mac by video taping himself.
Now he’s showing the Flickr account for the bus, too. 1 picture, 1 geographic location per minute. That’s a lot of data… Taking the data off of Flickr, using something Mike created called Flump, another AIR application. It downloads all the images to the desktop. Now he’s showing a time-lapsed video at like 10x speed. Wow, a full game of Guitar Hero. And bobbyworld and I just appeared in AIR Chat on the screen. Maybe Kevin will let us chat a little more when he does his demo.
Oh, did I leak that? I did didn’t I. Demoing a Wowhead launcher. Talking about being stuck on a platform, and being able to develop these things in 20 minutes. Very true.
Cliff’s going to demo something now. It’s pretty cool, vegetarian, small car, so it’s a shopping app! It keeps tabs on things in his pantry, and UPC codes and everything. He’s going to add a scanner and everything. Slick! Simple, but still a very cool use of AIR. Drag and drop creation of shopping trips. He’s talking mass deployment now.
Danny from the bus is going to show Twitter Cam. Basically, it shows the in and outgoing Twitter’s for the bus. Slick. I’m on the screen! You can download it from danieldura.com/twittercam, cool.
Kevin Hoyt from the bus will be showing an HTML version of AIR Chat by Ted Patrick. I think we’re about to be on screen again! Mike’s telling us to tell his boss how cool we thought AIR was.
QA team monitors the forums for bug reports. Kevin’s showing HTML stuff, and right now he’s talking about Spry, the AJAX framework from the labs. Running Spry in AIR, what would it take? Remapping the CSS paths was what took the longest to port to AIR. He’s showing the code in Dreamweaver, and now running it. Cool, a product list using the SQLite database. All the DB access is done in Spry/JS. Wow. Script Bridging is awesome. Spry is created by 2 very efficient guys.
Kevin’s showing another one, this one is in Aptana, and it is a geocoding application that is disconnected. Wait, did he say disconnected? I heard the word packet in there too. Basically, the app lets you copy photos into the application and geocode them. And we’re live on AIR Chat again with Kevin.
Bobby and I are back on the screen, again as well as egojab and jason.
Going to go ahead and end the live coverage, as I have a bus to catch to the airport in about an hour. Thanks, and enjoy. If anyone has any questions about the event, just leave a message and I’ll do my best to answer them.
We had a blast today in Atlanta. Great write-up, you really captured the vibe of the event.
mike chambers
mesh@adobe.com
Hi…I Googled for free web layouts, but found your page about us Tour - Atlanta at Abyss Knight…and have to say thanks. nice read.