The sordid life of software bugs, exposed!

The sordid life of software bugs, exposed! is a very interesting look into the software bug process within Microsoft.  While this is about another MS product my impression is that this a very common approach within Microsoft.   If you are going to report a bug to Microsoft it helps to have an exact repro scenario including an example file if appropriate and why you think it’s important to a lot of people that Microsoft should fix it ASAP versus in the next Service Pack versus never.

I do something similar but vastly simplified in my shrink wrap program the Granite Fleet Manager.   With a few minor exceptions.  Every time I come across a bug or problem that I can’t fix and test in five minutes it usually gets entered into an Access database.    Now if the bug or problem in a feature that I’m working on and I’m going to get to it in a day or two then I’ll enter it in my active OneNote page I use as a notepad for that particular feature.  Then I cross it off once I’ve done using the strikethrough font capability.  (I’ve added the strikethrough button to my OneNote Toolbar.)  

I frequently find that as I go through my list of outstanding bugs that I’ve already done several but had forgotten they were in my list.

Good developers and bad developers

I quite enjoyed reading More flame wars on the way by a fellow MVP.   Make sure you follow the link to Coddling is consider harmful and read the comments.  The following reminds me of the Therac 25 X-ray machine which killed people.

“The full story is that the software would crash because it couldn’t allocate memory IN THE MIDDLE OF A TREATMENT SESSION. Fortunately there was a safeguard in the device that turned off the radiation when this happened.”

I also blame these kinds of problems on IT management as well for hiring folks who are mediocre to poor.  And their management.

I’ve come across the occasional mediocre and at least one real bad developer.   By the way if you are reading this blog this means you are interested in learning something and thus don’t fall in the mediocre to bad category.  So pat yourself on the back.

The rest of this posting is irrelevant to my points above and just plain meandering.

The real bad developer?  That was so long ago I can’t even recall his name.  I hardly got to know him for obvious reasons.

Background: The then IT manager was a senior programmer/analyst promoted past his capabilities.  John was asked to come in as the interim manager.  Senior programmer/analyst decided to take a break and wasn’t sure if he’d ever come back.   My father had three or four brain aneurysms and a severe stroke so my then employer in Winnipeg, Manitoba find me a temporary job in Edmonton, Alberta to help take care of the family.   So I’m new to the organization and I didn’t know any of this coming in.  Not that it mattered much.  I was only 20 or 21 then.

1) So the bad developer, we’ll call him Brad, updated the live tables with an irreversible operation during the middle of the day without doing a backup.   At least twice that I know of.  He was lucky though as they didn’t cause a problem.

2) John, the manager, knew Brad had a drinking problem but John was desperate for staff as John had just been asked to come in the IT manager job temporarily.

2a) Brad did have some interesting stories to tell. Mostly involving alcohol in one way or another.  I was too young and naive back then to realize just how bad of a problem his drinking was.  John, while being a staunch Mennonite, was not naive.

3) A few weeks later Brad went to visit the clients branch office in Calgary about three hours drive south from Edmonton.  At 1 PM the folks at the branch office asked where Brad was.  We had no idea as he should’ve been there for several hours already.  At 2 PM John got a call from a payphone with obvious bar sounds in the back ground stating Brad had a car break down in Red Deer the half way point.  Suuuurrreeee.

4) Almost forgot about the time Brad showed up drunk at 8 am in the morning.  He was told to go home.

Within a few weeks of my starting work there as a junior programmer Brad was fired.  So I became acting senior programmer until the guy who was on leave came back.  Turns out he was very good as a senior programmer/analyst and, to the best of my knowledge, has stayed in that role for the last 28 years or so.

John the manager?  His name is John Isaak.  One heck of a nice, competent, caring individual   I worked for him learning how to treat customers and design systems from about 1981 to 1991.   He didn’t know anything about how to program in RPG II and III on the IBM S/34, S/36, S/38 and AS/400 but that was our problem.   I’ve kept in touch with him over the years.   Next time I’m back in his neck of the woods I’ll have to see how he is doing. 

A good book: Uncommon carriers

One of the things I like over the last almost thirty years about designing applications for businesses large and small is the sheer variety of businesses and what you learn about them.  From a global Fortune 10 medical equipment service and inventory tracking system to three of Edmonton, Alberta’s largest corporations, to a bin tracking system for an waste disposal outfit in a remote corner of British Columbia. 

One bin in particular is at the far end of a barge route.  So the driver drives the truck with empty bin onto the barge and flies up the camp.  Eight or twelve hours later the truck makes it up the river, the driver drives the truck onto the site, exchanges bins and back down comes the full bin and truck on the barge and driver in the airplane.

I’ve been to all major and minor cities in Western Canada, an an eclectic list of other locations such as Stewart, B.C., Yellowknife, NWT, Houston Texas for two days (interesting to look out the windows and see the yellow horizon) and Frankfurt, Germany.  Not these days though.   What with the Internet it’s so much easier to ship applications around.

I’ve been on a tour through a copper refinery, underground in a gold mine (“If we get separated and your light goes out don’t move.  You may fall a long, long way.  It may be a number of hours but we will come and get you.”) and in the cockpit of an airliner for a landing.  I’ve also been witness to two heart attacks at clients, fortunately I hardly knew the one and not at all the other.

