Ted Patrick > { Events & Community } > Adobe Systems


Yahoo Open Hack - BBAuth meets Flex by Me

When hack day started I was planning to write a Flex UI for Yahoo's new Mail API's. I got as far as the lack of a crossdomain.xml file but in the 2 hours I got BBAuth integrated with Flex. BBAuth is Yahoo's new authentication system for 3rd party site access to Yahoo APIS. The process is very Identity 2.0 and involves using Yahoo's login as an open identity system. It was pretty easy to get working with Flex and States.

Start Screen - Login State


User Credentials in Flex - MailView State


Feel free to try it out!

In this app, the user is logged in at Yahoo and the user returns with all the credentials for accessing their Mail. As soon as I get a crossdomain.xml file added to the Mail APIs I will get the mail client working.

Cheers,

ted :)

I wrote this desktop news and weather toolbar from 11PM - 4AM last night. The app reads Yahoo RSS feeds and is customized for your zip code. I had a blast writing this one and will keep updating it.




Larger

Special thanks to Yahoo for hosting this killer event.

Cheers,

Ted :)

Mike Chambers built this photobooth app in Apollo that utilizes the upload API of Flickr. Using your webcam you snap some photos and it writes images to your local drive. Select the photos you want and upload them to Flickr.





Great Work Mike!

Ted :)

Yahoo Open Hack Day with Beck??

I am in a session on YMaps now and Chuck Freedman is speaking. The team has launched a polyAPI with Maps and I just got access to the new Yahoo Mail API. I am going to build a Yahoo Mail desktop in Apollo. Hopefully I can locate that mysterious AS3 Yahoo maps codeline, we will see.

When Mike and I arrived on Yahoo campus we passed the audio booth with Beck stickers on the hardware. I would guess that Yahoo campus will be hosting a Beck concert later this evening. As a big Beck fan it looks like I am staying here way into the night.

Code all day, listen to Beck this evening. Yahoo has my vote!

More to come!

Ted :)

Beau Amber at Metaliq.com showed me a project his team is working on last week. They have written a Subversion (SVN) Client in ActionScript 3 using flash.net.Socket. The application running on Flash Player 9 can read and write head revisions directly into an Subversion repository using the native SVN protocol. The project is part of Beau's super secret project called FlapJacks which he showed at Flash Forward in Austin.



Flash Player 9 supports a Binary Socket in the flash.net.Socket class and is able to connect directly to any native TCP/IP port provided the server allows this via a crossdomain.xml policy file.

Actually I am working on a MYSQL driver for Apollo using flash.net.Socket so that without middle-wear Apollo can talk directly to a DataBase.



Cheers,

ted :)

Dave Wolf of Cynergy Systems has a great read on AJAX and RIA. Dave contends that most decision makers do not fully realize that AJAX is DHTML reinvented. It is an interesting read.

Living in Denial with AJAX by Dave Wolf

FYI, Dave Wolf was on the Microsoft BizTalk Server 1.0 team and on the dev team at PowerBuilder/Sybase before that. He knows enterprise software inside out.

Cheers,

Ted :)

I am headed to Yahoo Hack Day at Yahoo's Mountain View Campus. Mike Chambers and myself will bring Flex and Apollo with us. Come find us at Hack Day and introduce yourself. We will be making Apollo/Flex mashups with Yahoo APIs all day and night.



See you at Yahoo Open Hack Day!

Once Mike and I find a place to code, I will post our local on campus.

Ted :)

Cooling your MacBook Pro

The MacBook Pro gets hot, so hot you can cook on it. Jokes aside it is a problem but I found a really great solution. I purchased an Antec NoteBook Cooler and moded it for the MacBook Pro. The trick is to remount the front 2 feet on the back of the top of the cooler. Typically the MacBook Pro will create a vacuum against the 2 large USB powered fans and make it ineffective. By moving the bottom front feet to the top back, it slightly elevates the MacBook Pro and pulls the heat from the machine effectively. Basically the MacBook is angled on the cooler to remove the heat better.

