Archive for December, 2007
"What a nifty way of doing things!" says I
I’ve been committing a fairly substantial mistake on Visualize History, and while I’d usually be the last one to admit any mistakes I make, I’ll admit to making this once since I think it may be fairly common among programmers and, in addition, real human beings.
The problem stems from finding out a new and cutting edge way of attacking some problem, in our case AJAX. “What a nifty way of doing things!” says I, and now every problem needs an asynchronous call. Now you may not care about the technical advantages or disadvantages of AJAX, nor should you. The big point is that for 7 or 8 years I’ve been doing things one way, and now everyone seems to want to do things a new way, and so do I. But the old way has worked pretty well, and, well, you and I both know not to fix things if they ain’t broke.
I remembered that Joel Spolsky wrote about something similar and in trying to find it, found this instead:
The MSDN Magazine Camp is always trying to convince you to use new and complicated external technology like COM+, MSMQ, MSDE, Microsoft Office, Internet Explorer and its components, MSXML, DirectX (the very latest version, please), Windows Media Player, and Sharepoint… Sharepoint! which nobody has; a veritable panoply of external dependencies each one of which is going to be a huge headache when you ship your application to a paying customer and it doesn’t work right. The technical name for this is DLL Hell. It works here: why doesn’t it work there?
I’ve read Joel’s article, and I agree with it. It resonates with me, and yet I still fall for these tricks all the time. I fall for them when there is not company pushing on me, whether by convention or by advertising. I fall for them all the time, and I don’t know why.
The problem is very closely related to the problem as discussed by Raymond Chen which he calls “solving one problem by creating a bigger problem.” It’s not exactly the same but for some reason I do both, and I think for a similar reason. Once I understand a concept very well, or at least like a concept a lot, I find that I can jam any problem into that concept, no matter how dissimilar they may seem. So if that means installing cygwin on my PC so that I don’t have to learn Windows command line syntax, then so be it.
So this post is to remind you (and by that I mean me) not to force new techniques on old problems where they don’t really belong, and to treat a new technique as just another technique. There’s more than one way to do it, but that doesn’t mean try all the ways, or even just one way all the time.
No commentsSorry, I hid the site
I’m on break right now and I’ve been working and re-working the site. Things are going up, down and all-around so I made a possibly saddening decision to hide the site from the general public. I think people that have been arriving at the site recently have done so accidentally and I think I’ll wait until there is at least some actual data available before I let you see things.
No commentsWhat is version control?
(This post is the first in a mini-series titled “Should I make my code open source?”)
For me, the biggest reason to open up Visualize History is certainly version control. Don’t get scared if you don’t know what that is, because you really do.
Imagine that you are a senior in college writing your senior thesis. You’ve collected your research and you write your first draft, which you turn in right before Thanksgiving break. Over break, you manage to forget about the draft completely, and, when you return to school, your advisor says I’d like you take it in a new direction. So you delete pages 4 through 19 and rewrite them completely. You save the file, and have deleted the old version. Then you hand it back in, and the professor says “oh, wow, the old paper was so much better”. You panic. But if you are using source control, all you need to do is check for old versions. You can browse the changes, combine the new and old versions, and copy and paste from both files as if there were different.
Some of you may be thinking well luckily I’m not a dumb college kid who throws away his senior thesis anymore. I would have saved a copy. So, my second example comes from the law firm of someone I know quite well, who for this post we’ll call Alan. Alan tells me that at his firm, they write and rewrite drafts, sometimes making 30 or 40 versions of one file. “Don’t worry”, he tells me, “we have a system. When I change a file, I add a number to the end of it. Today I just finished ‘brief about something boring.v23.doc’.” Version control has an answer for these people too. Not only does it automatically add the version numbers for you (“Wait is this draft version 23 or did Dave finish 23 and I’m on 24?”), but it understands who you are. That means if your assistant is correcting your spelling while you are adding an appendix on things your client can’t get caught doing, the version control system can merge those changes, automatically. It can highlight lines that have changes, and it remembers every change ever made, and who made it. Not only that, you can control who is allowed to see or to change a file, and you can undo all changes made by one person. So when Bill quits out of frustration over the ridiculous naming system, but before doing so, inserts random words in every brief he has access to, you can laugh at crazy Bill and fix his spiteful nature in about 8 clicks.
There isn’t a software company that I know of that doesn’t use version control, which we often call source control in the business. But there is no reason to limit it to code. I have, for example, several Word documents and PDFs on my site in the documentation section. I would not be surprised if Microsoft’s next versions of Office included very obvious source control manipulations. And you should all use it.
For Visualize History, I use the open-source industry standard, which is called Subversion. There is an extension for Windows called Tortoise SVN which I like a lot. I think Tortoise SVN does a great job of making an otherwise overly-technical idea into part of the average user’s normal experience. The tool, though, is not the important part to me. I think the idea that I may want to look at an old version of my documents, and that someone else has made that easy and free is a pretty cool idea.
No comments