Tim Murphy's .NET Software Architecture Blog

April 2015 Entries

Build 2015: Day 1 Keynote


Build is always one of the most exciting Microsoft conferences.  Have of the fun is trying to guess what will and won’t be announced.  Will the analysts be right or will there predictions be off in left field?  So what happened day 1 this year?  Of course that depends who you ask, since no one goes to the same sessions or sees things through the same filter.  This post will cover the keynote and a future post will cover the day 1 sessions.


The keynote is always a rollercoaster.  Anticipation.  Surprises. Disappointment.  This rollercoaster was operated by a cast of most of us are familiar and I run it down as we go.

The first disappointment came before the session started.  The line to get into the room snaked up all three floors of the Moscone Center.  I’m not sure what the delay was, but It took forever to get us in.  Little things can put a damper on the experience.

The presentation began with a feel good fluff piece.  At one time it would have been impressive to have someone create a pen driven app to take music notation, but at this point I’m not wowed.  I’m not trying to belittle his work, but I think they should have found something that really showed off new features of Windows.

From that point Satya Nadella laid out three areas of transformation that they would cover today: Cloud, Office and Windows.


Bring on the Gu!  Scott Guthrie came out to lead the charge for the cloud announcements.  I was impressed by the facts he presented:

  1. Azure has more data centers than Google and Amazon combined
  2. 500+ new features have been added to Azure in the last 12 months
  3. 90k new Azure subscriptions per month
  4. Microsoft is the only company with an offering that combines both on premises and cloud resources that create a complete solution

Other announcements that I though made an impact include:

  1. .NET Docker packages are able to be deployed to Linux servers
  2. Linux deployments can be debugged via Visual Studio
  3. Introduction of Visual Studio Code edition for Windows, Mac and Linux
  4. Azure Service Fabric
  5. SQL DB now has transparent data encryption, full text search and elastic database pools
  6. Azure Analytics has expanded include the new offerings SQL Datawarehouse and Data Lake
  7. Both Ford and the NFL are using IoT and Azure to collect and analyse data

In all Azure Dominated the keynote.  There is too much to go into the details here, but it is clear that this has become the most important part of Microsoft’s business.


Office almost seemed like an afterthought thrown in to make it look like there was more going on.  It seemed like they rushed through it.  Rob Lefferts came out and quickly how the capability to use the same capabilities everywhere was central.  Every product in the suite is focusing on integration that reminds me of the contracts introduced in Windows Phone and Windows 8.  You can grab contact information from LinkdIn or SalesForce or images from PicHit.me.

When they went into the Office Graph, Delve and the Skype web SDK topics they were moving so fast it was hard to keep up.  They should have either gave them equal time or split them out into their own announcements.


While the Azure announcements impact my job daily, I knew that the Windows announcements would speak to the spirit of Microsoft.  Satya came out saying a lot of the right things.  He spoke about making Windows more personal, having one development platform no matter the device and having one store.  Of course the cynic in me feels that if they wanted Windows 10 to be more personal they would have left the features that were in Windows 8 instead of going back to the Windows 7 way of doing things.

When Terry Myerson came out he was hitting most of the right notes too.  He talked about making the OS the most attractive development platform.  Again, my thought was that more important is to make it attractive to the end users, but that means getting developers and companies to put more top notch apps in the store.  Looking at it that way I’m on board.

He then itemized their promise to the customer:

  1. Apps should be easy to be discovered
  2. Apps should be easy to install and uninstall without junking up your system
  3. Payments need to include multiple method and they should be convenient and trusted
  4. Carrier billing for apps will soon be available and not just for phones
  5. There will be a store for business that will allow for control of app distribution as well as payments by PO

This is part of their strategy to get Windows 10 adopted quickly.  Myerson indicated that they want to have 1 billion (yes billion) users within 2-3 years.  A lofty goal for sure, but if they are going to right this ship that is the type of goals they need to have.

I think many attendees were happy to see universal apps extended to Xbox One during the USA Today demo.  This is something many people have been hoping for.  This was followed by a blitz of four developer announcement.  Each was more impressive than the next, even if most of them work expected.

