Thursday 17 February 2011

Cloud Computing is dead. Get ready for the "App Internet"

Everybody is talking about Cloud Computing model, how it's making the old Microsoft model redundant. Why do you need a powerful PC, when all of your computing is done in the Cloud?

The bad?
Google is so keen for everyone to embrace a pure vision of Cloud Computing that their new "Chrome OS" doesn't even allow access to the file system. I'm sure that "Chrome OS" will be of value to businesses that need to protect their intellectual property, as a Chrome OS laptop lost on the train won't present any risks. What a boring operating system, though. My hair turns grey just thinking about it. In fact, a vision of the future where our personal and corporate data is stored with a few large companies, in the Cloud, is a worrying and unhealthy one for privacy and even for national security, witness the US subpoena of Twitter data of an Icelandic MP. It's easier for a government to coerce a single company to its will then millions of individuals. And how can you protect yourself from falling foul of future laws if all your data is recorded centrally? But perhaps there's good news on the horizon for those of us who are worried by this nightmarish vision of the future:

The good...
You see, Cloud Computing is now also an old model according to George Colony, CEO of Forrester, as he explained in an interview with the FT. He says the they believe that Forrester believes that Cloud Computing is to be superseded by yet a third emerging model they they call "App Internet", with powerful devices such as the IPad or Android, where apps make use of powerful local processing, but are also connected to the Cloud. Witness the early success of Apple's IPad ("Jesus Pad"), IPhone ("Jesus Phone") and now Android mobile operating systems. App Internet is the latest version of "Smart Client" or "Rich Client", but on steriods.

Why would "App Internet" have an edge over a plain old boring browser? Well, for a start you can offer  everything that's possible in a browser, but much more besides:


  1. Apps can make use of local hardware and data that a browser has no access to (e.g. touch user interface, camera, microphone, geolocation, contact book, local photo library, local video and file library, etc).
  2. Apps can be billed for no inconvenience to the end user (for one off payments), invaluable for lower value items.
  3. Single sign-on into all of your apps (i.e. when you turn on your phone).
  4. You can offer a UI that’s optimised for the device at hand (web pages too often scale poorly to mobile devices). Nobody in their right mind would use the Facebook web page from the IPhone when they can use a Facebook app.
  5. Far quicker loading times than a web page
  6. Don't need a live connection at all times
  7. Richer interactivity: Developers can far more when given a sophisticated and productive programming model.
All in all, you get a rich, beautiful, slick and all-encompassing encompassing user experience. 



And the ugly...
App Internet have newspapers and media companies licking their lips in anticipation, as they finally have a means of conveniently charging for content, which might dampen some of the power of the internet to make all information free.


On key disadvantage to the publisher is that an app will need development at least two or three times (iOS, Android and whatever Microsoft will offer in future).


But there are uglier problems too, that stem from the accumulation of too much power in the hands of the ecosystem builder. Apple's new media policy seems worrying, as they want to take a 30% bite (yes, you read it right, 30%!!) out of the newspaper vendor's subscription revenue.


What will happen to the Amazon Kindle reader app on IPad and IPhone? Apple's new policy states: "All we require is that, if a publisher is making a subscription offer outside of the app, the same (or better) offer be made inside the app".

Let's analyse that statement again: If Amazon is "making a subscription offer outside the app" (e.g. on their external website) then they must offer Apple's in-app option, as "the same (or better) offer must be made inside the app". I imagine that users will invariably choose the in-app option for its convenience, as “In addition, publishers may no longer provide links in their apps (to a web site, for example) which allow the customer to purchase content or subscriptions outside of the app.”

If understand it correctly, Apple's new policy seems such a frightening and extortionate abuse of market power, that feel I must be missing something obvious. I hope that my interpretation of these new rules is wrong, if not, the EU competition commission should have something to say about this.

