All posts by onlyconnect

Rubbish apps in Windows Store – encouraged by Microsoft?

Someone (and you wonder who) has taken it upon themselves to document rubbish apps in the new Windows Store. The stated reason:

Here we call out all the trash in the hopes that someone at Microsoft is listening and can remove them.

He or she has found plenty of examples – like the developer who submitted 20 trivial conversion apps and a tapping game that does not work; another who has got dozens of identical SDK samples listed as apps with different names; or the memory game listed 28 times complete with spelling errors and images suspected to be lifted from Disney.

Initially the puzzle was why apps which breach Windows Store guidelines are getting listed. But then there is more:

I feel like I’ve uncovered a conspiracy and I have no idea what to do with the information!

I emailed both Kusuma Sruthi and Pavan Kumar asking them why they had felt the need to submit their game multiple times to the Windows 8 store. I wasn’t really expecting a response. Yet both replied, pretty quickly, saying that they were told to do it but would remove the duplicates if I told them to. Was my email written with such authority?

Both claim to have been contacted by POOJA PATIL and told “to upload our apps with DIFFERENT NAMES and with SAME SOURCE CODE”. Whilst Pavan Kumar claimed not to have contact details he did say that she was from Microsoft. Kusuma Sruthi was more forthcoming with both a microsoft.com email address and an Indian mobile number. A brief Googling confirms the existence of a Pooja Patil with this phone number working for Microsoft to organise the Windows 8 Guiness World Record attempt in Bangalore.

Why would someone from Microsoft have told these two developers to submit their game multiple times? Were they really so desperate for apps that they encouraged this cloning? Were they really expecting that no one would notice?

Yesterday the blog author says two similar emails appears from these developers now denying that they were instructed by Patil to submit the apps:

at 6:05am I received 2 emails. Yes, at exactly the same moment. From Pavan and Kusuma. Both would now like to retract their previous comments about Pooja and would like it known that she’s great, and very supportive, and didn’t tell them to submit the same app over and over. It was all just a misunderstanding. Apparently.

Is all this made up? Not entirely, since you can verify that the apps mentioned exist, like these 28 apps by Nikhila Grandhi:

image

though it looks to me that some of the apps from Kusuma Sruthi have been removed suggesting that someone at Microsoft has noticed the issue and is trying to clean up.

Microsoft is a large company and although I was assured by Microsoft Store VP Antoine LeBlond that the new Store is not about the numbers, I can believe that some over-enthusiastic employees went too far in obeying some corporate directive to promote Metro-style app development and Store submissions.

That does not explain though why so many guidelines appear to have been ignored.

The company should do the right thing and clean out the rubbish.

Update: see also Drunk Compliance Tester. “The Windows 8 Store will continue to be a horrible experience for everybody if the level of quality doesn’t rise”

Microsoft answers Windows Runtime questions

I watched the Windows Runtime (WinRT) “Ask the Experts” session from Build 2012; I did not get to attend in person as it conflicted with Herb Sutter’s session on C++. The session was chaired by Martyn Lovell.

image

Here is what I thought most significant or interesting.

  • Microsoft knows that certain types of apps cannot be implemented as Windows Store apps. The implication is either that the desktop will never go away, or that some future version of Windows Runtime will have extended capabilities. Kamen Moutafov: “There are certain types of system management, system configuration applications that you cannot write a Windows 8 style app for. The platform is not well suited for this type of application.”
  • The WebView control is a problem. An attendee reported z-order, memory, input, and performance issues. This is not only because it hosts the IE10 engine, but also because the system does not cope well with the runtime layers involved: JavaScript running within XAML in a C# app, for example.
  • Someone asked why WinRT apps cannot span or support multiple monitors. The answer, only half joking, “Jensen Harris said that is how it is supposed to be!” Second answer is that this may change in future, and perhaps was just too hard to do well in version 1.0.
  • There was considerable discussion of usage of asynchronous APIs (typically using Async and Await). Can you use them too much? The answer is that you can, and some apps perform badly as a result. An example of a bad usage would be to iterate through many hundreds of files in a directory and fire off an async call for each of them. Lots of aysnc calls returning together will choke your app. Advice is to try limiting the number you fire off, for example, only processing the first page or two that is visible in the user interface.
  • Someone asked how can WinRT apps communicate with desktop apps? This is meant to be restricted to protocol handlers and file types, so that the user is in control. Microsoft attempted to block all other routes.
  • Someone had an app in the marketplace that worked on x86 Windows 8, but he discovered that it crashes (does not even load) on Surface RT. How did it pass certification? Answer: Microsoft has seen instances where apps do not behave the same. Certification is not an exhaustive test. Even so, disappointing to make available an app that will not even load.
  • Can a WinRT app create UIs on multiple threads? Yes you can create two views on different threads. See CoreApplication.CreateNewView.
  • How can you detect if a file exists without raising an exception? Apparently this can’t be done. It may be addressed in future.
  • If you are creating a component to be used by other apps including JavaScript apps, it is best to create in in C++. JavaScript to C# to WinRT is apparently sub-optimal.

