An Erlang Postgres Driver: Refurbishing Open Source

People often wonder how to get involved in open source.  It’s pretty easy, really: there’s more work to be done than people to do it!

It can also be surprisingly easy and pleasant.  Here’s how I dove in, and without spending a lot of time, did something to improve the situation of an Erlang Postgresql driver.

A few months ago, I realized that some code I was using at work, Will Glozer‘s Erlang driver for Postgres, was not really being updated much, and the Github ‘fork’ graphic looked like a bunch of messy spaghetti as everyone forked and patched and hacked, but never contributed anything “back” to any place central.

It was obvious there are some bright people doing good work, so the talent and will (no pun intended!) were not missing, but a central repository was.  Github is nice in a lot of ways, but one thing I think it fails to do in some ways is encourage community, although they have continued to make improvements over the years.  It is a great tool, but open source is about more than source code: it is fundamentally about people interacting in order to produce software.  Forks and pull requests and patches and all that are nice tools, but they can be dispersive, in that they often seem to be small individual efforts that are just thrown out, with little coordination, and little ongoing effort.  That’s not necessarily a bad thing: lots of people get started with little fixes here and there, but you still need a group of people at the heart of a project who consider and decide what to include, when, and why.  Overwhelmingly, the language for that is English, and the place is a mailing list or forum built around the idea of people talking, rather than patch management.

In a moment of pique, I decided that it was a shame to see a small but useful project like epgsql wandering and neglected, so here’s what I did about it.  Most of these steps are things you can do to improve some open source software you use and love but know is suffering from lack of attention.

  • Luckily, the project was in a pretty good place: it does most of what it needs thanks to Will’s original work, and a big rewrite by Anton Lebedevich some time ago.  That’s where the hard work was, and those guys deserve the real credit for the code.  That makes being a caretaker feasible.
  • I wrote an email to the main Erlang mailing list: – it was a bit curt, but generated some interest.  Postgresql is pretty popular among those in the Erlang crowd using relational databases.  They are both projects where robustness and correctness are important.
  • I created an “epgsql” organization on Github so that the code was not merely something that was “davidw”‘s, but had a neutral name.  Hopefully others will continue working on it in the same place if I am no longer able to.
  • I created a Google Group:!forum/epgsql – Google Groups are a great way to create something that’s easy to manage, and very accessible: people who prefer email can interact with it just like a mailing list, and those who are more casually interested, or prefer the web can use it as a forum.  They’re free, very easy to set up, and are reasonably flexible.  For larger projects, perhaps being beholden to Google is not such a great idea, but one of the key points with improving epgsql is that it not interfere with my work by taking much time.
  • I sought out people who had done some interesting work with epgsql and invited them to take part in the group.  There are now several of us with commit privileges.
  • I try and get people to spell out their patches in as much detail as possible, and respond quickly to get some dialog going.  I try and involve everyone in the group in what’s going on, as much as possible (we’re all busy), because I really want this to be a group project, not something that starts and stops with me.

So far so good, I’m happy with the improvements that have been submitted over the past few months.  Now, here’s the thing: I would not consider myself an expert with Erlang, and didn’t know much at all about Postgres’s binary communication protocol, but have managed to pick up enough of the latter that I basically get how things work.  So in order to do a good open source deed, you don’t need to be the best or most knowledgeable person out there, you just need to put in a little bit of time.


MicroConf and the Early Stages of a Bootstrapped Business

The conference for Bootstrappers par excellence, MicroConf, recently sold out their 2014 Las Vegas conference in under a half an hour.  That’s impressive, and having been to the European edition last year, I can say that it makes sense.  It’s the best conference that I’m aware of for people interested in, and working on small(ish) bootstrapped software businesses like my own, LiberWriter.  Demand obviously far exceeds supply, which leads to some obvious options: increase the price, or increase the supply.  Given that the entire thing is organized by just a few guys, who have other things to do with their lives, supply probably can’t go up that much, leaving price.  While I would understand completely if that happens, it’s also kind of unfortunate, because I think it would tend to crowd out those of us who do not have established businesses.

I got to thinking about this in relation to the various hurdles that bootstrapped companies must cross and where things like books and conferences relate to each step along the way.  A good conference is fun for me whatever I get out of it in terms of learning, but if I force myself to think about it in strictly financial terms, the proposition becomes a bit more difficult, given how good material tends to wind up on the internet, for free.  Said another way, the $$$ a conference costs are going to be a larger percentage of what a small business is taking in, and the given time constraints involved in many bootstrapped projects, the knowledge gained is less likely to be deployable in a short time frame.

