Monthly Archives: November 2006

Flex Search Working Group


I have been talking with Clint Modien, Andrew Trice, Aaron King, Tom Ortega, Chuck Freedman, Darron Schall, Ray Camden, Matt Chotin, and others about Flex search and we have decided to create a working group. The goal is to create the best solution to aggregate and search the resources of the Flex community. To start the Flex Search Working Group we have established a Yahoo Group here:

http://groups.yahoo.com/groups/flexsearch/

If you would like to help in the Flex Search Working Group. Please join the discussion list.

Flex has so many resources across many domains, blogs, discussion lists, forums and many of the best resources are completely hidden from view. I know were things are but for many new to Flex things are just plan hidden and hard to find. Ideally in working through the community we can solve this problem as a group.

As part of the working group, I will be putting all the work I have created on Flex Search at Flex.org into the mix. The spiders, db schema, caching logic, lucene code will all be available to view, change, and ultimately improve. Additionally Clint Modien has agreed to help by through the contribution of flexsearch.org and the existing logic that went into the Custom Google Search engine.

It should be an interesting exploration and I think we can make a lot of progress toward creating a great search resource for the Flex community.

Still searching…

Cheers,

ted :)

FabChannel Music Addiction


There are few things that make me stop using Apple iTunes but FabChannel seems to be an amazing place to watch live music. I have found 6 new bands that I would have never found otherwise and the Flash video interface is great. The ability to deep link into a concert video by track is really a great feature. This would be a killer Apollo app especially if I could purchase/download the music videos/mp3 files locally.

I was a huge fan of Napster during the day. The funny part is that I focused on finding live music and bootlegs that I could not find elsewhere. If one considers quantity of music outside of the recording industry, the market and value in what FabChannel is doing is impressive. FabChannel is packaging the music archive of 600 concerts at the Paradiso in Amsterdam allowing anyone to enjoy the music online. The service has some really unique content features and the Flash based UI makes navigation of this app really easy. The backend of this application is done using Flash Media Server FLV streaming and the video quality is amazing. The mix of deep linking into concerts is a new medium and if I had the chance to purchase tracks from this system I would spend money here.

Hats off to Owen Van Dijk for turning me onto this great site, he is also responsible for some of the magic of the service development. It has extended my music collection in a new direction. Check out the FabChannel when you get a chance.

Cheers,

Ted :)

Mashup University at MIT Jan 15-16


I will be speaking at Mashup University at MIT Jan 15-16 and will be talking about Apollo and Flex in detail. I have started development of a new mash-up game using Flex and Apollo that merges mapping, strategy, and real-time messaging. I spoke at Mashup University earlier this year and had a blast, David Berlind recently posted this photo of me to his blog on ZDNET (Honestly, the fish was this big!)

If you have never attended a Mashup Camp or Mashup University, I strongly encourage you to join in and register. The unconference revolution is an amazing change allowing for rapid learning and sharing of new ideas on software development. The format and size of these venues is ideal for real learning.

Mash-up University Registration

Mashups are becoming increasingly important as they deliver distributed computing applications to the mainstream. As the web transitions from a pages to applications, we are seeing mashups integrate various services and components into applications that were not possible before. There are many developers exploring the mashup space and gluing together distributed components and services to make something new.

I believe that Flash Player 9 will quickly evolve to be the dominant mashup client as more developers realize productivity of Flex development tools and the feature capabilities of Flash Player 9. Here are a few of my favorite features and trends that Flash Player 9 and Apollo deliver for mashup developers:

1. Distributed components – Load visual or data components directly into your application with a local API. We are starting to see many services deliver SWF components, YouTube, MotionBox and BrightCove are delivering video players to expose their streaming media APIs to end users and application providers.

2. Distributed Real-Time Data Services – Exposing Messaging and Data Synchonization as an API. Flash Player supports push based messaging allowing clients to be developed without poll based logic. This allows a group of users to synchronize data independently, and enables solutions for scheduling, workflow, inventory, and collaboration.

3. Direct Protocol Integration – flash.net.Socket allows protocol development for direct communication with SVN, FTP, NNTP, XMPP from the mashup application client.

