Mass Confusion: The hysteria over Flash, Silverlight, HTML 5, Java FX, and Objective C

•February 1, 2010 • 14 Comments

I’ve been working on a whitepaper titled “Choosing The Appropriate Web User Interface Technology” for more than a year now, with input from Sun, Adobe, Microsoft and everyone here at EffectiveUI. I’ve rewritten the damn thing four times now and have decided to abandon the effort. The blunt truth is that there is no credible way to articulate, in a simple whitepaper, the complexity of making a platform decision. I could write a book on the subject, but the problem is the book would be out-of-date by the time I wrote the outline.

If today EffectiveUI’s clients  were to ask, “Should we look at Flash, Silverlight, HTML5, Objective C, Java FX or some other platform?” my answer would be, “Now, more than ever, it depends.”

What’s worse, many bloggers are adding to the confusion by forecasting the death of some platforms or drawing the wrong comparisons from one to another. So to help clear up some of the confusion (or, perhaps add to it a bit), I thought it would be helpful to review some of the things our clients are thinking about.

Enterprise-Grade Considerations

There are a matrix of considerations that go into deciding what platform is right for your particular organization. These considerations should be weighed uniquely every time you decide to take on a new software project. They include:

Existing Technology Skills

Choosing the right user interface (UI) platform should start with a simple question: What can my development team execute and maintain?

Although answering this question is critical to the success of a project, you must also consider what platform is best suited to meet the business and end-user requirements. Sometimes it actually makes sense to choose a platform your team is not familiar with because its business and end-users’ needs have outgrown your team’s current skill set.

Longevity

How long do you believe your platform of choice will be around? In essence, this is a bet you are placing on the platform. This is also one of the most volatile considerations because of new announcements happening every day that change the game and disrupt the playing field.

Integration

Legacy systems, data structures, client machines and business processes will all inform the choice of a UI technology. Some platforms integrate better with specific legacy systems than others.

Scalability

In any software system, scalability must always be a consideration. However, when creating a UI, a scalability discussion can become complicated. This is primarily due to the inherent distributed nature of UIs. In browser-based software, much of the computing and processing can be done either on the client machine or on a server.

An example of this distinction can be seen in the creation of a simple calculator. Developers can write a Web page that takes in user input, sends data back to the server to do the calculations then sends the results back to the client machine. Alternatively, developers can simply create code to run on the client machine, removing the requirement for the extra processing on the server.

If this simple calculator example is applied to more complex tasks, such as sorting a set of data alphabetically, drawing a line chart or validating data entry, one can begin to understand that offloading processes to the client machine will inherently make the system more scalable. Careful architectural planning is extremely important when making decisions between client and server processing.

Maintainability

Software typically needs regular maintenance. Changes in legacy systems, increasing user demands, additional business requirements, bug fixes and improvements in scalability are all reasons for maintenance. The more difficult it is to maintain a software project, the longer it takes to make changes, and the more apt those changes are to break something else in the system.

Security

Security also can pose a challenge. As with scalability, you must decide early on in a project what data clients will see and what data the server will maintain.. Typically, if architected correctly, all UI platforms are equally secure. As long as the application programming interface (API) infrastructure is not exposed to provide unauthenticated data, the site should be reasonably secure.

THERE IS NO COMPLETELY SECURE UI PLATFORM. This is because each may require integration with a back-end service. The UI is only as secure as the API that supports it.

UI security can be broken down into two primary buckets. The first is described above, in what we call “system security.” The second is client security, or the ability for the UI to hack into a client’s machine and run malicious code.

Performance

How well does the platform perform under sever-data crunching, multitasking or other CPU intensive operations?

Platform Capabilities

The UI platform needs to be robust enough to handle more sophisticated processes as end-users engage in more complex tasks. In our simple calculator example earlier, any platform would be perfectly fine. Some online systems, however, have higher demands for social interaction, real-time data, video, collaboration, charting, etc. This level of sophistication requires a UI platform that can handle more integrated online interactions.

Strength of the Development Community

How easy will it be to find developers for your project?

Platform Maturity

You must mitigate the risk of running into platform bugs. There is no way to eliminate the risk of software development issues, but addressing the maturity of the platform will help reduce some of these risks.

Ubiquity/Compatibility

Simply put, will the end user have to install something to get the system to work? Every platform, project and line of code has some level of balance that will need to be achieved between system sophistication and system compatibility.

Tooling

Are the tools used to develop and design your UI sophisticated enough to alleviate frustration among your teams?

User Experience