On the other hand if you have the time and bandwidth to take what you’ve learned and really start going to town with it, then I’m sure MicroConf could pay for itself in a very short time frame.  That would naturally tend to push the conference in the direction of higher prices and an audience composed mostly of people doing their own companies full-time, at minimum.

I was relieved to see that Mike and Rob are keeping “the rest of us” in mind with the conference, though:

we’re trying not to make it unaffordable. We want new entrepreneurs, new founders to be able to come. We also want experienced folks. I find that mix is a positive thing for everybody. –

So once again a big thanks to them, for putting on a great conference, and helping to extend that to those who are still finding their way.

Bootstrapping Hurdles

Lately I’ve been thinking about the various hurdles that a bootstrapped web business has to leap.

When you’re creating something from nothing, there are various barriers you have to get over.  Let’s go through them: I think it’s a helpful way to think about bootstrapped companies in general, but specifically web or app based product companies.  The ‘holy grail’, after all is having a business that provides an income without requiring you to put in an eight hour day.  Now, that income can be a pretty normal income: it doesn’t need to be dot-com “set for the rest of your life” cash; just enough to let you go about doing more things while you have steady money coming in.

First Sale

There’s a lot leading up even to this point, but it’s a pretty clear dividing line.  Have you found a niche, done the marketing research, and then actually put together a product that someone out there on the internet was willing to buy?  Note that for a lot of people, the sensible way to approach this is marketing first: before you write code, attempt to determine if there is a market.  If there’s not… it’s a disappointment, but at least you can give up before you wasted a lot of time building a product that no one wants to buy.  That’s the theory, at least; in practice, things are never quite so cut and dried.  The famous Henry Ford quote is:  “If I had asked people what they wanted, they would have said faster horses.”  In any event though, you’ve found something you think is worthwhile, and someone has given you their money for it!  That’s a pretty big deal, and worth congratulating yourself for, if you’ve reached that point.  One thing I hate about a lot of business books is that they completely gloss over this part of things when you’re just getting started.  But making something that someone will spend money on is nothing to sneeze at.

Sustained Income

Once you’ve sold a few, that probably gets you some feedback that you can utilize your offering, and if things go well, you’ll make more sales, and have a more or less steady rate of cash coming in.  This may bounce around a lot initially, but you start to get an idea of where things are going financially, and how much it costs to provide them and how it impacts your time.  Getting that feedback is important, because most of us don’t get it right the first time.  Charging money for what you’re doing is conveniently a good way to get feedback, though: if you give something away for free, and people don’t like it, they’ll think “ah, oh well, forget it” and move on. If they’ve given you their money, and it’s not working, you are going to be hearing about it!  This is a tricky phase because a lot of us will likely be so euphoric that we actually managed to sell something to someone, that we’ll go implement the first thing anyone mentions.  That’s not necessarily a good idea – some customer suggestions are going to be winners, but not all of them.  Try sitting on them for a while to see what many people request – those are probably worth paying attention to.  The one-off requests can probably be ignored or dealt with on a case-by-case basis depending on how much out of your way you want to go to help out your customers.


Are you making enough to pay all your expenses, like hosting, virtual assistants, and things like that?  For the sake of simplicity, we won’t include your own time in the expenses yet.  If you work with software, it’s likely companies value your time fairly highly, so even for some relatively successful products, reasoning in strictly economic terms, you might be better off not striking out on your own, since at any given point you could conceivably be making more working for someone else.  Even someone like Patrick McKenzie who seems to have been very successful with the products he’s done so far could earn a lot more by only doing consulting for other people.  So ultimately your own time is an investment towards the kind of business you want to have.

Making a Living

Unless you’re young and living with your parents, or have some money set aside and few financial needs, you’re probably doing bootstrapping work on nights and weekends.  That’s where I’m at right now, and … it’s difficult.  The business pulls in money regularly, and ticks over some of the time without my involvement, but it’s not enough to live off of (and right now I have a day job I like a lot too).  I have way more ideas of things to do with it than free time to implement them.  The trick right now is finding things to do to increase money coming in without taking more of my time, and things to do that themselves don’t take a lot of time, since nights and weekends don’t offer a lot of scope for big, involved changes.   Like I said, I also have a contracting thing I really enjoy at the moment, so I’m in no hurry to move on from that, but having the option to be able to work from anywhere, and the freedom a developed business provides, is something I really believe in.

