I’ve mentioned before that I like to offload some of my development and productivity tasks to Virtual Machines running on Microsoft Azure. On these machines I like to run Visual Studio, Office and any other apps I need so I can be productive anywhere.
One of the apps that helps me be productive is Cortana, so I was pleased to get her up and running on my Windows 10 VM.
Cortana can helpfully give you reminders and recommendations based on location, but can you guess what the problem is when using Cortana on a VM in Azure?
The location services think I am currently located in Redmond, Washington. Oh dear.
The cross devices functionality of Cortana gets very confused because of this. When I’m using my phone she thinks I’m in Leeds, but if I switch to using the VM she thinks I have suddenly appeared in the United States.
I had a think about how best to approach this issue, and currently I’m trying out a solution which seems to work well: using a homemade Fake GPS driver.
I went through the code in the Windows DDK and found an example for creating a GPS driver. Rather than getting the data from a real hardware devices, I hard coded the latitude and longitude. Once I had it set up in exactly the way I wanted, it was just a matter of compiling the C++ for Windows 10 and getting it installed.
Now this Fake GPS driver simply returns the geolocation coordinates which I want, and Cortana thinks that I’m in Leeds. Sorted!
This isn’t a perfect solution. For example you have to switch your OS to run in Test Mode, and obviously the location doesn’t automatically change depending on where you are. However my initial use shows me it’s way more useful than just letting the OS guess the location from the IP address.
If people are interested in trying out this solution for themselves, I’ll share the code on GitHub. It shouldn’t be too tricky to add an interface to set the location as required.
The Build 2015 conference has just taken place in San Francisco.
Like last year, this has been another huge event for Microsoft, and a big deal for the people who build solutions using their technologies.
There have been way more interesting things happening than I can possibly cover in one article, but I have decided to cover the three most important to me:
.NET, Windows and Azure.
An exciting future for .NET and Open Source
The future of .NET is the continued push to an open source .NET Core, which is at the centre of both the latest ASP.NET runtime and the Universal Windows app platform. In the future, this will expand and include other application types. In my opinion, they’ve picked the right place to start.
Applications running on the CoreCLR can be developed and deployed on cloud and server-based infrastructures running different operating systems including Windows, Linux and OS X. I have been watching the development efforts on GitHub for a while now, and I’ve set it up on my own machines running both Windows and Linux. It sure is a sight to see.
As well as the core runtime itself going open source, other technologies like Roslyn have enabled products that many wouldn’t have guessed would see the light of day. Having an open source compiler platform has enabled Visual Studio Code – a new cross platform text editor with Intellisense – to be built.
I was lucky enough to see Visual Studio Code before it was announced, and it changed the way I thought about collaboration with Mac users instantly. I’ll have more on this new text editor soon.
With the RC of Visual Studio 2015 there have been some big improvements in the languages supported including both the more traditional C# and Visual Basic, and (my personal favourite) F#.
The Visual F# improvements in ‘every day’ activities are dramatic for anyone who has been using the language. This is all thanks to the new open source attitude, and the amazing community around F# who have helped to develop the Visual F# tools on GitHub.
This new world of cross-platform and open source .NET technology is going to enable some amazing scenarios for .NET developers like myself.
Universal Windows apps scale from the smallest phones and Internet of Things devices up to the large screens of the Xbox One and the Surface Hub. The most ‘universal’ of these apps are built with just one binary which includes a scalable UI. This allows you to even have the ‘desktop’ app experience when used on a landscape 5.7 inch phone, or when plugged into an external screen using an amazing new Continuum for Phones feature.
For app developers there are some interesting (and controversial) new ways for software venders to build for Windows. The biggest of which are the bridges from Android and iOS. These two are extremely important for the phone and work especially well for iOS games which donâ€™t rely too heavily on the operating specific UI elements. Combined with the bridges for ‘classic windows’ apps and websites using Microsoft Edge, the Store should get a lot more apps on this Windows 10 wave of releases.
From a user’s view, Windows 10 has really rounded out, with the latest Insider Preview feeling a lot more polished than any of the previous builds. Seeing HoloLens run standard Windows Universal apps was a big deal too.
I’ll have more thoughts on these in the future as the Insider Preview continues, and more information for HoloLoens is released at E3.
h3>Microsoft <3 Docker and other Azure improvements
Azure, and the Microsoft Cloud in general, continue to amaze me. Microsoft has managed to embrace this new way of building (and selling) software in at breakneck speed. Additional services were added throughout the platform all the way from storage and networking, to analytics and machine learning. Way too many for this article.
Two of the biggest highlights were the ability to run the complete Azure Stack locally, and Azure’s new Data Lake features too, something which Amazon has had a lot of success with.
For me though, the most interesting changes were around Docker support across Windows and Azure. Docker has been on my radar for a while, but I have yet to use it in production. I have plans to do so in the not too distant future.
For the last six months I’ve been using an Windows 8.1 virtual machine running in Microsoft Azure for various day-to-day developer activities. It has ended up being extremely useful to have a full Windows machine that’s accessible from any place and any device.
The VM I’m using is A2 Standard and running Windows 8.1, set up with my Microsoft account so all my apps are working on it properly – from Windows Store to Office 365.
Most importantly it also provides an always-on development platform for all my applications even when my main PC is being reinstalled with the Windows 10 technical preview builds. I have access to Visual Studio, F# Interactive, Node.js and all my usual scripting tools in PowerShell at any time.
The remote desktop client for Windows Phone is truly brilliant too, with support for a virtual mouse pad enabling me to get access to applications like Visual Studio or Outlook at any time. True it’s a little fiddly, but it’s really powerful.
Azure’s Virtual Machines suite me as I have a number of credits every month, and nowhere at home to keep a server that could be on 24/7. Overall I’m really pleased with the service.