Monthly Archives: December 2014

Microsoft has introduced SSD storage for Azure VMs. This is a catch-up with Amazon which has been offering this at least since June 2014. It is an important feature though, and now in preview. The SSDs are part of the Azure storage service but can only be used for disks attached to VMs, not for general-purpose block files. There are three virtual disks available:

P10

P20

P30

Disk size

128GB

512GB

1TB

IOPS

500

2300

5000

Throughput

100 MB/s

150 MB/s

200 MB/s

Price is $6.90 per 100GB per month, which if I am reading this right is less than Amazon’s $0.10 per GB per month ($10 per 100GB) as shown here.

One obvious use case is for SQL Server running on a VM. This generally performs better than Microsoft’s Azure SQL database service. That said, Microsoft is also previewing an improved Azure SQL which supports most of the features of SQL Server 2014, including .NET stored procedures and in-memory columnstore queries. Microsoft’s Scott Guthrie says performance is better:

Our internal benchmark tests (using over 600 million rows of data) show query performance improvements of around 5x with today’s preview relative to our existing Premium Tier SQL Database offering and up to 100x performance improvements when using the new In-memory columnstore technology.

If you can make it work, Azure SQL is better sense than running SQL Server in a VM with all the hassles of server patching and of course Microsoft’s licensing fees; but the performance has to be there. Another factor which drives users to the VM option is that SQL Reporting Service is not available in Azure SQL.

When Microsoft acquired Nokia in April this year, there was always a risk that the Windows Phone platform would lose momentum (yes there was some momentum).

Nokia was better at marketing, better at hardware innovation, and better at the all-important operator relations than Microsoft itself.

I consider the launch of Windows Phone 7 in October 2010 to be one of Microsoft’s great disasters, not because of the operating system which is very good, but because the company failed to get all the pieces in place at the right time. When the phone was first released in the UK, you could not buy it at all in my local town centre, and even if you could find it, the hardware was indifferent, just slightly tweaked Android handsets from the likes of HTC and Samsung.

The underlying problem was that Microsoft was late to market and the iOS/Android duopoly was already dominant; but even so, the company could have done better.

Nokia’s adoption of Windows Phone in February 2011 (first devices came in October 2011) made a striking difference. Distinctive hardware and better visibility in the high street gave the platform a better chance of success. Nokia Drive for turn-by-turn navigation was a great feature, along with other Nokia apps and services like Mix Radio. Admittedly the Lumia 800 (the launch model) had some issues, especially with battery life and charging problems, but better devices followed.

Nokia also started making cheaper Windows Phones, delivering some of the best value smartphones on any platform.

The Nokia Lumia 1020, released in late summer 2013, brought the best camera in any smartphone to market, thanks to the company’s PureView research along with a high-quality though slightly protruding lens.

Nokia Lumia 1020

That was something of a high point for Windows Phone. Nokia, perhaps, started to panic as Windows Phone sales still failed to take off as quickly as had been hoped. At Mobile World Congress in February 2014, it announced Nokia X, a version of Android without Google services. This made no sense to me at the time; but indicated that Nokia had diverted its focus away from improving Windows Phone to chase an alternative (and doomed) platform.

There was also a period of hiatus between Sept 2013 when Microsoft’s acquisition was announced, and April 2014 when it completed. During this time Nokia operated independently, but with the knowledge that the businesses would be merged in due course; not a good scenario for long-term planning.

The problem today is that even those few who have adopted Windows Phone are losing heart. This is not only to do with market dynamics and the app problems over which Microsoft has no control. Check out this monster thread on Microsoft’s forums. There is a hardware issue with some Lumia models (including the 1020) such that the 8.1 update causes the phone to freeze at random intervals; not good if, for example, you have an alarm set or are waiting for a call. What you will see is that users started complaining on September 10th. Nobody from Microsoft bothered to comment on the thread or help users with mitigation suggestions until November 22nd, when Kevin Lee at Microsoft made an appearance:

Beginning in early September we started to receive an increased number of customer feedback regarding Microsoft Lumia 1020 and 925 device freezes. During the last two months we have been reaching out for more and more data and devices to systematically reproduce and narrow down the root cause. It turned out to be a power regulator logic failure where in combination with multiple reasons the device fails to power up the CPU and peripherals after idling into a deep sleep state.

I am pleased to pass on that we have a fix candidate under validation which we expect to push out the soon with the next SW update!

Which update? When? Mr Lee has made no further comment, and phones are still freezing. It is frustrating for users who return phones for repair, have the software reset, and then still suffer the problem, because it is incorrectly diagnosed by the repair engineers (read the thread for many such tales).

While the specific issue affects only a subset of Windows Phone users, this is not only indicative of poor quality control before the 8.1 release was pushed out, but also poor communication with users of the high-end Windows Phone devices; the market where Microsoft is weakest.

More seriously, the 1020 which is now coming up to 18 months old is still in some ways top of the range, certainly for the camera; note that in the Lumia range you have 8x, 9x, and 10x prefixes, and there has been no advance on 1020 in the 10x series.

Another issue for Windows Phone is that Microsoft is putting out Office for iOS and Android while seeming to neglect its own platform. The forthcoming Visual Studio 2015 includes a new set of tools for both native and HTML-based development for iOS and Android. It is beginning to look as if Microsoft itself is now treating the platform as second-class.

Unlike Ed Bott and Tom Warren I still use a 1020 as my main phone. I like the platform and I like not taking a separate camera with me. It was great for taking snaps on holiday in Norway. But I cannot survive professionally with just Windows Phone. It seems now that a majority of gadgets I review come with a supporting app … for iOS or Android.