I’m sure there are other big hurdles after these, but if you get to making a living and you’ve built a business that to some degree “runs itself”, you have more free time to either start developing other products or sink some serious development time into your current project to improve it, attract more customers, or simply enjoy the extra freedom.

MicroConf Europe

I don't envy conference organizers these days – most of what's being said can be read the next day, for free, on line, at your own pace, from the comfort of your own home, and without spending a bundle of time and money to sleep in a far away hotel.

Competing with that is not easy, but the guys at MicroConf managed to.  I would sum up the weekend by saying that it was a "very high bandwidth experience".  Every day, from breakfast until I turned in, I was chatting with people or listening to speakers during the conference itself.  That's aproximately  16 hours of being "on", and by the time I got home to Padova, I was exhausted!  But at the end of the day, I felt like it was worth it being there in person, because of all the interaction with other people.  The speakers' talks all ended up on line, more or less, but all the chatting and discussion and getting to know everyone is the human element that is tough to replicate on line, and one of the most important reasons to attend a conference in person.  Prague is also a beautiful city – I wish I had had more time there to check it out.

Here are some highlights and notes, in no particular order:

  • Rob Walling talked about actual, concrete numbers when discussing his current project's revenues.  There's a ton of handwavy stuff out there on the internet, but real numbers are tough to beat.  What makes it especially nice is that they also felt "real": they're good numbers, no doubt about it, but not stratospheric, science fiction numbers that leave you feeling like "ok, whatever, but that's not the planet I live on".  They're numbers that make you think "maybe, if things go well, I could do that too".
  • The number of "I'm from X, but live in Y" people at the conference was high.  Irish but live in Spain, American but live in Japan.  Or maybe just noticeable because I'm in that category myself.  There were people attending from the US, Europe, Japan, South Africa, and even Australia.  Impressive!
  • Almost all of the speakers had very specific, concrete advice that I can and will apply to LiberWriter, time permitting.  I read, and have read, a lot of business books.  Most of them are kind of fluffy, truth be told, in that they've got one decent idea, and a lot of filler to turn what could have been a tight, ten-page article into a book.  This was quite different in that there were a whole lot of tips and tricks being thrown out.
  • Rob's wife Sherry gave a talk about life with an entrepreneur.  Having two kids and a wonderful wife myself, it's a point of view that I was very interested in hearing about.  Judging from the people I chatted with, this was not your typical "startup" conference with a bunch of 20-somethings with no family and no ties – a lot of the other people attending had kids to think about as they launch their ventures.  A question I asked of Rob was how much of a leap he took from consulting to working on his own products, with the answer being that he's actually pretty risk adverse.  No Silicon Valley story about betting the house and everything else on the company – apparently, revenues from the web sites and products were good enough that there wasn't even really a leap to make when he quit consulting.
  • The size of the conference was just right: enough people that I didn't quite manage to meet everyone, but not so many that it was overwhelming.  In downtime between talks, and during dinners, breakfasts, lunch and so on, the speakers were very available to chat with.
  • Patrick McKenzie seems to have stumbled into his life's calling as someone working at the border of software and marketing.  The amount of advice, anecdotes, and data that he was continually spinning off was incredible.  He comes across as being a down-to-earth, approachable, friendly person.
  • Part of the balancing act the organizers have to work with is where people are at: some people had an idea but no concrete business.  Some of us (me) make some money but not too much.  Others have viable businesses that they make enough to live off of, and then there are those who seem pretty much 'set'.  It's difficult to find people to speak to each audience without losing some of the others.
  • The thing I liked the most about a lot of what was discussed was that it seems realistic.  Few people at the conference were from Silicon Valley, and yet… they're successful!  I like hearing about success stories that work out really well for the people involved, but still feel like something attainable.  People should be looking to emulate the successful guys here, not looking at extreme outliers like Bill Gates or Mark Zuckerberg.
  • I'm used to tech conferences, where it's all about the technology.  There was very little actual tech talk at MicroConf – it seems like everyone knows their stuff and was interested in learning about marketing, sales, and so on.

However, since it was a business conference, I also have to put on my cold, hard accountant hat.  Will the conference pay for itself?  Only time will tell.  I learned a variety of interesting and useful things, many of which I think I can put into practice.  The problem is finding the time between consulting work and family, but that was a bottleneck before, too – I had, and have, more things to do than time.  Also, to be very direct about it, how much of what I learned could not have been learned by carefully reading accounts of the conference, slides, and other material published on the internet?  A lot of it.  I'm not sure I would have paid attention to all of it though, so the conference was definitely nice in that it exposed me to some talks and ideas that otherwise I might have brushed off before giving them a chance.  In terms of dollars and cents, I won't be able to say for a while whether it was a sensible investment or not.