4. Offline use – Applications that provide behavior offline. I am not alwasy online and supporting this behavior is a natural fit for Flash Player and Apollo. With local persistence and network detection, you can queue data up when offline and sync when online.

5. Rich Media – Integrated audio, video, images in both read and write formats.

6. File Literacy – The ability to read and write data to the local file system enables all sorts of new mashup use cases with Apollo.

I look forward to seeing everyone at Mashup University at MIT early next year.

Ted :)

Goodbye Blogger, Goodbye Google!!!


I have been with Blogger for 365 posts. Today they decided to upgrade the service and killed off support for RSS, RDF forcing everyone to ATOM whether you like it or not. This screwed up 100% of my syndication and left me with no choice but to undo Blogger.

For Goggle to screw up Blogger this badly shows where that entire company is headed, it is just a big experiment on the verge of implosion. I depended on their service, they screwed up, and lost a customer. Quality matters and this sort of thing shouldn’t have happened.

Goodbye Blogger, Goodbye Google.

argggggg!!!!

ted :)

2 Flex Search Mashups


It has been less than 24 hours and there are already 2 Flex Search mashups out there. Kudos to Renaun Erickson and Andrew Trice for their work mashing up the Flex Search API. Its pretty cool that mash-ups would occur so quickly but publishing an open API has made me see the benefits in a way I hadn’t before.

Flex Search by Renaun Erickson
Flex Search by Andrew Trice
Flex Search by Me!

Mashups and Flex were made for one another. Taking components and distributed data sources and blending them into distributed applications takes seconds in Flex. Regardless if you are talking to REST XML, SOAP Web Services, AMF Remoting, FDS Messaging, FDS Data Management the presentation layer development is very simple to merge data across domains. This integration simplicity gives developers the freedom to experiment and explore without wasting time. My focus in the search app was the data API not the presentation tier.

So why did 2 mash-ups appear in less than 24 hours?

1. Flex is productive. Working at the component level lets you be more productive and deliver real apps in far less time. Dare I say it but Flex is Rapid Application Development, RAD.

2. Data integration is a snap. Simply call the search component like it is local and data is returned with data typing. Here is the tag that is used to talk to Flex Search:

<mx:RemoteObject
id=”ds”
destination=”ColdFusion”
endpoint=”http://www.flex.org/flex2gateway/&#8221;
showBusyCursor=”true”
source=”api.search”>

To call this with a Button in MXML you would do this:

3. Clean API in AMF Remoting – AMF exchanges data in a binary format with typing information. When data returns you can use the data directly as the model for controls through the dataProvider property with binding. In my code I simply bind the DataGrid.dataprovider property to the ‘lastResult’ of the method called. When data arrives, the DataGrid is automatically filled.

What is interesting is that an open API allows developers to scratch an itch. If a UI doesn’t work for them they can change it independently and move it into any format. From the API creators perspective it is free R&D to see what users want from the application. Who knows maybe the right choice is to encourage the community to innovate atop the API. Either way it solves the problem in finding thing in the world of Flex.

I have been working on a “Flex and Mashups” white paper for a long time. Jeremy Chone jokes with me about it everyday encouraging me to finish it. He stops my desk every single day and asks: “White Paper?” (deep french accent) and when I return from travelling he repeats: “White Paper?””White Paper?””White Paper?””White Paper?””White Paper?””White Paper?””White Paper?””White Paper?””White Paper?””White Paper?” for every day I was gone. Ok, I will finish the White Paper soon!

Keep posting Mashups of Flex Search!

Cheers,

Ted :)

Flex Search Alpha 1 – CFC’s


Here are the CFC’s that drive the Flex search engine output. This was my first ColdFusion project and I wanted to post the CFC’s in use. The current engine is using MYSQL’s freetext search via AMF remoting. It went through 2 major revisions, one without caching and one with caching via wddx. The current plan is to move this app to ColdFusion Scorpio and implement java serialization direct from CFQuery to the DB.

Here are the CFC’s:

Search CFC Stage 1

Search CFC Stage 2 (caching wddx)

