Category Archives: .net

Microsoft Build 2014: what happened

It’s curious. Microsoft’s new CEO Satya Nadella has been in place for only a month which means that almost everything announced at Build, Microsoft’s developer conference which took place last week in San Francisco, must have been set before he was appointed; yet there was a sense of “all things new” at the event, as if he had overseen a wave of changes.

The wave began the previous week, with the simultaneous announcement and delivery of Office for iPad. The significance of this is threefold:

  • It demonstrated Microsoft’s decision to give first-class support to mobile platforms other than Windows
  • It demonstrated that Office can be redesigned to work nicely on a tablet
  • The quality of the product exceeded expectations, showing that in the right circumstances Microsoft can do excellent non-Windows software

image

Next came Build itself. It was a tale of two keynotes. The first was all about Windows client – both Phone and PC. The core news is the arrival of the Windows Runtime  (WinRT, the engine behind Metro/Store Apps) on Windows Phone 8.1. This means that WinRT is now the runtime that developers should target for apps that run across phone and desktop – and even, we were shown, Xbox One, which will support WinRT apps written in HTML and WinJS (Microsoft’s JavaScript library for Windows apps).

In support of this, Microsoft announced a new Universal App project for Visual Studio, which lets you share both visual and non-visual code across multiple targets. How much is shared is a developer choice.

There is more. A Universal App is now (kind-of) a desktop app as well as a Store app, since in a future free update to Windows 8, it will run on the desktop within a window, as well as appearing in the Start menu on the desktop. We were even shown this; apparently it is a mock-up. This was the biggest surprise at Build.

image

What did Executive VP Terry Myerson say about this? Here is the exact quote:

We are going all in with this desktop experience, to make sure your applications can be accessed and loved by people that love the Windows desktop. We’re going to enable your Universal Windows applications to run in a window. We’re going to enable your users to find, discover and run your Windows applications with the new Start menu. We have Live Tiles coming together with the familiar experience customers are looking for to start and run their applications and we’ll be making this available to all Windows 8.1 users as an update. I think there will be a lot of happy people out there.

This is significant. When Myerson says, “we are going all in with this desktop experience”, he does not mean backtracking on Windows Store apps, to return to desktop windows apps (Win32 or WPF) as the future of Windows development. Rather, he means Windows Store apps integrated into the desktop.

There is a further twist to this. Windows Store apps are sandboxed and cannot communicate with each other or with the operating system other than via carefully designed and secured paths. This is in general a good thing, but restrictive for businesses designing line of business apps. It also means that legacy code cannot be carried over into a Store app, other than by full porting.

In the just-released Windows 8.1 Update this has changed. Side-loaded apps (in other words, not deployed from the Windows Store) can now escape the sandbox thanks to Brokered Windows Runtime Components. There are some limitations (32-bit only on the desktop side, for example) but this will make it possible to implement business applications as Store apps even if they need to interact with existing desktop applications or services.

There is still a huge blocker to Store apps from a business perspective, which is that you need Windows 8. Still, my guess is that once the update with the restored Start menu appears, most of the objections to Windows 8 will melt away.

We also saw Office for the Windows Runtime, which will run on both Phone and PC. It is written, I discovered later, in XAML, DirectX and C++ (“Blazingly fast”, we were told). Corporate VP Kirk Koenigsbauer introduced a preview of this, or at least PowerPoint.

image

No detail yet, and several references to “early code” suggest to me that this is a year or more away from full release (giving Office on iPad a big head start); but it will come. Koenigsbauer did not call it cut-down; in fact, it was instanced as proof that WinRT is suitable for large-scale apps, so I would expect something more complete than Office on iPad; yet it is hard to imagine things like the VBA macro language appearing here in its current form (VBA is based on the ancient Visual Basic 6.0 runtime), so there will be some major differences.

We also saw Windows Phone 8.1, including the Cortana virtual personal assistant who responds to voice input. For me other things in Windows Phone 8.1 are more significant, including new swipe-style keyboard for fast text input, VPN, S/MIME secure email, and a new notification centre. Unlike touch Office, Windows Phone 8.1 is coming soon; Nokia’s Stephen Elop (soon to be in charge of Windows Phone at Microsoft) said that the first 8.1 Lumia devices could be out from May, depending on territory, and that all Lumia Windows Phone 8 devices will get the update in the summer.

