Wednesday, 19 October 2016

Talking about Bots – Setting it up

Have you thought about using the Microsoft Bot Framework?  I have!  If you’ve ever wondered, I’m going to try and give you a hand up by pointing you in the right direction.  Maybe give you a few tips along the way and help clarify a few things along the path.

Getting Started

connector-getstarted-create-projectYour first step is to install the Bot Framework Template into your Visual Studio (I’m assuming you have Visual Studio installed already).  I guess the first step is to decide what language you are going to build in.  Because I am a Windows Platform sort of guy, I’m going to use C#, if you are too then it will make this a lot easier to follow along.  You can find the “Getting Started” page with the links at https://docs.botframework.com/en-us/csharp/builder/sdkreference/gettingstarted.html but you can directly download the template from here.  When you look at the getting started document, it does give you most of what you need to get going but ultimately you are going to have to connect a few dots and turn on a few lightbulbs on to get to where you want to go.  Once you have downloaded the template and created your first project, come back here for next steps (not in the above doc)

Creating Your Bot App

Your next step requires you to create a Bot in the Bot Framework.  You are going to have to modify a couple of things in your just created Bot Framework app in Visual Studio based on what you do here.  First, go to http://dev.botframework.com.  You will need to have a Microsoft Id to successful complete this next task.  Click on “Register a bot” to get started.  Don’t worry if you don’t know everything, you can fake it a little bit until you do some other stuff later.  You need to know your bot name and bot handle.  You can makeup stuff here.  You will need to create a BotWebConfigMicrosoft App ID and password, but they nicely give you a button you can press to do that.  Make a note of the App ID and password because you’ll need those in the Web.config file of your bot application.  For the publisher profile, you can fill in most of the URLs with placeholders, but you will need to provide those before going live in any way.  In your Web.config, put the id and password as you see in this picture.  There are security issues with putting ids and passwords in your Web.config but for just playing around locally on your system, its not a problem and security is not part of this post.

Testing Your Bot Locally

