Mac App Store, Windows Store, and the decline of the open platform

Valve Software’s Gabe Newell caused a stir recently when he said at the Casual Connect event in Seattle that Microsoft’s Window 8 is bad news gfor game vendors:

I think Windows 8 is a catastrophe for everyone in the PC space. I think we’ll lose some of the top-tier PC/OEMs, who will exit the market. I think margins will be destroyed for a bunch of people.

What did he mean exactly? He denigrates touch control, which he says is “short-term”, so I would guess he is not enthusiastic about the touch-centric Metro-style UI in Windows 8. However, he also talks about open platforms:

"Valve wouldn’t exist today without the PC, or Epic, or Zynga, or Google. They all wouldn’t have existed without the openness of the platform … We are looking at the platform and saying, ‘We’ve been a free rider, and we’ve been able to benefit from everything that went into PCs and the Internet, and we have to continue to figure out how there will be open platforms.’

The point: Valve runs its own Windows app store, called Steam, and will lose out if an increasing proportion of game downloads go through Microsoft’s Windows store instead.


Of course Steam will work fine on Windows 8, provided you have the x86 version. The x86 Windows 8 desktop operating system is just as open as Windows 7. The Windows Store also allows entries that link directly to a vendor’s web site, like the one for Winzip:


The immediate threat to Steam then is indirect. If Windows 8 fails in the market, it will not be too bad for Steam since it runs on Windows 7 and on the Mac, the most likely beneficiaries. Steam will suffer if Windows 8 users are drawn towards the Windows Store in preference, though note that the Store does not offer desktop app downloads except via links as for Winzip above. Steam will also suffer if the ARM version of Windows, Windows RT, eats into Windows x86 sales.

You have to follow the lines on the graph though, and this is where it does not look so good for Steam. Look first at Apple’s platform. The mobile variant, iOS, is entirely locked down so most users can only acquire apps from the Apple app store, unless they are developers or enterprise customers. Apps are also sandboxed so that you cannot break your iOS device by making bad install decisions. Partly as a side-effect of the sandboxing, apps are trivially easy to install and remove provided you have an internet connection. Far from limiting sales, this has encouraged users to experiment with apps they might not otherwise have found or wanted to risk installing, and users love the iOS platform overall.

On the Mac, Apple has introduced another app store. Unlike the iOS store, use of this is optional, though some apps cannot be obtained elsewhere. There is some not-so-subtle pressure to use the store though, partly because of how it is surfaced in the user interface, and partly because of the advantages for the user. Apps are easier to install and update themselves, in the same way as on iOS. They are vetted by Apple so should be safe to use. They have to conform to Apple’s application guidelines which form a kind of sandbox. Apps may not request root privileges, may not download additional code, may not use non-public APIs, cannot install code in shared locations, and so on. They also have to conform to certain ethical guidelines.

Whether this is altogether good for users is up for debate. It is a trade-off between freedom on the one hand, and convenience and safety on the other. On the whole though, users like it, which is great news for Apple which also takes a slice of any payments that go through the store.

Not all software vendors are happy. Sherman Dickman at Postbox is abandoning the Mac App Store. He gives these reasons:

    • No free trials
    • No discounted upgrades
    • No free upgrades if the prior version was purchased after a specific date
    • No way to provide license keys that could be used on Windows (many of our customers use both platforms)
    • No volume discounts or site licensing
    • No access to customer information, which prevented us from validating orders, offering discounts, running promotions, newsletter signups, etc.
    • Unclear refund policies
    • Most importantly, we had to create another version of Postbox for the Mac App Store that removed features such as iCal support, iPhoto integration, and Add-Ons in order to comply with Apple’s Application Guidelines

Postbox 3 is sold only direct from the vendor’s site. Dickman says he will reconsider if Apple loosens the restrictions on the App Store; but the real question will be whether his company can afford not to be in the official store, especially if future versions of Mac OS X further tighten the screws.

Returning to Windows 8, Microsoft is undoubtedly suffering from Apple envy. There are multiple reasons:

  • Users like the app store model, its convenience and safety
  • Apple has found a solution to a problem that plagues Windows: damage from third-party software installs
  • Microsoft would like a cut of the revenue from software transactions

Windows 8 therefore has an iOS-like store and policy for its Metro side. The net result is similar to that for iOS and Mac OS X. On the ARM Metro-only systems (ignoring for a moment the locked-down desktop which runs Office and a few utilities), apps can only be installed through the store. On the open x86 systems, use of the store is optional, except that Metro-style apps must be installed through the store unless you are a developer or an enterprise.

Microsoft has a harder job than Apple to make its store successful, because of the way it is combining the Metro-style platform and the old desktop into a single operating system. If users turn their backs on Metro, the store will fail too. Still, Microsoft is aiming for a platform that is equally as locked down as Apple’s.