I have found this setup is so good that it actually makes the notebook run noticeably faster. I run the notebook all day every day and it never gets hot, not even warm. The case of the MacBook Pro is like a big heatsink, all it needs is an external fan to pull the heat away.



Trust me you will not regret doing this. Ok back to work.

Cheers,

Ted :)

Flex Engineering has released an AutoComplete Input component for Flex 2. The AutoComplete control is an enhanced TextInput control which pops up a list of suggestions to the user based on the characters entered.

AutoComplete Input component for Flex 2

More to come!

Ted :)

Flex 2 and Flash Player 9 running in Netscape 4.8

As an experiment I downloaded the oldest Netscape browser version I could find Netscape 4.8. I installed Flash Player 9 and took some screenshots. Yes that is a Flex 2 SWF running in Flash Player 9 on Netscape 4.8. What is really cool is that this browser is completely unsupported in most AJAX applications. This type of low level reach enables Flash Player to work compatibly while the browser continues to evolve.

Netscape 4.8 Browser Download
Sample Netscape 4 Flex APP (FireFox and Netscape Only!)





When FireFox 3 and IE 8 ship, Adobe Flash Player will be there working compatibly as usual.

Cheers,

Ted :)

In this interview with Kevin Cheng (Yahoo! Maps and Local) Kevin talks about the decision of the team to use Flash Player. The interview is revealing as it highlights the productivity and compatibility problems inherent in the AJAX development stack. For the record, I am NOT an AJAX fan and maybe its time I made this clear.

Here are a few paragraph from the interview:


JK: Why did you go with Flash opposed to the more widely used AJAX?

KC: Why not? I mentioned this in a blog entry when we released the beta. When I joined and found out we were using Flash, my gut reaction was, "why?" as well. I asked the typical questions and in all cases, got satisfactory answers. So let's run through them:

AJAX takes a lot of work. If you try hard enough, you can do almost anything with AJAX that Flash can do but the key phrase is "try hard enough". Part of the reason that Google Maps was such a surprise was not so much its interface (that's been done for years by MapPoint and other client based mapping tools) but the fact that they managed to accomplish this in a web browser. I think we were all just amazed that it was even possible. Except it wasn't - not in Linux, not in Safari.

Not only do you have to hack a lot to even get some things to work, you then have to hack some more to make it compatible with everything. Flash just works so long as you have Flash. Which brings me to my next point...

Depending on what numbers you listen to, the Flash install base is about the same, if not more, than the base of net users who have browsers capable of running JavaScript applications at the complexity of most AJAX mapping applications.

The design/geek community has a tendency to worship implementing something because it is hard to do. For example, you'll see articles about how somebody managed to do something with just CSS. Nevermind that it took twice the amount of code, numerous cross browser hacks and offers no additional accessibility, it's in CSS and validates! I feel like AJAX has that kind of community sometimes. "Look, I created this thing in AJAX - sure it's been done a gazillion times in Flash before but it's in AJAX!" Aside from the cross platform ease I mentioned, there are some effects that are just plain easier in Flash. The prime example is of course the pirate map and radar map Justin Everett-Church did soon after Beta launched (Flash 8 required).

Developers have the option of not only using Flex but also our AJAX library. I think people don't recognize that we also have an AJAX version. So even if you're not comfortable with the Flash version, we have an alternative which, from everything I've heard from the developer community, is one of the best API libraries in the market. A lot of Yahoo!'s own properties use the AJAX library like Yahoo! Travel's TripPlanner and our slightly updated Local front page.

As a designer, I appreciate the feeling that the sky is the limit now when it comes to what kinds of interaction we could or should have. Of course that has to be tempered. Just because we can animate a gif doesn't mean we should.

Finally, there's the question of back button/address bar support. How will people send a link or bookmark a set of directions in Flash? The solution we have in place is what I feel to be the most underrated features we have. Every move, every plot, every zoom automatically updates the address bar so when you bookmark or want to send the map, you do what you would with any website - save or copy the address bar. Ironically, we kept getting asked where the permalink button was.

Don't get me wrong, AJAX has created a lot of options for us as designers and Flash isn't something I'd recommend for everything but I think people who dismiss Flash on principle are missing out on a lot. We certainly to run into problems, in particular with performance, but I'd say that so far, it's a pretty nice package.



Having visited with lots of development teams in Silicon Valley, there are lots of teams struggling with larger AJAX projects. AJAX works very well in the small but gets exponentially complex on larger projects. Worse, it forces a development team into a reactive stance, forcing teams to update released software when new browsers arrive.

Ted's AJAX Litmus Test:
Will the AJAX site you are creating today work tomorrow?
Without modification?
Are you 100% sure?
Would you risk your business on it?


For the record, I am not an AJAX fan. I believe it is great for small projects and a minefield for larger projects. In the long run, we will look back at the AJAX revolution and see a titanic waste of time and money. For medium to larger scale applications, AJAX is house of cards.



As an Adobe Technical Evangelist for Flex, I have kept my feelings on AJAX quiet given the new job and employer. My feelings on this are not new as anyone who has worked with me can attest. Sorry if my statement rub you the wrong way, it is just how I feel.

Cheers,
Ted :)