Watch the session yourself here.

Microsoft Build 2012 is done. Now the market gets to judge Windows 8 and Windows Phone 8

I am just back from Microsoft’s Build conference, at the company’s headquarters near Seattle. This is a company in transition and the event had that feel to it. There was not much that we did not know about before, but this is the moment of full release into the market for some key products, and in some cases – Windows 8 and Windows Phone 8 to be specific – you could sense some nervousness about how they might be received.

Attendees were handed Surface RT devices (running Windows on ARM) as well as Nokia 920 Windows Phone 8 phones.

Here are a few quick reflections.

First, Windows 8. I picked up less resistance to the new big bold tiled touch user interface than was the case last year when it was unveiled, though arguments about its merits continue. Personally I am fine with it, though my experiments with developing an app or two have shown me that it is version one and could be made better for developers. I still think there are too many expensive hybrid tablet/laptops being pushed out by Microsoft’s hardware partners, and not enough simple slates.

An encouraging sign for Microsoft was that sessions on line of business apps for the new interface (which still lacks a proper name) were packed and had to be repeated.

What about Windows RT? I am in a minority since I like the concept; most Microsoft-platform folk want their x86. Leaving that aside though, the big issue with Windows RT is performance. Visual C++ expert Herb Sutter said to me that the ARM compiler is version 1.0 and less well optimised than the one for x86, which may account for the disappointing performance of the Surface RT. I cannot help liking the device, which is beautifully made and a lot of fun, but watching an MP4 video on the flight home I had difficulty getting smooth playback. It really should not be hard to play an MP4.

Another puzzle with Surface RT is that Microsoft has not made the best of the simple appliance concept. Windows update errors and crashing apps make you wonder whether Microsoft has learned anything from Apple. There is no excuse when the company has such complete control over hardware and software. Signs of haste I think, and it will get better, but if Surface RT had the potential to show how smooth and easy Windows 8 can be, that opportunity has been missed at the launch.

An uncertain launch for Surface RT then; but Microsoft is on surer ground with Windows Phone 8. I have looked in detail at the SDK and like it better than the Windows Phone 7.x SDK which is Silverlight and XNA only. I have not tried an actual device yet, but my sense is that the platform is all there now, for business as well as consumer. The problem is that the market is contented with iOS and Android and breaking in will not be easy.

Windows Azure had a good Build. In keeping with the client focus, Azure Mobile Services got the most attention, an easy way to create a back-end for mobile clients or Windows Store apps. The new Azure management portal, first seen this summer, gets better and better; and the combination of an admin-friendly portal and a solid infrastructure underneath seems to me a strong one.

Azure specialist Mark Russinovich told us that Azure demand was growing fast, and I can believe it.

What about the organization of Build? Frankly, I am puzzled why Microsoft decided to run the event on its own campus, which is not really suitable for an event of this size. Further, the event sold out quickly which suggests that the company could easily have attracted a bigger attendance. Even as it was though, there were tedious bus journeys between two buildings where the sessions and exhibits were located. It was not helped by the near-constant rain, and as time went on the tents started to leak a little and you had to watch where you sat in case of drips. My suggestion: either go very small, as for PDC 2010, or go back to a proper conference venue as for Build 2011.

