This is

as days pass by, by Stuart Langridge

. Here I write about many things. In the past I wrote about other things but the past is past. I write code for people to play with, I write about my life on Twitter, and I write here.

On I wrote Web dev stacks and operating systems, on the subject of Web, Ubuntu, and Musings.

So, there I was at the multipack meetup in Birmingham yesterday chatting away to a bunch of people in the sun, including @simonbanyard who's decided to get into web development in a proper way. We were kicking around which web dev stack he should learn, which was entertaining -- PHP, Python + Django, Python + something other than Django, node, Rails, .NET, whatever. In an effort to explain to him about web stacks, I came up with the following analogy.

The three web dev stacks that you probably should choose between are PHP, node.js, and Python. They map quite neatly, in a handwavy philosophical overall feel sort of way, onto the three operating systems that you're likely to choose between, Windows, Mac OS X, and Ubuntu, as follows:

PHP = Windows

PHP is ubiquitous. Everyone's got at least a little bit of knowledge of it; everyone's used it; most people got started with it. It works everywhere; it's got the biggest community. It's a bit clunky, in part because it's grown organically and is full of stuff that was put in to fix a need five or ten years ago and still hangs around because people use it. It doesn't really stop you from doing regrettable things; you look back two years after your first piece of work and you'll think, ugh, why did I do that, I know so much better now. But, importantly, if you know what you're doing it's entirely capable of greatness, and way too many people wrongly assume that anything done with it must by definition be rubbish.

node = OS X

This is very cool, and very, very good at its job; the best thing available right now. It's where the trendsetters are. It is so much the future that everyone else will be copying it a couple of years from now and if you're into it, you'll be in on the ground floor and able to be smug about it when your friends finally follow you over. They have no hesitation in breaking backwards compatibility in order to make a better product in the future, which means that if you stick with old versions you'll find that you've been rather pushed out to sea on a dwindling ice floe and all the new hotness just isn't available to you. And there are a fair few people using it not because they've really sat down and decided to do so, but because their hip idols are doing it and they're following along behind.

Python = Ubuntu

After years of being scattershot and having no plan, this finally got itself together and delivered a pretty good stack. Importantly, you'll find yourself having to understand the underpinnings of this slightly more than you'd perhaps like to in order to properly get into it. It's not quite as easy or as futuristic as the others, but it really does make sense for everything you want to do once you get over that first hump. Once you're into it you'll do everything with it and wonder how you ever did without; until that point, you won't really see it as being all that good, and it's undeniably not quite as well-polished as it could be.

Now you get to overextend the metaphor by complaining about it.

Aquarion

So, I'm going to complain about your metaphor.

Well, actually only a little bit. I entirely agree with the PHP bits, especially the last one. The constant barrage of anti-PHP bias in the webdev community is destructive and diversive, and much like blaming the existence of the Da Vinci code on the printing press.

I disagree with you on node.js, kind of. I entirely agree with it as a definition of where node.js is, but I don't think that's where OS X is. It may be where it was, but OS X is the slightly faded glory of something that was once entirely revolutionary, and is still up there with the best, but suffers a great deal from every other bugger reemplementing its best features badly. The community is seen as being somewhat elitist, and while it's got a number of impressive and respected people who swear by it and glorify its name, it never really gets geek cred.

For this reason, OS X is clearly Ruby on Rails.

I don't think the OS world currently has a Node.js equivalent, although it used to be Gentoo (which had some really nice ideas about package management and bleeding-edge development before it ran with the "Ricers" segment of the market).

Rusty

My son-in-law is going to school learning programing and the school focuses on C and C++. One of his projects required doing something in a language other than C/C++ and he asked about a couple of them including Python. I pointed him at the Python Tutorial and resources and about a week into the project he compared the experience this way:

C/C++ is like you're building a cabin and have an ax and access to the forest around you and the raw iron to make nails from. You hew each log by hand and are working long days to create this cabin.

Introduction to Python is like someone came along with a tractor trailer of 2x4 and 2x6 finished lumber, power tools and pre-hung doors and dropped them in your lap for free.

Simon

@Rusty - I'd disagree. C/C++ has always had access to libraries, and experienced developers are pretty good at finding and using them. And this is probably because they *do* have the axe, and are well aware of how painful it is doing all this work by hand...

schizoduckie

dont forget phantomjs! it might be the coolest thing since node. http://phantomjs.org

Barbara

What are your views on .ASP?

Linus

.ASP = OS/2

v

df

v

df

v

df

v

df

v

df

v

df

v

df

v

df

Latest Mobiles

Interesting! I have been looking for this info for the last few hours.

kallymoral

nice info..thanks for sharing!

This website belongs to Stuart Langridge. Contact details are available. Don't eat yellow snow. Valid HTML5, at least in theory, except for the bits that aren't because I'm that futuristic that I'm ahead of the spec, oh yes. HTML5 help from Bruce Lawson, among others. Fonts from the superb FontSquirrel. End.