Digital Darwinism

It's been a very very very long time since my last post. A great number of things have changed both in my work and my life. Many for the better, and some bittersweet. I've learned a great deal since then, and I'm excited to get caught up with sharing my thoughts and experiences. Some of the exciting things I have been doing include Android and mobile development. I've also been experimenting with Appcelerator's Titanium Studio as well as returning to a great deal of Javascript and Web Standards development. Lately my Flash development has been centered around video and 3D based work. The sadness of very little Actionscript in my life has been replaced with a more objective business minded viewpoint of what it takes to function in the current digital landscape. The right tool for the job – given the right context and experience – has become my new mantra.

Stay tuned… Much more to come.


QueueLoader 3.2.0

After a long overdue break from the blog. (Baby, and a new job will do that to you.) I am returning with an update to QueueLoader. Nothing major, just some optimization and use of Vectors.

Until I am able to get GIT set up on my new computer. Feel free to use the download zip under the downloads menu. Should be a 3.2.0 version there.


More to come!


Adobe Responds

So Adobe's CTO Kevin Lynch has responded to Apple's statement today. I was kind of hoping for a little more of a roadmap and some glimmer into the personal responsibility Adobe is taking in this feud. However, it does make sense that Adobe isn't going to sit there and list the issues that need to be addressed with its own product. It was good in the sense that they are moving forward, they know what needs to be done, they are looking to other manufacturers to invest their resources, but leaving an open door to Apple. Once again I think they are taking the high road.

After thinking of my post yesterday, I sort of solidified a number if issues in my head with the whole debate. The argument is very subjective and there are a number of people that feel strongly either way about this. However, I've been happy to see that a large majority of people that have problems with Flash still believe that it isn't right to mandate their mobile experience. Adobe would be smart to really latch on to this principle and they already have. The people tired of Flash crashing and only thinking of the banners will clearly side with Apple on this. But not everyone has had a stellar experience with the iPhone, and as loyal as I have been to Apple I am one of those people. I can put my frustration with the lack of Flash aside, and still see that it isn't the product it should be. Apple needs to place more weight on the concept of the 2 year contract and their hardware decisions. I know this is a bit of a sidebar to the issue at hand, but there is some strange disconnect between complaining about Flash performance on low power platforms and not keeping your hardware spec current with what is leading edge mobile technology. Regardless, I'm looking forward to seeing where mobile technology and tablet technology goes from here and what we'll see from Adobe.

UPDATE: Hector found a couple of interesting videos showing some benchmark testing from my previous post. One of which I found quite interesting.


T&C Surf Designs Characters

boysarebackadlayout teecee3When I was growing up in L.A., everyone in school had the T&C Surf Design T-Shirts. It got to the point that the person with the newest and coolest shirt was pretty much king for a day. I did a little research and found that the talented dude behind these iconic designs was Steve Nazar. Unfortunately there was a bit of a business rift between parts of T&C and Steve's work was caught in the middle. Luckily Steve has decided to sell some of his originals to a lucky few who have fond memories of Thrilla Gorilla and Da' Boys. Check it out here! Get 'em while they last!


iPhone and iPad + Flash 10 and CS5 – Solutions?

UPDATE: Reader Hector found a couple of interesting videos showing some benchmark testing. One of which I found quite interesting.

And also check out the Adobe section of optimizing for mobile content. Useful information for any type of development.

UPDATE 2: Apple may change iPhone SDK to avoid legal ramifications.

Original Thoughts:

There's been a lot of buzz surrounding Apple's stance on the exclusion of Flash on the iPhone and now the iPad. For many of us designers and developers, the evolution of Apple and Adobe have been a match made in heaven. But times have changed….

Breaking Down Apple's Logic
When the average person thinks of Flash, banners and advertisements are the first things that come to mind, followed by Youtube and other video streaming applications. So it's safe to say that the public perception of Flash first starts off with a limited viewpoint before it gradually works its way to thinking it as a well designed and award winning creative technique.
Which leads me to believe that Apple's reason for excluding Flash on it's mobile platform, is to a certain extent (dare I say it) a logical choice. *gasps*

