By Chris R. Chapman at August 31, 2006 05:33
Filed Under: windows, wifi, networking
Update:  Check out the MS TechNet docs for more netsh commands and how-tos here.

While listening to an archived Hanselminutes podcast about Scott's Top-10 Windows Utilities, I was intrigued to hear him mention netsh, the command-line util for setting your network interface properties.  As he points out, it's true that not many folks know the power of netsh to control your IP, DNS, routing tables and more.

I've been using netsh myself for some time to get around a minor XP annoyance:  Switching WiFi networks.  I assign an IP to my laptop when I am connected to my home router, but at the office I connect via DHCP.  Ordinarily, this switching would involve opening up the properties for my connection and changing the IP and DNS configurations according to the network I was on.  This is so onerous, that there are even utilities out there (that people are charging $$$ for) to make this more seamless.

I'm cheap and I believe in a working hack that saves me a few bucks!

So, I crafted a couple of batch files to run netsh commands that would allow me to switch between my home and office WiFi routers with ease.  Here's the first one for establishing a DHCP connection:

netsh interface ip set address name="Wireless Network Connection" dhcp
netsh interface ip set dns name="Wireless Network Connection" dhcp

I saved this in my root folder under the filename "wireless_dhcp.bat".  Note the address and dns named connections that are used in this batch - this refers to the named connection for the wireless card.  You can confirm the name of your connection by running an “ipconfig /all” and checking the ethernet adapter item for your WiFi NIC.

Next, here is the batch file that I used for my internal network:

netsh interface ip set address name=”Wireless Network Connection” source=static addr=192.168.0.100 mask=255.255.255.0 gateway=192.168.0.1 gwmetric=1

netsh interface ip set dns name=”Wireless Network Connection” source=static addr=206.47.244.102 register=primary

netsh interface ip set dns name=”Wireless Network Connection” source=static addr=206.47.244.135 index=2

This is a little more interesting.  The first command sets up my IP address, mask and gateway -- I use a non-standard config for VPN access.  The next two commands set my DNS servers - the primary and secondary.  It's a little counter-intuitive the way this is set with “index=2”, but this allows for a range of DNS servers to be added and accessed by index.

I saved this batch as “wireless_home.bat” in my root folder.  Now, when I want to switch networks, I just drop down to the command prompt and run the appropriate batch to switch my network settings.

Cool.  But it could be notched up.  This is where another util Scott mentions came in handy:  WinKey.  This bad-boy (which also happens to be out-of-print, so get it from the link fast) lets you configure windows key shortcuts to run commands automagically.  I added two shortcuts for Win-A and Win-B to run my home and DHCP batch scripts respectively.

Total time to do this hack is about 10 minutes and it's zero cost.  With a little creativity and some review of the netsh commands, you could put together some pretty complex on-the-fly changes for your own NIC configs.

Have fun!

By Chris R. Chapman at August 29, 2006 05:37
Filed Under: Announcement, certifications

After almost two years of not being able to find the time to complete my last exam, I finally bagged my Microsoft Certified Application Developer cert last Monday:  70-316 Windows Application Development Using C#.

I managed an 840 which, truth be told annoys me -- I should have had a high 900s score.  They are getting trickier with the questions, so my caution to anyone doing the exams now or in the future is to read the questions carefully!

Last Thursday and Friday I attended a Certified Scrum Master course -- intensive training that is delivered by a Certifed Scrum Master Trainer.

While I have read widely about Scrum, it was a useful course to attend to get independent verification that I indeed understand agile/Scrum fundamentals and to be able to ask hard questions about how to manage an agile project.

My course was delivered by Mishkin Berteig, an agile coach and trainer with 10+ years experience in the field.  If you're new to agile and want to get the gold seal, I highly recommend attending either the 2 day or 4 day courses.

By Chris R. Chapman at August 18, 2006 21:32
Filed Under: bduf/waterfall

If ever there was a patent example of why Big Design Up Front / Waterfall projects fail, it's this one.  And, unlike your typical isolated corporate app, the failings of this one can result in more than just budget overruns:  It could contribute to lives lost.

Today's Washington Post details the story of a multi-million dollar effort to revamp the FBI's criminal investigation tracking system, which was to be called the Virtual Case File (VCF).  A contractor, Science Applications International Corp. (SAIC) was engaged to develop the system, which, after years of development and testing had collapsed upon itself in a heap of bugs that render the system unusable.

Reading this multi-page account is like watching a trainwreck unfold or the Titanic sinking:  You just know it's going to fail because it's so obvious.  It reeks of impending failure.  Some hallmarks:

Software problem reports, or SPRs, numbered in the hundreds, Azmi recalled in an interview. The problems were multiplying as engineers continued to run tests. Scores of basic functions had yet to be analyzed.

"A month before delivery, you don't have SPRs," Azmi said. "You're making things pretty. . . . You're changing colors."

Ahoy, captain!  Iceberg 12 o'clock high!  Icceeeeberrrrrg!

