What a crazy day for technology. It all started with Paul Graham’s ridiculous link-bait article “Microsoft is Dead,” earlier today. Since then, the web has been in an uproar – just how do you define success, innovation, power, creativity, and can companies just “die” anyway? Never mind that conversation – Paul Graham surprised us there though. He’s normally a sane and very much down-to-earth person with a lot of insight on Web 2.0 and what it takes to be a startup. But that’s not what we’ve taken up a problem with – what’s really gotten to us is how some people are using his article as grounds for an argument that Desktop apps are old, dead, and a pain-in-the-ass to make.
The particular post being referred to is Ryan Stewart’s “Why Do People Hate to Build Desktop Apps?” It comes in response to the article by Don Dodge and a conversation with Simon Bateman. Now that the background’s succinctly (hopefully) out of the way: While Ryan’s article makes a valid a point about the ease-of-use of Microsoft’s .NET Framework and Adobe’s Apollo and just how powerful-yet-easy these two technologies make desktop software development – his entire article is based on an invalid premise! People don’t hate making desktop apps!
Sure, .NET and Apollo make building desktop apps easier, but no one was really complaining before. Before there was .NET there were millions of programmers out there “suffering” with Java and C++ but that didn’t stop companies from making Microsoft Office, Quake, Lotus, Windows, Linux, Solaris and just about every other commercial and freeware application out there. Apollo is still coming out, but no one ever complained about how they just hate to develop desktop applications. To the contrary, if you ask the average programmer, you’ll find out they enjoyed making desktop apps more than web-based ones.
Two reasons: First, people making desktop apps aren’t usually concerned with supporting different systems, and if they are, the toolkits needed are freely available. Programmers are given a specific (e.g. make me a blog reader that runs on Windows and can post comments back from the native interface) and they build it. Second, before PHP, building a web app was harder than a desktop one!
You can’t really consider HTML a programming language,1 so the next easiest thing would be PHP. Before there was PHP, there was CGI and Python. Oh, and C++ too. Yeah, that’s right, people used to make a desktop program then tie it in to a web interface – and they still do!2 So making a web program meant making a real program first, then putting more work into a web UI afterwards – talk about tiresome waste of time! CGI before Perl 4/5 was a pain-in-the-ass, and Python is just as complicated/hard-to-use as C++ (depending on how you look at it).
One other point that Ryan makes is that desktop applications “look uglier.” Sorry – but where’s the evidence? To make a .NET program look decent and have a great GUI before there was ever WPF and XAML (the two technologies that Ryan rightly states are redefining the concept of UI) it doesn’t take HTML, CSS, color theory, and psychology. You just have to drag controls onto a form in some sort of slightly-logical manner, and it’ll be far more usable than an entry-level PHP application with some half-baked CSS job (and tons of tables to boot) – with a hell of a lot less work.
All this just begs the question: whoever said people hate to make desktop applications? According to who!?
At NeoSmart Technologies we’ve done almost everything you see on the site and in the downloads (with the exception of this blog, of course). From the download scripts to the revamped forums to the WordPress plugins. And of course, our desktop products too. It’s infinitely more enjoyable to build a desktop product than it is to make its web equivalent. The reasons (besides what’s written above) are extremely simple.
You have more tools to work with, tons of space (relatively speaking…), more mature languages, more extensions and libraries available, virtually no lag time, no bandwidth worries, far fewer security vulnerabilities, faster code, better IDEs,3 and a hell of a lot more fun. With desktop apps, anything’s possible, and the only limit is your creativity.
It doesn’t take a datacenter to run a desktop app, and you don’t have to worry about mod_rewrite rules, network downtime, ISAPI extensions, and all that nonsense. You just code – and watch as the magic happens. What could be more enjoyable and satisfactory than that?