All the other work on this effort was handled in the DB and the spider. Considering what is occuring in these CFC’s it is a very small amount of code. The key value in CF for me is that it allows you to focus on the logic and deliver at a higher level. Getting the basic search output was easy and then it got into tuning the DB. Considering that I am learning CF, it will be interesting to see how this evolves over time. Easy to create, easy to maintain, simple. Go CF!

Cheers,

Ted :)

Flex Search Alpha 1


Flex Search is an optimized search for Flex across all content both within Adobe, discussion lists, and the development community. The focus of development has been the search logic and content aggregation. The user interface (flex development) was limited to 30 minutes here. The current engine contains the collective history of Flexcoders, FlexComponents, Flex Developer Center articles, Flex documentation, AS3 documentation, and soon blogs from the flex community.


Flex Search Alpha 1 – http://www.flex.org/api/FlexSearch/Alpha1/

The Flex Search Alpha contains a base remoting API. The details of the API can be located within the source code of this application located here: http://www.flex.org/api/FlexSearch/Alpha1/srcview/index.html. This Search API and RemoteObject component in the source are configured to allow any domain search access. You can host Flex Search on your site and modify the UI as needed.

Features:

1. Search Flexcoders, FlexComponents, Flex Dev Center, Flex Documentation, AS3 Documentation and soon blog posts on flex.

2. Boolean Search syntax:

Cairngorm –> Search for Cairngorm
+Cairngorm -flexcoders –> Require ‘Cairngorm’, remove ‘flexcoders’
flash.net.* –> Wildcards supported

3. AMF Remoting API with server caching logic. Only unique requests hit the database as a search. 2nd request is cached. Also when the index is rebuilt, the URL’s can be replayed caching prior content.

4. Search reporting and metrics for tuning. All searches are stored.

In development:

1. User rating and Exit ratings in results.

2. Search limited to source or category > Just search FlexCoders or just discussion lists.

3. Blog aggregation – Simply add a link to this image to your page to get indexed!

4. Previews and Abstracts

5. Restful urls (bookmark and back button support).

The think that is key to understand is that only 30 minutes was spent on the user interface in flex. The interface is not a good example of Flex use and as I invest more in the UI, the evolution will become clear. This was also my first real ColdFusion application. The spider, parser, search engine are all running on ColdFusion with a MYSQL database.

I want the development of this project to be wide open in plain view. Ideally everyone can see the evolution of this application from the very beginning to the finished site. The evolution will explore how best implement search leveraging HTML/Flex/Coldfusion. Also if I were to release this as a more finished project, I think we would also miss out on an opportunity to tune this towards the community. Your feedback is important and will guide the development choices moving forward. It should be a great journey but this release is the first step of many.

Please post your feedback in the post comments.

Release early, Release often!

Cheers,

Ted :)

Flex Search Engine – How to get your site added…


I am almost ready to post the Flex search engine beta but wanted to give everyone a headstart on getting indexed. To add your blog/pages into Flex search, simply need to add the Flex button to your pages. Although the URL( http://www.flex.org/images/flexorg.gif ) looks normal, the image adds your blog/pages into the spider.

Flex.org - The Directory for Flex

Flex.org - The Directory for FlexFlex.org - The Directory for FlexFlex.org - The Directory for FlexFlex.org - The Directory for Flex

Flex.org Flex Search allows you to search FlexCoders, Dev Center Articles, Flex Components, Flex Documentation, AS3 APIs, Flex Adobe Forums, and Flex blogs/pages in one place. Add the button and get your site indexed today!

Point to Flex.org and we will add you to Flex search!

Cheers,

Ted :)

Tamarin Implications


What is Tamarin?
Adobe and Mozilla announced that Adobe will contribute source code from the latest Adobe ActionScript Virtual Machine (AVM2), the standards-based scripting language engine in Adobe Flash Player 9, to a new open source project known as Tamarin that will be hosted by the Mozilla Foundation.

What is Adobe ActionScript Virtual Machine (AVM2)?
Here is a diagram of AVM2 which explains things at a high level. JIT, GC, Verifier, Type System, Memory Manager. Fun for the whole family!