Would I go again?  I'd like to – it was a lot of fun and the people were great.

Like I said, it's tough doing conferences because your competition is the internet!

The Software Millionaire Next Door

I've been reading "The Millionaire Next Door" and have so far found it to be a pleasant book with a good message: don't waste your money on silly things and appearance (fancy suits, fancy cars, expensive boats, etc…), save what you do earn consistently and constantly, invest wisely, and so on.   Wikipedia has a good summary:

One of the things I like about it is that it focuses on "ordinary" wealthy people, those with a million or more in the bank, but not the Warren Buffets or Bill Gates types that are extreme statistical outliers.  There are plenty of people in the US who have done well by themselves by slowly but surely putting together enough money to be financially independent, without, however, being in the spotlight.   As the book says, these are the kind of people who maybe own a local chain of businesses doing something fairly ordinary, but doing it well enough to succeed.  They may very well not live in a fancy house, nor drive an expensive car, or otherwise outwardly draw much attention to themselves.

The world of software does not revolve around "dressing for success" (you noticed?), but we do tend to focus on the "big winners".  Gates, Jobs, Zuckerberg, Larry & Sergey, Larry Ellison, and so on are the stars of the show.  Of course, the economics of software being what they are, instances of winner-take-all markets with one big fish and a lot of also-rans are not uncommon.   However, that is not the only story, and I think it'd be interesting to know more about those in our industry who have accumulated significant wealth, yet are not the guys with more money than they could possibly ever spend on things that aren't, say, country-sized chunks of real-estate.

I'm guessing they'd fall into these categories:

  • Highly paid workers who have consistently saved over the years.  There are examples in the aforementioned book about people with relatively low salaries who happened to be very frugal and invest well (and have had some luck in their investments too).  These people would probably tend to be older, as it takes a while to save up that kind of money, and since this industry is so young with so much turnover, I would not think there would be a lot of people out there like this, but who knows, maybe there are a bunch of IBMers with this kind of story.
  • Those who got in on the right IPO, like Google or Facebook or something like that.  These events not only generate billions for those at the top of the heap, but for the right person at the right place at the right time, can mean significant wealth even without being in the upper echelons of the company.  My suspicion is that this kind of IPO, where everyone cashes out, is not common enough to have a lot of people in this category, but who knows, maybe it adds up over the years.
  • Those who own or started software firms that do something that's not very visible, but nonetheless dominates some particular niche.  This is where I'd guess most of them would be, but I certainly have no data or even anecdotes to back this up.

It'd be very interesting to gather some actual data on this, although I'm not in a position to do so myself – I wouldn't even really know where to start. 

As I age, I think the third category has begun to seem appealing in many ways – I'm simply not cut out for the Big Company life, and I'm not interested in living in Silicon Valley and going "all in" on the latest startup – I already did that, and while it was fun and I don't regret it, it's not the kind of thing I'd want to do now that I'm married and have kids.   Incidentally, this more relaxed, under the radar approach is exactly what is expoused in one of my favorite books of the past few years, Start Small, Stay Small.

Edit : I finished reading the book and reviewed it here:

The Dreaded Google Lockdown

It's one of those things that you read about, but are never really sure about: you think "maybe he was doing something fishy, and isn't tellling it straight in the public account of the incident".

So I'll try to stick to "just the facts".

A few weeks ago, I dug up some old book reviews I'd done, and posted to Facebook, and opened a site here: as a way of collecting them.  Naturally, I also added Amazon referral links, because, hey, it helps feed my reading habit!  Last month I got enough to buy two whole Kindle books, so we're not exactly talking about "get rich quick" territory here.  We're not even talking about anything remotely close to my day job, for that matter.  But hey, if I can get a little bit extra to spend on books, it's nice.  The reviews were basically quick notes on books I read.  Nothing that I or the rest of humanity can't get along without, but I felt like writing up a little something for myself and people I know on the internet – maybe it'll help someone else find an interesting book to read.

Several days later, I believe on October 8th, I woke up to find my phone was 'not signed in to Google', and, after repeated attempts, wouldn't sign in.  Same thing with my Nexus 7.  Logging in to my computer, in something of a cold sweat at this point, I find I can't get into Gmail or anything else, either.  Luckily, on the computer, Google's system did redirect me to a page where they mentioned suspicious activity, and gave me the chance to reactivate things by sending an SMS to my phone.  This did work quickly, and did a little bit to alleviate some of my stress.  I understand that locking things down quickly is probably to my benefit as well as theirs in the event of an actual security breach of someone's account: it keeps the attacker from doing any more damage.  However, it was sure a bad way to start a Monday morning.

However, the actual 'blog' (sorry, I hate the word!) was still blocked. It too has a form to fill out to prove that you're human.  Although: as a computer guy, you'd think that with all the clever people at Google, they would be able to tell from my access patterns to the site, browser footprint, IP addresses and so forth, that…well, I am me.  In any event though, they promised to review the blog within two days.  So, I waited patiently.  A week later, still nothing.  Then, the next day, I went back to check on the status, and they had reset the review request: it no longer said anything about October 8th, when I had originally made the reinstatement request.  So I filled in their form again, asking to have my blog back.  That was yesterday, we'll see what happens next.

As far as I can tell, I did not violate their actual terms of conditions, which say nothing about referral links:

Since the people at Google are loth to speak with their users directly, it seems as if one of the best ways of getting support is to complain loudly and publicly about this kind of shennanigan.

And to forestall the somewhat inevitable comments on anything related to Google: 1) Yes, I know I signed an agreement where they say they can do whatever the hell they want and I can f**k off if I don't like it.  Try and do anything on line with a major company and not get a contract like that, or for even more entertainment value, try and negotiate the contract with t he company.  Good luck.  If you don't say yes, you're pretty much on your own; there doesn't seem to be much of a market for "more humane terms and conditions" out there. 2) I know, I know, relying on the Google beast is a great way to set yourself up for a big fall if anything ever goes wrong, because it's impossible to appeal, or pretty much even to talk with a human.  But with a limited amount of time in my life, to date, Google has been a pretty good deal.  I suppose it's something of a "black swan" situation: everything seems fine until one day WHACK, and Google pulls the carpet from under your legs.


Well, I hope someone out there can help me recover my content.  I wrote it myself, and I would like to save my book reviews somewhere.

What alternatives are there to the Google colossus?  Not too many that I can see that are anywhere at all as convenient.

Edit: 2012-10-17: I don't know what did it, but they have reinstated the site.  Strange and disconcerting, but I guess things are ok for the time being.  Thanks to whoever it was at Google that finally had a look.

Fast, Light and Asynchronous

I am a big fan of Ruby on Rails: it does a lot of things, and it does most of them pretty well.  When starting a new web project, it's the first thing I would reach for: most of the time, your problem is going to be figuring out a good product/market fit, or whipping up some internal tool without wasting a lot of programmer time.  Once you've got a firm grasp of the problem, then maybe you can consider optimizing. Who cares if you do something that no one wants really really fast?

However, Ruby on Rails is not beautiful in terms of being particularly fast or lightweight.  No complaints from me: most of the time, I'm happy to have something that does so much for me, leaving me to work on the actual problem at hand.  Once in a while, though, you do need fast and relatively lightweight, and that space has been getting more interesting over the past few years, at least in terms of the web.

First of all, technologies like "Comet", utilizing web sockets or some other always-on connection are becoming more common, where a socket with the server remains open in order to quickly exchange data from the server to the client – and back.  That seems to be a poor fit for something like Rails, where it can tie up a lot of resources if one isn't careful.  And while computing costs continue to decline, no one minds getting more for less in terms of what their server can do.  Furthermore, with frameworks like Backbone.js, pushing more and more code to the client, the server can afford to be a bit simpler and do less, so it may as well be snappy to boot.

Java has long been fairly popular for "heavy lifting" types of applications, partially because it does end up being reasonably fast.  But it's not something I've ever had much fun using and is usually kind of wordy, and makes you feel like you need a crew of people in Palo Alto, one in Bangalore, and one in Stockholm just to churn out all the code.  And it certainly is no lightweight in terms of memory either.  So… while it can certainly do pretty much anything you need, I don't see it as being the strongest player when someone needs "real time web" code, and needs it to be reasonably light weight.

Ruby, outside of standard Rails stuff like Passenger, seems to offer some interesting possibilities for this kind of work, like Reel but they don't seem to have the traction other solutions do.  Python is in a similar situation: the Twisted framework has been around for a while, and while it has some success stories, never seems to have really 'caught fire'.  Neither of these languages was built for "concurrency" from the ground up, and that seems to have, to date, inhibited people from using them extensively for this kind of job.

