When you’ve been a computer geek for a long time, you get to a point where you feel comfortable rushing to conclusions about technologies. The thing that fascinates me is that the majority of people I speak with hold the same prejudices. Even more curious, the more I’m forced to learn about the technologies, the more I realize how accurate my initial snap judgment was.
Java is the prime example. Without knowing a lot, I formed the impression that it wasn’t well-suited for small applications, both because everything was treated like it was a giant enterprise project, and because it gobbled up RAM like a crack addict. As I entered the world of professional web development, I’ve found that a lot of my peers hate it more than I do.
I hate Perl for the same reason. It was actually among the first “real” languages I learned. If you know it, it’s handy. But if you kind of knew it a few years ago, it’s a GIANT pain to work with. My prejudiced opinion? Perl is intentionally obfuscated and confusing to write, and the people who know Perl well take pride in writing enigmatic code. A Perl script by a veteran developer has more symbols than comprehensible phrases, and it has a lot of variables (like $_) that are used all over the place for all sorts of things.
XML. I like the concept. In reality, it’s extremely bloated, extremely dense, and rarely lends itself to being something I can sit down and understand as a schema. There are much more “readable” technologies. That said, XML does win points over the “some format I dreamt up while I was high that turns out to not even be consistent” configuration schema that some utilities used to be infamous for.
JPG. It’s good for photographs. If you’re not using it for a photograph, you probably shouldn’t be using it. If you have (rasterized) ‘vector’ graphics or text, use a PNG unless you like your stuff looking really crappy.
BMP. Seriously, I have never, ever seen a good use for it. It’s usually ridiculously bad graphics done in MS Paint, which shouldn’t even be saved, much less saved in a format that defines the values for every pixel sans compression. The good news is that it could be worse: a Java application that saves each pixel’s value as an entry in an XML file.
GIF. If you need transparency, use a PNG. If you need animation… Please reconsider using animation. 😉 And if you don’t need animation, there’s no reason to use a GIF.
Java applets, Silverlight, and proprietary codecs. Here’s the thing: your Java applet gives me some cool functionality, your Silverlight app is really neat, and your Ogg audio stream with weird compression sounds better and is more efficient. But you see, you’re probably not important enough to me that I’d be willing to take the time to install something special for your silly site. If you make a five-figure hardware device with a web GUI that requires I install a Java applet that’s slow and prone to crashing, you’ve got me! But Brocade, you should know that I curse under my breath when I click “Install,” and that I have dreams about redoing our architecture with iSCSI over commodity Ethernet. Never mind that your equipment is rock-solid and probably vastly superior. The Java applet is the only time I “use” your equipment, and it’s like pulling teeth.
SNMP. I’m a stats freak. We must graph 500 stats at work. It’s an integral part of any IT monitoring setup. But it’s one of those technologies that never works as it should. I try to monitor something simple and it just doesn’t work. I do an snmpwalk and get literally thousands of lines back. And MIBs, meant to give SNMP pretty names, somehow make managing SNMP an even bigger headache.
IPv6. Here’s the thing: I used to be a big fan of the idea. But now it’s just useless crap that networks try to set up, and it gets in the way. I need to change my mind on this, but it’d be a lot easier if I knew a single person that actually uses IPv6.
Twitter. I use it. It’s neat. But I mention it to a non-user, who invariably replies, “I just don’t GET Twitter.” And I’m forced to admit that I don’t. It takes information I don’t care about and assaults me with it all day long. And that’s really the best description of Twitter I’ve ever heard.
Captcha. A good technology, but for two things. The first is that spammers have been able to defeat it for quite some time. The second is that captchas are getting to the point that I can’t figure out what the heck they’re supposed to say. It’s like a Rorscharc test.
Usenet. I experimented with it a while back. It’s nothing but viruses pretending to be warez and lots and lots of spam. It may have been great once, but these days it’s a festering wasteland accessible over the equivalent of Gopher.
Strict validation. It’s good to write syntactically valid HTML and CSS. I don’t mean to imply that I should be able to cobble out utter garbage and act offended when a validator complains. But when I look at a well-formed page that works well in all browsers, and see that it has over a thousand validation errors, I can’t help but reach the conclusion that getting truly valid HTML is literally impossible.
Bad errors. Don’t tell me that error 7604 happened. Don’t tell me that my 2,000-line controller can’t be used because of an unexpected kEND. Tell me what’s wrong, where, and what I can do to fix it. And Java, giving me a stack trace and hundreds of debug lines doesn’t make up for the fact that errors always fail to convey what actually went wrong.
Calendar standards. We have more calendar standards than I can name. And I haven’t met anyone who’s achieved “calendar zen.” I can sync my desktop app to Exchange (kind of), and my iPhone to Google Calendar, but what if I want to use my work calendar and my personal calendar together, and treat them like they’re one? I’ve looked at dozens of solutions, and not a single one really supports having read-write-modify access to multiple calendars in multiple places. Lots kind of do it, but have gotchas that render them useless. Stop inventing new calendar standards, please. No, seriously. Just make yours work with theirs.