The Future (Job Market) is in the Cloud

Unless you have been living in a cave (technology speaking), you should be aware of that amorphous thing known as the ‘cloud’. Even people who are not in the technology profession are aware of the term (although 29% think that it’s something related to the weather - Citrix survey). Still 97% use cloud services in one way or another and 59% believe that the workplace of the future will exist entirely in the cloud. While I don’t expect that to be the case (at least not within my lifetime…a phrase that gets easier to be correct in using with each passing year), there is no question that the cloud is no longer about future hype. It’s here, it’s real and it’s ready to grow.

So, what does that mean for you and your career. Well, if you believe the new study published by Microsoft and IDC, the answer is "lots”. According to the study, there are currently 1.7 million open cloud jobs worldwide. And companies are having a difficult time filling their needs. Not only that, the expectation is that 7 million cloud jobs will be created over the next three years.

So what are ‘cloud jobs’? Well, the contention made by the study is that the new jobs will involved architecture, design and traditional services. In other words, not just the normal heads-down, ‘tech’ job, but one that includes a mix of business acumen and IT competency. The jobs where knowing how to do stuff is not sufficient. Jobs where you need to defend and explain your choices to both technical and non-technical management. In other words, what I consider to be the ‘interesting’ IT jobs.

So how can you prepare for this ‘cloudy’ world? Get some knowledge. Unfortunately, taking one course or even a couple is just the start (ObjectSharp does offer a course on Azure). You need to learn about the broad swath of technologies that are including in the ‘cloud’. Check out the latest functionality in Windows Azure. Looked at it last month? Well, look again…it changes that quickly. Keep you ears tuned to Azure-related social media. In Canada, there is the @CdnAzure Twitter account as well as the Developer Connection blog. As well, you can follow my Twitter account (@LACanuck) or my blog. While I don’t blog about Azure too much (I’m actually in the middle of writing a book on Azure which will hopefully come out in a few months), I do tweet about it quite regularly.

In other words, the process of making yourself cloud capable is an on-going and active one. The information will not come to you unbidden. Reach out and grab it wherever you can find it. And don’t be afraid to ask. I (and many others in the community) are happy to help out whenever we can.

Want to Speak at DevTeach?

I’m privileged to be the Tech Chair for Cloud and Windows 8 tracks at DevTeach. This time out, the conference is being held at the Delta Meadowvale in Mississauga from May 28 to 30 (see for details). All of these sessions (in both topics) will take place on the same day, which (based on the current schedule) will be the 29th.

So what am I looking for? Topics that will help developers solve the problems that they face every day. Topics that will let developers become more effective. Topics that go beyond the introductory level (they can already get that through various channels, such as Channel 9) and get into the meat of the technology. The template for submission is available at: The deadline for submission isn’t until the end of January, so you have the time to be creative. And I look forward to seeing what the developer community can come up with.

A few things you might want to keep in mind as you think about your possible topics:

  • The audience for the conference will be about 50% web developer ( including about 10-20% of those who are SharePoint developers) , 25% other developer (client, mobile, etc) and 25% admin
  • I’m mostly looking for developer talks but I am willing to consider admin talks. I won’t be selecting more than one admin talk for each track
  • Crossover topics are possible. I’ll determine which track they will fall into based on the complete list of submissions.
  • ObjectSharp will be doing an intermediate to advanced level post conference workshop on Windows 8 XAML, so keep that in mind

If you have any questions, please ask. I’m happy to provide any assistance or guidance that you might need.

New TFS Administration Tool

One of the tools any TFS admin keeps in their toolbox is the TFS Administration Tool. This tool makes it very easy to manage security for TFS. Allowing you to manage user permissions on all three platforms used by TFS. Specifically TFS, SharePoint and Reporting Services.

Download version 2.2 here.

Agile in non-software environments

Many moons ago I blogged about agile being adapted by a school in the states. 

Colin Bowern passed on another interesting presentation called “Agile in the Bathtub

I thought I’d share another Microsoft fellow who has written and blogs about Agile not only at work but in your personal life. If your struggling with time management read J.D. Meier’s book “Getting Results the Agile Way: A Personal Results System for Work and Life”.  Meier’s blogs about Agile Results it is a must to read. In one  blog Meier’s explains how to use Evernote (a free application) as your Personal Information Assistant and become agile in all you do.

 Testa  Smile

Toronto ALM User Group

Happy New Year everyone.

We have two great sessions to start 2013.

Patterns of Testable Software – with Asaf Stone on January 24th

2013 ALM Summit in Review – with Jeremy Garner-Howe on February 7th

Looking forward to seeing you there.

Development for Office and SharePoint Moves Forward

Over the next couple of months, you’re going to start hearing more and more about the new App for Office model. In a nutshell, this is a new model for developing and deploying applications to Office 2013 and SharePoint 2013. The main idea is to remove the installation requirement for applications onto a server while still providing the full range of functionality to the applications. Is this case, the servers I’m talking about are the Exchange Server and the SharePoint farm.

At the heart of the Apps for Office/SharePoint model is Web technologies. And while it’s a major simplification, the general approach is as follows: the application (i.e. Word, Excel, SharePoint) hosts a control that displays a Web page. That Web page is the ‘app’. The site behind that Web page is hosted wherever it wants to be, but most importantly it does *not* have to be hosted in the SharePoint or Exchange environment. The Web page has the ability to interact with the application through a number of techniques, including client-side JavaScript and/or server-side code (ASP.NET, PHP, etc.). From the perspective of the user, it does *not* appear that the app is a Web page, but it feels like it is directly integrated with the application.

As you might guess, this is not a complete or thorough description of the process. But if you want to learn more, you can join me on Dec 12 in Charlotte (register here) or Dec 14 in Toronto (register here). And if those dates/places don’t work for you, keep your eyes open for new dates across North America starting in February.

