This article is exclusive to Pointer — a reading club for developers.
Sign up at Pointer.io for our weekly newsletter.
[We all see news stories and company-spin messages when executives depart under a cloud. But why is there never such gossipy buzz when programmers are asked to leave? Maybe such an article would look something like this.]
The programming world was rocked today when representatives from Zirkofeed announced that one of their top programmers, Karo Fedbeister, has left the company. Karo is well known in the software community as the inventor of the triple-slash comment style as well as the pattern of right-aligning his code (a fashion that has not caught on, but which marks code in open-source repositories as distinctively his).
“It is with great trepidation, and advice from our expensive legal team,” said the person from Zirkofeed’s PR department, “that we are reporting the immediate departure of Karo Fedbeister, who has been working on our new FeedBuster™ product, a revolutionary technology that allows multi-stream synchronization with cloud data services and local processing capabilities to produce results that synergize with customer requirements.”
[The company went on for several more wasted minutes, but this reporter totally lost the thread, and picked up again when they got back to the point].
“Karo has decided to leave the company and to spend more time with friends and family, as soon as he makes some. Zirkofeed and Mr. Fedbeister have come to a parting of the ways based on a difference in vision: he felt strongly about taking the product in a particular direction, and we felt strongly like firing him.”
“We have no further comments at this time, except to say that with our service-oriented, cloud-based micro-server architecture, clients can…”
[At this point, all of the reporters left the room, since it was clearly turning into a product pitch. Plus, all the booze was gone.]
The euphemism of former employees spending more time with friends and family is laughable under normal circumstances. But it is particularly suspicious in this case since Karo hasn’t had friends since he set his fifth-grade classroom on fire while he was “Hacking the power outlet.” And he hasn’t had family since he sued for “Emancipation and General Disgruntlement” in the highly-publicized lawsuit Fedbeister-v-Fedbeister which he filed immediately after his parents finished paying off his massive student loans for three unfinished degrees plus a culinary school certificate (denied). This reporter decided to find out more about the situation.
Rumors of his imminent departure have, in fact, been brewing for some time, from the subtle Reddit thread “Holy crap, this Karo guy is a jerk!” to a multiple twitterstorms asking Karo to “Please! Shut! Up!” (Oddly, many of these tweets were from Karo himself).
But matters came to a head recently in the offices of Zirkofeed when Karo changed the entire code base of the project he was working on.
Sources inside the company said that Karo spent all of last weekend at the office, while the rest of the company was at an offsite team-building exercise called “Building Better Cubicles!” at a veal-production facility. He was apparently refactoring code and injecting scripts into the build process that completely changed the entire source repository. By the time the engineers returned on Monday, all of the code in the system was overhauled and subject to the new system that Karo had instituted.
I managed to get ahold of an internal email that Karo sent that morning which explained his changes:
Fellow, though much less skillful, colleagues:You might notice some changes around here. Not so much in the office (although I do apologize for the mess in the bathroom — I’ve been evicted from my apartment and it turns out that doing laundry in these tiny sinks is sub-optimal, and drying them is taking much longer than intended. I expect the boxers to be done by lunchtime, though the socks may take a day or two longer).No, I’m talking about changes to our code.Remember the “PrettyPrint.py” script that our build server used to run to format the code? Well I never thought the result was very “Pretty,” so I changed it. A lot.I’ve created a new language and have single-handedly rewritten all of our code in that language. I’ve also instituted new style guidelines and changed the PrettyPrint script to format accordingly. Finally, I’ve deleted all of the old code (from the server as well as the backup storage). This approach will make it easier for us to go forward, since there is no going back.I call the new language KaroScript™. It’s a functional, dynamic language, with elements of object-oriented programming as well as artifacts from my favorite scripting languages and keywords from some of my favorite sci-fi novels. It’s both strongly- and weakly-typed, depending on the mood of the programmer. It uses line numbers and Goto (which I’ve always found convenient and mysteriously lacking in modern languages), and requires TAB characters for indentation (1 TAB == 7 spaces). Furthermore, KaroScript depends on recursion for all code flow, which I find elegant and way cooler than iterative approaches, especially since nobody but the original author can really understand what’s going on. And isn’t it about time that we had a little more job security in software?But the biggest difference with KaroScript is the code style. Some of the distinguishing features include:- All text is in italics, because it’s prettier that way.- Code is centered, but comments are right-aligned. Macros, on the other hand, are justified to align with both left and right margins. Line wrapping happens automatically at column 35, making it easier to do code reviews on really tiny screens.- Comments are in quotes (single or double). This approach makes the comments much more elegant, as if the author of the code is speaking directly to the reader. However, this bold syntactic choice means that strings in the actual code are problematic in the new language, so I deleted all code that was using strings. We can re-write that code as necessary once we’ve decided how, or whether, to handle strings in the new language. I considered taking an XML-type approach and bracketing all of them with <string></string>, but this syntax interfered with standard math symbols and it was really late and I was hungry, so I punted for now.- Utility functions are optionally written in ASCII-art style, where you are encouraged to depict any object at all, as long as it is recognizable and not just abstract art. I hate abstract art.- All loops use the keyword “whilst” and time-based sequencing operations use other appropriate language. For example, posting an action to occur later uses the word “anon”, whereas immediate actions use the key-phrase “henceforth and forthwith.”- All-caps are reserved for VERYIMPORTANTFUNCTIONS, and camelCase may only be used in limited circumstances (to be determined later. Just stick with lower case for now. It makes the code look more like an e. e. cummings piece, which is pretty awesome. Now the code looks like iconic, if very hard to read, poetry).I am certain you will enjoy programming in this new language and style, as its inherent beauty lends itself to the creativity that we programmers all feel inside. And if you don’t like it, tough; it’s changed already, and I’m the TL for the project, which means I get to make this call unless they get rid of me. And we all know that’s not going to happen.- Karo
The company was contacted regarding this email, but they had no comment other than to say, “Users of our FeedBuster™ product can maximize potential revenue streams through its incorporation into the BusterBest™ Productivity Suite™, which aligns business goals…”
I stopped listening at that point.