Flex 2 Workshop at FITC

Chafic Kazoun (Flex 2 - O'Reilly Author) will be at FITC and is hosting a 1 day workshop, a mini workshop, and speaking on Flex and Flash integration. If you are planning to attend FITC, make sure to check out Chafic's session on Flex 2 it will be well worth your time.

Flex 2 - Full Day Workshop

Flex 2 - Mini-Workshop

Flash and FLEX can hold hands

Cheers,

Ted :)

Flex URLKit 0.5

Todd Rein and Joe Berkovitz have created an amazing Flex component for managing the URL within a Flex application. URLKit 0.5 allows you to persist data in the URL allowing for stateful urls. It is worth checking out in this demo.

URLKit Demo

URLKit Demo with Deep Linking

URLKIT HOME

The idea is that you can store data in the URL and persist that data into the state of a Flex application. It is a great addition to the toolset of Flex and you cannot beat its price, Free.

Thanks Todd and Joe, Great Work!

Cheers,

Ted :)

Hammerheads at Cocos Island and MotionBox.com using Flex 2

I have been meaning to post some of the video from my trip to Costa Rica in June but I am concerned many will think I am nuts. There were about 400 hammerhead sharks on this dive and Cocos Island is one of a handful of places where they school world-wide. During the dive a 14ft hammerhead swam within 10ft of me. Take a look at the MotionBox.com FLV Player below, that is Flex2! I will be posting my other videos to motionbox.

My Videos on MotionBox.com

Hammerheads at Cocos Island

FYI: Every video of a shark we see has been edited to show the violent side of sharks feeding. In reality they are very peaceful animals and seeing them firsthand changes you. When you are face to face diving with them they are far from the monsters we frequently see on TV. The reality is that they are truly amazing creatures.

Get Certified and Go Diving!

Cheers,

Ted :)

Wii Channels using Flash Player? Interactive Wii TV

Take a close look at these FLV videos on the Nintendo Wii. It looks like the entire Wii channel UI is done in Flash Player and SWF. It looks like Wii is taking Flash to a new level combined with the Wii remote. I still need to get confirmation that this is Flash Player but the transparency, vector shapes, animation, and haloBlue color look way too familiar.

Wii Menu
Mii Channel
Wii Forcast Channel
Wii News Channel
Opera Wii Partnership
Opera & Adobe Partnership

Also look carefully at the channel screens.

What I find interesting is that Nintendo seems to have solved the remote to UI mouse problem. Look at the user managing these screens with the Wii remote. That is a new form of mouse and it looks to be very intuitive to use. Just point and click. The user can pull, push, and move the mouse in 3d space while the UI reacts. It looks like Wii has a much more ambitious plan in store. If you add in FLV support then this is interactive television.

It sure would be great to make console games with AS3 and deploy them to Wii via SD cards as a native console binary. Casual gaming and game development would never be the same. If a specialized Wii Adobe Flash Player contained an intrinsic API for their controller we could make games with Flex Builder or Flash Authoring exporting a SWF compiled against a custom .abc file. Casual platform gaming meets the Adobe Engagement Platform.