Mapping to a TFS Source Control Folder

So often I see developers mapping to their local folder from the middle of the source control tree to a folder on their desktop, then another folder to a different location. It gets very messy very quickly.

Some people may like to map folders this way, however I prefer a cleaner mapping implementation. When working on a team I would rather have the same folder structure as the server and everyone else on the team. Also it’s nice not to have to map each app I work on. I would rather just map once and be done with it.

Here is what I do: From a clean never been mapped TFS source control repository. If you already have  mappings check everything in and remove them before doing this. (These instructions are for Team Explorer 2012)

Open the Source Control Explorer

Select the top node which should be your Server\Collection

Right click and select Advanced | Map to Local Folder from the context menu

Create a folder on the drive of your choice with the same name as the Collection. I like to create a Source folder then inside that folder create the Folder with the same name as the collection.  That way if I have more than one Collection they are separate folders but all under Source.







Once you hit the MGetLatestap button you will be prompted to get latest of everything in the collection.





I recommend you select No. I doubt you want everything, do you?

Now traverse the Source Control tree look and watch the Local Path at the top it changes as you move. To get a particular application just right click on the folder and select Get Latest Version and it will get it into the folder structure you see.

Have everyone on the team do this. Then when you go from machine to machine you always know where to find the source. Also it looks just like the server.

Cloaked folders in the TFS Build Workspace


Here is a little Trick I find most people don’t know about.

When setting up a Build Definition you have to tell the build server where to get the source code from. We do this by declaring the folders to download from on the workspace tab of the build definition. It takes time to download all the files to the build server so you don’t want to get any unnecessary folders from source control.

Generally you can just select the root of the branch and pick up everything from there. Although there are times when the build you are creating does not require all the files in the branch. Lets say for example that you have two builds that run one that only builds the application and one for your WIX projects to create an install package. You likely want to keep all the files together for branching purposes. Something like this:


The folders in my example are for the following:
Builds files used by the build process specific to this application. Includes third party DLL’s we do not have the source code for.
Install WIX Project.
Resources Various resource files used by the application.
Source Application Source Code.

Now what I want is to get certain folders when building the app for a CI build and different ones when creating an install package.

CI Build

Install Package









I could just do this. But then I am getting more than I need in both cases.





Or to get just what I need I could do this. (Making sure I put everything into the correct folder on the build agent.

CI Build: image





Installation Package Build:image





Or I could use the cloaked status to let the build know not to get a particular folder.

Therefore on the CI Build where I want everything but the Install Folder I could do this: image




And on the Install Package Build I don’t need Source or Resources so I could do this:image

Creating Engaging Apps - Web vs Native

If you are writing an app for the general public (as opposed to one you’re writing for you in your organization), one of the first questions you face is whether you create it as a Web application or develop it for your target platforms using native code (XAML/HTML5/C#,Objective C, Java). There are a number of reasons I can think of to use native code over Web technologies. Better performance. Better integration with the device. Able to take advantage of functionality that is specific to the device (as opposed to coding to the lowest common denominator). By the same token, there are reasons to utilize Web technologies instead of native code. Faster time to market. Easier deployment. Consistent experience across all platforms.

But what does this have to do with creating engaging apps?


That’s right. The choice of technologies that you use is not what makes an application engaging. Consider the following tips for an engaging application:

Use the power of faces – People love faces. We have evolved so that we have specific wiring in our brain with the sole purpose of recognizing faces. We do it so well, we see faces where they don’t exist (such as in clouds, tree bark or grilled cheese). Take advantage of this by putting faces on your site. Even better, get the face to look at at important part of your site: people instinctively follow the eyes of the face.

Use food, sex and danger to attract interest – If you have ever heard me teach a courses, you will have heard me say (right at the very beginning) that when someone sees something new, they place it into one of four categories: can I eat it, can it eat me, can I mate with it, and everything else. If you want your site to be considered interesting, put it in one of the first three categories.

Tell a story – We learn through stores. It’s how we teach our children. It’s what we see in movies. Stories are a big part of how information is conveyed to us. Take advantage of this in your app. If you have information to give to the user, put it in story form. It doesn’t matter what medium you use (words, pictures, music), but using a story narrative will help your user understand and retain your information.

Build commitment over time – I’m guessing that most of you did not propose to your wife on the first date. It takes time for both people to make sure of the commitment that is implicit in marriage. The same is true of business. You don’t ask for a 6-figure sales order on the first cold call. Or, if you do, I’m guessing your success rate is low. :) Instead, let the relationship build over time. Let the user choose how they want to interact with you (RSS, Twitter, Facebook) and make sure that you don’t take advantage of the trust that is implicit in that interaction.

See? Nothing at all about technology. Engaging apps is all about the design sensibilities and visual aesthetics of the app. Focus your energies on that. Get that right and the choices you make for technology, so long as it doesn’t get in the way, because ancillary at best.

ALM User Group in Toronto meets this Thursday, Nov 8th at 5:30pm

Come out on Thursday to the Toronto ALM User Group (TALMUG) click here to register. TALMUG

Be Loved By Your Development Teams: Using the Team Foundation Server – Project Server Connector

Organizations are investing heavily in building project management competencies through the improvement in processes and use of tools such as Microsoft Office Project Server to ensure the predictable and reliable delivery of projects. At the same time an increasing number of development teams are moving towards agile techniques. Integrating and reconciling development teams and project management has become extremely important. Microsoft’s Application Lifecycle Management strategy includes solutions designed to enable Visual Studio, Team Foundation Server, and Project Server to connect together seamlessly.

This session will explore the Team Foundation Server - Project Server Integration Feature Pack and demonstrate how this enables development teams and project managers to work efficiently and increase productivity.