Which leads me to Uncommon carriers by McPhee, John

“Over the past eight years, John McPhee has spent considerable time in the company of people who work in freight transportation. Uncommon Carriers is his sketchbook of them and of his journeys with them. He rides from Atlanta to Tacoma alongside Don Ainsworth, owner and operator of a sixty-five-foot, eighteen-wheel chemical tanker carrying hazmats. McPhee attends ship-handling school on a pond in the foothills of the French Alps, where, for a tuition of $15,000 a week, skippers of the largest ocean ships refine their capabilities in twenty-foot scale models. He goes up the “tight-assed” Illinois River on a “towboat” pushing a triple string of barges, the overall vessel being “a good deal longer than the Titanic.” And he travels by canoe up the canal-and-lock commercial waterways traveled by Henry David Thoreau and his brother, John, in a homemade skiff in 1839.”

I quite enjoyed the different sections. The description of the barges and tugboats was particularly good.  While I live in Canada and have done a lot of work outside in cold weather working on an icy barge has got to be very tough.  

However the place I’d really, really like to tour is the UPS hub.  (I’ll settle for a Fedex hub. <smile>)    Another similar place would be a railroad dispatch room also mentioned in his book.  (Supposedly the railroad dispatchers take an easier job being air traffic controllers)  I had no idea how complex rail roads are.

Next non fiction book:  The Numerati.  And this one actually is computer relevant.

Getting a list of control names on a form

Fellow Access MVP John W. Vinson reported a client found an interesting “feature” within Access forms.  If while on a form and in Form View hit Ctrl+A and then Ctrl+C.  Now switch to Notepad and Ctrl+V to paste. Turns out you get the forms control names and then the field values all separated by vbTab.    (Actually the control names and the field values are separated by a vbCrLF.  And on a continuous form this includes all the records data values on that form.)  This data looks terrible when you paste into Word but usable within Excel.

However I like the idea of Notepad.  I needed a list of about ten fields I was going to enable or disable depending on a value.  So from within Notepad I deleted the fields I didn’t care about and of course the data values.  Then I inserted carriage returns between the fields and removed the extra tab.

And now I have a nicely formatted list of fields I can paste into my VBA code module.

All I need now is to build a little Add-In of some sort that will remove all the data values and convert the vbTabs to vbCrLFs.   That would save me oh, at least 10 or 20 seconds.  <smile>

John, thanks for reporting this.  You just saved me five minutes work every few months when I can use this.  <chuckle>

Stunningly weak Yahoo password security

I was wondering just how the hacker got into Palin’s account so easily.

“Rubico claimed the actual intrusion into Palin’s account was a relatively easy matter. It began after Rubico read news accounts claiming Palin used in her official capacity of governor of Alaska – which, if true, would skirt the state’s open government laws. Rubico then hacked Yahoo’s password recovery feature. In 45 minutes, he had her birth date, and two possible zip codes, and soon after that online research revealed Palin met her spouse, Todd, while they were students at Wasilla High School, in Alaska.”

What is the name of my favourite pet, mothers maiden name, etc, etc.  Gotta love all those password recovery questions.  I frequently put in words that some, including my mother, would consider offensive.

I was extremely upset when some genealogy buff put my full name and birth date on a web page a number of years ago. Along with my parents and siblings information.  That page is gone now.  And thankfully genealogy software doesn’t do that by default any more.

Back in the days of bulletin board systems in the early ’90s a friend found that many of the local BBS sysop’s used the same password on their own BBS’s as well as when logged into other BBS’s.   Duh!   He was happy to see that that didn’t work for me.

How many other website’s use similar systems?   Hopefully they’re all having a massive “Oh sh*t” moment.  Including the banks. 

Referencing one of three identical controls

The client has a very complex, unbound labour entry form.   One requirement is to efficiently add over time and double time hours for the same person, job, activity code, etc.  So the solution was to create three sets of controls that are identical except for the last character of the control name.   In this case Quantity1, Quantity2 and Quantity3.  Etc, etc.


But how do I efficiently reference those controls?  

For EntryLine = 1 To 3
    If Not IsNull(Me.Controls(“Quantity” & EntryLine)) Then
    End If
Next EntryLine

Two recent Access 2003 hot fixes

In addition to the below there were some Office security patches this last patch Tuesday.

Description of the Office 2003 hotfix package: August 7, 2008.

When you try to insert an encapsulated PostScript (EPS) image into an Office 2003 document, an Office 2003 workbook, or an Office 2003 presentation, you may receive the following error message:

An error occurred while importing this file: File_Path\Image_Name.EPS

Additionally, you may not see a preview of the EPS image in the Insert Picture dialog box.

Description of the Access 2003 hotfix package: August 20, 2008

• Assume that in an Access 2003 project (.adp) table, you delete all child rows from a parent row. Then, you delete the parent row. In this scenario, Access 2003 stops responding.

Note This (the above) issue applies only to an Access 2003 project.
• Assume that you try to delete a parent record from a table in Datasheet view in an Access 2003 Service Pack 3 (SP3) database (.mdb). Additionally, the Datasheet view uses a sub-datasheet that is expanded to show the related child records. In this scenario, Access 2003 SP3 stops responding.