"7tip-of-the-day" Posts

Tip of the Day – Flex Builder Tips… The Flex Show style

Today Jeffry Houser posted another excellent “Fifteen Minutes With Flex” video podcast. This one is titled “Episode 15: Flex Builder Tips”.

Jeff goes in depth about all the really cool shortcuts within Flex Builder and Eclipse.

It’s a must see in my opinion. He has some tips in there that I didn’t know about, such as “Working sets”.

Great work Jeff!

Tip of the Day – Compile your AIR Applications for Flash Player 10

I was playing with Cocomo today and hit a wall dealing with the Flash Player 10 version of Cocomo.swc while using Adobe AIR. I created a new AIR application in Flex Builder 3, and pointed it to the Flex SDK 3.2. I then linked in the FP10 version of Cocomo.swc. Everything was going fine until I tried to run my application and it threw “Error #1065: Variable SoundCodec is not defined.”

After doing a bit of research, I learned this error occurs when trying to run Flash Player 10 code in the Flash Player 9 runtime. I thought Flex Builder would handle this for me automatically when I pointed it to the 3.2 SDK.

So here is the fix and your tip for the day.
Within Flex Builder:

  1. Select your AIR application in the Flex navigator
  2. From the menu choose, Project > Properties
  3. Choose “Flex Compiler”
  4. Add “-target-player=10″ to your Additional compiler arguments
  5. Click OK

This isn’t limited to Adobe AIR, you can set the target player of your Flex applications as well.

Tip of the Day – Getting started with Cocomo

So a little known fact about me… I am extremely passionate about Real-Time Collaboration (RTC) applications. I build them as a hobby in my free time, they fascinate me.

What does “Real-Time Collaboration” mean?

Real-time collaboration is using the Internet and presence technology to communicate with co-workers as if they were in the same room, even if they are located on the other side of the world. Real-time collaboration involves several kinds of synchronous communication tools such as:

  • Instant messaging
  • Group chat
  • Buddy list and other presence awareness technology
  • Whiteboard collaboration
  • Application sharing
  • Desktop sharing
  • Co-browsing
  • Voice over IP
  • Video and audio conferencing tools

So what is this Cocomo thing and what on earth does it have to do with RTC?

According to Adobe Cocomo’s Labs page:

Codename “Cocomo” is a Platform as a Service that allows Flex developers to easily add real-time social capabilities into their RIA (rich Internet applications). Comprised of both Flex-based client components and a hosted services infrastructure, Cocomo allows you to build real-time, multi-user applications with Flex in less time than ever before. And because Acrobat.com hosts the service, issues like deployment, maintenance, and scalability are taken care of for you.

I’m as jazzed as you are… how do I start?

Visit the Cocomo Labs page and follow their 4-step program under the “Getting Started” tab.

After that, I highly recommend watching both of Nigel Pegg’s sessions from MAX about Cocomo. They can be found here.

So Nate why are you so excited about Cocomo?

For many reasons, but here are my two favorite:

Reason One: I’ve been building RTC applications in my spare time for a long time, and one of the big problems that is solved by Cocomo is the fact that the service is hosted by Adobe. Of course it costs money, but with Cocomo the barrier of entry is so much lower than before. Trust me.

Reason Two: I don’t have to write any server-side code! I know some of you are thinking that this is a bad thing, but hear me out. Sure there are times where you’re going to want to have custom server-side logic. For example, a complex game with server-side hit validation and what not. In that situation Cocomo probably isn’t the best choice, but for other types of applications im, chat, whiteboard, video/audio conferencing, casual games, etc… Cocomo is the perfect thing.

Nate… this was kind of a weak tip.

Tough, you try coming up with something new every day for a month.


Tip of the Day – When to use include

A little while ago I posed the following question to the flexcoders mailing list,

I just wanted to ping everyone and get their opinion on something. Why would anyone ever want to use the include directive? I’ve recently been working on poorly designed project where at the top of every module there is an “include Header.as” statement that has 30 include statements within it. To give a datagrid additional functionality, you give it an id=”myDataGrid”, and the include statement takes care of the rest. It’s really bad.

I just don’t see a good use for the include statement anymore. In my opinion, it just promotes bad programming practices.

I mean, can’t everything be taken care of using OOP methodologies? Thoughts?

I’d like to thank everyone who responded, you all gave me quite a bit of insight.

After thinking about this for a while now, here is my list of the common reasons people incorrectly use include (include directive).

I have common functionality that I want shared across multiple components.

That’s great that you’re using DRY philosophy! However, it’s much better to combine the DRY philosophy with object-oriented programming practices. Instead of using the include directive, abstract out common functionality into a parent class. Then you can create children of your parent component, and add additional functionality as needed.

I’m building a framework.

Great… don’t use include. See above reason.

I want to use Code-Behind.

Ted Patrick wrote a wonderful post on Code-Behind in Flex 2. He accomplishes Code-Behind, and does so in an object-oriented manner without using include statements.

Adobe doesn’t natively allow multiple inheritance in AS3, and using the include directive is the only way to fake it.

Frankly, if you understand that statement… you’re advanced enough to know what you’re doing, and you don’t need this tip.

== Conclusion ==

There are rare occasions where include is exactly what you need. However, if you still feel you have a valid reason to use the include directive on a regular basis, please leave a comment below and explain yourself.