Thursday, April 4, 2013

Tablet Review - which tablet is the best?

For testing/dev purposes, I purchased several tablets/web devices in the past 6 months.  Here they are in no particular order:

Windows SurfaceRT w/integrated keyboard
iPad 2, 3, 4 and Mini
Samsung Galaxy Note
Blackberry ?
iPod 5, iPod 3, iPod 2, iPod 4

I also have a macbook air, a desktop PC, and an XBox.

3 months later Here is what I'm still using and how:
Samsung Galaxy Note -
This is my phone, and I use it for all the tablet functions. Its fast, zippy, good UI.  Big screen, impressive as a phone and really handy as a tablet.  Its the only "pocket sized tablet" and I think the form factor and device are essentially perfect.  Its the most used device I have.


Macbook Air

I use this all the time, in fact, I'm typing on it right now.  Its light, but I can do graphics, video editing, sound editing, print/press stuff, coding, interactive design, powerpoints, excel stuff, word stuff...and the form factor is elegant and wonderful.  I think its the best PC I have ever owned.  I love how I can barely tell if its in my laptop case, the smoothness, the thinness, yet has a great keyboard for touchtyping and feels really solid.


XBox 

Its really, really easy to use.  As a PC gamer I miss the graphics quality a bit and the cheat codes,  but the tradeoff for cost and now that I know how to use the controller I find it much more efficient than the keyboard and mouse.  I have a few complaints but overall I think its a great console and I enjoy using it.

old iPod 4 (chrome back)

I stuck with my old iPod as my "bedside computer" because the chrome back just feels better than the new form factor.  I can access email, games, and get the iOS experience on it.  Plus moving to a new one is a bit of a pain thanks to the incomprehensible labyrinth of "iTunes" universe.  In spite of rendering their old devices "obselete" , Apple does make the upgrade process VERY difficult in my opinion, particularly on the iOS devices.

Desktop PC

If I have really intensive layout, coding, or complex projects that my Macbook Air simply cant handle, I tend to default to my old backup PC.  Windows 8 ruined it, and I cant stress enough to people to NOT upgrade to windows 8 unless you have to.  Stick with Windows 7...it was fantastic and I miss it terribly.  I dont tend to "surf the web" on my Desktop much, its mainly a workhorse.  Also its the hub of my data/media storage and archiving.  Regardless of the "mobile world" I will likely always have a desktop PC somewhere unless Mobile devices are eventually able to connect to massive data storage that is cheap, as well as any resolution display device...wirelessly.

Gathering Dust:


iPad 2,3,4

 I like the look of the iPads, but I honestly find them too heavy to deal with, I actually hate picking it up...its a chore. They are also fragile and easy to drop due to their heft.  iPad 3 - if I didnt need it for testing, I would have felt it was a huge ripoff considering the crappy video rendering...particularly when the iPad4 came out along with the mini.  The iPad 4 has really impressive processing power, and if I could run office on it I *might* consider using it with a third party keyboard, BUT, the AIR still kicks butt.

iPad Mini

MUCH better form factor than the other iPads, but still too big.  Its the wideness.  I'm spoiled with my galaxy note.  The device is beautiful and interesting, but I cant see having a use for it if you already have a smart phone and a nice laptop like the AIR.

Microsoft Surface RT

I Really wanted to like this device.  There was a promise of flash support, basically a full PC experience in a tablet with a really lean and mean keyboard.  The kick stand is really cool.  Its lighter even with the keyboard than the macbook air.  BUT....alas, the OS killed me.  Windows 8 entirely blows.  Putting that useless "metro" thing on it but shunting you to the desktop every time you needed any of the most common apps like all the office ones was really really disappointing.  Also the flash support was *only* for a handful of sites whitelisted by microsoft...again...a total burn.  I loved being able to type AND sweep the screen depending on what I needed to do and the little flappy keyboard was cool...but one of the things I really like about my PC is the fact that I can run any PC application on it.  The surface really couldnt.  I was planning to "upgrade" to the Surface RT pro, but the primary advantage of "lightness" goes away with that one, and its bulkier than my AIR too.  So, no go.  Surface sits collecting dust.



Blackberry Playbook

Honestly I had to google "blackberry tablet" to even get the name for this abysmal piece of junk.  The OS reminded me of a $149 GPS no name device I purchased a long time ago...clunky, incomprehensible, and full of pointless junk.  Its small but heavy, has a huge wide frame around the screen that is "touch sensitive" for some odd reason...as if that somehow adds value. It was so bad I only used it to bring up my test websites but its barely been on at all. 

Were I to recommend a purchase to a fledgling geek, I would strongly recommend:
Galaxy Note as phone, Macbook AIR, iPod.  You also get to be aware of everything on all devices.  I'd recommend a nice big and configurable desktop PC if you can fit it somewhere in your house, and use it for media server etc as well so you can keep most of your big files there.

The rest I would "pasadena" including all the iPads.  If you can ONLY have one device and that one device CANT be a phone for some reason, the iPad mini would be a nice thing to have, particularly for a child or older person new to computers.  Otherwise get a Galaxy Note.  It really is the "everything device" and is by far the most important device in my collection if you go by use...closely followed by the AIR, and I dont leave home without either of them.






Flash finally dies.

I was recently asked this: "...does iPad/Tablet delivery have a significant importance to your company plans?"


My posts have been all about flash up to now, but in the past 6 months I've experienced a shift and moved to "the dark side" of HTML for a number of reasons.




It started with a number of website examples demonstrating what HTML/Ajax/Javascript are capable of now, particularly when coupled with WebGL.  It wasnt at the level of flash, but the differences were subtle. 

THE SQUEEZE

Client / Server Communication
Ajax in particular was an eye opener for me, the ability to communicate subtly between a client and server without impacting the user experience was always a deal breaker for me and HTML, and Flash is particularly adept at it.  Once I really got to understand Ajax, it became clear that Flash's primary technical advantage was quickly leaving.


3d rendering
Flash is still a great 3d tool, but the technology is coming under fire for licencing fees that occur after 50K users, so its "light and flexible" smallness suddenly developed a big looming wart.  Conversely WebGL is getting better and better, as well as canvas 3d, CSS, and other alternatives are looking really good and getting increasing access to hardware support.


Developer tools/workflow
Flash's key strength has always been the ease of development - from idea to working prototype.  The iDE (integrated developer environment) tools for 10 years were without match, but Adobe has quickly moved to build on that and move into HTML/Javascript based technology as it quickly becomes capable.  Now we have Edge, Edge Reflow, and many non-Adobe based developer tools that collectively kick butt.

iOS
I had always thought flash vs html was about a rivalry between Steve Jobs and Adobe, and that could very well have been the case.   But blocking flash on iOS really accelerated the demise of flash on mobile, and eventually instead of fighting, Adobe rolled over and killed the player on Android. 




App Stores - Temporary Reprieve?
App stores provided a reprieve for flash in a philosophical sense, as one could still use it to build apps as well as desktop.  BUT, the App stores presented a plethora of difficulties for any serious development.  App stores simply have too much arbitrary power and no accountability to developers, and the fear (warranted or not) has disillusioned them.  The "long tail" of developers simply cant make enough money off the app given the massive dev cycle, red tape to wander through, and the chance your app will be summarily "denied" for some violation of a clause in the interminable and constantly changing Apple Developer Agreement.  This shows up less on the Android side, but so do the users.   Long story short, App stores are not a long term, sustainable market for developers.  They are a stop-gap (make hey while the sun shines)

Meanwhile, the model for charging for things on the web has changed too.  App stores tried to "control the flow of money" but thus, if you bought an app/service on one device, you couldnt use it on another.  Microsoft's answer was to try to own all the surfaces/devices...and this is quickly materializing as a case of doing everything badly instead of one thing well.  I'd sum up windows 8 that way after having owned an XBox, PC, MS SurfaceRT, and a windows phone and trying to get them to interoperate.   My PC now is much harder to use (thanks windows 8), my surfaceRT is collecting dust - as are all my tablets thanks to the Android Galaxy II phone I have.  So, as a business, I'm coming to realize that money/distribution of product or service flow needs to be controlled by the company/portal, not some third party, or they cant assume the risk of doing business...its a fundamental truth that will essentially kill the app stores.   

Finally there is facebook.  Id wager the little webbrowser integrated in the facebook app on mobile is an increasingly common means of browsing the web.  If you could dial your phone, access your contacts, and browse the web(as you can now) with facebook's app, all a phone would need is the facebook app.  Facebook doesnt need to have a phone, they could simply *be* every phone.  And is any phone on earth not going to support facebook?  I doubt it.  HTML thus works inside facebook's browser and means if you are building HTML based apps, services, or experiences, people don't need to leave facebook at all.  Since any site that allows login supports facebook login (except google and microsoft of course),  Facebook rules the web.  While google is wasting time ignoring facebook and making yet another dumb thing in their list of dumb things..."glass".  Lets see..."wave", "plus" , "buzz", "glass" etc. prove that Google simply doesnt get the web anymore.  Its not about a giant dewey decimal system, its about connections between human beings and their collective wisdom.  But I digress...