Instinctively I dislike these lockdowns, yet I also see their merit. Recently I found myself helping a user clean up their Windows 8 Release Preview system, which already had unwanted software on it, put there by installers that foist unrelated software on users who forget to uncheck a box, including toolbars and security software. Vendors have abused the freedom that Windows gives them.

The evidence though is that users will happily give up some freedom in return for a secure and convenient operating system. The business model favours it too. The Windows 8 upgrade is cheaper than for earlier versions, maybe because Microsoft will earn more later if users buy lots of apps. It pays Google to sell the Nexus tablet with low margins, if it drives users to the Play Store.

The convergence of all these factors means one thing only: that open platforms are in decline. They are not gone yet, but that is the firm trend. The implications are profound and I doubt they will be fully appreciated until the line on the graph has progressed a little further. The internet is a huge mitigating factor of course, and perhaps the combination of an open internet with a locked-down client is one that we will be able to live with.

BBC web site has a Metro look

The BBC redesigned its web site last year borrowing elements of Microsoft’s Metro design language, as seen in Windows 8, Windows Phone, and Office 2013. Note the tiles, the typography, the horizontal scrolling, the way elements stand out against a pale background.


The BBC site is the 5th most popular in the UK and 47th in the world according to Alexa.

This strikes me as a significant design win for Microsoft. One of the goals of redesigns is to make your stuff look fresh and modern, while other stuff looks dated, and it helps drive an upgrade cycle. 

Update: amended to clarify that the design update was last year. Details here and here. Also interesting to note considerable hostility from users. Another point of similarity with Windows 8!

Desktop Windows 8 survival guide

Microsoft’s new Windows is its best yet, under the covers. It does have peculiarities though, thanks to its combination of a new touch-friendly user interface which I will call Metro, and the old Desktop user interface. The first encounter with Windows 8 is usually pretty painful, as you struggle to do things which are second nature for seasoned Windows 7 or Windows XP users. It is not really so bad though: most things still work once you have figured out how to find them. Here is a brief survival guide for keyboard and mouse users – no mention of touch here. I am also mostly avoiding third-party utilities. This is for out-of-the-box Windows 8 as far as possible.

If you have a Windows 8 machine with a touch screen, see here for tips specific to touch.

Options are shown a, b , c etc where they are alternatives. Steps are shown as 1, 2, 3 where needed.

Where is the Start menu?

The Start menu is a now a full-screen Metro application. You can find it in several ways. Press the Windows key, or Ctrl-Esc together, or put the mouse in the bottom left corner where the Start button used to be and click.


I have the Start menu or a Metro app running. How do I get back to the desktop?

Click the Desktop tile in the Start menu, or press Windows and D together, or put the mouse to the top left corner of the screen and click the desktop image that appears.


I hate the “live tiles” in the start menu, how can you turn off all the flickering activity?

Yes, I’m not sure about them either. In the Start screen, right-click a live tile so a tick appears in the top right corner. Then click Turn live tile off at the foot of the screen.


There is also an option to remove personal data from live tiles. To get this, display the Start screen, move the mouse to the bottom right corner of the screen, then click Settings – Tiles. Click Clear.


How do I organize the Start screen into groups?

The new Start screen is not hierarchical, but does support named groups. Two things you need to know:

1. To create a group, click and drag a tile right until it passes a grey vertical bar. Release to start the new group.


Add further tiles to the group by dragging them under one of the existing tiles in the group.

2. To name and/or move the group, click the tiny horizontal bar at bottom right of the the Start screen.


This will zoom out. Now, right-click the group you want to name. This selects the group. Then you can click Name group to name or rename it, or drag the group elsewhere on the Start screen.


How do I start an application when I can’t even see it in the Start screen?

Can be a problem. Before you give up though, there are a few things to try:

a. The quickest way to find an application is by typing a search. Display the Start screen and type a few letters; all the matching applications are listed.

b. Right-click on the Start screen and click All apps in the bottom right corner to display all the icons in a smaller size. If you can’t find it in the alphabetical list (maybe you forget the name) scroll right to see the grouped list which follows.

c. Still can’t see it? Try showing Administrative tools. Mouse bottom right or press Windows key and C, settings, Tiles, Show administrative tools.

d. Still stuck? Windows key and R together brings up the Run dialog. Type the name of the executable, or click Browse to find the executable, which is most often somewhere in Program Files or Program Files (x86).

How can I avoid the Start screen? It is jarring to have it occupy the full screen when I am working in the Desktop.

a. Make sure your usual applications are pinned to the taskbar and start them from there. If you use lots of applications, you can make it double-height to fit more on, or it will scroll.

b. Use Windows key and R together to bring up the Run dialog and start an application there.

c. Right-click in the bottom left corner to show the Administrative menu. Here you can start most of the utilities that can be tricky to find. You can also get this with Windows – X.


d. Put more shortcuts on the Desktop and use Windows – D to bring up the desktop when you need it.

Where is control panel? The real one, that is.

If you have read this far, you should know several ways to find it.

