AIR, Flex / Flash, FMS, PushButton, Game… Developer
Actionscript
Tip of the Day – AS3 Language Reference for your iPhone
Jan 27th
Today was my first real day as Senior Adobe Developer for T-Mobile… and to be completely honest with you guys… I’m completely exhausted and uninspired at the moment
So… with an honest intent to keep up my 30 day tips streak… I’m going to tell you to check out Mike Chambers’ new iPhone application. It may seem silly, but I find having the AS3 Language Reference on my phone incredibly useful at times. For example, when I’m flying, when I have no internet connectivity, or when I’m out at lunch and am trying to brainstorm a solution.
Learn more about AS3 API Reference iPhone application.
*Nate passes out*
Tip of the Day – Having an affair with Flash
Jan 25th
Expert Flash developers such as Grant Skinner, Keith Peters and Mr. Doob didn’t become Flash experts overnight. Take a look at Keith’s old labs page, or Grant’s Gallery Incomplet. These guys have been playing around and experimenting with the Flash platform for years.
Maybe you’re one of those people who say to themselves, I simply don’t have enough time to screw around with my own stuff… I’m way too busy… I need my insulin… I don’t know anything about math or physics. Well, cut the excuses and make the time! All it take is twenty minutes a day. Twenty minutes a day turns into more than 3 full work weeks a year. Don’t believe me? Here is the math:
20 minutes * 365 days / 60 hours / 8 hour work day = 15.2083 work days
If you’re like me, once you start experimenting those 20 minutes fly by, and before you know it your significant other is yelling at you that dinner is ready.
For example, it’s been snowing off and on here in Seattle. As I was gazing at the window watching the snow come down, I decided to try my hand at writing particle systems. Particle systems are something that have always intrigued me but I never could “find” the time. So instead of putting particles in the back of my mind (and ultimately never getting around to them), this weekend I researched and spent a few hours learning about particle systems. And I programmed this (move the mouse around):
It’s nothing breath-taking, but you know what… I know how to write a particle system now.
Tip of the Day – Getting started with Cocomo
Jan 19th
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.
Sources:
Tip of the Day – When to use include
Jan 18th
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.
Tip of the Day – When to use try… catch… finally
Jan 17th
A wise Adobean once told me to use try / catch / finally statements sparingly. It didn’t mean much to me at the time since I honestly don’t use them very often. Instead, I opt to check conditions prior to executing “at risk” statements.
So… here’s my advice that when it comes to try / catch statements.
Preventing errors from occurring is far better than generally handling them.
Take a look at this example.
var goodObj:Object = {foo: "bar"}; var badObj:Object = null; tryErrors(goodObj); tryErrors(badObj); function tryErrors(obj:Object):void { // DO THIS if(obj) trace(obj.foo); else trace("doing something else"); // NOT THIS try { trace(obj.foo); } catch (e:TypeError) { trace("error occurred"); } } /*** OUTPUT *************** bar bar doing something else error occurred ***************************/
Do not use blanket try / catch statements.
You gain nothing by catching an exception that your application can’t deal with at that point.
For example, if you’re trying to convert a string to a number, and you know it might fail, but you have a default value, you should catch the exception, set the default value, and allow execution to continue.
Another example, if you try to call a Web Service and the call fails, and that particular call isn’t critical to your application, you could catch the exception, warn the user that some information is not available, and continue execution.
Only use try / catch when you have to.
I don’t have any specific benchmarks, but I do know that using excessive try/catch statements will degrade performance of your flash application. Probably because Flash Player is single threaded, but an Adobe person would probably have more information on that than I do.
An application I worked on a while ago used a try catch block around every single function… not my fault, it’s code that I inherited… anyways, it’s performance and execution times were horrendous.
Tour de Flex… It’s no rubygems, but it’s a start.
Jan 13th
Mike Chambers has a blog post asking, “How can adobe make the as3 learning curve easier”?
As I talked about in my Why YOU should contribute to Flex post, Adobe wants our input. Here they are again asking the community, “What do you think”?
I commented on Mike’s post.
I think that a more centralized component library and delivery system would make the lives of many developers much easier.
Take RubyGems for example. It’s extremely easy for developers to benefit from the work of others. This has increased the value of Ruby in my eyes tenfold.
As a developer, there isn’t a uniform place that I can go check to see if someone has done this before. So I have to scour the net for a while trying to find a solution by looking through blogs, articles, googlecode, etc…
I know there are a few places out there that make this easier. RIAForge, Adobe Developer Connection, Project Sprouts, Adobe TV, flexcoders.
Most of these sites (blogs especially), have a way to externally interact with them. I think that an Adobe sponsored site or program that would allow a developer to quickly see what’s out there would be an amazing asset to brand new ActionScript developer and veterans alike.
However, I didn’t realize until now, that Adobe is already doing this. This dream “site or program” does exist as the Tour de Flex. Which if you haven’t installed yet, I highly recommend it.
As the title of this post says, it’s no rubygems (not yet anyways)… but it’s a start. Go Adobe!