Wednesday, May 11, 2011

Why I Do Not Miss Flash on my iOS Devices

I can honestly say that I fully support Apple's stance on Flash with respect to the iOS platform.

Back in 2002, when I started on my second entrepreneurial adventure, I reformatted the hard disk drive on my trusty Dell Latitude C840 and installed Gentoo LINUX as my primary operating system. One of the most frustrating things about my LINUX experience was the rather pathetic media support - something that I ultimately gave up on and moved the Mac. Support for standard formats such as MPEG-2, MPEG-4, and MP3 were plentiful. Support for proprietary file formats such as Flash, QuickTime, Windows Media was hit or miss. Most of the time, the best way to access the media files was to use the native player through an emulation layer such as WINE or a virtual machine. It was more trouble than it was worth.

On the web, the pervasiveness of Flash was incredibly annoying because there was no official Flash player available for LINUX. That didn't come out until January 17, 2007. While an official version for LINUX was a good thing to have, performance lagged behind Flash Player for WIndows. Adobe did what any company would do - they spent their resource dollars where it would get the most bang. Windows ran on 95% of the personal computers, why bother with a statistically insignificant OS like LINUX?

Probably more annoying than Flash was the preponderance of web sites that were designed specifically for Microsoft Internet Explorer. Microsoft makes great tools. They are extremely capable and allow lesser skilled developers to do some pretty amazing things. And they targeted those tools to produce code that worked well in their runtime environments - on Windows 96/98/Me/NT/2000 and IE. To run these sites "optimized for IE", I would actually have to run Internet Explorer. If I wanted consistent performance, I would have to run it in a virtual machine.

For me, the Apple vs. Flash issue is more about open versus proprietary. This isn't an iOS versus Flash issue. This is an HTML5 versus Flash issue. This is an open versus proprietary standards issue. With open standards, any company can produce a runtime that supports the standard. Consumers are not locked into a particular product because the cost to move to something else is too high (e.g., why Microsoft Office is so dominant). With an open standard, any company who sees an opportunity (and a profit motive) to produce a piece of software that will work with an open file format can sally forth and do so. Apple has iOS and Cocoa, Google has ChromeOS and Dalvik, Microsoft has .Net and Win32. All great platforms with their own unique strengths and weaknesses.

Flash was designed to bring multimedia to the web. It filled a void that desperately needed filling in the early days of the web. Now. It's time has past. The architects behind HTML and JavaScript got the message and their response has been mighty.

I am ecstatic that Apple, Google, Microsoft, and Mozilla are developing Safari, Chrome, Internet Explorer, and Firefox as "runtime" environments for the world wide web. Each company is constantly trying to one-up the rest of the pack and pushing back the boundaries of what is possible in a web browser. Google and the Mozilla Foundation are two companies that probably have the most to gain from standards-based development as both companies would likely prefer that people spend all their time in web applications. What is even better, in my opinion, is that Google and the Mozilla Foundation keep Chrome and Firefox fairly feature-comparable on the major operating systems available today - LINUX, Mac OSX, and Windows. Even Apple does a pretty good job of producing versions of Safari for Mac OS X and Windows.

All four companies are producing fantastic runtime environments for web-based applications. They each have their proprietary quirks, but those are the seeds of innovation. And they do not forgo standards compliance in pursuit of innovation.

The following site uses WebGL and is supported out-of-the box by the shipping versions of Chrome and Firefox. The Safari equivalent can be downloaded from webkit.org and you can enable WebGL support by following some instructions to enable WebGL support.


Why waste time with a platform that is only be developed by a single company, when you have a platform that four large organizations are fervently competing to produce the best implementation? In the end, consumers win because you have choice. Run the OS you want to - the open, standards-based web will work.

Tuesday, December 29, 2009

Thoughts About the Open Source Movement...

One of my co-workers recently asked, via a discussion list, how we thought "... the open source trends [are] playing out."

It is my opinion that the Open Source Software (OSS) movement represents what will become the dominant mechanism for producing software in the not so distant future. It is important to note that the term open source is not exclusive to software licensed under the GNU General Public License. To be considered "open source," software must conform to the principles outlined in the Open Source Definition (OSD):
  1. Free Redistribution
  2. Source Code
  3. Derived Works
  4. Integrity of the Author's Source Code
  5. No Discrimination Against Persons or Groups
  6. No Discrimination Against Fields of Endeavor
  7. Distribution of License
  8. License Must Not Be Specific to a Product
  9. Licenses Must Not Restrict Other Software
  10. Licenses Must Be Technology Neutral