a. Start screen, type control, click Control Panel

b. On the desktop, mouse bottom left corner, right-click, choose Control Panel.

c. On the desktop, mouse button bottom right or press Windows – C for Charms, Settings, Control Panel.

d. Right-click in the bottom left corner for the Administrative menu, or press Windows – X.

How do I switch between applications, since Metro apps do not appear in the taskbar?

Annoying I agree, presuming you use both Metro and Desktop apps. The only thing that really works properly is pressing Alt and Tab together. This brings up a program switcher. Press tab again until you get where you want.


Another thing you can do is to move the mouse top left of the screen and drag down. An odd movement at first but it works; or you can use Windows and Tab together. This shows all the running Metro apps as well as the current Desktop app. It is a bit hopeless though because it does not show all the Desktop apps. Then again, you can use the taskbar as your switcher for Desktop apps so it is just about viable.

I’m in a Metro app running full-screen. Where are the menus and settings?

There are two places to look. To get menus, like the tabs and address bar in Metro Internet Explorer, right-click with the mouse. To get settings, mouse to top or bottom right corner or press Windows key and C, and click Settings. The settings are contextual, so you will get the settings for the current app.

I’m in a Metro app. Where is the search function?

Quick answer: Press Windows key and Q.

Long answer: I was surprised to see reviews of the Wikipedia app bemoaning the lack of a search function. How could an encyclopaedia app not have search?

It does of course. It is just that it is not obvious where to find it.

The reason is that Windows 8 has a system search feature. You summon by displaying the Charms bar (Windows key + C, or mouse to top or bottom left corner) and clicking Search. Search defaults to the current app, but you can search elsewhere by clicking another option.

Better still, learn the following keyboard shortcuts:

Windows key and Q: Search apps

Windows key and F: Search files

Windows key and W: Search settings

I’m in a Metro app running full-screen. How I can see the on-screen clock?

This annoys me as well. However, Windows key and C will show it temporarily.

I’m in a Metro app running full-screen. How do I close it?

The idea is that you don’t normally need to close an app. Rather, you switch away from it, which you can do using techniques already described: Windows key, or alt-tab, or mouse to top left and (if necessary) drag down.

Metro apps may be hibernated when not in use, so they do not grab system resources in the way desktop apps sometimes do.

However, you might want to close an app because it is misbehaving, or just because you have a tidy mind. You can use alt-F4, which works here as it has done is Windows forever.

If you prefer to use the mouse, move the mouse to the top of the screen so it becomes a hand cursor. Hold the left button down, and drag down the screen and off the bottom. This closes the app.

Alternatively, switch to another app, then do the mouse to top left corner and drag down move. Right-click the app icon you want to close, and click Close.


Having two versions of IE is confusing. I keep losing track of which sites are open in which browser.

Agreed. The best solution is to make Desktop IE the default, so that Metro IE rarely opens. Go to Control Panel, type Internet in the search box, and click on Internet Options. Click the Programs tab, and under Choose how you open links, select Always in Internet Explorer on the desktop. Finally, check Open Internet Explorer tiles on the desktop.


How do I play a DVD?

Windows 8 does not include a DVD player. However your PC may come with DVD playing software bundled by the PC manufacturer. If not, download Videolan (VLC) from here. It’s free, and DVDs will play fine.

How do I shut down or restart the computer?

Windows key and I brings up the Power menu.

Alternatively, Windows key and C, or mouse to bottom right corner, and click Settings, then Power.


This is somewhat hidden because Microsoft intends that normally power management, or shutting the lid on a laptop, or the soft power-off on a tablet, will be enough. Still, some of us like to turn the PC off completely.

If you want a quicker way to do this with the mouse, it is trivial to create a single short-cut. Right-click the desktop and choose New – shortcut. In the dialogue that appears, type:

shutdown -s


Click Next, name it as you like, and then Finish. For a restart, use:

shutdown -r

These commands also work in batch files or in the Run dialog.

How do I log off or switch user?

Go to the Start screen and click the user name at top right to display a menu, including Lock, Sign out, and Switch account.


How can I stop PDF documents opening in Metro?

Windows 8 is set up to open PDF documents in the Metro-style Windows Reader. It is not too bad, but can be annoying and does not have the range of features in the Adobe reader. To fix this, make sure that the latest Adobe reader is installed by downloading it from here. Once installed, right-click a PDF file and click Open With and then Choose Default program.


In the dialog that appears, click Adobe Reader:


Now PDF documents will open on the desktop in Adobe Reader.

Where has backup gone in Windows 8?

It’s still there, but for reasons best known to Microsoft it is now called Windows 7 File Recovery. Open desktop Control Panel, type recovery top right and press Enter. Click Windows 7 File Recovery.


How do you run an application as administrator?

Several ways, but these are the easiest:

a. Hold down Ctrl and Shift together, then click the icon in the taskbar (for an application pinned to the taskbar)

b. Go to the Start screen (Windows Key), find the application icon and right-click. Then click Run as administrator from the menu bar at the foot of the screen.


Interview: exec Parker Harris on the technology behind the platform

A couple of months ago, I attended Cloudforce in London, where I spoke to co-founder Parker Harris, Executive Vice President, Technology.

The platform is interesting for all sorts of reasons. The company has been a powerful advocate of cloud computing from before its adoption by other industry giants, and its service is as far as I can tell well liked by its customers. The technology is interesting as well. The CRM (Customer Relationship Management) application that is the core of the offering is both a web application and a web service API, with more transactions conducted programmatically than through the browser. The platform is multi-tenanted, and the company believes that only this type of platform delivers the full benefits of cloud computing. In December 2010 the company acquired Heroku, at the time a company dedicated to running Ruby applications in the cloud, though it now has a broader offering. was also where I first heard the term “Social Enterprise”, a phrase now taken up by others such as IBM and Microsoft; in fact, Social Enterprise was the dominant theme at Cloudforce.


I asked Harris how the company copes with scaling its platform as demand grows.

“We’ve gone through a few changes. We came up years ago with a concept we call a ‘pod’, which is one set of multi-tenant customers. There’s a database in there, there’s application servers, search servers, all kinds of things. So that was a unit of scale. And we invested heavily in capacity planning, just to watch and see how those grow, and so we fill them up to a certain size and then we grow horizontally and add more.”

Harris adds that pods are organised in sets called super-pods, which provides isolation in the event of a failure.

One of the goals is to make the system scale horizontally, whereas the Oracle database on which the platform is built tends to be a vertical unit of scale. "

“We’re doing a lot of research work in looking at horizontal scalable systems like Hbase for example, to look at how can we do more horizontal stores. And then finally we’re in the middle of a process of moving a lot of our processing to completely asynchronous handling, so that as transactions come in they’re being handled in an asynchronous way. Even though the consumer feels like it’s synchronous, the back end will be completely asynchronous, which will then give us even more control and capability to scale.”

In the past I have thought of the platform as in effect a big database. I asked Harris if that is still the case?

“We have big databases, but I think of it more as a meta-data platform. Behind that meta-data we do have a big database, we also have a big file store, we have a big search engine, which is another unit. That’s really what you know as And that’s fully multi-tenant, it’s way at the extreme end of multi-tenancy.

“Heroku is really virtualised single tenancy. So it’s more towards an infrastructure as a service layer. For some workloads and some use cases that’s fine. If you want the predictability of ‘the software I wrote on my computer needs to run exactly the same here’, that’s where that takes place. But you don’t have the higher-level capabilities of, you don’t have everything working out of the box.

“Where we’re headed is, you’ll have the 4GL of, you’re going to have the 3GL of Heroku, and you’ll be able to choose.”

At one time Salesforce has a partnership with VMWare called VMForce. What happened to that?

“We don’t have a technical partnership with VMWare, but we do have a close relationship with them. We want to have applications that work in VMWare’s cloud able to move into Heroku or vice versa. Really what happened is, we started the relationship with VMWare and then we discovered Heroku. We were just blown away by the technology there and the team, and that was when we ended up acquiring Heroku, but we still see VMWare as a huge partner. We’re a big customer of VMWare, they’re a big customer of ours.”

You talked at Cloudforce about HTML mobile apps versus native apps, and you seem to be more on the HTML side?

“I was making the point of HTML versus native code. This is an argument that goes on inside of Salesforce, it is a religious debate, but I believe that you can build some extremely rich applications with native code, and you can build them very quickly. The complexity for me happens when you introduce business systems that are on an enterprise platform. If you think about our metadata engine, it’s very powerful, and I can create triggers, I can change the UI, I can do all these magic things, and immediately it works. Change the UI into Japanese, it immediately works.

“If I’m building something 100% native, I have to replicate that platform in the native code, and that’s for me a no-win situation, because this is going to keep moving, and the native code will be behind, it will be playing catch-up. So if it’s for an enterprise business system on a platform like ours that’s metadata driven, you really need to have that be directly from the cloud.

“If you think about the Chatter feed or the business forms, that I believe needs to be HTML5. But I want to use the camera, I want to have files local to the device, that I can open, and various programs, I want location to work, and maybe I want to use the map application: so there are some native assets too. And then when you think of security, I don’t want to have to go to a web page and enter my username and password, and maybe have to VPN in, I don’t want to do that every time I use the application.

“So instead what you do is have a native container that wraps all this HTML5 code, gives you access to things like the camera, but also is a way to store an Oauth token, it now has the right to access my data, and from then on I can just use the application. It’s really high usability.

“I also think we still have a sometimes-disconnected world. That’s frustrating. So I do think there should be a cache, a recent cache of what you’re working on. That’s my view of where we should be going with these disconnected use cases.

“So that’s where we’re going, and we’re open sourcing a lot of this. We have a native container and we’re open sourcing it so people can see how we built it and add to it. We’ve got a UI framework that we’re going to be open sourcing. It’s an HTML5 component framework. Touch, that we announced last year and is going beta now, Touch is built with that framework, and that’s the framework that we will eventually open source so people can use it with their own applications.”


Do you use PhoneGap/Cordova for the native wrapper?

“We do. We do a lot on WebKit-enabled browsers, and when you think of the native container, it’s really going through PhoneGap to get to some of the local resources.”

What about your SOAP and REST APIs?

“We have backward compatibility for all of our APIs, because we don’t want to force people to rewrite their code. We do see lots of use  cases for SOAP, but more and more people are doing RESTful interfaces, and when their writing these mobile applications they really want REST APIs so we’re building a lot more of our own.”

How has Heroku evolved since you made that acquisition?

“There are a couple of huge events. One is, they were just a Ruby platform when we acquired them, and now they are a polyglot platform, so they can run many different languages. They’ve also shown how they’ve built support for these other languages, so other people are able to write support for other languages.

“The other big change was when Facebook on their developer page said, if you want to build a Facebook page or application, here’s how to do it, and if you want it hosted in the cloud, use Heroku. There may be others by now, but we saw a massive uptake in the number of applications being created. We’ve seen a huge number of applications grow from when we acquired it to now and with a big spike through that Facebook relationship.

“We have Heroku enterprise bundles that are available now. People are buying Heroku as part of a SELA, or a Social Enterprise License Agreement.

“Developer adoption is still very important. We want to monetise it, but we don’t want to lose this huge asset of the appeal to the developer community. It’s still early for Heroku.”

I also spoke to Harris about the Social Enterprise concept, but will post that separately.

Internet hotspot tethering comes to the Lumia 800

Nokia’s first Windows Phone, the Lumia 800, has gained Internet Sharing in a recent update.


This is a fantastically useful feature if you have a data plan that includes a reasonable amount of data transfer. For example, perhaps you bought one of Google’s great value Nexus 7 tablets, reviewed here. This is Wi-Fi only, but combine it with a smartphone hotspot like this one and you can be online anywhere.

One snag is that the Lumia already has short battery life and this will drain it even faster, if enabled. If I am stuck in an airport and can find a mains point, one workaround I use is to attach the phone to a laptop via USB so that it continues to charge while you are online.

This feature removes what was to me the biggest flaw in the Lumia 800, which is an excellent phone. Unfortunately too many customers have had technical problems, the worst of which is the will not charge bug that is one of the most-read posts on this site. I have not experienced this myself for a while, so there is hope that Nokia has fixed this one too.

Access Web App: at last a simple web database app builder from Microsoft

One thing hardly mentioned in the press materials for Office 2013, and therefore mostly ignored in the immediate publicity, is Microsoft Access 2013. It is included though, and its most interesting new feature is a thing called an Access Web app.


To make one of these, you click the big “Custom web app” button on the opening screen. The first thing you are asked is where to put it. It is looking for a SkyDrive or Office 365 team site – essentially, online SharePoint 2013 I imagine. If you are not signed in, this screen appears blank.


I selected Skydrive at my Office 365 preview site.


Hit Create and you can select an app from a template. I chose a Music Collection app. Access generated several tables and forms for me and opened the design environment.


The template app is a bit daft – Artists and Labels are based on a People template, so you get Labels with a Job Title field – but that does not bother me. What interests me is that Access generates a relational database that you can edit as you like. The template UI offers either a list/detail view called a List, or a Datasheet which shows rows in a grid format. There is also a Blank view which you can design from scratch.

I had a quick poke around. Access Web Apps do too good a job of hiding their innards for my taste, but what you get is a SharePoint app with data stored in SQL Server Azure. You can also use on-premise SharePoint and SQL Server 2012.

Programmability in Access Web Apps is limited, but you do get macros which let you combine multiple actions. There are two kinds of macros, UI macros and Data macros. UI macros support a range of actions including SetVariableif and else statements. The only loop functions I can see are in Data macros, which include a ForEachRecord action. You can call Data macros from other macros and a Data macro includes a SetReturnVar statement, so I guess with a bit of ingenuity you can do many kinds of automated operations. Macros are described here.


In my quick test, I put a button on a view and had it show a message. Apologies.

The application files are all stored on SharePoint, rather than locally, so I presume you could easily edit the app on any machine with Access 2013 installed.

Click Launch App and the web app opens in the browser. Everything worked, including my MessageBox.


I also tried it on the Google Nexus 7 Android device. Again it seems to work fine, though I did get some odd behaviour returning to the app. There are possibly some authentication issues.


An Access Web App is just another SharePoint app, as explained here, so you can publish it to selected groups via the built-in store.

There is no way that I can see to craft your own SQL, which to me is a disadvantage, but maybe we will discover how to bypass the UI and open a database in SQL Management Studio, or access it programmatically from other environments.

