Monday, October 22, 2007

A short history of Flash!

Hey people!

Today me and Sureshbabu, got around to talking about a history of flash, and turns out that several of my facts were wrong! It turned out to be quiet in interesting discussion.

Here's a short history of the software to tickle your interest.

  1. FutureSplash Animator (Spring 10 April 1996) – initial version of Flash with basic editing tools and a timeline
  2. Flash 1 (November 1996) – a Macromedia re-branded version of the FutureSplash Animator
  3. Flash 2 (June 1997) – Released with Flash Player 2, new features included: the object library
  4. Flash 3 (31 May 1998) – Released with Flash Player 3, new features included: the movieclip element, JavaScript plug-in integration, transparency and an external stand alone player
  5. Flash 4 (15 June 1999) – Released with Flash Player 4, new features included: internal variables, an input field, advanced Actionscript, and streaming MP3
  6. Flash 5 (24 August 2000) – Released with Flash Player 5, new features included: ActionScript 1.0 (based on ECMAScript, making it very similar to JavaScript in syntax), XML support, Smartclips (the precursor to components in Flash), HTML text formatting added for dynamic text
  7. Macromedia Flash MX (ver 6) (15 March 2002) – Released with Flash Player 6, new features included: a video codec (Sorenson Spark), Unicode, v1 UI Components, compression, ActionScript vector drawing API
  8. Flash MX 2004 (ver 7) (9 September 2003) – Released with Flash Player 7, new features included: Actionscript 2.0 (which enabled an object-oriented programming model for Flash), behaviors, extensibility layer (JSAPI), alias text support, timeline effects
    Macromedia Flash MX Professional 2004 (ver 7) (
    9 September 2003) – Released with Flash Player 7, new features included all Flash MX 2004 features plus: Screens (forms for non-linear state-based development and slides for organizing content in a linear slide format like PowerPoint), web services integration, video import wizard, Media Playback components (which encapsulate a complete MP3 and/or FLV player in a component that may be placed in a SWF), Data components (DataSet, XMLConnector, WebServicesConnector, XUpdateResolver, etc) and data binding APIs, the Project Panel, v2 UI components, and Transition class libraries.
  9. Macromedia Flash Basic 8 (released on 13 September 2005) – A less feature-rich version of the Flash authoring tool targeted at new users who only want to do basic drawing, animation and interactivity. Released with Flash Player 8, this version of the product has limited support for video and advanced graphical and animation effects.
  10. Macromedia Flash Professional 8 (released on 13 September 2005) – Released with the Flash Player 8, Flash Professional 8 added features focused on expressiveness, quality, video, and mobile authoring. New features included Filters and blend modes, easing control for animation, enhanced stroke properties (caps and joins), object-based drawing mode, run-time bitmap caching, FlashType advanced anti-aliasing for text, On2 VP6 advanced video codec, support for alpha transparency in video, a stand-alone encoder and advanced video importer, cue point support in FLV files, an advanced video playback component, and an interactive mobile device emulator.
  11. Flash CS3 Professional (as version 9, released on 16 April 2007) – Flash CS3 is the first version of Flash released under the Adobe name. CS3 features full support for ActionScript 3.0, allows tweens to be converted into ActionScript, adds better integration with other Adobe products such as Adobe Photoshop, and also provides better Vector drawing behavior, becoming more similar to Adobe Illustrator and Adobe Fireworks.

cool! huh! I took this down from the ubiquitious wikipedia.

http://en.wikipedia.org/wiki/Adobe_Flash

You get many more interesting tidbits there. Check it out!

Also, for those who are hungry for more here is the history of flash and how it came around by the inventor of Flash - Jonathan Gay.

until next time then!

ciao.

shauryashaurya

...

Tuesday, October 16, 2007

'Voodoo Chicken' or the 'Vietnam War', If It Is Working Don't Change!

In figuring out the Big OOP Kahuna, we've all come across the ubiquitious 'Design Patterns' right?

Cool, now how many times just 'knowing' about a design pattern helped us write better code, create more robust systems, create reusable, more valuable code?

In my experience, not many.

No matter how well engineered the application, how well written the code, we still have rarely profited by writing code for that very application, in terms of raw effort, if at all, our profit margins have been pretty slim.

I go from project to project coding similar applications, and its a rare instance that I am able to reuse my code with minimal effort. Even in the cases where I know a 'trick' of how to get something done, I still struggle as hard in 'implementing' it in my current situation, as I fought with the problem in the first case!

There are too many examples to count : Multi Page Printing in flash, or Depth Management in Flash, or Drag-Drop like activities in Flash. Although I know how I did it in one project, It's still hardly a 15-20% reduction in my effort, the next time I do it!

This sort of problems plague us coders every step of the way, in every project, in every product.

But, where do we miss, where is it that things go wrong?

In the quest to improve the quality of (and practice of writing) my code, I came across a significant observation, I'll quote this verbatim :

"Identifying bad practices can be as valuable as identifying good practices."

How simple was that!

With this deceptively simple little observation in place, software engineers across the world set out to document both, their smiles as the good practices, and their sins as the bad ones. [okay pathetically cheesy line, but, you do get the point, don't you.]

The good practices took the shape of Design Patterns, from starting in the completely unrelated feild of architecture (the brick and mortar kind), they spread to management practices, governance and finally in programming of digital applications, a domain where we, the coders, encounter them most often.

But, what happened to the bad practices?

As it turns out, these were documented as the "Anti-Patterns".

Their official definition is :
"An AntiPattern is a pattern that tells how to go from a problem to a bad solution."

It makes an interesting read, wading thru the Anti Patterns Catalog.

I must confess to have comitted many of these sins as listed in the catalogue :)
Look thru, how many can you recognise to have comitted? Ummm... don't tell me, hehe...

But, there's always hope, and I am trying to improve, I look at some of these anti-patterns, and try to eliminate them from my day-to-day work and from my line-to-line code.

Here are some of my favorites, not just interesting names, but, interesting lessons in software engineering too, check them out :

So, people, take a look at these and see if there is anything you can find to help you improve as a coder, or help you resolve an issue your project...

BTW: "Voodoo chicken" is also a slang for "a spicy chicken dish"...

ciao.

shauryashaurya