We define user experience as a means of driving better user adoption. User experience can be somewhat subjective, but most will agree that software that is pleasurable to use will have a much higher user adoption. Certain UI platforms give design and development teams more flexibility to create better software.

Religious Conversion

There is a major shift happening in software development — the shift toward user centricity. Most IT projects today are started because of a user adoption pain-point. Building software that focuses on user adoption first and enterprise maintainability second requires nothing short of a religious awakening for most CTOs (and many CIOs and CFOs, too). The platform that is right for your organization may be the one you can actually get adopted companywide. You must consider the religious and political nature of the developers and dev. managers before trumpeting adoption of any technology. By the way — this is where startups have a major advantage over larger enterprises; they get to adopt newer techniques and platforms without religion or legacy issues.

Platform Philosophies

Philosophically, each provider views his or her platforms as uniquely positioned to do things a bit better. But what does “better” mean for you? After considering 20 different ways to slice the data, I decided to look at each from what I believe is its long-term vision.

Adobe Flash

Flash’s philosophy:

Write once, deploy anywhere.

Flash’s advantage:

Its ubiquity, active developer community and the maturity of the flash player itself

It also has the best designer tools and a great designer/developer workflow model.

Flash’s challenge:

One word: Apple. You can view Flash content on almost every device on the planet produced in the last five years with two glaring exceptions: The iPhone/iPod Touch, and now, the iPad. This alone has caused every one of our Flash developers to pick up either an HTML5 book or an Objective C book. Additionally, Apple’s and Adobe’s relationship is strained at best. Neither company is showing a lot of maturity when discussing the other. Watching them fight is a lot like watching two parents squabble in front of their children during a divorce. I wish, for the sake of developers and consumers, they could find a way to get along.

Who will choose the Adobe platform?:

Companies that want the best, cross-platform user experience for browser and desktop applications

Those same companies will see development on the iPhone and iPad as either not relevant or so relevant that they believe they need to develop custom experiences for those devices.

Microsoft Silverlight

Silverlight’s philosophy:

Write everything from the database to the client using the same skills and developers.

Silverlight’s advantage:

The story plays. If I am the CTO of an organization that has invested heavily in Microsoft technology, Silverlight needs to be looked at seriously.

Silverlight’s challenge:

Ubiquity. I know that Silverlight is seeing some great traction, but it still pales in comparison to the Flash player. Additionally, to believe Silverlight would ever appear on the iPhone or iPad is like believing Daisy, our COO, will give me the company credit card and tell me “go have fun in the Apple store” … never gonna happen.

Who will choose the Microsoft platform?:

Silverlight does make a ton of sense for companies that control the whole technology stack. Many organizations have the luxury to enforce a Silverlight download to their sales team so they can view the new sales  portal they built in Silverlight (for example).

Sun’s Java FX:

See everything under Microsoft Silverlight and replace “Silverlight” with “Java FX” and “Microsoft” with “Sun.”

Microsoft and Sun are basically competing against Adobe for the client side of computing. I believe they are betting enterprises will want to stick with their Java or .Net developers and deploy on their proprietary runtime. In other words, they are betting that Flash will not be taken seriously by large enterprise IT departments that already have huge Microsoft or Sun investments.

Apple, Objective C and HTML5

All right — I know Apple does not own HTML5, but it is placing huge bets there. Apple’s development model is very clear: Control as much as it can on its own, and rely on a fully open standard for “the rest for the developers out there.” You may also ask “Does Apple even belong in this list?” – Well, they do because of the disruptive impact they are having in our industry right now. You can not have a conversation anymore about software and the web without also talking about the iPhone.

Apple’s philosophy:

The user always comes first.

Apple’s advantage:

A huge headstart on mobile and similar bets on mass consumer computing with the iPad. It Apple values user experience over developer experience which is clearly resonating with the late adopters of technology.

Apple’s challenge:

Its challenge is maintaining its leadership position in such a crowded and coveted marketplace. It also is going to be challenged by when its customers realize Club Penguin, NeoPets, Mint, Hulu, Disney or Farmville do not work on the self-proclaimed “Best Way to Experience the Web.”

Who will choose Apple’s platform?:

Simple — those companies that want to reach Apple’s customers.

A little note about HTML 5

HTML 5 is still in its infancy. It is certainly not a Flash or Silverlight Killer. However, it will be a viable option in many circumstances, but will not answer the call for more sophisticated, complex and richer web experiences.

What about Google and Android?

