|« Dave.cpp||Very Special Strings »|
The Test Machine seemed a bit out of place as it sat there, nestled between cubicles in Christophe’s office. Actually, calling it a “test machine” seemed a bit inappropriate, too, much like calling an aircraft carrier a boat, or referring to a house mover as simply a truck. It was huge – no less than seven feet tall, four feet wide, and three feet deep – and weighed a solid ton or two. This marvelous machine was as modern as it was massive, sporting several state-of-the-art computers, power supplies, instruments, relays, ignition coils, fuel injectors, and everything else one might need to test automotive electronic control units (ECUs).
In those days, ECUs were becoming exponentially more complex with the integration of microprocessors, real-time processing, and communication between other ECUs. And as a result, testing individual and networked ECUs was becoming exponentially more complex. Christophe’s company, however, promised a unique solution: software-driven automated testing to validate the virtually endless combinations and permutations of input conditions that exist while operating a vehicle.
One of their clients was very interested in their software, and lent them one of their multi-million dollar Test Machines to develop a proof of concept. It was important to use real injectors, ignition coils, and the like, as to accurately simulate electric loads on the ECU. This way, they could swap out a real and virtual ECU without any other ECU knowing the difference.
Christophe and his colleagues spent several weeks virtualizing and writing UIs to test the ECUs that would be used for the proof-of-concept. It wasn’t an easy task, as no one on the team was an automobile engineer and the documentation was mostly in Japanese. To make matters worse, the client’s engineers spoke half-Japanese and half-automobile-engineer.
But they persevered, and were able to make pretty good progress generating the various signals that the ECUs required to be happy. Of course, “pretty good” wasn’t “good enough”, and they still hadn’t managed to get the ECU to switch off all the big red lights that showed on the Test Machine’s dashboard. That meant that the ECU thought the virtual car hadn’t started, and that meant that all the requirements of the proof-of-concept weren’t met.
Not being able to trick the ECU into thinking that the car started wasn’t a deal-breaker, but it sure would have been nice. It was the only requirement that they weren’t able to implement, and Christophe was convinced it was a data problem. Somehow, their software wasn’t sending the correct signals to the ECU.
The day before the big acceptance test, Christophe decided to give it one last shot and prepared for an all-nighter. He started from the beginning, and reviewed the 117 signals one-by-one with an oscilloscope, trying to figure out which one was wrong. Truth be told, he had no clue what most of the signals represented, so he was pretty much shooting in the dark.
Sometime after the clock hit 2:30, Christophe stumbled upon a signal called “VK”. The documentation simply stated that it was “the signal for VK; digital (0V, 12V)”, and it was one of the few signals that didn’t seem to be associated with a sensor or instrument. On a whim, he clicked on the VK signal in their software’s GUI, changed the voltage value from 0 to 12, and applied the changes.
And then all hell broke loose. The once-quiet office was filled with a terrible grinding, clicking, and hissing noises. Petrified, Christophe slowly turned his head towards the Test Machine and watched in horror as all sorts of angry lights flashed at him. He had seen plenty of electronics fry before his very eyes, but he had never seen or heard anything like that.
Certain that the Test Machine was about to explode, Christophe quickly assessed whether he should run like hell or brave slamming the big red “emergency stop” switch on the side of the machine. In hopes of saving the building from burning to the ground, Christophe rushed to the Test Machine, and flipped the red switch using the cuff of his sleeve.
As soon as they started, the horrible noises stopped and unmistakable odor of fried electronics and ozone permeated the air. Single-handedly and with a single flipped voltage, Christophe had destroyed their client’s multi-million dollar machine and blown all opportunities for his company in the automotive ECU testing industry. It was certainly enough damage for the night, so Christophe went home to prepare for the next day.
After shaving, showering, and drinking nearly an almost entire bottle of milk of magnesia, Christophe returned to the office at 6:00AM to share the bad news with the early-birds. By eight-o’clock, the entire office was in full-panic mode. In an all-hands meeting, a young engineer offered up a naïve suggestion: “maybe we could try to fix it?”
It was preposterous, ridiculous, and outrageous: not only was dangerous to turn back on, but they knew nothing about the inner-workings of the extremely-complicated Test Machine. Then again, they were desperate and were willing to try anything.
One of the hardware experts carefully unbolted the Test Machine’s cover and surveyed its innards. There were a dozen control boards, several enclosed boxes, quite a few power distributors, and a whole jungle of wires. The hardware guru meticulously looked over each electronic circuit and did a thorough sniff-test. But nothing smelled burnt, and nothing looked blacked.
Could it be that Christophe – after working twenty-plus hours straight – had imagined the event? Perhaps, but more pertinently, it seemed safe to at least turn on. Who knows, maybe it was only partially broken, and they could still do a partial proof of concept?
Nervously, Christophe closed his eyes and toggled the big red switch. The Test Machine did not hiss, crackle, nor blinked angrily. Its enclosed computers booted up just fine, and things appeared to be normal. And therein lay the problem: a full diagnostics sweep would take well over two hours to run, and their client was arriving in thirty minutes.
Figuring that they’d have no chance if they admitted to breaking the Test Machine, they decide to cross their fingers and proceed with the proof-of-concept demonstration. The client had very little interest in sitting through a barrage of slides and charts in the conference room, and insisted to see the software in action.
Nervously, they relocated the room with the Test Machine, and started running through the acceptance tests, one step at a time and as slowly and carefully as possible. At first, it looked like the stalling was working, but it soon became clear that the client was getting antsy. “Yes, yes,” he said in a thick Japanese accent, “I bereive you that test pass. But I rike to use, okay?”
Letting the client drive was always part of the proof-of-concept plan, so Christophe reluctantly ceded the keyboard and mouse. After playing around for a few minutes and affirmatively shaking his head as he clicked, the client asked, “how I change value of VK signal?”
Christophe froze. Of all the stupid signals, he thought to himself, why did he have to pick VK? Why?! Okay… I can tell him that, uh, we forgot to include it. Err, yeah. We must have left it off, but we can—
“Don’t mind,” the client blurted out, “it was right here.”
Before Christophe could even think of grabbing the mouse out of his hand and pushing him to the side, the client clicked on the value, changed 0 to a 12, and clicked apply.
Once again, the Test Machine came to life, filling the office with a symphony of clicks and hisses. Christophe clenched his jaw and turned his head too see an unbridled fear fill the eyes of his marketing and engineering colleagues. They hadn’t heard what it sounded like for the Test Machine to self-destruct, but they all knew it was the same sound that happens when your entire company gets flushed down the drain.
Once again, Christophe went into panic mode and, as the world around him moved in slow motion, he prepared to dive towards the Test Machine with his arm extended and hit the big red switch as he fell to the ground. Compressing his legs to make the jump, he shot a glance towards the client but noticed that he wasn’t in fear for his life.
In fact, the client had a completely different reaction. He was smiling for the first time that day, and was opening his mouth to say something.
“Veeeeeeerrrrrrrrrryyyyyyyyyy,” the client said in slow, bassly tone. Christophe blinked his eyes and everything returned to normal speed. “Very impressed! Injectors firing, spark plugs firing. Rearry good job, virtuar car is now running!”
Indeed, when Christophe looked closely at the Test Machine’s dashboard, all of the big red lights were switched off, and the virtual car was, in fact, running.
VK, as it turned out, was the signal describing the position of the ignition key.
|« Dave.cpp||Very Special Strings »|