Occasionally updated personal site and blog

Monthly Archives: January 2011

Jan 2011 GTUG Munich meeting

Last thursday saw the first GTUGMUC event of the year, thanks to the largesse of Google marketing once again held at the cafeteria of the local google offices, with pizza and drinks generously provided, and once again to a full house of several dozen developers crammed into the room.

First speaker was Robert “Sparky” Rhode, newly hired developer program engineer for Android. He showed a video, and simulator demo, of the new Android 3.0 Honeycomb. The emulator is still dog-slow when doing animations (although there might have been a hint or two about GPU acceleration being planned for that), but overall the new Android GUI was pretty impressive. Previously, Android always looked a little Linux-y to me, i.e. not bad, but not quite polished to the same level as, say, iOS. With Honeycomb, Android got a makeover in the looks department, and reaches almost ipad levels of design.

Interestingly, Honeycomb is 100% focused on tablets, and not intended for phones. Nothing is definite yet, but the 2.x line might be continued as a separate line for phones, with 3.x focused exclusively on tablets.

Sparky has not been with google for long, so there was little hard information, but it was nice to get to know the face of Android developer relations in Munich.

Next speaker was David Karam, a student at Munich’s technical university, presenting his work in the field of scientif computing. Basically, he took a genetic algorithm computing core, made it accessible over the network, made it possible to connect various computing nodes together in a cloud-like fashion, and topped it off with a web gui with lots of fancy graphs and statistics. Very impressive indeed, especially keeping in mind that he is not CS major. Would have liked the talk to go into more details of the how and why of the technical implementation.

Another non-google speaker Marcus Dapp from the Munich city government. He presented his open data / oven government initiative “Mogdi”. The first phase was an e-democracy competition, with people voting on ideas they want to see implemented. The current phase is a programming competition for the top ideas to be implemented, or any tech project based on the open government data made available by the city government. I’m happy to see my local government on the technological forefront again (after being one of the first government institituions to make the switch to Linux. Unfortunately, I probably won’t have time to participate in the contest, with the deadline set to the end of march. Details about the contest can be found at http://www.muenchen.de/mogdy

The final presentation was by Mike West, new google munich-based developer advocate for chrome. He started with a short, but very well-done overview of the new APIs available in Html5, and went on to cover details and current developments in Chrome, the Chrome webstore, and ChromeOS. Especially the ChromeOS part was fascinating – some might see it as a computer restricted to a full-screen browser, but it is more like a thin client for the cloud. The basic idea is that all your apps are on the web (or in the Chrome webstore), and all your data lives in the cloud, so PC is not really a personal computer any more, but rather a disposable appliance for accessing the apps and data on the web, with your profile and settings downloaded on demand to whatever computer you happen to use to log onto the net. A little like what Sun tried to do with their SunRay thin clients way back, or what a lot or corporations try to turn Windows PCs into, with profiles downloaded on login, and everything as locked-down as possible. Unlike that, it seems to actually work rather smoothly. Not sure if we’re yet at the point where I’d be willing to do without any desktop apps or local data, but definitely a concept to watch.

During the Q&A, I had to bring up the topic of Google’s decision to drop H.264 support from Chrome, of course. Mike stated that Google is putting significant resources behind its commitment to have an open, plugin- and patent-free video standard for the web, and patent-laden H.264 is not the way to go. According to the Chrome team, in the short run Flash is not going anywhere, and in the long run Html5 video encoced in WebM is the way to go. I would prefer to see greater adoption of Html5 video in the short run, even if its H.264, but I can understand the fear of having the world switch from Flash to plugin-free Html5 video, only to be stuck with patent royalties once H.264 is established, and the current royalty waver for free content distributors runs out.

Overall, another great GTUGMUC event, full of interesting people and exciting conversation.

Since attendance required agreeing to an NDA, I can’t put up any pictures of the event, but Nils has some on the GTUG’s picasa album at https://picasaweb.google.com/nhitze/GTUGMunchenGoogleTechnologyUserGroup

Try any language in your browser

Pretty much any new language has an online interpreter these days, so you can try it without even having to install anything.

For future reference, I collected all the links here:

Clojure http://tryclj.licenser.net/
Scala http://www.simplyscala.com/
Python http://try-python.mired.org/ (or http://trypython.org , but that one needs Silverlight)
Ruby http://tryruby.org/
Go http://golang.org/
Erlang http://www.tryerlang.org/
Groovy http://groovyconsole.appspot.com/
Lua http://www.lua.org/demo.html
NodeJS http://jsapp.us/

Why Erlang will be the next language I learn

Keeping to the pragmatic programmer’s mantra of learning a new language every year, I’ve picked Erlang as the language to learn in 2011.

(For reference – 2010 was Groovy (verdict: very nice, but if I want JVM + a dynamic language, I’d rather user JRuby), and 2009 was Javascript (yes, of course I knew Javascript before, but you can go a very long way beyond “hide a few elements of the DOM”))

Erlang is borderline practical right now – getting enough traction that is has a real chance of one day becoming mainstream (I think on the hype curve, Erlang right now is about where Ruby on Rails was 5 years ago), but still far enough out there that knowing it sets you apart.

It’s a functional language, and I’ve always wanted to learn one of those, but it’s less academic than Haskell, and has fewer parantheses than Lisp.

It’s a nice contrast from Java, which I do most of my current work in. Unlike Java, it was not originally intended to go mainstream, therefore being safe and easy enough for any joe programmer was not a design goal. And unlike Java, which is useful for anything from web apps to desktop software to being embeded in Bluray players, Erlang is rather opinionated software with a focus on concurrent network servers.

There are two good reasons to learn a new language: Either you expect it to become useful in day-to-day work to solve the problems you’re currently working on, or you expect it to broaden your horizon and teach you new concepts.

Erlang should do both.

Erlang is all about developing highly concurrent, highly available network servers, with a focus on scaling, debugging, faul-tolerance and performance tuning. In other words, building systems that scale by making use of the inevitable (or should I say already happened?) switch to multi-core hardware. Not so much a problem I have right now, but a problem that every programmer will have sooner or later.

But coming from curly brace-dominated languages, Erlang also feels really weird – and I mean that in a good way. The syntax is inspired by Prolog, Strings have several possible representations, none of which seem particularly string-y to me, the typing system is kind-of-optional, instead of exceptions you have supervisor hierarchies of processes, and so on. And of course, all that is on top of the fact that it follows a completely different programming paradigm. I might or might not end up liking those features, but I’m looking forward to learning more about them.

Alright, got the book, bookmarked the tutorial, found the online REPL, let’s get started!