Who? Sorry, but we are rarely asked to participate in building software for the Android. Of course our eyes are on it, and we are building a few interesting things on the platform, but Google has yet to figure out what Apple has down, and that is the unified user experience. From iTunes to the App Store to eBooks to the devices.

Worth a mention, Unity

Unity3D is an interesting provider in the this mix. You probably have not even heard of them, but they provide an alternative to Adobe’s philosophy of “write once, deploy anywhere”. Unity’s philosophy is “write once, deploy native”. You can create an application, and compile for all kinds of deployments. Currently included:  iPhone/iPod Touch (and almost certainly the iPad), Mac Desktop, PC Desktop, Nintendo Wii, and a proprietary, Unity3D browser plugin. What makes this platform so compelling is the right device support, the ability to develop in C#, Python, Javascript, and their focus on 3D. 3D is an area where most other platforms really struggle, and an area of opportunity to differentiate. We are very intrigued by Unity, and you should keep an eye on them as well.

Where does this leave us?

I asked Brook, our chief software architect, about where he is steering our development team. He put it simply and concisely: “Dexterity.”  Right now, all of our clients are realizing how unique their situations are compared to other organizations building online software. Where we have seen the most success is when we help articulate the end-user’s needs, the business challenges, and craft a strategy for each of our clients, specific to their organization’s individuality.

Software Planning and Requirements – Effective UI

•January 26, 2010 • 1 Comment

Thought I’d share an excerpt from Chapter 3 of our book “Effective UI: The Art of Building Great User Experience in Software“. By far, this the most definitive explanation of why enterprises need to reconsider how they’ve approached software development in the past. RFPs, Fixed Bidding, Waterfall, all have dangerous implications to the success of any software project. Many companies use the wrong analogies when planning projects; they plan using construction metaphors. This chapter does a great job explaining that in reality, planning a software development project should be more like planning a war.

—————————————————-

Uncertainty and the Unknown

Uncertainty and the unknown are enormous, unavoidable, and fundamental components of every software development project. Being at peace with this reality means you can approach the project in a way that adjusts and flows to account for the unknown. If you fight uncertainty and the unknown—or, even worse, if you suppose they don’t exist—it’s a path to defeat.

The mistaken belief that uncertainty can be entirely stomped out through upfront planning and everything can be known in advance is the root of many of the worst problems and errors in the management of software proj- ects. This arises from the misapprehension that software development is com- parable to and can be managed like other types of large-scale engineering proj- ects—building a bridge across a valley, for example. Bridge building and soft- ware development both have components of science and engineering, and of art and craftsmanship. But the role of uncertainty and the unknown, and the way science, art, engineering, and craftsmanship work together throughout the course of the project are very different. Those differences demand a fun- damentally different approach to management of the project.

The notion may seem discouraging, but it’s much more accurate to compare software development to war than it is to compare it to bridge building. While the battle of software development is fought more with electrons and Mountain Dew than bullets and napalm, the battlefield is a complex, dynamic, unpredict- able system of activity residing in shifting political and operational contexts.

The Humility of Unknowing

I am the wisest man alive, for I know one thing, and that is that I know nothing.

—Socrates

To demonstrate how uncertainty and the unknown are inevitable compo- nents of a software development project, we’ll examine why the bridge- building analogy fails and the war analogy succeeds. But even with the aid of analogies, it’s extremely difficult to explain why uncertainty and the unknown are unavoidable to someone who’s never been in the trenches of a software development project. Much of the understanding comes from see- ing how design, creativity, and inspiration factor into every aspect of build- ing an application. It also comes from having seen how false certainty, and the demand for it, can cause failure and lead to poorly designed products.

It’s difficult to explain or prove this fact except to state it this way for now: you understand your project far less than you think you do.

And so do your stakeholders, by the way. For your project to be successful, you need to cultivate in yourself and in your stakeholders a certain humility and a recognition that, for as much as you know, you know very little, and that the essence of the project is to investigate and solve a complex problem and not simply to implement a known solution. Embracing this humility of unknowing isn’t a resignation to defeat or admission of weakness, but rather is a state of wisdom required to allow you to succeed.

The Weakness of Foresight and Planning

The great uncertainty of all data in war is a peculiar difficulty, because all action must, to a certain extent, be planned in a mere twilight, which in addition not infrequently—like the effect of a fog or moonshine—gives to things exaggerated dimensions and unnatural appearance.

—Carl von Clausewitz, On War

Everything required to design a bridge to a valley is knowable in advance and can be planned to an extremely high level of accuracy before construction begins. All of the important goals, variables, and constraints can be accurately obtained before design begins.

