D'Arcy from Winnipeg
Solution Architecture, Business & Entrepreneurship, Microsoft, and Adoption

Things To Do in Atlanta During Ignite

Microsoft Ignite is this week, and I have a number of friends who are heading down (I'm not going this year, but had a great time last year when it was in Chicago).

I've been to Atlanta a couple of times and love the city (not just because my Falcons play there), so here's a short list of things to see and do while in Atlanta.

World of Coca-Cola

There's a saying that the toughest job in the world is being a Pepsi sales rep in Atlanta. Home to Coke, Atlanta has a great museum dedicated to the history of the beverage. In addition to the history, walking through a small-version of a bottling plant, and other attractions, at the end you get to sample Coke products from all over the world.

Georgia Aquarium

Amazing aquarium - the ginormous tank with various fish including a whale shark (!) is worth the visit alone, but this aquarium has multiple exhibits and was a lot of fun.

Waffle House

If you're going to be in the Southern US, you gotta hit up Waffle House at least once for breakfast! Diner-type food and a chain we don't have here in Canada.

Atlanta Braves Baseball

If you've never been to a MLB game before, definitely consider taking some time away from Ignite to go check out a Braves game. Tickets are cheap, and the atmosphere and experience is amazing. When I went we got tickets in the outfield but it was a great view and a relaxing afternoon at the ball park. US sports food is insane too.

Quickshot Shooting Range

OK, so this won't be for everyone but if yelling "GET TO THE CHOPPA" before burning through 500 rounds into a zombie target via a semi or fully automatic weapon sounds fun, then you have to check out Quickshot. Quickshot is a shooting range chain in Georgia and when I went with my buddy we had a great time! Staff were very friendly, patient, and professional. There was a huge range of guns available - just be prepared to drop a few hundred.

Ignite will keep people busy for most of the week, but if you want to tour the city on your own these are some great highlights. Yes - Waffle House is a highlight, don't judge me.


Setting Up Octopus Build Task on TFS 2015 On-Prem

Last week I worked on getting Octopus Deploy's Build Task installed in TFS 2015. What I found was that there was a lot of great articles that all had parts of the process, but there was nothing that brought all the steps together. So here's my list, complete with links to the various posts/blogs with the details.

Step 1 - Add OctoPack To Your Project

OctoPack is... "The easiest way to package your applications from your continuous integration/automated build process is to use OctoPack. OctoPack adds a custom MSBuild target that hooks into the build process of your solution. When enabled, OctoPack will package your Windows Service and ASP.NET applications when MSBuild runs." (from http://docs.octopusdeploy.com/display/OD/Using+OctoPack).

OctoPack creates a nice little NuGet package out of your project which gets consumed by Octopus Deploy (which uses its own Nuget server under the hood to facilitate deployments). You can install OctoPack by adding it as a Nuget package in Visual Studio and you should add it to all the projects you'll be deploying. As an example, you'd add it to your web project but not to your unit test project.

Step 2 – Create an API Key

You’ll need this API key for setting the Visual Studio Build step’s MSBuild arguments in the next step. To generate this, follow the instructions on this help doc:


Step 3 - Modify the MSBuild Arguments in your Visual Studio Build Step

Over in TFS, you need to add some arguments to the MSBuild Arguments field in your Visual Studio Build step.


The arguments you need to use are:


/p:OctoPackPublishPackageToHttp=http://<path to octopus>/nuget/packages

/p:OctoPackPublishApiKey=<api key you generated in Step 2>

Step 4 – Create a Generic Connected Service

You need a generic service for the custom task to work. This service and your team project will share the same API key, which lets your build kick off the deployment via the service.

To create one, go into your team project and click the little gear icon in the top right corner (next to your user name). This will take you to the admin page, where you should see a number of tabs like Overview, Iterations, etc. Services will be the last one, click it.


On the Services page, click “Add New Service Connection” and select General. Fill in the values into the form that appears:

Connection Name:  Whatever you want to name this service connection.

Server URL: Where your Octopus server is

User name: Just put Octopus. Why? Dunno, that’s what this post told me to do.

Password/Token Key: Past in the API key that you created a few steps ago.

Step 5 – Install Node and NPM (for TFX-CLI)

Installing the Octo Build Task for Visual Studio Online is super easy, but for on-premise it requires some extra steps. To install the task (or any task for that matter, see the links at the end of this post for more info on that) you need a tool called TFX-CLI (TFS Cross Platform Command Line Interface). This is a tool that lets you do various things with TFS from a console, but it requires Node.JS and NPM.

Node is a JavaScript runtime and NPM is a package manager (think Nuget, Chocolatey, etc.).

So before you install TFX-CLI, you need Node and NPM on your system. Note that this doesn’t need to be installed on your TFS server. As long as you have the proper permissions, you can install this locally on your machine and just connect to your TFS box.

To install Node, just head to their website and click on the download links. NPM should install with it by default. https://nodejs.org/en/

Step 6 – Install TFX-CLI

Once you have Node and NPM installed, you can install TFX-CLI using NPM. Just open a command prompt and type in

npm install –g tfx-cli

You need to have an internet connection for this to work, as its going out and getting the latest copy.

Step 7 – Enable Basic Authentication on TFS

You can connect using TFX-CLI in two ways – with a personal access token (VSO) or with Basic Authentication. Microsoft NTLM isn’t supported for TFX-CLI yet, so while you’ll be passing in your domain credentials you’ll be doing it over “basic” auth. Note that if you want to secure it (i.e. SSL) then you have to do that yourself manually, you don’t get it out of the box.

Check out this help file from the TFX-CLI project site for a walkthrough on setting up basic authentication. https://github.com/Microsoft/tfs-cli/blob/master/docs/configureBasicAuth.md

One thing I will call out – make sure you set the basic auth at the web application  level and not the web site level, otherwise you’ll just get invalid login responses in TFX-CLI.

Step 8 – Clone the OctoTFS repo from Github

Pull down the OctoTFS project from Github. You’ll need Git installed for this to work (https://git-scm.com/).


Here I’m putting the OctoTFS project in a folder called “OctoTFS” in my C: drive.

Step 9 – Login to TFS in TFX-CLI and Upload the Octopus Build Task

FINALLY we can get the Octopus Build Task installed in TFS!

First, log in to TFX-CLI. Open a command prompt and type…


at the prompt (without the quotes). You should see this when you hit enter:


Now you need to log in to your TFS server. Type ‘tfx login –auth-type basic’.

You’ll be asked to enter in the Service URL, which is the URL to the TFS collection you want to connect to. For your username and password, enter in your domain credentials or if you have a local account on the TFS server log in with that.


All of this has been leading up to this next moment – installing the build task! In the command line navigate to the OctopusBuildTasks folder. See the image below for the path where I installed mine earlier – if you follow the same steps, it should be there for you as well. Once you’re there, type…

tfx build tasks upload

This will prompt you to put in the task path, which is one level below. Type…


and hit enter. You should see green text saying that the build task was uploaded successfully!


Step 10 – Verification

Head over to your TFS instance and bring up one of the projects within the collection you specified. Edit one of the builds (or create a new one) and add a deployment step. You should now see the Octopus Deploy Build Step as an option!



TFS will have to suffer through awkward deployment scenarios like this compared to the ease of installation that Visual Studio Online provides (adding this build task to VSO is automated and requires only a few button clicks to install). While it’s great that we have tools like TFX-CLI, better (and updated) documentation would go a long way to help those of us trying to get as much out of our on-prem TFS.

You may be wondering why this isn’t documented anywhere already. There actually is a lot of documentation out there about this process, but none that covered everything start to finish. Hopefully anyone else looking to get this working in their on-prem TFS environment can avoid some of the pain I went through (or even better, the install process for custom build tasks improves and this whole post becomes irrelevant).  

If you’re intrigued at the idea of creating your own custom build tasks now that you know how to install them, Colin Dembovsky has a great series of blog posts that will walk you through that process, definitely check it out at the links below:



Case Study on Importance of Clear Contest Rules (But Matthew Good Is Still Awesome)

Part of running a conference, or a trade booth at a conference, is holding contests for prizes. While this may seem trivial in its execution, its very important that you think through and communicate the rules of said contest - otherwise you could have some very unhappy participants. Let me give you an example.

Tonight I'm heading to the Matthew Good concert which I'm pretty pumped about. He's doing a contest at every stop by showing a landmark and getting fans to rush to the spot and post a pic of themselves - the winner gets a VIP upgrade to meet him along with some swag. So when they showed the location as The Forks, it was on! According to Twitter I was the first one to post a pic!

I guess it was just time to wait to find out if I was the first one to post, after all the rules said...

I noticed after lunch some other guy that had posted his pic well after me was tweeted as the winner?! This didn't make sense...and there were two other people who had tweeted @mattgood with their pics at the location as well before the "winner". 

Let's look at the #6 rule from the contest rules though...

I underlined the part about the Hashtag - that, it turns out, was the difference - the tweet had to include #chaoticneutraltour. I was 19 characters away from getting to meet Matt, which would have been awesome.

The problem with this is that the rules aren't clear. In #5 it says all you have to do to win is be the first person to find the location and take a picture. The next one (#6) tells you where to post to prove you were there. But the verbiage around the hashtag part is anemic. It should have said...

"You MUST ALSO include the hashtag..."

Here's what probably pisses me off the most about this - its less about giving something interesting for the fans and more to do with promoting the tour on social media. Ironically the guy that won seemed to create his Twitter account *just* for this contest so any social media reach they hoped to gain from this is nulled.

Is this sour grapes as my new best Twitter friend Aaron (@octobermidnight) suggests? It's more of an annoyance really. And here's where the lessons learnt come in...

People's Time is Valuable
Any time that you do a promotion that requires people give of their time, they are GIVING SOMETHING. Whether its taking a picture at a location, having them fill out an online form, or submitting a session survey, they are giving something of themselves.

Make The Rules Crystal Clear
We all hate legalese, but being too laid back with contest rules can be disastrous. If participants need to do certain things to enter, then explicitly state what they must do. And use that word MUST, otherwise it can be open to interpretation. "Don't forget to..." isn't strong enough. Don't be cute, be specific.

If Possible, Include All Participants
A great idea is to offer something to all participants regardless if they win. This validates and thanks them for giving of their time (which is valuable) and for helping you reach whatever your goals were by doing the promotion (creating a contact list, getting something out on social media, getting a product name out, whatever). This could be anything - discount offer, small branded item, etc.

Try to Avoid First-In and Win
The problem with the first person doing whatever being the winner is that there's no incentive for others to participate. For instance, if your goal is to get as much exposure on social media, why would you not want as many people as possible active online with your accounts/hashtag? Better to give a time span to let everyone who wants to participate have a chance and then draw from that.

So be clear in your rules and you and your participants will have a great time running your contest!

So About The Concert....
Now is the fact that I won't get to meet Matt going to ruin my entire night? Not at all! Matt will be awesome belting out old and new tunes, I'm going to pick up one of those swanky Chaotic Neutral t-shirts with the D20 on it, and leave having had an awesome time listening to one of the great Canadian musicians of our time.

His PR/Social Media team though? Well they rolled a natural 1 on this one.

On Co-Location, Email, and Face-To-Face Communication

I broke my own rule – I tweeted a thought as a controversial statement.


From this erupted responses from numerous people from the other point of view (mainly on the co-location piece and whether face-to-face is necessary, not so much defending email). So instead of trying to discuss this in 140 characters, here’s my full train of thought on this.

The tweet was born out of two different events:

1) A tweet by Steve Porter that “email is not a collaboration tool” (I fav’d it).

2) My team had just worked through some design decisions in our team room, where we all sit together.

I was riding a high of team collaboration mixed with crusading angst against email when I combined all that into a single tweet.

Now let me talk through my thought process on all these.

Co-Location is Incredibly Important

When I think of the teams I’ve been on that have succeeded the most, they all share a common theme – they all worked in the same room or the same area (physical impediments (walls, hallways, different floors) are *real* barriers to teams collaborating together). Being co-located had the spin off benefit that the team felt more like a team than a group of employees assigned to the same project – there’s a difference. Eating together, playing board games together, building relationships with each other – all of these happened, and ultimately benefited how we worked together because we were co-located.

There’s a growing thought that employees don’t need to be co-located, and in this wired & connected world it shouldn’t matter where we work. I can’t (and am not trying to) argue with people’s personal experiences where they feel they’ve had success. That’s basically what I’m saying in this post – when I’ve had the most success in projects, co-location has been a factor.

Consider Mob Programming, which is somewhat of the extreme of this position and one that I’m *not* 100% sold on. Mob programming “is very similar to Pair Programming, but the whole team works together on the same "problem" at the same time at the same computer.” That’s business owner, developers, testers…everyone, in one room, working on the same problem. Below is a video of a company that has adopted this as how they work every…single…day.


If you talked to them, I’m sure they’d rave about how awesome this has worked for them. And really, when we talk about how to best organize a team, this speaks to the real truth: the best approach as to where team members should work – remote, co-located, or on top of each other all day – is best left to the individuals that make the team to decide.

For me, I will always defer to co-locating with a team I’m a part of than being remote. For me I find communication is best done face to face, with video chatting being at the very least of that. Which brings us to…

Face to Face Is Necessary

I think we all agree email isn’t a collaboration tool and on this point I will argue with anyone. So let’s deal with the face-to-face portion of the tweet.

No, I’m not going to quote the whole “90% of communication is non-verbal” because that opens up a whole new can of worms about how that theory has been debunked and that you can’t really set a number to something like this because of how people are different, etc. etc. But, there is a lot of research into this area that does support that non-verbal cues DO make influence how we communicate and interpret communication. If you’d like to learn more on this, there’s a number of great TED talks on the subject.

I’ve also found that face to face communication removes any interpretation or guesswork that an individual has to do around inferring tone and emotion. Consider this.

“Hi Joe, please come by my office – I need to discuss something with you.”

We’ve probably all gotten an email like this or similar in the past. What thoughts go through your mind when you see this? Without any context this can be read as everything from getting a promotion to getting fired.

Now imagine you’re casually walking down the hallway and your boss passes by and says to you “Hi Joe. Hey, can you please come by my office later? I need to discuss something with you.” Your boss is relaxed, he even smiles when he sees you. He doesn’t seem agitated or concerned. Now what goes through your mind? Probably that you just need to go talk about something with the boss and the thought that you may be in trouble doesn’t even cross your mind.

Seeing someone, hearing the tone in their voice, experiencing their non-verbal cues, all plays in to how we effectively communicate with others, whether we’re receiving or delivering the message.

I have a love/hate with Slack. I’ve had a couple of teams that used it extensively, and for some reason I always seem to get with people who – like me, admittedly – love to bug and poke each other. But sometimes, without understanding the non-verbal piece of communication, those messages can be misinterpreted as being meant-spirited or even cruel. I actually took a self-imposed hiatus from Slack for a bit because it was becoming counter-productive to the blissful communication utopia the platform promises.

I mentioned how effectively communicating plays in when receiving or delivering. Face to face communication allows us to pick up cues about the receiver and what state they’re in. Are they happy, sad, frustrated? Are they in a place where a comment made would hurt them? Without non-verbal cues I have no opportunity to alter my message to ensure its communicated effectively.

Where face to face or video isn’t an option, voice is great as well. I’m also a proponent of using emoticons in emails to convey sentiment – its better than forcing someone to infer what your tone is.

Let’s Wrap Up

Everyone is different – personalities, drivers, needs, wants, etc. Everyone communicates in their own way and has their own preferences. And no solution fits everyone. Mob Programming isn’t for everyone, just like an all-remote team isn’t for everyone either. For me, I will always look for co-locating with my team and doing face-to-face communication as much as possible, because that’s where I’ve seen the  most success personally. If you’re being successful in what you’re doing – great, keep it up! If not, look at yourself, your team, and how you’re working/communicating and see if there’s an opportunity to change things.

Adventures in Windows IoT Core for Raspberry Pi 2

Ever since I won a Raspberry Pi 2 at Microsoft Ignite I’ve been trying to figure out what to do with it. This week I decided to look at the Windows 10 IoT Core for Raspberry Pi 2 and see what I could do to get something up and running.

I’m not going to re-hash how to set up the device or how to configure your development environment; there’s already some great articles that cover this which I link to further below. But I will share some first impressions which may prep you for working with the platform.

Windows IoT Core (WIoTC) is, as their own website states, a work in progress; a very early work in progress. Compared to Raspian, which has a desktop-like GUI complete with windows, WIoTC seems very primitive. You’re very limited in what information you can get (I couldn’t get the MAC address of the Raspberry Pi 2 from the WIoTC interface) and the suggested way to manage your device seems to be through PowerShell via another PC on the same network.

Deployed apps can either be a Universal Windows App or Headless (background process). Only one UWA will be displayed at a time. There’s no built in menu or anything, so don’t think of this as a Windows Phone type of experience…its less than that. Users won’t automatically have an “Installed Programs” list to refer to. Also, while you can deploy a Universal Windows App to the Pi, there’s a documented list of unavailable APIs that aren’t part of WIoTC. So you can’t just assume what you write for Win 10 desktop or even the phone platform will transfer over easily.

WIoTC doesn’t take full advantage of the hardware yet either. Mike Dailly posted a Vine showing that GameMaker Studio games can run on the platform, but very slowly due to the GPU not being used at all (graphics are drawn using software emulation).

This may sound very negative, but considering how new WIoTC is and that they likely targeting the base/required functionality for an initial release I think its pretty cool that using Visual Studio I can deploy an app to this mini-computer on my desk. There’s great opportunity with WIoTC and I’m actually happy they didn’t try to force a bloated platform out for v1; better to involve the community and develop things as needed instead of making assumptions.

Now that I’ve done my first Hello World app, its time to start looking at the next step of playing with my Raspberry Pi. Stay tuned!


Microsoft Dev Center – IoT
This site is the best starting point for setting up your device, dev environment, doing your first project, and getting up to date information.

Michael Crump’s Guided Tour of Windows 10 IoT Core
Great walkthrough by Michael Crump which also shows how to use one of the Telerik controls and links to related topics.

Microsoft’s Clear Message for Canadian Partners

I attended the Microsoft Worldwide Partner Conference in 2011 and 2012. Even 3-4 years ago we were hearing about the changing focus at Microsoft. While 2000-2008 was all about winning the platform war (.NET vs Java), 2008 had ushered in the cloud era in the Microsoft world. While Azure’s platform as a service seemed front and center, WPC started beating the Office 365 drums. The message from Microsoft was starting to take shape – partners needed to get on board with where Microsoft was going with Azure and Office 365. Those that did would keep the attention and support of Microsoft.

In a discussion with a Microsoft Canada Tele-Managed Partner Manager within the last year, I heard this message refined and pointed – Yes there were sales support dollars available but only for initiatives/opportunities where there was a clear cloud component. Have a large custom .NET app dev opportunity that would be deployed on premise to the client’s infrastructure? Great, good luck, but not the marching orders Redmond gave its sales teams.

This year, if there was any doubt where Microsoft has moved its focus, this tweet should put those doubts to rest.


“@MPNCanada We measure our success by Cloud, Customer Acquisition & Consumption, and Usage”

That tweet seemed to be attributed to Janet Kennedy, President of Microsoft Canada. It lays out clearly how Microsoft Canada is measured, and by extension how the Partner community is measured.


Booking business for Azure, Office365, or any other cloud-based service/platform Microsoft offers

Customer Acquisition & Consumption

Getting customers to purchase cloud services (either a-la carte or through an enterprise license agreement (ELA). Consumption is different than usage though, which we’ll cover next. Consumption is getting a client to agree to move some servers to Azure, or purchase 100 licenses of Office 365. Consumption gets the Microsoft products in production at the client.

Over the years I heard of many large enterprise-size organizations who had an ELA which provided all sorts of licenses. Incredibly some products that the ELA provided valid licenses for were never deployed; they were never consumed. You can’t get usage traction unless a customer actually uses (consumes) the product.


Usage is the recurring revenue generated by using metered cloud services. This is the part where the meter runs and Microsoft (and the Partners) make money. Remember the example client we talked about who moved some servers to Azure? Maybe they realized some great cost savings over maintaining physical servers. Maybe they decide to move MORE servers to Azure, and more applications/processes to those servers, requiring bigger Azure VM instances. This is how consumption can lead to higher usage.

So Look Partners…

Back in 2011 and 2012, the message was less frank and more suggestive.

“Hey, we’re moving in this direction. You should really listen to what we’re saying. Things are going to be changing.”

Now in 2015, the message is loud and clear.  “The cloud train has already left the station. A lot of partners are already on board, but if you run you can catch up and get on too. But we aren’t slowing down for stragglers.”

And this isn’t a bad thing, or a mean thing, or anything out of malice. Microsoft had to change their business to evolve, and having a partner program they rely on to move their product through means those partners need to be open to changing their focus as Microsoft does. Microsoft sets the vision for their partners, not the other way around.

Those partners that were part of the program from 2000 to 2010 and built their business on custom app dev and on-premise IT services have a choice to make – adapt to the new world of Microsoft, or figure out how to live in a world without Microsoft’s support.

The Changing Winnipeg Technology Consulting Landscape

I’ve been noticing a few things lately here in Winnipeg:

- Less large custom application development projects

- More adoption of packaged software

- More adoption of Software as a Service platforms

- Organizations wanting control over technology projects, only looking for augmentation roles to fill gaps

- The commoditization of software developers with broad skills

The cloud is removing the need for organizations to manage and maintain their own infrastructure. Software as a Service provides a model where organizations can rent lower-priority applications/services while focusing their own development staff on higher priority initiatives. Consultants with specialized skills in mobile, integration, security, and platforms (SharePoint, SAP, etc.) still demand higher rates, but organizations are no longer willing to pay a premium for .NET or Java developers.

Consulting firms who sell professional services need to become aware of these trends and pivot on what they offer to their marketplace. Consider the items below, all of which should have initiatives in flight or be on the radar for any professional services company.

Azure and AWS are gaining more customers by the day, and releasing new features and offerings on their cloud platform. Microsoft announced at Ignite this year that organizations would be able to install the exact same Azure software that Microsoft uses in the public Azure cloud, meaning organizations can get on board with Azure on prem and move to a hybrid or hosted cloud model when ready. Consultants need to be able to show customers how to move to the cloud, the benefits of moving to the cloud, and provide the services to bridge the knowledge gaps in developing software for the cloud.

Software as a Service
The Buy/Build mantra has been replaced with Buy/SaaS/…I guess we’ll consider building. If a package solution can’t be found, organizations are more than willing to consider a SaaS solution before investing in a custom built application that must then be maintained. Consultants need to be aware of available solutions when advising clients on the best options for their needs. There’s also an opportunity for consulting organizations to create their own SaaS and enter the product market.

Also note that even if an organization opts to build a custom application, most enterprises employ skilled developers who can deliver it instead of sourcing out to a consulting firm; more and more I’ve seen professional service organizations be contacted for resource augmentation rather than taking an entire project.

Security has been largely ignored for years. With recent hacks, threats of cyber-attacks, and the continual onslaught of viruses, organizations are finally realizing that they need to treat security seriously. While this is a growing area, there is still more work available than service providers that can offer it.

If you aren’t in the mobile space already then you’re lagging behind. Companies that invested in mobile skills are reaping the rewards now. Organizations are realizing that mobile solutions aren’t just about empowering the internal workforce; its also about reaching customers and the community at large. What those organizations need are partners who can help show what’s possible.

As organizations incorporate non-centralized IT solutions with cloud, SaaS, and mobile into their environments that probably include enterprise systems alongside custom/niche applications, sharing data across all of these will be an important consideration. Integration consultants who can help clients navigate their system landscape and implement things like ESBs, data warehouses, and BI/Analytics solutions will find opportunities – although in laggard markets there will be a need to educate clients on the benefits.

What About Your Market?

I’d be curious to hear if people in other markets, whether in Canada or in the US, are seeing/experiencing the same type of trends. Or maybe you’re in Winnipeg and have a different take on the market. If you have comments, either leave them below or if you decide to do your own blog post please leave a link to it in the comments.

Who Did It Better – Comparing Rider and Bomber Pre-Game Festivals

I’ve been fortunate enough to be at the home opener for both the Riders and the Bombers this year. On Twitter I commented that the Bomber pre-game festival wasn’t as engaging as the Rider one which I got challenged on. This was before the Bomber home opener, so now that I’ve been to both I wanted to comment on both and “who did it better”.

Rider Pre-Game

The Riders host their pre-game festival on the practice field next to Mosaic stadium. There’s lots of room which provides for a lot of people to spread out and never feel cramped. They also had a stage with live music from local bands, 5 different food options, a beer garden, and inflatable games for kids and adults (I was 3 for 3 on the football toss and scored a Rider flag).

There were tables set up throughout, as well as shaded table areas, but with so much space there was always a patch of grass to call your own as well.

One other thing – You can park at Evraz place next to the stadium FOR FREE on game days.




Bomber Pre-Game

The Bombers pre-game on the south-east corner of the IGF grounds. This is a small area and gets crowded VERY quickly. Music for the home opener was via a DJ working from a laptop. There were only two food options in the festival area – turkey legs from Granny’s and Famous Dave’s BBQ (which was also the game-day sponsor). In contrast, I counted 5 bar tents to get drinks from. Since the space is small, the decision to use standing tables is great. There were also some shaded seating spots as well and tents set up for those that needed shade (standing only, no sitting).


There was a separation between the food/drinks and the “family zone” where you could find a few inflatables and games for kids, autograph signing with Bomber alumni, and some other tents for game-day programs.



So let’s recap how these two stack up for pre-game festival experience.




Area Size

Practice field

Small corner area

Food Options



Drink Options







Live Bands

DJ and Laptop

Player Visibility

None that I saw

Chris Walby


Free parking, easy access

Paid parking, difficult access

Now…I don’t know that having more bar options is necessarily a *good* thing, and really the beer gardens in Regina had the same number of available lines as there was drink tents in Winnipeg. But Winnipeg had a mobile Rum Hut where Regina had only beer.

Also it would have been a great touch to have some Rider alumni available to sign autographs or take pictures. Having Walby available pre-game was a nice touch for the Bombers.

Area size is a huge limitation for the Bombers, but there’s not much that can be done with that. There was a huge tent set up for a “private function”. Maybe move private functions to a different area of the lot which would free up space to set up a stage and have live music, or to space out the games/inflatables for the kids and make the family area easier to walk through.

There needs to be more food options as well. Regina had two BBQ places in addition to traditional hotdog/hamburger fare. If you want to pre-game drink, then the Bomber festival is a great spot for you. If you want to eat though, there are better options inside the stadium. Maybe that’s the intent? Not sure (I will point out that Bombers have much better food options inside the stadium than the Riders).

At the end of the day, I ask myself “Is the pre-game festival something I look forward to and want to attend because it adds to my CFL experience?”. In Regina, that answer is yes. In Winnipeg, its a no.

Running Your First Code Camp

Every now and then I get people asking me about how to run a conference. One thing I encourage is that people start small and build from there. I ran the Winnipeg Code Camp for a number of years before evolving it into Prairie Dev Con, and the foundation of the code camp is the base that Prairie Dev Con grew out of.

So below are my thoughts on how to run a one day, multi-track, Code Camp.

What’s a Code Camp

Code Camps became popular in the 00’s. They were free one day technology conferences that focused on showing off technology (so more code, less marketechture). This is the true volunteer event – low budget, high volunteerism, but still high quality and lots of fun. All costs are covered by sponsors and there’s never an entry fee for attendees.

Ok, so let’s start planning our Code Camp!

The Code Camp Format

For a first-time code camp, I would suggest doing a single day event on a Saturday, running two or three tracks of sessions (this will be based on your market size and speaker pool). Schedule will look like this:

8:30 – 9:30 Breakfast/Registration
9:30 – 9:45 Welcome
9:45 – 10:45 Session
11:00 – 12:00 Session
12:00 – 1:00 Lunch
1:00 – 2:00 Session
2:15 – 3:15 Session
3:30 – 4:30 Session
4:30 – 5:00 Wrap-Up

That gives you 10 sessions for a two track or 15 sessions for a three track setup.

Step 1 – Gauge Interest

A big part of a Code Camp’s success is the energy and commitment that an organizer brings to it, but you also need to know if your community shares your vision and will support the event. Reaching out to local technology user groups to see if their organizers and members share the same excitement is your starting point. It also makes it easier to promote the event if you can get leaders of those communities on board.

Now realize you’re just gauging interest here, not commitment. I ran a PrDC where community leaders – who were all very well meaning – said I’d get well over 300 attendees out; I struggled to get 180. The reality is that until you run your first event you won’t have an idea of how many people you’ll actually get out, so early on you’re just gauging interest and not looking for commitment.

You also need to gauge interest with the people who will be speaking at the Code Camp. We’ll talk about doing a call-for-speakers later, but especially for an initial event you want to have a good number of speakers already lined up and committed to the event.

Step 2 – Source Venues

If there’s enough interest, now is the time to look at venues. For a Code Camp you want to do this on the cheap. Don’t even bother with hotels or conference centers. You’re first hit should be to local schools, colleges, and universities. Here’s why:

They’ll already have lecture halls and classrooms set up with projectors (verify that projectors are included in room rental prices)

They’re usually cheaper to rent rooms space from then hotels/conference centers

No classes happen on Saturdays (typically) so space will be more generally available

They *can* be located on more convenient public transportation routes (buses, subways, etc.) so easier to get to for people

If you have any contacts with the administration, you may be able to pitch this as a good community event that students will benefit from and get a discount on the rooms.

When sourcing venues keep in mind that you need n+1 rooms, where n is the number of tracks you’re running. The +1 is for your plenary room – the place that all attendees will meet for meals, for the welcome/kickoff in the morning, and for the wrapup at the end of the day. All rooms should be close together so attendees aren’t required to go walking all over the place.

Make sure that you ask about parking – if its free, if there’s paid lots nearby and what the costs are, and what the street parking rules are. You’ll want to communicate this to your attendees.

Also ask about internet access – is there public wi-fi, is there a charge, is a passcode required, etc. This information will be important to provide to speakers as well if any require internet access for their planned talks.

Finally, while this shouldn’t be an issue with building codes and current laws, make sure that the venue you select is easily accessible for people with disabilities.

Step 2.1 – Food

For your first code camp food is definitely optional – although if you decide to not do food you should try to ensure that there’s enough restaurant options and coffee shops for attendees nearby the venue.

If you do decide to do food check what your venue’s policies are. Most venues will have a policy that you must use their own food services and can’t bring from outside sources; and that also means that price will be higher because venue-based food is almost always more expensive (always in my experience). This is where gauging interest is important because since you aren’t charging a fee there’s no way to know how many people will show up. If you charged a fee, even if they no-show you could still cover their food, but in this case its all about estimation.

You could run your first code camp, gauge attendees, and use that to base future events off of and incorporate food later. Or if you’re confident in your estimations then figure out a reasonable menu. Code camps are the *only* event where I think continental breakfasts are ok. Also look at sandwiches, pizza, or chicken fingers & salad for lunch – typically on the lower side of cost and generally liked by most people. Do take into account people’s dietary needs (allergies, cultural preferences, etc.). I avoid any food option based on pork or seafood and stick to chicken or beef from a meat point of view. You could have vegetarian and vegan folks as well. Just make sure when you review the available menu that there are options in case you need alternate meals.

Step 3 – Who’s Running This?

Now that you have your venue, a date, and food cost, it’s time to start approaching sponsors. But first, this is when you should tighten up your leadership organization if you haven’t already. These types of events get run by very well meaning individuals who want to improve their communities, but they’re also run by people who aren’t perfect and stuff can happen (I blogged about a community event gone bad here). So let’s talk about how you can organize this.

For the Winnipeg Code Camp although I’d organize it we’d use the Winnipeg .NET User Group as a neutral and already set up organization to run finances, sponsorship, and communication through. Finances because a community group account was already set up and the guy who handles finances was willing to be the pass through for everything. It’s also good to have a neutral body be the host for sponsorship – some companies don’t want the perception that they’re partnering with competition to put on an event, but they’ll definitely sponsor a neutral organization’s event (so they’re sponsoring the .NET User Group’s Code Camp, not putting one on with competitors).

Here are options:

Leverage an existing organization to act as the “host”. A technology user group is ideal for this, however note that whoever is seen as hosting is also owning liability for the event as well. We’ll talk about that in a second.

Write up an organizer’s agreement stating who is responsible for what and who is accepting liability for the event. Yes this sounds scary, but its a necessity. The reality is that putting on any type of event, free or not, holds some level of risk that needs to be mitigated. This also protects all organizers.

Create a corporation to run your events out of. This is probably extreme though, but its what I ended up doing for my conferences. For code camp events you probably don’t want to go through this rigor but it does dot ALL the i’s and cross ALL the t’s. It’s also costly and time consuming.

A note on liability – this is always a consideration when running an event. Even if you’re the nicest person in the world putting on a free community event for the betterment of the community, if someone eats bad food or trips and breaks their leg you could still be named in a lawsuit. Event insurance is very inexpensive. For Prairie Dev Con I pay $300 - $500 which covers me for food-borne illness and any type of injury that could occur while at the conference. The insurance will need to be made by a person or entity though, and unless you’re running this under a structured legal entity then somebody may be the one to *own* the liability coverage (and any liability).

Step 3 – Sponsors

Now that you have venue costs and an estimate on food costs, you can approach sponsors – which is how code camps are typically funded. You should create a package you can present to sponsors:

What is the event and what is the vision for it, what are the goals.

Who is involved and who will the attendees be.

What is the ask of the sponsor.

What will they get in return (logo recognition on marketing, website, opportunity to do a presentation, etc.)

I would *not* put a limit on the number of sponsorships you have available. Have a number that you need to get to in mind to cover your costs, but if you get more sponsors that’s ok – you can spend the money for prizes or extra perks at the code camp. Just have the mindset that you want to spend ALL of the money on the event – there’s rules/tax implications for volunteer groups who carry money forward and I don’t know them all (I have an incorporation now so I just run stuff through that).

Step 4 – Website and Ticketing

You may want to get a website set up before you approach Sponsors, just so they can see that there’s an online presence and the event is legit – or you may not if you have personal connections to those you’re looking to get sponsorship from Regardless, you should get some website up as early as possible once you have a good idea on whether the event will be a go or not.

You will also need some way for attendees to register. There’s lots of ticketing/event-registration sites out there, my fav is Picatic. Your registration method needs to be more than just collecting a name/email and tracking registration numbers. There’s a few key pieces of info you need to ask.

Food Allergies/Preferences – Does the person have any food allergies? Are there any preferences you need to be aware of (personal preference, religious/cultural, etc.)?

Emergency Contact Info – In the event something happens, who should be contacted.

Consent to Media – Are you planning on taking pictures and posting it to social media? You may want to get their permission to use them in pictures online. At one conference I had an attendee ask that she not be included in any event pictures because of fears about an ex-boyfriend who was looking for her.

Most good ticketing sites will let you add custom questions to the process, which is the easiest way to collect this information. (Note – one way to handle the “can I take your picture or not” practically is to provide a slightly different name badge (colour, ribbon, etc.) to identify those who wish to not be photographed).

Step 5 – Speakers

You can approach speakers and sponsors at the same time, but I put it here in the order because you need to have sponsors lined up first to ensure you can cover venue costs and book the venue. Ideally you start gauging speaker interest early and continue looking throughout the organization process so you can have some people/sessions ready to post on the website when it goes live.

For code camps, speakers tend to be locally sourced and while outside speakers can definitely be invited a code camp usually doesn’t have the dollars to pay for travel or hotel. I’ve known many speakers (and have done this myself as a speaker) who will pay their own way for a code camp, but I see code camps as a great opportunity to groom new and upcoming speakers and give them a stage to help improve their presentation skills. The point of a code camp is to learn from each other, not come out and see big-name speakers.

In fact for my code camps I wouldn’t vette out speaker submissions – I ran it as a first come/first served basis. I would however discuss with a speaker if they submitted a duplicate talk as someone else, or if we had an imbalance of sessions (i.e. you don’t need 5 talks on Intro to ASP.NET) and work it that way. I would also offer guidance and coaching for those that are new to speaking.

Call for speakers can be as simple as providing the info to various community leaders to spread through their membership groups, leveraging social media, posting to services like SpeakNet, and also asking sponsors if they have anyone in their organizations who are interested (but not for a sales/marketing point of view – has to be about code/technology). Of course you should have a method for people to submit their session submissions that can be shared on your event website and social media. I use Survey Monkey for this – you can build a “survey” that captures speaker info and their session details for free.

Step 6 – Promotion

Time to promote the event! Social media helps out a lot here, but there’s still some things that will require in-person contact of some sort. Working personal connections to get the word out works wonders, especially if its seen as a low cost, community driven, learning event open to everyone (like a code camp typically is).

Also look for non-traditional local industry groups to help get the word out – groups that deal with management/decision-maker level folks in IT (i.e. ICTAM) or Chambers of Commerce. Newspapers will sometimes allow events to be posted for free in their business sections under upcoming events.

Speaking of newspapers, definitely reach out to local media at print, radio, and TV either to get visibility before the event or at the event.

Step 7 – Prep for The Event

The event is coming up and its time to start prepping for it! Whether a low-budget code camp or a for-pay single day event, here are some tips for getting ready!

One rule of thumb I’ve learnt is that you need to invest money into the areas of your event that provide the most value. Especially for a code camp, you shouldn’t worry too much about all the “nice-to-haves”; you don’t need t-shirts or fancy badge holders or big banners. If, after you cover the basics, you still have budget left over then by all means look at adding some special things to the event. But don’t put them at the top of your list.

Nametags – Amazon is your friend here! You can get plastic name-tag holders and lanyards for much cheaper than paying retail at places like Staples. If you’re only doing a small amount to 200 nametags, you can print them off yourself with a home printer and nametag printer sheets (also available at Amazon).

Signage – Staples is actually a great place to get posters made. a 4x3 feet poster is about $35 here in Canada, which is pretty inexpensive.

Mobile App – I used Guidebook for Prairie Dev Con Regina 2015 and was very happy with it! It provides iOS and Android apps with full schedule and the ability to build your own schedule, as well as other features like showing venue maps and custom lists. And its FREE for events under 200!

Print Schedules – Event with the mobile app, many people still like to have a physical, paper schedule in hand. Black and white is fine unless you have extra funds to do colour. Make sure that whatever you print matches what’s on the website and mobile app

Confirm Venue Access and Review Schedule – Make sure that you confirm that you’ll have access to your venue space before your event is scheduled to start. You’ll at least need to be there a few hours before your event starts to do any setup (registration table, signage, etc.). Make sure that security for the venue is aware of your event and what time you’ll be getting access to the rooms. Confirm numbers and times for food. If you need to drop anything off the night before, know where the materials will be locked up and who will be able to get you access.

Communicate with Your Attendees – Make sure via email, social media, blog, etc. to remind attendees (and speakers) about venue, times, locations in the venue, and the schedule, and where to get more information. Don’t forget to include information about venue parking! One thing I strongly suggest is to have an Attendee FAQ area on your event website where you can post all this information and make it easy to refer people to it (just send them the URL). People are busy and providing a friendly reminder is definitely appreciated as they may have registered a while back and not had a chance to keep up with event announcements.

Social Media – Make sure you have all your social media accounts created and hashtags decided on.

Step 8 – Run the Event!

Time for the big day! Running a code camp is a lot of fun, but if its your first time it can seem daunting. No worries though, you’ll do great!

Remember the timing format we talked about earlier:

8:30 – 9:30 Breakfast/Registration
9:30 – 9:45 Welcome
9:45 – 10:45 Session
11:00 – 12:00 Session
12:00 – 1:00 Lunch
1:00 – 2:00 Session
2:15 – 3:15 Session
3:30 – 4:30 Session
4:30 – 5:00 Wrap-Up

Let’s break this down.

7:00 AM – 8:30 AM

Get to the venue early, at least an hour ahead of time based on how much pre-event prep you’ve completed. Make sure the venue has a table outside your main meeting room for registration. I usually put out nametags alphabetically on a table and let attendees pick them up, with one or two people available to help and re-organize the tags. If there’s any swag or materials (like schedule hand outs), have them available at the registration desk as well. If there’s any signage you want to post giving attendees directions get that up during this time.

8:30 AM – 9:30 AM

Direct attendees to where food is and the plenary room. In the room, have a laptop setup with a rolling PowerPoint with information like venue wi-fi (if available), link to session surveys (Survey Monkey is great for this as well), thanks to sponsors with sponsor logos displayed, and any other important information.

9:30 AM – 9:45 AM

This is where you welcome everyone to the event, introduce yourself and the organizers, thank the sponsors, and go over housekeeping things like reviewing the venue map (point out both rooms and things like where bathrooms are), reviewing the schedule, where attendees can submit session surveys, encouraging them to use social media and what accounts/hashtags to use, and how you’ll be drawing for prizes at the end of the day (if you are). Don’t forget to thank the speakers and the attendees – code camps need everyone to succeed and the effort people put forward, even just giving up a Saturday to attend, should be acknowledged.

9:45 AM – 12:00 PM

The rest of the day will be all about the sessions. As an organizer you should be making rounds ensuring that everything is going well. Your biggest issue during this time will be technology issues – people not being able to connect to a projector, laptops crashing, projector bulbs burning out, etc. If you can, have a backup projector of your own on hand and a back up laptop so that worst case scenario files can be transferred over. At one code camp I had a presenter have his VGA port die between when he successfully practiced that morning to when his session was that afternoon. Weird stuff can happen.

Also gauge social media – watch for how people are enjoying the event and if they post any concerns or issues.

12:00 PM – 1:00 PM

Lunch time! Use this time to make any announcements, updates, or reminders in the plenary room.

1:00 PM – 4:30 PM

Same as the morning sessions.

4:30 PM – 5:00 PM

Here you bring everyone together for a wrap-up. Here’s where you thank everyone again for coming, thank the speakers and sponsors, review the days events, and do any prize draws.

Don’t be surprised if the number of people you started the day with is smaller at the end. Not everyone can make it the whole day, and that’s ok.

Once you’re done, all materials you had are packed up and you’re ready to leave, this is a great opportunity to go out somewhere for after-code-camp beers/food/whatever and continue the awesome community building!


Once the event is done, your role as organizer isn’t. There’s still some after-event items you need to do.

Send out an email to your sponsors thanking them for their support and also providing information on how well the event went. Sponsors want to know that their sponsorship dollars were put to good use, so let them know!

Send out an email to attendees thanking them for coming out and encouraging them to continue the conversations started at the code camp – give links to various user groups in the community, show where they can get session materials, and let them know where to submit feedback for a post-event survey (you should have a post-event survey btw…Survey Monkey is great for this).

Do a post-event review with the other organizers. Talk about what you could do better next year, what you’d want to keep the same, and how you can make the event better.

Do you have money left over? You shouldn’t but if you do figure out what to do with it. Finding a local tech-related (or not) charity to donate the money to is a good option if you have no other ideas. Remember that the idea is to have no left-over dollars by the end of the event.

And That’s It!

We covered a LOT of information in this post, and if you felt a little hesitant before you may be feeling very hesitant now. PLEASE DON’T BE! Running the Winnipeg Code Camp was one of the most rewarding and fun experiences for me, and putting on a code camp can be a great experience for you too! If you have any questions or comments, or want to discuss in more detail how to get your code camp or one-day event off the ground, please either leave a comment below or hit me up on Twitter!

Thanks for reading!


Review – Guidebook, Mobile App for Conferences/Events

For Prairie Dev Con Regina I decided to use Guidebook – a service that provides a mobile application for conferences and events along with online administration/content-management tools. If you’re running any sort of conference/event, you should definitely check it out! Overall I was really happy with it, only a few minor gripes. Here’s my review.

Image result for guidebook logo

The way Guidebook works is that you create your “Guidebook” on their website. Then your attendees download the Guidebook app and access your specific guidebook. There’s different pricing tiers which grants different features, but for the free tier (which is capped at 200 downloads comes with almost all the key features. For PrDC Regina I used the following:

General Info – Info about the event, contact information etc.

Schedule – Mobile version of the schedule, complete with session description and the ability to “add to favorites”

My Schedule – Allows you to see all your favourited sessions by day and time! Worked really well.

Maps – You upload your own map images for the venue, its displayed here. Multiple maps are allowed.

ToDo – Just a place for attendees to add notes.

Twitter – A twitter feed based on whatever accounts you pre-configure.

Inbox – This allows you to message attendees with updates, although I don’t think you can get push messages unless you do a higher tier of service.

Custom List – You can add custom lists of information. I’ll talk about what I used this for later.

For most events, this is more than sufficient – it worked great and it was free! Feedback on the app from attendees was very positive as well. Critique wise, there’s only a few things I’d mention.


If you want to see multiple maps, you have to press on the navigation arrows at the top. Some people didn’t realize that, because their default was to try and swipe left or right from the map image to get to the next one.

Speaker Integration

It would have been great to have a Speakers section as well, and integrate the speaker information with the schedule data – so attendees could see the abstract for a session as well as the speaker details.

Feedback and Surveys

Remember that custom list I mentioned about? So you don’t get feedback and surveys unless you go for a higher tier of service. What I did was put a link to the Survey Monkey survey for session feedback in a custom list and made it available. Now, I don’t want to necessarily suggest that this needs to be available in the free edition because I get it – Guidebook is a business and they incentivize people to get more features by paying. But this leads me to my final point…

Payment Tiers

The tiers seem a little…off. You get a lot of features for free up to 200 attendees. My events usually cap out at 150 so I’m good. I’d love to offer the surveys and feedback feature in the app directly, but I can’t justify the $1750 price tag *just* for that feature. It would be awesome if they had an a-la-carte type of scheme, where for x dollars I could get different features, or have another tier for smaller events that provide some of the other features but for a cost (just capped at 200 downloads).

I love what Guidebook is doing and I applaud them for providing such an awesome service at a free tier that so many community-based events can take advantage of! Very happy with the experience and I’ll be looking to use them again at next year’s PrDC!

Thoughts on Building, Making, Being Positive, Fearing Failure, and Smoking Meat

I was recently gifted a smoker from my awesome Prairie Dev Con speakers – an electric Bradley 4 rack smoker! Upon reading the instructions, I realized that due to the “electronic” nature of the device, it can’t just be left outside to the elements like a BBQ can. So I started looking around at custom enclosures people were building and got some ideas. Now, I’m *not* what you would call a handy-man type of guy. I didn’t grow up doing carpentry projects or working on cars or anything like that, but regardless yesterday I built it. Here’s what it looks like (still needs stain and one more piece of plywood for the back)…


The experience was fantastic – I had my daughters help me with most of the construction, so we were able to make this a quality-time project building something together. I also got to use some tools I received as an office Christmas gift from years back that I hadn’t before. And I learned a lot – even though I know there are things I would have done differently in retrospect, and things I know I’d like to tweak with it even after its “finished”, it was a fantastic learning experience.

I was really encouraged at Prairie Dev Con earlier this month in Regina. We had a number of hands-on-labs that were very well attended and I was in awe of how willingly people were to jump in and try something hands on that’s new to them. This ‘makers’ movement in the IoT space, and also people willing to learn new ways of doing web development (as one commenter put it “ready to start using new skills at work right away!”) was really exciting to see. And it inspired me to “make” more.

I’ve been scared at times to try something new – actually it wasn’t even the “starting”, but more of the possible failing. I don’t know if its a case of imposter syndrome or not wanting to come across as being inept or what. But the first step, the first movement on a journey, can be the beginning of something awesome. The positive What If as opposed to the negative. The possibilities instead of the pitfalls. The rewards instead of the costs.

One thing I’ve learned is that the true feeling of success doesn’t come from outside, but from within. That feeling of accomplishment that you receive when you complete something – even if that something isn’t 100% perfect. I approached the enclosure project like an agile software project – this was iteration 1, done in a day, and with a retrospective of what I’d have done differently next time. And its functional, which is great because I want to start smoking some meat. :)

I feel like I’m rambling a bit – look, here’s the thing. MAKE STUFF. BUILD STUFF. EXPERIMENT WITH STUFF. Don’t allow external pressures or fears of “Am I good enough”, “Will I be accepted?”, “Doesn’t anything I do need to be perfect?”, and their ilk ruin your ability to have new experiences, in life or at work.

In a few weeks I’ll be starting on a new adventure. I’ll be working with a new team, in a new domain, on systems that are new to me. And I’m excited, even with all the unknowns, because I can’t wait to see what I can help build with my colleagues. I never want those nagging, negative “What Ifs” to get in the way of what’s possible.

Microsoft Ignite 2015–Microsoft’s Message

I was in Chicago last week for Microsoft Ignite, the second major Microsoft conference in as many weeks (Build was the week before). I had a fantastic time and wanted to share some thoughts on the conference over a few blog posts:

Microsoft Ignite 2015 – What’s Its Purpose?

Microsoft’s Message

Under Steve Ballmer the message of Microsoft was simple: Microsoft products must dominate every market segment that it or its competitors competed in. Certain things, like Windows and Office, have been standout successes for the company. Azure is still catching up to established competitors like AWS but the gap on features is closing rapidly. Certain areas, like Windows Phone and Bing, have been overshadowed by stronger competitors. Still, Microsoft always had one goal in mind – MUST WIN!

Now under Satya Nadella, the message out of Microsoft is different. Whether its releasing Office applications on competing platforms AHEAD of its own mobile devices, or releasing a free Visual Studio product named Code specifically for OSX, or open sourcing the .NET Core so it can run on Linux and OSX, the Microsoft of today does not look like the Microsoft of 2000 – 2010.

Satya has already been very forward in the companies focus, making it very clear and not mincing words:

There is Windows, there is Office 365, and there is Azure. That’s it.

-Satya Nadella

At Ignite this year Satya was on the stage again and continued to refine and clarify what it is that Microsoft now wants to be known as. This is from one of his keynote slides:


“Microsoft is the PRODUCTIVITY and PLATFORM company that will thrive in the mobile-first, cloud-first world.”

This basically echoes what he was quoted as saying earlier – Windows and Azure (platforms) and Office 365 (productivity) are the three main focuses of the company. But then Satya took it further to drill down into how they will achieve this.


The three tactics he identified were creating more personal computing, building the intelligent cloud, and reinventing productivity and business processes.

Create More Personal Computing

This one speaks to Windows 10 (across all devices including phone), One Drive (personal and for business), Surface, and Hololens. Windows 10 is looking to be an amazing evolution of Windows, blending the best of Windows 8 and the best of Windows 7 together into the right balance of familiarity and new features. The Windows Phone demos looked very good, and included a prototype scenario where a phone could be hooked up to a monitor via a cable and a keyboard/mouse via Bluetooth and operate like its a regular computer. Universal Applications allow for similar UI experiences across different devices – its a very intriguing story.

One Drive of course is part of that story – the idea that your documents are stored in the cloud ready for you to access across all your devices, personal and business.

Hololens is the new hardware darling of the Microsoft world right now, promising a new user experience unlike anything else before it. Those that got hands on with it at Build seemed to have positive reviews, but no devices were available at Ignite.

Build the Intelligent Cloud

What does this even mean? Well in Microsoft speak it means “the back end infrastructure that drives all of your enterprise mobility”. As an example, they released a new threat detection tool called Advanced Threat Analytics which can identify suspicious behaviour in your domain such as questionable logins or file access.

It’s one thing to use Azure for infrastructure, platform development, or to run/access software as a service. But the cloud needs to be much more than that – it needs to be a holistic solution, and that means features and applications built into the cloud to allow end users to better manage their infrastructure.

Reinvent Productivity & Business Processes

In a perfect Microsoft world, all your users would be using Office 365. They would have Universal Office Apps so they could use any device they wanted to. They would communicate using Skype for Business (which, by the way, is the official name of Lync going forward). They would leverage SharePoint, but not local SharePoint – Office 365 cloud-based SharePoint. They would develop applications for Office 365 using the available APIs. They would store documents in One Drive for Business. And what the hell – they’d use Surface tablets.

Microsoft already owns the productivity suite business, but they want to own it across all devices and platforms. Statements like “If you’re a web developer than you’re an Office 365 developer!” rang out in the Office area of the expo hall as booth experts showcased the new APIs available to developers; so its not just end users being courted here.

Get on the Cloud Bus!

It’s refreshing to see that the message coming from Microsoft, and Satya, is very consistent across events and over time. Microsoft isn’t trying to do too many things at once or jump into markets they have no right being in. Windows, Azure, and Office 365 – that’s it. It’s nice to know where they stand and where they’re going.

Microsoft Ignite 2015–What’s Its Purpose?

I was in Chicago last week for Microsoft Ignite, the second major Microsoft conference in as many weeks (Build was the week before). I had a fantastic time and wanted to share some thoughts on the conference over a few blog posts:

Microsoft Ignite 2015 – Microsoft’s Message

What is the Purpose of Ignite?

TechEd used to be the main learning conference Microsoft would run every year. While events like the PDC (Professional Developers Conference) and Mix talked more about future or bleeding edge technologies, TechEd was always about learning about what was current and adopted. It also had a 30/70 split between developer and IT pro content. Over the years this changed, and TechEd was really seen as the IT pro event while Build became the developers conference.

With the announcement of Ignite many wondered what would happen to TechEd. Initially the messaging was that both events would be co-located; on-premise content would be “TechEd” while cloud content would be “Ignite”. As we got closer to the event all mention of TechEd was gone though, so we’re left with Ignite and Build as the two Microsoft North American conferences.

This transition was felt throughout Ignite, with content being an interesting mix. Consider the graphic below, taken from the Ignite sessions site (all content is available for viewing by the way). This breakdown gives you an idea of where the content focus was from a product/platform point of view.


Some of this is a bit misleading as well. SharePoint sessions were overwhelmingly associated with Office 365. SQL Server sessions talked about SQL in a cloud/Azure context or on-premise topics for SQL 2014; although SQL 2016 is slated for a preview release this Summer, I don’t believe there was any content supporting it at Ignite.

Also interesting is that nowhere do we see Visual Studio as a filter option for Products, yet there were definitely developer-based sessions. According to the Audience filter options there was 158 “Enterprise Developer” focused sessions. The majority of those were focused on Windows 10 universal apps and Office 365 development, although I attended some great sessions on Entity Framework, DDD, and ASP.NET 5; these were well attended sessions too, with around 500 – 600 people in each session.

One thing that’s striking though is the number of sessions aimed at IT Influencers, Implementers, and Decision Makers – 843 compared to 193 for Developers and Architects.


So where does this leave Build and Ignite from an audience perspective? Initially I saw it as Build for developers, Ignite for IT pros but I don’t think that’s the case anymore. It’s not a line divided across role boundaries, but organizational ones. Build, with its smaller attendance cap and west coast location, is really the event for commercial, start-up, product-based, and/or small-to-medium sized organizations. Ignite, hosting over 23000 people and with its more central geo-location, is the event for anyone in enterprise IT. Build is about how to create custom applications on the Microsoft development platform. Ignite is how to implement, customize, and manage Microsoft products and platforms. The environment you work in plays a much larger role in which event is right for you than what your role at work is.

With Microsoft wanting to push more Azure adoption in the enterprise, it makes sense that it would focus on the IT pro side. But a little more developer content would be a welcome addition and make Ignite much more attractive for software developers.

Reflections on INETA

It was announced this week that INETA, the International .NET Association, was shutting down operations. While some of us knew it would come to this eventually, its given many of us pause to reflect on INETA and how its presence impacted the developer community worldwide.

I would not be where I am today if not for INETA.

Strong statement, but true. In 2005 I submitted an essay about my role in the community as a user group lead to a contest where INETA would send selected individuals to Tech Ed 2005 all expenses paid. I was picked and off to Orlando I went. There I met lifelong friends for the first time, and through them more people who are still lifelong friends. I was going to list them all but it would end up being you reading a list of names, so let me name the 5 who were part of the infamous “There’s only room for 5 but there’s 6 of us” drive in Orlando: Chris Williams, Rob Zelt, Caleb Jenkins, Matt Ranlett, and Brendon Schwartz.

Through INETA and becoming a Membership Mentor I connected with User Groups across Western Canada and made more friendships that have endured: Jennifer Pearcey in Saskatoon, Gary Pronych in Regina, Don Belcham in Edmonton, Nolan Zak in BC.* It was because of INETA that I drove out to support a guy named James Chambers in Brandon who was starting a .NET UG there.

While INETA would eventually cut off funding speakers for Canada (its a long story, find me and we’ll talk over beers), they were responsible for top talent like Rocky Lhotka coming to Winnipeg, Kathleen Dollard doing a tour across the Canadian prairies, and Andy Dunn doing an XNA talk in Calgary as just some examples. INETA *did* support Canada and was a huge part of the Canadian user groups’ growth and success.

INETA afforded me opportunities to meet fantastic people passionate about technology and software development communities, and for that I will always be grateful for my involvement with INETA. It’s legacy is definitely being carried on.

Thank You Bill Gates and Paul Allen

Microsoft turned 40 this week. That’s a huge accomplishment for any company, but considering Microsoft’s growth and its impact on the technology industry its even more impressive.

Many articles will talk about the impact Microsoft has had on personal computing, but what shouldn’t be lost here is Microsoft’s impact on the global economy over the last 4 decades. Out of one company and one company’s products, millions of people have found gainful employment and created amazing products of their own.

I graduated college in 2001. In my 14 years, in which I’ve focused on Microsoft technologies, I’ve…

- traveled all over North America; LA, Seattle, Orlando, Minneapolis, Anaheim, Atlanta, San Francisco

- met amazing people, created long standing friendships, and continue to connect with people from around the world

- found common ground in my local technology community and created personal connections

- worked on awesome software projects and with amazing people

- been given opportunities like the MVP program, Microsoft Regional Director, and speaking at various conferences and UGs

And all of this because 40 years ago Bill Gates and Paul Allen started a company called Microsoft.

Many of us owe our careers in part to the technologies and platforms Microsoft created. And by many, I mean literally millions of people around the world who develop software or manage IT infrastructure.

So thank you Bill and Paul not only for creating a fantastic company who achieved its goal of making a computer in every home a reality, but for also creating an industry that many of us have benefited from personally.