On to day two, which was Cloud day, though we also got significant .NET developer news.

Executive VP Scott Guthrie introduced a new portal for Microsoft Azure, the cloud platform. This is not just a new look, but integrates with Visual Studio online so you can easily view and edit the code and track team projects. There are also new monitoring and analytics features so you can check page views, page load time, browser usage and more. Guthrie also announced integration with Puppet and Chef for deployment automation.

image

Language designer Anders Hejsberg also came on stage. He announced the release version of TypeScript, a “typed superset of JavaScript” which is suitable for large applications. He also announced a new preview release of the compiler project code-named Roslyn, and on stage pushed the button that published it as open source. What is Roslyn? It is the next generation compiler for C# and VB, and is itself written in C#. This enables compiler and workspace APIs, which in turn enable rich editor features:

The transition to compilers as platforms dramatically lowers the barrier to entry for creating code focused tools and applications. It creates many opportunities for innovation in areas such as meta-programming, code generation and transformation, interactive use of the C# and VB languages, and embedding of C# and VB in domain specific languages.

Roslyn will be fully released in the next version of Visual Studio, for which we do not yet have a date. Roslyn will be delivered alongside C# 6.0.

There is also a new .NET Foundation which will oversee open source projects for .NET, with backing from folk including Xamarin’s Miguel de Icaza and Umbraco’s Niels Hartvig. It is all a bit vague at the moment:

In the upcoming months, the .NET Foundation will be inviting many companies and community leaders to join the foundation, including its Board of Directors and will then finalize its operational details, including governance models for its open source initiatives, membership structure and industry and community engagement.

Another significant event in the .NET story is the arrival of true native code compilation for .NET, although currently only for 64-bit Store apps. More on this soon.

A couple of events during Build caught my eye. One was de Icaza’s session on using C# to build for iOS and Android, not so much for the content itself (though there was nothing wrong with it), but rather for the huge attendance it drew.

image

The session was moved to the Build keynote room, and while there were spare seats, the room felt well filled. This speaks loudly about the importance of those platforms even to Microsoft platform developers, as well as of Microsoft’s support of Xamarin’s work.

Another was the appearance of John Gruber, author of the Daring Fireball blog and an Apple enthusiast. He appeared in a video during the keynote, explaining how a project in which he is involved uses Azure for back-end services, and then in person at another session, interviewing journalist Ed Bott about what is changing at Microsoft.

image

Gruber seems to me representative of a group of smart observers who have not in general been impressed with Microsoft’s endeavours over the past few years; but he for one is now more positive on the subject. Windows Phone is much better than its market share suggests, he said. This alongside Azure and a new openness to supporting third-party clients has made him look more favourably on the company.

My summary is this. On the Windows client side, Microsoft is taking its unpopular Windows release and its minority Phone platform and making them better and more compatible with each other, making sense of the client platform in a way that should result in growth of the app ecosystem both on Phone and PC/Tablet. On the cloud side, the company is building Azure and Office 365 (two platforms united by Azure Active Directory) into a one-stop platform that is increasingly compelling. The result was a conference and a direction that was largely welcomed by those in attendance, as far as I could tell.

That does not mean that the PC will stop declining, or that iOS and Android will become less dominant in mobile. There is progress though, and more clarity about the direction of Microsoft’s platform than we have seen for some years.

For the official news from Build, see the Build Newsroom.

Microsoft Build goes nuts over Xamarin’s C# and .NET for iOS and Android

Xamarin’s Miguel de Icaza was booked for a standard session room at Build, Microsoft’s developer conference in San Francisco, but the session was moved to the keynote room because of demand. I am not sure how the likely demand was calculated, but it was possibly something to do with the event app that lets attendees plan their agenda.

It was just as well that the session got moved.

image

The attendance at the session mirrored my observation that Xamarin’s stand in the third-party partner exhibition was drawing more attention than any other. Xamarin’s tools let developers port applications to iOS and Android while still using C# and the .NET Framework.

image

I am not sure what to conclude from the obvious high level of interest in compiling apps for iOS and Android. You can interpret this as good news for Microsoft, in that it keeps developers working in .NET and with easy access to the libraries that support Microsoft services; or as bad news, in that it shows how many developers are moving towards non-Microsoft platforms in their app deployments.

It was the second time today that de Icaza appeared on the keynote stage. Earlier he stood there with Anders Hejlsberg, the author of C#.

image

It has been a long journey, from the time when Mono (the open source implementation of .NET founded by de Icaza) was viewed with distrust by Microsoft (as far as I could tell), as an open source competitor to the official version.

Now there is talk of whether Microsoft might acquire Xamarin – of which there is no news here at Build, I should emphasise.

What is a Universal Windows App?

At its Build developer conference in San Francisco, Microsoft has announced a new kind of Windows app: a Universal App. In fact, you can download the latest Visual Studio 2013 update (Update 2 RC) and

image

A Universal App runs on both Windows Phone 8.1 and Windows 8.1. But what is it really?

The place to start is with the runtime. In Windows Phone 8, Microsoft migrated the kernel in Windows Phone from the cut-down CE version of Windows, to the same kernel used by desktop Windows. However the app runtime in Windows Phone 8 remained Silverlight, Microsoft’s Flash competitor which was originally designed as a browser plug-in.

In Windows Phone 8.1 Microsoft has taken the next logical step, and ported the Windows Runtime (WinRT) to the phone. WinRT is the runtime behind the Metro/Modern/Store App environment introduced in Windows 8.

A Universal App runs on WinRT. This means that Windows Phone 8.1 supports the same variety of development options as Windows 8: XAML and C#, XAML and C++, HTML and the WinJS Javascript library (now open source), and DirectX for games.

The port is not 100%; there are some platform-specific APIs. Apparently compatibility is about 90% in terms of APIs available.

That said, a Universal App is not a universal binary. Apparently you can have a universal binary, but it is not the approach Microsoft is taking. A Universal App is a project type in Visual Studio.

image

When you create a Universal App you get a project with multiple targets.

image

By default you get two targets, but we have also seen Xbox One as a target, and conceptually we could see more: maybe Xamarin might extend it to support iOS and Android, for example.

