Writing on software, leadership, and AI.

All of my long-form thoughts on software development, engineering leadership, and building products that last, collected in chronological order.

Azure Dev: Problem starting the plugin CredentialProvider.Microsoft [Solved]

In this break/fix post, I’m going to show you how to fix a specific error that I was getting in an Azure DevOps pipeline during a dotnet publish command that stated “Problem starting the plugin ‘CredentialProvider.Microsoft’”. Here’s the full error message: A credential problem? It was only failing on one of three project publishes and…

Expecting Developers to Leave

Because they will. My current team is the longest I’ve ever been with an organization (other than my own freelancing business), almost 5 years. Over the years the needs, motivators, situations, and lives of people within an organization can and will change. It’s the nature of life. There are obvious ways to reduce turnover, like…

What is Success Syndrome? (And How To Leverage It For Your Personal Brand)

First, what does Success Syndrome look like for a software developer? It’s when you become successful at something and then subsequently become overwhelmed. This can happen if you get a promotion, become the “go-to” person for something, or take on new opportunities due to your new recognition. You started out just wanting to be helpful…

Technical Debt Isn’t All Bad (Usually)

We’ve all complained about technical debt and legacy code, but it’s not all bad. When I was a junior dev, I would complain about lots of existing legacy code that I encountered. I ran into a lot of it doing contract consulting work. This wasn’t just the obviously bad stuff, either, like finding some homegrown ORM…

No Rules is the Best Rule

“Rules were made to be broken.” “There are no rules.” “Just follow the rules” Why are rules, quotes about rules, punishments for broken rules everywhere? When my daughter asks me what the rules are, she’s probably not asking what they are so that she can follow them. She’s asking so she knows how to get…

Moving the Cheese

Moving the cheese has a negative connotation, but our feelings about our environment changing and the behavior it produces are independent.

Substack is the new Medium

The following is the first and only Substack post that I have or will make, at least for the time being. You can follow the largely placeholder Ryan Hayes account over on Substack. I’ve been writing in various forms publicly for about 12 years now. The majority of that has either been guest blogs or…

2020: Year in Review

Hindsight is 2020! Hahaha, I’m sorry. Let’s start that again. Wow, what a year. January was filled with business trips, hotels, planes, and gatherings. I remember seeing a couple coming from Europe in the Atlanta airport getting off a plane wearing masks. It was the first time I ever really stopped and thought about catching…

How to migrate from Rock RMS to Planning Center Online

I run the software systems Harvest Community Church and also play guitar for our 3 services on Sunday. We’ve been using Planning Center’s Services app to schedule and manage our Sunday mornings for almost a decade. Recently Harvest moved from Rock RMS to PCO, and it’s been great. Below is the database script I used to…

How to run Docker Windows Containers with McAfee Endpoint Security

McAfee Endpoint Security and I have a love/hate relationship in that I hate it when it gets in my way and love it when it’s not installed. In general, I appreciate security and security research, but recently I had been trying out (or attempting to try out) Docker and Kubernetes for a project I’m working…

Azure Functions: Developer Infrastructure is the Sweet Spot

I recently gave a talk at TriDev about Azure Functions, the serverless programming product from Microsoft. Azure Functions is basically functions as a service. You can basically write a single function in JavaScript or C# and it manages the entire infrastructure around it. You don’t need to worry about scaling, networking, load balancing, even containers.…

Building Great Software Teams

Over the last decade I’ve worked with dozens of teams helping them work better as a team and individuals through mentoring and helping build infrastructure. I recently gave a presentation that used Maslow’s Hierarchy of Needs and compared that to how you can build great developers on your team. Take a look at the slides…

The Illusion of Code Quality

Code quality is something that I believe every developer strives for. We want code to be the best it can be and there are tons of opinions on things developers can do to make quality high. Over the years as teams have moved to Agile from Waterfall, and as build and test automation has become better,…

Azure Bot Service and Why You Should Check It Out

At Build last year (2018) I had some free time and dropped into a chatbot presentation. I’ll be honest, I didn’t really care much about chatbots. I use them a bit in slack, but honestly, they aren’t overly helpful. “/giphy nick cage” will find a gif for me, but it’s usually faster to Google things,…

Personal Branding for Software Developers

I recently gave a talk on branding for software developers at TriJS. While I didn’t get a chance to record it, I did upload the slides for your viewing please. The slides are readable without listening to the talk and have a few protips and specific actionable things that you can do to boost your…

TDD 0 to 60: How to Introduce TDD to Your Team With No Unit Testing Experience

Does your team use Test Driven Development or even unit test at all? If you’re like a lot of teams I’ve come in contact with, that answer would be a resounding “no”. I’m not sure what the biggest barrier is for most people, though I think it’s a combination of the following: “There’s barely enough…

Automating the Web with Selenium and WebDriver

I recently gave a talk on browser automation and using Selenium with WebDriver. Not only that, I gave a demo of using Selenium, WebDriver, xUnit, and creating a fluent API to create a framework that makes tests easy to compose. Check them out and let me know what you think! Selenium is a fantastic way…

What I’m Doing /now

This year I’ve decided to focus on a few things to become a better developer, and do things that make more of a difference in my life, my family’s life, others’ lives, and my career, but with less work. There is no shortage of project ideas that I could explore, places to visit, meetups to…

JavaScript is Crazy! Code This, Not That!

Below are the slides from my recent talk at TriJS titled “Code this, not that”, on JavaScript and replacements for some of the ways we solve problems in JavaScript, and alternatives that are better and less error-prone. It’s also got a few interesting bits of knowledge that’ll definitely surprise you, like the truth table…let’s just…

Moving from iOS to Windows 10 Phone on the Lumia 950 XL

I’ve been using an iPhone with a Windows PC for about the last 4 years. Before that it was an Android Phone and a MacBook Pro. Admittedly, I’m an early adopter and generally like to play with new technology and see how it can improve my life. I love Windows 10 and the beautiful balance…

Announcing Ember.JS and Broccoli.JS Task Runner Extension for Visual Studio

Visual Studio has an amazing task runner that lets you integrate run task-based command-line tools into VS’s build system. This means you can list commands and even set them to run with builds right inside Visual Studio without even touching the command line! This is great for getting your team using these command-line tools while…

How To Set Up an EmberJS App Inside of an ASP.NET MVC App

I love Ember. It helps me build fantastic UIs, but security isn’t super straightforward and I suck at it. I love ASP.NET MVC. It help me build secure applications and solid APIs, but for some apps I need a great responsive UI with great interaction. Together, these two technologies can be used together to create…

NServiceBus: Could not enumerate all types

I’ve recently started using NServiceBus for the first time in a long time. The initial setup was great, but once I started integrating it into a really large, complex, existing app, it took a bit of re-working. One of the errors I ran into was a HUGE string of errors all centering around not being able…

Ghost VS WordPress (and Why I Migrated Back to WordPress)

A few weeks ago, I decided to hop on the Ghost train. Ghost is a blogging engine, written in Node.js (JavaScript) and is only a little over a year old now, but has a massive backing for how young it is. In general, there’s a ton of hype around new tools and frameworks in the…

Redirect WWW to Non-WWW using the Web.config

By now, most people know that websites’ SEO is dinged by Google when there is both a www and non-www url with the same content on both. Google (and Bing) treat them as two separate sites and they fight for pagerank as everyone else blows your two competing sites out of the water. I’ve had…

Use CSS background:rbga to Darken Background Photos For Improved UX

If you’ve been to any new websites lately, you’ll know that parallax scrolling and large background images are incredibly popular right now. They’re great because they are able to help better tell stories, with big, gorgeous photos on the background and relevant text in the foreground overlaying those images as you scroll. In addition, responsive…

How Using jQuery’s $.get() Can Cause Subtle Bugs in Single Page Apps

While working with a single page app I inherited the other day, I ran upon a few very subtle bugs where I would save data on the screen and it would update in some places, but look like it wasn’t being updated in others. It was maddening, and it ended up just being the difference…

3 Ways to Web Test that will Change Your Life

As a web developer, it’s important to make sure our web apps and sites have a great experience for users no matter what browser they’re using. One of the ways we can do that is adhering to web standards. When we don’t write standards-compliant code and markup, we’re basically betting that all browsers will just…

Productizing Software Components

One of the most fun things as a software developer is building really awesome components and APIs that other developers will use. With the current popularity of Github that capitalizes on this love, and with NuGet, we’ve seen an explosion in the ability for components to become popular and be reused by other developers. The…

[MSBuild output] CSC : fatal error CS2008: No inputs specified

Today I was setting up an automated build using TeamCity and came across an issue where the build of the solution kept failing. The only reason that was given was this: [MSBuild output] CSC : fatal error CS2008: No inputs specified It turns out that MSBuild will fail the whole build when you’re running it…

IE11 Brings Long-Awaited, All-New Developer Tools for Single Page Apps

Today at Build 2013, Microsoft announced IE11 that ships with Windows 8.1. Actually, before I go any further, I want to say that they should have named this release Internet Explorer 12. Like a smart kid that skips a grade in school, this version brings so many features (WebGL!!!!) in compatability, performance and an all-new…

IE10 on Windows 7: Happiness for the Web

Today is a great day for the Web. IE10 has officially been released for Windows 7 (Sorry, XP, you’re what, 12 years old now?). This release will play a significant role in getting the majority of the web up to the latest version of Internet Explorer, which is THE release we’ve been waiting for as…

