Wednesday, September 16, 2009

Why I hate Microsoft Visual Studio

  1. It provides me useful, timely information about my current task
  2. It makes it so I have to type less
  3. It works
In short, because I love it. Yes that's right, I hate it because I love it. I've been using another "IDE" recently at work, and it's made me realize just how much I love Visual Studio. Before having to switch from VS, I was aware that I liked it. But the switch made me aware that my feelings for it ran much deeper.

I've never been much of a big fan of Microsoft's products. For well over a year, we only ran Linux at home. Until my current job, my code editor of choice was vim - simple, easy, and reliable. I didn't need any fancy IDE. I was a code-and-run developer (code a little then run the program - repeat ad nauseam). I was unhampered by the need for big integrated toolsets. But then I started to use VS, and it started to grow on me. At first I was confused by all the buttons, windows, dialogs, wizards, panels, etc., but felt more and more comfortable as time passed.

And then today as I talked with a co-worker that still gets to use VS, I realized that I was actually jealous of him for having such a tool at his disposal. I was a little unnerving. Every once in a while, I find that there is a thing that I have been playing with or using without much thought that I suddenly realize I love. These are things that I don't expect to have much of a hold on me when I start using them. They start out as a toy or a means to an end, but they become more than that without me even realizing it.

The last time it happened was with my homemade DVR (digital video recorder - like Tivo). I made one using an old PC on a whim and about $100. It quickly became the primary TV related device in our house until it suddenly stopped working. We survived without it for a couple of months, but we eventually gave in and got a real Tivo.

Both of the experiences were unnerving because of the hold these things had I me. I don't like when technology has its talons too deeply in me. I always like to think that I can easily cast off most of the fancy gizmos - that I can return to "simpler" times and ways. I'm not an early adopter by any means. I am generally skeptical of new gadgets, and it takes me a while to even conceive of a need for them. So loving some of them actually scares me a little.

I cannot hide from technological advances and the shiny things they produce. I will end of loving some of them because of their usefulness to me. The trick, the hard part, is to love the usefulness and not the gadget - to be able to drop it when it is no longer as useful. To love what it does and how it helps without convincing yourself of its necessity for your usefulness.

Friday, September 4, 2009

The Curse of Xanadu

I found an old article about a failed (or not yet successful) product called Xanadu. Xanadu is a hypertext system for publishing and linking documents and information. Sound familiar? No, its not the next hot web app. According to its creators, its what the Web should have been or what will make the Web obsolete. This system was conceived in the Sixties - long before the Web. According to Xanadu, the Web doesn't even come close to their product. It's inferior in every way and is basically just paper 2.0. So, why aren't we all using Xanadu instead of the Web? What are some of the things we can learn from Xanadu.
  1. It was too revolutionary. But isn't being revolutionary a good thing in software? Yes, but with science and technology being too revolutionary can make you and your goals unapproachable. Let's face it. People don't really like their world being turned completely upside-down. We'd prefer that it just tilt a little bit every once in a while. Anything more upsets our stomachs. And when your ideas are too far ahead of what's technologically available at the time, you have to build everything for yourself from scratch. The existing technology gives you almost nothing to build off of. Just think if someone had conceived of a modern car with an internal combustion engine within a completely agricultural society with no conception of even basic metal working.
  2. Perfectionism. This is a typical vice in software. Many people fail to understand the benefits of building and releasing a system with only a fraction of the conceived features. Projects attempt to build all of the proposed features to perfection before allowing customers to have anything. This causes problems. First, it robs the creators of valuable feedback from customers as they develop further features and hone existing ones. Second, it increases the chance that someone else will get to the customers first and win their loyalty before they've even seen your project. And last, it means you will never complete your project because it will never be perfect.
The Web might be just like paper to the makers of Xanadu. But it's made everyone feel as though they've been through a major revolution. And it may have a lot of flaws, but I can use it and it gives me a lot of what I need - now.

I'm not looking for mediocrity. The goal is to create tools that will be useful to people. If they can't imagine or understand them, then the tools will never be useful. If you are unable to allow yourself to give people tools that do some things well (rather than all things perfectly), they'll never see your project.

Tuesday, September 1, 2009

Newspeak Programming Language

After my post the other day, I happened upon the website for the Newspeak programming language. I was previously unaware of it, and it was a bit eerie to find it so soon after posting. I had a brief feeling as though we were just a hairsbreadth away from the totalitarian rule of Big Brother. But on further investigation, I found out that there is nothing to worry about. The Newspeak programming language featured on the site uses dynamic typing, and everyone who's read 1984 knows that the real Newspeak programming language will use static typing.