Raphael's Blog

Till The Sky Falls Down

Category: Technology

Giving up on the Playbook

Back in February at the Mobile World Congress I was really really looking forward to Blackberry’s developer event. And it was a great event. The RIM guys showed us a lot of cool things and I was somewhat impressed by them using QNX as their OS for both the Playbook and their future well-known smartphone brand.

QNX is very interesting. It’s a bit like it could be the successor of the Darwin (which Apple’s OS X is based on). It’s also a UNIX, but it is real time capable.

So I wrote on app with RIM’s Tablet Web app SDK. It was not as easy as it should be: You had to use VMWare to run their simulator virtual machine and there were a lot of steps involved in setting that up and the numerous accounts. You needed like 4 different accounts as a developer alone. And then when I got the actual device, I needed a fifth account to be able to set up the device at all (and I could not create that account for some days until it suddenly seemed to work).

But I lost motivation to do more when RIM announced that their native SDK would only be given to some people at first and would not even contain a UI library. In other words: The only native apps you’re gonna see are games and maybe some very special graphic-intensive ones.

Why does Blackberry make it so not easy and not fun for developers? And why

Also I see some grave problems from a selling proposition point of view with the Playbook:

  • The only USP it has in my eyes is that it fits well into existing Blackberry infrastructures and it keeps fulfilling admins’ wet dreams about security and centralized control. While that certainly is important, it seems like many companies still buy iPads.
  • Flash and web browsing experience: The Playbook is more feature-rich here than the iPad.  It can do Flash. But the trend goes towards HTML 5, even Adobe released a converter. And the iPad does sell very well, even though it can’t do Flash.
  • The iPad has certainly won the consumers’ hearts. But I believe that this is the real entrance into the business world. Employees will demand what they know from home. It was the same thing with Microsoft’s Windows and Office. So they will also have a hard time in the business world, too.
  • The Playbook is not done well enough: The SDK is too limited, Blackberry is annoying developers, the hardware has some surprising design issues like the power button being way too small and hard to press (that is an important button!).
  • Android runs on many types of hardware and Google starts innovating a lot faster on android.
  • RIM built an “android player” for the Playbook. Well that is nice. But as the Playbook does not have any good apps and won’t have (as pointed out above), the only reason to have a Playbook would be to run android apps. So you could just get a real android tablet right away.
  • Will all that RIM tries to cater to two kinds of groups, business and consumers, while not really serving either of them well.

To me it seems like RIM is going to be bought soon by some other company, because both their smartphones are losing ground and the Playbook does not sell very well.

I think that’s sad. I was hoping that there would be a new number three that is not Microsoft. I was hoping that a really interesting piece of technology like QNX could be one of the new cool platforms.

But it seems like the future eco system phone and tablet eco system will be dominated by Apple, Google and Microsoft.

Hacking@CDTM – First time

Just recently, I started an initiative called Hacking@CDTM. In the announcement at the Inspire & Dine I briefly explained what hacking is: It is about exploring the boundaries of anything that is programmable or that you can put together in some way. For example, building spaceships with Lego is hacking. Building a sensor box that has a temperature and a motion sensor and that transmits all the data wirelessly to another box which uploads it to the internet is hacking as well. So hacking really is about creatively exploring what can be done with technology. It’s sort of like Star Trek: “Going where no one has gone before.”

In our first iteration on May 21st, we hacked a Wireless Sensor Network (WiSeNet) together. A WiSeNet is a network of multiple nodes that contain sensors and transmit all their readings over the air. We used the robust and established industry standard ZigBee for this. ZigBee is a really great invention: It’s very power efficient, designed with the goal in mind of having thousands of equal sensor nodes over large areas (e.g. a rainforest) and it’s extremely robust. A typical use case could be detecting fires in a big forest: You build a large amount of these small ZigBee-equipped sensor boxes that work for years with just one battery. Then you distribute the boxes from an airplane over that wide area just like food supplies are sometimes distributed from the air in disaster zones. All you then have to do is constantly monitor all the readings from the sensor nodes. If there is a sudden high temperature reading from node, one can immediately go there and stop the fire before it spreads.

We had another use case in mind this time: Having sensors in your household to monitor your home. We played around with a number of sensors: temperature sensor, motions sensors, light intensity sensor, humidity sensors and a magnetic sensor (which can be used to detect an opened window if you place a magnet on the window and the sensor on the wall).

For those interested in the implementation: We used a netduino (compatible to Arduinos in many aspects, but it runs on an ARM7 core and comes with the .NET Micro Framework) and the XBee Series 2.5 modules from Digi. The XBee modules are relatively easy to use: You simply connect one of the serial buses of the netduino to the XBee module. ZigBee handles all the securing communications work for you and you just have to tell the module the address of the other module that it’s supposed to connect to in the beginning via some special commands that also go over the serial bus.

Within just a few hours we had calibrated one of the sensors and were able to transmit values from the sensor box to a laptop (we plugged a USB ZigBee module into that laptop). This required us to solder a little and find out how some of the sensors work. For me, being a computer scientist, this was an interesting new thing to learn. But it was great fun. Another guy also tried to play a little with the brand new Android Accessory Development Kit that we got right away from the Google I/O. But apparently one needs an android device to really do something with it, so we have to do that again next time.
We also want to continue working on this and maybe one day we can install our own home automation technology at the CDTM!

I would like to thank all who participated and Anas and Ronnie who helped me organize it and Christian Menkens for supporting us. Thanks also to Nils Hitze for providing the Accessory Development Kit.

Check out our website for updates and the next upcoming event! Go to hackingatcdtm.eu.

Too many platforms

Seeing all these mobile phone/tablet platforms at MWC is amazing from a technical point of view. But the manufacturers all don’t want to accept that it’s not gonna be iOS, android, QNX, Blackberry OS, webOS, Windows Phone 7, QT/Symbian and bada at the end. Nobody needs all of that.

In my opinion, they should not even compete for platforms, they could just all do Symbian, android (next to iOS) and be fine. Symbian can take the cheap phones, whereas android can to middle class to high end. And iOS will stay the Porsche among phones and tablets.

Also, many of the new tablets look kind of nice. But a lot is just unpractical (strange gestures, no iTunes companion etc.). Maybe I am biased myself, but many of the “advantages” of other platforms than iOS that I have heard about in the last few days probably won’t matter to most consumers (not being Apple, different screen sizes/colors/, no restrictive Apple App Store Policy).

Instead, most of the iPhone’s and iPad’s competitors are equally expensive, but they are not easier to use. The industry is just copying again and praising technicalities as competitive advantages. They’re mostly just not Apple. Different, but not better IMO.

In their fight for developer’s attention, they all treat developers nicely though. Beautiful women at the booths and good food and the whole day during the dev events. I’d wish though that more people who attend were actual developers. It would be way more fun if there were more actual questions instead of the suits just listening and only few guys in t-shirts participating in the sessions.

Personally, I want to look into Blackberry’s platform and write some basic apps and put them in their store to see what happens. But having been at their developer day today, they could not convince me to really believe in their platform. At launch time, they will not even have their Java SDK ready, but only their web framework and the not so popular Adobe AIR framework.
Their PlayBook has nice hardware data, but what matters to me as a developer is whether people will buy it instead of the iPad and I will be able to make money out of it.

What's wrong with Google Android

From now on, I am going to write mostly in English, also in this blog.

First of all, let me state my experience with android.

Back in February, at the Mobile Word Congress 2010, Google gave me a Nexus One for free. I decided that I really wanted to try out Android and was quite impressed by some features. Android appeared interesting to me because

  • It supported extensive syncing of phone contacts with other networks.
  • Google services were easier to set up.
  • Apps could do more on the phone.
  • The Nexus One was faster than my iPhone 3G.

So for the last half year, I have been using only my Nexus One to really be able to try it out. Sometime ago, I installed the latest release, Android 2.2, also called Froyo. It was actually a bit faster than its predecessor, but did not solve many problems. Instead, it introduced new ones.

Now I know why Android was a very wrong decision all along.

