Wrong Way Sign"You BASTARDS! You stupid little brats! Don't you even dare to try that again, ya hear me?! YA HEAR ME, PUNKS?!"

It was a quiet day at the IT department. For the last few weeks, the team has hit a dry spell – there were hardly any calls, and they spent most of the days desperately trying not to die of boredom. Ron managed to dig up an old copy of Counter-Strike and was currently getting his ass handed to him.

"Lost again?" -  Melissa, his fellow tech, finally gave up painting her nails for the tenth time and chimed in.

"You bet I did! This place is full of cheaters! Just wait till I..." – Ron's rant was cut short by a sound of a phone ringing. He rushed to the receiver and grabbed it off the hook.

"Yeah... okay, Boss ...yeah, um, we're uhh... a little busy, but we can make it, I think... Okay. Yessir. Bye!"

"So?" – Steve, a freshly-hired intern and the last part of the trio, turned away from his desk. - "Did we get some work to do?"

"Oh, it's nothing." – Ron sighed. – "Their reporting system is acting a little funny, that's all".

"You mean Bluecorp Reports?" – Melissa asked. Bluecorp was their company's main IT solution provider – their software was incredibly buggy and almost unusable, but over time the employees got familiar with its quirks and worked around most of the bugs.

"Yeah, that's it. When you view the monthly report from the web page, it works fine, but when you export it to HTML, one of the charts is suddenly one pixel tall."

"Why do we keep paying them... Steve, call their tech support and have them sort it out. I'm out for lunch. Ron, you coming?"

"Sure, why not." – Ron grabbed his jacket and headed out, leaving the intern to finish off the job.

Roadblock After Roadblock

When Ron and Melissa came back, Steve was still on the phone. So, they went for a coffee.

Then, a cigarette...and then, another one.

Finally, after an hour and a half, they found Steve with a resigned look on his face, staring at the phone in front of him.

"So, what's the news?" – Ron asked.

"Well, it took a while, but I managed to get them to acknowledge a bug in their software. Apparently, one of their XML configuration files is wrong, or something like that."

"That's good, right?" said Melissa "They'll have it fixed for us?"

"Yeah, well, that's the bad news. They said they'll fix it in the next release."

"They're on a frigging yearly release cycle!" Ron burst out, "You're right Liss, why do we keep paying them... Okay, guess we're going to fix it ourselves. Did they tell you which file that was?"

"Yeah, they did." Steve logged into the server and opened Notepad. "That's the one, I guess..."

Ron looked at the monitor. The file was only a few lines long, and it was obvious it had nothing to do with either the export, or the charts in general.

"Those bastards..." he muttered, "Just how much do we keep paying them?"

"You don't want to know, really," said Melissa, "Okay, it's PHP, right? Maybe we can take a look at the code?"

Steve clicked a few times, and brought up another file in Notepad. This time, a random jumble of letters and symbols squished into a single line was staring at them menacingly.

"And it's encrypted. Curses, foiled again..."

Ron paced nervously back and forth, trying to figure out another angle of approach.

"So, the problem is only with the export, right? And on the website, the charts are okay? Let me try something..." he pushed Steve aside, generated a report, and checked the source of the website.

Sure enough, there it was – an <img> element pointing to report.php?f=1.png.

"So, we can get that link, just like that..." Ron copied the link and pasted it into the address bar - "and download the image from here, like th... wait, what the hell?!" he exclaimed. It was and entirely different chart coming from the same address.

"That's... the next page chart." Melissa was just as stumped.

He hit Refresh a few times, getting another and another chart each time, until finally he saw a generic "Error" image when he went past the end of the report.

"They make a new image each time you load it? That makes no sense. At all."

"Hey, wait!" Steve finally decided to remind his colleagues of his existence. "I think I know what to do. Just give me half an hour."

Desperate Measures

"Okay, give it a try now."

Ron pulled up a report, ran an export and browsed through it. "Hey, you did it! Come on, show me what you did."

"Sure, come on over," Steve opened a small Perl script on his computer, "So, when someone requests an export, normally the app would run e-mail code at the end to send it to you. Instead, it now runs this."

"So far, so good..."

"The script logs into the server and goes to the report page. Then, it keeps downloading the image and calculating a checksum of it until it gets two identical checksums in a row – that means we're getting that error image you saw."

"Uh-Huh..."

"Finally, it takes the right image, unzips the report, substitutes it in the right place, packs it again and sends it to the recipient. As simple as that."

"That's... quite a workaround, yeah. I'm not sure if it's what I'd call simple though."

This time, Melissa didn't even look up from her nails. "Hey, if it works, it works. And you know what they say – drastic software requires drastic measures, doesn't it?"

"Guess that's right," Ron relented, "Anyway, I'll be out taking my revenge on those cheating brats. You guys in?"

"Sure, why not," Melissa put her headset on, "As long as I play on the other team."

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!