Bot EmulatorYou need to install the Microsoft Bot Framework Channel Emulator.  It won’t look as pretty but it will let you see what is going on.  Once you have installed this little emulator, go ahead and start the app in Visual Studio.  This should launch a browser (you can choose which one), make note of the port # in the URL that is loaded.  Now open the emulator and change the “Bot Url” to match the port number above.  Don’t change anything else.  Lastly, paste in the App Id and App Password and you should be good to go.
In Visual Studio, open the “MessagesController.cs” file and put a breakpoint on line 22 (inside the “Post” method.  Now go back to the emulator and Type “Hello” into the message space and hit enter.  You can now step through how the bot responds to the question (it just parrots back what you said with a char count).  Now you can start seriously thinking about what smarts you want to add to your bot using whatever AI you can think of.

Ready for More?

Now that you have a (somewhat) stupid bot, what do you do?  Well, you’ll need to deploy it to an Azure App Service or some other web site if you want the public to get access to it.  You’ll also need to add some brains to it.  Like what happens when somebody says hello.  You know, add a little personality to the game.  More on that in future blogs.

Monday, 17 October 2016

Developer Life Saving 101: Survival Training with Visual Studio Team Service

As discussed in a previous post, disaster can strike at anytime.  Most companies think about things such as protecting documents, insurance for property, fire safety procedures, and other physical protections.  But what do you do about software assets.  Does your company create software?  Even non-software companies often create software.  In-house IT departments will often have utilities and other little bits of code that are really useful in keeping a company operating smoothly and most employees and executives of the company may not even know its being used. 

When Disaster Strikes

My company develops software for ourselves (Windows Store) and for our customers.  Microsoft’s partner program is flexible enough for not only larger Fortune 500 companies to partner with them but also small software consulting firms like ours and everybody can win.  One of the great features of the partner program for us is our Microsoft Action Pack Subscription that provides us countless benefits but the one I want to focus on today is the Visual Studio Team Services (VSTS) account.

Let me go back a bit in time to October 2013 when a fire broke out in the same city block as our office.  The fire was devastating, wiping out half of a city block with buildings dating back as far as 1909.  I was told by some of the firefighters that the temperature at the heart of the blaze was almost 2,700 degrees (does it really matter if it’s Celsius or Fahrenheit?) and steel light poles across the street were melted. Our building, housing our primary offices, were just one building and a good strong wind away from being destroyed.  There was nothing we could do about it at the time… There was, however, something we could do in advance and we did it, have you?

Peace of Mind and Better Software

GitFirst and foremost, as stated previously, was the fact that our vast investment in software development was 100% protected in VSTS, either in Git or Team Foundation Version Control.  A lot of our legacy software was developed using Visual SourceSafe (VSS) which was migrated to Team Foundation Server (TFS) (on-premise) and then up into the cloud with Team Foundation Version Control (TFVC). If you have any combination of Source Control that uses VSS or TFS then migration is pretty painless.  We did it in a day (for four developers).  However, newer product development is now taking advantage of Microsoft’s implementation of Git source control.  Did you know you can run both simultaneously? Git provides a robust team environment for development, when implemented properly and with reasonable processes adhered to by developers. 

Of course, just storing your source code in the cloud isn’t going to get you better software.  It might save your existing software or allow your development team to work remotely should inconveniences occur like a power outage at the office or hardware failure for some reason, but you need tools to help with your process to really make gains in quality that go beyond just hiring great developers.

In my opinion the two best features that improved our software quality and the speed of software delivery are the integrated Testing Tools and Continuous Integration.  Of course, there are lots of other great features including Agile Tools, integrated DevOps and lots more. 

Test, Test and Test Again

testQuality starts at the beginning and begins with the developer.  However, how do you know that your software is solid.  One of the things we teach is to develop unit and UX testing at the same time as the actual software development.  No commits without at least a corresponding unit test being included, which sometimes takes quite a bit of willpower.  That’s great for the developer testing his stuff but how do you know the quality of a commit into your system.  Easy, with VSTS I setup my commit process to force a rerun of all tests when a commit is made on a branch before a Pull Request can be created to merge that branch into the parent.  This essentially puts a double check in place that the code created was of high quality.  Of course, this is dependent on the developers creating the tests in the first place, so test creating must become part of your culture of development.  If I’m creating websites, I can also implement load testing.  Having those tests run in VSTS is just one part of Continuous Integration (CI) that you really want to investigate thoroughly.

Round and Round We Go

VSTSContinuous Integration is part of combination of a whole host of tools available to the developer and to the process of software delivery.  You can have build agents in the cloud automatically build your application with new commits.  Results are provided in an extensive report that tells you if anything went wrong, what work items are included and any code changes and test results you may have.

I had the opportunity to work with some students on a team project.  The Continuous Integration allowed the team to commit bug fixes and new features without worrying about breaking the master build.  No Pull Requests into the dev or master branch were permitted without a new build being completed successfully.  CI did the work automatically.  Nobody had to “remember” to get it done.  On top of the build, CI also executed and reported on all the tests in the software so full regression testing of every committed bit of code was done.

Once all the tests were passed and a Pull Request was completed into the dev branch, CI automatically published the app for our dev team to try out and then when it was rolled to the “staging” branch it rolled out to our customer for review, again automatically, providing very fast turnaround for updates.

We have a pulse

This has all been a great benefit of our partnership with Microsoft.  We are able to deliver higher quality software with less work.  Continuous Integration along with writing and adding tests to our solutions as we go has created an environment where we can deliver great software.  Moreover, with cloud based source control all integrated together we are relatively well inoculated against disaster or just annoying inconvenience.

Tuesday, 11 October 2016

Pick a Platform, any Platform – The Prestige

The last stage of any magic trick is “The Prestige”.  In illusionist terms it means we make the rabbit reappear after making it disappear, or the tiger or the lovely assistant.  In our case we are going to take use Visual Studio to do more than just create an app or application for the Windows Platform.  We are going to do so much more.  We will take an existing Windows Phone 8.0 Silverlight app and convert it into a Xamarin App allowing us to publish not only a UWP app but also an Android one and an iOS app.  I must admit I don’t know where I’ll go with this as I have not tried this before.  What follows is what I did, how I did it, and where I messed up (fingers crossed).

Part 1: The Pledge

Part 2: The Turn

Create a new Application

SquarePegWP80Rather than take my existing project and try to change it, it made a lot more sense to start with a brand new Xamarin App and layer in the code.  To do this, I opened the old WP8.0 app in Visual Studio then opened a new instance of Visual Studio for my masterpiece.  To make my life simpler and to reduce the amount of the learning curve I’m going to start with a Xamarin Forms app.  This relieves me of the need to learn pretty much anything about Android and Apple UX development.  You may need to install the Xamarin Development AddXamarinToVS2015Tools (They are typically not installed by default in VS2015).  If you use Windows 10, right click on the Start button and select “Programs and Features”.  Find Visual Studio 2015 and click “Change”.  Scroll down until you find “Cross Platform Mobile Development” and check the “C#/.NET Xamarin” one and click “Next”.  This will get you the tools you need.  You need a bit of disk space to make it happen and it will take a bit of time to install but it’s very easy to do.

To create a new Xamarin Forms application

  1. NewProjectopen Visual Studio 2015
  2. click “New Project” in the start page
  3. Expand Templates/Visual C# and Click “Cross-Platform”
  4. Select “Blank App (Xamarin.Forms Shared)” and Click OK

If you choose to create the UI part of your app in Native, simply select the (Native Portable/Shared) project templates.  For our purposes though we want to keep it as generic as possible with a single UI across all platforms so we will used Portable.

Making Our App

I’m not going to go too deep into this part of the process at this time.  There are some basic things you need to know about Xamarin Forms though.  First, always remember that Xamarin Forms are NOT UWP XAML in the traditional sense.  You need to substitute the new Xamarin Forms control for something you might use in UWP XAML.  For example instead of <TextBlock/> you might use <Label/>.  The properties will be subtly different too.  Instead of a Foreground property in Label you need to use the TextColor.

These small changes could be frustrating in the beginning but most things you do in XAML you can do in Xamarin Forms and the big win is that when the app is compiled for the various platforms the Xamarin Forms controls will be compiled into their equivalent native controls for that format.  So, you end up with native apps for all the platforms but only had to create one UI.  This is a big win in my mind.

To get in-depth knowledge on Xamarin Forms controls and just about everything else you can think of to do with Xamarin.Forms, download a free copy of Charles Petzold’s book “Creating Mobile Apps with Xamarin.Forms”.

SetImageAnother gotcha I encountered was with images.  When binding or trying to reference images, you have to be very conscious of the different platforms and resolutions.  Furthermore, you need to put the images you will be using in each of the platform projects rather than the shared/portable project included.  Each platform has it’s idiosyncrasies and you need to account for those.  The Xamarin web site for developers very nicely describes the issues with images.   The code is fairly simple once you know.

One other item that I missed was that Radio Buttons are not a “thing” on all platforms.  You need to think of something else if you truly want this to be cross platform.  You COULD do it but then would not look “native” on at least one of the platforms.  I used a <Picker/> for my home page.  Below is what it looks like in UWP.  Please refrain from design commentary.  I didn’t do much of that here.  This is strictly a move from plain Windows Phone 8.0 to Xamarin UWP/iOS/Android and it turned out ok.

homepage

More to come

While this concludes the magic trick, it by no means is the end.  I plan on completing this app and testing on iOS and Android.  To this point, everything I’ve done works on all three major platforms.  I still have to build the game play and the “Help” pages.  I now know that it’s not as simple as copy and paste but far easier than a complete rewrite.  I, at least, have the framework of what and where everything should go.  I know which controls work and which do not.  I know what WP80 control translates to what Xamarin.Forms control.  The rest is a walk in the park.

Tuesday, 4 October 2016

Pick a Platform, any Platform – The Turn

Continuing on from our initial foray into creating an analogy between magic and development as outlined in our previous blog on “The Pledge”, in this post we want to cover the first part of the real magic.  We’ve already established (I hope) that Visual Studio is a great, maybe even the best, tool for developers.  We know we can write code fairly easily and create software of all different shapes and sizes for the Windows Platform.  But what about the magic?  For those of us old school developers who started in Visual Basic before it was even part of Visual Studio or even newer developers that see “Visual Studio” and only think “Software for Microsoft Windows” today’s post is for you.  We want to roll up our sleeves, show you that we have nothing under there and describe a little magic with Visual Studio.

Part 1 – The Pledge

Part 3 – The Prestige

The Turn

So, if you will watch my hands (at no time will my fingers leave my hands) you will see that using just Visual Studio I can now create, deploy and debug apps on Windows (no surprise there) and Android.  With a little help I can now create, deploy and debug apps on iOS and macOS as well.  With just a few magic words (written in the mystical language of C#) you can do it too!

Xamarin

The magic wand is Xamarin.  It is the tool that allows us to create multi-platform apps all with Visual Studio on a Windows device.  You aren’t creating some sort of HTML app that runs on all the platform, you are creating native apps with native user interfaces for all the platforms.  You have lots of ways you can create the magic too so the show should never get boring.  For the most part there is little to nothing else you need except in the case of iOS.  For that you need to have a macOS device of some sort (MacBook or MacMini will work) to do the compile.  However, it’s important to note that although the Mac is sitting there doing it’s job you are still writing the software, testing and debugging right on your Windows device, even for iOS…
The first thing you need to do is make sure you have Visual Studio 2015 installed.  Any edition will do.  The next step is to install Xamarin.  Another great thing is you can get started on this for nothing.  You can combine Visual Studio community edition with Xamarin and they are both free.

Platforms

With Xamarin you develop in multiple ways depending on your preference and needs.  A good majority of any code you might write is re-usable across all the platforms.  And you can write it all in C#.  In fact, in most instances you will find that doing the code in C# is easier than Objective-C, Swift and Java.  Things like Asynchronous programming are just easier with C#’s built in language level support.  Inside Visual Studio you can do your code behind using C# but still creating your UI using storyboards for iOS and XML for your Java and of course XAML for Windows.  Or, you can use Xamarin Forms and really bump up your re-usable code.  I attended a workshop a short while ago where we built an app in the space of a couple of hours using Xamarin Forms with a little help from James Montemagno, Principal Program Manger at Xamarin/Microsoft. Xamarin Forms uses XAML to design the UX but when you build the app for the different platform Xamarin translates all that work into native controls and apps so you don’t have a layered common generic app but rather an actual Native app with access to Native APIs.

My Breakthrough

I have written a lot of apps for the Windows Platform.  At last count it was over 80 apps.  But I have never written an iOS or Android app.  Being a .NET developer I just didn’t have the time to get up to speed on those platforms and still maintain my edge in .NET.  Xamarin destroys that wall and lets me look at my existing apps in a new light.  There is now no need for me to make that decision.  I can take existing apps and with a minimal amount of work prepare them for distribution on iOS and Android.  To me that is the real magic.  I have played around with XCode and Objective-C but to get the quality I expected was just not easy.  This removes that barrier and lets me move forward. 

Next Up – The Prestige

Now that we have shown Visual Studio to be both “normal” and magical I need to make the assistance re-appear, the Rabbit to disappear.  I need to conclude the magic trick.  To do that I’m going to take one of my existing apps written for Windows Phone 8.1 and move it to UWP/iOS/Android and document the experience.  Hold tight for the Prestige.  I’ll try to keep the language not too offensive and will hopefully help you experience the magic too!

Friday, 30 September 2016

Pick a Platform, any Platform – The Pledge

I am unashamedly a fan of the magicians Penn and Teller.  I most especially love the fact that I will laugh out loud during their performance and I end up just feeling great afterwards.  Today’s topic is sort of like one of their magic tricks.  Bare with me, while the analogy might be a bit loose I think it holds a wee bit of truth at least.

The build up to the big trick is sometimes long, takes a bit of explaining, usually involves some sort of peril for one of the participants and has a great payoff in the end that makes you happy and the audience will cheer.  So the following the analogy means that in creating an app, any app requires a bit of time for prep and planning.  You sometimes don’t know if you will be successful (the peril bit) and when you ship; it just feels good.  In some instances you might laugh (or cry I suppose) and the audience (users) will hopefully cheer.  I should add that the magic trick takes hours and hours of practice with the result being failure a whole bunch of times, so don’t give up, keep working on it and your audience will thank you.

Christopher Priest wrote a book called “The Prestige” which was made into a movie in 2006 about a couple of 19th century illusionists.  In the book he described the three parts of a magic trick, the pledge, the turn and finally the payoff, the prestige.  We are going to try really hard to relate development to these steps (in a slightly twisted analogy).

The first part, “The Pledge” is where the magician shows something ordinary: a deck of cards, a bird, etc.  The magician then gets the audience to inspect that ordinary thing, unaltered and real in all aspects.  The second part called “The Turn” is where the magician takes that ordinary object and makes it do something extraordinary.  You, the audience, are looking for the secret but you won’t find it.  Mostly, you won’t find it because you don’t really want to know.  You want to be fooled or in our case amazed. The last stage is “The Prestige” because just making something disappear is not enough, you have to bring it back too.  (paraphrased from “The Prestige” by Christopher Priest)

In these blog posts I hope to cover all three stages as they apply to app development beginning with “The Pledge”.

Part 2 – The Turn

Part 3 – The Prestige

The Pledge

The first part of our trick today is to show you something ordinary.  In a trick it might be a deck of cards or a bird or something like that.  In our tale it’s going to be Visual Studio 2015.  You can look at it all you like and of course it looks quite ordinary.  It’s probably not, but it seems so.

I have a big affinity for Visual Studio (VS).  I have used other tools from command line text editors (you vi fans know who you are) to notepad to open source tools like Eclipse.  None, absolutely none have performed for me the way that VS has.  Each new iteration has brought new productivity gains.  Each new thing I learn makes me a better developer.  Is it perfect?  Of course not, but then we wouldn’t need new versions every couple of years adding the features we sometimes didn’t even know we needed then wonder how we lived without.  Visual Studio “15” Preview 4 is out as of this writing and it looks pretty cool to me. 

Back to Visual Studio and showing off “The Pledge”.  You would think it looks like just an ordinary IDE used to build great Windows Software for the Enterprise, the Windows Store, your mom or just something to make your own life easier and it is.

Here are a couple of features of Visual Studio I find very compelling.  There are dozens more but I had to start somewhere.

Git

changesvscommitsI have “discovered” Visual Studio’s integration with Git source control.  I must admit that I was not a big fan of git in the beginning but I’m completely sold now.  I like a command line as much as the next geek but only a command line got to me.  With the git integration in VS I can do most of what I want inside the IDE now.  Branch management, commits, synchronization, pulls, pushes and even pull requests can all be done inside the team explorer that was once reserved for Team Foundation Services (TFS).  Working solo or in a team is now so much better.  This would be a good time to mention that Visual Studio Team Services (VSTS) will support TFS and Git source control.  Look for more info on VSTS in coming posts with regards to DevOps, Continuous Integration (CI), automated testing and publishing.

CodeLens

CodeLens1CodeLens was around in earlier version of Visual Studio but only for the Ultimate Edition.  Visual Studio 2015 brought it to the common man, aka most developers.  It offers developers a quick glimpse into not only the usage of a particular method or property but also its history.  Should you work in a team, it also provides a way of seeing who last modified the bit of code you are working on.  This is so unbelievably helpful, I love it.

CodeLens2To view references, or places where this method is called, click on the first section of the information just above the method name.  It will provide you with a list where this method is called.  Hover over the lines and it will display some context around the call.  Double click on the line of code and you will be taken to that code where you can edit it as necessary.  This feature is great on it’s own but combine with the other 2 sections (should you be using source control).

CodeLens3The second part of the CodeLens gives you a bit of a history lesson showing changes committed over time.  You can see who made changes, when they made them and get a feel for how dynamic this particular method is.  In the sample here we can see that no changes were made for more than a year then it was updated.  It’s useful information that provides a time perspective.

CodeLens4The last section gives you a more exact list of changes and gives you a way of seeing exactly what changed, when it changed and who did the change.  Tap the “Show all file changes” and see a complete history of this particular method.  Double tap any of the lines shown and a “Compare” is shown of that particular commit against the current code.  I can’t tell you how many times I use this feature, especially the first one while actively coding.  If there are 0 references it also gives you a quick idea of what methods or properties are probably deprecated and no longer used.

Next Up – The Turn

Clearly Visual Studio is more than just the simple object dictated by “The Pledge” but we hope you see that it’s not magical (wink wink) in the sense of how we are applying the analogy today.  VS is a great tool for creating Windows/Web applications.

My next post will demonstrate “The Turn” or a bit of magic if you like.  How we can use Visual Studio to do more than you expect.

Wednesday, 21 September 2016

Back in the Saddle (and where the horse is going)

It has been some time since I have blogged on a regular basis.  But I’m back now and it’s time to write about what’s happening around the Windows Development world and where we might be going.  The plan is to put down some random thoughts about stuff at a high level and work on exploring those thoughts in more depth in posts over the next few months.

Measured Productivity

Before I begin to dig into things that you should be keeping an eye on, let’s take a moment to reflect on what we do.  I am a developer.  I love to write code and more importantly create useful “stuff” for people to use.  At it’s essence, developers need to be a bit of a creative personality.  At least the best developers I’ve worked with do.  That doesn’t mean they can draw beautiful pictures or even be creative designers (that’s another entire blog), although some can and do, but it means they sometimes need to come up with unusual, dare I say creative, solutions to very difficult problems.  To do this, they need to be sharp.  I discovered the hard way that it’s difficult to do that for long intense periods of time with little to no sleep.  I won’t preach but I will tell you from personal experience that lack of sleep because you are “in the zone” rarely produces good results.  These are the things I discovered:
  1. Lack of sleep damages judgement.  It’s easy to “think” you are doing a great job when in fact you may not be.
  2. Lack of sleep is dangerous to your health but you probably don’t realize it. (see #1)
  3. You produce more and better code in less time when well rested.
  4. Those afternoon “power naps” are a message…  hear and obey.  You are probably not getting enough sleep at night.
Ok, pulpit time over.  IMHO, more rest = more and better results.

Cross Platform Development

With the advent of Windows 10 we were in a world of the Universal Windows Platform (UWP) where we could write an App for the phone and magically get Windows and a whole bunch of other devices like tablets, HoloLens, etc…  Well, now with the rise of Xamarin (and acquisition by Microsoft) we can build truly universal apps that will work on iOS, Android, Windows, Windows Phone, even MacOS.  Our developer user group held a meetup on Xamarin and sold out in record time.  We are soon helping with a full day Xamarin workshop and it’s seeing an amazing number of registrations.  Xamarin integrates right into Visual Studio and leverages your already existing skills in C# and XAML if you so choose.
It truly is a great time to be a developer, dare I say, it’s a great time to be a Windows developer!  If you aren’t already you need to learn this stuff.  More on this coming soon.

Windows 10 Adoption

There is a lot of Windows 10 out there.  It has far surpassed the combined numbers of Windows 8 and 8.1.  Because of UWP you have the ability to write for Windows specifically but get Windows 10 Mobile as a bonus.  While the numbers for Windows Mobile today are not stunning I, and some other devs, do find that revenue generation is still pretty good.  Windows Phone users tend to not have a problem paying for good apps.  That means revenue for you.  So, just because the sales numbers for Windows 10 Mobile phones is not spectacular, the numbers are still quite large and you can do pretty well, not to mention the burgeoning market of all the Windows 10 devices.  Every Windows 7 device that upgrades to Windows 10 is a potential customer… remember that!

Augmented/Virtual Reality (AR/VR)

Pokémon is here, and while it may not remain as popular as it is on this date, the concept of the augmented reality game is definitely not going anywhere.  It’s not just with games, but apps for doing a lot of different things can adopt the theory of AR to make themselves more compelling. A new App shown off by Microsoft at the grand opening of their “Microsoft Canada Excellence Centre” in Vancouver called “VanGo” let users explore public artworks in the City of Vancouver.  Using GPS, instead of finding monsters, you find artworks such as the famous digital orca or many other lesser known objects.  Seems like a very worthwhile endeavour to me.  In the creation of apps that interact in the real world, consider the examples of Pokémon, whether you like it or not, as an example of how you can generate user interest in your app.
Of course, there is Microsoft’s HoloLens too as the current king of Augmented Reality.  Even if you can’t get your own just yet (still a bit pricey for the indie developer) you can start playing around with creating apps using Microsoft Visual Studio and the HoloLens emulator.

It’s Smart Right?

You can now include a whole bunch of smart stuff in your app.  Microsoft now has a whole suite of “Cognitive Services” available to developers.  Services around Vision, Speech, Language, Knowledge and Search can be really nifty additions to your masterpiece.  You might have experienced some of them already in different places.  The “How Old” web app was an example of the Vision Cognitive API in guessing the age of a person in a photograph.  To develop with these services is generally free to get started.  Check it out, it’s a lot of fun!

More to come

Well, that’s a good place to get started on new fun tools and things to investigate.  Have some fun and get lots of rest!

Monday, 19 September 2016

Do you provide Life Preservers for your Developers?

This blog post was original published on the Microsoft Partner Blog on October 13th, 2016

My company, FusionWare Integration Corporation, has been a Microsoft Partner for years.  Our partnership with Microsoft has repeatedly served us well.  I could spend pages describing the benefits we have reaped from our relationship.  Benefits, like software, customer referrals, technical and end user support, help with making our customers happy, but one of the biggest benefits we didn’t even think about until we had to was protection of our software assets and developer productivity.

The Two Pillars of Development

The purpose of this blog post is to discuss two huge benefits our partnership has afforded us and how it has, in fact, saved our ability to deliver to customers.  We have tried many different Integration Development Environments (IDE) in the past and none have ever come close to offering us the productivity that Visual Studio Professional gives us.  The other pillar of our development environment is more recent to us (recent, meaning less than 10 years).  We started using Visual Studio Team Services (VSTS) and it changed everything for us.  There are lots of benefits to both our pillars of development.  My goal here is to discuss two of them.  The first is developer productivity with Visual Studio and the second is protecting our assets and peace of mind (that life preserver in the title) with VSTS.  There are many other benefits, but I’ll leave that for another post.

Visual Studio and Productivity

One of the many things we do here at FusionWare is create Apps for the Windows Store.  We have published a great number of Apps to the Windows Phone Store initially and then the Windows Store and now the unified store.  We have also created other specialized database access software that I won’t go into here.  We have tried, in the past, lots of different tools for writing code.  We have written code in a bunch of different languages so we are familiar with many different permutations on environments.  It’s always like home when we return to Visual Studio, from the old days of Visual Basic to creating the dozens of mobile apps in Visual Studio Professional.  Todays applications (and apps) are complex beasts that constantly break new ground.  Visual Studio’s environment makes it really easy learn on the fly while creating great software.  From the tried and true of IntelliSense to newer innovations such as Code Lens and extensions like ReSharper bring to the party.  Integration with MSDN makes it easy to figure out what you need to get the job done.  Myself and my team can create applications in a fraction of the time we once did; improving costs and time-to-market for products we create for ourselves and our customers.

If you are creating apps for the Windows Store, then Visual Studio can make your life easier.  It’s definitely a core benefit of the Microsoft Action Pack for us and and a great add-on to all the other features of being a partner.

Visual Studio Team Services (VSTS) and Peace of Mind

The second pillar of our development effort involves VSTS.  This has had the single biggest impact on our business.  A couple of years ago there was a disastrous fire in a building adjacent to ours (literally the next building over).  It obliterated that building and had the wind been blowing towards our building we would have lost our offices.  Fortunately, before the fire occurred we had moved all our source control into VSTS.  Using tools built right into Visual Studio we had protected all our code assets in a place the fire couldn’t reach.  For a number of days we did not have access to our physical offices but work still had to get done.  No problem.  We just fired up Visual Studio on our home systems and instantly had access to all the work-in-progress in VSTS.  The combination of Visual Studio and VSTS allowed us to still deliver on-time and on-budget and definitely relieved us of a bunch of concern.  VSTS combined with Office 365 and Microsoft Azure means we can fire up a virtual office for developers just about anywhere and in very little time.  As a company, knowing that we have provided for unexpected events like fires or other events that might restrict access to our workspace, means that our developers always have their life preservers handy and can keep their developer heads above water.

When we combine Visual Studio with VSTS and its source code control, agile tools, continuous integration and other features, our productivity just continues to improve.  I especially love the continuous integration (CI).  The ability to make sure any commits to our Git repository (did I mention that Visual Studio happily support both Team Foundation version control and unlimited private Git Repos?) CI automatically builds the app, verifies its integrity and prepares it for distribution, all with automated agents taking care of it for us!

Swim don’t sink

With our Microsoft Action Pack and the Visual Studio Professional that comes with it, along with Visual Studio Team Services, we have a certain amount of peace of mind that we did not have before.  I’ve, personally, enjoyed the enhancements to my IDE that come with each new version of Visual Studio.  The experience just keeps getting better and better.