It seems to me that what Microsoft is offering here is what it tried, but failed, to offer in Visual Studio Lightswitch: database programming for the non-specialist. Access has always done this, though unfortunately it is easy to make rather a mess if you do not know what you are doing. An Access Web App gives the developer/user fewer ways to go wrong, and builds cross-browser web apps. It is not yet possible to judge whether Microsoft has got the feature set right, but fundamentally this looks useful for simple custom business database applications of the kind that many small organisations and departments find they need. It is a big advance on MDB files stuck on a file share, fits with the BYOD (Bring Your Own Device) concept by working on iPads and the like, and makes it easy to get started and experiment. Good work.

Office 365 for developers: Getting started with Microsoft Napa

One key aspect of Microsoft’s forthcoming Office 2013 is its support for a new app model. The idea is that rather than building local add-ins for desktop Office, you will build web applications that live in one of four places:

  • In SharePoint
  • Within an Excel document
  • Within a Task pane in Excel or Word
  • Adjacent to an email in Outlook

If you have been following Office development for a while, it is hard to supress an initial reaction of “oh no, not another development model for Office.” After all, we have had Basic macros, Visual Basic for Applications, COM Add-ins, Visual Studio Tools for Office, and in the case of Exchange, other APIs such as MAPI and Exchange Client Extensions. Further, most of this stuff still works, which is a mixed blessing as the the whole thing gets more bloated and confusing.

Even so, I can see the sense of the new Apps for Office. One key advantage is that they work in Office Web Apps as well as in the desktop applications. They are also easier to deploy and secure, since they require no executable files on the client, are sandboxed, and only interact with the local document via a JavaScript library. That may not always be sufficient of course, in which case you can stick with one of the older extension models (personally I still find VBA useful), but where it is sufficient, this strikes me as a good approach.

That said, there are plenty of gaps in the list of supported app types:

Application Supported types
Excel 2013 Preview Task pane, Content
Excel Web App Preview Content
Word 2013 Preview Task Pane
Outlook 2013 Preview Mail
Outlook Web App Preview Mail
Project Professional 2013 Preview Task Pane

It would be good to see content apps supported more widely. Still, it is a start.

Office program manager Brian Jones has an excellent post on the background to apps for Office and SharePoint, which inspired me to sign up for a developer preview. Microsoft had already created an Office 365 preview account for me, but this other one is the real deal: you get to administer an entire test organization, complete with SharePoint, Exchange 2013, and all the Office 2013 preview apps.

After sign-up, it took a few minutes to provision, and then I was able to add the Napa development tools to the site. This is itself a cloud app. It is easy to get started: choose the type of app you want and you are in.


Napa is a cloud IDE, essentially a code editor with some syntax highlighting and code completion.


The real joy, if you have ever done SharePoint development, is how easy it is to deploy. Just click the Run button.


Once installed, you can launch the app with a click, provided you have enabled pop-ups on the site. An Excel content app works in the same way, but opens up the app running in an Excel Web App spreadsheet.

I am sure seasoned Microsoft platform developers will find Napa rather limiting, but there is also an Open in Visual Studio button, and all going well you should be able to do most of your coding in Visual Studio, upload back to Napa, and still get the benefit of easy test and deploy.


If you are pleased with your app you can easily offer it for sale by publishing to the Office store:


The implications for Office 365 are rather profound. It is evolving into a true extensible cloud platform, where businesses can add apps and deploy to their users using an app store model.

That said, you can argue that Microsoft is playing catch-up here. For example, has had for years, and I know from visiting the huge vendor exhibitions at events like Dreamforce how strong that marketplace has turned out to be. Salesforce has also enabled its users to build apps in the cloud for many years now.

All true; but Microsoft’s approach does have the advantage of continuity. As I mentioned above, the old stuff still works, so customers can move at their own pace towards a cloud-based platform.

For more information, I recommend this overview.

Adobe Brackets: a different type of HTML and JavaScript code editor. Interview with Adobe’s Adam Lehman.

On Adobe’s Tools and Services page there is an intriguing remark about the company’s plans for a code editor. “We think there’s a need for a different type of code editor – we’re working on something and will have more to share soon.”


That something is Brackets, a code editor written in HTML and JavaScript (which means, as with all the best tools, that you can code Brackets in itself).


Although Brackets is written in HTML and JavaScript, it is not yet a web application. Instead, it runs on the desktop using Google’s Chromium Embedded Framework (CEF), which lets you embed the Chrome (strictly, the Chromium) browser engine in a desktop application. In the case of Brackets, the wrapper is lightweight, the intention being that in future Brackets may be fully browser-hosted. The consequence though is that currently you need Google Chrome installed and it only runs on Windows and Mac.

The project is open source under the MIT license; anyone can grab the code from Github. Brackets also depends on another open source project, CodeMirror, which is a JavaScript editor component for browsers. I installed it on Windows and soon had it up and running. Note that you should pull brackets_app if you want to run it, as this brings down the Brackets code as well.


