Friday, December 10, 2010

When can I have my Personal SuperPhone (PS) ?

There is no doubt that Personal Computers (PCs), and the mobile phones have revolutionized our lives in multiple meaningful ways. Now smartphones are redefining the way mobile computing is done. But a smartphone today, be it from any vendor, can hardly be called personal the way PCs are.

A PC allowed you to customize from top to bottom. Every thing in a PC can be upgraded or swapped out in case a particular part malfunctions. I have a host of choices of what software stack I want to run on it. Right from the operating system to the applications are customizable. And it has been so form day one.

Not in case of a smartphone. True, yon can install some apps on them. True you can increase some storage space on some of them. May be change wallpaper to make it appear "personal". But that is it. It is what I call "pseudo-personal". You have no standard way of choosing a different operating system. You can buy different hardware for different mobile operating systems. But yon can't use the same hardware for different OSes even though they might be capable of doing so.


There is no way to fully customize software stack. Hardware wise it is even more restrictive. There is simply no way to expand or add capabilities. Though one might argue that you can put something like a USB host port. But none of the major phone makers have that feature. Currently I am using an Android phone (previously a Nokia Symbian). None of them have an easy way to install or upgrade the OS. My Android device is still 2.1, new 3.0 is round  the corner. There is no way to upgrade the RAM or phone memory. You upgrade external storage, but that is too limiting and only useful as a way to store data. Thinking back, my first PC was an HP machine with AMD processor. It only came with 64 MB RAM which I later upgraded to 343 MB, upgraded from Windows 98 to XP, dual booted with numerous flavours of Linux, installed BeOS!, installed graphics card and what not. That freedom is missing completely in a smartphone available today.


Capable closed hardware, crappy software

Today's smartphone hardware is no doubt very capable. But is closed. Closed to the extent that even if you manage to open up your device you will have difficulty in identifying the essential components that make up the phone. The only parts that you could mange to remove would be the battery pack and the display panel. Possibly a key pad if your smartphone does come with one. Don't ever think of interchanging these parts with another phone: it would almost never work. Simply because there are no prevailing "Standard" as in the case of PC.

On the other side, software on these devices  is not really productive. The PC software has matured over years, to the extent that people have started calling it legacy. Note that I consider all cloud based applications (aka. web appps) to be actually tailored for PC usage, not for ultra portable device.  Eventually the productivity offered by these smart devices is but quite limited. You almost always fall back to your PC to do the actual work (why do yon think Google is releasing ChromeOS?). The phones do not truly and transparently sync with your workflow. To some extent this has improved especially with mobile e-mail clients. But not in general. Ideally I would like my smartphone OS to automatically scale its user interface form small portable screen to a large desktop scale screen, handle touch, pen and pointing as well as keyboard, seamlessly. That will make computing on the go painless and computing on desk seamless. You will always need only one device: your personal super phone.


More eco-friendly

Another important factor of these smartphones is battery. My E51 used to last for at least 3 days on a single charge. My current Android phone only lasts a day. Difference being that I am using a lot more data services than I did with E51. I would actually love if the phone operated on solar power when on move and on battery when on desk.


From Asia not America

A noted company has to take initiative and came up with a reference design for a personal Super phone: Like the IBM PC. That, this would rather happen in some part of Asia and not America is my hunch.

A reference design like Open Moko is a good starting point.

Update: Motorola just released an interesting superphone:

Wednesday, December 01, 2010

some fun with C++

Was playing around with C++, and found that you can actually use a base class member function pointer to call functions defined in derived class. Round about way, but useful for implementing stuff like:

Here is an example snippet:

#include ...
class Base {
typedef void (Base::*WhoPtr)();
class D1: public Base {
void WhoAmI() const;
class D2: public Base {
void WhoAmI() const;
void D1::WhoAmI() const {
std::cout << "I am D1" << std::endl;
void D2::WhoAmI() const {
std::cout << "I am D2" << std::endl;
void run(Base::WhoPtr fptr) {
Base base;
int main(int argc, char **argv ) {
Base::WhoPtr func;
func = (void (Base::*)()) &D1::WhoAmI;
func = (void (Base::*)()) &D2::WhoAmI;
return 0;