So Flash and really app stores, and every closed market/technology is literally getting squeezed from every conceivable direction by pure technological evolution - in almost every way.

As I've always said, if a technology came along that "did flash" better than flash, I'd jump on it.  In the past 12 months I think its come to pass, and so I've jumped. 

Flash was king, now its HTML/Javascript/Ajax.


I admit it, but I was right before, HTML wasnt ready.  Now it is, and I'm not an idiot. :)






Sunday, November 25, 2012

Flash vs HTML is actually Browser vs OS

Flash and HTML are, to anyone who regularly uses them both, not inherently conflicted at all.  They actually work quite well together...and to companies like Microsoft, Apple, and Adobe...perhaps too well.

A few years ago a project called "Aviary.com" presented what could be considered a complete replacement for photoshop.  Given the power recently bestowed on the flash platform tools, it was possible to build almost any application one could think of in the browser itself, and this was proven by Aviary and later project Rome by adobe (rome.adobe.com). 

This likely caused significant fear in the hearts of all software-for-profit folks who could see a big enough picture to realize their incredibly hard work and high investment projects could now be relegated to the same low status of a website.  No more big install, no more background running, and now subservient to the browser.  The OS itself could then become nothing but a wrapper to the web browser, which would now control the user experience and eventually free itself from the OS in low cost PCs.  Google has uniquely taken this dream and run with it, and is already selling what is essentially just that, a 250 dollar laptop with nothing but their browser based "chrome" on it.  The only thing you pay for in that case is the physical object.

Both the Rome and Aviary projects have either cut features or moved to an app model since originally released, as you can see on their websites, but one can see the potential there to utterly decimate the market for what is currently a $600 graphics program available as a standalone app (Photoshop), particularly if they managed to get a look at the earlier iterations of these projects.

Thus one could see how it might be perceived as necessary for software companies to, by all means possible, slow or stop altogether the flow of feature rich functionality to the browser and keep it where it belongs...a content viewer and nothing more.   As many pay-wall websites have come to realize, it's *incredibly* difficult to get people to pay for a website, but consumers continue to pay hundreds of dollars for what they perceive as "software", and some dollars for what they perceive as "mini software" AKA an "app", even though an app may have as much or more functionality than any standard shrink wrap software product.  The main thing is, we're still physical beings.  We need stuff on a shelf to show for what we bought, and websites cant offer this.  All they can offer is yet another password to remember.   I think that is why the app store has the "icon object" display that gives a sense of ownership to the person who bought some apps as the app stays ever present, reminding the user of all they own.


It's important to not confuse the "Cloud" with a browser based experience.  The cloud is routinely accessed by non-browser based applications the same way the browser accesses it.

In the mean time, Adobe is quickly expanding the capabilities of AIR and Flash to compete with the classic major application development platforms offered around Java and C++, and subsequently many of the most popular apps on mobile are actually created with AIR and Flash then compiled for the particular device.  So by no means is flash "dead", what's really being actively choked to death (most recently by Adobe themselves) is the concept of flash running in a browser with all its power and capabilities instead of as purchased standalone applications, IE where the money is.

In the mean time, the W3 (largely controlled by these interests + Google) argues about how to keep the features of HTML limited enough that it cant get out of control like flash did, and become a full blown feature rich application development environment.  Aviary did have an HTML5 image editor available but the page has since been 404'd:  http://www.aviary.com/html5 , probably because it clearly conflicted with their business model. 

The question is, will flash just be the first of many of these kinds of technologies that put high degrees of capabilities anywhere?  No one but the independently wealthy volunteer force of the open community would have any motivation to maintain something like that, but it may indeed be inevitable in a free market, either the reigns will be taken off of flash by forces outside of Adobe or we'll see HTML 5 rise to the capability at some point in the future.  Either way, this is all nothing but a smoke screen and no particular technology (flash, java, html5) etc, is inherently bad and to be avoided.  If anything it just means one should use the tool that best suits the business model one has.

addendum:  Google Chrome OS supports flash - its integrated into Chrome OS.

http://support.google.com/chrome/bin/answer.py?hl=en&answer=108086

Clearly Google sees the browser as the future, and if one were to thus "hedge their bets" on a particular technology that would allow them a single codebase for all devices and OS's, flash is certainly the winner at this point in collaboration with AIR.









Saturday, October 27, 2012

Coders - our most precious resource.

I recently read an article talking about the scarcity of good coders who are constantly under ever increasing demand.

Good coders become scarce due to retirement, getting hired by competitors, or starting their own venture.  I've personally experienced lost opportunities to hire great coders from each of these things, particularly the last one. 

Often as well good coders tend to form collectives that bill as an agency rather than individually, and while sometimes this works in the short term, my experience indicates that these kinds of organizations often prioritize strictly on cash being payed at any given time, and have no loyalty or affinity for any particular client.  Especially clients who are suffering change and need that creativity the most, but can't necessarily provide extra financial motivations.  They also tend to reserve their top folks for internal projects that will ideally get them out of the service industry and into the royalty collecting business.

Additionally, these pressures are exacerbated by a decrease in educational quality and a general lack of interest in the passion for disciplines around coding. Of course there's always a "nerd" around, but the demands are increasing exponentially while the supply is stagnant or even on the decline.

So I have some general heuristics to mitigate some of these things.

1. Hire coders internally and treat them as well as you possibly can.  Give them whatever motivation they need to stay - mainly a sense of control and ownership of their products, as well as every incentive you can to keep them engaged and enthusiastic about the project. 

2. Let them brag.  Often I've seen coders want to share their code with their community of peers, but a closed, proprietary code base makes that impossible and that frustrates coders.  They constantly pull from the open source community, and often find pride in contributing to it.  If any of your code base can be "open sourced" and kept in the community as part of the collective knowledge of mankind without jeopardizing your competitive advantage…work to find and exploit those things.

