Visual Studio 2017 Mobility: Use what you know

It can be quite daunting to try to decide what is the best language for a particular app you have in mind, especially when writing mobile apps. Should you write a shell wrapper that resides on the device and does all the heavy lifting by calling your web application and processes? Or should you write it in the each native language, like Swift and Java, that stores all of the data and does all the processing on the device? That's a heck of a lot of code and rewriting the same thing over and over.  Plus what kind of devices would you be restricted to to be able to run it based on the computing power needed? Or maybe you think you want to write it using response web frameworks. More and more, a hybrid model makes more sense, one that stores some of the data and does some of the computing on the device, but also utilizes web calls to do the heavy lifting.

I was honored recently to be able to speak at the Los Angeles Visual Studio 2017 Launch Party on this very topic.

Write what you know.

If you've ever tried to write that Great American Novel or taken any kind of writing class, you've probably heard this advice more than a dozen time. Write what you know.

This is just as important when it comes to writing code, even when crossing platforms.


If you are a C# developer, you can certainly write for the Windows platform with no problem. You should know though that you can use Xamarin tools to build applications to all types of devices and operating systems, like iOS and Android, using C# for the backend processing and either building the UI using native languages or Xamarin Forms to do it using XAML. And since Microsoft acquired Xamarin last year, its tools and functionality have been available as part of Visual Studio. It is even available as part of the free version of Visual Studio known as Community.

If you are a web developer, you can use your HTML, CSS and JavaScript skills to write apps using Visual Studio 2017 and TACO (Tools for Apache Cordova). Add to that the use of PhoneGap and the Ionic, a JavaScript framework for mobile to the cocktail and you are humming on all cylinders.

VS 2017 Mobile Center

