Look, I’ve got to come clean on something.
It’s a big something.
It’s a something that’s going to require significant historical context to fully appreciate. Knowing how I write, that’s a really big something.
In fact, this something is big, so painful, so cathartic and wonderful all at the same time, that I don’t even know if I’m going to be able to get through the process of full disclosure. It’s a something that any self-respecting UNIX geek would feel so ashamed of that they would probably do penance in the form of 15 kernel builds on a 386 followed by 5 days of fasting in CDE. It’s just that damn big.
What’s the something? It’s the honest confession that every time I use Microsoft Visual Studio, I have to keep a towel nearby so that I can wipe up afterward.
It’s the confession that I am a whore to Microsoft.
The Geek Within (skip this part)
In order for you to appreciate how troubling this is, we have to go back in time. This is a story that I rarely share, so feel privileged. This is a secret part of me- I have a wife to keep, after all.
That wife, Jessica, is just flat-out hot. And she was also one of the cool kids. She was pretty, she was popular, she was loved, she was a cheerleader. She was cool.
If she can’t see that line between my tricep and my deltoid, she starts looking around.
Consequently, in order to convince her that I’m cool enough to deserve to bask in her glory, I look the part of a long-haired, motorcycle riding rebel. I eat right and I work out. I fret about my weight because if she can’t see that line between my tricep and my deltoid, she starts looking around.
But it’s all an act. If it wasn’t for her, I’d be living in a basement in front of a 32 inch flat screen and I’d see the sun only when I need to pay the pizza delivery guy or bike to BiMonSciFiCon.
Jessie doesn’t know this, so keep it on the down low, but her husband is a total geek. He’s such a geek that he used to program his own games on his Ti99 4/a as a kid. He’s such a geek that he actually lost a friend because the idiot wanted to just play video games instead of program them. At 14, this guy was programming daily in BASIC. At 37, this woman’s husband still thinks that the best class of his high school career was PASCAL. The only reason why I don’t have the hard-copy, leather bound edition of the original Dune series as a centerpiece in my living room is because she would never, ever , ever have sex with me again if she fully understood the reality of my dorkiness.
Where am I going with this?
Nowhere, actually. That background story was entirely so that I could use Dune, Simpson’s references and sex in the same thought.
Look, man, I told you to skip the damn part. Don’t be mad at me.
Microsoft Sucks
So, because I’m big Mr. “Uber-no-one-can-pull-my-geek-card,” I’ll say that it was the early 90’s when I gave up on Microsoft. When Windows 3.1 hit the scene and the PC started becoming seriously ubiquitous, I turned my back. Couldn’t deal with it. That’s when I started being a dedicated, fundamentalist, unapologetic, flame-throwing UNIX user. I’ve hated Microsoft ever since.
Windows as a Marketplace
The problem is that Microsoft just can’t do one damn thing right. Well, they do one thing right. They sell. In fact, the fundamental purpose of the Windows operating system is to sell software. They sell the operating system, but that’s not the end of it. The operating system and their entire software suite is merely a computer-based marketplace. The whole thing is set up to build a framework so that other people can sell their software.
Windows is about selling you someone else’s solution to the problem that they are telling you that you have.
This is important, and something that most people don’t really appreciate. There’s all this talk about productivity, about getting things done, yada yada. The problem is that all breaks down when you realize that Windows is not about getting things done at all. Windows is about selling you someone else’s solution to the problem that they are telling you that you have.
At 3.1, I figured that out. There was actually no way to get something done unless I bought some software. This software would invariably do something close to, but not quite, what I wanted to do. When I bought that software, there was really no way for me to make it do exactly what I wanted to do. It was fast, granted. Pay money, install, have convenience of an instant- if sub-optimal- solution.
Windows was created with one single word in mind: Marketing.
UNIX as a Workplace
When I realized this, I looked for another solution and stumbled onto UNIX. UNIX was everything I wanted. It was geek central- there wasn’t a greasy-haired dork in the room who didn’t have a 20-sided die right there in his pocket. It was geeky, it was unforgiving- and it worked.
There wasn’t a greasy-haired dork in the room who didn’t have a 20-sided die right there in his pocket.
You see, while Windows was selling, UNIX was actually working. There wasn’t a thing you couldn’t do in a shell. There were millions of software programs that were free, and already on your system. Each one of them was designed so that you could type 2-3 little letters and instantly have something accomplished. It was exactly what you wanted to have accomplished- and if it wasn’t, you could modify the code- or pipe it through another 3 letter program.
In UNIX, everything was free, everything was modifiable, everything was possible.
In short, UNIX was created for one single purpose: To get shit done.
Microsoft Strikes Back
But things change, and people with heavily fundamentalist viewpoints that refuse to look around them are often blindsided by the complexity of the real world. In the mid-90s, I went to college. For stupid reasons that I might outline in a later post, I did not seek a Computer Science degree. I went into science- social and physical.
I was happily living in my dark little basement and curling up each night with my sweet little Alphastation.
Now, the whole time in college, I was basically programming, but I was doing it in isolation. I was happily living in my dark little basement and curling up each night with my sweet little DEC Alphastation. I was purposefully ignoring and denigrating all Windows users everywhere. I did this all through college and for much of graduate school.
At some point during grad school, after floundering and actually dropping out of one department, my engineering advisor sat me down and said something to me. The actual words are lost, but it was along the lines of “Look, stupid. You’ve been screwing around, pretending to dig hydrology for nearly two years. I’ve got some hydrologic programming I really need done. You love programming. What’s the fucking problem?”
Yeah, sometimes really smart people smack you upside the head and make you realize how dumb you’ve been.
So, I started working for him as a programmer. But I worked only grudgingly he was working in <shudder> Windows. He was working in Windows and the program was a monolithic spaghetti monster of more than a few tens of thousands of lines of code, all one single “class,” programmed by someone who taught themselves a heretofore unknown version of C++ while they were building it. It was a nightmare. And it was something that required me to use, to my nightmarish horror, Microsoft development tools.
It was ugly, it was not what I wanted to do, but it would pay the bills. I bowed my head, bent over, and took the whippings.
Microsoft Rocks
It was the worst day of my life. It was so bad because, with the exception of jumping on a research computer here or there at school, my only experience with using Windows on a day to day basis was pre-Win95. My concept of their entire framework was “build a place where people buy/sell crap and nobody really gets anything accomplished.” Because of this, I thought that the only thing I was going to accomplish by trying to program a highly complex engineering model in Windows was to seriously consider my weight… and the drop necessary to make the noose snap my neck properly.
I thought that the only thing to was to seriously consider my weight… and the drop necessary to make the noose snap my neck properly.
But as soon as I installed that old, now crappy, version of Visual Studio I knew something had changed. You see, while I was in college and grad school standing on street corners and streaming at the top of my lungs while holding up a copy of The Cathedral and The Bazaar- Microsoft was sitting down and, well, getting shit done. They were doing something revolutionary. They spent months, maybe years, doing nothing more than re-defining what it means to develop software. From the tools to the management framework to the work environment, they were focused on one thing: Give developers every goddamn thing they need to develop software.
Looking back, I see it as one of the most important, and beautiful, steps in the history of computers. I mean, Microsoft still sucks in many ways, I still prefer Ubuntu any day, they still fundamentally sell software. But they’ve done something wonderful. They’ve defined software engineering in a way never before dreamed of. This company built crap and sold it really well- and afterward they stepped back and spent considerable time and money teaching themselves how to do the former better.
And because of this, they have these tools, these frameworks, these strategies that are all focused on one singly efficient, inexorable goal: Kick-ass Software Development. If the Borg were looking for a company to learn strategy and efficiency from, that company would be Microsoft.
Secret Microsoft Sex Slave
In a lot of ways, I missed my calling, and my chance. I was hitting college right as many things were happening, and had about 10 years of programming experience at that time. I chose the science path instead. But even though I didn’t jump into a programming career and ride the wave, I’ve always been, and will continue to be a programmer. It’s also evident that I will continue to appreciate Visual Studio and Microsoft’s development prowess, even if I go home to my Ubuntu laptop.
I’ll continue to appreciate it because, to put it bluntly, Visual Studio makes me wet.
I’ll continue to appreciate it because, to put it bluntly, Visual Studio makes me wet. Seriously. For the past couple months I’ve been thinking of an Outlook app that I simply can’t believe is not native. And for the past couple months I’ve been too scared to even start on it. I’ve been scared because I sometimes feel as though I’m not a good enough programmer- loss of self confidence after years of programming as a hobby instead of a job. But I’m also scared because Office is a big programming world. You may not think it’s that big if you just use it, but even the core Office apps probably have more code than the entire Windows 3.1operating system did. Seriously. Jumping into that was just plain daunting. I didn’t even know where to begin.
Last night, finally, I took the plunge. I took the plunge and fired up Visual Studio 2008. I had no idea how to build anything in Outlook. I’d spent hours, days actually, trying to read everything I could on the .NET infrastructure in Office, on Outlook programming, on the Interop Assemblies. I just couldn’t get it. I stood there looking at Visual Studio’s black start page as if it were a precipice into despair. At some point, I decided to just start writing code.
And magic happened.
It was wonderful. In an hour, I had a working context menu in Outlook. Days I spent reading, trying to grok libraries. Days wasted. In 1 hour. 60 minutes, I was able to fire up Outlook, right click on an email message, see my little context menu item pop-up (only when it was appropriate), and close down quietly. 1 hour. From paralyzing fear of failure to a decent beginning in 60 minutes.
That’s just magic.
After one hour, I was done. Exhausted. I laid back, smoked a cigarette, wiped myself up and went to sleep.
After one hour, I was done. Exhausted. I laid back, smoked a cigarette, wiped myself up and went to sleep. I shamefully gave my Linux box a kiss goodnight. I actually said “I love you Ubuntu.” I was cheating, and my laptop never even knew. I didn’t sleep much. Part of it was that my head was swirling with feature creep and I was trying to focus on core functionality. But most of it was because that was the moment that I realized that I’m a whore.
You know that moment when you discover sex? No, not that moment. The real moment. The time when you have it and think “Holy shit! I just never knew it could be like that!” That’s what I feel when I program with Visual Studio. I’ll continue using Ubuntu daily. I’ll keep going through the motions of pronouncing Microsoft “bad at everything.” I’m a *NIX user to the core.
But I have to be honest with myself. Late at night, when I want to feel it. When it’s dark, and I’m all alone and I just want to do it and have it feel so good… I’m going to sneak away. I know I am. I am going to cheat on Linux. I am going to program in Visual Studio.
I may talk smack, but I’m really just a secret Microsoft sex slave.
Glorious Comments: