Occasionally updated personal site and blog

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!

Conference characteristics by hardware

Unsure about which conference to go to? Where you will meet the kind of people you want to meet? All you need to know is what kind of hardware the attendants will be carrying.

Barcamp: iPad, Macbook Air

Google developer day: Android tablet, Netbook running Ubuntu

W-JAX: Company-issued Windows laptop

Notes from Google Developer Day 2010 in Munich

First of all, kudos to google for the flawless organization of a huge (1100 attendees), free event. It was great to have so many key people straight from the source in one place.

Here are my random notes of the event:

Opening keynote

Eric Tholomé: 2004 is the dividing line – Skype was the last app that mattered that was desktop- rather than web-based.

All the google presentations were very polished – in striking contrast to the crowded slides of TU München university.

Some impressive HTML5 demos (especially Canvas3D rendering) by Jochen Eisinger and Bernhard Bauer, software engineers with google Munich. New in Html5: device orientation – so you can query the position sensor of a smartphone. Nicely shown by video breaking up into falling tiles on a tilted mobile device.

Google App Engine hit 130000 applications, with over 5 billion pageviews per week.

Nice presentation idea: fullscreen image of wine and cheese as illustration for “2 good things that are even better together” (here, the topic was Google’s app engine and VMWare’s Spring Roo)

Spring Roo: Looks interesting, like somebody in the JEE world has Rails generator/rake envy.

Google’s internal motto: “Put mobile first”. Number of Android apps grew from 20k to 100k since February. Android is moving fast – there’s a whole presentation about changes and improvements in Android since the I/O conference, which was 4 whole months ago.

Nice debugging tool in Android: If your app crashes on any Android anywhere, you get to see the stracktrace.

API overview

Relevant talk from Google I/O: “How Google builds APIs”.

Coolness chart: SOAP -> REST -> REST with JSON

New: API console: monitor usage in your project, try out REST APIs, see usage vs. limits, get traffic reports

Google data protocol:new AtomPub-based standard for REST-like APIs in json

(Side note: Finally a conference that provides plenty of power outlets at the seats of the audience)

Google apps script: server-side javascript for accessing google APIs, does for google web apps what VBA did for Office

New in google maps: Static Maps: rather than populating a map with flags, which is slow for 500+ flags, prepare a map that is static, to ben included as a simple image tag -> “Programming knowledge from your community college course will serve you well here”.

Cool: Fusion tables: Upload geo data, analyze it, and visualize it on google maps layers

Geocoding API: Didn’t know about that one, allows you to enter an address, and get the latitude/longitude back. Basically a byproduct of what google maps does anyway, but might come in very useful when building geo apps on top of HTML5 geolocation.

Custom Search API: define your own search engine on top of google search, e.g. only search my own site or wikipedia, define synonyms (user searches for “mobile” -> also include results for “android”), boost results from certain sites etc. Looks cool, I might have to play with that.

Translate can also transliterate from one alphabet into another, how cool is that? And can even show virtual keyboards for all kinds of alphabet. E.g. when you’re targeting users from Russia, you can show them a Russian on-screen keyboard, so they can use keys for Russian characters even if they’re logged in from an internet cafe in Spain. I’m currently working on a web-based vocabulary trainer, this might save me a ton of work.

(Sidenote: one of the guys doing the API presentation just happens to run jsconf.eu, wow)

Social: Allows people to login to your site using their google account.

Charts: pass data as simple url params, get back a chart as url for an image tag, very simple.

Finally: news on googlecode.blogspot.com -> how come I did not yet have this in my RSS feeds?

Android UI

Firefox Pencil: free UI prototyping tool as firefox extension, google provides stencils for Android widgets for it. Cool, I was looking for something like that, but so far too cheap to shell out for Balsamiq mockups.

Google also provides an icon designer/ asset studio to allow non-designers to create icons: type some text, add borders,shadows, etc , and get back images in various resolutions. Seems very easy, very fast, and provides decent-looking graphics.

Reasons why Android supports trackballs: Allow users to operate their phones when wearing gloves (hmm…), and make it easy for people who are switching from non-touchscreen phones like Blackberries. My take on that: Where Apple creates a whole new world of completely new and different smartphone, Android wants to be a “smarter Dumbphone”.

App Engine for business

New features targeted at enterprise users: An SLA (three nines, i.e. 99.9%), paid support ($1000/month for developer support, with a guaranteed response time of 1 hour for operations support, and 8 hours for development issues), management console to administer policies, hosted SQL databases (I could not help a slightly condescending tone when talking about how some people might not want to use google’s fancy scalable NoSQL storage).

Will run not only Python and Java, but also any JVM-based language, including frameworks like Grails or Django.

Businesses will be able to setup their own domains for GAE-hosted apps, with users of GAE apps restricted to that Apps for business domain

Pricing will be $8 per user and month, capped at $1000 per app ( so I guess they don’t really expect much uptake amongst businesses that might have more than 125 users), instead of the pageview/CPU hours based pricing for non-business GAE. Apparently business customers were not comfortable dealing with prices measured in pageviews and CPU hours (but if you’re in charge of buying infrastructure, shouldn’t you be??)

New: code.google.com/qualify allows IT service providers to have their devlopers certified for developing GAE applications, to make it easier for enterprises to select partners to develop apps on GAE for them.


Sadly, I was still fighting a flu on the day of the event, so I had to call it a day after that, and missed other talks about e.g. BigData, predictions API and chrome developer tools. (Anybody knows if there is a site with videos of the talks, like there was for Google I/O?). I will definitely be back at next year’s Google developer day.




Couchsurfing Review

My last couchsurfing guests for this year, Brant and Paula Wong from California, put up a blog post about their stay in Munich here. Glad they liked it, and this way the whole world gets to see my tiny kitchen…

This year, I’ve hosted people from Canada, the U.S.A, France, China, Spain, Germany and Chile, and had a blast with all of them.

How to record internet radio using VLC on the Mac

This is mostly to remind myself, so I don’t have to mess with the settings again next time:

  1. Download the Playlist (.pls file), open in text editor, extract the station url (something like http://ice.somafm.com/suburbsofgoa)
  2. Open VLC, go to File/Open Network, enter the url extracted from the playlist
  3. Click on Settings…, choose any filenmane.mp3.
  4. Use the following settings: do NOT check “dump raw input” if you want to listen while recording , check “display the stream locally” to have it play while recording, use “Encapsulation method: Raw”, under “Transcoding options”, check audio,  pick mp3 from the dropdown list, pick a reasonable bitrate (eg. 128).
  5. Hit OK and listen and record as long as you like

VLC settings to record internet radio as mp3

Of course, this will just treat it as a continuous stream, completely ignoring tracks or titles. But it works just fine to record in chunks of about 30 minutes, import those into an iTunes playlist, and use that as “offline radio” on the ipod.

Hello world!

Since my domain seems to be stuck in domain transfer hell to my new host, this will be the temporary outlet for my blogging urges. Also useful for playing around with wordpress pluging and themes without messing up my own server.