Enterprise Cafe

I thought it would be cool to talk about this app because chances are that you haven’t heard about Enterprise Cafe. So what is Enterprise Cafe? It is an AIR application (:D) that aggregates a big number of resources on the following topics: LiveCycle, Acrobat, Connect, ColdFusion, Flash Platform.

Once you log in using your Adobe ID account and choose, for example, the Flash Platform, you’ll see a screen like this:

Enterprise Cafe helps you to stay in touch with the community (you can access Adobe forums from this app), receive news (you’ll find the success stories posted here very interesting), check out the latest blog posts and videos using the incorporated RSS reader and Adobe TV section, or check for Adobe events.

If you want to convince your team or boss about the value of the Flash Platform, then you should definitely take a look at this app. You’ll find the information you need to convince them.

Install Enterprise Cafe

You can download the application from here.

Flash Builder’s Lost Features: Profiler

Here is the second episode of the Flash Builder’s Lost Features show. This time I chose to talk about Flash Builder’s profiler and give you enough info to feel comfortable using it if it’s new to you. Profiler helps you to locate memory leaks, identify excessive object allocation, or analyze execution times.

With the extension of the Flash Platform on mobile devices, I think that it’s more important than ever to build Flash applications that run efficiently for a long time. Here is the video (you can watch the video in a higher resolution here).

If you want to read more about the “art” of profiling then please take the time to read the official (here and here) and Ilan Avigdor’s article.

Flash for mobile contests

This summer you have many contests to pick from if you want to create Flash content for mobile (Android 2.2) and win something while doing it. You can win fame/money/software/mobile devices — not neccesary in that order and not all at once– but you get the point :D.

For more details, check out these contests:

Good luck!

Unlocking the true potential of smartphones

Lately, I’ve been thinking and working a lot with multiple-screen applications that run across desktop and Android devices. The reason for doing this is pretty simple: my first four computers were less powerful than the current smartphone I’m using these days.

And still I was doing far more things then I do with my phone now. So what are we using the smartphone for? I think we use a smartphone mainly for: making phone calls, Internet browsing, mailing, GPS, listening to music, and playing games. But is this all we can do? I think not.

One of my dreams is to be able to use my phone for tasks that I accomplished using the same tools 5-10 years ago. Let me give you some examples: we all have at home a number of remote controls: for the TV sets, DVD player, sound system, Air Conditioner system, TV set-top-box and the list could go on and on. The basic interaction between us and these devices hasn’t changed lately. Maybe you could replace some of these remote controls with an expensive one, touch based. This is only a compromise. We should be able to use our smartphones for these kinds of tasks and much more.

I mean we all carry the phones all day; they have beautiful screens and you can interact with them using the touchscreen interface. The biggest issue that prevents us from doing this is that most of the systems we are using today don’t talk the same language, nor do they offer a common API to interconnect them.

Hopefully this is starting to change. With the extension of the Flash Platform on smartphones (for now only on Android phones, but soon it will be available on other phones too) and on the TV sets/set-top-boxes we are one step closer to achieving a unified system. So instead of relying on manufacturers to expose a common API, we can leverage a common runtime that runs across devices. Imagine that you’d be able to use your smartphone for:

Some of these are already possible using some expensive home automation systems. Others are possible using a cloud solution. I think the ubiquity of the Flash Platform on a larger number of different devices and the huge number of Flash developers will make many of these available in the near future for everyone who cares and decides wisely what devices to buy.Why? Because on one hand it will be cheaper to develop a solution for multiple devices due to one common runtime and one language/framework to learn and, on the other hand, the Flash community is full of people who are not afraid to dream and who love to push the limits (just have a look at projects like Nexus One Wireless Slot Car Gas Pedal, Audiotool, Screenergy, or Creaza.com if you don’t believe me).

Until then, I will keep dreaming and try to build some of these myself. I’m looking forward to Google TV and the first TV sets that “speak” Flash.

What do you think?

LATER UPDATE: I’ve just seen this cool Android app build with AIR and Flex 4 that controls Freebox STB: http://chubby75.com/blog/?p=9

AIR apps for viewing Android pictures on desktops

This week I had time to play with another idea for Android/Desktop applications: a picture viewer. My friend Alex Chiculita from the AIR team gave me this idea. A couple of weeks ago he played with a multi-screen application that let you load a picture from a device and send the picture to all the other devices connected to the same Wi-Fi network (the app runs on Android, Windows, MacOS, and Linux).

While playing with his application I realized that I could transform it into something more helpful (at least for me). Here is the challenge: we all use our smartphones for a lot of things, including taking pictures. Having a decent digital camera (this is what a smartphone became lately on top of a mobile phone) with you all the time means you can take interesting pictures. And usually you want to show these pictures to your friends or family. However, here is the problem: while taking pictures is extremely easy, sharing them involves cables,  Bluetooth, or seeing the picture on the phone’s screen.

My solution to this problem is AndroidPictures (the above pictures show AndroidPictures in action on my mobile). This Android application lets you browse through the pictures taken with the phone and scale/rotate/pan them. On the desktop, you use the companion AIR application for AndroidPictures, which displays the pictures sent by the Android application. All you have to do to see the pictures with your family is:

Watch the video below to see how it works.

The making of

I used Adobe AIR and Flex 4.1 for creating the Android and desktop applications. In order to connect the Android application to the desktop apps I used Peer-to-Peer direct routing (the same approach used in my previous app). As I already explained, if your local subnet (for example your home Wi-Fi) supports broadcasting then you can create a NetConnection without using Stratus or a Flash Media Server (you connect the NetConnection to “rtmfp:”). This is one of the new features available in Flash Player 10.1 and Adobe AIR 2.

Once you have the clients connected, you can send messages from any one to all of them. And the cool thing about using this approach as opposed to Socket servers is that you don’t have to manually manage all the clients. Your program sends a message and the clients decide how to handle the message. You simply don’t care how many clients are connected. You can read more on my fellow evangelist Tom’s blog.

Because I wanted to use this approach for other apps, I created a simple library (you can get the library’s source code from here; unzip the archive and import the PeerToPeer.fxpl project in Flash Builder). You’ll find three ActionScript classes, and the magic happens inside of MultiCastingService class. The public interface of this service is:

The service throws these events:

The simplest way to use this service would be:

    var service:MultiCastingService = new MultiCastingService();
    service.addEventListener(ServiceEvent.RESULT, onResult);
    service.addEventListener(ServiceEvent.CONNECTED, onStatusChange);
    service.addEventListener(ServiceEvent.PEER_CONNECT, onStatusChange);

    service.connect();

    private function onResult(e:ServiceEvent):void {
        if (e.what == "picture") {
            //do something with the bytes: e.body
        }
    }

    private function onStatusChange(e:ServiceEvent):void {
        if (e.type == ServiceEvent.PEER_CONNECT) {
            if (service.neighborCount > 0) {
                //others are connected; send a String message
                service.post("this is my message");
            }
        }
    }

For the Android app I had to tweak the Spark List in order to make it works with both touch and click events. For the picture interaction I used a library created by Tim Kukulski, a member of the Adobe XD team. This library makes it easy to interact with pictures by letting you use gestures like zoom, pan, or rotate.

The desktop application waits and responds to two kinds of messages: picture bytes and pictures transformations (rotation, zooming, or panning). Every time a picture is selected in the Android app, I grab its bytes and send them through the “wire”. When I transform a picture in the Android app, I grab the Matrix and send it to all the connected clients. The client applies the Matrix on the picture. And the rest is history :)

All in all it was pretty easy to put together these apps and I had a lot of fun while doing this. If I have the time, I will try to see if I can play the movies recorded with my Android by extending the current code.

Getting the apps and source-code

You can download the source code from here, install the desktop application from here, and the Android application from here. If you want to run the Android application, you need to install Adobe AIR on your Android (more info here).

If you have ideas for more applications that take advantage of having AIR running on Android phones and desktops please let me know. If you create something interesting, I’d love to hear about. I already have another cool idea, this time more complex and even more fun!

Have fun with the Flash Platform on multiple screens!

Creating multi-screen apps for Android and desktop using AIR

Today, I finished a project I’ve been working since last week: a desktop MP3 Music Player that can be controlled by any number of Android phones. I built these apps using Adobe AIR and the Flex framework. Below you can watch a video with these apps in action, running on Motorola Droid, Nexus One, and my laptop (you can watch here the video in a higher resolution).

The communication between the remote controls (AIR apps running on Android phones) and  desktop player is done using the peer to peer features of AIR 2 and Flash Player 10.1. Basically if all the parties are connected to the same subnet and if the network allows broadcasting, then you can create a group and send messages to all the members without the need of Stratus or some other service/server.

Actually, while working on this project I created a small class that enables you to quickly create clients who connect to a local network. Of course, this is only one way of connecting two or more clients. You can use sockets if you want, or one-to-one communication (peer2peer). But I think in both these cases you have to work more, because you have to manually manage all the parties involved. If you want to find out more about peer2peer features of the Flash Platform take a look at this MAX session and read my fellow evangelist Tom Krcha’s blog.

The Android app was more fun to build because I used the touch input mode along with click input. I enjoyed a lot tweaking James Ward’s code for scrolling a Flex List. Believe it or not, again I used Illustrator and Flash Catalyst a lot to create the skins or parts of them.

Until I have the time to put together an article explaining  how these apps were created, please enjoy the video and play with the apps: desktop file and APK file. And from here you can download an archive with the source code. If you need the Adobe AIR runtime or AIR SDK for Android, please sign in for the pre-release group here.

What do you think?

Welcome to Hero – the next release of Flex SDK

Yesterday we announced Hero. This is the code-name for the next version of the Flex SDK. I think you’ll find the main themes for this release very interesting:

Among the big news is that both mobile and desktop needs will be served by the same core Flex framework (Hero). Previously, we said that Slider (the code name for the Flex Mobile Framework we announced at Max 2009) would be a separate framework from the Flex SDK. I think this is excellent news; having one framework to target both worlds (mobile and desktop) means that you, the developer, have to spent less time learning and coding.