The way this works is that at compile-time any code (which can include XAML and project assets such as images as well as C# code) that is in the Shared project gets merged into the target-specific project.

This means that a Universal App could contain very little shared code, or be almost entirely shared code. This is a developer choice.

Separately, Microsoft has now enabled an app identity to run across multiple Windows platforms in the Store. This means a user can purchase an app once for multiple platforms. However, this is more a business than a technical feature. It would be possible for the developer to offer a multi-platform app in the Store, but keep the development for each platform entirely separate.

That said, the shared WinRT aspect means that code sharing in a Universal App is very feasible. Most if not all non-visual code should work fine, and XAML experts will be able to share most of the UI code as well, thanks to the flexibility built into the XAML UI language.

That is the good bit. There is a problem though. Neither the Windows Phone app platform, nor the Windows 8 app platform have been hugely successful to date, but of the two, Windows Phone has fared better. There are now 500 new apps per day for Windows Phone, we were told here at Build.

Unfortunately, porting those Windows Phone apps to become Universal apps is not easy. Developers have to port their app from Silverlight to WinRT, before they can add a target for Windows 8. They will also need to maintain the old Silverlight app for users with versions of Windows Phone earlier than 8.1. Nokia has promised to offer upgrades for all Windows Phone 8 Lumia models, but that will not the base for all Windows 8 phones out there, and as ever operators have a role here.

Life is easier for Windows 8 app developers who now want to support Windows Phone 8.1; but there are not so many great Windows 8 apps for which Windows Phone users are anxiously awaiting.

Still, the Universal App approach makes perfect sense for the future, once Windows Phone 8.1 is established in the market. It also makes sense for enterprises with internal apps to deploy for mobile and tablet users.  

Saving Windows the sequel: the Return of the Start

Day one at Microsoft’s Build conference in San Francisco was Windows client day – including Windows Phone as well as full Windows. Two slides made the biggest impression on me. One was this one, the return of the Start menu to the desktop, and a Store app (the Mail client) running in a desktop window:

image

The other was this: Office redone for the Metro, sorry Modern user interface:

image

Note that Touch Office will run on Windows Phone as well as on full Windows. Microsoft has ported most of the Windows Runtime (WinRT), the software engine that runs the Modern UI, to Windows Phone. The new Office is written in XAML and C++ so will run on both platforms.

Has Microsoft backtracked on the Windows 8 concept championed by former Windows VP Steven Sinofsky?

To some extent it has. Sinofsky’s Windows 8 was a purer conception, in which the whole focus is on the Modern environment and the desktop is presented like a legacy component, an app within the environment that happens to run all your old stuff.

Users rebelled, businesses swore to stick with Windows 7, and Microsoft has been gradually unpicking bits of it to make it more palatable to existing users. In Windows 8.1 we saw the return of the Start button and an option to boot directly to the desktop. In Windows 8.1 Update 1 we see a window bar appear across the top of Store apps, when the mouse is at the top of the screen, Store apps on the desktop taskbar, and the taskbar running at times across the Modern UI.

The security boundaries are getting slightly eroded, with an option for side-loaded apps (mostly the realm of enterprise deployments) now able to escape the sandbox and run legacy code.

Windows 8 vNext goes further. Store apps in windows: is there anything left of Microsoft’s tablet platform?

Well yes, there is. Store apps will still run primarily full-screen, and more important, will still use the new controls – menus, buttons, lists – that can be operated easily with touch. They still use the blocky “Metro” design concept, which for all its faults (it is not the most beautiful of UI concepts) is easy to operate without mouse or keyboard.

The other perspective on Microsoft’s shifting approach to the Windows client is that it is putting all its energy into promoting these modern apps.

Sinofsky’s idea was to push users into the Modern environment by making it the heart of Windows 8 – the Start screen. That did not work, so now Microsoft is taking a gentler approach but with the same goal in mind. If users are working mainly on the desktop, the argument goes, we will bring the apps to them there.

Windows 8.1 Update 1 discreetly plants a link to the Windows Store on the desktop taskbar, making this point perfectly.

For users who work on the desktop, Store apps will now be more visible, and more appealing again once they run in a desktop window.

For developers, there is another big change. They  can now target both Windows and Phone with a single app project, called a Universal App, so the effective size of the target market, though still small compared to Android and iOS, has significantly increased. Users can buy an app once in the Store and run it on both platforms.

The Universal App can be further extended to Xbox One, which also includes WinRT.

It is all about the apps – as it always was. If developers support Microsoft’s app ecosystem with renewed vigour following these changes, the future of Windows in the new mobile world does look brighter.

The forthcoming Office, you will recall, is also a Store app. You will finally be able to get real work done in the tablet environment.

Microsoft has not backtracked, in the sense that we are not hearing at Build about a renewed focus on the desktop. Rather, we are hearing about a more integrated approach to supporting both desktop and Store apps in Windows, but with the same goal as before, to make Windows an operating system fit for purpose on tablets.

It is worth recalling that Windows 8 was not only about supporting touch. The WinRT environment is also about security, where apps are sandboxed, and easy deployment via the Windows Store. This way Microsoft can prevent Windows from being wrecked by malware and other unwanted software.

What of Windows RT, the ARM version? With Office coming to the phone, I am more or less convinced that the next tablet-only Windows devices will be based on Windows Phone rather than Windows RT. You will have Office, but not the desktop, for better or worse. But no such announcement has yet been made.

Microsoft Build Sessions published: Windows Phone XAML and HTML/JS apps, new Azure APIs and more

Developing for Windows Phone is now closer to developing for the Windows 8 runtime, according to information from Microsoft’s Build sessions, just published.

Build is Microsoft’s developer conference which opens tomorrow in San Francisco.

image

Building a Converged Phone and PC App using HTML and JavaScript states that “An exciting part of Windows Phone 8.1 is that you can now start building applications natively in HTML and JavaScript.”

Other sessions refer to the Common XAML UI Framework, which seems to refer to a shared UI framework for Windows Phone and WIndows 8, but using XAML rather than HTML and JavaScript.

This is in addition to Silverlight, not instead, judging by this session:

We’ve been doing a lot of work with new converged XAML app support on Windows Phone 8.1, but what about legacy Windows Phone Silverlight XAML based apps?  Come learn about all the new features we’ve enabled with Silverlight 8.1.

Microsoft has also come up with new APIs for applications that integrate with its Azure cloud platform and with Office 365. The Authentication library for Azure Active Directory lets you build both Windows and mobile applications that authenticate against Azure Active Directory, used by every Office 365 deployment. There is also talk of using Azure for Connected Devices, meaning “Internet of Things” devices using Azure services.

Some other sessions which caught my eye:

Connected Productivity Apps: building apps for the SharePoint and Office 365 platform.

What’s new in WinJS: the road ahead. XAML vs HTML/JS is a big decision for Windows developers.

Anders Hejlsberg on TypeScript

Automating Azure: “The Azure Management Libraries and Azure PowerShell Cmdlets allow this type of automation by providing convenient client wrappers around the Azure management REST API”

Authentication library for Azure Active Directory: The Active Directory Authentication Library (ADAL)

Panel discussion on desktop development: is there a future for WPF? Maybe some clues here.

Miguel de Icaza gets a session on going mobile with C# and Xamarin. I recall when de Icaza ran sessions on Mono, the open source implementation of the .NET Framework which he initiated shortly after Microsoft announced .NET itself, in nearby hotels at Microsoft events; now he is inside.

Learning from the mistakes of Azure: Mark Russinovich on what can go wrong in the cloud.

Looks like both cloud and apps for Windows Phone/Windows 8 are big themes at Build this year.

Entering Microsoft’s XAML labyrinth: is it worth it?

I spent some time at the weekend working on a Bridge game for the Windows Store. I am writing it in XAML and C#. The UI is hardly demanding, given that Bridge is a card game, but it has made me take a fresh look at XAML, the markup language for a Windows Store App user interface (unless you use HTML and JavaScript). XAML is also used in Windows Presentation Foundation and in Silverlight/Windows Phone.

As part of the game, the user selects a “bid” which consists of a number from 1 to 7 and a suit of cards (or double, redouble or pass). Most bridge games show this as a grid though functionally it is like a combo-box (choosing from a pre-defined range of options).

Naturally I looked for the easiest way to accomplish this. The solution I came up with was to nest TextBlock controls in Border controls in Grid cells. Then I wrote C# code that detects which cell the user taps and updates the background of the selected Border accordingly.

image

I have in mind to replace the text with graphics and make the numbers a bit smarter at some future date. My solution works fine; here it is at runtime:

image

At the weekend I happened to be chatting with a developer more expert in XAML than myself, who told me I had done it wrong. In XAML everything should be in Style definitions. I should use a ListView and design it in Blend.

Well, I knew that I had somewhat subverted how XAML is meant to work, so I sat down to investigate this different approach. A ListView looks nothing like what I want out of the box.

image

However, with the magic of XAML it can be transformed. I made the ListView horizontal by defining an ItemsPanelTemplate in Application.Resources:

<ItemsPanelTemplate x:Key="ItemsPanelTemplate1">
  <StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>

and adding 

ItemsPanel="{StaticResource ItemsPanelTemplate1}

as an attribute of the ListView.

Then I added an ItemTemplate to draw the kind of block that I wanted:

<ListView.ItemTemplate>
    <DataTemplate>
        <Border BorderThickness="1" Height="130" Width="130" BorderBrush="Black">
            <TextBlock FontSize="24" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center"
                       Text="{Binding Name}" Foreground="Black" />
        </Border>
    </DataTemplate>
</ListView.ItemTemplate>

Note that I am using a DataTemplate because the ListView is bound to an ObservableCollection in the proper XAML way.

At this point I am close to what I want – never mind that the numbers are missing, they can easily be added with a second ListView:

image

However I do not want that little tick mark appearing, the selected background colour is not to my taste, and the spacing of the items is wrong. How do I fix that?

My search led me to this post which explains a far-from-obvious series of steps you can take in Blend. The steps did not quite work for me but got me on track to create a new Style resource which I called ListViewItemStyleNoGlyph and which lets me adjust the margin and also a previously hidden property called SelectionCheckMarkVisualEnabled. Blend generated a substantial block of code for this:

image

This has helped and now my ListView looks like this:

image

Well, it is nearly there and I can see that with a bit more effort I can get what I want. Even so, I am beginning to wonder whether my initial approach, in which I understood all the code, had advantages over this exploration into the labyrinth.

Is XAML well loved out there? I came across this post by Paul Stovell from a couple of years back which seems relevant. “I’ve lived and breathed the technology for the last six years”, he says, but writes:

What’s disappointing is that WPF started out quite positively during its time. Concepts like dependency properties, styles, templates, and the focus on data binding felt quite revolutionary when Avalon was announced.

Sadly, these good ideas, when put into practice, didn’t have great implementations. Dependency properties are terribly verbose, and could have done with some decent language support. Styles and templates were also verbose, and far more limited than CSS (when WPF shipped I imagined there would be a thousand websites offering high quality WPF themes, just like there are for HTML themes; but there aren’t, because it is hard).

Data binding in WPF generally Just Works, except when it doesn’t. Implementing INotifyPropertyChanged still takes way too much code. Data context is a great concept, except it totally breaks when dealing with items like ContextMenus. ICommand was built to serve two masters; the WPF team who favored routed commands, and the Blend team who favored the command pattern, and ended up being a bad implementation for both.

Stovell mentions the verbosity of XAML, and that it is hard, both of which sound right to me. He contrasts the way ASP.NET has evolved, with ASP.NET MVC a great improvement on web forms. Read the full post for more detail.

It seems to me that XAML does offer much that is wonderful: flexibility, capability, and the ability to separate presentation from data. At the same time, neither XAML nor Blend are intuitive tools for developers; they may make more sense to designers, but it seems to me that removing a tick mark from a ListViewItem should be more straightforward. Perhaps it is, in which case there is a failure of documentation or tooling rather than functionality, but it makes little difference to the developer.

SQL Server 2014 is done: Hekaton, Azure integration

Microsoft has released SQL Server 2014 to manufacturing (an odd phrase in these diskless days) but which signifies that it is code complete for the initial release. General availability is April 1st.

What do you do if hardware trends enable you to stuff vast amounts of RAM into your server, along with many CPU cores? The answer is that you optimize applications to work mostly in RAM, with disk important as a persistence layer. This contrasts to the approach when you have large amounts of disk space and little RAM, when you focus on loading only as much data into memory as you absolutely need.

The implications for a database server are profound. Instead of a logic that goes something like “read from disk, do something, write to disk” you can address the data directly; it is just a memory pointer.

Now combine that with stored procedures compiled to native code. Performance leaps up, and by much more than you get simply by caching data in RAM, or using fast SSD storage, but still using the old disk-based approach in the database engine.

This is the reasoning behind “Hekaton”, properly known as In-Memory OLTP (online transaction processing), which is a new in-memory database engine that comes with SQL Server 2014.

It is fully integrated. You just have to add a filegroup to a a SQL Server database with the keyword CONTAINS MEMORY_OPTIMIZED_DATA and then create a table with the keyword WITH (MEMORY_OPTIMIZED=ON). And for the stored procedures, use WITH NATIVE_COMPILATION.

The speed-up is as great as you would expect. I have seen demonstrations of 30x or more performance increases, like this one in a demo based on one from the SQL Pass conference, but which I did for myself in one of Microsoft’s “Hands On Labs”:

image

In another demo, on an Azure VM, I got a speed up of 7x. Only seven times faster! Still, hard to complain about those sorts of numbers.

Unfortunately, in-memory OLTP is spoilt by some rather severe limitations in this release. The first problem is that a combination of the need to support native compilation of stored procedures, and other limitations, means that only a subset of T-SQL (the query and management language of SQL Server) is supported. You can see the list of what is not supported here; and it is depressing reading, with lots of keywords that you likely do use at the moment; even IDENTITY is on the list of what does not work.

Another issue is that the ability of In-Memory OLTP to take advantage of hardware is not as extensive as you might hope. Lead program manager Kevin Liu told me at a recent press workshop that the team recommends restricting total data size to 256GB, and that the recommended number of CPU sockets is two. You can get servers today with much more memory and more sockets. It gets complicated though: in a multi-socket server memory has processor affinity and there is a thing called NUMA (Non-Uniform Nemory Access) that describes the way memory is shared between processors.

According to Liu, Microsoft expects to lift these limitations in future releases, as well as improving T-SQL support, but things like this remind you that it is a version one release.

What else is in SQL Server 2014? There is some neat Azure integration, including a managed backup tool that is almost one click to have your data backed up to Azure storage; a brilliant facility for small businesses. You can also use Azure for high availability, creating always-on replicas in Azure VMs.

Data warehouse users will like the new clustered columnstore indexes, which allow you do use a column-oriented table structure for much faster processing of typical report and analysis queries. Columnstore indexes first appeared in SQL Server 2012 but were not updateable. Now they are.

SQL Server is well liked, licensing hassles aside; and even on licensing, Microsoft can always point at Oracle and claim, rightly, to be cheaper and less complex. It has earned a reputation for solid performance. SQL Server 2014 looks as good as ever, even if the management tools now look rather dated – the shell for SQL Server Management Studio uses an old version of Visual Studio, which is one of the reasons. I also suspect the SQL Server team lacks a dialog designer, but doubt that the average database admin cares one jot.

That said, it is difficult to describe this as a must-have upgrade, unless you can make good use of “Hekaton” in-memory OLTP. The porting effort will be worth it presuming you can get it to work. One of the good fits for the technology is managing web app session data, or, as in the example above, rapid processing to display recommendations or customisations on a web site.

I can imaging though that many users will look at Hekaton and decide that it is too much work or too immature for immediate use. What is left for them, apart from some nice Azure integration?

Not a huge amount, it seems to me, making this to my mind a transitional release.

Are you planning to upgrade? I would be interested to know your reasons why or why not.

X is for Xamarin: One company that is pleased to see Nokia X

Xamarin, which provides cross-platform development tools for targeting iOS and Android wtih C#, is not exhibiting here at Mobile World Congress in Barcelona, but does have a presence for meetings, and I caught up with Joseph Hill who is Director of Developer Relations.

Xamarin has just announced a joint SDK with SAP along with some SAP-specific support in its cloud testing service; but Monday’s announcement of Nokia X, Android smartphones from soon-to-be-Microsoft Nokia, was even bigger news from Hill’s perspective.

If you are a Windows Phone developer with apps written in C#, Xamarin gives you a way to port your code to Nokia X. Apparently Nokia itself has taken advantage of this to port Nokia Mix Radio, as described by Nokia’s developers here. Nokia also used MVVM Cross in order to take cross-platform abstraction beyond what Xamarin itself gives them (Xamarin is deliberately restricted to non-visual code).

Nokia states that it will do all future development using Microsoft’s Portable Class Libraries, and is also refactoring existing code:

The final step in our journey towards the common architecture is to throw out the legacy code from the Windows Phone and Windows 8 apps so they’re stripped back to existing PCL shared assemblies and then integrate them with our fully shared codebase. Now that the Nokia X has launched that’s the next major goal we’re striving towards and work begins now.

I imagine that Xamarin could prove useful in some of Microsoft’s other internal projects as it prepares for a world in which there is an official Microsoft Android platform.

As an aside, it seems to me unlikely that Microsoft will do anything other than run with Nokia X after the acquisition. Microsoft is supporting Nokia X with Skype and OneDrive, which is an indication of its attitude.

New features in Windows Azure, including web site backup, .NET mobile services

Microsoft has announced new features in Windows Azure, its cloud platform, described by VP Scott Guthrie on his blog.

Aside: I agree with this comment to his post:

Thank you Scott for update. I wish dozens of MS folks and MS representatives would have a clue about Azure roadmap to help businesses plan their release schedules / migration plans. Till that happens, this blog will remain the main source of updates and a hint of roadmap.

The changes are significant. ExpressRoute offers connectivity to Azure without going through the public internet. Currently you have to use an Equinix datacentre, Level 3 cloud connect, or an AT&T MPLS (Multiprotocol Label Switching) VPN. For enterprises that can meet the requirements and who are wary about data passing through the internet, or who want better connectivity, it is an interesting option.

Next up is backup and restore for Azure web sites. Azure web sites are a way of deploying web applications, ranging from free to multi-instance with automatic scaling. You need at least a Standard site for serious use, as I explained here.

Now you can set up scheduled backup for both the web site and a supporting database. The feature is in preview but you can try it now using the Azure web management portal.

image

I noticed a couple of things. One is that the storage account used must be in the same subscription as the web site. I also spotted this warning:

image

which states that “frequent backups can increase you database costs by up to 100%”. Still, it is a handy feature.

Azure mobile services, designed to supply data to mobile apps, has been extended to support .NET code (previously you had to use Javascript). If you download the code, notes Guthrie, you find that it is  “simply an ASP.NET Web API project with additional Mobile Service NuGet packages included.”

Mobile Services also have new support for notification hubs and for PhoneGap (a way of building mobile apps using HTML and JavaScript).

Another feature that caught my eye is easy linking of third-party apps to Azure Active Directory (which is also used by Office 365). For example, if you are struggling with SharePoint and its poor clients for Windows, iOS and Android, you might consider using Dropbox for business instead. Now you can integrate Dropbox for Business with your Office 365 user directory by selecting  it from the Azure management portal.

image

Frank comments from Microsoft Product Manager on the Visual Studio 2012 user interface mess. “Secrecy is bad – it lets problems fester”

When Visual Studio 2012 was first previewed, it presented a new IDE style which featured all-caps menus and a mainly monochrome icon set which most developers disliked; the icons were too hard to distinguish. Microsoft has tweaked the design, restored more colour, and I hear fewer complaints today, but that essential design approach remains in Visual Studio 2013.

image

Microsoft product manager Brian Harry has made some frank comments on what happened, in a series of comments beginning here. The comments were made last month, but I had not seen them until today and consider them worth highlighting.

“The implementation of the new UI in 2012 was a mess” says Harry, explaining that the team assigned to create the new look was too small. Worse, it was too secret. “To aggravate this folly, there was a bit of a "cone of secrecy" around the new UI because we didn’t want it "leaking".  Even I didn’t get to see it until months into it,” he writes.

After a strong negative reaction to the preview, “we eventually came to realize we had a crisis on our hands,” says Harry:

Could we have reversed direction, of course.  We debated it vigorously – and for a while, I have to admit, I wasn’t sure.  Ultimately, I concluded that the only way was forward (not that it was actually my decision but I’m just stating my position).  I know some people will disagree with me emphatically and I respect that.  I am in the camp of people who generally like the new UI style.  I know some people think there aren’t any people in that camp but I’ve seen the survey’s and there actually are quite a lot of them.  I do believe there is continued room for improvement and we made some improvements over the past year (the Blue theme, for instance, is very popular – actually Dark is too; Light, not so much).  I’ve gotten completely used to all CAPS menus.  They never bothered me much and now, it just looks normal to me.  Contrast has gotten better.  Icon color has gotten better.  Icon shapes have gotten better.  I’d, personally, still like to see more liberal use of color (Team Explorer is mine and you can see we are a bit more liberal with color than much of VS :))  But all in all, I like the new UI and generally, people internally are happy with it too.