Still, there were some excellent sessions about which I have more to write. Some of my favourites:

Scott Guthrie on Windows Azure

image

Mark Russinovich again on Azure – excellent insights into what it takes to keep a cloud running (and why it failed with a leap year bug).

image

Anders Hejlsberg enthused about TypeScript, a new way to write JavaScript applications.

image

Herb Sutter talked about what is coming in C++ and the new Standard C++ Foundation.

image

Jeffrey Snover talked about Windows Server 2012 and the Cloud OS (this was a press-only session)

image

More on these coming soon.

How to test and debug an app on Surface RT in a hotel room

I wanted to test an app on Surface RT this morning, though I am out of the office with just a Samsung Slate (has Visual Studio), the Surface, and hotel wi-fi.

You can do remote debugging on Surface RT as explained here, however you need a private network.

I set up an ad-hoc network from the Samsung Slate as described here:

Open an elevated command prompt

netsh wlan show drivers

netsh wlan set hostednetwork mode=allow ssid="wireless name" key="password"

netsh wlan start hostednetwork

This allowed me to connect the Surface RT to a private network with the Slate.

Next, I needed to download and install the remote debugging tools for ARM from here.

I ran the remote debugger and was able to connect from Visual Studio on the Slate, but ran into a small issue. I needed a developer license for the Surface, but while on the private network it was not on the internet. When the remote debugger prompted to install a developer license, it could not retrieve it.

The solution was to disconnect, connect to the internet, then install the developer license using PowerShell. Run show-windowsdeveloperlicenseregistration from an elevated PowerShell window.

image

Then I returned to the private network and was able to launch my beautifully designed test app:

image

image

Note that for the actual test I did not run the app attached to Visual Studio. Rather, I deployed in release mode and then ran separately, to avoid the slowdown from the debugger. Once deployed, the test app remains in the Start screen for launching.

Investigating Surface RT performance: Counting primes in C# and JavaScript

How is the performance of Surface RT? Tolerable but rather slow would be my quick summary. Surface RT has a quad-core NVIDIA Tegra 3 chipset.

In order to investigate further, I built a simple app to count primes, using essentially the code here. I ran the code both in JavaScript and in C#. This is a single ad-hoc and naive test that only covers one aspect of performance, but I have still found it an interesting indicator. I then ran the app both on my Intel Core i5 Samsung Slate and on Surface RT (yes it was interesting figuring out how to debug on Surface RT in a hotel room).

Here are the results:

