Archive for the 'Software development' category

Can’t start IIS with a binding on port 443?

September 19, 2016 10:15 pm

In case it helps someone:

Getting Event 15005 when trying to start IIS (Internet Information Server) on your machine? In other words, you see this in Event Viewer (eventwvr.msc) under “System”: Unable to bind to the underlying transport for [::]:443. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine.

Troubleshoot using:

netstat -aon | find ":443"

which gives you the process ID in the last column.

Find the process with that ID by using Process Explorer (sort on PID column), then shut down that process.

For me it was Skype (using [::]:443, whatever that notation means – yes, I’m a noob at that notation and can’t be bothered to learn / look it up at the moment)

Migrate Visual SourceSafe to Git – A short how-to

November 30, 2013 1:35 am

My hobby/learning projects have been residing in a single-person SourceSafe database for a long time (yes, I know you’re laughing; I don’t care – for single-person projects it’s just fine and dandy.) It was time to start using something new. I wanted to migrate everything, including history, to git.

The first step was to install the latest version of git (Git-1.8.4-preview20130916) on the system that currently hosts the SourceSafe database. If you’re long-term-memory-capacity limited like me and can’t remember git command-line arguments to save your life, you’ll also install something like TortoiseGit while you’re at it. One important step is to choose to run git from the Windows Command line during setup. (The next step needs git in the PATH.)

