About Punkcoder (James McKee)

undefinedI am a Software Developer with a passion for ALM, Agile, and Coding Practices. I have been working in .NET as a developer for over a decade, a network admin for years before that. I have worked for large companies and small ones, many that you would recognize some that you probably interact with. I am opinionated and deeply curious about the world. If you have a problem there is a good chance that I would be interested in hearing about it. More than that I want to help others, mostly because I believe that helping a single person raises the quality for everyone.


Macro alias: FCCInternetCountdown

Latest Blogs

Migrating the site to umbraco.

Created On: 16/01/2015 17:16:42


So I have been working on migrating the site from DNN to Umbraco, in the long run it's a better fit for me. Hopefully this will mean more updates in the days to come as I will have less of the other maintenance to do on a regular basis.


Building Resilient Networks

Created On: 22/07/2014 00:00:00


It seems to me that there is an interesting space in the development of secure applications that is on the edge of hitting critical mass. Specifically in the space dealing with taking sites off-line by third-party organizations or governments. Two interesting ones that came across my desk today are IPFS (https://github.com/jbenet/go-ipfs) and cockroachDB (https://github.com/cockroachdb/cockroach). This has been an area that I have been deeply interested in for a very long time, as well as putting some of my own thoughts behind the process. I'm encouraged to see that both of these projects seem to be heading in the right direction, and I definitely want to give them the shout out for doing some amazing implementation work so far. Both appear to be an alpha but I'm very interested to see where these both go.


Your warranty will expire soon.

Created On: 15/11/2013 00:00:00


Every once and a while you get an email message that makes you a little concerned then you read over it and then you find something that makes you laugh as a part of it.  I very recently got a newer machine for work, it came with the warranty.  So you could imagine my concern when I received an email message saying that the warranty was running out.  That was until I looked at the date on the expiration… smooth move Dell…




The dangers of supporting Legacy Browsers.

Created On: 08/11/2013 00:00:00


From time to time I get request to add support for a browser that has long since gone the way of the dodo.  If you are regularly using IE7 you are the reason we can't have nice things. I say this being both humorous and literal. Customers that insist that there still be support of IE6 since their nephews brothers friend still uses Windows XP. There are a multitude of reasons that this is a very bad practice.

  • Support for modern functionality suffers from having to support browsers without modern functionality.
  • Developing sites for older browsers leads to a functionality spread that can be difficult and costly to develop.
  • The main issue with using older and outdated browsers is the fact that you are opening yourself to allowing insecure user access to your application.

The first of these items can be explained in the fact that with all of the new features and functionalities that have evolved on the internet over the last couple of years, if you are targeting your website for an older browser you are effectively building your site for the past.  New functionalities and ways of doing things are evolving all the time, it’s not uncommon for programming tools to change multiple times over the development of the smallest site. By targeting older technology you are loosing out on many of those features that may reduce the cost of your development, as well as provide better value.

The second item is that older browsers do not behave the same way that their newer cousins to.  On the whole all of the browsers are coming closer and closer to similar implementations of technologies like javascript functionality and css rendering.  Older browsers had much larger differences.  This is not by accident, over time it has become more important as the market of devices and browsers have expanded for the standard that everyone has been coding to, to actually become the standard.  For a long time market strength kept all of the browsers insisting that their version was the correct version of the truth.  Now with the expanding internet developers have pushed for better standards, and where those don’t exist they have created libraries to compensate.

The last of these reasons is really the only reason we should be talking about this. Hopefully the first two bullet points convinced you that abandoning these browsers is the way to go. If you still remain unconvinced then take this last one as the only word on the subject.  If you are using browsers like IE 7 you are no longer receiving security updates.  What that means is that there are confirmed open security holes in your browser, that are well documented and readably available. May of these security holes in the browser can give someone direct access to your machine.  If they have access to you hard drive it’s no longer your computer, It belongs to the person who compromised it.  They can use these security holes to install key loggers allowing them to capture passwords and getting user level access to your site. If you are supporting an out of date browser you are giving the malicious person access to your site at the level of that user.  If it’s just a user than that may not be an issue, but if its an admin you just gave away the keys to the kingdom. Harvesting account information and malicious attacks are really just some of the outcomes.

If you want proof of this I would welcome you to check out http://www.cvedetails.com/vulnerability-list/vendor_id-26/product_id-9900/version_id-53823/Microsoft-Internet-Explorer-7.html. Anything that you see in red is bad news, and if you see the words Exec Code it means that they have the ability to install and execute remote code on your machine. This would be why some many machines on the internet are participating in BOT Nets. The fact that you are still supporting IE7 means that you can't take advantage of any of the new technology that has added to the web IN THE LAST SIX YEARS. Btw, this is not limited to IE7, use the link above to examine other outdated software that you are using.  Update your browser and encourage your clients to do the same.


The challenges of working with Dot Net Nuke

Created On: 15/07/2013 00:00:00


To start this off I feel that it's important to say that for the past couple of years I have been working in an environment that most people would choose to avoid.  But by living through this I have learned some very valuable and interesting tricks that I am trying to transition to the new projects that I am working on.  I am still very new to working with DNN so there are still some learning curves that I am trying to find my way around.  But here are a list of items that I am working through, If there are any thoughts on these subjects I would be really excited to hear about them.

  1. Multiple server deployments with DNN - since there is so much that it tied up in the database for working with DNN I am still trying to figure out if there are any best practices around working with a development environment and a production environment.
  2. Data - Data seems to be a really sensitive subject inside DNN in the fact that the structure of the database seems to be much less complicated that say... WordPress.  But there are still weird and kind of silly paradigms that you have to fit yourself into to make things work.  The whole self referencing tables is getting a little old.
  3. Convention - Some of the things that you have to accept to be able to use the software seem more than a little silly.  The upgraded ORM framework seems really under powered compared to many of the options that are on the market.

With all of that said I realize that there is a huge user base out there that is currently making use of the product, and they wouldn't all be there if there wasn't a reason.  I am still working to that point and hopefully I will com to understand why everyone talks about the power of DNN.


Good News Everybody...

Created On: 01/06/2013 00:00:00


I have been waiting for a while to let this one out, but we are coming up on my last days at Avanade. For anyone interested I did not actively go looking for a position but it was offered to me and there was not way that I would be able to turn it down. It has been my pleasure over the past six years to work with some of the smarted people I know. But it has come time for me to move along.  But with that it also means that I will be able to do some more things that really weren't an option for me in the past so start looking forward to more cool things...


Agile development and database structures...

Created On: 03/08/2012 00:00:00


There are several levels of thinking when it comes to design patterns and even more so when you add into the mix a database.  I for a long time have been a fan of ORM designs, starting with my first introduction to the concept back in 2005.  At that time the method of thinking was that it was best to generate the structure of the DAL using code generation.  At the time the one that we were using was .net tiers with a product called CodeSmith.  Over time I have delved into several packages including nHibernate, MyGeneration (DooDads.net), tt4 tempates, and the latest entity framework. The importance of generation of the DAL can not be underplayed as much of the code that is involved at this level of the project is terse and repetitive.  Because of this it is generally rife with crtl-c, ctrl-v errors as well as inconsistent patterns.  Lets face it no one likes writing the same method over and over again, and because no one likes it it very seldom gets the real attention that it deserves. All of this included is one of the reasons that I am starting to become more and more of a fan of the .net frameworks built in Entity Framework.  In many ways it allows for the quickest and most forward method of auto generating a DAL. The main reason for this is that the generation of the code happens at design time within visual studio.  This point can not be emphasized enough. Database flexibility and the ability to change designs on a dime is a must when you are talking about developing greenfield enterprise applications. In every project that I have gone into there is always one person who is brave enough to say that they know exactly what the data should look like and because of that there is no need for flexibility.  Inevitably there are always changes for one reason or another. Since we can treat change as a constant the main thing that we have to take into account is how do your reduce the amount of pain associated with that change. I believe in order to get the most flexibility to change the key would be to write as little code as possible. If this is the metric that we are using, the code generation should always be the answer.  If we take the more stringent approach and change the metric to the least amount of time from database change to updated code, I think that entity framework win hands down. With entity framework there is no exiting visual studio to generate the code, there are no xml files to edit.  This is the essance of what it means to have a agile database and data layer. Beyond this  it offers natural protection from SQL injection attacks, without relying on developers to know the change and account for the nature of the framework. So when you set down for your next project and you are about to write you first CRUD Function, don't do it. Find a good ORM, in the end you will appreciate the time that it saves you.  


Tools for Visual Studio

Created On: 09/02/2012 00:00:00


I love Visual Studio, which is kind of convenient since its where I spend most of my time, and one of the features that I like the most about it is the amount of customizing and plug ins that are available.  So I thought that I would go through and cover a few of the items to help others learn from the productivity hacks that I have found.


The first thing that I change with any install of visual studio is the color scheme.  I’ve found that personally staring at a white background for long amounts of time leads to me having a burn in effect. After a couple of hours I find that it’s hard to focus because my eyes are tired and kind of burn.  It use to be that to change the color scheme in visual studio you had to go through and change all of them manually then export your settings.  Now there is a nice web site that keeps a good collection of them and allows you to export them for a particular version of visual studio. I personally prefer the ‘Desert Nights’ theme. Website: http://studiostyl.es/


CodeRush and Refactor!Pro

These two plugins are responsible for a productivity leap that would be difficult to explain without demonstrating what they do.  There is a version of called xpress for trying it out, but you won’t understand how fast you can be without downloading the trial.  I don’t get extended benefits any more since my transfer to ATS, I buy this one out of pocket.  I consider it an investment in my free time. Website:http://devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/


Source control is a must. Even if I am writing only a few lines of code, when I don’t have access to TFS, mercurial is my choice of source controls.Websitehttp://visualhg.codeplex.com/


Package management made painfully simple. Makes adding 3rd party libraries as simple as adding references,  also includes the ability to integrate project specific repositories. Website: http://nuget.org/


Helps you quickly build out documentation if you use human readable code. Website: http://submain.com/products/ghostdoc.aspx  


I Love my Mac... but,

Created On: 08/02/2012 00:00:00


So let me start by saying that I love my mac.  I own two of them and there are a great many things that mac does so well that others really can't touch.  But, before you tune me out let me state very clearly that I am not a fan boy. Here's why... So for the last couple of years I have been working as a .net developer.  It wasn't where I originally saw my self, I loved linux and I loved the power of the console.  To this day I still install cygwin and force the prompt to green on black, but something happened in the last couple of years.  That's part of what I want to dig into in this post be warned I don't have a particular direction for this so it could go everywhere. The first thing that I wanted to use my mac for was development.  After all thats what I do for a living, this is where I hit my first snag.  I tried using xcode, I have studied many programming languages and to this day write code in c++ and dabble in ruby.  I found objective c so terse that I couldn't continue.  So I looked for alternatives to programming in x code... there really weren't any that I found. Directly following this I went looking for cross platform solutions for developing on mac. This lead to more heartbreak. In the end I was able to figure out what my problem was, and I honestly believe this.  Mac's are designed for users, not developers.  The IDEs seem to be very primitive and the languages for developing native code seem backwards, part of this I know is bias because I know C# and because I know C# I am inclined to use it as a bar to hold other applications to.  But after getting accoustomed to working with visual studio, which covers 90% of the functionality that a developer would need and the plug in support for it is astounding.  I couldn't live without CodeRush... The final part of this quasi rant is that I would like to have my eyes opened, are there any really good tutorials for developing applications on the mac using xcode or any other IDE... If so I would love to hear about them.  Do CodeRush type applications exist to make coding objective c more palatable? For the meantime it looks like I will be going back to working with mono. James


American Lobby for the Future of the Internet

Created On: 26/01/2012 00:00:00


In the wake of the exposure of the SOPA / PIPA it's clear that the support for the internet is here and that any attempt to censor it will be met with increasing hostility.  With that said I can't help but wonder if it's time for us ( as a member of the internet community) for us to look to lobbying congress on behalf of the people.