Who, Me? Wave a cheery goodbye to the weekend, and start the week with a hot beverage, a pastry or two and a freshly unearthed tale from the Who, Me? catacombs.
"James" is the Regomised teller of today's tale, which takes us back 20 years to the financial sector. It was a time of acquisitions; his employer had just snapped up a competitor. Not that it mattered to James, he was serving out his notice prior to a move to a workplace closer to home.
The banking world was being dragged kicking and screaming into the new century and James' employer was no exception. It offered its business customers all manner of cutting-edge services, including the ability to upload a file containing all cheques received that day (rather than requiring them to enter data by hand or send scans to the bank).
Well, perhaps not that cutting edge. While the file could be uploaded many times a day, it had to contain all the day's cheques since it would be overwritten every time.
The newly acquired bank had whizzier tech. Its customers could also upload the cheque file many times a day, but the files only needed to contain new data. The file on the server would be appended to.
So how to deal with the overwriting problem? "This web software," James told us, "was provided by an outsourced vendor and, when asked what it would take to fix the issue, the response was, '$100,000 and six months'."
Gosh. Unsurprisingly the issue had been bouncing around the management floors for quite some time.
Despite James being on his way out, he still had the title of "Manager of Software Development" and so was summoned to give his take on situation. It wasn't his (or his team's) system but, being a helpful soul, he trotted to the server room to see what code was actually running on the hardware.
Fifteen minutes later he reported back to the CIO: "I could do it in about six seconds."
The CIO, still stung by the six-month, $100k quote, questioned James' word. What was the catch?
- A practical demonstration of the difference between 'resilient' and 'redundant'
- How to stop a content filter becoming a career-shortening network component
- Hacking the computer with wirewraps and soldering irons: Just fix the issues as they come up, right?
- Scalpel! Superglue! This mouse won't fix its own ball
There was none. Other than the vendor's choice of platform and language.
"I explained that the website was written with a technology called 'ASP'," explained James. "The source code for that page was accessible to me."
ASP, for the uninitiated, was Microsoft's first crack at a server-side scripting language and turned up in the late 1990s as part of the Windows NT Internet Information Services. It has since been superseded by ASP.NET, but we'd be surprised if there aren't an awful lot of servers out there still running it.
Since James had access to the code, he was quickly able to find the section that received the customer's files and saw a line that looked a bit like this:
Set outputFile = fso.OpenTextFile(outputFileName, 2, True )
Ah yes, the good old FileSystemObject. James explained his proposal to the CIO: "That little 2 means 'overwrite the file.' If I change it to an 8, the file will be appended to and can just grow until we clear it."
He was quick to reassure us that he also added some
CONST lines and used
ForAppending rather than a plain 8. Hopefully he also updated the format argument as well.
A single change of an argument for $100k and half a year? So it would seem.
Sadly, James did not see the pay-off the vendor had demanded. He did, however, get some time to test the change really was that simple before it hit production.
"It did precisely what was needed," he said, "and the bank went on using that software for a few more years, without issue, until they, too, were bought by another bank."
Ever found the time and cash demanded by a vendor was vastly more than truly required by the actual change? Or were you that vendor, plucking figures out of the air, perhaps to discourage a pesky client from making annoying demands? Confess all with an email to Who, Me? ®