Hello 2017

As we embark on yet another trip around the sun, it’s time to say “goodbye” to 2016 and “hello” to 2017. Good old ‘016 will definitely not go down as the year of blogging. While an exciting year with many adventures, we’ll leave it to social media to document items worth noting.

Looking forward however I’m going to make an effort to get back to putting up more technical posts here again. Writing and presenting have always been great motivators to dig into topics even further. I’m looking forward to sharing some of the things I’ve been up to with Azure, Hololens, IoT, ASP.Net Core and even a little python for good health.


What’s in a Name? ASP.Net Core and .Net Core

It was recently announced by Scott Hanselman that “ASP.NET 5 is dead – Introducing ASP.NET Core 1.0 and .NET Core 1.0” which may come as a surprise to many. Most that have been following along know that ASP.NET 5 brought with it a lot of changes. While in many cases it was a next step from previous versions, it also meant a fork in the road introducing some significant changes.

I’m personally in the camp that his happy to see this name change. I’m not sure that it’s the perfect name, but it addresses the concerns about simply incrementing the version number and not addressing that this is something very different. I however have no better ideas so I’m throwing my support (whatever that’s worth) behind this decision. I feel this is significant because as ASP.Net has grown over the years, developers has enjoyed an amazing level of backwards compatibility with limited breakign changes. This has often limited the ability to do things differently. Now you may be throwing your hands up, not wanting to do things differently in which case ASP.Net Core may not be for you.

Let’s pause for a moment a look at what I just said, “ASP.Net Core may not be for you.” In other words, you may not want to choose this fork in the road. What if however without the name change I was forced to say “ASP.Net 5 may not be for you”? That wording makes it seem like the end of the road. ASP.Net 4.6 is not going away, and while there are not currently any public details on what new developments there might be, it is in no way suddenly going to stop working or stop being supported. ASP.Net Core is a new direction that enables those that want to go that direction, it’s not simply a new version of ASP.Net.

According to the information Scott published:

  • ASP.NET 5 is now ASP.NET Core 1.0
  • .NET Core 5 is now .NET Core 1.0
  • Entity Framework 7 is now Entity Framework Core 1.0 (EF Core 1.0)

There are some extremely important details that I think are worth calling out regarding these.

  • ASP.NET 4.6 requires .NET Framework 4.6 and runs only only on the windows platform.
  • ASP.NET Core 1.0 runs on both .NET Framework 4.6 (Windows) and .NET Core 1.0 which runs on Linux, Mac, and Windows.
  • .NET Core 1.0 is a subset of the full .NET Framework 4.6 that many are used to working with. This goes back to the new direction mentioned above, resulting in portions of the framework note being included. There are many things that are not needed for reasons such as beign windows specific, redundant, or not needed. Over time this gap may shrink, but for now it has some significat impacts.

There’s no doubt that the “Core” technology are new and bleeding edge compared to their battle tested predecessors, but this creates an opportunity to create a powerful new platform that is more in tune with today’s modern development, deployment, and hosting techniques.

Happy New Year: 2016 Edition

As we all begin another trip around the sun together, it always seems like a good time for a bit of reflection on where we’ve been and where we’re headed. While a low year for the blog, 2015 was a busy year with many opportunities, challenges, and changes.

One of the higlights of 2015 for me was presenting a talk my friends at the Triangle .Net User Group  titled “Change, Opinions, Principles, and Learning.”


It brought together a number of things that I’ve been spending a lot of time thinking about related to maintaining our skills in technology in a rapidly changing world. In a nutshell we must learn to deal withe change around us, be thoughtful enough to form opinions for ourselves, be mindful enough to stick to a foundation of principles to help guide us, and along the way to continue to push the envelope through deliberate practice to expand our knowledge and understanding. It was a lot fun preparing for the talk by putting a collection of thoughts and notes together into something semi coherent that could be shared with others. The converstations with others about their thoughts and ideas after the presentation was equally rewarding and I’m grateful to all of those that continued the conversation.

And it’s in the spirit of continuing the conversation and the learning that I look forward to 2016 and all that it has in store for us.