My gut feeling is that the need for speed and "concurrency" (or at least handling a lot of concurrent users) will drive adoption of languages heretofore not so popular on the server.  Let's have a look at them.

Erlang: This is by no means a new language, having been developed in Ericsson in the late 1980ies; and it implements several interesting concepts.  First and foremost, concurrency is handled in the form of many small "processes", which are not actually Unix processes at all, but processes internal to the Erlang VM.  The Erlang system contains a scheduler that allocates resources to all of these processes, so even if one of them dies or behaves badly, it's not a problem: the system as a whole can continue to function well.  The way Erlang is built, the scheduler is preemptive: the internal "processes" don't need to yield to let other processes run.  Beyond the scheduler and simple processes, Erlang gives you the tools to create elaborate trees of supervisors and workers that are quite robust to failures in any one portion of the system, as well as giving you the tools to set up a system to run on multiple, distributed computers.  This kind of thinking is necessary when you write applications, such as phone switches, where downtime is really, really not ok.  Erlang processes comunicate almost exclusively via message passing, meaning that state is not shared.  Altogether, this makes for a fast, rock solid system that can easily handle thousands of concurrent connections without breaking a sweat.

The computing world being what it is though, Erlang is likely to be more of a Lisp or Smalltalk: it's a trailblazer that did many things years before their time in other languages, but I don't see it as ever quite catching on amongst 'the masses'.  It has a wonky syntax, it's a functional programming language, and because it is used in environments where too much experimentation is not good, it does not have a lot of room to break with its own past and innovate in terms of the language itself: it's slow to change and improve, even where the need to is clearly perceived.

Node.js:  is the opposite, in some ways: being based on Javascript, it draws on a huge number of potential programmers – orders of magnitude more than Erlang.  And thanks to design decisions enforcing the use of asynchronous code and callbacks for anything that could block, it deals quite well with concurrent connections, even if the language and libraries don't really give you much in terms of "true" concurrency.  This is a simple model that works pretty well, even if, theoretically, all it would take is one "while (1)" loop in a callback to block the entire system.   In practice, this doesn't seem to be a big problem, though.  More of a problem is writing maintainable code, when everything is a callback.  Keeping the network of callbacks straight can be a bit of a chore, and is probably not an optimal model in terms of programmer productivity.  That said, people seem to do make due with it, although Node is young enough that we haven't seem projects that are 5 or 6 years old and maintained by people who didn't write them.  One of the advantages of being such a popular language is that lots of people have a strong interest in seeing Javascript being very, very performant.  That need begat the V8 Javascript engine, from Google, which they were kind enough to release as free software.  So one of the advantages that Node has is that the underlying implementation is extremely fast for a dynamic language.  For many people who know Javascript, picking up Node.js is also an easy choice, even though people used to browser side programming with Javascript will have to adjust their way of thinking to succesfully tackle server projects.

Go language: this is an interesting one, written by some luminaries who  work at Google.  It can best be described as something akin to C with some updated features, such as garbage collection, that make it more suitable for working on large projects, where things like memory leaks are going to make life very frustrating.  It has the feel of a "real language, for real programmers" in that it doesn't stray far too far from what people are used to – it's not going to cause the "what the hell is this?!" reactions that Erlang might in more close-minded circles.  Between the big company backing it, and the approachable syntax and concepts, Go looks like it has a good shot at the mainstream.  Where it gets interesting is their concurrency model, which is apparently based on something called "communicating sequential processes"  which, superficially at least, looks like it has some things in common with Erlang's "actor model" of concurrency.

Under the hood, Go apparently hives off its "goroutines" to different OS level threads, but does not have a preemptive scheduler like Erlang: – although according to this, they may change that in the future.

I'm not enough of a computer science guy to comment much on the details of CSP vs Actors, but both seem like valid models with strengths compared to trying to keep threads straight, which always seems to be a source of problems for programmers.


So, what's actually going to happen?  I see Node.js as the clear front runner.  It takes a worse-is-better approach that seems to work well enough as people get started.  If they encounter difficulties later, they can always rewrite in something else, if needs be, but by "luring people in", Node.js has gathered a large group of users who continue, in turn, to churn out more code for use with the system, making it more attractive to new users.

Programming languages are not winner-take-all markets though, so perhaps there is room for a few more languages to have decent followings in this space.  Hopefully the competition will lead to ever better tools for those of us utilizing them!

What do you think?