I've been accused in the past of being a little too pro Microsoft, and more than a little anti-Linux. The truth might actually shock a lot of you though. I've actually written a book on Linux programming (Beginning GTK+/Gnome, written before Gnome got all trendy and spawned Ximian), and I'm a bit of a whizz when it comes to the odd perl script, or shell script. I also take more than a little pride in being able to get absolutely any notebook known to man running Linux. I even started writing a proper Linux Thinkpad HowTo a while back for the Debian project. You see, I'm actually quite fond of Linux.
I'm fond of it simply because it's "hand made". It's like going to a bike shop and looking at all the shiny ultra chromed choppers and V-Twin muscle bikes made in somebodies garage simply for the hell of it. You can't help but admire that kind of a demonstration of just what the human condition can do when it's got enough time on its hands.I'm not particularly fond of the zealotry though, and the holier than thou "All Software Should Be Free" arguments. I'll digress a minute. I actually had lunch with Richard Stallman a few years back - it was just he, my editor and I. We were meeting to talk about me taking the GTK+/Gnome book and making it free, prior to it's paper publication. Now, you have to remember that this was a period in time where the idea of downloading an entire book from the Internet was about as appealing as Helga the aging school nurse pinning you to the floor and farting on your face. Modem's etc were still the norm, rather than broadband, and in addition to that no-one had proved yet that publishing on the net could actually work without causing irreperable harm to one's royalty statements. So, we weren't too keen. Richard was aghast as this. We were asking for concessions like "well perhaps we could add content to the printed book and charge for it" ( I can't remember what exactly we asked for, I made that up, but you get the idea) only to be greeted with a look of utter disdain. It was as if my editor had just jumped right up there on the table, dropped his shorts, and urinated all over Richard's Sweet and Sour whatever he was eating. No, it must be free. Information must be free. Humanity has a right to free information. I don't particularly think a book on GTK+ programming would have a great impact on humanity at large, but you never know.
Anyway, getting back to the point, I'm quite fond of Linux. I have a project that I need to start at the moment (it's a big secret) and I've still got some choices open to me with regard to the platform, the development tools and so on, that I can use. If you're a programmer out there, a real one that does more than type what someone tells you to, in a language someone told you to learn, on a computer someone else paid for, then this situation may sound appealing. Think about it. You can choose the very best programming language, the very best database, the very best operating system. It's actually a shitty situation to be in, because you have so many choices, so the wage slaves among you consider yourselves somewhat lucky. I thought to myself that it would be fun to try out something on Linux. It would be suitably different to my day job, and to the book work I'm doing right now. A change is as good as a rest and all that. I had visions of me firing up some open source IDE, hacking code night and day, buying sandals, moving into a wooden shack, and living a contented life while my wife gave birth to babies every 9 months with names like Moon-Aura, Candlelight, and Rainbow. The dream would have worked, and for some it is already, but for one thing. Microsoft dominate the market simply because they are truly and simply, utterly, completely, totally amazing at what they do. Linux, the open source teams, and Java, aren't.
First, the OS. Now bear in mind I like Linux and know how to use it. If you were interviewing me for a job on Linux I could wave my book under your nose to divert your attention away from my Microsoft heavy resumé and probably convince you that I'm an expert (I'm not). I chose a new distribution (the various flavours of Linux are called "distributions". It's a little like the various parts of the Borg collective being called Hives I guess), called Ubuntu. It's based on another one called Debian (kinda like me tweaking the Windows UI, removing some DLL's, sticking up a brand new wallpaper and then saying to the world "Look, I've improved the world by ripping off someone elses work") that I really like and looked a good start. The thing with Ubuntu, and Debian is that you have complete control over what goes on your machine. You start with a really small, barely functional install, and then use the net to add components as you use them, thus making sure that at any point in time no-one else on the planet knows how your machine works except you. I once remapped a keyboard and then moved all the keys around to get the same result - it's effectiveness was somewhat parrallel to my choice of Linux as you'll see.
Debian is very stable. They only stick stuff in their "distro" ( I even know all the in-phrases - truely I must be a hacker n'est pas?) that is proven to work. What that means in reality is that everything is very old and so most people choose to upgrade instantly to a testing or development version of the distro. Ubuntu is a strange hybrid of the stable, the tried and tested, and the pretty stable, but very cool to look at, bleeding edge. Everything installed like a charm thanks to Ubuntu using the installer from the "in testing" version of Debian, and seemed to work. BUT, my notebook is special. My Inspiron has a 15 inch, WXSGA widescreen display running at an obscure resolution of 1680x1050, on a Radeon 9800 Mobility (the very latest mobile chip). Trying to get the very latest hardware out there to work well with a not so modern version of the GUI windowing system (XFree86) proved a nightmare. I asked questions and got told various "try" solutions. I hate try solutions. The words "try", "should", "might" and "perhaps" in answer to a very specific technical question usually mean the recipient is guessing. Granted there are a lot of helpful people out there that were more than willing to give up their time to make random guesses is kinda cool, but it didn't get my PC working at the right resolution. In desperation I eventually gave in and upgraded to the testing, very unstable next version of Ubuntu. I had warnings from the start saying "Don't do this on production machines", and "only do this if you know what you're doing", but it seemed the only way to get my video card working since it uses XORG, the newest and latest branch of the XFree system. I was right. The helpful guessers were wrong, and my PC started working correctly. Complete time to go from grabbing the CD and sticking it in my machine to get a working operating system- 5 days. FIVE days! Can you imagine what Microsoft's market share was like if you bought Windows, took it home and then had to give up 5 days of your spare time (evenings I should say - long, tiring, hairloss inducing, curse word tainted evenings) to get it to even boot to the point where you could install what you like?
That's why Microsoft beats Linux today, and it's widely acknolwedged, but no-one out there can do anything about it. The very strength of Linux and the "open source" movement is that there are thousands of people all around the world collaborating together to get the damn thing working. None of them could help me though, so it took 5 days to get the thing working on my somewhat esoteric hardware. Esoteric hardware I might add that was supported by Windows from the second I first turned it on. If i have a problem with Windows today I can get a definitive answer from Microsoft, or the MVP's, or the experts around the world within an hour to solve my problem. I have never come up against a problem in Windows that took 5 days to solve. Holy mother of god, the modern world would have gone bankrupt and reverted to the ploughing fields with horses if setting up the computers that ran their companies took 5 days to figure out everytime they got a new machine or hardware upgrade. You see, with so many people working on so many low level, iddy biddy grubby technical things in the OS, there is no single body with a vision guiding the OS as a whole. Linux will always be a fractured, technically weird collection of "bits" that plug together with the electronic equivalent of sticky tape, bluetac, glue and even cement in order to get it working, and there will never ever be a guarantee from anyone that it will work on your specific machine configuration. That's why Open Source just doesn't work, at an operating system level. It works great at an app level, because there is some guiding vision statement. At an OS level, Linux will always remain an interesting side hobby like building your own motorcyle, or trying to grow the world's longest pubic hair - impressive, but not particularly useful or practical, especially if you want to take over the world.
So, with the OS finally working, and me trying very hard to resist the urge to post to various forums things like "I'm a Microsoft guy and I figured this crap out, and you hippies couldn't!", I decided to focus my attention on the development tools. To use Microsoft speak the super secret project I have waiting for some code requires a web interface, a mobile web interface, a web services like architecture, and at least two different types of smart client. It's an interesting mix. Now, I know Java quite well (don't tell my boss - it was bad enough doing tech support on Sharepoint for the last month or so, without me being shipped out to the middle of nowhere to write "Beans" all day), and I like where the two leading open source Java IDEs (Netbeans and Eclipse) are going. I also completely acknolwedge that the research the Java guys have done on things like test driven development is very cool, and we should all be grateful to them for it, so I made Java my choice. I don't know how to write smart clients for the two specific smart client platforms I have in mind in Java, but I'd figure it out, I thought. This will be a fun learning project - a voyage of discovery.
First port of call on my voyage was the port of "Refresh your memory as to how to do web stuff with Java", so I fired up Safari (safari.oreilly.com), grabbed some books on Servlets, EJB's, JSP etc etc and started reading. 10 minutes later I stopped reading. I last did Java professionally about 4 years ago. I wrote the worlds most complex, and utterly crap, almost but not quite real time trading system using it, dipping deep into the world of Java Server Pages and Servlets until finally I had an accident, received a large bump to the head and found myself one morning sitting on the edge of my bed, rubbing my bump, saying "WHAT THE F*CK AM I DOING?". At the time the tools were just dire. Compared even to VB6 they were antiquated, with little coupling between them, no helpful stuff like cool web designers etc. Compared to .NET which was in beta at the time (might have been more than 4 years back - I had a bump on the head remember) it was utter shite. Programming an enterprise, web enabled application in Java, compared to the tools we have with .NET was the programming equivalent of acquiring leprosy and trying to find a date in a top London nightclub. It was next to impossible, painful, awkward, and people would laugh at me.
Nothing's changed. Well, that's not true, things have changed, and tools like NetBeans certainly make the whole experience easier, but it's still utterly awful compared to .NET. From what I saw I still need to code up these servlets by hand, I need to drop arcane crap into my JSP pages, and then connect them to beans (objects which simply hold data), connect the servlets to them both and then use something called EL (can't remember what it means, and I can't be arsed to look it up) to connect everything together nicely. There's no cohesion there. There's no IDE help to move me painlessly from client side layout to server side event handler. It's painful.
And that, my friends, is why Java will never ever compete with .NET, with the exception of the .NET enabled versions of Java. It's all about the tools. You can't build sky scrapers armed only with a hammer and a pair of pliers. Sorry, yes you can, but it will take your entire lifetime and at the end of it you'll have no friends, you'll smell and people will laugh at you. Microsoft's tools are cohesive. They all work together well - they are designed to work together well. Microsoft's development technologies fit into those tools seamlessly and the whole experience to getting what you want done is painless, fast and even fun. The minority groups out there - the hardcore Python, C, and Java guys that look down their noses at .NET and anything else from Microsoft - claim their languages are better. Python is a better object oriented language than anything they yell. Nothing can beat C for execution speed. Java is...well we all love Java. The point they fail to grasp though is that it takes you a month of Sundays to achieve something, and more often than not what you can achieve is constrained by the technology. I love the fact that with Microsoft tools and technologies I can sit down and design my app, design everything that it needs to do no matter how weird or wonderful, and be pretty damn content in the knowledge that my tools will help me deliver, and deliver fast.
Thanks to the $1.9bn dollar agreement between Microsoft and Sun that took place 8 months ago I sure hope that Sun will formely merge Java into .NET so that we can at least save one hapless group of souls.
In short though, Microsoft rule the world of technology for just one simple reason, and I call it the "James Bond" law of software: Nobody does it better. ("Makes me feel sad for the rest...")
11:27:04 PM
|
|