Skip to main content


Showing posts from 2010

Mutability Considered (Somewhat) Harmful

We recently had a coffee-room discussion on the futility of trying to introduce new relevant programming languages. Computer scientists seem to invent new programming languages on a daily basis - it's an important contribution to conceptual research in computer science and having at least one language to one's name seems to be important for bragging rights in certain circles. However for a programming language to become practically relevant is extremely rare. We can make the somewhat flippant educated guess, that since the dawn of commercial computer use in the 1960ies, there have been about 5 major commercially successful languages: FORTRAN, COBOL, C, C++ and Java - roughly about 1-2 per decade. Certainly, there have been many other vendor and/or domain specific languages over the years or others with a significant popularity, just not enough to make it into the all-time A-list. There are multiple surveys which try to measure which are currently the most popular programmin

Privacy: the Transatlantic Divide

Despite what the likes of Mark Zuckerberg may say, there are still some people who strongly care about privacy.  This seems to be more so the further east you go from Silicon Valley. And even in the Valley, an increasing number of people are becoming aware of this, even though they may not understand or appreciated the alternate viewpoints. Whenever I am asked for an opinion on the European "obsession" with privacy or for an explanation on why the Germans seem so incredibly hung-up on privacy, my standard answer goes about as follows: Yes, there are indeed differences in the approach and attitude to privacy in particular between the US and non Anglo-Saxon continental Europe, but in substance the differences may be smaller than the commonality. And yet we humans seem to be particularly good a picking out small (cultural) differences and get disproportionately stressed-out over over them. In robotics when a humanoid model is close, but just doesn't feel quite right,  th

I @#$%&* JavaScript!

I am by no means an expert web developer or particularly familiar with JavaScript, which might influence my distaste for it. My experience is mostly from making small changes in moderately complex existing applications. JavaScript was originally intended as a small domain-specific glue-language to ad some client-side behavior to otherwise largely server-side web applications: do some client-side input validation, dynamically modify the page based on user input, etc. But with the growing popularity of AJAX style web-applications, much of the JavaScript client-side code has grown into monstrosities - mostly because of a lack of inherent support for modularity and encapsulation. One of the most important properties a language environment should support in order to scale to large projects is a way to divide an conquer. There should be a way for one programmer to build upon the work of others without having to understand the implementation details of these building blocks which might be

The Psychology of Marginal Cost

One of the side-effects of moving internationally is that one is typically required to completely re-evaluate the set of services which we are generally accustomed to - e.g water, power, telecommunications, transport etc. Partly because traditional utilities are very local and partly because the circumstances of life are more or less subtly organized differently in different places. One such difference can be the available pricing models for a particular service - most commonly some form of flat-rate or metered pricing. In areas where both flat-rate and metered pricing plans exist, analysis often shows that even though many consumer prefer flat-rate, the typical user would be better off with metered pricing, as only very few heavy users manage to fully use or "abuse" the plan. Consumers often quote predictable cost and "no bad surprise" at the end of the month as a key benefit of flat-rate pricing. But another interesting observation to take into account is that i

Android 2.2 - Froyo