Free Events Deserve Your Respect

TL;DR Version

By registering and not attending people disrespect event organizers, sponsors, and fellow attendees by not showing up and creating added cost, wasted food, and taking seats of others that would have liked to attend. Show some respect: Cancel your registration if you can not make it and don’t just show up if you didn’t register.

The Long Story

The local tech community is very fortunate to have a number of very active groups organizing a large number of free events. These include monthly evening meetings as well as special full day gathering at various venues across the region. In addition to the great content being presented, attendees are quite often provided food and beverages free of charge. Websites like meetup.com make it much easier for organizers in Raleigh/Durham to promote their events which has helped to grow the awareness and attendance at these events.

Obviously these events don’t just magically happen on their own. Each requires a certain amount of planning, coordination, and typically sponsorship to make the event happen. Speakers are scheduled, venues are booked, and food is ordered. None of these are done in a vacuum. Speakers and topics are selected based on attendee interests, venues based on location and space required, and food based on expected attendance. The last two are based heavily on the organizers ability to project the expected attendance of the event.

Sites like Meetup, Eventbrite, and Event Day provide organizers with a way to list events and allow attendees to quickly and easily register or RSVP for the event. Unfortunately it may be too easy to register for an interesting event without a lot of thought or effort. With meetup, a single click lets an attendee say yes I’ll be there. That single click lets an event organizer know how large of a space is needed and how much food to order. Often when the number of attendees reaches capacity of a venue organizers will either put in the time and effort to find a larger location or cap the registrations creating a wait list potentially excluding some that would like to attend.

This all sounds great until we face the reality that a lot of people will register for an event and not show up. There’s no doubt that unexpected events happen in life beyond our control, but this post is not about that. It’s about people that register and forget, change their mind, or some other excuse and do no update their registration to reflect it. By not updating their intentions that acts of finding the correct size venue, ordering the right amount of food, and enabling all of those that what to attend becomes much more difficult. Guessing at the number of no shows creates a risk of estimating too low and getting too small of a space and not enough food, or estimating too high and having waster food, needless expense on larger venues, and potentially needlessly turning away attendees that would have shown up. If sponsors see their contributions being wasted they are going to be much less likely to contribute to future events.


[The left overs]

In the end this boils down to respect. Respect for the event organizers, the sponsors, and your fellow attendees. The small act of keeping registrations accurate has huge ramifications on these events which people need to understand. While it’s one recent event that was likely needlessly moved to a larger venue and plenty of food wasted because of registered attendees that did not show up, we see it happen over and over again at monthly meetings, Code Camps, etc resulting in added cost and waste.

Before organizers are forced to stop offering or start charging for these events, please ensure you are giving these events the respect they deserve and registering responsibly. Cancel your registration if you can not make it and don’t just show up if you didn’t register.

For Event Organizers

This is an issue for all of us that is not going to change over night. It’s something that we all need to work at to improve. Here are a few practical steps I think we can take:

  • Verify registrations at events, make drop-ins aware of the need to register and track no-show culprits
  • Share no show and waste information with attendees
  • Don’t allow registrations to early before an event
  • Send multiple reminders as events approach reminding people of the event and asking them to confirm their status
  • Don’t bother with benefits like food/beverages for attendees

For a number of events I know the solution has been to simply start charging attendees to attend which results in fewer people just not showing up.

Unfortunately there is no simple answer and a solution is going to need to involve everybody involved.

Hello 2015

Wow, times flies when you’re having fun!

2014 was quite a year full of excitement and change, opportunity and experiences. A special thanks to all of the amazing people that were a part of it! To save a few words… here’s a picture:



With an amazing year in the books, I’m looking forward to everything 2015 has to offer and hoping going to have a lot more about it appear here on the old blog.

Enjoy the ride!

TRINUG Intro to XAML Layout Presentation

A big thanks to everybody that showed up to the TRINUG Intro to XAML presentation / hack night. It was a fun format to present some content while fully engaging and audience coding away. It was awesome to see everybody’s interest and enthusiasm.