Disclosure: I own shares of both Nintendo and Adobe.

Cheers,

Ted :)

Is Flex productive? TagTV Total Development Time == 8 Hours

TagTV has been an ongoing project for me over the past 2 months. It started as a demo for MashUp University on July 8th but has evolved over time. In total I have spent 8 hours working on TagTV including the port to Apollo. 8 hours seems impossible but in actuality Flex 2 SDK, Flex Builder, and ActionScript 3 are wildly productive as a development toolset.

July 8th


I started coding TagTV on July 8 before presenting at MashUP University. I was swamped with work and needed a great mashup demo. At 10AM on the 8th, I put on my headphones (the please do not bother me kind) and cranked the iTunes and started coding.

Hour 1:
First I downloaded the Adobe Flickr and YouTube APIs from labs.adobe.com. I obtained a developer API keys from Flickr and YouTube and got search results returning from both APIS. I then wrote a custom item renderer for the TileList called ImageThumb.mxml and wrote the thumnail URL into this component for both services. This provided the foundation for the base application.

Hour 2&3
The next 2 hours trying to get TitleWindows to display when the TileList was selected. YouTube does not allow direct access to the FLV video files, so I decided to wrap the YouTube player into the application and use it as a component. Think of the YouTube Player as a distributed component(SWF) and you get the idea. So after 2 hours of development, I had a TileList and a pop-up desktop working that played FLV video and displayed larger Flickr images. If the YouTube integration hadn't been so painful, I could have completed this much faster but that is development, you never know when you are going to hit a snag.

Hour 4:
Next I thought it would be nice to save searches for Images and Videos. I added a LocalSharedObject to store some data on the local machine. (LocalSharedObject are an object oriented cookie available in Flash Player 6+.) I began saving search keywords. I exposed all this in a pop-up TitleWindow called SettingsWindow.mxml. The panel was hidden off to the side of the app and animated to the edge, it allowed more room for image viewing.


July 9

Hour 5:
I spent the day working on my presentation slides but spend about an hour working on the polish on the app. I added some UI states and transitions and focused on making the application simple and easy to use. At some point I went overboard with the transparent images/video windows. I wanted to show that Flex supported very expressive applications and went a bit too far. Many of these additions have now been removed in the current application.

Hour 6:
I extended the SettingsWindow Class to support storing favorites from the Image and Video windows. I added a reference to the settings window into the Image and Video windows so they could talk directly to the settings class. The buttons in the image/video windows then just called a method to add in a favorite with name/url arguments. I appended the localSharedObject to support favorites as a data structure and added the method to append this. I then wrote some code to read the data and populate the List component within the settings window. Once I got this all working I knew I had a pretty good app worth demoing at Mashup University.



July 10

I presented TagTV version 0.4 at MashUp University and then headed over to the Flex 2 ship party that afternoon. The presentation went very well and I followed up with quite a few attendees who were interested in the application.

I got very busy at Adobe...
Time Passed...
Time Passed...
Time Passed...



Sept. 1

I was informed that I would be presenting "5 Minutes of Fame" at "The Future of Web Apps Summit" in San Francisco Sept 13 (yesterday). I was a bit puzzled as what to present given the talk was only 5 minutes long. Obviously I would need a good demo and something new to show. Internally I have been closely following the Apollo project during development. Mike Chambers and Christian Cantrell helped me get set-up with a very early pre-alpha build of Apollo.

Sept. 11
I sat down and decided that I would give TagTV a full facelift and port it to Apollo for the "Future of Web Apps" presentation. Ideally I would show a rich RIA application using Flex, then pull it out of the browser and install it as a desktop application. Given the state of Apollo at this point I had all the requirements I needed. I again put on my headphones, cranked up iTunes and started coding.