Thoughts on Internet Explorer in 2013

Recently I was re-awarded for my third year as a Microsoft MVP for the IE category focusing on web development. I occasionally joke (no offence, IE team!), that IE is the least fun category for an MVP. IE takes a lot of flak over its history of IE6. The internet is riddled with folks who…

Startup Weekend in Johnson City, TN – Nov 16-18, 2012

The thing I love about Startups is that it’s the combination of two things I enjoy: technology and business. I’m excited to announce that I’ll be acting as a coach and mentor for the event! Startup Weekend coincides with Global Entrepreneurship Week, where events will take place all over the world to help educate people…

How To “Completely” Set-Up TypeScript in Visual Studio 2012

So for the past couple days, I’ve been deep into TypeScript, which is a super-set of the Javascript language that adds optional typing, classes, and module support in addition to standard Javascript. I’d recently been checking out Dart, from Google, as a way to write Javascript-intensive applications in a way that multiple humans can write code and…

The Top 5 Best Visual Studio 2012 Features

I love Visual Studio releases. I remember when 2005 came out when I was in college, and while everyone else was writing their projects in C++, I was using C# and VS 2005. I asked my professor if I could write my programs in C# (this was an architecture class where the apps could be…

Why You Should Build Your Website Using Static .html Files

If you’ve got a website, then chances are it’s built using a CMS. You know, WordPress, Orchard, Joomla, DotNetNuke. Why wouldn’t you? They let you manage all your content on nice admin screens and PHP, ASP.NET, or whatever serverside technology your CMS is built on will magically and dynamically create your website pages every single…

Automating Daily Status Reports with Project Server and Team Foundation Server

In the past, I’ve had managers who have asked me for a daily status report of all of the items I’ve worked on during the day…every single one. They essentially said if it’s not documented that it didn’t happen. With all the tools we have available to us as developers, there should never actually be…

Will XNA be available in Windows 8 Metro Apps?

One of the big things I’ve seen flying around Twitter lately is the question of whether or not XNA is being depricated or faded off into the sunset or whatever. I can understand how if you base your entire career on a single technology this might be scary, but remember that XNA isn’t available in…

How to get some of Visual Studio 11's new tools TODAY in Visual Studio 2010

So much has come out this week at //Build/ that it’s hard to keep track of everything. For developers, the big thing is the first preview of Visual Studio 11 and the new SDKs and tools that go along with it. As you download the tools from dev.windows.com or your MSDN subscription, you may or…

A first look at Codename: Windows 8 OR "Will there be Silverlight in Windows 8?"

Today at D9, Microsoft opened up about Windows 8 with a bang. Not only does does Microsoft FINALLY have a viable operating system for tablets/slates, but they also announced that the gorgeous new Windows Phone 7/Xbox 360 UI will heavily leverage HTML 5 and Javascript. This really comes as no surprise since IE9 has hardware…

Visual Studio 2010 ASP.NET MVC and C# SaaS Starter Kit

One of the best ways to learn how to code well is to read code and write it (imagine that!). Luckily, with Visual Studio, Microsoft has graced us with tons of Starter Kits that are free to use. Starter Kits are pre-packaged project templates that are usually completed websites that you can build on top…

Using DataAnnotations with Entity Framework 4 Entities for a More Dynamic MVC Model

I’ve been working with MVC3 and Razor lately. It’s been absolutely great. I’ve not used MVC to build a production app until now, and it’s been killer fast building things out quickly. Previously, I’ve just used regular old objects like are in the starter projects to play around with my applications as the “M” in…

Periodic Table of the HTML 5 Elements

Have you heard? HTML 5 is out! (er, is coming, depending on how you see things). It’s still a work in progress, but you can still use HTML 5 now with many of the new browsers. What does that mean for us as developers? New things to learn, of course! New techniques, new designs, but…

SharePoint 2010 People Search: No Results Found While Forcing Secure (SSL) Sites

Recently, I had a problem with SharePoint 2010’s people search. It stopped working, particularly after the network guys set us up with auto-forwarding http:// requests over to https://. Once that was set up, it broke the search. We couldn’t get any results to come back for the regular search or people search. Turns out you…

Microsoft MVP Award Announcement

A couple days ago I woke to receive this in my inbox: Congratulations! We are pleased to present you with the 2011 Microsoft® MVP Award! This award is given to exceptional technical community leaders who actively share their high quality, real world expertise with others. We appreciate your outstanding contributions in Internet Explorer technical communities…

How To Fight Back Against "Stopping Point Syndrome"

Do you have Stopping Point Syndrome? I didn’t know that I had it until I read a recent post on Programmers.SE about how someone just couldn’t find a stopping point and would work into the night or until he passed out. In essence, it’s when you want to wait until you get to a good…