Has Microsoft been kicked out of the game for good?
There are currently two dominant ecosystems in the App Internet space, but Microsoft have their sights on the segment too with their new Windows Phone 7 operating system, and with a version of Windows that will run on low power ARM processors. Their previous attempts with the old Windows Mobile and Window Slate haven't sold well, but Microsoft have an ace up their sleeve that the the media hasn't been paying attention to; I'm referring to their extremely high quality compact development framework Silverlight, which won't only be the primary development platform for Windows Mobile 7 (which was recently given a significant boost with Nokia's decision to move fully to the platform), but is also found in web browsers (competing with Adobe Flash), will be in the Xbox and Microsoft IPTV, and will also be the development platform used for apps purchased from the new Windows 8 App Store. Silverlight's massive potential audience and its sheer quality as a development platform, together with Window's Phone 7's very positive initial reception, mean that it's too soon to count Microsoft out of the race. Microsoft don't get everything right, but they have in the past gained huge market share from zero in a similar segment, game consoles, starting from a weak position with Xbox, and competing against companies comparable with Apple in their scale and vertical integration.

These are interesting times...

Saturday 5 February 2011

Sentimental Auction

How can a family fairly distribute items of sentimental value left behind by a loved one?

One technique, frequently recommended by Executors, is to employ a "sentimental auction". Money doesn't take part here, as fairness is ensured by giving each person the same number of points to bid with.

Existing sentimental auctions aren't perfect!
A typical sentimental auction might have everyone attending the same physical location or dialling in to a conference call, bidding on items one by one. Although participants typically do their best to devise and then employ a strategy they won't later regret, invariably bidders will end up spending their points too quickly or too slowly, simply due to the maddengly difficult task of visualising the numbers of items one can realistically win, and how quickly one must spend one's points to win those items.

Why not then go for the obvious solution; simply to allow bidders to retract their bids! Unfortunately that allows mischeivous or "shill bidding", where an unscrupulous bidder retracts a bid to a price level just below the winning price, thus forcing the winner to spend the maximum number of points to win that item. The unscrupulous bidder thus succeeds in weakening his competitors at no cost to himself.

A new Sentimental Auction Website
Subject to demand, I'm planning to develop a sentimental auction website which will address the problems described above. Under the new website:
  • Shill bidding is impossible
  • Strategy can be changed at any time during the auction.
  • Items are priced accurately.
  • Similar to Ebay, listings will include photographs, descriptions, etc.
  • Auction duration is expected to similar to a traditional auction.
  • Costs will comparable to Ebay, possibly much less.
However, I'm still undecided as to whether there is sufficient demand to launch this new product.

If this would be of any interest to you, please post a comment below, or send me (Ralph) a mail here: ralphpurtcher@hotmail.com. Any feedback, positive or negative, is really appreciated :-)!

Thursday 3 February 2011

Automating Excel 2007 on Windows Server 2008 64-bit

Microsoft doesn't support or recommend automation of Excel in an unattended service. Better to use the new OpenXML SDK if you can - seriously! But the spreadsheet may make heavy use of macros, or you might need to save the output into a non OpenXML format, such as PDF.

Anyway, I needed to automate Excel 2007 via COM Interop, from a task run from an unattended Windows Scheduler service account, on a locked down Windows Server 2008 machine (64-bit edition). Note the steps would be similar for an ASP.NET account or Word 2007 or PowerPoint.

It took me a while to research and solve the various issues that arose. With the hope of saving you some time, here are the steps in one place:
  • You'll need to initialise Excel's GUI under the service account: Log in under your service account. Load Excel 2007 to process any setup configuration dialogs. Close and reopen Excel to check that these dialogs no longer appear.
  • You'll need to create a "Desktop" Folder under the service account (link): Microsoft removed the Desktop folder from the system account under new versions of Windows Server. In order to prevent the resulting error “Microsoft Office Excel cannot access the file”, create the folder “C:\Windows\SysWOW64\config\systemprofile\Desktop”. In addition, grant full your service account full permissions to this folder.  (On 32 bit versions of Windows Server, the required folder is “C:\Windows\System32\config\systemprofile\Desktop”)
  • You'll need to enable COM support for Excel (link): Without these permissions, the following error is thrown when instantiating Excel.Application: “Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005.
    • Run “dcomcnfg -32” (so as to view 32 bit components, as Excel 2007 is 32-bit).
    • Right click Properties on the node “Component Services\Computers\My Computer\DCOM Config\Microsoft Excel Application”.
    • Under the “Security” tab, under "Launch and Activation Permissions" select the "Customize" option and click the "Edit" button and grant your service account "Local Launch" and "Local Activation", but leave "Remote Launch" and "Remote Activation" blank.
  • Alert Dialogs must be disabled while processing: It's very important that interactive error messages are not displayed during processes. Immediately after instantiating Excel in code, let excelApp.DisplayAlerts = false.
  • Ensure the Excel Process is properly closed: If you are automating Excel from .NET, the Excel process (excel.exe) may not close because the Garbage collector won't release it in a timely way. I've found the following code to be reliable (link):
         excelApp.DisplayAlerts = false;
         excelApp.Quit();
         System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
         excelApp = null;
         excelApp = null;
         GC.Collect();
         GC.WaitForPendingFinalizers();
         GC.Collect();
         GC.WaitForPendingFinalizers();

    I'm sure this list isn't comprehensive in all cases, so if anyone has corrections / additions for the list above, I'll update it! Good luck.