You can read more about these themes here.

For now there are no public builds for Hero. We are working on this and pretty soon we will have public builds. Keep an eye on this site for Hero white papers and builds.

Two amazing Flash projects: Screenergy and Creaza

If you haven’t seen these two projects, then please keep reading. I’m sure even if you are familiar with all kinds of cool rich Internet apps these two apps will surprise you. And to tell you the truth, I was surprised too. It seems that every now and then some cool projects pop up and they manage to move what is possible with the Flash Platform to a whole new level.

Enough talking, let’s start with the first project. Screenergy.com is a multi-touch 46″ full HD table with object tracking capabilities. Well, these specs are cool but not something to amaze you. Yet! They used this cool hardware as the platform to run AIR applications that allow people of any age and background to interact visually with a system that handles and displays loads of data. Basically, the system can recognize a specialized card you place on the table and display the information related to that card. You can move the card on the screen, and you can expand and change settings. Here are some pictures to help you better grasp the amazing interactivity that Screenergy provides:

This project was built for the Global Climate conference in Copenhagen (2009). And the visitors and VIPs were able to visualize the impact that different changes have on the climate. Here you can get a taste of the application and here is a video with the table in action:

I knew about this project from the beginning because the people who built it approached me back in October 2009. They told me “we want to build an application for a touch table using AIR for the UI, and the client is one of the organizations behind the Copenhagen’s Climate Change conference. We have about a month to do it! “. Then we talked about AIR 2 features (at that time it was in private beta) and how they could leverage AIR 2 features for their project. And then, before Christmas, I received an email from them telling me that the project was delivered on time and it was a success.

The second project, Creaza.com, is delivered as a web application using Flash Player. It is a suite of four programs: a mind-mapping tool, a movie editor, a sound editor, and an online comic tool for creating cartoons/digital stories. Funny,  I know the guys behind this project too :) I had the pleasure to meet them back in 2007 during a user interview around Flex Builder 2 at that time.

For me the most amazing product from this suite is MovieEditor. It is one thing to play video in the browser and a totally different thing to be able to create a movie inside the browser using a web application that is pretty close to desktop video editors in terms of features and performance. You can use this timeline-based video editor to create movies  complete with professional-looking titles, transitions, effects, animation, music, and narration. You can test this app here.

I think these two projects are not at all two lonely rain drops lost in an ocean. I strongly believe that this is the natural result of the maturity and power the Flash Platform has achieved. The Flash Platform truly makes easy things easy, and hard things possible. There are more than 3 million Flash developers according to Evans Data, and many of these developer started with the Platform in the past two years. There are tons of libraries, frameworks, and tools to pick from (both commercial and open-source). There are many companies and agencies with a lot of experience in building rich Internet applications.

In a nutshell, I’m seeing an ecosystem that is growing and innovating faster than ever. Thus, I’m sure that many more cool projects will cross my path and I’d be happy to talk about them. And remember, these two projects are not just a proof of concept; these are fully functional projects that make money. The companies who built them are not huge corporations – quite the contrary. But what they may lack in terms of money they make up in imagination and a belief that everything is possible!

What do you think?

Flash Builder’s Lost Features: Call Hierarchy

Last week I had the pleasure to present to the first edition of gotoAndSki() conference, up north in Norway. During one of my sessions people said that it’d be a great thing if Adobe could present the Flash Builder new features in such a way that it makes easier to learn them. They suggested instead of just throwing big PDFs to the community, we could also have blog posts tackling one feature at a time. I think this makes sense; we are all too busy with current and upcoming projects to find the time to go through manuals.

So here I come and I start today a series of articles called Flash Builder’s Lost Features. Today I’ll present Call Hierarchy command. This command makes it easy to find all the places where a particular property/variable/function/method is used in your project. It works for ActionScript or Flex projects.

To use this feature, right-click the variable or method you are interested in and select Open Call Hierarchy.

When you do this, you should see in Flash Builder a new view (named Call Hierarchy) with all the occurrences of what you’ve selected. If you double-click an entry, Flash Builder will open the file where that entry can be found and you can inspect the code. Also, you can extend a node to see the call stack trace. And all of this can be done without having to run the project.

This is it for now. Like I said, it is a small and simple to use feature, but it is pretty powerful. In the next episode I will talk about Flash Builder’s Profiler.

Flash Coffee Bucharest

I know it has been way too hot lately, especially here in Bucharest. I have good news. First, next week the weather is expected to be cooler.  And second, I plan to host a Flash Coffee Meetup in Bucharest! The event will take place next Tuesday (June 22nd) at Grand Cafe Galleron (near La Mama restaurant, P-ta Romana) starting at 5PM.

There are only 15 tickets so hurry up and use this link to register. I’ll pay for the coffee and bring an Android phone with Flash Player 10.1 and Adobe AIR installed on it. Thus we can enjoy a good cup of coffee on a cold day (something that we’ll pretty soon miss :D) and talk about the latest Flash Platform and mobile device news.

You can register here. See you next Tuesday.

← Previous PageNext Page →

Switch to our mobile site