Android failed me in so many ways:

  • Battery life time: You either have to turn all the cool features off completely (3G, GPS etc.) or suffer very short battery life. iOS allows you to turn it on and then it intelligently manages it so that these features still do not kill your battery that fast.
  • No push notifications: Technically, Google says Android can do push too. But Facebook still does not implement it. I do not know a single application that can do push notifications. And I do not want Facebook to query the server every 15 mins just to emulate that because Google can’t get it right. iOS can do it. Facebook on iOS uses it. It works like a charm.
  • Multi touch: Oh yes. Some devices can do multi touch. Like my Nexus One. In theory. Only some preinstalled apps use it. All these trolls on the Internet keep repeating that Android does multi touch. To my definition, it does not. Most apps do not use it. Because the idiotic device fragmentation prohibits it. Many devices do not support it at all and it seems like the screens work differently on different devices. Apparently,  Android leaves the task of determining what device it is and how to handle it properly to the programmer. Great. Epic fail, Android. That’s embarrassing. Multi touch is completely useless that way.
  • Playing music: Complicated, painful, do not want to do it. I know some guys with an Android device. I asked them how they played their music. “I still have a 2 year old iPod nano.” Oh right. So to be able to play music and videos, I again have to carry around a second device, because Google can’t get it right? No way. So I tried Doubletwist. Nice try. But it supports only half the features on the Mac like on Windows. Sync is slow, because the Nexus One uses Micro SD cards, which are inherently slow. Yeah right, trolls. Being able to exchange one slow micro SD card with another one is really a great advancement from Apple’s inability to exchange the integrated memory. The one of the iPhone is at least fast enough.
  • Streaming music: Tried out everything: Grooveshark, mog.com, last.fm. Nothing works properly. It always stops after a minutes, because my phone registered with another cell base station. Does not work in the subway. Does not work with many people around. Fails when switching between WiFi at home/university and 3G outside. Fails even when walking more than 500 m. Epic fail, again. Music streaming on the phone is totally not practical. It needs a few more years until someone can do a proper data soft handover between WiFi, the cellular network and different base stations.
  • WiFi unreliable: Android seems to try to connect to WiFi base stations a couple of times and then permanently give up. Both at my base station at home in Germany and in Hong Kong at the university, Android has given up permanently on ever connecting to the base stations again. I would have to manually ask it to try again.
  • Missing apps:
    • MindMeister
    • any other proper mind mapping apps.
    • Productivity apps for OmniFocus, Things etc.
    • Proper Games.
    • Public transportation apps (I know the “Öffi” app for Munich / Germany. But that does not count, because it does not work properly. For Hong Kong, there is an official one on the iPhone and not one in the Android Market.)
  • Not properly working apps:
    • Facebook: Can’t retrieve my friends list. Can’t write messages.
    • Evernote: Crashes often. No offline caching.
    • Rebtel: Can’t choose contacts when using search
    • DoubleTwist: No proper browsing through songs.
    • Adobe Reader, PDF to go etc. Some do not display pictures, others are slow.
    • Fring: Unusable. Nothings works.
    • Nimbuzz: Just as bad as Fring.
  • Many bugs in Android (Froyo, FRF91):
    • Random crashes. No obvious reason for them. Happens very often to me. Required a reboot.
    • Phone stops suddenly vibrating completely. E.g. touching buttons  does not create a vibration response any more without visible reason.
    • eduroam authentication does not work.
    • Bluetooth and WiFi block each other. Seems like you can’t use both.
    • Bluetooth connection to headset arbitrarily drops.
    • Crashes when making phone calls. Could be related to Android’s immature implementation of multi tasking. Sometimes BeyondPod might the cause. BeyondPod is the best rated podcast app in the store. So it should not be bad, but maybe it still is, thanks to the lack of control on Android.
    • Sometimes, the other side could not hear me when calling. Restarting the phone helped.

To sum it up: Android is so much work in progress. It’s an interesting nerd tool. I will part ways with Android. I really have had enough of it.

If you like wasting your whole day with a phone that does not work or if you like nice marketing texts from Verizon Wireless and friends of what their Android phone in theory can do, but in practice fails to deliver completely, then go ahead with Android.

If you like a phone that is expensive and restricts you in some ways, but is stable and solidly delivers what it promised, a phone that actually allows you to use the features in practice, do not get an Android phone. Get a phone that works.

Update: More from TechCrunch on the very same matter.

Update 2: TechCrunch talks about yet another important aspect that I, being a techie, have completely overlooked: Carriers are diminishing the Android experience even more by pre installing bad software on phones and locking down nice features entirely (tethering, installing apps from any source vs. the carrier’s own app stores).

Update 3: Verizon is now even limiting your search engine choice to Microsoft Bing on Google Android phones! TechCrunch says: “Generally, Android is now about as open as iOS. Think about them Apples.”

Die Schwächen von Web-Interfaces

Ich bin ein Fan von Cloud Computing. Aber nicht von Web-Interfaces.

Seit 2 Jahren kommen vor allem von Google ständige Versprechungen, dass der Web-Browser die Zukunft ist. GMail und Konsorten mögen ja sicher sehr erfolgreich sein und durchaus für die meisten Nutzer ausreichend.

Aber wenn man sich andere Anwendungen ansieht, die etwas mehr Funktionalität erfordern als Mail-Programme, dann entsteht der Eindruck, dass Web-Browser nicht auf der Höhe der Zeit sind und auch nicht nachkommen.