On Intel Core i5:

  • Count primes up to 1,000,000: 1.05 secs (in browser)
  • Count primes up to 1,000,000: 0.88 secs (in embedded webview)
  • Count primes up to 1,000,000: 0.32 secs (C#)
  • Count primes up to 10,000,000: 6.31 secs (C#)

On Surface RT:

  • Count primes up to 1,000,000: 3.49 secs (in browser) Slower by 332%
  • Count primes up to 1,000,000: 3.53 secs (in embedded webview) Slower by 401%
  • Count primes up to 1,000,000: 1.81 secs (C#) Slower by 565%
  • Count primes up to 10,000,000: 49.03 secs (C#) Slower by 777%

The Core i5 is running at 1.6 Ghz. Surface RT has an NVidia Tegra 3 1.3 Ghz chipset.

You could count primes more quickly in both cases by using parallel processing; this is a single-threaded test.

What is notable here?

  • First, Surface RT is slower than I would expect and I hope Microsoft improves performance with future updates.
  • Second, C# is substantially faster than JavaScript in this test, around twice as fast, which makes me question the advice I have heard from some spokespersons that HTML and JavaScript is the preferred approach for apps.
  • Third, the factor by which C# is slower is greater than the factor by which JavaScript is slower. This surprised me; I had expected the reverse for some reason.

Of course, other performance tests will yield different results. When I tried the Sunspider JavaScript test Surface RT was about 5 times slower.

One piece of good news: there was little difference between performance in the embedded or non-embedded browser.

Update: I also tried this test in C++. There was barely any difference. The Core i5 counted primes up to 10,000,000 in 6 seconds. The Surface RT performed the same feat in 46 seconds.

Update 2: A Google Nexus 7, which also has a Tegra 3 chipset, can only manage 76 seconds for the JavaScript test (primes up to 10,000,000).

A puzzle: why did Microsoft hold back Windows RT previews from developers?

Surface RT is out, along with a few other Windows RT devices such as the Asus Vivo Tab RT, and for most people (developers included) it is their first opportunity to have hands-on time with Windows 8 on ARM. What is odd here is that at the same moment that users can try (or in some cases buy) apps that those same developers have built, on Windows RT. The idea was that if you code for the Windows Runtime, which is common to both Intel and ARM versions of Windows, then the same app will just work.

Of course it is not that simple. The problem is that Windows RT has different performance characteristics than x86 Windows, such as a much slower JavaScript engine, and an app that runs fine on x86 Windows 8 may not give a good user experience on Windows RT.

Microsoft’s store process ensures that apps which do not work at all on ARM – such as those which include x86 native code – are not listed for download on Windows RT; but these other apps which work, but not well enough, have generally been made available.

The puzzle is why Microsoft did not offer developers some kind of preview hardware, such as RIM makes available for Blackberry 10, so that these issues could have been addressed, either by fixing the performance with further optimisation, or if necessary by marking apps as x86 only.

As it is, the developers of these poorly-performing apps will get the blame for a problem that is not of their making.

Post written and posted on Surface RT using the Word 2013 blog template

Steve Ballmer shows off Windows 8 in Build keynote

Microsoft’s BUILD conference has kicked off in Redmond with a keynote featuring CEO Steve Ballmer, Developer evangelist Steven Guggenheimer, and Kevin Gallo from the Windows Phone team. There were also a few guest appearances, including Tony Garcia from Unity, a cross-platform games engine.

The company has a lot to talk about, with Windows 8 just launched – four million upgrades sold so far, we were told, which seems to me a middling OK but not great result – and Windows Phone 8 also fully announced for the first time.

The keynote opened with a performance by Jordan Rudess from Dream Theatre, enjoyable and somewhat relevant given that he has helped create two music apps for Windows 8, Morphwiz and Tachyon, which he talked briefly about and played on a Surface RT and Lenovo desktop.

image

Then Ballmer came on and gave what I can only describe as a hands-on tutorial in how to use Windows 8 apps. I found this odd but it was well received; my conclusion is that many people have not bothered to look closely at Windows 8, or have been put off by the Start menu issue, and much of what Ballmer showed was new to them. It was not to me, so I was not gripped by this section of the keynote.

I preferred the presentation from Steven Guggenheimer; most of what he presented is also covered here, and included the announcement of forthcoming Windows 8 apps from Disney, ESPN and Dropbox. The Dropbox announcement is particularly significant, since I have heard complaints about its absence from Surface RT, which is unable to run the usual desktop client for Dropbox. Another app that is on the way is from Twitter. Guggenheimer also described a new PayPal API for Windows Store apps.

I do wonder why key services like Dropbox and Twitter are only now announcing Windows 8 apps. Windows 8 has been available in preview versions since last year’s Build event, and has not changed that much as a developer platform.

Gallo introduced some of the new features in Windows Phone 8, and claimed that Microsoft has delivered the majority of developer requests in the new Phone SDK which is available from today. He emphasised the possibility of sharing code between Windows Phone 8 and Windows 8, using Visual Studio to ensure compatibility.

Garcia presented Unity for Windows Phone, which is potentially a big deal, since it is widely used. The demo of immersive gaming graphics on Windows Phone 8 was impressive.

image

Finally, Nokia’s Richard Kerris came on, mostly to announce a giveaway of the new 920 Windows Phone 8 device for Build attendees.

image

This raised a loud cheer as you would expect, though it may be significant that the free phone won an even warmer reception than the earlier announcement of a free Surface RT.

The cost of signing up for a Windows Phone developer account has been reduced to just $8.00 for the next few days; see here for more details.

Did Microsoft do enough in this keynote? Personally I would like to have seen more technical depth, and a more convincing presentation of why the company thinks these new devices have what it takes to take on Apple and Google. Still, this is all about partners, and the arrival of Dropbox and Twitter as Windows 8 apps, and Unity for Windows Phone 8, are all significant events.

Slow JavaScript performance in Microsoft Surface RT

Outlook Web Access is useful on Microsoft’s Surface RT, since the built-in mail client is only basic. However I noticed sluggish performance, which made me wonder if Microsoft’s “Chakra” JavaScript engine is slow on Windows RT.

I ran the Sunspider JavaScript performance test on the Samsung Slate 7 I bought back in February, which has a 1.6Ghz Core i5, and compared it to the same test on Surface RT, which has a 1.3 Ghz NVidia Tegra 3 chipset.

The Samsung slate was 5.11 times as fast. Question: how much of that is down to the Core i5 being a faster CPU, and how much is down to a less well optimized Chakra engine?

image

Incidentally, the Apple iPad 2 which has an Apple A5 processors running at around 890 Mhz is approximately 33% slower on the SunSpider test. Since the CPU is clocked 45% slower that is a good result for the iPad 2 and Safari.

A Google Nexus 7 on the other hand which has the same Tegra 3 chipset as the Surface is about 55% slower than the Surface, which is poor.

Surface Reflections: it can only get better

Microsoft has released Surface RT, its first own-brand PC (if you can call it that) and also one of the first few devices to run Windows on ARM, formally known as Windows RT. I have been using Surface RT with the “Touch” keyboard cover intensively since its launch; it is a fascinating device, and the reactions to it from early purchasers is also interesting to watch.

Surface has various problems. It is designed for the new-style apps called Metro, or Windows Store apps, but the truth is that the selection of apps currently available is small and many are trivial or poor. There are many gaps. On the other hand, I have found workarounds for most issues, and there is plenty to like too.

Right now we are seeing Surface at its worst. Here’s why:

  • This is the first release of Windows on ARM. I have not found Surface particularly buggy or slow, but I would guess that performance will improve and bugs will be fixed as updates flow.
  • This is Windows 8, which is unfamiliar to many. It is not unfamiliar to me; but my guess is that for someone new both to Surface and to Windows 8, there will be some initial struggles. This will get better as users become more familiar with the operating system.
  • Better apps will come. Most developers are now seeing Windows RT for the first time; and it is remarkable that apps built for x86 Windows – like the ITWriting app – work as well as they do on ARM. On the other hand, I have also heard of performance issues, and certainly Pinball FX2 seems less smooth on Surface than on a Core i5 (not a surprise).

Here are a few details.

Annoying things

Password management. I use Password Safe, which does not run on Windows RT. I resorted to VPN and Remote Desktop to another machine to use Password Safe. There are some Windows Store password managers and I need to investigate; ideally I need one which supports Password Safe import.

Live Writer. My preferred blogging tool does not run on Surface RT. I am making do with Word. The only other option I know of is to post through the browser (self-hosted WordPress).

SSH connection. As part of the setup for blogging with Word, I needed to make an SSH connection to a Linux server. There is an SSH app for Apple iOS, but not for Surface. Not knowing any other way, I went the Remote Desktop route again.

Printing. I am staying with a friend and needed to print a boarding pass. He has a shared printer attached to a Mac. Windows RT found the printer, using the old-style Control Panel, but gave a message about a missing network driver and to consult my administrator. Next, it gave me a driver selection dialog and I picked one I thought might work. It seemed to install, but when I tried to print, I got nothing: no error, but nothing printed either.

Windows Update. I discovered that the final version of Office 2013 is available through Windows Update. I used Control Panel to find it. The update, which had to be selected manually, gave me an installation error. I looked this up and discovered it was because the Office Upload Center was running – thanks to my making a connection to SharePoint earlier. I terminated the Upload Center. Then the update failed with a different error. Now I am in limbo with this; Office 2013 final seems to be installed, but it is not listed in update history except as a failed update; however I cannot remove it nor reinstall it.

Word save error. Following a successful blog posting, I was unable to save the Word document. I got this file permission error:

Send As missing in Mail. The Mail app is working for me, connecting to my self-hosted Exchange server. However I make use of Send As in order to send mail as a different user. This works in Outlook but not in Mail. The workaround is to use Outlook Web Access, which does support Send As.

Good things

The hardware seems excellent. I love that the Touch keyboard gives me the ability to type at a decent speed and use a trackpad, but without adding significant bulk. I like the solid feel of the device and the kickstand. I am also realising that the reason Microsoft talks so much about the hardware is that there is less to show off about on the software side.

Skype. I have made several phone calls with the new Metro Skype client and it has worked very well, even without using a headset.

Music. Microsoft handed out Xbox music passes to early Surface customers. The music app works, and while I do not love the user interface, there is a lot of music available to stream.

USB. I’ve plugged wireless mouse adapters and storage devices into the USB port and they have worked fine.

Battery life. I debated whether to put this as Good or Mixed. I’d like longer, but at 8 hours or so it is decent. A good sign is that Surface seems to run nice and cool. No fan needed, so it is silent too.

Office and SharePoint. The presence of Office makes a huge difference to how I use Surface. One thing I managed to do was to link up Explorer with my self-hosted SharePoint so I can easily open documents there. Unfortunately the way to do this is not something you are likely to discover by accident, but it does work, although with more prompts than I would like.

Split/Snapped view can be very useful. For example, Mail app docked while working on the desktop.

Mixed things

Windows desktop. I find I spend a lot of time in the Windows desktop. Applications I use regularly include not just Office but also Paint, Notepad, Explorer, Control Panel, Snipping tool, VPN and Remote Desktop. These apps greatly increase the usefulness of the Surface; but it should not be this way; ideally I should be able to get most things done in the Metro user interface. Desktop apps still have the problems that Windows has always had, like the ability to throw up mystifying and useless error messages such as the one from Word shown above. Surface cannot be the true breakthrough device it needs to be until that is the case.

Performance. Generally I have found performance fine, and slowness when it occurs usually the fault of a slow internet connection or site. It could be snappier though, and I am not sure how good it will be with long Word documents or large Excel spreadsheets. If you resize the Word window, you can see a slight delay as it repaints.

Some apps seem slower than they should be; I have had problems with Tweetro, a Twitter client, though this may be partly due to issues with the Twitter API. An Atom windows 8 machine I tried at an HP event was more sluggish than Surface; but who knows, perhaps that was an issue with that particular device. I intend to do some measuring to get a better understanding of this.

Price. By the time you have added a keyboard cover, Surface is expensive considering its specs. The quality of design and manufacture, and the inclusion of Office, mitigate that; but current price levels will limit the market.

Final reflections

Surface is a step forward for Windows, but this is a journey and the device as it is today does not fulfil all its promise. Even as it is though, it is highly capable and will probably get a lot of use from me as a device that does enough to make carrying a laptop or x86 tablet unnecessary. I recognise that some of that utility is only possible if you have knowledge of Windows, a flaw which needs Microsoft’s urgent attention.

I like the fact that you cannot install desktop apps, despite its inconvenience, not only for security and stability, but also because it forces Microsoft and its users into the new Metro world.

The worry is that so far Microsoft has failed to convince most software vendors and developers that this new platform is worth their attention. If that does not change, then Windows will continue its slow decline.

I like Surface RT though; it deserves to succeed, and I will be interested to see if a significant community gets behind it and make it better.

Blogging with Surface

I generally post to this site using Windows Live Writer. Unfortunately this does not run on Microsoft’s new Surface tablet, since it is a desktop executable and Windows RT only allows Windows Store apps to be installed. So how to blog?

This site runs WordPress, and of course you can post using the browser. However I prefer to use an offline editor, and the only choice in this respect that I know of is Microsoft Word. I looked at this years ago and decided it was poor; but needs must.

One of the issues with using Word is that while it can connect successfully to the WordPress api for posting, it cannot apparently post images using the WordPress upload API – though if you know a way of configuring Word for this, please let me know. It does support FTP, so I set up an FTP server for this purpose. I did all this on the surface, though in order to make an SSH connection to the web server to sort out the DNS I resorted to VPN and Remote Desktop so I could use Putty, another Windows utility that does not work on Surface RT.

If you can see the image above, then it worked.