To fully understand the logic behind Apple's decision, we need to look at Flash and its performance issues. This has been the foundation for a number of arguments supporting the exclusion of Flash. The three major strikes against Flash include:
1. Its proprietary standard.
2. Its process intensiveness (especially on Macs)
3. Its lack of maturity (as a fully functioning non-lite platform) within the Mobile device market.

To be fair, we need to also look at the performance of the developer. Adobe's Flash engineers certainly aren't blameless, but the developer is really the first step in the chain of making something work and work well. Flash has been around for a while now and with age, comes maturity. Over the course Flash's progression, Macromedia and Adobe have steered it in the right direction. However Flash still has a long way to go and is ready for a prototype shift. Given Steve Jobs' recent comments, I think it's time for Adobe to put the cards on the table and call Apple's bluff.

Making a Mends
My solutions for Abobe (I hope you're out there listening) is to first create a robust and well designed interface system for debugging applications that is easily accessible and dependable to all levels of developer. Listening for the fan firing up is no way to determine that you've got run away processes and less then ideal code. Adobe also needs to enable adequate staging environments so that debugging and testing can be done within an applications ultimate environment. There are a number of tools and utilities to debug and test, but nothing that fully checks the performance of an application and gives the developer clear data on where bottlenecks are and what can be done to avoid them. In addition to that, Adobe should consider making the SWF format an open standard. Adobe's purchase of Macromedia was largely in part to take over the ubiquity of Flash on the web, so relinquishing that control would be a very progressive business move but in the long run pay off well for them.

HTML5 standing by
Ahhhh HTML 5… Why did you get dragged into this mess? Well the quick answer is that a certain someone has poised HTML5 to be the "Flash Killer". It's suicide to say "never" in the web development world, so I'll simply say incredibly unlikely that HTML5 would ever fully replace Flash. In fact, when this phase is over, I believe Flash and HTML5 will be good friends. HTML5 is in NO position at this point to be compared to Flash.

Here's why I'm confident in my argument:

  • HTML5 hasn't been fully established yet and most importantly it hasn't come even close to the level of development maturity of Flash.
  • HTML5 is a framework and a structured format (which has been pointed out in other discussions). It's method of development and implementation is totally different the Flash. Compilation of an application versus runtime execution of code.
  • The development tools for creating applications with Flash have had a long time to evolve. Project management and code management, OOP based utilities and frameworks, etc.
  • From a business perspective, why would a client want to pay for a developer to build an application from the ground up that rivals the best of the best with Flash?
  • IF, you were able to take the time and build a fully functional experience with all the MVC, physics, and layered video goodness of a top level Flash site with HTML5, if it's developed poorly, you are going to experience the same issues that a Flash site would. And who knows, maybe it would be even worse?
  • Code protection and copyright enforcement of development. (Something Flash could do better as well)

With that being said, I look at this as Oranges and Cherry Trees. Flash Developers should in now way take the defense by bashing HTML5. It's great and certainly has it's place in the developers toolbox. I just believe that it has become a scape goat in what is largely a school yard fight.

Back to Apple…
One side of my family has grown up with Apple, while the other has gown up with Microsoft and IBM compatible computers. The Apple side consists of an Architectural Scale Model Maker and Architect, a Wardrobe Stylist, an Audio Engineer, an industrial designer, and myself a Flash Developer/Web Designer. On the other side, I have a Computer Programer, and a Certified Public Accountant. Why am I sharing this? Maybe for full disclosure, but also to emphasize that I have always enjoyed their products and approach to using creative technology. Yet, I'm quick to point out when Apple isn't being pragmatic and would never consider myself a fanboy.

I was passionate about Apple products until having owned an iPhone for 2 years. Now seeing the release of the iPad, I've grown even more disenchanted with Apple. And no, it's not just because they don't have Flash on them. The exclusion of Flash on the iPhone is part of a bigger issue. It's the exclusion of Applications in general. I realize that control over Apps and the exclusion of third party layers helps Apples quality control, but at the same time the end user also suffers. Apple also criticizes mobile performance that use Flash and there is some truth to that, but that could be easily addressed with some help from Adobe.

I'm starting to feel like Apple has taken on a totalitarian dictatorship on what can be put in the device and what can't. I don't believe Apple should dictate what I do with my phone. How would the world react if they did this with our computers? It seems as though Apple has lost site of its loyal customers that have been around since the earlier days. Ask anyone that uses Macs in their day to day endeavors and see if they feel like Apple is developing and marketing new products that are geared to them. In my opinion they aren't. The 3Gs has features the first release of the iPhone should have had. And the iPad is sort of silly in my opinion. The iPhone and the iPad are for non Apple users, or is at least focused on attracting non Apple users. As far as business goes, this makes perfect sense. You can't grow a business by just catering to the people that already own the products, but at the same time you can't ignore the ones that do either. It would be nice if some of the focus was shared with products that are geared towards the people that helped them get to where they are. Don't forget about us tech savvy people that do enjoy your products and push them to the limit. It's gotten to the point where the jail-broken phone has become the developer edition. Apple has built a box outside of the box. Because of this, I'm saying good bye to my iPhone. I've downloaded the Android SDK and I'm impatiently waiting for the Sony Ericsson Xperia X10 to be released in the U.S. As a Flash developer, the Android environment makes sense with respect to the languages and the grass roots approach to development.

The silver lining in this whole situation is that both Apple and Abobe stand to better themselves. Apple has put some real issues and concerns on the table for Adobe yet I also believe that Jobs is being a bit stubborn and egotistical. Apple is flouting themselves as being the holy grail of how to funnel Applications to the end user, yet their hardware is two iterations behind what it should be.

And I'm a curious person. I don't see myself developing Flash apps forever, or at least exclusively. And to use Jobs' words, I have no problems leaving the past behind. I'm looking forward to learning more about how to develop for Android and the freedom of an Open Source environment.

I think of the Flash issue as the final straw, but I'm happy to have a device that will run Flash 10.1. If it works or not remains to be seen, but I don't need anyone telling me it doesn't work without experiencing for myself.


The Conditional Switch Statement Complete with Case Operators

How awesome would it be if we could put conditional code in our switch statements other then strict equality? I'd love to be able to throw some inline operators in my case code like:

var value:int = 2;
	case < 1:
		trace("Value is less than 1");
	case 2:
		trace("Value definitely equals 2");
	case >= 3:
		trace("Value is greater than or equal to 3");
	case > 1 && < 3:
		trace("Value is greater than 3 and less than 5");
	case !== 5:
		trace("Value definitely doesn't equal 5");

This would be even cooler if we threw it in a loop. SO how bout it Adobe? :D

UPDATE: Hector emailed me his code. Pretty cool workaround that does the trick.

var value:int = 2;
switch (true) {
    case value < 1:
        trace("Value is less than 1");
    case value == 1:
        trace("Value equals 1");
    case value > 1:
        trace("Value is greater than 1");

As cool as this is, I think I'll let my request stand just for the code compactness, but thanks Hector! Great stuff.


AS3 Liquid Components ScrollPane with CS4

I had some difficulty migrating my scrolling/content display system to CS4. I've been a big fan of Didier Brun's Liquid Components. He was kind enough to release these as open source and they work great. Simple, easy to use, and a lot less kludgy then the Adobe components. Not to mention, I can't stand that stylized thumb bar with the asymmetrical curves! I know this is old code and has been around for a while, but I couldn't find anything on the net regarding the issues I was having.

Many of us have used the CS3 practice of dumping our components and textfields on the stage during loading of the site. This lets us instantiate any code that is associated with said components, or initializes an embedded font family. The Liquid Components WILL work in CS4 and I remember using them on something way back when so WTF? You can still dump your components on the stage for instantiation, just make sure you set your "export classes in frame" to the same frame your assets are on. Because of the way CS4 creates classes for each object on the stage, it's important to keep everything matched up so the code base can compile properly.

Long live Liquid Components!


QueueLoader 3.1.8 CSS Example

I had someone come to me with some issues using the CSS item in QueueLoader. We went back and forth and I had forgotten that QueueLoader parses the stylesheet from the loader data internally. OK great, but still couldn't get the text to style. I've actually had problems with textfields and css in general in the past. So I did a little troubleshooting and was able to get it working fine. Seems the issue was making sure you set the textfield's css property BEFORE adding any html text to it. This sort of seems obvious in hindsight, but it's not one of those immediately obvious things when your scanning over code and/or tracking the flow of your functions. So yeah, do that first :)

Here's some slightly updated CSS code:

// CSS Example
import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;
import com.hydrotik.queueloader.QueueLoaderConst;
var _oLoader:QueueLoader = new QueueLoader();
var tf:TextField = this.getChildByName("css_text") as TextField;
var css:StyleSheet;
_oLoader.addItem("../includes/admin/test.css", null, {title:"CSS"});
_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);
function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
function onItemComplete(event:QueueLoaderEvent):void {
	trace("\t>> "+event.type, "item title: "+event.title);
	if (event.fileType == QueueLoaderConst.FILE_CSS) {
		trace("\t\tCSS: "+event.content.styleNames);
		css = event.content;
function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
	tf.styleSheet = css;
	tf.htmlText = "<p>This is a Test <a href='http://www.test.com'> More Text</a></p>";

This person also suggested that I provide detailed guides for people and a website to promote QL. There are plenty of examples within this blog as well as a place on github to keep track of QueueLoader and (hopefully) promote it. Github is also the most authoritative source on QueueLoader. It even has a logo! That said, his comments do bring up a couple of points. The first is that between the code snippets and the examples on the blog, as well as the examples.fla file in the slighty older zip file, it might be a bit confusing on how to get set up. If you download the older example files, you can then get the latest version of QL and overwrite it/update it by placing it in the proper package. The only thing that has changed significantly is the QueueLoaderConst file. If you are checking for specific item type, then you would need to change the class i.e. QueueLoader.FILE_CSS to QueueLoaderConst.FILE_CSS. This was done to improve performance. Also be sure to include the import to QueueLoaderConst.

Said person (I swear I'm not picking you:) also suggested that QL is geared towards more hard core actionscripters which isn't really the case. I know it's a jump getting into some external library based utilities, but I think (and hope) QL is set up to be almost as easy as using a core loader class and is easier to use then other options out there. I'm thinking the frustration comes from the disjointed hosting locations/examples and putting the information in the users hands. On the flip side however, there are plenty of recent links to github and I encourage you to check out the wiki as all the examples are there. Also do a search on the blog, there are a ton of posts on QL and many of the examples are still close enough to the current structure, they should get the idea across. If something is out of date on github let me know, or feel free to fork it!

Lastly, I know the documentation can be improved, the files could be retroactively updated, etc. But keep in mind that I don't get paid for this, I very rarely get a donation (I'm actually surprised when i do get one;), I've never gotten a job from QL, and for quite some time I have had no help with QL. I really, really enjoy working on QL and Flash in general and I'm certainly not complaining. Most importantly, I also would hate to discourage people from coming to me with issues or needing help. Just wanted to get this off my chest:)


HydroTween is now OpenTween and on Github!


I've decided to take a step back in the hopes of taking two steps forward. HydroTween is now deprecated for the most part as I've stripped it down and done some rebuilding in the form of OpenTween. The hope is by having the project on gitgub, the project will attract some extra help and involvement. Some other reasons for rebuilding are the modularity of the properties and the goal of having easy to add/configurable properties and property groups. Performance inprovements are another important reason. Also the fact that the code is using an MIT license means that it can be added to whatever project you want as long as the license boiler plate is intact. It's even set up so you can create your own "private label" tweening engine for your development projects. I.E. I have MyOwnTween which extends OpenTween and allows you to reorder your params, settings, etc.

I have yet to implement the image process tweening properties or give this a thorough testing so it's still in the infant stages, but I'm excited about where this is going and giving the project a fresh restart. Check out Git if you haven't already and give me a shout if you want to get involved!

OpenTween on Github


QueueLoader is now on Github!

Github is the social networking version of a version control system. The learning curve with Git can be a little tricky at first, but after installing and learning the basic commands you will be up and running. The beauty of Git lies in the way it collects and organizes changes and data. Merging from multiples sources is reliable and makes for more contributions. This will hopefully encourage more people to get involved with Open Source projects including QueueLoader! I will still be providing a standalone link either here on the site or on the deprecated Google Page, but for wiki usage and change info definitely go to Github.

QueueLoader on Github

Previous Page