Chrome ist jetzt seit einiger Zeit draußen. Safari und Chrome kämpfen immer wieder um die Performance-Spitze bei JavaScript. Aber es reicht nicht. Viele Browser-Anwendungen sind zwar ein netter Versuch, aber es fehlt Essentielles. Ich bin ja beispielsweise ein Fan von MindMeister. Aber mir wäre es lieber, wenn MindMeister – wie unter iOS – nicht im Browser laufen würde. Sondern stattdessen für die wichtigen OSes eine native Anwendung. Oder meinetwegen eine QT-Anwendung.

Viele Anwendungen, wie bspw. MindMeister, sind nun einige Zeit auf dem Markt. Und immer noch fehlen essentielle Funktionen: Offline-Funktionalität, Reaktivität des Interfaces, simple UI-Features wie Mehrfach-Selektion von Objekten (z. B. MindMeister). Das sollte HTML5 bringen. Tut es auch theoretisch: In der Praxis sieht man nichts davon. Überhaupt frage ich mich langsam, warum man eigentlich HTML5 und Konsorten braucht. Eigentlich ist das doch nur das Nachbauen von Cross-Platform-Frameworks im Browser.

Browser-Anwendungen haben eine Reihe an Nachteilen:

  • UI nicht nativ
  • UI häufig langsam
  • Offline geht i.d.R. nicht
  • Tastatur-Shortcuts gehen nicht so schön
  • Ohne Chrome oder Safari geht’s nicht gut

Cross-Platform-SDKs wie QT haben nur einen Teil der Nachteile und ich kann keine zusätzlichen erkennen. Genau so wie Browser-Anwendungen ist ja QT plattform-unabhängig (und das heißt nicht nur Windows und Mac).

Warum entwickeln die Leute dann immer noch für den Browser? Apps installieren und automatische Updates sind doch heute auch so trivial geworden, dass man jetzt nicht sagen kann, dass das Deployment immer noch viel einfacher wäre mit Browser-Anwendungen.

Eine Abkehr vom Browser würde uns im Übrigen auch das Gejammere um Flash ersparen. Flash betrachten manche ja nur als notwendig, weil es das kann, was HTML5 nicht kann, Cross-Platform-Frameworks aber noch besser können. Ohne Adobe, ohne 200 MB Speicherverbrauch für einen Twitter-Client.

Ich meine, Web-Interfaces sind nicht an sich falsch. Sie haben sicherlich ihre Zwecke, wenn etwas zum Beispiel stark inhaltslastig ist und wenig Interaktion erfordert. Genau dafür wurde das Web ja ursprünglich erschaffen.

Ich denke nur, dass es für komplexere Dinge – und dazu zählt schon eine Mindmap-Anwendung – besser wäre, auf geeignete Technologien umzusteigen. Der Versuch eines ertrunkenes Pferd beim 2. und 3. Versuch besser durch den Ozean zu reiten, funktioniert nicht, wenn das Pferd zwischen den Versuchen nicht wiederbelebt werden kann und auch beim 3. Versuch immer noch nicht im Wasser atmen kann und deshalb wieder ertrinkt.

Pferde haben ja auch einen wohldefinierten Zweck. Aber genau so wie wohl – hoffentlich – keiner versuchen würde Pferde gewaltsam in Amphibien zu verwandeln, sollte man vielleicht die Browser lieber Pferde sein lassen und echte Anwendungen wieder richtig entwickeln. Richtig nativ oder eben cross platform, aber als richtiger, “fat” Client.

Warum es klar war, dass Google Wave scheitert

Mir ging es ähnlich wie vielen: Am Anfang fand jeder es cool, weil es ein Experiment war und es ja nur klappen konnte, wenn Google dahinter steckte.

In manchen Blogs habe ich gelesen, dass Wave scheiterte, weil es “noch ein Tool neben E-Mail” war. Mag sein. Ich denke nicht, dass das der Hauptgrund war.

Mein Eindruck: Google Wave hat kein Problem besser gelöst. Zunächst hat Wave versucht ganz viel auf einmal richtig zu machen. Zum Beispiel, dass man kollaborativ an etwas arbeitet und Plugins mehr als nur Rich Text etc. ermöglichen. Was manche da übersehen: Genau das machen Wikis schon lange. Ausgereifte Software wie Mediawiki hat ebenfalls Plugins. Waves Neuerung war also bestenfalls, dass es Google Web Toolkit benutzte und versuchte in Richtung Echtzeit-Kollaboration zu gehen, wo Wikis mehr so etwas wie “runden-basierte” Kollaboration waren.

Wave scheiterte dann, weil es natürlich nicht die zahlreichen Sachen so viel besser auf einmal machte, die es wollte, und keine Kern-Neuerung hatte. Kollaboration gab es eben schon fast genau so.