|« Circle Around the Requirements||Tablemania! »|
Lisa thought that the Modesto Biology Institute was the perfect working environment. The scientists who showed her around were all friendly, not the "evil, lab-coated villains" portrayed in Fritz Lang films. The lab director, Howard, pointed out the lack of horror monsters in their lab after Lisa joked about it during her interview.
"See?" Howard said, gesturing. "You won't find anything scarier than a petri dish in here ... except for grant applications." He looked disgusted at the suggestion.
"I'll take your word for it," Lisa said, laughing.
But there were horrors lurking in the lab ... just not the kind that grow in petri dishes.
Lisa heard a plaintive cry down the hall one day. She found Howard looked forlornly at his monitor.
"It's our web interface," he said. "We use it to log experimental data. I wrote it myself a few years back, but it's been giving me so much trouble lately. That's the third time the server's crashed today. I don't see why it keeps choking up every time we add a new dataset."
"Well, that's why I'm here," Lisa said. "Mind giving me an hour or two to see what's wrong?"
The web interface used a custom Java library -- also written by Howard -- that spoke to an Oracle database. Whereas she expected to see a few tables (one for data, one for experiments, and maybe one for additional metadata), she instead found over 3000: two tables for each experiment ever conducted at Modesto.
"Howard," Lisa said, "can I prune any of these tables?"
"Afraid not. We can't afford to lose any of that data. Our funding would go out the window." He shuddered.
Lisa instead optimized some confiurations in Oracle. She tried not to think of the thousands of tables that lay waiting in that database.
"Lisa, could you give me a hand? I'm trying to add a file input field to our spreadsheet uploader, but it keeps rendering outside of the form."
By now Lisa had gotten her hands dirty in the web interface. She had finally convinced Howard to combine the 3000 tables after another server crash broke the app for almost a day. However, she hadn't yet touched the view code.
Well, it can't be any worse than all those tables, she thought, and immediately regretted it once she opened
System.out.println("<select name=\"operation1\"><option value=\"greater\">><option value=\"smaller\"><");
System.out.println("<option value=\"greaterequal\">>=<option value=\"smallerequal\"><=");
System.out.println("<option value=\"equal\">=<option value=\"notequal\"><>");
System.out.println("<option value=\"like\">LIKE<option value=\"in\">IN"); System.out.println("<option
value=\"notin\">NOT IN<option value=\"between\">BETWEEN</select>");
System.out.println("<input type=text size=10 name=\"bed1\"> </center><br>"); 2
System.out.println("<center><font color=white>[ Name='osmY' ] [ Name LIKE 'flg_' ] [Name LIKE '%rp%'] [IN (2,3,5,6)]
[BETWEEN 2 AND 3]</font></center><br>"); System.out.println(" <input type=checkbox name=\"ck2\">");
System.out.println("<select name=\"and2\"><option value=\"and\">AND<option value=\"or\">OR</select>");
"It'll be a few minutes," she yelled to Howard down the hall. There were no comments, no string variables to be found, just line after line of
System.out.println. How on Earth did Howard even get it working in the first place?
Grants and the neverending search for funding are the worst aspects of working in a research lab, Howard explained one day. There are always strings attached.
Such as one that came from their biggest contributor.
"There have to be at least 100 defined classes," Howard said, pointing out a stipulation in a grant application. "Otherwise the interface can't be considered a 'major research appliance.'"
"That many classes would be a nightmare," Lisa objected. "The app has 15. It doesn't need any more."
"They'll get access to the source code any way they can," he said. "You've practically taken over for me since you started. Is there any way you could make it happen?"
To inflate the class count, Lisa duplicated the different categories of experiments conducted at Modesto. Before, there was just one class called
ExperimentModel.java. Now there were over several hundred, including
DoubleBlindPsychologicalModel.java, and even
But it suited their benefactors ... for a time.
"God, I'm so sorry for putting you through all this." Howard held the latest request from the lab's benefactors. "Apparently they'll double our funding if all of our software ran on FORTRAN."
"...What." Lisa nearly dropped her tea.
"FORTRAN. It's well beyond my expertise. Do they even teach it in school nowadays?"
"There's a class." Lisa looked on a the world-weary Howard, trying to please the lab's patrons while keeping her sane. "I'll look into it."
As Lisa discovered, it was possible to rewrite their web application to run in FORTRAN, with a few extra libraries installed for HTTP communication and UTF-8 support. She gave the news to Howard, who shook his head. "Thanks, but I know when to stop before we create a monster."
Lisa didn't have to rewrite the interface in FORTRAN. The Modesto Biology Institute kept its funding, and Lisa works there to this day.
|« Circle Around the Requirements||Tablemania! »|