I just finally got the new Android 2.2 release for my Nexus One (it's a long story...). Most of the significant features of this release are behind the scene like increasing java execution performance through just-in-time compilation or increasing javascript performance in the browser by using the V8 JavaScript engine from Chrome. Not sure I really notice much of a difference in everyday use, since I mostly use apps which are UI and framework bound for their performance (no CPU heavy games...) and most web-pages are light in JavaScript and browser performance is limited by network and rendering performance. But still these are very welcome optimization to help improve the platform overall. There are a few small enhancement - most significant for me is the ability to switch auto-correct/complete languages for the on-screen keyboard on the fly, since I write emails and SMS in multiple languages on any given day. There is now also finally a switch to disable the use of cellular data

Push Notifications for Android

After struggling with a few apps which use lots of battery and network resources while trying to sync half the Internet onto the device, one wonders if Apple didn't accidentally have a point with their claim that most apps don't really need background processing as long as there is a way to push background notifications to the device. This leads to a split application design, where part of the application resides on a server in the Internet, doing whatever the background service on the device would be doing, but with a lot less worries about power and bandwidth. If there is something new and interesting, a small notification is pushed to the device to alert the user, that there is something worth looking at. As long as the device has network connectivity when the user acts on this notification, the details of this notification might be about is loaded on demand. If mobile networks are ubiquitous and fast enough, the resulting experience is almost as good as an app which conti

Thoughts on "Making Sense of Privacy and Publicity"

This year's SXSW keynote by danah boyd is probably one of the most insightful contributions to the debate on privacy and social networking. For those who have not yet seen it, the rough transcript can be found here . It puts a finger on so many important points, that it should be required reading for anybody who wants to work on consumer web services. To summarize a key point: in real life things are usually not as simple as they seem. And that's bad news for the technocrats who typically build and run the virtual environments where social interactions are taking place online. Engineers and scientists like to simplify and standardize problems, apply Occam's razor, optimize systems along the dimensions of an assumed known quantitative model etc. The operators of today's large web properties study and analyze their users behavior and think to understand them better than the users understand themselves, but behind the user behavior observable from web logs are layers of

From UGC to UCC

I have noticed, that a good part of the articles I read online have been suggested by members of my various social networks. Maybe it is a part of the true utility of social networks to be a platform for "User Curated Content". While the web in its first phase tried to mirror the offline world, by moving every brick and mortar institution and service online, the so called web 2.0 promised a new world of participatory media, where everybody can create content. While digital media have drastically lowered the production costs, the web has driven distribution costs to near zero. Looking around on blogging sites, flickr, YouTube or other cornerstones of the "User Generated Content" revolution there are some seriously talented people out there! Some people have managed to make a mark, some even managed to make a living or become minor Internet celebrities in some field. Some other stuff is whimsical, funny or personal. There are unexpected viral hits or observers who ha

A day in the life of the Internet

Todays top suggestions on search for "How do I" are: how do i delete my facebook account how do i find my ip address how do i get a passport how do i know if im pregnant how do i love thee how do i look Out of which only #5 has a relatively straightforward answer: ... Let me count the ways. I love thee to the depth and breadth and height My soul can reach, when feeling out of sight For the ends of Being and ideal Grace. I love thee to the level of everyday's Most quiet need, by sun and candle-light. I love thee freely, as men strive for Right; I love thee purely, as they turn from Praise. I love thee with a passion put to use In my old griefs, and with my childhood's faith. I love thee with a love I seemed to lose With my lost saints, --- I love thee with the breath, Smiles, tears, of all my life! --- and, if God choose, I shall but love thee better after death. Sonnet 43, Elisabeth Barret Browning

IT != IT - the Case for a Differentiated Immigration Policy

The Swiss government recently reduced the quota for work-permits for applicants from so called 3rd-states - which typically means countries outside the EU and not covered by the free-trade treaties between the EU and Switzerland. After a highly publicized protest led by high-tech companies like Google, Microsoft and IBM, the Swiss government has rather quickly reverted its decision. In the midst of a recession with higher than usual unemployment and increased levels of immigration from the EU following the free-trade agreements, the general mood in the population is not very supportive of any increase in immigration quotas. This is seen as yet another attempt by greedy corporation to undercut the Swiss standard of living by importing cheap labor from overseas - typically from south-east Asia in what is generally by called the IT or information technology sector. How can there be a shortage of IT labor, if almost everybody knows someone who is unemployed and supposedly somehow "in

A Game Changer for Public Transportation Users

My favorite and most used app on Android isn't even an app, but rather a service. It is the Google Transit public transportation directions feature in Google maps, which can also be accessed more easily through the Maps application on Android - or on any other mobile platform which supports Google Maps for mobile . In combination with the extremely dense and frequent network of public transportation in Switzerland, the transit directions on the phone offer a level of spontaneous mobility, which is generally associated with driving. When it came to using public transportation networks, people tended to know the routes by heart which they frequently travel (e.g. daily commute), while anything else required thorough planing by poring over books of printed time-table - an activity enjoyed only by the most hard-core train buffs. The Swiss public transportation systems has always been particularly well integrated, across all providers and including everything from urban transit, buses

One Password to rule them all

I am notoriously bad at memorizing. If not, I might have gone to medical school and chosen a more lucrative career than Engineering... But as the number of online services I uses increases, so does the number of account username and password combinations. I try to standardize as much as I can on the same usernames(s) but some sites make this really hard by requiring strange and unusual conventions (name must be at least 8 characters long and include at least special character and number??? Whose name looks like that?) or by dictating that the username be whatever 10 digit number their database uses as the unique key for the account record. Same drama for the passwords, except that using a standard password everywhere has the added disadvantage that once the password is compromised, the attacker would have access to all my various online service accounts - if sHe could guess those bloody convoluted usernames... ;-) Things got particularly bad for accounts, which I use very rarely and

G1 to Nexus One: a review

By any measure, the new Nexus One is a very nice phone: large brilliant display, high-performance CPU core, high-res digital camera, solid low-profile body. With this kind of hardware spec, the Nexus One establishes itself as the current flagship among Android phones. To my liking, it does not have a physical keyboard, which makes for a much more slim and solid feeling body than the G1 for example. In that sense the Nexus One is what I had hoped for in my original review of the early G1 . In the about 1.5 years since the G1 came out, Android has come a long way. 3 major releases of the platform have added important missing features like an on-screen soft-keyboard and helped harden the platform based on experience in the field. At the same time, developers have contributed a wide range of expected and unexpected applications, and learned how to write them so that they don't drain the battery within minutes. There are now half a dozen or so Android phones on the market and many mor

Nexus One: the good, the bad and the ugly

So it doesn't cure cancer, solve world hunger or even global climate change - but it's still a pretty nice phone! At first glance, the large, crisp high-res display get's all the Uhs and Ahs, including how snappy the UI responds thanks to the 1Ghz Snapdragon chipset. With its speed and responsiveness, the phone is a pleasure to use! The form-factor is thin, sleek with ergonomically rounded corners and lies well in the palm of ones hand. The teflon coated plastic case gives it a nice high-end feeling texture. The biggest improvement in software features for my use case is the ability to sync multiple accounts for the contacts and the gmail app - now I can get notifications for email arriving on any of my gmail accounts. My only serious gripe so far is with the placement of the on/off button, which I need to press each time before and after using the phone. Its location at the top edge, is very un-ergonomic for single handed use - i.e. fishing the phone out of the pocket wi