Occasionally updated personal site and blog

Monthly Archives: February 2011

Amazon almost learns from Apple

— inspired by my new favorite blog, littlebigdetails.com —

In a lot of ways, Amazon’d kindle feels like an Apple product: thin, lightweight, easy to use. And yet in a lot of others, its early adopter / geek toy nature still shines through.

Case in point: The changes to the status line in the latest kindle software update.

Previously, the very bottom of the display would show your progress through the book using a thin line, with dots for chapters. Above it, you would see the current percentage read, the current “location” (kindle’s page number substitute), and the total number of locations in the book.

kindle statusbar, old firmware version

With the new software update, amazon introduced real page numbers.

Besides the kindle-esque location, they now show you the real page number, i.e. the page you would be on if this was the physical book, and the total number of pages (see image below).

kindle status bar, new firmware, with menu activated

But now, somebody started thinking about usability. Doesn’t the bottom of the screen look a little busy now? Do we really need all this information? After all, the kindle is supposed to be about reading, not showing metadata.

So the image above is actually only shown if you press the menu button, and have the kindle’s system menu on screen. Which is great – you can see the information when you want it, but it stays out of your way otherwise. And pressing the menu button is already established on the kindle as a means of calling up additional data, since the title bar with book title, battery indicator and time is also only shown when the menu is on screen. Pretty sweet.

So what do you have on screen when the menu is NOT activated?

Well, they got rid of the page numbers, and the location numbers, thereby freeing up more space for actual book text, while the shaded bar still gives you an indication of where about in the book you are.

Unfortunately, the kindle UI team managed to snatch defeat from the jaws of victory. Because there actually is no space freed up, since while the pages and locations are gone, the percentage is still there (see below). Which is utterly pointless, since the shaded bar at the very bottom contains the same information (About where in the book am I?). Granted, the percentage is a little more exact – but not exact enough to find your place again – for that you would need the location number…

kindle statusbar, latest firmware version

To add insult to injury, now that the percentage is the only text left in the status bar, it’s stands out even more, and is probably more distracting than the combined information shown before.

So the good news is amazon thinks about usability, and strives for clean, distractionless design. The bad news is, they are not yet quite as good at it as Apple.

Sorry to nitpick like this, the kindle is a great product in general (full review to come), I just found it a neat little example of making UI decisions.

Martin Odersky’s Scala talk in Munich

TNG, a Munich-based consulting company, had a Scala training this week by Martin Odersky himself, and was generous enough to also host a free talk by Odersky about Scala. Of course, I couldn’t pass up my first opportunity to meet a language inventor in person.

Odersky’s talk was one of the rare events where you listen to someone speak for two hours, and still  feel like you want to hear more. He merged an introductory talk about the why and how of Scala, with a few more advanced topics like Scala’s collections and higher-order functions. On my personal list of technology to watch, it definitely moved Scala from a “maybe interesting” to “pretty cool, will check it out”.

Some tidbits from the talk:

– Scala, or functional languages in general, want you to think in space, not time. Instead of thinking about the order in which things happen, you think about which abstractions to build on top of each other.

– Shared mutable state is the devil. The combination of shared mutable state and concurrency will inevitably lead to heisenbugs.

– Working on collections with methods like map or filter can lead to impressively concise code. A tailor-made example (mapping phone numbers to mnemonic words from a dictionary) that typically takes 100-200 lines of code in other languages was solved in Scala in about a dozen lines.

– Parallelization is mind-blowingly easy. Basically, if you already program in a functional style, all you need to to is tell the compiler to parallelize by using certain keywords, and it will happen automatically. I need to look further into this, but it looks amazingly powerful. It reminded me a bit of garbage collectors – just like managing memory, multi-threaded code is inherently hard and error-prone, so the right way to fix this is not to have better tools to do it, but to not have to do it manually at all.

– IDE support is the biggest headache for using Scala at the moment. The new version 2.9 of Scala, and the accompanying Eclipse plug-in, should come out in a few weeks, and pretty much fix this. Scala support in IntelliJ will probably progress slower, since they write their own compiler for the languages they support.

As a not-so-serious aside, if you want to quickly get a feel of another developer, invite them to a technology event, like that talk. Good, expected answer: “Cool, sounds interesting”. Bad answer: “What is Scala?”. Worse: “You mean, like, talk about programming when I don’t have to?”. Worst, slightly paraphrased: “I fear I might have to learn Java soon, and you tell me that there’s something even newer already?”. All, sadly, encountered in the wild…