I spoke to Brackets Product Manager Adam Lehman. “This might be the first project we started with the intent of being open source from day one,” he said.

“Our general intent is that we wanted to provide an editor that web developers felt that they could own. In the past we might have built something in Eclipse, and there would have been this giant gap between the person who knew HTML, JavaScript and CSS, and then having to write a Java-based Eclipse plug-in to extend the editor.

“When we start talking to developers, they’re going back to just text editors, things that don’t do much more than edit and manage a document, and as complex as HTML and JavaScript apps are getting these days, it seemed crazy that our tools weren’t keeping up with us. So the idea was to start this project, add a little bit of our own ideas, and have the community supply their own ideas.”

But how does Adobe intend to use Brackets in its own products, and what is the business model?

“We believe there are two spaces for the editor market. There is the larger IDE, but there’s also these lightweight text editors. We’re finding that the traditional JavaScript and HTML developer, CSS developer, was heading towards the lightweight text editor and not towards the larger IDE. We don’t see Dreamweaver and Brackets as direct competitors because they service two different tastes. It wasn’t a matter of could we add a feature here or there that was going to get people to use Dreamweaver. It was that difference between our larger tool and a much lighter weight tool. That’s where Brackets come in.”

How then will Brackets tie in with other Adobe products?

“That’s the key for Brackets. We wanted to see if we could innovate in the space and we also wanted to have a common language that we could start targeting. When you say, I want to open up an editor from Adobe Edge and start coding, we needed to define what that editor would be, so Brackets would come into that.

“We’re also saying we need to do better tooling around PhoneGap. A lot of people are fine with the command line, but we want to take a step beyond that and so Brackets is the obvious place where we’ll start to build an extension where we can tie into PhoneGap Build, or extensions around the PhoneGap APIs.

“We’ve got a lot of ideas around using Brackets to bring a lot of our HTML efforts together, not only our core HTML products but also a lot of the W3C and WebKit work that we’re doing. Brackets is a great place to put tooling, that isn’t quite ready for mass consumption yet, but we could actually build extensions for something like Shaders where those people who are interested in it can get in and start playing around with it.

“The beauty of building on the web platform is that we can go wherever the web platform goes.”

Initial prototypes of Brackets ran entirely in the browser, which would be interesting for future versions of Adobe’s Creative Cloud as well as other scenarios, but Lehman said this got mixed reactions.

“While we believe that the future of development is heading towards the cloud, and the general consensus from developers is the same, we also heard that it is not ready yet. We decided to focus on a desktop version first, with the idea that towards the end of this year or beginning of next year we’ll start to supplement with other targets, whether it be in the cloud or  a tablet, or embedded in a tool like Edge,”

says Lehman. He adds that a browser-hosted Brackets could end up integrated with the PhoneGap Build site. PhoneGap Build is a service for compiling cross-platform HTML and JavaScript into mobile apps for a variety of devices.

Since Brackets is built on Google’s Chrome/Chromium platform, what are the implications for cross-browser compatibility?

“There’s two pieces to it. There’s our container that Brackets runs in, and that is running on Chromium.

“The other part is that we have this live preview system which is tied directly to Chrome on the desktop. We happened to just start with Chrome, mostly because there is a remote debugging API that’s pretty fleshed out there.

“With Firefox and Internet Explorer, it’s a little bit different. We talked to Mozilla and they’re just now starting to work on that remote debugging API and trying to get it inline with where Chrome is, so we’re expecting to hear from them in August that they actually might have an API where we can start to build that same functionality, which is our intent.

“We’ve already started engaging with Microsoft about Internet Explorer. Right now their remote debugging API is somewhat private and in the form of a COM object which is not ideal coming from a JavaScript perspective, but we’ve showed them what we’re after, and we’ve started discussion of what a remote API from IE might look like that didn’t require COM. We’re exploring those options. Those are our priorities right now.

“If we build a cloud-based version then it’s going to be a question of what browsers this is going to run in. Our intent is to run in the modern major browsers. We aren’t building anything that’s Chrome-specific, we’re doing our best to stay as browser-agnostic as we can, but we are likely to require a more modern browser. We feel it would be OK to require the latest versions of Firefox, IE or Chrome.”

I asked Lehman whether Brackets might be useful for server-side as as client-side code. He said that Brackets is focused on the client, though a community extension is under way for node.js. He adds that since Brackets is fully extendable, others may do plug-ins for languages such as PHP.

Why is Brackets at Github and not Apache?

“We have a lot of people at Adobe who work for Apache now, and we talked to them before we released Brackets. Our sense is that Apache might be too much of a turn-off for the individual contributor, who just wants to hack and fix a bug and submit it back,”

Lehman told me. Although there are external contributors, all the committers are currently at Adobe, though there are plans for adding external committers by the end of the year. “We don’t want this to be 100% Adobe controlled.”

When will Brackets get to version 1.0?

