Setting Sail Across the C

I’m a Microsoft developer. There, I said it. I’ve grown up in a world of BASIC, from the early days of QuickBASIC through to VB.NET today. It’s a fantastic, easy going world to live in – particularly since .NET – as everything (and I mean EVERYTHING) is laid out for you. As a development environment, it’s so easy to get started – and often leaves you thinking “surely it’s not that simple?!” after writing a single line of code.

The problem is that at it’s heart, .NET programming is an abstract concept. Every single line of code I write is actually a call to an existing library (or ‘Framework’) of tools that Microsoft has provided, and most of those calls are made in “manged code” – which basically means I dont have to worry about memory management, cleaning up after myself, or completely screwing up the OS. These are all good things, and it makes for an extremely rapid development cycle … but I can’t help but think that some of the fun is gone. It’s a million miles away from programming on my old Amstrad 664, or 286 PC … yet back then I seem to remember having a lot more fun – and having to use my brain a helluva lot more than I do now.

That dependancy I have on Microsoft technology has come at a price … litterally. About 10 years ago my development shifted onto web programming … in particular ASP and VBScript. (The shift to ASP.NET a few years later was so overwhelming for me, I ended up taking a step backwards and learning VB.NET Winforms before finally delving into ASP.NET!). As a consequence, whenever I think “website”, I automatically think “ASP.NET” and “IIS”. There are plenty of web hosts out there that offer MS-based hosting options, but they’re often about twice the cost of an equivilent Linux host, and this is where I start to loose out. About 6 months ago I decided to take my blog and website a little more seriously, and bought a virtual private server with a company called ASPNIX in Colorado, USA. I went with them because they were the cheapest I could find that offered me MS hosting (complete with a remote desktop into a Windows 2003 Server). 6 months went by where I forked out over £26/month for the privilege of using MS technology … but I never quite got around to actually developing a website that used .NET technology. This blog is WordPress-based, so only needs PHP … not ASP … and my grand plans for a commercial site for my software has yet to happen. This lead me to question whether I really needed a VPS at all. The short answer was ‘yes’. Having your own VPS is far too much fun, and you get oodles of storage space for backup, etc. So this lead me onto thinking: Do I need a “MS” VPS? …

Well, as it turns out, no. Everything that I’m currently doing with my websites would be just as well (actually, “better”) served by a Linux VPS. I would be treading into unknown waters if I made the switch. I mean, I’m fairly happy with Linux – and I’ve a fair bit of experience with the shell. What I was thinking about was that switching to Linux would mean leaving the cosy world of Microsoft .NET behind (at least for my web development). Languages like PHP, C++, Perl, Python and Ruby await …

So I did it! I thought to myself, “Who’s a good Linux VPS host?” … luckily I also tweeted that thought and got a speedy response from a colleague: I have to say so far I’m very impressed: About half the price, a lot more control, and the support of the Linux community (which, like the Apple community, is so much more willing to give out free advice!).

It took about two days of tinkering to setup my own Linux box (or “Linode”). I chose to use Ubuntu 9.04, as it’s the distro I’ve had the most experience with. You can upload any distro you like, but I just went with the “built-in” option for safety. Once I was setup it was a simple case of launching “Putty” on my laptop to SSH into the machine. (Actually, I was so horrified by the garish “Windows” feel of the whole thing, I quickly booted Ubuntu off a USB stick to finish the job ;o)

I wont detail the setup in this post, but safe to say I setup my first LAMP stack and began migrating my websites. In fact, if you’re reading this entry then you’re already looking at my new site running off a Linode “node”. I decided to spruce the place up a bit with a new colour scheme. It was during that “sprucing” that I decided to sort out all the little things that have been bugging me for months with my blog. A lot of them were visual things (graphics, or CSS problems), but a few were code-based. I just didn’t like the way the Arthemia theme was rendering content … and to fix any of it I would have to very quickly learn PHP. This is where the biggest surprise came: I just dove in a started writing code that I thought “looked about right”, and more often than not it was. PHP was easy to get to grips with, and while I’m not a pro yet – my background in MS scripts might just help ease the curve.

So, the question is where do I go next? Linux is all well and good, but I dont have a desire to write any native applications for the OS. I still have a lot of good reasons to stick with Windows for app development – but I’ve often looked at Objective-C or iPhone development as a side-line …

To be honest, which ever way I look I see C-based languages: Java, PHP, C++, Perl, Objective-C, Cocoa, etc. I think it’s my upbringing on BASIC that’s got me stuck in this rut. In the past there just been too many differences between the languages for me to make the leap, but I think the last several years learning VB.NET (with it’s similarities to C#) mean that maybe the time has finally come. The title of this post was originally “Setting sail across the Linux Sea” … I’m not sure Linux has much to do with it; it’s more like a “C-based Programming Language Sea”, which doesn’t scan.  :o)

So, was there a point to any of this post? Ah, yes. Linux rules – It’s time for C – and Pirates rock! (ARRRG!)

(But you all knew that already, didn’t you?)