Bakdar was the only technical person at PromoCorp, a marketing company. When someone finally launched a technical project, he was ready. The product was a cutting-edge web-to-print technology, in which Joe User could easily upload an image of his plumbing company’s logo onto a mock-up of a pen, and send it to PromoCorp with his order. It would save time, money, and provide a revenue stream for PromoCorp. The project was big, the project was technical, and the project was the attractive sort of thing that made careers. Bakdar was over the moon.
It was a brilliant idea, with one problem. PromoCorp didn’t have the internal resources to create the web interface on their own, so they contracted a third party, Weblutions, to do it for them. Bakdar was the liaison between the two, tasked with making sure things went smoothly. The interface between Weblutions and PromoCorp was supposed to import the images from Weblutions so that they could be emblazoned onto things like crappy t-shirts nobody would ever wear. The finished goods would then be returned to the customer who initiated the request.
Jarvis was the lead developer at Weblutions, and was Bakdar’s point of contact. Jarvis provided FTP access to the cache of uploaded files and order documents (in XML, of course). What Bakdar got from there were piles of very low-resolution, raster-based PNG files that wouldn’t look good in Minecraft, let alone printed on promotional items.
“Hey, Jarvis,” Bakdar said over the phone. “Listen, I got into the FTP and pulled the images, but they… they aren’t what we’re hoping for?”
“Really bro?” Jarvis said. “Looks gnarly over here. What’s the problem?”
“The largest image is 640x480. If I printed these logos on some promo balloons, it would just look like some sort of smeared blob.”
“Alright, alright, that’s cool. So what can Jarvis do for ya?”
“Well, you either need to give us the images in a vector format, or give us much higher resolution raster files.” Bakdar explained the importance of DPI and print size. “Something like SVG files for vector art would be the best.”
“Well, why didn’t you say so, man?” Jarvis said, ignoring the fact that the requirements document clearly stated valid minimum resolutions. “I’ll get ’em to you by the end of the week!” Jarvis brimmed with confidence. “Vectors, man. Vectors!”
Bakdar should have been relieved, but he couldn’t seem to shake his unease about the situation. Still, Jarvis was the lead developer, and Bakdar hadn’t written anything from scratch in years. He gave Jarvis the benefit of the doubt, vowing to check back on his progress at the end of the week.
Friday afternoon rolled along, and there was still no word from Jarvis. Bakdar shot off a quick email, hoping for an update, but instead got an out-of-office message: “I’m out of the office for the next week, dudes and dudettes! Surfing trip, WOOOOOO!” Bakdar furrowed his brow as hard as a brow can be furrowed.
When Jarvis returned from vacation, he replied to Bakdar’s original email: “So sorry, bro. I forgot to tell you that I redid everything like you asked. It’s all SVGs now! Peace ~ Jarvis”.
Bakdar did his best to ignore the fact that Jarvis had wasted a whole week of his time, and connected to the FTP site to import the new images. The progress bar crept up to 5% and stayed there. For an hour. Bakdar canceled it and had Jarvis remove all but one image from the directory so that he could test the import.
The process got past 5%, but was glacially slow for a single image. This gave Bakdar time to imagine what would be waiting for him when it was done. He half expected a PNG file with its base64-encoded data embedded in the SVG file, but that would be silly.
Silly, and much, much better than what Jarvis did. Jarvis’s “ingenious” vectorization algorithm created a file which contained a circle
node with a radius of 1px for every single pixel in the (still woefully low-resolution) original PNG file. The 3kb PNG file blew up to a 3.7Mb SVG file. Chrome and Firefox committed browser suicide rather than render it. Adobe Illustrator tried its best for 20 minutes before its proverbial head exploded. Past WTF evidence should have told Jarvis that circles are nothing but trouble, but nonetheless, he came up with this atrocious solution.
Bakdar called Jarvis. “Jarvis, we need to chat…”
“Right on, bro. What’s up?”
“I can’t use this. The file sizes are far too large, and it renders the system inoperable.”
“Hold on a sec, buddy. After our last call, I went back to the requirements. Section 4 says the images can either be high-resolution raster files, or- and check this, dude, direct quote- ‘an SVG file’. That’s what I gave you. It meets the requirements.”
“Yeah… but… well… let me get back to you.” Bakdar rushed to the requirements document in hopes of finding the logical flaw in Jarvis’s response. Sadly, the document said nothing about file sizes or processing times.
Bakdar had to go back to his superiors and explain how their high-res image project would be delayed while he worked through some kinks with the web vendor. Any urgent client requests for promotional items would be limited to tiny logos on small trinkets until Bakdar found a way to claim “SVG file” precluded Jarvis’s pointillist solution. Suddenly, the whole “manage a technical project” thing had lost its glamor.