Hour 7:
I initially thought that porting TagTV to Apollo would be hard as I was learning this for the first time. I decided to do the porting first in case I ran into problems. I ported the app to Apollo completely in 10 minutes including creation of the AIR file. Apollo apps are drop dead easy to make by adding an application.xml file denoting application metadata and packaging assets into an AIR file. I am still really shocked how easy this was especially having written desktop applications and the pain of building installers for multiple platforms. I spend the remainder of the hour tweaking the UI of TagTV. I removed allot of the transitions and transparency in the app. I added a initial UI state with the search in the middle. I also added a background using the vectorDrawing API, I borrowed some code from Kevin Hoyt for drawing gradient fills. I also edited the CSS for the application and tuned the font sizes making things larger and easier to use.

Hour 8:
I tweaked the rest demo by posting the AIR file to the server and adding in a View Source window and a link to the AIR file. The About page was just another MXML Class that contained some text about the app history etc. I generated the Source Code view using Flex Builder and just added a button to link to that page. I then tested the application to no end trying to break it. I found about 5-6 small data errors and added some context code to solve these. Mostly they were data entry errors where I wasn't handling the empty case.


Sept. 12th 10AM

I did a dry run at the Palace of the Fine Arts auditorium with Ryan Carson. We chatted about Apollo, Flex, Flash and I showed the demo to the other 5 minute presenters.


Sept. 13th 12:10-12:15

Presenting something for 5 minutes is a pretty intimidating experience. I missed some details during my presentation mostly along the lines of productivity and Flex. I wanted to say that Flex is very productive and that I had only spend 8 hours on this app but those words just didn't come out of my mouth (hence the blog post). After it was over one of the other speakers who had yet to go asked me "what was 5 minutes like?" I stated it didn't seem like 5 minutes at all, it went so fast. I was talking and the next thing I new, I heard Ryan say, 30 seconds.

The demo worked flawlessly and I am very excited about "The Future of Web Apps" because Apollo will be center stage in the next phase of web and desktop development. To think that we will see Apollo ship in the coming year is really exciting. It is one of the reasons that I joined Adobe because it changes the game completely. For the first time cross-platform desktop applications can be made easily and deployed with the same file. Apollo has all the hallmarks of a killer app.

Enjoy TagTV!

As always more to come!

Regards,

Ted Patrick
Flex Evangelist
Adobe Systems

MAXUP - tshirts, venue, 3 days!

We are getting T-Shirts for MAXUP speakers, see the sample design below, red or black? We also secured a larger dedicated area in the Venetian for MAXUP outside of the exhibition hall. This allows us to get a larger projector and seating for many more people. MAXUP will run on Oct. 24, 25, 26 from 10:30AM-5:00PM daily. Also we have posted an official page on http://barcamp.org/MAXUP for scheduling and details.

MAXUP Logo:


Here are some TShirt Samples!





Red or Black?

Ted :)

My First Apollo - TagTV

I have been working with Apollo non-stop since Mike Chambers got me an internal build about 2 weeks ago. Apollo just rocks. Even at this early stage, it is by far the easiest way to create real desktop applications. I will be presenting my TagTV application at The Future of Web Apps Summit in San Francisco tomorrow.


TagTV 0.7 Update


Pictures of the Apollo App:






I am working on 2 other Apollo applications for IFBIN 2.0 and one other that should become visible soon. IFBIN 2.0 is coming along well and I should have a beta when Apollo is available on Adobe Labs.

More to come,

Ted :)

MAX - ActionScript 3 Performance Tuning - Strong Typing

At MAX 2006, I will be speaking on ActionScript 3 Performance Tuning. This past week I sat down with some engineers that worked on the new ActionScript Virtual Machine (AVM2) and did a deep dive on typing. Typing is very very very important in AS3 because it directly affects compiler output. Unlike AS1 and AS2, AS3 bytecode changes when typing information is added and the performance gains are substantial.

I sat down with Peter Grandmaison last week and he explained some of fine details of the new AVM2 in regards to member lookups.

Example Member Lookup:

myObject.x //find the value of x on myObject instance

There are essentially two types of member lookup routines within AVM2 as follows:

1. Strong references are equivalent to C++ member access (the cost of dereferencing an offset from a base pointer).

2. Weak references are a hash lookup.

Basically a weak reference is about 10X slower than using a strong reference in terms of clock cycles. Considering that member access is the single most used feature within any application, you can see how using weak references can add up quickly.

Here is a nice AS3 example showing use of Strong and Weak typing for function arguments and return types. If the reference is strong, the compiler will emit different bytecode with the SWF output file.

Strong and Weak Typing in AS3:

dynamic class Base extends Object {
var x:int;
var y:int;
}

class Example extends Base {
var z:int;
}

function a(o) //return weak
{
return o.x; // weak
}

function b( o ):int //return strong
{
return o.x; // weak
}

function c( o:Object ) //return weak
{
return o.x; // weak
}

function d( o:Object ):int //return strong
{
return o.x; // weak
}

function e( o:Base ) //return weak
{
return o.x; // strong
}

function f( o:Base ):int //return strong
{
return o.x; // strong
}

function g( o:Example ) //return weak
{
return o.x; // strong
}

function h( o:Example ):int //return strong
{
return o.x; // strong
}


function i( o:Example , prop:String ) //return weak
{
return o[prop]; // weak
}

function j( o:Example , prop:String ):int //return strong
{
return o[ prop ]; // weak
}

function k( o:Object ) //return weak
{
return o.z; // weak
}

function l( o:Object ):int //return strong
{
return o.z; // weak
}

function m( o:Example ) //return weak
{
return o.z; // strong
}

function n( o:Example ):int //return strong
{
return o.z; // strong
}

function o( o:Base ) //return weak
{
return o.z; // weak
}

function p( o:Base ):int //return strong
{
return o.z; // weak
}



Strong Typing also provides many benefits in terms of productivity. Flex Builder code hinting is based on typing information and compiler warning/errors are emitted using -strict compiler option. These productivity features are invaluable in lager projects and result in dramatically higher code quality with higher levels of performance.

As a Macromedia customer, I have been working with AS3 for the past 22 months since October of 2004, long before I was an Adobe employee. Somehow (Thanks Gary, Edwin, Werner, Chambers, Downey!!!) I was selected along with 5 other customers to play with a very early version of the AS3 compiler and AVM+ runtime (now AVM2). We were handed a command line compiler for AS3 and a modified Flash Player that could read and process ABC bytecode files. We had to bootstrap the ABC files into the player and workflow was quite a bit different from today. During the testing of the early builds of AVM2, I ported a 2D Tile Engine to AS3 to see if it would perform better. I got it to support 18,000 Tile Objects and a TileMap 50,000 X 50,000 pixels square with fluid motion and gameplay at 50FPS. I am going to port the tile engine to the release version of AS3 and optimize it for my MAX session on AS3. I will be showing the tile engine working in both Flash Blaze and Flex Builder so this session is important for both Flex and Flash developers.

There are tons of great AS3 performance tips and workflow. Come to my session at MAX and make your AS3 applications fast, fast, fast!!!

See you at MAX 2006!


Cheers,

Ted :)

Ahhh the irony!

Microsoft Corporate Innovation Website

Microsoft gets it, use Adobe Flash Player!

Cheers,

Ted :)

MAXUP - The Community Track at MAX 2006

MAXUP is an open community-driven "BarCamp" style track at MAX 2006. MAXUP will be center stage at MAX in the Community Lounge. I will be leading MAXUP during MAX 2006 with Chafic Kazoun, Raymond Camden, Ryan Stewart, Ed Sullivan, Dave Wolf, Danny Dura, and others.

Here is the plan:

Anyone at MAX 2006 can participate in MAXUP!!!

Types of Presentations at MAXUP:

- 5 Minute Showcase of your Application/Site/Service.
- Technology presentations.
- Tutorials/Workshops
- Technology Panels
- Meet the Engineers
- Adobe Community Meetings
- Technologies: Web/Flex/Flash/Apollo/ColdFusion/Other

The MAXUP committee will be formalizing MAXUP scheduling.

More to come!

Regards,

Ted :)

Ted's Top 10 Reasons to Attend MAX 2006 - Vegas Style