“We’re being as agile as we can. Every bit we add, it comes closer to being a 1.0 for somebody. The things that I think are missing that you would expect out of a core editor are around code-completion for CSS and JavaScript, and solid and advanced search and replace. In the web world, that’s how we refactor code. We’re hoping to drive those in by November time. But we are on 2.5 week sprints and things change rapidly.”

I also asked about plans for a mobile app version of Brackets. Lehman says that is planned for next year, though the community is working on getting a Linux version working and support for ChromeOS.

Brackets is a fascinating project on several levels. What stands out is how far Adobe has moved from being the Flash company. A few years back Adobe came up with a system for having Flash applications run on the desktop and on mobile devices: Adobe AIR. It also invested in Eclipse and came up with the Flash Builder IDE.

Now here is Adobe with an open source project for a desktop application built from HTML, JavaScript, and a third-party open source browser engine; and in place of mobile AIR it has PhoneGap.

It is a big change, most of which has become publicly known in less than a year, signalled by the repositioning of Flash and AIR versus HTML in September 2011, and the abandonment of Flash for Mobile in November 2011.

As for Brackets itself, it is well worth a look though probably not a tool you want to use for real work just yet. In a few months though, that may well change.

Postscript: Brackets reminds me of another Adobe, or rather Macromedia, HTML code editor. That was HomeSite, an excellent text-based tool that Adobe discontinued in 2009; active development ceased years before that.

Offline web mail in new Office 365 and Exchange 2013 Outlook Web Access

Microsoft has posted details of the forthcoming Exchange 2013, and one of the features that intrigues me is the ability to use the browser-based email client, Outlook Web Access (OWA), offline.

Since offline use is one of the primary issues with web applications, this is a key feature. It would be particularly interesting if it worked with mobile devices such as the Apple iPad or Google Android tablets.

I asked about this and was directed to this table, which states that offline access is supported in Internet Explorer 10 or later, Safari 5.1 or later, and Chrome 18 or later. Offline is not supported on mobile browsers, nor on “Windows 8 tablet”.


I have not seen Microsoft use the term Windows 8 tablet in a technical sense before. I presume it means Metro-style IE and Windows RT?

Next, I went to my preview Office 365 account on a Windows 8 tablet (ha!) but in desktop IE, and noticed that OWA already has an offline option there, which I presume is essentially Exchange 2013 though perhaps with some differences.


I selected the option and was prompted to confirm.


I clicked Yes and was prompted to add to favourites.


Then I closed the browser, turned on Airplane mode, and restarted.

Success! I was able to return to OWA, compose and send an email. Note the Airplane mode icon in the screen grab.


Looking at IE settings I also had an offline cache set for


I closed the browser, re-enabled the network, and restarted.

Bad news, my first email was never sent. I tried again though, and this time confirmed that, while offline, my email was in an unsent folder.


However, when I went back online I could not see it in sent items. I made a third attempt. Eventually though, both my second and third attempts succeeded and I got the email.


That’s good, but I have a few observations (bearing in mind that this is preview software):

1. The experience in Metro-style IE is terrible. You can enable offline there (I tried) but it does not work. And where is the cache setting for Metro-style IE, is it shared with desktop IE? Does it have one? This whole relationship between the two forms of IE 10 in Windows 8 is obscure and difficult.

2. What happened to my first email? Did I not in fact click send (I am fairly sure I did)? Losing emails is bad and can be costly.

3. This offline setting would be particularly useful on mobile devices so I would like to know what plans Microsoft has to get it working.

Recovering documents from SharePoint 2010

I mentioned the other day that an update broke my SharePoint installation. The timing was bad as I was just about to leave the office for a few days, so as it turned out I did not get to focus on this properly until last weekend. This virtual server is backed up nightly. I restored from before the failure but it still did not work. Perhaps there was an update pending that was not fully applied until the server restarted, so that even my “good” backup was bad.

The error was frustrating. Accessing a SharePoint site got me a 503, service unavailable. I could run either psconfig or the SharePoint Configuration Wizard without error, but it still did not work. The event log showed a bunch of errors that made little sense to me, including those annoying DCOM activation errors, and database login errors when the accounts concerned had valid logins.

It was wasting too much time so I went for plan B. Reinstall SharePoint from scratch and restore the content database.

This was actually easier than I expected. I backed up WSS_Content using SQL Server Management Studio. I then removed everything SharePoint, and deleted a couple of remnants in IIS. Reinstalled and everything worked.

After that it was simply a matter of attaching the old content database. Well, nearly that simple. My first attempt failed because SharePoint was not fully patched and had an earlier schema than the content database. I manually downloaded and applied the latest SharePoint hotfix rollup. Then I attached the old content database to a new SharePoint site, and everything came up just as before.

I find this reassuring, as keeping documents as blobs in SQL Server is just a little scary from a recovery perspective.

Even if attaching the database were to fail, it is not too bad. You can write code to write out the documents to files and recover them that way. There are some clues here.