Don’t Drink the Apple Juice

If I were to give Apple a report card, I would have to check the box that says, “doesn’t play well with others” after their decision not to support Flash content with its iPad.

The controversy has been developing over the past few months, and just a week ago, they took another step to close the door on Adobe Flash CS5.

John Gruber of Daring Fireball pointed out the change in the new iPhone Software Developer Kit license for iPhone OS 4. This provision was added: “Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool [cough–Flash] are prohibited).”

Notice how they sneaked the little example in the parenthetical at the end? At least they are open to developers in C and C++ and JavaScript (go figure).

I do give Apple credit to the way they spanked all other mobile devices with their iTouch and iPhone. They sent everyone reeling with their killer ap (and killer ap it is). I admire that. I don’t want to downplay the effect they had on innovation. They completely changed the way we interact with technology, and the savvy they showed through their marketing of iPhone aps took everyone by storm.

That being said, their decision to not support Flash is one of a series of moves to monopolize personal technology that smells a lot like Microsoft in the 90s (remember what Internet Explorer did to Netscape?).

I know what’s going on here. Apple knows that the only technology that comes close to competing with their new slick animations and aps is Flash. They also know that Flash is ubiquitous. If they want market domination, they need to take out their competitors. I know what you’re thinking:

“wait a minute, Flash is proprietary technology, and the authoring tools are egregiously expensive.”

That’s true, but the Flash “aps” (i.e. Shockwave files) are found in virtually every corner of the free and open internet. You don’t need AT&T, an iPad, iTouch, or iPhone, and there’s no additional monthly charge to access Flash content. Not only that, but now the core SDK (aka Flex) is open-source and free, and there are open tools to compile ActionScript now (Flash Develop 3).

I first smelled something fishy with iTunes and their m4a format. I was happy to buy all those songs on iTunes; that is until I tried playing them off of my cell phone, and I realized that it wouldn’t play that format. I either had to pay for an application that would convert the songs to mp3s or worse, I had to burn them on a CD and then rip them to mp3s, or worse still fork over a wad of cash to buy an iPod.

SuperQuest Flash Files

Before I post all the files, I want to thank all who attended my workshop. We gathered quite the range of experience. I had so much fun, and I appreciated the input you gave. I hope you take more SuperQuest courses in the future.

Here you go folks!

Flash Files

These are the source files (.fla), shockwave movies (.swf), web pages (.html), & necessary JavaScript (.js) to both edit and post animations. They are all zipped, so you will need to save them (right-click > Save Target As…) and then extract the zipped files.


SuperQuest ActionScript Code

SuperQuest Teacher Training

Wikimedia Commons – Featured Pictures – here’s a great site to find some cool photographs

Here’s the mostly complete ActionScript code for the SuperQuest Workshop: Flash-driven Websites Saved My Life:

  /* Load XML Files for main windows
  var myXML:XML = new XML();
  myXML.ignoreWhite = true;
myXML.onLoad = function(success) {
  if(success) {
  // trace(myXML.firstChild);
  var contentTXT = myXML.firstChild.childNodes[2];
  contentWindow = contentTXT;
  var headerTXT = myXML.firstChild.childNodes[0];
  header = headerTXT;
  var side_columnTXT = myXML.firstChild.childNodes[3];
  side_column = side_columnTXT;
  home_btn.onRelease = function() {
  characters.onRelease = function() {
  /* Load XML Files for navigation buttons
  var myButtons:XML = new XML(); // declare variable
  myButtons.ignoreWhite = true;
myButtons.onLoad = function(success) {
  if(success) {
  var homeTXT = myButtons.firstChild.firstChild.childNodes[0];
  home = homeTXT;
  var charactersTXT = myButtons.firstChild.childNodes[1].childNodes[0];
  characters = charactersTXT;
  var plotTXT = myButtons.firstChild.childNodes[2].childNodes[0];
  plot = plotTXT;
  var theoriesTXT = myButtons.firstChild.childNodes[3].childNodes[0];
  theories = theoriesTXT;