There are a lot of reasons to go to MAX 2006 but here are the real reasons I am going.

Ted's MAX Top 10 - Vegas Style!!!

1. The extra oxygen in the Venetian, I will be fresh for late night coding at 4AM.

2. The single best place to learn Flex, Flex, Flex!!!

3. Bling, Bling, Consulting GIGS!!! There is no better conference for picking up new gigs than MAX!

4. MAX Sneak Peaks of future Adobe products while sporting Elvis attire!

5. Coding 24/7 when new bits hit the wire during MAX!

6. ActionScript 3 Performance Tuning by Ted Patrick!!! I will be sneaking some new tools and tweaking AS...

7. Kicking everyones a** playing 12 person Halo! Downey, Dura, Chambers, I got your number!

8. FlexTV Live from Vegas.

9. Vegas, Vegas, Vegas!!! If you miss MAX this year, you personally need a new Virtual Machine!

10. Free Drinks, although Venetian security might have issue with me coding at the Craps table.

Yes, my top 10 list goes to 11!

11. MAXUP (Top Secret Plans in the works!)

See you at MAX, Vegas or Bust!

Ted :)

Flex Builder Memory - Minimize Flex Builder and gain 300MB!

Windows XP does not like apps running in a virtual machine. In all .NET and JAVA apps I have found that Minimizing and Maximizing them forces WinXP to clean up memory allocated to the application process. Doing this with Flex Builder 2 will drop about 300MB of RAM out of the Java/Eclipse process instantly. If you are seeing things act sluggish, drop Flex Builder to the TaskBar and back.

I wish it was a problem that Flex Builder/Eclipse could fix, but this a classic Windows XP issue. $100 this is still broken in MS Vista, maybe I should just switch to OSX!

Cheers,

Ted :)

Apocalypse 2.0 by Ryan Stewart

Ryan's post highlights the fragility of AJAX in terms of browser dependencies and future changes. AJAX does not have versioning across all parts of it's stack (DOM, JS, XML) and given the browser wars are heating up, it means trouble. Apocalypse 2.0 - the day the web broke.

Enjoy the read,

Ted :)

XMPP with Flex

Nick Velloff ported the XIFF XMPP library to AS3, great work Nick! I have this hidden love for XMPP/Jabber, I know its irrational but I fell for Jabber in 2001. When Flash 5 shipped, I worked with the original Jabber team to get Null byte support into the base Jabber presence server long before XMPP was an acronym. I then spent 2 years building a very large scale Jabber project which unfortunately never saw the light of day (grumble,grumble).

On the project we built a Jabber cluster on FreeBSD that scaled to 50K concurrent users. I have always believed that Presence + Flash Player is one of the best combinations of technology. On Apollo, presence addition has the ability to be a killer app. XMPP supports so many features/extensibility in the base protocol. My favorite XMPP feature is called OOB(Out Of Band ) that allows you to append extensible data into a message packet. Clients that can understand the OOB packet digest it, otherwise it is ignored by standard Jabber clients. When building custom applications on Jabber protocols, OOB is essential. It allows your custom client to send information that others cannot see or understand. Say you wanted to send a form to a user via IM, with OOB you just add the form data into an OOB message within an IM. The user will get the message and the custom client can expose the form as an attachment (attachments for IM, cool!). Once you have the ability to create a custom client, you begin to look at Presence very differently. Everyone thinks about Presence as an IM client but when you can make clients easily, you can support so much more.

On the project I worked on we wrote 3 custom clients. 1 was the main application called Intratainment, the second was a Bot called Fred (he moderated chat rooms in AS1 ), and the third was a client for our database. See all three of these application could talk to one another freely via OOB messaging. If you needed to add or query the DB, you tested if it had presence, then you would send it an OOB IM message and it would return a message. It is weird to think about a Database as having presence but indeed it does. Custom clients for Jabber are a great thing.

I cannot wait to dive into XMPP again with AS3. Nick, please contact me at tpatrick@adobe.com!

Great work Nick!

Cheers,

Ted :)




© 2008 Ted On Flex