Visual Studio 2010 SP1 brings Intellitrace to x64 and SharePoint 2010

Visual Studio 2010 SP1 Beta is out for MSDN subscribers, and brings great new features for everyone – not to mention SharePoint development. If you’ve used Intellitrace to step backwards through your code to debug tricky situations that require more context, you know how awesome it is. Unfortunately, that’s not available for x64 bit and…

Free, Automated WordPress Backup Using Dropbox or Any FTP Site

I recently just migrated my blog from Tumblr to my own WordPress install. So far, things have been great. I love having everything in one place – from my blog to my CV. The only problem with this, however, is that if something should happen, I’d lose everything! That’s not a good place to be.…

JavaScript Best Practices for Increasing Website Performance

If you’ve done any web development before, you’ve probably had to work with JavaScript. It’s the secret sauce that makes the web come alive and has in recent years gone from a language that was looked down upon as 3rd rate to one that is taking the web by storm. With AJAX and JQuery the…

Introduction to SharePoint 2010 for Developers

I recently gave a talk at the local .NET User Group in Kingsport, TN on SharePoint 2010, generally what it is (for those that have never used it), and all of the features that are available to developers in this newest version. Right off the bat, the best thing about it is that you can…

How To Install SharePoint Server 2010 RTM on Windows 7

If you’ve developed for SharePoint in the past, you know how painful it is to have to do all development on a Windows Server machine. In this article, I’ll show you how to get SharePoint 2010 up and running on your Windows 7 development box.

"Enabling SessionState for SharePoint 2010" OR "This report failed to load because session state is not turned on."

SharePoint is a configuration nightmare. There are so many settings that the more configuration settings you learn, the more you learn there are more settings that you’ve not even discovered yet. For reporting, and specifically for me, running reports under an Issue Tracking site, SessionState must be turned on for the SharePoint 2010 web application.…

CodeRush Shortcuts/Templates Cheat Sheet Printable PDF Download

I love CodeRush. When I was looking at a productivity plugin for Visual Studio, I basically had two options: CodeRush+Refactor! Pro or ReSharper. I eventually picked CodeRush for the visualizations, code-from-scratch productivity boosters and templates, and extensibility. As with anything, it takes some getting used to the shortcuts inside CodeRush to really become effective using…

My Introduction to Developer Productivity Tools: DevExpress' CodeRush

I recently started doing an evaluation of JetBrains’ ReSharper and DevExpress’ CodeRush. Both are developer productivity tools for Visual Studio that give you code templates (shorthand notation that pumps out full sections of code), refactoring tools, code metrics and analysis, and much more. I had been contemplating getting ReSharper (R#) for a while now as…

Why Math is Important for Software Engineering (Even if You Never Use it Again)

Math is important. No, really! I’m not just talking about that 2+2=4 stuff. I’m talking about the big stuff. The Cal III type stuff. The problems that keep you up all night long. The problems where the professor gives you 5 problems on Monday to do in a week and you say “Oh, shoot, 5…

Why I don't write for the iPhone (Or, Why I'm Not Scared to Invest in Android)

One of the things I say a lot is the quote “Incentives make the world go round”, and that, my friends, is true. So why do I develop for the Android platform and not the iPhone? The iPhone certainly has that “cool” factor about it. I even own a MacBook pro and have access to…

How To Check a Web Page For a String Using .NET C# Using HttpWebRequest

using System.Text; using System.Net;using System.IO; HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);myRequest.Method = “GET”;WebResponse myResponse = myRequest.GetResponse();StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);string result = sr.ReadToEnd();sr.Close();myResponse.Close(); //Now, once you have this, perform the search on result string int stringFound = result.IndexOf(“My search string”);

Android Project Part II: Reading RSS Feeds

The first real goal for the Android app was getting news updates into the app. One of the main goals of the app is to be able to get up-to-date information that mirrored that of the harvesttn.com website. As you probably already know, content is typically served up using an RSS feed in today’s world.…

Android Project Part I: Background

For starters, let me give you some background on starting this blog series. I spend a lot of time looking things up and learning. The downside? I forget things. So, this will be a win/win. I can write things I find out down here so that I don’t forget them AND since Google will crawl…

Software Development: Academic VS Real World Education

Should you learn software development by going to school? Or go straight to the real world? That largely depends on what you want and where you are in life. I am lucky. I knew that I wanted to do something in computers since I was in the 5th grade. My class got an old (new)…

What's My Motivation? OR Resuming Old Projects

Writing software can be both a job and a hobby for many of us, and we all have projects sitting out there that we start and never finish. Some of them, however, are farther along or more useful than others. When we remember that we need to finish a project, whether at work or at…