There were definitely a few areas that I didn’t get to dig into as much as I would have liked to during the presentation with all the Q&A/Interactions, so I thought I would put together a quick video summary of the Xaml Layout portion of the discussion. I’ll hopefully record this a bit better as it’s a little rough but wanted to go ahead and share it out any. Enjoy!


Resolving Issues with IE10/11 HTML5 Video on Windows 7

Recently I encountered an issue on a project where html5 videos that had been working fine were having playback problems on Windows 7 systems in Internet Explorer 10. Further testing showed that IE11 had the same issue as well. Some time on the search engines found others with issues but no solutions.

In the end I was able to trace the issue back to the content types or mime-types that were being assigned to the files when they were being upload to Azure blob storage. I discovered that while videos with the mimetype of “video/mp4” played fine, other that had been labeled as “Video/mp4” would not play. The difference being the upper case V. Windows 8 running IE 10 and IE 11 seem to have no problem with this, but something in the Win7/IE10 combination has issues. (IE9 seemed to work fine). From what I could tell, according to RFC 2045 the standard that appears to document content types, case should not matter:

"The type, subtype, and parameter names are not case sensitive.  For
   example, TEXT, Text, and TeXt are all equivalent top-level media types."

Oddly, in the end it did matter. Hopefully if you’re searching for Internet Explorer 10 HTML5 video playback issues on Windows 7 you’ll find this solution sooner than I did.


It’s been a fun week of community events!

It’s been a fun week participating in local developer community events. This past Saturday was the (9th?) annual Raleigh Code Camp where I had a blast presenting on some of my recent work with Windows Azure Mobile Services. This yearly event put on by volunteers from TRINUG is always an amazing event, bringing together attendees and presenters from near and far for a geeky day of learning.

Later in the week I participating in a panel of “loud people” discussing “How do you stay current in our warp speed environment?“. The panel brought some interesting opinions and that audience participated in a fun conversation about our industry. A lot of the conversation focused around learning resources, including books, blogs, videos and twitter. It was a reminder of how much I enjoy reading quality content on a variety of blogs, but also how I’ve neglected posting to my own. I tried earlier in the year to get back in blogging groove again and failed, but I’m going to take another shot at here. Not sure if anybody is still here reading, but if you are you’ve been warned.

While I get back to speed, please check out some other local bloggers:

David Green – http://nodevleftbehind.com
Jamie Dixon – http://jamessdixon.wordpress.com
Steve Suing – http://www.stevensuing.com/

The Post Function Key Era?

Almost every personal computer I’ve owned throughout the years has included “function
keys” on the keyboard. According to Wikipedia:

A function
is a key on a computer or terminal keyboard which
can be programmed so as to cause an operating system command interpreter or application
program to perform certain actions

From my Commodore 64 and Amiga’s, every desktop and every laptop I’ve owned there
have been the familiar site of that row of keys. Even my MacBook has them, although
they try to hide but…. The function key has always been there through the history
of the PC.

Smartphones and their on screen keyboard have made us very familiar with a reduced
selection of keys. Windows 8 makes touch devices with no physical keyboard attached
are enabled for typing through an on screen keyboard which has a reduced number of
keys and modes that you can switch between to access additional characters, such as
numbers. Missing from the on screen keyboards are the function keys.


One of the most talked about elements of the recent Microsoft Surface unveiling has
been the keyboard cover, providing a physical keyboard for the tablets. If you look
closely at the top row of keys… you’ll see something different from the majority of
keyboards attached to PC’s today…


Those familiar F1-F12 function keys are gone, replaced by keys for volume, search,
and web.


Is this the end of the function key? As developer write Windows 8 applications, they
can no longer rely on the existence of the “F-Keys” for user interactions. Will other
keyboards follow along? Do we care? What will be the next key to go? Will the Post-PC
era also be the Post-F-Key era?

[Parting side note: Second to only the “Not enough memory to eject disk”error on early
Mac’s, by favorite BIOS boot error of all time is “No keyboard detected: Press F1
to continue”]