Technology is a means, not an end.

Dallas TechFest 2014

I’m thrilled to announce that Dallas TechFest 2014 is a go, and boy is it a huge event!

  • We’ve got 5 tracks of amazing content.
  • We’ve got UX, Mobile, JavaScript, and .NET content
  • Lunch? yep we’ve got it.
  • WiFi? yep that too!
  • Great venue? Absolutely, we’re headed to the amazing Gilley’s Dallas and taking their entire venue.

This event is awesome, and you can learn all about it at the Dallas TechFest website.

Huge props to Brandon Ward and Michael Dudley for the amazing website this year, you guys rock.

Another Improving Bootcamp

6 months ago I wrote on this blog that my company, Improving Enterprises, was looking to hire people and train them how to be developers. We did that, successfully, and we have 6 new consultants working at various clients now. I’m making a note here, HUGE SUCCESS!

Today I’m pleased to announce that we’re doing it again. We’re looking for another crop of people to jump into the fray, who want to aggressively learn for the next 3 months. Here are the details, repeated from the last time.

What we expect from you

  • Some programming experience is necessary.
    • Web experience is not necessary, though it is helpful.
    • Lack the experience or expertise to be an Improver
  • Exhibit excellent potential, aptitude, and attitude
  • Are willing to work long and hard over the next few months to become an Improver.

What you can expect from the program

  • You will be paid a nominal salary.
  • The salary will increase once you pass the board exam and become billable.
  • The program is 9-6 plus homework assignments including user group attendance and supplemental online courses.
  • It is intended to be an intensive, ‚Äúdrink from the firehose” experience.
  • There is an interview process.
  • The program will last 12 weeks, and moving into a full time consultant role with Improving is not guaranteed, it will be dependent on your performance.
  • The program will start last week of September or first week of October.

If this excites you, then reach out to me at Tim@TimRayburn.net or on Twitter/GitHub @TRayburn and we’ll get you started in the process.

ASP.NET MVC Reserved Words

A project I’m on recently encountered a little known bug that I had to share, mostly so I can google my own brain later on this. MVC has a set of reserved words that cannot appear in your URLs. This includes CON, COM1-COM9, LPT1-LPT9, AUX, PRT, NUL, etc.

So how do I disable this lovely feature?

    <httpRuntime relaxedUrlToFileSystemMapping="true"/>

More details can be found at Phil Haack’s post about this same topic.

World Cup Tie Breakers

Alright, so Portugal pushed the United States into a tie in our match at the World Cup. I’ve seen some horrible reporting on what this means this morning, where clearly the journalists could not be bothered to read the regulations of the World Cup, specifically pages 25 & 26 where the tie breaking rules are explained.

In the league format, the ranking in each group is determined as follows:

a) greatest number of points obtained in all group matches;

b) goal difference in all group matches;

c) greatest number of goals scored in all group matches.

If two or more teams are equal on the basis of the above three criteria, their rankings shall be determined as follows:

d) greatest number of points obtained in the group matches between the teams concerned;

e) goal difference resulting from the group matches between the teams concerned;

f) greater number of goals scored in all group matches between the teams concerned;

g) the goals scored away from home count double between the teams concerned (if the tie is only between two teams).

I’m specifically looking at you NBC sports who indicated that we could be forced to draw lots in certain scenarios. Every time their article says that, please note that it would be a g) scenario, which is not great for us, because we were the Home team against Portugal, as such their 2 points would suddenly count for 4 points against us.

Please, read the rules people. Fortunately, for us, all of that only matters is the United States loses their match. A Win or a Tie ensures our advancement.

If you’re a Portugal or Ghana fan, then a United States v. Germany tie is your worst case scenario. Any other result leaves some hope alive, though you strongly prefer a United States loss because of Germany’s huge goal differential lead. Either that, or you want the United States to win by 4 or more goals against Germany.

Thursday is going to be awesome. #IBelieveThatWeWillWin

Start a Process as Another User in PowerShell

Got asked an interesting question today, and the answer is worth sharing with everyone. If you have the username and password of another user, and want to run a command using their account, how would you do that? Like so:

# Test Data
# ---------
$userName = "FooBar"
$password = "FooBar"

# Helper Functions
# ----------------
function New-Credential($u,$p) {
    $secpasswd = ConvertTo-SecureString $p -AsPlainText -Force
    return New-Object System.Management.Automation.PSCredential ($u, $secpasswd)

# Do The Work
# -----------
$cred = New-Credential $userName $password
Start-Process cmd.exe -arg "/k whoami.exe" -Credential $cred

The Hierarchy of Pain

Over the last few years I’ve given talks several times on what I call the “Hierarchy of Pain”. This pyramid describes the pains felt by most large development organizations and provides guidance in how to address them.

The levels of the pyramid

At the base of the pyramid we have Character, this fundamental concept that is talked about in so many business books. Simply put you cannot have a successful team, division, organization or corporation without making sure you have people of trustworthy character filling roles. This segment covers everything from personal work ethic to honesty, and so much more. If you have problems at this level, fix them now. Mentor, coach, discipline or remove whoever the problem is based on your view of how correctable the problem.

Next we encounter Team, the realm of personal human interaction. Team problems can result from an emotional or motivational problem, leadership or direction problems, and personality problems on the team. Most managers have at some point in their career encountered two brilliant developers who simply cannot work together, that is a Team problem.

Process describes all interactions that are codified into rules, be it SCRUM rules, KanBan rules, Waterfall rules, or just “the things we’ve always done”. In larger organizations this also is the realm of culture. If your process doesn’t match your business, or any of a large assortment of other problems, they fall into Process.

Technology finally there is technology problems, those problems which are exclusively the domain of the software and hardware.

How to solve problems

There are two large mistakes that most groups make, and they compound on one another.

  1. Most managers are inclined to blame things higher up the tree, than lower down the tree, as the root cause of a problem.
  2. Most managers believe that a problem is best solved by introducing a fix at the level it occurred, or higher.

If Bob the Developer fails to update the database during a deployment, Fred the Manager might look at that as a failure of Process, the team didn’t follow the process. Unfortunately, Fred is wrong, this is a failure of Character most likely, Bob didn’t follow the process, and he’s fallen victim to mistake #1.

But since Fred things this is a Process problem he decides he is going to purchase a large build and deployment automation tool, aka Technology, to correct this problem. But he won’t be successful. Why? Because since the problem is actually a Character issue, there is nothing but a Character solution which it.

Proper solutions

When looking at problems within your organization, remember these basic axioms:

  1. A problem should be assumed to be at the lowest possible level it could have occurred at. Most of the time, this means Character until it happens consistently enough that it becomes obvious it is really Team or Process.
  2. Problems can only be solved, truly solved, at the level they occurred or lower on the pyramid.

I’ll likely talk more about this in future posts, but that is your introduction to the Hierarchy of Pain.