The first is that web application can be registered with the Windows Store.  Once this is done the web app runs inside an application frame and gains many of the capabilities of a Windows app including features such as notifications and in-app purchases.

Second, bringing Win32 .NET apps into the store.  The main example was Adobe Photoshop.  This is made possible by application virtualization and will keep the ecosystem more reliable because the apps will be isolated.

Ways number three is that now you can reuse you Android Java/C++ code.  This is a better option than the running of Android apps on Windows which everyone had expected.  This allows the app to use the Windows APIs and other goodness, makes life easier for people who write for Android, but doesn’t take away the independent nature of Windows.

The fourth way was the most shocking and garnered the most discussion after the presentation.  You will now be able to bring your iOS Objective C code into Visual Studio and have it work on Windows and use the native goodness.  All four of these are helpful to giving Windows 10 the best chance possible of rising from the ashes that it is in right now.

Then came the announcement all the attendees were waiting for: the give away for the conference would be a HP Spectre x360.  An impressive piece of hardware that we will have to see if it stands up as a development machine.

Joe Belfiore then took the stage, but with less focus on the phone than we are used to.  He introduced an optional feature of Windows 10 that will spotlight features that a user hasn’t tried on their machine yet so that they can learn all the productive features available.  This coupled with the fact that Cortana can now use application contract to perform more operations on your behalf without actually opening the app is a wonderful differentiator for Windows 10.

The we finally got to find out the new name for Project Spartan: Edge.  I can’t even tell you what meaning Joe said it had in their eyes.  All I could think was that I was pretty sure that was the name of the rendering engine under the hood of either Project Spartan or IE.

Joe ended his portion with a demonstration of Continuum for phones.  This give you the ability to turn you phone into a fully functioning work station by adding a second screen and bluetooth input devices.  While I don’t see many scenarios where I would use it the feature could be helpful to a certain segment of mobile workers.

Last came the Hololens.  Alex Kipman and a cast of helpers demonstrated more of the practicle feature.  One that really stood out for me is the “follow me” command where you can have a floating application window like a video follow you and then pin it when you stop.  It was then announced that they had brought hundreds of Hololens devices to Build and you could sign up for a limited number of demos.  This brought an audible groan from the audience who had been hoping to take one home as a give away.


In all the keynote was long (ran over by 30 minutes) but packed to the bursting point as you would expect from Build.  I see promise in the technology that Microsoft is presenting, but it is yet to be seen if they can capture the imagination and wallets of the general public.  Only time will tell.


Nothing but bones

Monsters are an exciting thing to see in a movie.  They are not so thrilling in your application architecture.  I recently came up with (or at least I think I came up with) a term for architectures that are put together with mismatching parts and in ways the software gods never intended: Frankenstein Architectures.  A co-worker then evolved that to Frankentechture.

Of course the designer of a framework or an application platform can’t envision every possible use of their creation.  How do you know then when you are just using it in a new and inventive way and when you are creating a Frankenstein monster?  Read the documentation of the author’s intent, see where it performs best and where the maintenance story is the best and then don’t stray far from those boundaries.

Another thing to think about is if you are using patterns just because you read them in a book and it sounded good?  Are you adding them to the application just because you saw them at the latest conference?  Are you spending days and weeks finding ways to get around the limitations of pattern? Do your developers require a 500 level course to make a simple change to your code base?  If you answered yes to any of these then you might have brought a Frankentechture to life.

There is a time and place for adding complex patterns or work around for a limitation in a framework to your solution.  Before you do that though, ask yourself if the problem might be that you are using the wrong toolset or have wrong design pattern for your situation.  If you can identify this as a possible problem early in the development process your can save yourself a lot of grey hair and your company a lot in maintenance costs.

So my call to action is to question every design decision.  Apply the YAGNI principle where ever possible and don’t add complexity before you have a compelling reason to do so.  Choose the architectural components that work well together and best suit your requirements.  If you do this you can assemble a hero instead of a monster.