At the time this article was written, the Open Source Initiative has a list of sixty-five approved open source licenses of which versions of the GPL/LGPL constitute four.

Software in and of itself is a commodity. In my opinion, a proper use for software is one that supports or contributes to the successful execution of an organization's primary line of business. A company's products, processes, and business practices are the key success in the marketplace. Any successful commercial venture whose key market differentiator is the software they use will ultimately cease to be competitive. This will happen because success attracts competition and sooner or later one of those competitors will either obtain the same (or functionally similar) software thereby negating the previous market leader's competitive advantage.

Contrary to what many perceive, the very nature of open source software fosters innovation. In software engineering, as is the case with many other disciplines, there are often times where many paths lead to the same destination. Given the notion that brilliance in software engineering knows no political, cultural or geographic boundaries and the precept "that many hands make light work" (John Heywood), it is more probable than not that like-minded individuals who have the opportunity to view, change and redistribute an application's source code will be able to make and share improvements.

The dominance of open source software does not have to represent an end to one's ability to build a successful career writing software. What this does represent is a fundamental shift in the perceived value of software away from the end product (i.e., the code) and toward the individual's understanding of the code. I think this will elevate the whole of software engineering because it will require software engineers to stay competitive in the market by constantly refining their skills.

No longer will simply writing code be sufficient. One will have to understand what they are writing as well as how the code they are writing actually performs it's work. For example, Simply knowing that System.out.println("Hello world.") writes "Hello world." to the computer's console will not be sufficient. The software engineer of tomorrow will have to understand that this single instruction directs the Java Virtual Machine (JVM) to use an output stream to pass data to the console.

Ironically, it will be traditional economics that will bring about a fundamental shift in the role that commercial software plays in the market. There will come a time where OSS alternatives to most pure-play commercial software solutions exist and those alternatives will match and in many cases exceed the feature points offered by their commercial counterpart. It will not make fiscal sense to pay exorbitant license fee solely for the right to acquire commercial software.

Thursday, September 4, 2008

Genesis of a Technologist

I vividly recall my love of technology and software development starting as a nine year old in a fourth grade Enrichment class in Fayetteville, Georgia. On a table against the outer wall of the classroom sat a black and gray Radio Shack computer.

Everyone in the class was afforded some time on the computer to complete educational assignments. I believe, for the most part, our computer work consisted largely of mathematics exercises and quizzes. There were a few spelling and vocabulary activities as well. When we completed our work, or as a reward for particularly good behavior, we were given the opportunity to play some games. The one I remember playing the most was a turn-based game where I drove a dog sled while exploring the frozen arctic. The goal was to reach to the North Pole while traveling to specific destinations along the way. How much could you explore?

On every "turn", I had to determine the direction in which I wanted to travel and how far I wanted to go. When my dogs were hungry, I had to feed them. When they were tired, I had to let them rest. If a dog became sick or wounded, I had to decide how to care for it. The game would be over if I ran out of "turns" before arriving at the assigned destination. I could bring about the end of the game if the decisions I made caused me to get sick or mortally wounded. Alternately, if I did not take proper care of my dogs and lost too many of them, then I would be lost in the arctic forever.

There were no graphics. Players were forced to use their imagination to picture the sled racing across the snow. At each "turn" the game presented a brief summary of your current state and the environmental conditions. Decisions were made and actions taken by navigating through various menus with a myriad of keystrokes. One could inquire as to the health and condition of the pack, take inventory on current supplies, or determine the current location. The most fascinating aspect of the game was that no two sessions were the same.

I remember being in awe at the amount of control I had over the outcome of the game. All the decisions I had to make in order to ensure that my dogs and I safely arrived at our destination. I wondered how the computer made it all work? How did it keep track of everything? How did it determine which of the many hardships I would have to overcome as my team and I trudged through the snow? How was it possible that no two games I played were the same?

I was smitten. From that moment on, I knew what I wanted to do as a career.