Once those key considerations have been discovered, the design of the proj- ect begins and can be entirely completed before construction starts. With accurate and complete designs in hand, construction is then all about ensur- ing the pieces all come together as designed. Construction is not concerned with any remaining questions about the design and isn’t burdened by the risk that the design will change during the course of construction.

By contrast, a general preparing for battle can estimate the strength and disposition of his forces, the resources and capabilities available to him, the attitudes and aptitudes of his commanders in the field, the lay of the battle- field, the strategic goals of the battle, the state of the enemy’s forces, and the parameters for success. He also has history and personal experience to help him intuit how events will unfold. Based on this knowledge, he can formu- late a plan for the battle.

But this plan, no matter how carefully devised, is inherently incomplete and imprecise. It is wholly premised on estimates of the conditions before the battle and entirely ignorant of the unforeseen conditions that arise during the battle. These unforeseen conditions are based as much on the vagaries of weather, emotion, chance, and uncertainty as they are on even the best-laid plan. This reality is the basis for the famous quote:

No battle plan survives first contact with the enemy.

—Helmuth von Moltke

The same is true of software development. No matter how well you think you understand the domain and no matter how earnestly you’ve thought through the requirements, there is still great uncertainty in the original facts and premises and a vast depth of the unknown still awaiting you. As with battle, the outcome will be determined at least as much by what comes dur- ing the course of the project as by what comes before it.

Not all unknowns are bad, by the way; it’s in solving the unforeseen problems that great design and inspiration can take place. Some unknowns may be rev- elations about your customers and users that fundamentally change how your business interacts with them, or they may be undiscovered opportunities for progress, innovation, efficiency, and improvements to your company’s bottom line.

—————————————————-

If you are interested in reading the whole chapter, you can download it here.

More excerpts are available here

Better yet, don’t be so darn cheap and just go buy the book here

Predictions on the new Apple Tablet

•January 25, 2010 • 2 Comments

I thought I’d have a little fun predicting what Apple will be announcing on Wednesday.

Apple will preview OS 10.7, it will feature:

  • the once code-named “Marble Interface”
  • be more oriented to gesture based interactivity
  • snow-leopard was almost a complete rewrite, no big new features. 10.7 will be focused on “sexy” new features that were left out of snow-leopard

Apple will preview iPhone OS 4.0 It will include:

  • some modified or light version of multi-threading
  • a new home page (look for some unique coolness here)
  • something new for peer-to-peer iPhone communication
  • better 3rd party device support
  • No Flash
  • Google will not be the default search engine
  • a newer way to more easily write web-based applications (HTML 5 on steroids)

Apple will then announce a tablet, they will call it iPad. The iPad will feature:

  • 10.1″ LCD Touch Screen
  • 1/2″ think
  • 4 buttons
  • 2 doc connectors
  • Forward facing, 5megapixel camera
  • WiFi and 3G connectivity,  Verizon and ATT to offer subsidized pricing
  • No Flash support
  • 6 hour battery life for reading, 4 hour battery life for video
  • super fast ARM processor running something closer to the iPhone OS versus Snow Leopard
  • all AppStore applications should work on the device with little to no modification
  • 3D interface, something we’ve never seen before
  • Features focused on entertainment/games, publishing/books, video, communication, and social networking. We may even see some demo apps running in these categories
  • 2 flavors: $700 for 64gig, $900 for 128gig (prices are before carrier discounts)
  • iWork integration
  • Content Partners announced: Harper Collins, Time, New York Times, Random House, and Conde Nast, and every major content provider already on iTunes

I also believe Apple will hint at things to come. For example, new ways that advertisers might be able to subsidize the costs of these devices. Additionally, they will show ways the iphone, 10.7, and the iPad all work together in ways we never thought possible.

Always fun to speculate, lets see if I’m right on any of this :)

How to break a patent in 5 minutes

•January 22, 2010 • 6 Comments

Patents were invented in order to encourage innovation. They are supposed to protect inventors that spend money in research or discoveries made by innovative thinkers. Without them, many would argue, the United States would not have ever seen the industrial or digital revolutions.

However, there are enterprises that using the patent system in a way that is killing innovation. We all hear about enterprises using patents as defensive mechanisms for their own patent infringement issues… Company A sues Company B for infringement – Company B sues Company A back for other patents they own, the lawyers get a big fat payday while consumers are ultimately left holding the bill.

But what is worse are the companies that patent something ridiculous and then simply use the patent as revenue stream to sue other companies for infringement.

A few years back, Macromedia launched a feature in the Flash player that allowed you to print something that was off-screen. A few months later, a company called Post Future patented the ability to print coupons using the web even thought the end user could not see it. In other words, they patented a feature built into Flash (they vigorously and successfully defended the patent many times over).

But today, as a part of our SODA membership, I just became aware of a patent that has my blood boiling.

Patent 6,351,265

PixFusion holds the patent for swapping heads in a photograph digitally. The patent is 23 pages long.

Lets walk through the abstract really quick:

A method of providing normalized images, comprising the steps of:

(a) receiving an electronic representation of an image including a head;

(b) extracting the head from the image;

(c) determining a size of the head;

(d) rescaling the head to a plurality of desired sizes; and

(e) outputting the plurality of rescaled heads as printed images on a medium.

So, I decided to see how long it would take me to actually do this.

First – receiving an electronic image including a head

I simply took a picture of Shannon and Buffy using my iPhone, and then pulled (received) that image using iPhoto…

Second- extracting the head from the image:

There are lots of options for this in photoshop. I chose to duplicate the background onto layers, then erased the background away (notice my awesome photoshop skills)

Third & Fourth – determining the size of the head and rescaling

This was quite difficult. Because Buffy’s head is slightly bigger than Shannon’s, I had to use their noses and mouths to resize their heads to fit their bodies. The patent calls this process “using reference vectors”:

The method according to claim 1, wherein said head has a reference vector and said body has a reference vector, further comprising the step of combining said head and said body to obtain a predetermined multidimensional relationship of the respective reference vectors of said head and said body.

Finally: Outputting the image

This one was the most difficult. I had to… wait for it … print the image. Here’s proof that I did it:

All in all, it took me 5 minutes to complete the task. Ironically, the patent claims that this process is quite complicated, requiring unique skills and equipment (it was approved in 2002 – so scanners, digital cameras and photoshop all existed at the time)

I realize that this may seem funny to those of you reading this, but the fine folks at PixFusion are actually aggressively pursuing their rights under this patent. For agencies, it is a nuisance at best, a huge resource hog at worst. Patent squatters are taking advantage of the lack of resources and education in the patent office. There is NO value in the world for holding this patent.

I hope to hear back from them, and I promise to include any communication with them in my Blog


some of my favorite excerpts from the patent:

In the following description, the term “head” is intended to include not only the head of a human being with its hair (however long) face, ears, etc., but also any and all appurtenant accessories such as a hat, glasses, hair adornments, jewelry (earrings, etc.) and the like. The term “body” as it is used herein, is intended to include the body of a human being, animal, fish, etc., (either real or fictional) including not only the torso, arms, legs, tail, fins, etc., but also any and ail appurtenant clothing, shoes, jewelry, and the like. The “body” may also be another environment in which an image of a head is appropriate, such as a window, television screen or portal. The image of the head and/or body may be obtained from a “real” head or body, respectively, either photographically or by electronic image scanning, or from an artistic or computer generated rendering thereof

In order to facilitate alignment of the head and body, and relax the necessary tolerances for an aesthetically pleasing result, a collar may be provided on the body immediately adjacent to a location of said superimposed head. Alternately, a neck portion may be provided on the head, with a reference point on the neck. A soft pink border may be provided around the head.

According to a still further object of the invention, the images may be associated with audio information, such as spoken words. These words may include, for example, the name of the person whose head is included in the image.

In another embodiment, the body part images may be interchangeable for placement with a range of different background images, in the manner of the known “Mad Libs”, allowing humorous combinations of foreground and background images. In this case, the various anatomical body part images may be of the same size yet differ in other additions or characteristics, as discussed above.

Apple’s iPhone dominance is going to be hard to topple

•December 7, 2009 • 2 Comments

Interesting article today on Flurry (and also summarized on MacRumors.com)

We’ve been internally debating about Apple’s continued dominance in the smart-phone market. I’ve taken the position that Apple will be the leader for at least 4 years, it appears I may have been understating it bit.

Looking at the chart above, it becomes clear that Apple is leading the iPhone/Android usage metrics by 3 fold. But what what the report also goes on to suppose is that iPod touch users (assumed to be mostly kids that do not have a cell phone yet)  will eventually migrate to iPhone users. To me this seems like pretty sound logic.

The article also goes on to theorize that since most iPod touch users are also very heavy social networkers, they will help influence the entire market…

I’d love to hear your thoughts on where you think the mobile market is going… who do you think is going to be the dominant force in 2015 ?