The second step was to install vss2git (http://code.google.com/p/vss2git/). After some trial-and-error with converting my entire database (a mistake, by the way, see step three) and getting error messages about the log file, I changed the permissions of the install folder to allow “read/write” for every user.

The third step was to convert each main project in SourceSafe (well, via a copy of the SourceSafe folder, actually, just to be paranoid) to a git repository by making sure to use $/Path.to.project in the vss2git tool’s Project field.

image

The fourth step was to convert each of these newly created full repositories to “bare” repositories for sharing across my local network. The command line for that is

git clone –bare –no-hardlinks Path.to.project Path.to.project.git

And that’s pretty much it. A fifth, optional step is to remove the original repository folders that served as the source for the bare repositories (so they don’t clutter up the Windows file share).

I am now the proud “owner” of 13 brand-new, independent little git repositories!

[Update 2013-12-01]

Well, I wasn’t too happy with the above solution. It creates too many nested folders (partly because of how Visual Studio creates stuff in VSS in the first place.) Once I clone the resulting repo, I get something like:

CloneRoot/Uncorked.root/Uncorked.root

That’s not what I want. I need it to be CloneRoot/Uncorked.root at most.

This answer on a StackOverflow question provided a good path to take. Based on that answer, I cobbled together a .cmd file to process all my repositories:

@echo off
for /d %%d in (*) do (
  if not exist %%d\config (
    echo %%d
    cd %%d
    attrib -h .git
    move .git %%d/
    cd %%d/
    attrib +h .git
    git init
    git add .
    git commit -am "moved git root"
    cd ..
    git clone --bare --no-hardlinks %%d %%d.git
    move %%d.git ..
    cd ..
    rem pause
  )
)

Agile retrospectives – on cadence or on demand?

August 4, 2013 11:43 am

Here’s a quick thought for (probably mostly Ha- and Ri-level) practitioners of Agile software development who are thinking about holding retrospectives on a fixed cadence versus going to an on-demand practice.

I like that the weekend comes around every five days. I’d sure feel uncomfortable if it didn’t. I enjoy the comfort of knowing that I’ll get some time with different things to do: play, learn, relax, create, sleep, connect with others. Every once in a while I’ll need a day off outside the weekend to take care of exceptional things. Other times I’ll need more than just a few days, so I’ll take a week or three for a change of scenery and recharge.

Is it so different for teams at work? Just a thought.

Agile coaching approaches illustrated by Gordon Ramsay

June 10, 2013 9:06 am

My oldest daughter recently introduced me to Gordon Ramsay’s Fox TV show “Kitchen Nightmares”. It was the episode on Amy’s Baking Company, and we sat and watched it together on YouTube. I couldn’t believe what I was seeing! The participants in the show engaged in almost nonstop verbal abuse, miscommunication, denial and dysfunction. It was like watching the proverbial train wreck in slow motion. I watched that episode three times. To use Gordon Ramsay’s favorite word: “Wow!”.

GordonRamsay

After a week or so of not thinking about it further, I started wondering if Ramsay ever visits a restaurant where the food is not horrid. I found that Hulu offers the show for watching on demand, and I watched two handfuls, or so, of shows. Apart from the entertainment value (the Anna Karenina principle), I started becoming interested in Gordon Ramsay’s approach for helping his show participants. Like others who have written about this, I’ve noticed some patterns and principles. Here’s my take on the show, viewed from an Agile coaching perspective:

Listen and gather information

Ramsay’s first step is to gather information. He meets the people involved in running the restaurant, talking to owners and staff to find out what they think is causing the restaurant’s problems. Most of the time he talks to everyone in private to make sure he hears unfiltered and uninhibited views.

Go see

As a second step Chef Ramsay focuses on tasting the food, usually at lunchtime. He also takes a look at the dining area’s décor, the number and kinds of items on the menu, cleanliness, POS systems, etc. This starts filling in more of the picture that he needs to start helping. Finally, he’ll observe how the kitchen functions during the busiest time of day, the dinner service. Usually this is also where he takes a look at the ingredients used, their freshness, the kitchen equipment, the cleanliness of the environment, how the people communicate and interact, and what the mood is like when things get busy and chaotic.

Hold up a mirror

It is usually during dinner service that Ramsay starts holding up a mirror for the owners and staff. His style is incredibly direct and, really, brutal. He doesn’t mince words. He doesn’t hold back. Profanities fly. He confronts people with ruthless injection of reality showing them how far away from excellent practices the restaurant is. This is usually close to the point where people reach “rock bottom”. They realize that they need to change, badly.

Ask for commitment

At this point Ramsay is still not convinced that he wants to help. He has a calmer conversation where he tries to gauge whether there is a willingness to commit to change. Usually his coachees end up expressing a commitment. Sometimes the expression is vague, but Ramsay picks up on it and is willing to go with it.

Inject energy

Chef Ramsay’s next step is usually to transform the restaurant physically. Some places haven’t had their interior refreshed in five to ten years. Ramsay injects new energy into both the environment and the people. He simplifies the menu and presents the actual dishes for test-tasting and to show the crew what is possible when you focus on quality and freshness. But it doesn’t stop there.

Teach and mentor

Next comes the preparation for the re-launch. This is usually where he teaches people. Sometimes it’s about the cooking and kitchen operations, sometimes about team organization, better communication, and getting owners to fully embrace the roles they need to play. Sometimes he’ll bring in other successful, experienced professionals to mentor and guide his protégés.

Stand with the team

All during the re-launch, Ramsay stays with the restaurant crew. He keeps holding up the mirror, providing observations and feedback, still brutally honest and direct. He also acknowledges when things work well, praising individuals for jobs well done.

Reflect and offer feedback

Finally, after the dinner re-launch is over, Chef Ramsay (as he is now universally called by the team) calls everyone together to briefly reflect on what happened and how. Due to his participation and in-the-moment steering, most re-launch nights are quite successful, possibly dotted with a few hiccups. Ramsay reminds the people who need change the most to make sure they don’t revert to old, more comfortable habits.

 

Agile approaches

If you look back over the subheadings above, you’ll see a lot of similarities between Gordon Ramsay’s coaching approach and Agile coaching approaches (as, for example in Lyssa Adkins’ book “Coaching Agile Teams”). Of course, as an Agile coach you wouldn’t want to use Ramsay’s brutal tone, volume and body language. The show wouldn’t have half the entertainment value without them, but outside of a TV show a calmer approach is more effective.

Apart from the above similarities, you’ll discover that Ramsay ultimately is all about what Christopher Avery calls the Responsibility Process. Ramsay manages to help people discover that they must overcome denial, blaming, justification, shame and obligation to ultimately take responsibility for the business they are running. They need to own setting the tone, making the rules, ensuring that they’re followed, setting quality and communication standards, etc. Of course, in an Agile context this becomes the job of the Agile team, not the manager, scrum master or any other single person. But just like in Kitchen Nightmares, sometimes teams need an Agile coach to help them with situations they’re grappling with and aren’t sure how to overcome. An Agile coach helps such teams help themselves with techniques very similar to the ones Gordon Ramsay models on his show.