The article also notes (laments?) the failures as stemming from “failures of almost every kind, including poor conception... muddled execution”.  Sounds like a raging waterfall of doom to me.  From here on, this story takes a bizarre set of twists and turns, with the FBI acquiescing to SAIC's demands to rewrite their system from scratch as opposed to modifying off-the-shelf products (hmm-- is that even feasible?)

But the evidence for this BDUF/watefall failure continued to mount, including launching the new software all at once with minimal testing, half-baked (sloughed) features and, of course, the infamous “sliding delivery date”:

By 2004, even as the news grew worse behind the scenes, FBI officials struggled to put an optimistic spin on their software upgrade.

In March, testifying before a House subcommittee, Mueller said that the FBI had experienced "a delay with the contractor" but that the problem had been "righted." He said he expected that "the last piece of Virtual Case File would be in by this summer."

Two months later, Azmi -- who had been named the bureau's chief information officer -- pushed back the estimate further, predicting that SAIC would deliver the product in December.

And of course, this resulted in “feuding over change orders, system requirements and other issues“.  Game. Set. Match.  Thanks for playing “I Want To Deliver Software with a Waterfall“.  Please collect your kick in the rump as a parting gift.

Given the importance of an agency like the FBI, this multi-million dollar fiasco is really disturbing.  Even more disturbing is that despite mountains of evidence to the contrary, major software firms continue to indulge the fallacy of the waterfall to deliver high-risk, critical software projects. 

Epilogue

In the end, Lockheed Martin stepped in to develop a replacement for VCF called Sentinel, projected to cost $425M.  Apparently Lockheed will be required to meet benchmarks (hmm, like Sprint Reviews?) and so far “has survived three review sessions and is on-budget and on-schedule”.

The takeaway from this cautionary tale is not to get into the same predicament:  By carefully planning a segmenting work into smaller deliverable chunks that are continuously tested and reviewed by the client, fiascos like the VCF can begin to dissipate, costs controlled and software that provides real value delivered.

By Chris R. Chapman at August 16, 2006 01:51
Filed Under: sharepoint, wss20

Just noticed this item in my collection of RSS feeds that describes a tool included in the SPS 2003 Post-SP2 Hotfix Package:

Description of a new command-line operation that is available for the Spsadm.exe command line tool that you can use to clean up orphaned items in the configuration database in SharePoint Portal Server 2003

Does anyone at MSFT support know how to write better titles?  Sheesh!

The article details using the repairorphans command argument for the spsadm.exe tool to remove orphaned items that can result from corruption of the content or config databases in SharePoint.  I know of at least two scenarios in the past year that I could have used this tool!

By Chris R. Chapman at August 09, 2006 13:13
Filed Under: agile, bduf/waterfall
Update:  See Joel Spolsky's recent post, The Command and Control Management Method, for more bon mots on the prevailing software project management follies of today.  I especially like his definition of hit and run micromanagement...

While noodling around the weeb today for info on Fartleks (I'm training for the Scotiabank Toronto Waterfront 1/2 Marathon this September) I came across this old post by Eric Meade at java.net that neatly dovetailed two of my passions:  Long distance running and agile projects.

Eric notes in his post that there is some simpatico between training for long-distance running and efficient, productive software projects:  Both require reviewing and training toward a sustainable pace.

In terms of running, if you're doing a 1/2 marathon (21.5 km), running increasing long distances for long hours will succeed in doing one thing:  Burning you out -- if you're lucky.  Thus, the key is to gradually increase your distances and the pace at which you can sustain effort over time -- this is known as “pushing the wall” or the point where your body would ordinarily say “see ya!” and you collapse from exhaustion.

A key part of managing this increase is to mix hard effort with periods of recovery -- the classic definition of a Fartlek workout.  As Eric notes:

Business always seems to be interested in increasing the pace and it isn't that hard (to describe). Fartleks a.k.a. "speed-play" is the answer. When fartleking you increase from your long slow pace to a short (the end is in sight) burst of speed, once you recover, you can burst again.

Typically business misses two things in this process, starting from a sustainable pace and recovering. So they take teams, which are already working at an unsustainable pace, and slowly, continually turn up the pressure

I've seen this in action over my career time and again, and I've even willingly indulged it, sacrificing weekends and holidays for barely attainable objectives -- and generally speaking, it wasn't worth it.  Why should businesses care?

Well, I can think of one huge reason that has a direct impact on a firm's prestige:  Employee retention.

I believe that we're increasingly entering an era where there will be two types of companies:  Those that foster an environment where their teams can work at a sustainable pace producing high-quality software (using agile practices), and those that Eric Meade describes, who continually notch up the pressure with bad practices (with BDUF or by abusing agile), burning out their teams and continually looking for new people.

About Me

I am a Toronto-based software consultant specializing in SharePoint, .NET technologies and agile/iterative/lean software project management practices.

I am also a former Microsoft Consulting Services (MCS) Consultant with experience providing enterprise customers with subject matter expertise for planning and deploying SharePoint as well as .NET application development best practices.  I am MCAD certified (2006) and earned my Professional Scrum Master I certification in late September 2010, having previously earned my Certified Scrum Master certification in 2006. (What's the difference?)