Is Programming Less Exciting Today?
blogs.tedneward.com
blogs.tedneward.com
You want excitement? Stop reading blogs and just program something.
I understand that making your own sockets or database interface library might not be as exciting as rolling your own. However I feel that it's much easier for nearly anybody to pick stuff off the shelf and make something amazing which we all benefit from.
I'm in the "old-timer" bucket this essay describes, and I really can't twist my mind into any perspective that makes today less exciting than 20 years ago.
Maybe in 10 years it will be the geneticists' turn to complain.
If you're bored of programming for the web, try branching out into a field where there's no debate about NoSQL, people aren't re-discovering binary trees for the ten thousandth time, and there's no re-invention of JavaScript on the server - try programming something real. For me it's quadcopters and fixed-wing UAVs. For you it might be something else. Embedded development is somewhere where real technological advance will always push the field forward. There's always something new you can build if only your CPU gets smaller, or draws less power, or some sensor becomes available. Plus, you'll learn a lot about programming close-to-the-metal, data structures, basic algorithms, and the industrial control algorithms that run devices in your daily life - which will both expand your horizons and make you a better web programmer, to boot.
Sure, technology fads are like a carousel, but that matters most if you insist on staying ON the carousel and make part of your living writing about the fads. I started in this millennium, but I've done it long enough to know that learning and using a new piece of tech is only superficially satisfying. What's exciting is building something that solves a problem. If I lose track of that and get bored, nothing is more motivating than coming across a coder who bangs out code using the tech he knows to solve problems. It's amazing to see what Rich Hickey can do with a pile of Java or Zed Shaw with a pile of C, to name two examples I've encountered. No need to complain or pontificate (or at least keep it to a minimum), just build things and solve problems.
That's why I love embedded - because the domain contains a lot of problems which are constrained by hardware (which so far is still holding to Moore's law), there are always a number of new problems for software to solve.
We are just scratching the surface of what is possible. Programming is scintillating.
I've gone from hacking together moving dots on a BBC Micro to being able to set up code running on a worldwide collection of servers (Google App Engine) that reads from multiple places and posts to a blog running on an engine that's used by millions of people all over the world. And that's in my spare time.
Think of all the awesome things you can do nowadays - Mobile phone apps, web pages, amazing games, and so much source code available for free for you to use in your own programs. It's an amazing time we're living in.
Games? Meh, I keep up on recent games in part because it's my job (oddly enough), but listing my top-10 favorite games, Minecraft is the only post-2000 one I can think of. In general I think they've gotten worse, mostly by focusing way too much on graphical fidelity. Even MMOs are like MUDs v 2.0, and I think in many ways haven't recaptured the depth of community and user-generated content that MUDs/MOOs had, but I admit that you can make a case either way (and Eve Online's community in particular is arguably something new in terms of multiplayer dynamics). And mobile and Facebook gaming seems to consist largely of cloning 80s and 90s games...
And the web is just recently catching up to the level of interactivity we had on 1980s networked computer systems, which mostly got thrown out in favor of a pile of hyperlinked documents (plus, later, Flash)... its main advantage is increasing visibility in business and society, so you can do things like buy plane tickets on it, which would've been completely possible with 1980s technology but didn't have the business case for it.
I do find workable crowdsourcing, with Wikipedia as the main successful example, to be a very interesting para-technological development, probably an emergent effect of internet connectivity. I guess that ties into whether you fundamentally find the ability to reach millions of people (as you mentioned) interesting. I think it is to some extent, but I think it's also become harder to reach 20-50 people in a meaningful, sustained way; things are much flatter, and recreating something like a BBS community is quite hard (though not impossible). Technologically speaking, I don't really find millions of people necessary; doing interesting things that impresses a few dozen people who engage with it meaningfully (rather than just clicking through off Reddit or HN for a few minutes) is satisfying enough.
The opportunities have never been greater today and the barriers to entry have never been lower or cheaper. There are books and websites galore. If that doesn't help, there are forums and sites like stackoverflow.com. Never has it all been more exciting. Things that required large amounts of time on supercomputers are now doable at home in real-time.
On the other hand, now that I'm in the old and crusty bucket, I'm personally having less fun as a programmer. I've been programming since 1981 and it was a blast. But now with a wife and family and pastoral responsibilities and day jobs and a growing congregation, the available time to just sit down and take time to learn something new (because it looked fun) just isn't there. And that takes some of the sparkle off my relationship with technology.
That said, perhaps it isn't all gloom and doom. I do what I can to use technology in my life to help get things done. I have the church data backed up with Dropbox. I prepare my sermons using Markdown and Pandoc and preach off of a Nook. And just this week, I prepared the church charitable giving letters for the congregation using a combination of CSV data files, AWK and LaTeX. So I may not be the trendiest programmer in town, but my data is backed up constantly and I have some of the best typeset documents you've ever seen!
Programming is less exciting today, at least for me. I'm 55, and have been programming for over 40 years. My first program solved quadratic equations on an ancient Wang programmable calculator that had 3 (three!) registers. I spent a long time trying to figure out how to compute the intermediates and final results while taking the three coefficients as input, in order, once each. That got me used to being very, very careful about memory. I remember my first program that ran really slowly for large N, and getting my first glimpse of algorithm analysis, and then being very, very careful about performance. And I have spent many hours coding low-level data structures and algorithms. It was a lot of fun.
Maybe it's my age, or maybe it's seeing all the libraries with the cool data structures and algorithms already written, but programming is often more about snapping pieces together than doing difficult new things. Yes, it's better this way, and yes it's really just a matter of choosing the right problems to work on. But here's the thing: You get used to working in an area. For me it's database internals. And more and more of it gets "done" over time, and available as open source. So there is no point in doing the thing that you naturally want to do.
What to do about this? I highly recommend working at startups. And not yet another social media site, (there are probably 15 different scalable NoSQL systems out there, pick one and move on). I'm at a database startup, and while we use a lot of open source software, we are building a ton of interesting, new, low-level stuff too.
When I was growing up in the 70's, it appeared to me that we were dreaming great things, like going to the moon, even despite a backdrop of fear about the Cold War. Today I don't see such dreams; instead, our thoughts seem to be centered on just treading water, like combating climate change.
Maybe it's just me getting older, as Neward says (my 45th birthday was last week). Maybe it's only my own perspective growing jaded. But it sure feels to me like it's all around, not just in my head.
Presidential candidates still desperately try to rake up foregone "moon base" dreams, invoking the nostalgia for yesterday's future, which says enough....
"we" used to think that in the 80's, 90's, that somehow advanced technology would also advance people, to look at the sky instead of grabbing what they shortsightedly can. Series like Star Trek are an example of that hope in culture. But people did not change a bit.
Open source/free culture is still exciting to me, but the "brave new frontier" that computers and programming seemed to be is gone. It's lost part of its charm for me.
But my paradox is: The biggest of dangers comes from people's use of technology as a means of control. A creeping surveillance state, soon to be autonomous killer drones, and that ugly old nuclear threat that keeps rearing its head. Due to fear of each other, the technological dream is turning into a nightmare.
And a the hardware and software used there is built by people like you and me. There's a societal problem to be solved first, or maybe it should solve itself, and only that will bring responsible and sustainable use of technology. Or we'll kill each other, in video-game style (yay for gamification).
I never really got to the actual gameplay mechanisms as I'd always get stuck at points like double buffering so my graphics wouldn't flicker, or reading interrupts from the game port so the joystick would work properly, or how to read a bitmap image saved out from Deluxe Paint.
Now, chances are I'd be much closer to getting an actual game up and running as there's plenty of libraries out there to handle all that stuff. I am glad I learned it and know it, but it doesn't create end results and means a lot of duplication of effort.
The modern approach where programming is more like plumbing - efficiently connecting existing libraries (and now, services) - allows creation of quite fantastic ideas in very little time. I can create things in a day that would literally have taken years in that low-level age.
This is a good thing and just as fun, albeit in a different way.
I cut my teeth on Z80 assembly at the age of 11 by building my own computer from stuff I could get my hands on (discarded and broken RM380Z and some VIC20's for RAM) and books from the library.
I feel there's too much hardware compexity and software abstraction these days, most of which is impenetrable. The complexity is a result of making the layers of abstraction fast. It takes the old feel of immediate power away. Even knocking stuff out in C is just stringing libraries together.
I wish we were closer to the hardware again. I also wish the hardware was simple enough to fit in my head and was elegant.
Building things however, I love, and I dont think there has been a more interesting time in the world to be involved, schoolkids can build social networks that connect almost a billion people, a small group of people run a website that categorises and links most of the knowledge the human race ever had.
The golden age of my personal programming experiences was around 1993, during high school. After outgrowing GW-Basic, I was hacking around in x86 assembly language, figuring out how to program DOS graphical games by manipulating VGA hardware registers. My tutors were library books on x86 assembler and instructional text files gleaned from local BBSes. (I still have and treasure those resources to this day. Michael Abrash was my god.) I was able, by myself, to produce programs as technically intricate and graphically rich as industry-leading fare like Commander Keen or Epic Pinball, in pure assembly language. (I never actually made anything beyond tech demo stages into an actual marketable game.)
This was magic. Not a single other person I'd ever met in my life or even on local BBSes across my entire area code had that sort of capability. This awed even non-techies, whose pinnacle of computer experience was somewhere between Solitaire and Minesweeper. I had a mini-career programming BBS advertisements for inclusion in zip files, putting out some neat and impressive graphical effects in 2k or so of assembler code. My favorite trick was to include what appeared to be a custom font in these tiny executables - done by copying the BIOS ROM font at runtime and applying some bitmap transformations to each letter. I even wrote my own mini sound engine for the Adlib FM-synthesis registers.
Nowadays? Grab a Flash development tutorial and you can do in a week what I spent most of high school learning and doing. Everything is possible in programming and everybody knows it and every answer is seconds away. There's no feeling of exploration and achievement. There's certainly achievement in building a business or product, but not in the programming itself, which now serves as the drudgerous means to an end.
The connectivity of the Internet has eliminated local maxima. I was in high school by an order of magnitude the smartest programmer I'd ever met, but I'm thoroughly average in the Internet world. I've never been motivated to strike out building my own cool software or startup since nothing's ever come to me that could recapture the magic of my early days of DOS VGA assembly discovery and programming.
All the cool technology and companies now are about connectivity, starting with Google and its primal concept of page rank and link juice. Facebook and its world-squared size social graph. Ebay the world-squared size marketplace. Apple and its million-strong app store. Dropbox and its seamless cloud connectivity. You can't program anything meaningful and novel in and of itself; programs are now defined by what they interact with. Some do find scalability and connectivity exciting, but not me. You can certainly produce scintillating results with modern resources, but for me it's always been about the journey not the goal, and the journey of modern programming is, for me, essentially drudgery.
"Nowadays? Grab a Flash development tutorial and you can do in a week what I spent most of high school learning and doing."
Is like an electrical engineer complaining about assembler in favor of binary electrical pulses:
"Nowadays? Grab a programming tutorial and you can do in a week what I spent most of high school learning and doing."
My point is that finding excitement in programming can be intensely personal. I couldn't write Facebook in my DOS assembler, but that doesn't mean I find exciting the modern platform that can. Your electrical engineer couldn't write Angry Birds in hardware, but that doesn't mean he'll enjoy Objective-C just because it can.
Not all programmers are motivated by results. The HN crowd skews that way, but there are many like me for whom it's not the destination but the journey that carries the real meaning.
Oh ... and I do know an electronics engineer who probably could do Angry Birds in hardware, but almost certainly wouldn't want to. "What is Angry Birds" I can hear him say.
The excitement is still there, it's just at a different phase in the process.
Here's my attempt to hone in on what the problem is - programming is less interesting now, because it's easier. It appeals to a larger audience now.
I think, in an analogous way, the same thing has happened to video games. They aren't nearly as difficult as they were in the past. Most allow you to save as much as you want. The puzzles, if any, are made simple enough that everyone can solve them. As a result, it appeals to larger audiences, and that sense of enjoyment is lost to the old schoolers who would like a challenge.
With games, however, it's possible that companies will make games that sell to old schoolers. With programming, we can't do that - any attempt to add challenge to it would get in the way of what programming is actually for - and that's getting things done.
The culmination of what is happening, some day in the future, is that programming will no longer be any challenge at all, to anyone. You will be able to have a conversation with a computer in plain English (or your language of preference) about what you would like it to build for you, and it will get built.
Modern programming is a drudge. Everything encapsulated in increasing layers of abstraction and further away from what is actually happening. If it all disappeared tomorrow no one would know where to start from first principles again as these are no longer taught.
Its a tragedy.
Modern Computer Science is a relatively new field... there are still early pioneers of the field who are quite alive.
While I agree with you that today's abstractions make things less fun than they used to be for the average development job let's not get crazy with the hyperbole.
I knew maths (and even history and modern language) students at university who had a complete and full understanding of these things and were also handy with a soldering iron and who could build a functional "computer" in a workshop as part of their degree -- utilising transistor logic. This is something you no longer see at most institutions today. I am sure it must be getting taught somewhere but it seems incredibly rare.
By contrast, it was quite common when I was a student and was being done by people who weren't even doing CS as a subject.
CS students today seem to know nothing other than Java and the IDE du jour -- and from lots of different institutions not just one. The best programmers I've met don't even have a CS degree (or even a degree) or they specialised in something utterly non-technical. But having logical, problem solving minds, they turned out to be first class coders -- usually because they had do develop something specific to help them do a certain job and they found the concepts easy. This was true of me, too.
Also: there are seven billion people out there. It has always been an illusion to think you're the best at anything or even that you're the first - it's just that we can see everybody else more clearly now. But ignore that; simulate, if you will, the absence of the Internet from your emotional point of view. Go where your heart takes you, and you'll find what you want.
A. Hardware/OS/experience. At first, I was excited by the experience of working with computers. When I got access to a special computer lab in college that had Suns with big monitors, I used to go there and program just to use the computers. I loved the excitement of learning new commands, playing with different desktop managers, mastering various editors. All of it was in service of programming, but it was fun on its own.
B. As that stage faded, I was excited by specific technologies (Java! XML! Whatever!). During this phase, I would write something in one language, or using one technology, and then get excited about re-writing it in a different language or using a different technology.
C. The final, and most lasting, phase for me was getting excited about the problems I work on. Now, the hardware and the technologies have become tools for me, but the problems are infinitely interesting. What excites me most is working on problems that I believe matter.
Of course, I sometimes go back to stage B (MongoDB! AWS!) or maybe even stage A (general purpose GPU programming!), but mostly its stage C that keeps me passionate.
The title of his post should be "Are Programming Languages/Tools/Utilities Less Exciting Today?"
From that perspective, one may certainly claim to be bored. What goes around comes around, as those of us who have been around long enough can identify when the processing pendulum swings from client to server to client to server over the course of time. Back and forth, side to side, the more things change the more they stay the same.
But that's the wrong perspective to take. It limits the definition of someone, as a programmer, with their chosen tools. How many Enterprise-Java-vs-Dot-Net or PHP-vs-Ruby/Rails debates have ever made a difference in that regard? Programming languages, server systems, utilities, etc. aren't the path to the future -- they're the results of the past.
I prefer to think of programming as usage of these tools in solving problems, creating businesses, or just plain creating mischief. With that, I see wide open spaces to be addressed (and not enough good engineers to do it.) Hardly boring, in my opinion.
What is exciting about programming is how easy it is to realize an idea.
Programming is so accessible that anyone with a good idea can change the world. (well...okay, there's competition and patents and stuff but you know what I mean)
Technical programming theory is pretty cool too, but even if there aren't any huge technical breakthroughs for years, I doubt if we'll be able to fully harness the potential we have right now. I'm excited whenever I start working on a fresh new project, despite the fact that I use Python all the time. (actually, that's pretty exciting too)
I'm a systems programmer at heart and I can't think of a meaningful project to start that doesn't already have a `killer app' in its problem domain. I'm not looking for notoriety, but what's the point of hacking at something that's guaranteed to fail? Who's going to contribute to a new kernel?
1. Everyone knows that computers make everything faster better and cheaper [1], so there is a lot more proliferation of jobs that are code factory type postions, not problem solving in the same way. You have to look harder to find the exciting stuff.
2. We are in a part of the research cycle in which the work is not in core computer science/programming research but in mapping those techniques to other domains, so a lot of the exciting work is CS and $X rather than pure programming, so to get the excitement you need to find a domain $X where you also are excited.
Also, people change over time, so perhaps the author is just getting bored and should consider looking at new roles or careers, this is not bad, it's just a natural effect of personal growth.
[1] for properly defined values of everything, better, cheaper and faster
The cloud and dirt cheap embedded and mobile systems will make computers truly ubiquitous for the first time. It is interesting that we now run the same platforms and code on tiny embedded devices and the cloud. The web is finally turning into the broad platform we hoped it would. All of this is truly empowering.
On the language front we have wonderful new ways to express ourselves. Functional programming and constructs like Actors, STM and nosql data stores allow us to scale properly for the first time (See Scala and Akka).
The only limit is our imagination.
Until recently I started going through SICP. It's 30 years old, but it's still really, REALLY exciting. It's actually completely mind blowing. I'll probably look into Haskell soon, but the essential thing is: Yes, I agree, functional programming is very much inspiring!
In any case, if he's writing for old-timers, shouldn't he use larger fonts?
It did feel a lot different then. The etymology of the word, "compute," was at least subconsciously watching over your shoulder as you sat down in front of these machines. Their utility was clear.
They loaded programs. They weren't "apps" back then and lacked that commodity feel to them. You had to understand in some way what programs were, how they worked, how your computer loaded them. Their limited resources gave the distinct impression that these were machines. Any sufficiently advanced game required at least a little tweaking to get running. Maybe you needed to add more memory, a hard disk, or needed to set some switch in your operating systems boot loader to squeeze out the last bit of performance from it. In many respects the old home computer was very much a tool or machine.
Today programming does feel different. I got into programming partly out of fascination with computers (which at the time required you to know at least a little BASIC to load a program) and partly from computer games. I would type in programs from Byte magazine back issues at the library, modify them, and have a lot of fun. Eventually I started writing my own games. And when I got good enough I started thinking, "I could make this," when I was playing other games. It was easy to see the underlying structures in my head and think about how you would build this thing.
Today it's not so easy. When I play Skyrim I don't think that there's a chance in hell that I could sit down at my computer and hash out my own Skyrim. There's a disconnect between how we use computers and how we understand them to work; there isn't any requirement to know what memory is or how to tweak your operating system. We don't even "load programs," anymore -- they're "apps," with all the commodity feel of going down to the store and picking up a new gizmo.
We hardly use computers for the ability to "compute," anymore.
Programming them... well most of the problems of implementation are largely solved for most applications. So it does feel a lot more like stringing libraries together. Some of this is mostly just an artifact of commercial software development: process demands re-use, etc. Lots of pressure to relieve programmers of the hard work of their jobs. The only times I find myself going beyond libraries is working on "web-scale" server applications and finding performance bottlenecks in all of these weird little scenarios. Or sometimes, as you say, writing yet another web framework because the existing APIs of the current crop are forcing complexity into certain components of my applications that could be removed if the library was just a little more flexible. It might also be experience. I certainly don't find things that impress me as much any more.
However it's still a wonderful profession and I still love it. It still delights me to open the source to 'grep' or 'cat' and read those old programs. Sometimes I still write an old-school number guessing game when I fire up the interpreter or compiler of some new language I'm trying on for size. And I can still think of applications for technology and programming that are interesting. And more often now than ever before I'm feeling the impetus to teach.
There's nothing quite like this craft of programming, even if it can feel a little long in the tooth sometimes.
Well, back then most people didn't use computers at all. These days, many use them as appliances, so maybe the fraction that actually use them to "compute" is about the same.
Personally, as a researcher I do most definitely use them for their ability to compute.
There is plenty of drudgery in programming. But there is also plenty of drudgery in rock climbing, being an astronaut, or deep sea diving. If you choose experiences in any endeavor that are all drudgery and mundanity then of course you will experience an absence of excitement. It is silly to pretend that isn't a choice.
I'd suggest for people who are bored with coding to get a good deal more hardcore:
- move into academia (why not apply your sweet coding skills to graduate school - academia needs better coders!)
- work on seriously harder problems
- find a position that does more than glue
Me, I don't have a very exciting or glamorous job, and I've put together some programs - fairly simple ones! - which don't appear to be replicated anywhere online.
If your idea of excitement is blitting bytes onto a screen, the embedded systems world is waiting and there are jobs in there.
When you had to handroll most of your code and make it work within the limited constraints of the hardware, you were solving problems all the time.
Sure there are still fun problems to work on, but the average programmer doesn't get to work on them.
If for example there is a problem with a library you are using, you can quite easily spend weeks trying to coordinate with someone to fix it, if they can be bothered to incorporate your fix in the first place. Sure you could workaround the problem, but that is not always easy either.
If there are people who really find this stuff exciting, then the whole "flavor of the month" thing, be it programming languages, databases, operating systems or whatever starts making sense. They actually enjoy the churn!
Of course programming is supposed to be exciting. It's problem solving at it's more basic, and it involves making staff, potentially even stuff with huge impact on the world.
What the fuck, even cooking and truck driving is exciting, why would programming not be?
Making a pizza is boring. Inviting a friend over, teaching her how to make pizza, and then each of us making one and sitting down to watch a movie? That's fun.
Looking forward to a potluck where I'll bring a homemade pizza and homemade apple pie[1] for other people to enjoy? That's when it starts getting exciting. I love sharing that stuff.
[1] Sagan, universe, etc. Yeah, I know.
Legos? They didn't have any staying power. It was amusing at times to snap them together, but that was years and years ago when I was a kid. I sure don't own any now. It was fun to help a friend make some pixel art with it a couple of years ago, but all alone it would have been boring.
It seems we may have stumbled across a fundamental difference here.
I didn't actually find physics in college very interesting, because it seemed more focused on memorization. But I find reading Stephen Hawking books pretty interesting, even though I cannot think of many practical applications of his theories to my daily life, hobbies, or job. I like to understand how things work, and I do find "how things work" to be fun to play with. Materials and chemicals are pretty interesting to play with, as well.
Perhaps it is a fundamental difference. To me, building and understanding things (whether they're computational, mechanical, chemical, whatever) is interesting, but their ends aren't necessarily nearly as exciting, especially if the end is "a business". Business is necessary, sure, and I'd build things for business purposes as a job, but it's not my main interest.
That's probably even my reaction to the average startup on HN; for many, I don't really care about their SaaS or ecommerce solution or whatever, but they often solve interesting problems en route to getting it to work.
Not every programming task is exciting, but some can be fun.
I was making a map of the level on a piece of paper, and bungled it up (the rooms that were supposed to be adjacent appeared on two completely opposite sides of the paper or something like that). The obvious next step was to write a Python script to take a description of the map (room X: exit north leads to room Y, exit south leads to room Z, etc.) and produce a map (in ASCII art; I didn't want to spend too much time on superfluous graphics).
It was more exciting to write that script and see the map it generated than it was to play the game itself.
I may be weird.
Stage 1 was taking screenshots of the stones and shapes. Stage 2 was outlining the shape screenshots with Paint, and using a simple script to look for the outline color, and other colors would change a background color, so I was left with a simple outline. Stage 3 was using an image display program I created and will be selling soon to create a grid with the shape outlines in the top row and the stones with animals in the other rows. Thus I had all the information needed to figure out the code on a single screen. This was so much more fun than doing it the normal way :)
Oh, and then there was the time I solved the last puzzle in Professor Layton, a sliding block puzzle, by programming it in. I used brute force, which of course didn't work (too slow), but then used memoization techniques and such to speed it up. I not only found a solution, but I found interesting stats, such as the minimum number of moves required. It was even more interesting because it was my first program in Python, so I used it to learn the language. Programming to solve video game puzzles is one of the most fun kinds of programming out there.
Now, whenever I have a bright idea for a fun side projects, I do a few searches and see that it's already been done to death. Then I feel discouraged.
The design of that blog was so borring/unexciting that I couldn't get myself to read it.
Three years ago, I was kidnapped by monkeys, who appeared to be in a trance. They took me to the top of the Swayambhunath Buddhist complex, in Kathmandu. I was told that this was the Monkey Temple. As a monk translated the wishes of the holy monkeys, I discovered that I was required to rewrite the OS of their ancient computer, which had failed to reboot, back in 1839. Since then, they had searched the world for a programmer competent to handle the situation. They were about to give up, as they stumbled onto me, and realized that I was the reincarnation of ChiChu Gomptar, the lead programmer for the CS monkey gang, which had served their monkey king, the creator of this computer. I was flummoxed by its design, as it was made of smooth stones, uniform beads, colored sand, and wooden levers inlaid with gold. I told them that I couldn't remember anything from my past life. They gave me something to smoke, saying that it would connect me, through the eternal ether, to my previous memories.
It did, and after 25 days of extreme programming, of which I recall no details, I had completed the monumental task. I stood up, and ceremoniously dropped the special IPL bead onto the machine, which then awoke from its 170-year slumber with a mighty roar. The holy monkeys were pleased. They handed over a small golden box, with mysterious carvings. It seemed empty, and I was told not to open it unless my circumstances had become truly dire. I thanked them, both for the box, and for the tremendous experience. Unfortunately, I was not able to sell them continued maintenance for their new OS, but that was mostly due to their language not having the word "maintenance". Anyway, I have those memories, and this box to use when things go really bad, plus the always-present hope of future adventure.
As many as it takes.
How many times are we going to build a new house or bridge? How many times are we going to write a new love poem?
It's not as if we are anywhere near already having made the best web framework that can be. Not even close (include Rails, Seaside, Lift, whatever...).
Where is the WCFs, the WPFs, the Silverlights, the things that would get us fired up?
WCF, WPF and Silverlight are things "that would get you fired up"? Seriously, man?
And as much as this is going to probably just throw fat on the fire, all the excitement around JavaScript as a language reminds me of the excitement about Ruby as a language. Does nobody remember that Sun did this once already, with Phobos? Or that Netscape did this with LiveScript? JavaScript on the server end is not new, folks. It’s just new to the people who’d never seen it before.
LiveScript was useless and never got any wide adoption, and it's nothing like Node.js besides both making use of js server side. At the time, javascript was a joke, fragmented, language and was not used on the front end that much, except for small pieces of dynamic functionality. There were also no AJAX and no JSON. so having JS on the server had nowhere near the convinience and code re-use value that having JS on the server does now.
Or maybe I'm wrong and far too green to have an opinion.