Google+ is a nice work, for a first public beta. What took them so long?

I’ve been using Google+ for a few days now, my first impressions are positives. I find the experience to be generally smooth, the layout is well balanced and just pleasant. This is the first time ever that Google produces a UI that I find polished, and they might even not be done with it yet. I think the recent UI refresh was the tipping point that makes it really palatable for most. By making Circles an opt-in, they’ve finally nailed it – though I’ve read Scoble a few times – who hasn’t ;-).

What took them so long? Why couldn’t Google do this 3 or 4 years ago?

There’s still the geeky stuff in there though, “Stream” for example is not really meaningful to everyone but the nerds.

Circles is a feature that I have always found missing on the social media sites that I’ve used so far. Google+ might even be powered by Buzz and/or Wave, two products that they clearly forgot to put a UI on, but that need not matter.

Speaking of beta, there is no mention of that on the site. So this may be a break from the tradition of keeping a perpetual beta label on their products. It may also be a sign that people no longer pay attention to the “beta” label, folks run production stuff on any odd alpha release they can lay their hands on.

Facebook killer, or Twitter killer, or whatever-killer, that is not for me to say. I tend to think that those “… killer” are overblown 9 out of 10. But I think Google+ will find a daily use for lots of people, and that may be what they are looking for, that may be what they need. The question is though, will they really learn the real lesson here: which is to keep innovating for people, not just besides them.

I like what I’ve seen so far. Let’s see where they take it from here. Whatever thinking framework allowed them to build this, would do wonders if correctly nurtured.

GO, a case for a new programming language

With the advent of Google Go, there’s a renewed debate on whether we needed a new programming language. Actually a case can be made, for a niche player or an organisation with the right momentum to develop and maintain a new programming language.

No programming language will ever be fit for all purposes. Microsoft, among others, understood this and catered for it as they created C# and many variants of CLR compliant languages. As the technology platforms evolve, it should be natural to factor in the lessons learned and try a new approach.

In fact many already maintain Domain Specific Languages (DSL) without necessarily thinking of it as a programming language. Martin Fowler, @martinfowler, talked eloquently about the subject on his blog. In the Java world for example, template engines provide a really powerful method for organisations to become even more productive. With the right architecture, a lot of development and testing time can be cut if developers and architects can set up a good infrastructure to leverage the power of these tools.

If anyone can come up with a new programming language and be successful with it, Google can. When Chrome came out we were wondering the same thing, whether we really needed a new web browser. Now then? Another really interesting thing about Google GO is that the architects made a very clever choice by making it easy to learn for C or C++ programmers. This lowers the learning curve significantly, even good Java developers will be able to pick up GO quickly. Some of the concepts of Google GO seem to be inspired from Objective C, another big win there because Objective C has some really elegant constructs.

So there you GO, building on proven concepts, just like C# did when it came out, Google is bound to deliver the goods. I expect this language to grow fast because it can potentially leverage existing libraries. The adoption will be easier when appropriate tooling start to emerge. I foresee an approach like Google Web Toolkit, as a path to building bridges towards existing language platforms or runtime engines. If the compiler is as efficient as advertised, GO might just give Google a kind of unifying language that helps reduce software engineering effort by taking away deployment platform concerns. Microsoft is busy with a similar approach, their Oslo project and LINQ efforts are indications of the sort of goal that can be sought. I can’t way to start playing with it a bit.