Lastly, take a look at the new Visual Studio Mobile Center, currently in Preview. This is your one-stop shopping portal for all of those things that you used to have to discover, consume and manage separately, bringing them all together under one roof for the mobile developer. Need to be able to manage Application Lifecycle activities, for build, test and distribute? Got it! Need to authenticate without changing your backend? Or use Facebook, Google, Twitter or a Microsoft Account to authenticate? Got it! For testing and running analytics like for crashes (backed by HockeyApp's crash reporting features), events metrics, and session metrics like how long a person is in your app (backed by Xamarin Test Cloud and Insights as well as Azure Mobile Experience), using the Mobile Center Analytics suite is the ticket.



Mobile Center

Mobile Center Preview Link

Tools for Apache Cordova (TACO)

Ionic 2 Templates for VS2017

NPM Task Runner

Visual Studio 2017 New Debugging Features

Let's face it debugging your code isn't sexy. As coders, we probably spend the majority of our time debugging our code rather than actually coding. Coding means making money. Debugging usually means not making money. So there can be little fanfare for those that add features to debugging tools. However, I would say that these are the unsung heroes. With the release of Visual Studio 2017, there have been quite a few improvements and new features added to our debugging arsenal. I will only highlight a couple, but be sure to check out Kaycee Anderson's posts over on the Visual Studio blog for more information.

The New Exception Helper

VS2017 Exception Helper

There's nothing more frustrating when you are trying to find the exact cause of errors in your code then having to step through layers and layers and layers of nested trees of information to find that one nugget of information that will give you the answer, that one "ah ha" moment of clarity. The new Exception Helper removes all of those layers and surfaces the most important information up to the top and presents it in a dialog box for easy access. Additional, you can set the Exceptions settings, you control what parts of your code will throw exceptions and what parts won't. This way if you have a troublesome section (or one that a particularly messy colleague that you want to skip, you can create an exception setting for it so that you can get on with the code you want to really work on. This is especially useful for those parts of your code that you always know you are going to hit exceptions, such as signon or authorization code.

Diagnostic Tools Window Updates

VS2017 Diagnostic Windows UpdatesA new summary tab has been added to the Diagnostic Tools Window that let's you view the number of Application Insights and UI Analysis events (for UWP apps only) that occurred in your application. Also use the new window updates to take a memory snapshot of your heap as well as enable and disable CPU profiling

Performance Profiler Updates

The Performance Profiler can now attach (and re-attach) to a running process, saving valuable time starting and stopping and restarting your sessions to get the information that you need.

The CPU Usage Tool has several improvements including better external code support giving you better insights into the costs of library and framework functions when called by user code. Also the Functions view will now rank functions by their CPU cost.

Lastly, let's not leave off the new Click to Run feature. This works just like it sounds. Instead of setting endless breakpoints in your code (only to forget about them later), simply click on the green icon next to any line of code VS2017 Run to Click to run the application up to that point. This makes it really easy to step into and out of conditional sections of your code.

I hope this has given you a good taste of the latest improvement to something that we tend to take for granted, a robust debugging toolset within Visual Studio 2017.

Speaking at the Visual Studio 2017 Launch Party in Los Angeles

Visual-Studio-97 Happy 20th birthday to Visual Studio!!!

In 1997, I was working at a software company - one that coincidently was later bought by Microsoft - that was shipping their product to over 68 countries world-wide working on modules that would allow for the support of multi-currency transaction booking and financial statement translation. We were writing that product in both C++ and Visual Basic 5.0. Back then we supported both a Btrieve and SQL Server database backend.

The virtual launch of Visual Studio 2017 will happen next week on March 7th & 8th. Be sure to tune in here for a live feed.

As part of the birthday celebration, Microsoft is holding Launch Parties all over the country. Here are the dates for those of you on the West Coast.

3/9/2017 Boise, ID 3/10/2017 Denver, CO 3/14/2017 Lehi, UT 3/15/2017 Portland, OR 3/16/2017 Phoenix, AZ 3/20/2017 Los Angeles, CA

I'll be speaking at the Los Angeles, CA Launch Party at the Microsoft office on the Mobile track and hope to see you there. I'm excited and honored to be able to take part in such a great event. Other tracks highlight the updates, improvements and enhancements for debugging and testing tools as well as C# and web development.

Get ready to break out the balloons and cake!

WOOT! //Build 2017 Here I come!!

Build2017Hey there! So excited! I'm posting this as I just successfully registered for the Microsoft //Build conference in Seattle in May. Did I mention I'm soooooooo excited! This conference consistently sells out within hours of registration opening. Last year, I was excited by the introduction of Conversations as a Platform. I still am excited about it, even though I've had little time to explore it this year. There are hints of free time coming up in May where I hope to explore this and other ideas that I gather at this conference. Maybe I'll see you there!


Impressions from //Build 2016: Putting the 'personal' into personal computing

This year marks my 6th year attending the Microsoft //Build conference, the first being //Build 2011 when everything changed -- for me and for Windows -- with the release of Windows 8.0. For those who are not familiar with the conference, //Build is the premier Microsoft Developers conference where Microsoft often makes big and life changing announcements for its ecosystem of developers. For example, in years past Microsoft has open sourced their .NET (Roslyn) compiler right ON STAGE at //Build. Attendance is kept low on purpose (about 4,000), so getting into the event can be tough. This year was no different in that there was an insane number of announcements and introductions at the conference during both of the keynotes. Here are some of the highlights and things that got my attention.


Certainly, everyone was excited to see what the latest progress was on Microsoft's virtual reality headset Hololens. That Alex Kipman and the HoloLens team announced the  official shipping of the product at the conference was even better, with the idea crowdsourced Galaxy Explorer App being available on the Windows Store and all of the source code available on GitHub for all developers to use as a learning tool. You could also say that the much anticipated and hoped for announcement that not only was Xamarin - a widely popular and deeply useful cross-platform mobile development tool purchased by Microsoft in February  - was now going to be included in Microsoft's MSDN subscriptions as a native part of Visual Studio, including it's free Community version of Visual Studio, brought down the house. But of course Microsoft took it a step further and Open Sourced all of Xamarin's source code to the masses, something that has been speculated that they just purchased for between $400-500 million, so that the developer community could help build and grow it. CRAZY! There were also a lot of other great announcements and highlights around new services from the Microsoft Azure cloud platform (Functions, IoT Suite, Service Fabric general availability, and Container Service), Office 365 (Group  Connectors, Skype for Business Web and Mobile SDK, and new(ish) Microsoft Graph beta APIs) and the Xbox Dev Mode release.  I can guarantee that some of these I'll be going more in-depth in future blogs. If you just look at the individual pieces, the individual announcement, you will be missing the bigger, more important vision of the conference.

Don't get me wrong, all of this is exciting in of itself, but there was a foundational shift announcement that really hit me as just as or even more important.  These are the types of things that when I see and experience them, I get that temporal rift flutter in my stomach that everything that I knew or have known about computers and/or the use of technology in our society, in our businesses and in our lives just changed or that is about to. It's been awhile since I've gotten it, so I almost missed it out of neglect and a sense of compliancy. See I am one of those few (at least that will still admit it) that actually LOVES/LOVED Windows 8. No really! I'm not kidding. I've been in the Tech industry for over 30 years now, so I've seen a lot of things come and go as far as trends and the "next big thing". And I've been writing code and doing development on those platforms my whole career.

When I attended //Build 2011, except for a function here or a web service there I'd been out of the code writing full time habit for about 12 years, mostly out of boredom. Writing the same boring app, with the same UI, same user interactions, the same... EVERYTHING... over and over for the desktop just hadn't appealed to me in a very long time. Then by sheer chance I attended //Build 2011 where Windows 8.0 and the immersive, beautiful, design centric, (and imo incredibly visionary and strategically leapfrogging) "Metro" way of writing apps was introduced. Taking the immersive, contextual and important information push to the user instead of them hunting for it kind of app was certainly already taking hold in the mobile world, but no one had really thought of what it might mean on the desktop, business workhorse app kind of level. For the first time in a really long time, my desire to code returned. I started a new notebook to hold the avalanche of app ideas that flooded me at the conference and continued in the months following.  Unfortunately the company's signature app, Office, wasn't onboard with that vision at the time of its release and that contributed greatly and essentially to its demise. To say that I was disappointed in Microsoft's hurried abandonment and backpedalling from that evocative, strategically imperative vision with its next OS release would be an understatement. The app idea notebook started to gather dust again as I focused on bringing most of my ideas to web based apps, like Office 365 Add-ins. We were back to the boring again at the desktop and even the mobile level.

Or at least I thought.

Conversations as a Platform

"The future isn't going to be man vs machine, but man with machines." - Satya Nadella, Microsoft CEO

Windows 8 "metro" apps were all about a single context, meaning that the developer was encouraged to limit the scope of an app to one single task or one single user scenario and make that experience immersive to the user. Instead of mega apps where 100s of tasks and 100s of pieces of information are buried waiting for the user to find, information created by or exposed by the app was pushed to the visual surface with what are called Live Tiles; surfacing important and needed information to a user before they even went looking for it. At this year's //Build, Microsoft's CEO Satya Nadella introduced a new paradigm for app development, one that for me is again evocative, again exciting. Conversations as a Platform.


Apps in the Conversations as a Platform world again consist of single scenario apps, but this time using human language as the new UI layer. These apps, or BOTs as they are known, will interact with the user, other people, and our digital assistants like Cortana and will use cloud microservices to infuse intelligence, meaning and context into all of their interactions. As envisioned, and it is a lofty vision, these BOTs and microservices will help automate the analysis and presentation of information to the user in a way that is meaningful for the interaction or conversation that is happening at any given point in time.

"Conversations as a platform. Taking the power of human language and applying it pervasively to all of our computing." - Satya Nadella

This new way of computing, and of developing apps, was highlighted on stage with Cortana in Outlook, the Just Eat BOT, Skype for Business BOTs, and even the very cool but sort of creepy in how pervasive and helpful it was Starbucks BOT.

As a developer, I encourage you to watch both keynotes from the conference. Also check out the new BOT Framework. Of course start building those BOTs! And check back here to see what I come up with for my own ideas of using this new development platform.


//Build 2016 videos, including the keynotes and most of the sessions:

Microsoft's BOT Framework:

Skype's new BOT SKD:

Contana Intelligence Suite: