Perils of Async: Introduction

As application communications over lossy networks and “in the cloud” have grown, the necessity of performing these communications asynchronously has risen with them. Why this change has been occurring may be an interesting topic for another post, but a few simple cases demonstrate the point:

  • Web browsers make multiple, asynchronous HTTP calls per page requested. Procuring a page’s images, for example, have been asynchronous (“out-of-band”) operations for at least decade.
  • Many dynamic websites depend on various technologies’ (AJAX, JavaScript, jQuery, etc.) asynchronous capabilities – that’s what makes the site “dynamic.”
  • Similarly, most desktop and mobile applications use technologies to communicate asynchronously.

Previously, developing asynchronous software – whether inter-process, multi-threaded, etc. – required very talented software developers. (As you’ll see soon enough, it still does.) Many companies and other groups have put forward tools, languages, methodologies, etc. to make asynchronous development more approachable (i.e., easier for less sophisticated developers).

Everyone involved in software development – developers, managers, business leaders, quality assurance, and so on – need to be aware, however, that these “tools” have a down-side. Keep this maxim in mind: Things that make asynchronous software development easier also make bad results Ibugs!) easier. For example, all software involving some form of asynchronicity

  • Not only has bugs (as all software does), but the bugs are much, much more difficult to track down and fix
  • Exhibits higher degrees of hardware-based flux. Consider, for example, a new mobile app that is stable and runs well on a device using a Qualcomm Snapdragon S1 or S2 (single-core) processor. Will the same app run just as well on a similar device using (dual-core) Snapdragon S3 or above? Don’t count on it – certainly don’t bet your business on it!

This series of posts, Perils of Async, aims to discuss many of the powerful .NET capabilities for asynchronous and parallel programming, and to help you avoid their perilous side!

Which Mobile Platform Benefits the Most by Oracle’s Java Lawsuit?

In a recent post regarding Oracle’s Java lawsuit against Google I mentioned the Chinese proverb, “May you live in interesting times.”  In the tech industry, this lawsuit certainly makes things “interesting!”

One question swirling around this suit is, “What effect will the outcome of this suit have on mobile phone OSs?”  Not to sound too conspiratorial, it’s probably valuable to take a “follow the money” approach to this question.  Here’s a quick analysis of the platforms and how they may benefit (or not) from this situation.

  1. Google — Let’s dispense with this quickly.  Even on the high end of conspiracy theories, Google really doesn’t have much to gain in this situation.  The very existence of the legal battle will have a dramatic impact on the software industry’s investments in Android.
  2. Apple — The iPhone has been a huge success for Apple, even with its self-imposed support problems.  But Steve & Co. know that Android is eating their lunch (Android’s Mobile Web Consumption Share In The US Is Surging, iOS Share Dropping)  Oracle and Apple aren’t exactly direct competitors — Oracle is incapable of Apple’s user experience and marketing capabilities, and Apple can’t be bothered with such back-office primitives as databases, ERP, etc.  Seems like a great match, right?  If Apple and Oracle are in league on this “lawsuit to beat up Google,” how does Oracle benefit?  There’s the (potential) Java benefit directly, but that doesn’t require or need Apple.  I doubt this is the behind-the-scenes reality, but be on the look-out for some kind of co-marketing campaign.
  3. Microsoft — It’s pretty clear that Microsoft needs all the help it can get in the mobile space.  The Windows Mobile platform has been a laggard for years (which is an eternity in the mobile market).  Mobile phone and computing trends indicate that, at best, Windows Mobile whispers “Don’t forget about me. I’m still here!”  Apple and Android together are the dominant, uncontested players in the mobile and tablet markets.  Is it possible the Microsoft is in league with Oracle in order to put a big dent in the Apple-Android duopoly?  Microsoft’s Windows Phone 7 platform was released to production this week and, IMHO, is a Hail-Mary attempt at getting back in the mobile game.  In order to become a major contender in the mobility race, Microsoft has to succeed on many fronts, including getting mobile app developers to choose .NET over Java.  Raising FUD over Java’s future, licensing, etc. would certainly benefit .NET.  But…Oracle and Microsoft would be very strange bedfellows – very!
  4. IBM — This is the obligatory inclusion of IBM.  ‘Nuff said.
  5. RIM / Blackberry – Really?  I’m not going to spend much time on this possibility.  It seems to me that RIM’s market share is rapidly dwindling and they really don’t have anything to offer Oracle.
  6. Symbian — Who?  Yes, Symbian is still used by some mobile phones.  They have even less to offer Oracle than RIM does.
  7. Oracle — “What?” you ask.  “How could Oracle benefit in the mobile space?  They don’t even play in the mobile space.”  Right, but that may be the point.  Just as Microsoft is trying to re-enter the mobile space, Oracle needs to get in, too.  Maybe RIM or Symbian are working with Oracle and plan to take Oracle into the mobile space.  “Pretty thin” as Sgt. Murtaugh would say.
  8. VMWare — Now that we’re in “pretty thin” territory, I’ll bring VMWare into the picture.  We already know that it is working on virtualization solutions for mobile devices, and it put its money on Java by acquiring  Swing.  VMWare made a good strategic move in partnering with Salesforce.com on VForce.  Could it be promising Oracle inclusion in its mobile plans in exchange for freedom to use Java + Swing in all arenas?

So, where does that leave us?  It seems to me that Apple and Microsoft stand the most to gain in the mobile space by Oracle’s suit against Google.  Between the two, Microsoft seems to be a less likely bedfellow in this scenario.  But then again, do you remember when Microsoft kept Apple alive in the ’90s?

Hmmm.  Interesting times!

Is Apple Boxing Itself In Again?

Dana Blankenhorn has an interesting article on ZDNet today, Open source benefits from 7th circle of Apple hell.  He recounts a trip with a friend to an Apple Store in Atlanta and says, “Three hours later I realized that Apple is back in the same box Steve Jobs put it in over 25 years ago.”  Intriguing comment!

The friend’s iPhone was on the fritz, after waiting for more than one-hour in two separate lines at the Apple Store, Dana’s friend wisely gave up on the Apple Store.  Fortunately, there was an AT&T store nearby and resolved the iPhone problem by … selling Dana’s friend an Android phone!  Dana says, “A half-hour or so later my friend was a happy Android user, asking me if I wanted an iBrick.”

He goes on to say that Apple’s support model, particularly through retail stores, doesn’t scale.  Apple’s “insistence on complete control meant it couldn’t meet demand.”