3. Leverage the unpopular.  Right now flash, for example, is suffering a lot of bad PR due - clearly - to fear around losing short term perceived financial gain of moving the app/game market to walled gardens instead of keeping it open and free on the regular internet.  The truth, however, is that flash developers are legion (over 3 million of them), and write in a highly standardized language (almost identical to java, C++, PHP, C# etc.) that ports to any and all devices and app stores OR the www, and since the flash platform is so well designed and intuitive with the capability to be a single code base deployed across platforms, they LIKE using it.

So, by exploiting the ignorance in the market about what flash is / does, we can get developers who are eager to use the language because they enjoy it, and still have code that is easily translatable and reusable under almost any architecture and discipline.  In short, we're investing in the skill set and discipline of coding, rather than a particular architecture, and while our competition is "wound up over HTML5" we can zoom past them with superior technology that delivers in less time and for less cost.  Check out these stats if you're convinced "html5" is the future.  News: its not actually anything. Do some homework on what it actually is, and you'll see its really got nothing to do with flash at all.

4. Understand good coders can't really be off-shored, particularly senior ones.  A senior architecture designer has to have the ability to understand the cultural context and language of the market end user AND the sophistication of the architecture and nuance of the technology.  Having "less expensive" coders work offshore can work in very special circumstances but often if a coder is fully qualified and happens to live in an area where cost of living is lower, they can be easily poached by any of the competition and will thus be able to demand wage parity anyway.  Geographic location of the coder really should be close to both you and your customers, particularly if you are less than willing or able to have an intimate understanding of your own code base.

Competitively, having a group of coders as the primary investment instead of thinking of the core product as some body of code is far more agile and adept at flexing to market demands and opportunities.  If the coders are always there, then at any time code can be dumped and rewritten without worrying about engaging and educating a new vendor or contractor.

In short, if you plan to be a sustainable company with long term viability and ability to flex and evolve with market demand, invest in people - your coders, and dont ever get too attached to your code base.  Coders are the most precious resource of any company today.




Friday, July 6, 2012

Flash Shrugged

Lately I've been experiencing even more HTML5 concerns, recently over the android 4.1 announcement by Adobe that they won't be supporting it.

My theory on the strategy here is that Adobe is simply following the money, and realizing that the developers actually paying for their tools are likely employed by or working on projects that are not free or ad supported.  Their projects are most likely well funded and involve some kind of subscription model that provides real value to end users that those end users are willing to pay for, be it an Appstore app, or a PC application that is membership or premium based.  Sure, they might have lost leaders, but in the end they have to charge for services or they cant continue to buy the expensive tools like Creative Suite etc.

Adobe themselves are obviously aware of this as they are offering their services in a subscription model, and those of us working in the training industry have been using this kind of model for years, and likely represent a large portion of Adobe's paying customers.  Adobe doesn't (and shouldn't) be interested in AS 3 developers who simply skim off the .swf technology and use tools like FlashDevelop or writing open source free code bases.  That community of free laborers contributing to the common good is great, and all, but they dont pay the monthly bills we all have, and we all gotta eat.

So what happens when Adobe abandons the browser?  Well its not bad news for adobe developers, it certainly isnt the death of flash. Quite the opposite actually.  Adobe is simply cutting off the free flow of support and help to freeloaders who dont pay them, and concentrating on supporting their paying customers.  Its a wise, prudent business move for adobe.  The people who SHOULD be worried are the HTML 5 nuts themselves, because they just lost a serious heavyweight that keeps users in the browser paradigm.

Browsers are entirely unnecessary.  One can use twitter, facebook, CNN, Youtube, and many others with standalone apps or desktop applications like Facebook Messenger.  If mobile is indeed a bellwether, then think about it, who uses facebook in a browser on mobile devices?  I certainly dont, I use the free facebook app.  And, I cant help but notice the URL's I launch, and the videos I watch all happen inside that app.  As the app grows, I have less and less reason to leave it on my phone.

By kicking sand in Flash's face, the HTML5 crowd has unnecessarily lost a great ally in their battle to keep the browser relevant and open.  Flash represents a HUGE amount of content, and now that the flash community has been sucker punched by the HTML5 community, they have taken their ball and gone home, and the browser is left without a ball.  The content available on the browser for Android just went way down.

So if there's little of interest on the browser, it will simply become less and less interesting for users, and less frequently used, until they are rarely opened at all.  This is already the trend on mobile devices and I see it occurring on PC's as browsers continue to fight with each other on standards and take *a geologic era in tech terms* to get to consensus on relatively insignificant feature updates.

Lots of very successful and internet based communities already exist in proprietary clients, like Steam, Games for Windows, Second Life and its various iterations, Facebook, countless apps in the Android market and Apple app stores, and if you're looking for rich online experiences, this is where the trend is going, not towards HTML.  HTML is a tired, limited technology that simply cannot evolve fast enough to keep up with consumer demand, and flash shrugging its shoulders and walking away hurts it more than it cares to understand or realize.


Sunday, June 24, 2012

Another reason why HTML5 is entirely irrelevant to flash

http://vimeo.com/19970665

Demonstrates flash running on Android and IOS via the Scaleform player, proving that avoiding flash on mobile again is not a technical constraint due to limitations with flash, its a political situation and always has been.  As with all technological evolution, we can always count on it getting more complex, feature rich, and meeting demands placed on it over time.  The HTML 5 "debate" was always based on an imaginary constraint that Apple simply made up, but here we can see it being reduced to dust by reality.

So viva flash, its got a long future ahead of it as a display technology.  Of course, viva HTML 5 too, its also got a long future ahead of it as a different kind of display tech for those who dont like using flash for whatever reason.  Its not a contest, I certainly never felt it should have been necessary to denigrate html technology in order to defend flash. 

Thursday, April 19, 2012

facebooks logical killer will grow up inside facebook

I wanted to get this down for posterity, I've been saying this for months, but dont have an early record of it and as I watch it happen exactly as I predicted it, I should get it down, I think.

Branchout today is a "linkedin" killer that is growing up inside facebook.  Instagram grew up inside facebook and  was perceived as such a threat by facebook that they bought it for 1Billion.

The new market is this mysterious mountain thats always been there, I call it the "human interaction mountain" that up to recently has been something a lot of people saw value in, but only a few managed to begin to wrap their heads around it.

Google and Wikipedia were early adaptors, building the roads and trails to it, and documenting how it got their, and describing it, and they've built their fortunes on that defining process.

Facebook went in and cut off all the trees, and managed to "harvest" all the wood products and that has led to a trillion dollar IPO possibly.

Apple has built the cars and infrastructure to navigate it.  Instagram and Hipstamatic and Twitter obviously found value in areas where facebook wasnt, but its still as I'd consider on the surface of this giant mountain of data.  This is because all of these services allow for sharing and consuming of what is essentially 1 way non interactive content.

I would lump gaming in here too, because while it is interactive, the relationship between the user and the content simply loops, and ultimately the user is going through a series of pre-programmed motions and the game scope is not effected by individual users.

Branchout and Linkedin have begun to scratch that surface and go a little deeper, and content through programs like that, which enable new content to literally form out of relationships between the users.  Facebook has some of this concept in "pages" and "groups" but it is all still very generic, beginning stages.

I think the real deep market that exists and represents a much lower hype, longer lifespan market that will be resistant to commoditization is this deeper "mining" of the mountain.

This means more sophisticated product offerings, more complex models that literally discover and mine various kinds of data models that are for now largely unknown, but thanks to the Googles, the Facebooks, the Apples, these new models are more discoverable than ever.

on a somewhat related note:

If this interests you, there is more down this rabbit hole.  The "giant data mountain" that is essentially made of human interaction and information itself, is not only abstract, but quickly merging with the physical world, which is one reason why its particularly important.  Right now, using any 3d printing system, we can convert pure data into physical objects. These can be artistic expressions, physical tools or parts of tools, and even human organs (kidneys, bladders and other organs have already been successfully implanted for years)

The "word became flesh" is more true than ever.  This kind of merging of physical and data is where we are headed, and these interactions will more and more rapidly be indistinguishable from our physical world as "we" become the data we create and interact with.

This is why, to me, the understanding of the relationship of content and human interaction is crucial and a massive investment/market opportunity.  Soon it will "be" the market, literally.  The most valuable product will not be a physical commodity, it will be ideas, connections, algorithms, virtual systems.  We're literally witnessing the dawning of an entirely new reality, and the market leading visionaries are capitalizing on it now so they can be positioned to be the custodians of this new reality as it continues to evolve.

Monday, December 26, 2011

in defence of the flash IDE.

I develop online learning experiences for users. These tend to involve some kind of interactive UI that enables the user to view content and interact with it in the form of simulations, tests and assessments of some kind, and tracking/session management stuff aka bookmarking.

These experiences are generally one time experiences with little repeating.  They sometimes want to be reused extensively, but to me the quality of learning tends to go down with extensive reuse even though it does save some money.  I have had the fortune of working on projects that really push the envelope and make memorable and intriguing first impressions for the learners and have a proven rate of retention and ROI for my customers.  My latest opportunity at SweetRush as CTO is no exception, and Ive been able to work with some of the best folks in my career on designing and developing training content for some very impressive and demanding clients.

Although I can certainly build these projects using non-Adobe Flash IDE (Integrated developer environment), I really enjoy working inside the flash IDE because its where I started, and creatively its a wonderful tool to use.  I tend to write all my code inside the flash IDE on projects where I'm the sole programmer/creative and decouple the scripts from the artwork using simple includes on projects where I'm the sole programmer but not the artist.  I find this approach enables me to work very fast, and build projects that function reliably with few if any bugs out the gate.

My type A approach is fairly simple.  I use the timeline as a logical flow line (a hold over from my initial training in authorware)  Starting with the first few frames as preload/init frames, then dividing the user experience into what I call "action points" where some code gets executed to display some content, provide a small game or what have you.  Then users can visit the AP's in any order, loop through them incrementing a value (like using 1 AP to display a question, but using another AP as a count incrementing element that just loops back to the question display AP until all the questions are done, at which point it then moves to the next logical AP).

Then by the AP's , I can set bookmarking logic to each of them as well as garbage collection, necessary inits and component/class instantiation.   This allows me to use the timeline to visually layout the user experience and enables an animator who is unfamiliar with code but knows how to move keyframes around to have the ability to change the logical flow without editing code.  The flash IDE provides all the objects, the library of components, and types of symbols I can provide the animator to tweak, change or even discover how programming essentially works in an environment that is familiar to them.

As a general rule of thumb, if a segment of code in a particular AP becomes more than a few hundred lines, or that code is getting reused in other spots, it becomes clear I need to move that code to the first frame where I put all my globals.  I tend to have all the global variables, functions, and common data defining/parsing logic there. I also like to push all dynamic text and content URI's out to an external XML file that always gets loaded as a global to be used anywhere in the application.

I find the flash IDE endlessly flexible in this regard.  I can visually represent objects as movie clips each of which can be visual or not, and can carry out functions, or just hold functions for use by other movie clips or the main timeline.  Being able to make any code anywhere behave as a visual object definitely has its advantages.

Of course, one can write endlessly messy code that is nearly impossible for others to navigate in the flash IDE, so its important to be very consistent in keeping the library neat, the main timeline reserved only for logical flow and any artwork/animation to be encapsulated and contained to a specific and well labelled layer with instance names that allow it to be controlled externally.

Other advantages are the integration of the compiler in that you don't have to jump through several file settings or create elaborate folder structures with strict names on the computer to work, you can do it all inside the highly optimized work environment of the flash IDE.  No need to find compilers, and moving/renaming MC's or "classes" is all monitored and tracked by the IDE so there is no need to update paths.

All this makes for very rapid application development.  Provided a disciplined approach is taken, I have found one can use the flash IDE to make very flexible, very reusable and very powerful applications all with the built in power of handing the file to non-programmers to tweak art/animation/sound aspects within the same working context.

I think a primary perceived disadvantage is the reliance on the IDE vs being able to pull out the code and edit it using a text editor or source code editor of choice.  While there are hundreds of thousands of flash coders like myself who feel completely comfortable implementing what could be considered "valid design patterns" inside the flash IDE, I think there are also a lot of detractors who feel that the flash IDE represents a step backward or is a tool that does not have the capabilities of a tool like Flex, for example.

I would challenge anyone to building something in Flex that I couldn't build in the flash IDE, and have it work equally as reliably, and be equally as flexible and scalable, provided other coders had access to the IDE as well for the bits that were non xml or external script.

That said, I can clearly see a few issues / disadvantages to the IDE.

1. The IDE is too permissive, in that you can use untyped variables, haphazardly scope variables and functions, and put code anywhere making it difficult to find.
 - all of these are true, but they are not the rule.  Any disciplined coder can write bad code in any environment.  I think the need for discipline and neatness becomes heightened in the flash IDE, but I also think visually the ability to lay out an application clearly is greatly enhanced in a visual programming environment like flash.  Its not as literal as author ware where you had a literal vertical line and you could drop logical objects on the line with visual loops, visual branching all iconically represented, but its similar in power.

I think of it as the difference between looking at pages and pages of VRML textually representing a 3d model, or the 3d model itself.  If you can "see" the 3d model when looking at the code, wow, good for you...but you can't argue that actually seeing the 3d model itself fully rendered gives you a different perspective and often illuminates problems that a human couldn't possibly perceive when looking just at text.

That, to me, is the main difference.  I like to represent code iconically, and the flash IDE/timeline allows me to do that, and just as looking at a rendered model enables me to see the object as it is, so the IDE enables me to see what I'm doing as I'm doing it rather than furiously writing incredibly elegant looking code-all indented and outdented perfectly with inline class autofilling...I can actually see the end result, the user's experience, as I'm writing it.  (not quite exactly...but certainly closer than when I'm writing an app in Flashdevelop or some equivalent).

As a career coder I think its important to know a little bit about all the approaches, and to not think one is necessarily better than others as long as the primary stated goals are met, and try to apply best practices wherever they may apply across languages.  If I write in Ruby, Java, Python, C++ or what have you and can learn something from a timeline / visual developer then great...and vice versa.

So why so defensive?  I think that flash has branched out to make its technology more palatable and familiar to those coming from a traditional OOP background, and created Flex/Flash builder for that very reason.  The sense, however is that somehow meant that Adobe was "admitting" that the flash IDE was somehow a failure and that Flash Builder was the superior step in evolution of the product.  If that was true, of course, the flash IDE would have been phased out or at least severely "dumbed down" in order to push developers towards FB.  I certainly felt that way and it pushed me to learn to do strict OOP, embracing a class/inheritance/interface approach and writing some fairly sophisticated projects in flash builder.  After really getting down that rabbit hole I came out the other side thinking that there was a lot of what I considered unnecessary complication with that approach, and that while I thought it certainly made sense for some kinds of projects like the one I was working on for example, I didn't think it necessarily was the be all, end all approach for all projects.

One very interesting development is the advent of the javascript/html animation tool Adobe Edge.  Over the past couple of weeks I had to build a project using Edge with some serious tweaking and I found that even though the product is in beta, and its buggy, I really enjoyed using it and appreciated the ability to edit the source files and find most of my edits were retained in the IDE, with only a couple of minor exceptions. So far, Edge looks a lot like the flash IDE, the only notable difference being the timeline works in seconds rather than in frames.  But, like the flash IDE, I can place code on a timeline or all in one place at the beginning, reference external code, and use the timeline to trigger/organize events that can also be manipulated by animators.

I think the Edge tool, either merged with flash IDE or kept as a separate tool will ultimately continue the legacy and impact of timeline coders, perhaps to the ire of OOP programmers but I certainly hope to see more interoperability among skillets and disciplines rather than an eventual monoculture of development.

Finally, on a creative level the IDE enables animators to "see" code, and coders to "see" artwork. I think if animators stick to tools like illustrator and photoshop, they will never get "rich media".  I also think the same is true for programmers that wall themselves up in code.  The flash IDE is the glasnost, the common ground where folks from an artistic background and those from a programming background are forced to literally work in the same environment and gain a very intimate understanding of each other's work.  The best stuff I've seen in flash has been built by coders who were also amazing artists and animators, who really understood fluid motion dynamics, colour, font design, traditional animation technique, photography, bit mapping, sound editing and mixing, and of course were excellent programmers who really had a grasp of OOP.  While these "one hit wonders" are tough to come by, I think the flash IDE provides the opportunity for a collective to "get inside each other's heads" and become that one mind that can then, collectively, become more than any individual team member can.

my first exposure to "Design Patterns"

After writing software on my own for almost 15 years, including dozens of applications that served tens of thousands of fortune 500 users and served up thousands of hours of content, along with user/content management and access control, content authoring tools and countless UI components, assessments, and API based system specifications...I've finally gotten to a place in my career where I've been introduced to the concept of Design Patterns.

Being largely self taught and mentored by self taught engineers, I eventually came up with methodologies and best practices that helped me produce applications quickly and cost-effectively while maintaining a high degree of reusability and flexibility. My software continues to generate revenue for past and current clients, and has invariably been successful in delivering its stated goals.

My latest work opportunity has put me in a position to work with some engineers with more formalized training than I have had, and I've observed that came with the benefit of the collective knowledge and experience of engineers across a variety of disciplines that I never really had, being almost always the "lone engineer" on projects, or being fairly separated from my team of engineers to focus on the business / strategic side of technology. My new team represents the best talent Ive worked with yet, so I wanted to take advantage of the opportunity and see what I could learn from them. The first thing they pointed me to was "Design Patterns".

In various capacities I had heard the terms "Model-View-Controller", "Singleton", and of course "prototype" bandied about, but was more busy writing code than thinking of how to describe what I was doing via inherent common sense. It always made sense to me to have major components of my systems decoupled, and my circumstances would have described this as Data/API/UI. In my way of thinking, all my apps were driven by some kind of data/content in one bucket, an API that knew where the content/data was and could be queried by any UI engine. I'd been using this approach long before "cloud server" came along, really since my first app, the "auto player software" followed by my various flash applications.  Until I read about MVC, I practically felt like I invented it.  (thats what happens when one essentially lives under a rock)

I felt this concept applied to every kind of software I built, from the big enterprise apps and systems I designed, to the smallest 2 minute entertainment interaction I built.  There was always data, content, an interface, and view.    I'm not sure how that precisely maps to "Model View Controller" but I'm not too concerned about it, because it always worked.  By the end of developing hundreds of apps using a very specific set of best practices and designs, I had the system down to the point of being incredibly efficient and reliable, and exceptionally flexible.  Once others learned my system they often copied and adapted it for their own use.

So as I begin to explore MVC and other design patterns, I am feeling a strong sense of vindication.  That while I've been working away in a "dark cell all alone"  I ultimately came to the same logical conclusions as the rest of the software community...only I use a different nomenclature.

To me, and most "old guys" I know, it doesn't really matter how you build something.  Its whether or not it does the job and didn't cost too much in time/money/effort.  If you build something too hastily it will cost you down the road in maintenance and fixes.  If you build something too slowly, you'll end up making $0.02 an hour, and only 3 people on earth will appreciate the "elegance " of your work.

So this brings up an impression I'm getting now.  In reading "Head First Design Patterns" I get the distinct impression of an almost zealous "my way or the highway" sense that reminds me of a religious fervour.  They speak of their nomenclature as if its really the "only" enlightened approach to problem solving in OOP.   I have to agree that a common nomenclature is helpful in a situation where code needs to be shared across a group, and am more than happy to embrace a common lexicon organizationally to improve interoperability and communication between engineers.

That said, I have to agree with Steve McConnell who said


"Moreover, shifting the code too far forcing it to look like a standard pattern unnecessarily increases complexity."


This does not constitute a justification for "shutting down" a design pattern approach, but it is more cautionary in struggling to attain a perfect score among programming buddies could potentially cloud the primary goal of making software that works for the user on time and under budget.

So I'll continue to study design patterns and post here periodically as my learning increases on the topic.  So far just reading the terms and definitions has not only provided me with the feeling of "so that's what they call that thing Ive been doing for all these years", but also some of them provide ideas that will make my code more efficient, readable , and reusable going forward.

My next post will be on the flash IDE timeline based programming vs OOP and how they really aren't all that different, but it will relate to this one as a last word in that I'd go further to say that design patterns in OOP do not just apply to code written in standard scripts like AS3, C#, Java, Javascript etc., but also can apply to visual programming IDE's like the flash IDE, Authorware, Director, and customized frameworks.

Tuesday, December 13, 2011

Adobe Edge animation controlled by the scrollbar! its easy and fun.

How to make your animation controlled by the scrollbar in Adobe Edge Preview 3:

Adobe edge is a great HTML 5 editing tool, and with a few tweaks I think it will end up being the best html5/javascript/jquery tool on the market for professionals looking to create highly interactive non-flash interactive animations. I've been a flash programmer for 14 years now, and I actually enjoy working on the timeline so Adobe Edge is a lot more creatively satisfying than working with eclipse to make "interactive art", at least for me.

In this example I made an animation in Adobe Edge that the user "Scrubs through" with the scrollbar instead of it just playing automatically as is the default for Adobe Edge. I think its a good way to introduce the lay person to the concept of scrubbing a playhead through time, and would make a neat "popup book" for kids with a simple approach like this as it is a different use of a familiar UI element, the scrollbar. As a flash user, I've always hated scrollbars because I think information should be presented in one place using time/animation rather than making the user scroll through it, but I have built them from scratch in flash AS3 (see previous post) and this makes for an interesting continued experiment with the things.

Example (drag the scrollbar to advance the animation)
http://www.northeastmagic.com/adobeEdge/scrollbar_scrubber/test7.html

Allowing the user to scrub through your html5 animation created in Adobe Edge allows them to have a "popup book" feel of control over your work, making it interesting to play with. Scrolling is a familiar control interface but using it as a playhead scrubber opens up a new realm of possibility to the user unfamiliar with animation development. Note: the animation has to be wider than the users's viewport or this wont work - so you designers with huge monitors will have to shrink the window down a bit...

From an animator perspective, try to make your animation in segments that can be easily divided into the physical width of the artwork (or height if you are vertically scrolling). So for example a 4 second animation could be 2000px wide, and you basically do 1 scene inside 500px, bearing in mind that animation occurring in the left side will not be visible as the user scrolls through the piece. (Per second you allow 500px for that "second's" scene. Its a weird way to think about animation but hopefully thinking of it this way will help.

As of writing this article, Adobe Edge preview 3 is fairly buggy, for example trying to work with objects that go beyond the right side of the viewable area is problematic since the selection tools basically become unavailable when you scroll. My workaround for that was to do the animation in the viewable area first, then move the playback head to 0:00, then translate the x of the animated objects to the far right as far as I could without losing selection. Interestingly when you translate an object while the playhead is at 0, it affects all keyframes of the object, so this seemed to be a workaround for now. Hopefully adobe will address this, as well as adding the ability to set the width/height with percentages instead of px, and individually control the overflow handling of the vertical and horizontal scrollbars.

1. add a trigger to the beginning of the animaton this.stop();




2. add a "scroll" event to the stage top right. paste the following code in there

// insert code for scroll event here
var myCalc=this.element.scrollLeft/(this.element.scrollWidth-this.element.clientWidth);
this.stop(myCalc*this.getDuration());




3. make the animation etc. work at the full width. Make a note of the stage width you picked (2000px etc.) top left.




4. when finished save, leave edge and look in the files it created.

5. Open the one called "MYFILENAME_edge.js" in dreamweaver

6. do a find for "2000px" or whatever the width was that you picked. .... replace width value with "100%"

something like : id: "eid1", tween: [ "style", "${_stage}", "width", '100%',

is the important one. There should only be 1 _stage line. If there is more you've tweened the stage and you should remove them.

7. if you are scrolling horizontally you'll need to hide the vertical scroller like this:


one of the objects should have a stage object, add the overflow-x and overflow-y appropriately:

"${_stage}": [
["color", "background-color", 'rgba(12,12,13,1.00)'],
["style", "width", '500px'],
["style", "height", '400px'],
["style", "overflow-y", 'hidden'],
["style", "overflow-x", 'auto']
],

REALLY IMPORTANT, dont forget to make sure there are commas between each line and NOT one on the end of the last line

if you want to vertical scroll, use overflow-y auto and overflow-x hidden, and set the height to 100%. You can also set both height and width to 100% to push the scrollbar to the bottom of the frame.

I still think flash is far more advanced of a tool for animation and rich internet applications, but given the landscape of politics these days with iOS refusing to allow flash for their own inane reasons, we can learn to "build a ferrari with toothpicks" and use HTML 5 / javascript to appease the ignorant "flash haters" out there.

About the author:
Ryan Cameron is CTO of SweetRush inc., a SanFrancisco based e-learning and interactive technology development company. Ryan works virtually and lives in Nova Scotia, Canada.

Tuesday, October 19, 2010

Samples of a windows-like scrolling window and collapsing animatable tree class in actionscript 3

http://www.northeastmagic.com/as3examples/

Everything in this example is 100% pure actionscript 3 made in FlashDevelop. I was struggling to find a real object oriented component that was editable at a very low level so I made this from scratch myself. I may add it to google code as an open source project for others to improve upon.

There are a ton of controls. The individual shapes for every part of every interface element are all classes written from scratch in AS3.

If you are interested in this class let me know at ryan @t northeastmagic dot c0m.

Thursday, September 30, 2010

Helpful hints in creating a custom facebook FBML page

Five Helpful hints when making an FBML facebook page. Hopefully this will save you some time in creating your own custom fan landing page.

Facebook page Icons: 200x200 pixels in size max. Different sizes get cropped unexpectedly so trial and error is the only way to determine what to do.

1. When the tiny icon is made, a 200x200 image gets cropped to around 165x165 then shrunk to the icon size. If you want a border around your subject, you need to make the subject smaller than 160x160 to preserve it.

2. Image artifacting. Any background color but black and white seems to cause artifacts around detailed edges. If you have text or fine

detailed vector graphics on a background, keep the background either black or white..or really busy so the artifacts look like part of the image. It also seems to preserve smoothing, so you can really blur the image if you want by setting smoothing to 8 (photoshop/fireworks)

3. a bunch of weird crap happens with IE that isnt testable outside of facebook:
-stylesheets have to be external or IE wont read them (use <link rel="stylesheet" href="http://www.mywebsite.com/myStyles.css?v=1.0" type="text/css"/>[/code] at the top of the facebook page)
-div tags cause spacing problems in tables, so if you create a table use span tags, not div tags. For some reason the div spacing issues cant be overcome with setting padding/margin/border to zero. Technically divs add a linefeed and spans dont...so perhaps thats it. Divs work fine in IE, Chrome, Safari, and Firefox outside of facebook, but not in a facebook page.

4. You cant link directly to a youtube .flv anymore (easily) so to embed youtube videos you need to link to the .swf file.

<span class="videoWindow">
<table width="240" height="145" border="0" cellpadding="0" cellspacing="0">
<tr> <td><fb:swf swfbgcolor="000000" imgstyle="border-width:0px;" swfsrc='http://www.youtube.com/v/VIDEO_ID_GOES_HERE?autoplay=1&egm=0&border=0&showsearch=0&showinfo=0&iv_load_policy=3&rel=0&color1=0x111111&color2=0x000000' imgsrc='http://www.mySite.com/images/videoLanchGraphic.png' width='240' height='145' /></td> </tr>
</table>
</span>

This will provide a simple youtube player. There are arguments you can pass are documented here:

http://code.google.com/apis/youtube/player_parameters.html#ExampleUsage
To hide the annotations and stuff, rel=0 is the most important, some of the other ones like iv_load_policy dont work without that.

4. as with all style sheets, make absolutely sure the final semi colon is at the end, any code written after it will be ignored
<style>
.myRef1{
}
.myRef2{
};
.myRef3{
}
</style>
In this case myRef3 class is ignored.


5. In the page editor, sometimes if you have code that exceeds the size of the browser window (unavoidable) after a save the window gets small and there are no scroll bars to get to the rest of your code. in firefox you can press Ctrl+a to select all and this enlarges the window to accomodate all your code.

Monday, September 20, 2010

Moble internet has sent us back to the stone age

Up until about 2006 when internet technology was advancing extremely fast in terms of what an RIA was capable of, we were introduced to what I would characterize as several speedbumps.

1. Facebook (in a big way, not its actual inception)
2. the iPod touch/apps/iPhone etc.
3. Google

These two massive developments effectively ended the progression towards faster, better, more elaborate technologies and set us back about 10 years in terms of what one could do with modern technology and the internet.

Facebook represented a highly simplistic html based interface with technology that had been around for 20 or 30 years. In terms of capabilities, it was not much more advanced than, say, compuserve or AOL was in 1995. Sure, the standard FBML was more open to developers, and it introduced more user friendly tools, but it fundamentally wasnt much different.

On the other hand, up to the real boom of facebook, online gaming technology like World of Warcraft, and before that Myst URU Live, and of course Second Life were pushing the boundaries of both the display engines, physics simulations, reality engines, and really appeared to be the next logical step from the 2d but fast paced and impressive flash revolution.

When HTML dominated the internet, it was largely text, tabs, scrolling, and hyperlinks. Eventually people could interact with databases via HTML form pages, and the simple form/submit/variables were born. Some java apps enabled more elaborate connectivity, but when Flash came along, eventually the graphic designer was able to directly make use of the power of database connectivity without forcing an "install" procedure. A person could simply navigate to a flash application and start "playing" then could leave, and wouldnt have to "uninstall" the specific app thanks to the flash player.

Flash took the web from simple text and static graphics to a new era of video, animation, games and sophisticated RIA's for business that could replace boring, ugly apps developed by nerds with no graphic experience or animation expertise. The visuals now took front seat while the functionality often became a side note (much to the chagrin of tech purists like Jakob Nielson, who saw technology exclusively a pragmatic object, and not a creative expression.

The flash revolution completely changed the way people saw the web.

Then Google came along, and since google was designed primarily around the idea of "webpages" which was a throwback to the flash generation which instead was developing a world of sophisticated, intelligent apps in place of "webpages", google could not understand them. The concept of websites got a breath of fresh air, and became revitalized and we saw resurgence of CSS and HTML, and the HTML format was again considered the "permanent grand master" and flash was seen again as a small quirky, strange thing often warned against with misinformation and mistrust, similar to "witchcraft" in medieval times.


Then along came facebook, which looked old fashioned and grossly simplistic to the creative developers at the time (myself included) who dismissed it at first. The hook, however, which proved to be more important than pragmatism OR creative expression was the end users ability to assert themselves. Up to the facebook revolution, creative and technological elitists had reserved the right to produce content for large audiences much like television broadcasters had reserved that right for themselves in the channel. The "broadcast" world became the "conversation world", and the "audience" became far more interested in each other than the content being shoveled at them by anonymous "experts".

This perplexed both the google/html experts and the flash experts, and to survive, both had to learn to play facebook's way or be left behind. Google continues to struggle with this and may actually be forced to completely change, reinvent itself, or simply become obselete as facebook search replaces it entirely - relegating it to a plugin for wikipedia and other large information repositories.

Up to this point, both facebook and google's technology pushed the state of the art backwards in terms of sophisticated application development...google with its HTML dependent design, and facebook with its proprietary but largely HTML centric design. Savvy flash developers have managed to integrate the technology into facebook in things like Farmville, but flash is not really being taken advantage of or pushed to new levels, its actually working to be compatible with legacy, dated technologies offered by Facebook and Google.

Enter Second Life. When Second Life came along, as a flash developer, I was honestly intimidated. It seemed that it could run circles around flash by simulating not only 2d animation, but 3d animation, sophisticated artwork, creativity, and reality engines. The true state of the art exhibited previously in stand along video games now in an open engine, available to developers. Things like HTML and Flash on a prim surface made those two technologies seem laughable, and its API put it in the next logical step toward the "holodeck" along with its interchangeable physics engine, developer tools, and scripting engine.

At the time of Second Life's peak, it was in the news almost daily, and one could fart in second life and it would make front page of CNN. It seemed unchallenged and unbeatable in terms of potentially taking the RIA to the next level.

(I'm ignoring the concept of cloud computing here because the concept, while important as a fundamental shift in app management, is grossly overhyped - its important like the standard voltage of electricity in homes is important, but not really worthy of news or discussion per se as its not particularly innovative anymore, its just a natural progression)


Then along comes the iPod touch. These tiny devices were extremely revolutionary ONLY in that they made what was already technically available more "inviting" and popular thanks to Apple's branding and clever marketing. They are the coca cola of technology. Fizzy sugar water had been around for many years prior to coca cola, but coke packaged it and made it viable into what is still one of the most popular non-nutritionally valuable foods ever.

The iPod touch was particularly important because it took available processor capabilities at a small size, stripped off all the least popular features on hand held PC's, and made the interface elegant and easy to use. This changed everything, and because technologies like flash and second life were not capable of displaying on such low-power devices, they took a second seat to the "revolution" of the mobile app.

Mobile apps, in truth, are grossly inferior to the state of the art of the RIA on a desktop or laptop computer, but are more popular largely due to the fact that they are available on the terms of the consumer rather than the content distributor.

I dont, for example, want to play internet checkers while I'm sitting at my desktop, but I do when I'm about to go to bed, or riding in a long bus or cab ride to help pass the time.

I would love to play second life in that time, but it just isn't feasable. The display is too small, cant handle the processor speeds, and is too hard to manipulate while I'm holding the little thing.

So in effect, between facebook, google and Apple, the entire move towards progress in display technology has been put on hold while a new "revolution" of getting people to integrate these devices and platforms into their lives occurs.

The future prediction that follows is once the public is on board with these devices and rather simple technology, content will become king once more as consumers become "bored" with facebook, google, and iPhones/ipads/ipods etc. That, you can count on.

Sunday, May 2, 2010

HTML 5 vs Flash...standards based vs proprietary

I thought of an appropriate analogy. I've spent a lot of time working with both open, standards based technology AND proprietary technology, as have all of us.

There are advantages and disadvantages to both, making them each important in developing commercial software and rich internet applications.

Proprietary platforms vs Open ones are like two cars in a race. One has to follow a set of carefully constructed, committee determined rules. The other can simply race around, unfettered. If the object of the race is "getting there first", the proprietary car will almost always win. However, if the objective is more complex, then the proprietary car will be sloppy and unsuccessful, or too focused and inflexible to deal with unforseen events.

A direct example is rendering speed. When you look at a flash presentation, you dont care how it is rendered by the CPU or if it followed certain rules, you just want it rendered as quickly and efficiently as possible so your presentation is not sacrificed. Flash accomplishes this very well because it compiles into a very efficient, compressed code known as "pCode" that is interpreted by the flash player and pushed to the screen as fast as the processor will allow.

HTML 5 as proposed, is a "JIT" or Just in Time compiler, so the browser has to read fairly english like, inefficient tags and convert them to visual graphics on the fly. This is a relatively slow process, but it means if you go view-->source, you can more easily read how the product was created, and copy bits and pieces and paste them into your own HTML 5 document if you want. This is one of the best examples of open source.

Adobe, years ago, introduced something called SVG, which was like HTML 5 almost exactly, except quite a bit more advanced. Adobe wanted to compete with flash because it was owned by Macromedia at the time, a rival to Adobe. SVG failed to catch on though, primarily because it was slower, and less capable than flash. Adobe gave up, and merged with Macromedia, and now champions flash.

Flash does not decide to run only if the code is written perfectly, or if the content is intuitive and useful. Flash is not capable of making that kind of value judgement. That has made for a lot of bad press for flash, because a lot of coders make annoying ads using flash, or make unintuitive, inefficient programs that crash or use a lot of power unnecessarily. Flash does not test coders for their skill level before allowing them to compile for it, it just lets whoever make whatever, as long as they have a valid flash authoring tool. That has enabled some fantastic flash based content to appear, such as www.homestarrunner.com, and it has also allowed for a lot of really annoying stuff.
Given the coders skill and available processing power, though, in every case flash will run faster and more efficiently than SVG if it were created under the same circumstances.

Apple takes this several steps further, and that has been both its success and its failure. Apple has the philosophy that all development must be censored, controlled, and held to a certain standard before its user community can be exposed to it. This makes for a relatively virus free, consistent experience. Its like McDonalds, or Coke A Cola. You know exactly what you are going to get when you open a can of coke whether you are in Guatemala or Moscow. Apple also only runs on Apple hardware, rarely is compatible with non-apple peripherals, and maintains tight even tighter quality control over its iFamily of products. The result is a consistent experience across all devices you buy from Apple, and content that is guaranteed not to be offensive, annoying, or rude. A clean, happy world that is a digital utopia.

That world isnt desirable by all people though, many people in a free country value freedom of expression, freedom of choice, and the right to decide what constitutes "offensive" or "annoying" instead of having a corporation or government decide that for you. Steve Jobs has made it very clear he will not back down on compromising the user experience on his iFamily of devices, although on the Mac OS they do support flash, most recently announcing they have enabled low level hardware support for it. It appears that mr. Jobs is far more interested in his iFamily of devices, though, as he stated the iPad is the most important thing he has ever done in his career. It is possible the Mac OS may be spun off to another company such as microsoft one day, so Apple can be free to pursue their ideology unfettered by the Mac OS and their desktop/laptop computers.

The internet is not something Apple can control or censor (yet), but they can on their own devices and they are doing as much as they can to protect their digital utopia for their users. They have created the app store where developers can apply to create and sell their games and content as long as it meets Apple's strict requirements for functionality and cultural sensibilities. These apps can communicate with the internet and become special portals for websites that guarantee Apple control over what app developers want their users to see.

They do have a web browser app as well, but, many sites you view on an iPod or iPhone will be specially built to be more efficient on your small device. The website can detect that you are an iPhone user, and actually alter itself so that it is laid out in a way you can easily cope with on your device. So, when you "surf the net" on your iPhone, you are seeing a version of the internet that is special. One that is designed for you and your iFamily device. They also block flash, which most people surfing the internet can see (or block if they wanted to using a flash blocker)


There is, however, something strange here. Apple realizes that in order to sell their devices, people will want to look at the internet. Apple has, however, blocked flash on their devices to protect their digital utopia and encourage people to use their app store apps instead of playing flash games or viewing flash videos. Then it gets confusing, because Apple has publicly come out in support of HTML 5. HTML 5, they claim, can do everything flash does, and they want people to use it instead of flash. This is strange because if HTML 5 does everything flash does, why block flash in the first place? My guess is that Apple knows HTML 5 is much slower than flash at rendering interactive experiences, and that it presents less of a threat to their proprietary app store system than flash does. Also, since HTML 5 is open and easy to read the source for (as opposed to being obfuscated like flash's p-code is), HTML 5 sites are easier for Apple to censor, even censoring specific parts.

I dont pretend to read Steve Job's mind though, so I can only be confused like most of the rest of the world is.

To be clear, Apple is not acting out of character. They have been dedicated to the proprietary model since the beginning offering a "different" experience than their competitors. This has been welcomed by many consumers, because it makes the experience of using a computer and going on the internet less frustrating and confusing for them.

Competitors and corporations have shyed away from Apple for this reason though, because Apple does not allow them the same freedom that other platforms do, so they have chosen to risk the viruses and pitfalls associated with them for the benefit of the freedom to do what they wanted without having to check with Apple first, or in some cases, create their own proprietary systems and take responsibility for the viruses etc. themselves. I think this is the fundamental reason Apple maintains a relatively small but loyal sliver of the overall marketplace.

HTML 5 vs flash is more about standards vs proprietary, and the proprietary approach is the one that allows corporations to compete with each other and give their end users something optimized specifically to their needs without compromising. The standards based approach makes a platform more open and transparent, and fosters innovation by providing a common set of tools for many to use. If you want to build a product that is "better than the rest" and meets a specific need, you probably need to create something proprietary. This allows you to protect your investment from being copied easily, and enables you to demand support by paying for it as your budget allows. If you want to build something just to improve the plight of mankind and expect nothing in return, Open Source is the way to go. HTML 5 is great for websites where you dont care or even would encourage copying. Flash is great for building "rich internet applications" that you want to compete with others and do something just a bit better for a price.

Saturday, May 1, 2010

Many ludites suggest flash is going to be "killed" in the long term. Wrong.

Its hilarious to listen to ludites express opinions about things they have no concept of. They state that "one day, people will no longer have to download plugins and that is why flash will eventually die"

Flash is simply integrated into the browser, so no plugin or download required, this is already the case with Google Chrome. Remember when you would buy a PC with or without a math coprocessor? Probably not, but they arent "dead", they are embedded and its impossible to buy a computer without one. No one cares, no one buys a math coprocessor anymore or even knows what it is. Math coprocessors are there, they have not "been killed" they simply are invisible to the end user. This is what flash will eventually become, invisible to the end user. They will just see cool content and wont care if it is HTML 5, flash, or whooza wooza.

The future as I see it...HTML 5? Flash? whatza whooza?

I see Flash/Actionscript it as I've always seen it, a specialized UI tool for building rich internet applications, and there isnt anything else on the market that accomplishes this task as well as flash at the moment - and in the forseeable future. Should something come along that does it better, I have no particular loyalty to Adobe and would be the first to embrace the new technology, in fact, for the latest stuff I have been building flash files in non-adobe products for the most part, only using the free flash compiler that comes with the flex sdk to do my compiles - but I could be using something else if I felt it was worth the effort.

I think if Adobe is smart, they have an opportunity to blur the lines between HTML 5, flash, and anything else by simply making an authoring tool that compiles to any format, and even player technology or scripts that interpret flash to HTML 5 and back on the fly. This would effectively end the debate of HTML5/flash, and render "player technology" irrelevant, which it pretty well already is since flash is embedded so deeply in most browsers outside of the iFamily. End users dont care if their games are HTML5, flash, javascript or whatever, the only people who care are developers, so the drama continues. Adobe clearly realizes it is not in the "plug in" business, it is in the authoring tool business, so their authoring tools should continue to output in every possible format for every possible platform, the only limitation being the platforms and formats themselves. Adobe is in a better position than most companies, it knows how to write RIA authoring tools better than anyone, hell, it invented the concept. Adobe is capable of being so flexible, no other large corporation can really hurt it. For example, Apple said no flash on iPad. So, adobe makes a compiler within a few days that authors app store compliant software for the iPad. Apple gets angry, and responds by blocking any content that is authored by flash cs5. This is ridiculous, because you can bet almost every visual on the apple platform was partially designed using an adobe product, including the hardware. Apple has succeeded in making itself look like an immature baby, and Adobe simply says "fine, we did everything reasonable, and if you want to act retarded, we simply will focus our energy on another platform...android". Apple thinks they've beaten adobe...ha ha. Adobe's dreamweaver is CURRENTLY the best authoring tool for HTML 5, which Apple believes is competition to Adobe. Again, ha ha. Adobe outputs in SVG (HTML5's parent technology) - which Adobe essentially invented, and compiling html 5 from the flash authoring system is actually very logical, and flash CS5 will likely be the #1 choice for making html 5 canvas based content. Apple makes more money than Adobe, but they dont get content authoring like Adobe does. Neither does Microsoft for that matter.

What I am suggesting means that if a user who does not have a flash capable browser visits a flash site, the site could, on the fly, prepare an HTML 5 version for them automatically. This is not difficult, or particularly processor intensive, as it would only need to be done once for the particular platform. A "flash to html5" converter could reinterpret almost any flash site into HTML 5 automatically, so the legacy content would all continue to work without a hitch, and new content could be published directly to HTML 5. That is why HTML 5 is not the future. The future is..."who cares technology", IE the path of least resistance, lowest cost.

If I am an animator and it will take me 25 weeks to produce a cartoon in HTML 5 vs 2 hours in flash, there is no contest. If I can output in both formats with a 1 button publish, then there is no debate, not even a conversation about it. My animation will work on old browsers, new ones, iPads, apeDods and dewDads. THAT is the future, I believe. Whatever is cheapest, easiest, and gets the nerd junk out of the way so creatives can express without having to ftp the htp and mno the qrs. Html whatsit? Flash-a-who-eee?

There will always be a need for niche, customized software in spite of all the attempts by the drupals and nings of the world to provide an easy button because if something is too easy, it becomes nearly impossible to differentiate yourself from everyone offering the same product for free. So in this respect, the best language for the job will be the tool of choice, and right now the clear winner is OOP ECMA. All modern languages are ECMA compliant, and the others are dropping off because they are hard to use and clumsy in comparison, like Objective C, C, C++, Perl, PHP, etc. are the "olden days" and ECMA represents the modern languages like C#, Javascript and its growing libraries, Actionscript 3 etc, all of which can now be authored in eclipse. Again, path of least resistance for developers. I can write in ECMA languages for pretty well every platform, and they are all standard compliant, so the only difference is the compiler/player, which, quite frankly, I dont give a damn about. For me to publish our LMS in HTML 5 in two years, I likely wont have to rewrite any code, there will simply be another checkbox for "output to html5" and voila, done. Company saves millions, and I can concentrate on adding features instead of trying to comply with a non standardized language to rewrite everything...which is incredibly inefficient. ECMA is the "english" of the programming language world, and its already won. Javascript, jQuery, C#, and Actionscript 3 are all together on that front.

They used to say "content is king". I imagine that is still the case, and the amount of flash content out there that is in flash is massive, several orders of magnitude more than what is contained in the "app store". At the same time, only some of that content is video based and can be easily converted to HTML 5 for the iPad/iPhone. Its much easier to write a translation tool than to redo all that content, so that is most likely what is going to happen. Check out www.homestarrunner.com on your iPad for example. Those guys will NEVER spend the time and energy to convert 3 years worth of weekly flash episodes to HTML 5 manually, but a converter would take care of it instantly. The ONLY thing stopping a converter from being made is HTML 5 itself. The format simply isnt ready to handle the complexity required by that content to render properly, but you can bet the second it is ready, some free converter will be available and it will all run smoothly everywhere. For Steve Jobs and the iFamily's sake, that will hopefully happen sooner than later, otherwise many consumers will drop their iFamily product in favor of Android or whoever offers a full flash player because they can get all the app store games for free, as well as all the legacy flash content out there that will likely never be converted to HTML 5 manually. "If I can get "boob shake" app that Apple refuses to allow in its app store on Android for free without having to use iTunes or sign any kind of confining DCMA and basically remain anonymous...well, my iPod touch is going in the bin of old adapters and pocket pcs." says joe daily show fan.

Sorry about the long post, of course, but the issues here are complex and intertwined.

Thursday, April 29, 2010

Steve Job's perpetuates 6 myths about flash.

Here is a link to an engadget article including Steve Job's press release. (Press the "show press release button" at the bottom of the article...dumb, I know.)

Here are my points in response to the 6 points highlighted in the article.

1. "Flash isnt open" - it is actually. Its been open source for years, and there are hundreds of free tools out there that can create .swf files. The swf file spec is not ruled by a committee of volunteers, but that is likely why it has evolved so quickly, and why HTML 5 has effectively stalled. Check out "papervision.org" for a good example, or the "open screen project" at Adobe.

2. "50,000 apps are an effective replacement for the web's flash games" - well not really.

a)Flash game content is not controlled by a single governing body, so one can develop for the flash platform without fear of having their work blocked, censored, or taken offline by a centralized distribution force. IE if I spend $150K on some RIA using flash, Adobe cant shut me down arbitrarily as Apple has been doing to app developers. This means innovation will still happen on the flash side, and apps will copy.

b)Not all flash content out there is "games". There are literally thousands of flash based UI's for business applications, training, and content management. Many of these are behind corporate firewalls, only accessible to customers or internal employees. This is UI that is dependent on the capabilities of flash including rapid prototyping, object oriented class structure, and code sharing and management for scaling business needs. Flash can be the entire UI, or small bits here and there depending on the platform, but has far more robust support for security and tracking to a greater level of detail than any HTML or Javascript based technology.

3. "Reliability on the mac" - Adobe claims Apple consistently blocks adobe from having low level access to their systems, access that is necessary to optimize flash for them. Adobe flash VM2 supports h.264, so there is no technical advantage to HTML 5 even in that respect.

4. "Battery Life" see #3. Intel based PC's have solved the issue by including flash friendly hardware rendering. This, again, is a myth perpetuated by Apple apparently for its own petty self-interest.

5. "Touch not supported". EVERY UI technology currently assumes a keyboard and mouse. Every UI technology can be used to react appropriately to touch. This has absolutely nothing to do with flash in particular, it has to do with shifting all UI technology to support a touch based environment. Touch is simply a new set of UI events that need to be accounted for. Touch does not compete with keyboard/mouse, it augments. Many things are still a lot easier to do with keyboard / mouse than with touch. The idea that touch by itself is somehow the next "evolution" of UI is idiotic. I cant imagine typing this letter, for example, on my iPod.

6."Third party vs Apple's quality (I guess?)" What he appears to be indicating here is that Big Brother AKA apple knows what is best, and small, independent businesses are unreliable and incapable of providing quality tools. Adobe has a pretty good track record of providing the best and most popular tools for creativity that exist, and so I'm not sure how this is a point at all.

This latest trend for Apple seems to be shaping up as a battle for domination of the web by Steve Jobs, who appears to be taking an all or nothing stand where Apple is in 100% control of all online business, or they won't participate.

I think its important for developers to have HTML 5 based alternatives to flash only sites, and consider the app universe and exciting prospect for new business, as well as touch and other technologies it brings up. What upsets me is the closed nature of the Apple business model. As a consumer, I enjoy the ability to have windows media player, apple itunes, and google chrome all running on the same PC at the same time. Flash does not block HTML 5, or silverlight, or DHTML, or any other technology. It is simply another choice in a free society that enables innovation.
Apple's fight to kick everyone out of the sandbox and be the only one there is perplexing and seems uncharacteristically short sighted. I certainly hope they find a way to change their policy.

Sunday, April 4, 2010

iPad? How about the "sharePad" .

Take the "i" out of iPad, and replace it with "we" or "share" and it might become obvious why Steve Jobs is right, this will be the most important and influential offering of his career.

Well, I watched this video, and it suddenly dawned on me. Steve Jobs is right, this is the most important thing he's ever built...only he forgot to tell us why.

Its a show and tell device, a sharing device. Something you would use to show content to someone else. Something to interact with content with someone else. One hand holds it, and three others can poke and prod at it.

As this time article points out, creating content is likely a futile exercise on the iPad, the mouse and keyboard are far superior to a multitouch interface for drawing pictures, writing a blog etc. BUT, if I want to show someone else my blog, or my latest picture, or movie, or whatever...the iPad is far superior to any PC as a show off my stuff device.

PC Gaming is generally a solitary experience although wii really introduced the idea of playing games with your friends, and the iPad really puts people together more intimately and outside of the livingroom/couch context.

I can see the iPad being an excellent and unequalled device for showing people photos (probably most importantly), exploring a map together, playing head to head games like chess, putting together a puzzle with your friend, watching movies or TV in bed, showing plans for architecture onsite, all kinds of new collaborative musical instruments, or working with someone else to organize information IE looking at my accounting spreadsheets with my accountant next to me.

The perfect configuration would be an iPad that doubles as a computer monitor, you plug it into a base that has a keyboard and mouse and all the computers heavy lifting processing power (until that becomes more portable), then you pull it off that device to take across the room, on the train, over to your client's office, to your friends house etc. to show off what you made and maybe get their input.

Steve Jobs device will, in my opinion, appear crude and almost comical in as little as 3-4 years, but the influence it will have on how we will interact with information and each other over the next several years will be huge. Steve didnt invent the tablet PC, but he was the one who got us to try it out...together. Only he didnt know that at the time.

Wednesday, February 24, 2010

Google needs to come clean

In recent news, Google executives in Italy have been convicted for participating in the dissemination of a video depicting the abuse of a child with Down's Syndrome.

Google responded, claiming this action represents the end of the internet as we know it.

Well, it could certainly mean the end of Google as we know it. The problem as I see it is, while Google execs didnt post the video or even know about it until after it was removed, what they fail to mention is they did automatically make money from the posting of the video, as they do with all videos. Ads placed next to videos automatically bill to the advertisers and the videos, regardless of content, immediately generate revenue for Google.

So, they financially benefitted from the abuse of a Downs Syndrome child. The amount may be vanishingly small given the number of hits, but it does bring up a serious point that, were I working at Google, would avoid making such a big stink in the news about.

The point this brings up is, Google financially benefits from all videos posted on youtube and google video in the form of traffic and ad revenue. This truly makes them fiscally responsible for the content contained therein. I'm not sure how they avoid this, but it does seem like a gaping loophole that may be exploited by these Italian lawyers.

Right now, if I try to apply for "revenue sharing" with Google, I get refused if I cannot provide significant legal documentation stating I own the rights in eternal perpetuity across all media for every molecule, concept, and brand displayed in my videos, as well as permission of all those depicted. Otherwise, I fail to be considered. They dont take the video down though, they leave it up and continue to profit from it even though they CLEARLY do not own permission if I the poster do not (by their unreasonably strict standards)

So, my advice to Google is, if you cant accept the responsibility for something, DONT accept the benefit. Actively avoid it. Do not place ads on or near any content for which you are unwilling to be held accountable for, and ONLY pay revenue to the poster and get them to share with you ONLY if they can prove 100% ownership of the content. That way, the responsibility is indeed 100% with the poster, and you are free of culpability.

In this case, I'm afraid, you are partially culpable, although were I the judge I would charge a small fine of $2000 or so payable to the family and you could be on your way, with a warning to change your business model.

Sunday, February 21, 2010

The iPad vs flash issue is a red herring. The real issue is the iPad vs. the Keyboard and Mouse.

In a recent article shown to me by a co-worker, blogger and flash developer Dan Eran Dilger makes a case in support of keeping Adobe Flash technology off the iPad.

In the article, his chief arguments seems to be centered around UI elements such as mouseover, keyboard controls, and multiple mousebuttons so many flash applications depend on to function properly.

I would counter that the idea of slighting flash for supporting this functionality is backwards, instead, the argument should be leveled at the iPad for actively blocking this kind of functionality.

The fight of the iPad is not between it and flash, it is between it and humanity. It has thumbed its nose so to speak at the mouse and keyboard, and while multitouch certainly has much promise in adding significantly to the ways we interact with information, it is by no means an alternative for every user input device.

Further, flash is just a software development platform like C++, Java etc. The question isnt whether it will have multitouch and accelerometer support, the question is how will that become standardized across devices? Currently Apple is curiously vacant from Adobe's open screen project for example, and seems uninterested in a standardized approach to multitouch UI design outside of their own platform. This is shortsighted and disappointing.

Like Apple's "one button mouse" that looked like a hockey puck and every serious Apple user replaced the first chance they got with a real mouse, Apple is attempting to force users to interact with what is really the end users OWN content and information in a way Apple believes is the best, rather than providing end users with a pletora of tools and allowing them to pick and choose.

Personally, I believe Apple should jump off its "high horse" and simply support an external mouse and keyboard, and perhaps a small stand. That way, users could interact with the iPad like a normal computer OR use it like the tablet, depending on the context of the particular activity. That said, the list of things the iPad should be or should have is staggeringly long, so I'll cut it short there.

Apple, its not flash, keyboards, mice, or the internet that is being immature here, its you. You have some neat ideas but you need to grow up and share your toys.