Microsoft is capable of making sense of Windows Phone, particularly in business, whether it can integrate with Office 365, Active Directory and Azure Active Directory. On the consumer side there is more that could be done to tie with Windows and Xbox. Microsoft is a software company and could do some great first party apps for the platform (where are they?).

The signs today though are not good. Since the acquisition we have had some mid-range device launches but little to excite. The sense now is that we are waiting for Windows 10 and Universal Apps (single projects that target both phone and full Windows) to bring it together. Windows 10 though: launch in the second half of 2015 is a long time to wait. If Windows Phone market share diminishes between then and now, there may not be much left to revive.

This Java/Android IDE has been in preview/beta since Google IO in May. It is based on the excellent JetBrains IntelliJ IDEA.

You can get Android Studio here. It is now the official Android IDE and developers using Eclipse are encouraged to migrate – like it or not.

One of the key features is a new build system based on Gradle. Another notable features is a visual layout designer; you can toggle between visual and text modes.

Presumably one reason for Google developing its own Android IDE is to integrate more tightly with its cloud services. There is a Google Cloud Module on offer in the IDE.

Android development has its hassles. I seem to spend far too much time in the Android SDK Manager downloading new versions of the SDK, which is frequently updated.

Another annoyance is that the Intel Emulator Accelerator (HAXM) is incompatible with Hyper-V, the official Windows hypervisor. You either have to uninstall Hyper-V, or put up with a slow emulator. I would prefer it if Google/Intel/JetBrains used the standard Windows component.

I have been looking at .NET Core, an official Microsoft open source project which you can find on github and which is at the heart of Microsoft’s plans to open source most of its .NET technology.

Currently there are three Microsoft repositories for the .NET Core platform. There are the .NET Compiler Platform (“Roslyn”), ASP.NET 5, and the .NET Core Framework. Note that these are all v.Next versions of the .NET Framework. ASP.NET 5 and the .NET Core Framework are on github, but Roslyn is on CodePlex, Microsoft’s open source repository site. There is also a github repository for Entity Framework 7, currently part of ASP.NET though I am not sure that it belongs there. The current version of EF is 6.11 but the code for this is on CodePlex. The KRuntime, which is the implementation of the parts of the .NET Runtime needed to host an ASP.NET application, is also in the ASP.NET repository. Its full name is the K Runtime Environment (KRE); I am not sure what K stands for. Note that Microsoft has only promised to open source the .NET server stack, not desktop frameworks like Windows Presentation Foundation.

I had a look at the .NET Core Framework. This is the key set of libraries for .NET applications. The easiest way to build the core libraries is from the command line. Open a Visual Studio 2013 Developer Command Prompt (which sets up the path and environment for command line builds), go to your clone of the github repository and type build.

Cool. But what is in it? Not that much: System.Collections, Parallel Linq, Vectors and XML libraries.

“More is coming soon. Stay tuned!” say the docs. And in this blog post by Microsoft’s Immo Landwerth:

Consider the subset we have today a down-payment on what is to come. Our goal is to open source the entire .NET Core library stack by Build 2015.

Landwerth says that Microsoft is “currently figuring out the plan for open sourcing the runtime”; this is the native code that creates the .NET Virtual Machine which executes .NET code.

Of course there is also Mono, the old open source implementation of .NET which is from an independent code base.

This is exciting stuff for .NET developers, especially since official runtimes for Linux and Mac are also promised, but also somewhat confusing. What is .NET Core versus what we have known as the .NET Framework?

Here is a diagram from Landwerth’s blog:

I presume that the top left box (.NET Framework) has not been promised as open source, but the other two boxes have. Note that ASP.NET 5 will run on either .NET Core or the full .NET Framework; and that .NET Native – the project to compile a .NET application as true native code – sits as part of .NET Core.

Store apps (also known as Windows Runtime apps, or Metro apps) are not covered in the above diagram, but since .NET Native currently only works for Store apps, maybe .NET Core is also the .NET runtime for Store apps. Landwerth says:

.NET Core is a modular development stack that is the foundation of all future .NET platforms. It’s already used by ASP.NET 5 and .NET Native.

There are also some clues about .NET Core in the home page for the github repository:

.NET Core and the .NET Framework have (for the most part) a subset-superset relationship. .NET Core is named "Core" since it contains the core features from the .NET Framework, for both the runtime and framework libraries. For example, .NET Core and the .NET Framework share the GC, the JIT and types such as String and List<T>. We’ll continue improving these components for both .NET Core and .NET Framework.

.NET Core was created so that .NET could be open source, cross platform and be used in more resource-constrained environments. We have also published a subset of the .NET Reference Source under the MIT license, so that you and the community can port additional .NET Framework features to .NET Core.

The second paragraph is intriguing. Microsoft has posted parts of the source for the .NET Framework library so that the community can port some of it to .NET Core. What this means I think is not that this code should be part of .NET Core (otherwise it becomes more than just core) but rather that it would run on .NET Core.

It seems, contrary to what you might have thought, that the full .NET Framework is not a superset of .NET Core, although it is intended to be close to that. This has interesting implications for future compatibility. If .NET Core is intended to be more agile and to evolve more rapidly than the .NET Framework, since it is somewhat free of backwards compatibility constraints, we will soon find that there are features in .NET Core that do not exist in the .NET Framework as well as vice versa, in other words, two incompatible stacks. That could be a problem.

Despite Microsoft’s impressive openness in publishing much of its .NET work and forming the .NET Foundation, I for one would appreciate a clearer presentation of the plans for .NET Core and .NET Framework and the extent to which .NET Framework should now be considered a legacy or Windows desktop only technology. I suspect the answer for the moment is “wait for Build.”