The implications for Flash Player are pretty great:

1. Flash Player is professional? AVM2 has been very hidden in non-Adobe developer circles and understanding AVM2 makes the Flash Player instantly professional. With Tamarin the rest of the world just realized Flash Player 9 is professional grade.

2. Flash Player has a JIT? Again another secret revealed to the rest of the known universe. Few actually believe that Flash Player generates native X86, PPC processor instructions within the JIT compiler. When I say this during presentations, I get stares of disbelief and then a flood of questions. Yes, Flash Player 9 has a JIT compiler.

3. Open – Flash Player AVM2 will get better and more standardized. We will see alignment with ActionScript and JavaScript 2 at a level that has not been possible before. Flash Player 10 and beyond will simply inherit from Tamarin as great developers from around the world explore and enhance.

4. ECMA 4 Everywhere – I believe the Tamarin project will result in many unexpected uses of the virtual machine. When projects are open sourced like this, they go in wildly unpredictable directions. I can imagine that Tamarin will result in ECMA 4 on the server side (Mod-ECMA4 for Apache) and wide use within 3rd party software products for extensibility.

Tamarin means that Flash Player will get better, standardized, and faster.

Tamarin means that JavaScript 2 in FireFox will be available sooner and will be much faster (JIT) with lower memory consumption.

Cheers,

Ted :)

Flex stole my mojo!


I was out last night with the speakers at MAX APAC Taipei and a very interesting discussion started late in the evening. I was curious about how Flash developers thought about Flex and vice versa. Based on the conversation I think that many Flash developers still feel that, “Flex stole my mojo!”. Having been on both sides of this discussion I wanted to share my perspective on Flash and Flex and why everyone is better off especially Flash developers.

FACT: Flex and Flash both output SWF
FACT: SWF runs in Adobe Flash Player.

Flex adds a paradigm that 10 Million developers can understand and adopt. If you know VB, PowerBuilder, Java, .NET then Flex is easy to learn and supports many of the features that you are used to. Flex supports components, bindings, container based layout, events, debugging, and more, just like structured programmers expect.

Flash Authoring is difficult to master because it contains paradigms that are not supported in any other development model. Keyframes, MovieClips, Library, TimeLine Code, Tweens, Nested Timelines. To learn all these paradigms new is very difficult and intimidating. I used FutureSplash Animator and evolved with every release of Flash to date. Looking back on the evolution of Flash, so much change occurred that I wonder if I could Flash today if I started as a new user.

Flash Authoring circa 2001 began to be pulled toward application development and away from its creative roots. I lobbied very hard in 2001-2002 to fork the Flash IDE. At the time, Flash Authoring was being forced to support multiple paradigms for designer and developer. I believed that the Flash needed to focus on what it did best, creative animation and rich media development, not application development. Rather than add tons of developer features into Flash Authoring, add them into a new product focused on application development end to end. The great part about having 2 tools is that each can serve its market better than one can alone.

The opportunity for Flash developers in Flex is adding the creative energy and rich content into Flex applications. Because Flash and Flex support the same runtime, you can add SWF content, symbols, animation, images into Flex at both compile-time and run-time. Flash developers can make Flex better, dramatically better, and there lies the real opportunity. Adopting Flex doesn’t mean that you need to learn everything but rather understand the key integration points. The best Flex applications do not look like Flex but rather embody the ideals of high end Flash RIA development. Best of all you already know the best tool for extending Flex, Flash authoring.

I am a bit biased towards Flex (I drank the Kool-aide), but I am still a Flasher at heart. I evolved with Flash, trying to make it more application like, but Flex is a better fit for me. Actually truth be told, I once thought “Flex stole my mojo” too and I was very vocal about it on this blog. The takeway from the discussion last night is that many Flash developers do not realize how to integrate with Flex. Even better is the fast that this FUD is really easy to fix. I will be posting some examples of integrating Flash content into Flex and I encourage other Flash developers who have made the leap to Flex to post example code.

The MAX keynote on Flex contained a demo by Sho where a Flex Mp3 player was skinned using CSS and a SWF file. Where did that SWF get created?

Cheers,

Ted :)