It was a journey and we made mistakes a long the way.  I think the biggest learning was – Don’t kid yourself into thinking you can do a ripple effect feature like that "on the cheap".  Another learning, for me at least, is secrecy is bad – it lets problems fester until they become crises.  Share, share, share.  The feedback is critical to course correction.

Now some observations of my own. My sense is that the flaws in the design stem from over-application of the content-first, “immersive UI” concept which is also seen in Windows 8 “Metro” or “Modern” apps. This concept makes perfect sense if you are browsing the web or reading a document: you want the screen furniture and tools to get out of the way as far as possible. If you are creating content though, the tools become more important. Arguably they become part of the “content”, if you define that as what you are focusing on.

I see the same design error in Microsoft Office 2013, which has a washed-out UI similar in many ways to that in Visual Studio 2012. If you are using Office mainly to consume content, it makes sense, but Office is a content creation tool, and the icons should be more prominent.

I am not sure of the logic behind all-caps menus except that they look vaguely modern and industrial; everybody knows that ALL CAPS is harder to read than lower case or mixed case, so this makes little sense to me.

In neither case is it that big a deal: I can still work productively and you get used to the UI.

Finally, you can tell from Harry’s remarks that the development team at Microsoft went all-out to try and please developers while also satisfying whatever corporate goals (misguided or not) were behind the new style. Kudos to them.