Wednesday, December 16, 2009

Download stuck at 99%

It was a strange issue. Intermittent internet problem. A download would start and then, either in the middle of a download or worse, as the last packet was received, the download would freeze.

Stuck at 99%. Restarting the download wouldn't fix it. The problem would occur on a Mac as well as on a PC. This was especially infuriating with the Windows 7 Beta as we were never able to get a good version of it. As with many other things, the ISP was the likely culprit. We decided to change ISP. First test we ran was trying to download a file whose download we know was failing.

The download stuck at 99%.

Cursing and swearing ensued. We then did the logical thing to do: connect a PC directly on the modem to try to isolate the problem. We finally found the issue:
A firmware update of the Linksys WRT54GS fixed the whole thing. In the release note, Linksys noted among other things:
Firmware 4.50.6
- Adds SecureEasySetup push button support
- Resolves large file transfer issues

Yes! I will now be able to run lots and lots of things!

Monday, March 2, 2009

Software construction metaphors

"No! It's not going to work" said Pete. "This has been tried several times on various software projects. Adding people to a project that is running late will make it later. It's called the Brook's law!" he added. Dave, his project manager, was not impressed: "If you get a few more people on the project, it sure is going to help. If you double the staff, it will get done twice as fast". "Not quite, said pete, software construction is more complicated than that"

Unfortunately, software construction is actually more complicated than that. Pete could have replied: "A pregnant woman needs 9 months to give birth to a healthy baby, no matter how much help she has. Giving birth to software is the same thing."

It's often very difficult to communicate to peoples that are not involved in software construction some fundamental intricacies of our trade. As such, we often use what I call Software Contruction Metaphors - even though that is a metaphor as well. Here are a few of those metaphors:

The Omelette: You need about 10 minutes to properly cook an omelette. Sure, you can probably raise the heat and finish quicker. Unfortunately, that would probably yield barely edible burnt eggs. The same is true with software construction: trying to shorten the schedule under a certain threshold will probably result in a broken, unusable, instable piece of software.

House contruction
This one has been in use for many years, and is usually related to waterfall software development life cycle. It usually goes as follow: When you construct a house, it is always cheaper to do changes early in the process (while the house is just a few lines on a blueprint) than later on, once the concrete for the foundations has been poured and is fully cured. It basically outlines the complexity of changing software later in a project. However, that metaphor is flawed because many people can visualize a home looking at a blueprint, but have a very hard time figuring out a software system by reading at a requirement specification.

Because using proper images is key in our communications with non-technical staff, I will continue to try to find and document other metaphors as I find them.