Saturday, August 15, 2009

zikr-e-watan (Remembrance of my homeland): by Faiz Ahmed Faiz.

The Maqtaa from a beautiful Ghazal by Faiz Ahmed Faiz: (One of my favorite modern Urdu poets).

"Dayaar-e-ghair mein mahram agar nahin koi
To 'Faiz' zikr-e-watan apne ru-ba-ru hi sahi"

It roughly translates to:
"I dont have anyone of my own in this foreign place, but if I can't talk about my country with anyone, I could still talk to myself"


Lucky guy: at least he knew which one is the foreign land and which one is his country.




Saturday, April 04, 2009

The Books I have read in the last year (Apr 2008-Mar 2009)


Descent Into Chaos, by Ahmed Rashid. A pretty interesting account of the American War in Afghanistan, with very good historical background. I would also recommend the book 'The Dust of Empire' for a wider geo-political background.
The Federalist Papers, by Hamilton/Madison/Jay.
White Mughals, by William Dalrymple. I had blogged about it earlier.
The Third Chimpanzee, by Jared Diamond. A gripping anthropological account of the darker sides of humans and how it can bring about the destruction of the entire race.
The Khyber Pass, Paddy Docherty. The history of the Khyber Pass from ancient Persian-Indian Empires up to the present.
A Thousand Splendid Suns, by Khaled Hosseini. A nicely written novel, but left me depressed for a week.
Oracle Bones, by Peter Hessler. 'A journey between China's Past and Future'. It gave me a pretty good insight (through western eyes) of the Chinese nation and culture. I really liked the way the narrative goes from the present to the past and back to the present, again and again.
Kingdom of Ten Thousand Things, Gary Geddes. A fascinating journey from Kabul to Chiapas, through Afghanistan, Pakistan, China (through the Chinese wild west: Kasghar/Urumqi), the Pacific up to Central America.
The Complete Yes Prime Minister, Jonathon Lynn/Antony Jay. The book version of the brilliant and hilarious BBC Series.
A Random Walk down Wall Street, by Burton Malkiel.
The New Asian Hemisphere, Kishore Mahbubani.
When Markets Collide, Mohammed El-Erian.
Flip!, by Peter Sheahan. 'How to turn everything you know on its head'.
A New Earth, by Eckhart Tolle.
Swami Vivekananda Reader. A collection of speeches and essays by Swami Vivekananda.
Plus, ongoing reading of the Rise and Fall of the Third Reich and Sir Winston Churchill's memoirs.

Sunday, March 22, 2009

The week in review: March 14-21, 2009.

A few interesting things happened this week. Some are trends and some are events that are part of larger trends. Here is a summary:

Political/Economic
  • US: The 90% Tax on Bonuses. This is an amazing over-reaction. True, the public has been outraged at the same executives who they think brought about this financial mess being rewarded for their mistakes. On one hand, I don't agree with the argument that 'These people are the only ones who know how to get us out, because their actions brought us here". But on the other hand, I don't like the Congress taking such drastic measures that account for less than 1% of the bailout money just to express its anger. I am worried about the precedent it is setting and at the speed at which this passed, without almost any debate. One (possibly positive) unintended consequence of this legislation will be that the banks will now want to return the bailout money as soon as they can. This makes us question the 'bailout/stimulus' process. It is too early to say whether the bailouts using borrowed (and possibly, printed) money will work or not. But it is quite clear the bailouts that started in the previous administration will go down as a mismanaged government give-away. For example, there is a report on New York Times about how the education stimulus money is going to the school districts that don't really need them. A deeper question that needs to be answered is whether the political systems have the maturity, power and the will to tackle the restructuring of the economic system that has triggered this latest bout of economic malaise. Or, have we come to a point where the economic forces are beyond the control of any single sovereign political entity? Alan Greenspan, in this Wall Street Journal article, suggests that we are dealing with global economic forces beyond the control of domestic monetary policy.
  • India: Varun Gandhi's campaign remarks. This is interesting: although Varun Gandhi has denied making anti-Muslim comments and said that the video was doctored, he still said (in the denial) that the (Hindu) community is under a siege in its own country. Now, if you read the Urdu newspapers in India, they pretty much say the same about the Muslim community: that they are under siege, under police brutality and under-developed. Assuming both are right (and they may well be); it is giving rise to a very combustible situation where Hindus (~80% of the population) and Muslims (~15% of the population) feel that they are under threat from each other and the government. 
  • US-Iran: President Obama's video message to Iran. This is significant for someone who believes that the United States should begin engaging with Iran directly. The US needs Iran to stabilize the Middle-East. Along with Turkey, it is one of the few countries in the region that has some democracy: it isn't perfect (or even close to perfect), but it has a functioning, stable system. Iran needs to be part of any solution to stabilize Iraq and Afghanistan. The initial response from Iran was on expected lines; but the need for closer engagement is there. A very interesting beginning that has to be followed up from both sides.
I have left the events in Pakistan out of this list; because what happened last week (judges reinstated and other deals) is pretty insignificant in the bigger picture and the possibilities of what can happen there.

Technology
  • Gartner's 2008 smartphone sales data (press release and summary, full report). The report makes for very interesting reading. It pretty much reconfirms the impact of iPhone on the landscape. It also reports a dramatic growth of smartphone sales (69%)in North America mostly driven by iPhone, Blackberry and to a lesser extent, Palm. Windows Mobile sales registered a small growth, but the market-share slightly decreased. But overall, the iPhone juggernaut rolls on...
  • Facebook Connect for iPhone. This is significant, in terms of the merger of the most popular social networking platform with the most popular (and effective) data enabled mobile platform. Other social networking platforms will surely follow (actually, twitter's APIs are pretty easy to use, it doesn't need a special set of libraries). It will be interesting to see how many useful apps or services take advantage of this integration.
  • iPhoneOS 3.0 launch. Significant, because it releases a bunch of features developers and users have been asking for: push notification, system-wide search, copy-paste, MMS, P2P communications, in-app payments, Map APIs, in-app email. I love the fact that as a developer, I get to tinker with the pre-release OS and SDK.
Social/Religious.
  • The Pope's comments in Africa. The comment on AIDs, along with other messages and information that have came out of the Vatican in the past (including the one about exorcism) makes for some interesting analysis. It is quite possible that Vatican is losing touch with reality. Or, it is part of a religious strategy to make Catholicism relevant in the 21st Century and beyond! In a somewhat related story, the British Governments condom campaign has received some criticsm too.

Thursday, March 19, 2009

iPhone OS 3.0: Push Notification is here

Well, it is here. It isnt 'background processing' but a '(re)launch the app on demand': very useful if one is building communication applications. I am now worried about all my installed apps doing popups and sounds, even when it is not needed :)
It will be interesting to see how well Apple's push servers scale: apparently that was the reason why it took them longer to launch this. On a different note, Facebook Connect launched for iPhone.

Sunday, February 01, 2009

How to deal with the lack of background apps on the iPhone?

In a previous post, I had mentioned 'Background Applications' as one of the five requirements of a mobile development platform. But alas, the iPhone doesnt support it (yet). Apple is working on a push based notification system  and announced  beta versions to some select developers. (See http://gizmodo.com/5031559/iphone-developers-get-push-notification-api  and http://www.appleinsider.com/articles/08/07/31/apple_seeds_developer_tools_for_background_conscious_iphone_apps.html)
But what until then? This is the best I could come up with:
1) Send a calendar invite to the users' installed exchange email address. Email and calendar (and the ActiveSync client) run in the background. Just make sure that the meeting time is just a few minutes into the future. Remember to set a reminder.
2) The user will have the phone beep as a calendar reminder.
3) If the user notices and unlocks there is a good chance she can be notified that there is something important waiting for her in your app.

Very clumsy. To make matters worse, the links dont work on the iPhone calendar.

Does anyone else have any other ideas?

Saturday, September 20, 2008

Mobile Development Platforms: a survey

How many mobile development platforms does the world need? One? Maybe two? At most, three?
How many do we have?
Here is my list, in a certain order of importance.
1) Java (or J2ME). This is more of a 'write once debug everywhere' platform, with every phone manufacturer deciding to implement subtle differences in the platform, JSR compliance and behavior. A midlet written for one set of devices (say series 40 on nokia) can take anything between 2-4 weeks to work on another set of devices. Then, we have discoverability issues: most midlets disappear somewhere two-three menu levels deep in the phone menu. The core MIDP APIs fall short for doing complex UI: you either have forms (which are ugly but look equally ugly in all phones) or do your own drawing on the canvas (pretty on one phone but would not work on another). In short, it really makes me wonder why companies are spending so much resources developing J2ME midlets. The short answer, there is nothing better, yet!
Sun has its SDK and simulator for Windows only. Mac users may try out mpowerplayer. The simulator gives a decent debugging environment, but then the developer is pretty much stranded on the actual devices.
2) Symbian: It comes in two major flavors: Series 60 (Nokia) UIQ (Sony Ericsson, Motorola). Series 60 has its series on editions as well, so application writers have to be careful about that. Series 60 is more powerful than J2ME in terms of how much of the device is open to the application developer. But as the charts in http://www.mobref.com/statistics/world/allPlatforms show, Java has a slight edge in terms of numbers. (The reason why the total crosses 100% is because Symbian phones run Java as well). Symbian also has windows based simulators, for both flavors. Nokia's developer ecosystem is pretty impressive (with Forum Nokia, their own application store) which goes to show how serious Nokia is about their developer story.
Now, for the three platforms (OS) with less than 5% of total phone market share. (as of Sept. 2008), but most projections show that it is just a matter of time before they catch up.
3) Windows Mobile: The mobile operating system from Microsoft, with a pretty good development tools.
4) Blackberry: The phones from Research in Motion. The native development environment is based on Java, but the difference is significant which makes me count it separately. Here is a link to the development tools for the Blackberry.
5) Mac OS X (iPhone): Developers can use the iphone SDK to develop and debug applications and then work through the Apple AppStore to deploy it. The development environment is the best that I have used. Of course, it only works on Leopard. Good luck! Applications cannot be put in background, which means it is not the way to go for 'always on applications'. I think that Apple will eventually enable it, once they figure out how to solve the resource usage issues with multiple background applications.
Finally, two notable platforms with enough investment and activity, although they haven't shown much promise in the marketplace, yet.
6) BREW: The Binary Runtime Environment for phones with the Qualcomm chipsets. Mobile developers who want to target the CDMA market in a big way should consider this. The barrier to entry, however, is high, with cumbersome certification rules.
7) Linux: As usual, it comes in a lot of flavors, with some phone manufacturers internally adopting it as the OS. The two notable flavors are Qt (from Trolltech, now Nokia) and Android (from Google), the Android APIs use the Java Language.
Then, there are a few cross-OS platforms
8) The browser : Almost every data enabled phone today has a browser. How well the browser does in rendering web pages varies, though. There is a longer discussion on 'browser as an application platform' below.
9) Flashlite is trying to take Adobe's (formerly, Macromedia's) success in Flash to the mobile.
There is Silverlight for Mobile from Microsoft and Adobe's AIR, but it is too early to say where they are headed. Sun's work on JavaFx is also along the same lines, although I wish Sun spent more time on solving the JSR fragmentation issues. So, these three dont 'count', for now. (If they did, that would be a dozen developer platforms).
On the widgets side, there are a bunch of companies trying to do 'cross-platform' widgets. Yahoo Mobile Widgets (BluePrint) is a platform on top of Java. Opera has its own mobile widgets platform. The Astonishing Tribe (TAT) have their own UI framework, called TAT Kastor. There is Plusmo, there is widsets, and so on. Again, it is unclear where this is headed, including W3C's work on Widgets. The BONDI work from OMTP is on similar lines. Of the above, TAT is particularly interesting, with their relationship with S60 and Android. Opera's Widget work is interesting as well. They recently announced a relationship with UIQ.
Don't the developers need 'fewer' platforms? (The exact same sentiment as in this blog post from Little Springs Design )

So, what should a mobile application developer do?
Here are the options:
1) Try to develop on each platform, with diminishing returns with every new platform to which the application is ported to.
2) Understand your customer: That is, try to find out whether your customers need you to port on hundreds of phone models from at least half a dozen (Nokia, Sony-Ericsson, Motorola, Samsung, LG, Apple, HTC,...) manufacturers with different programming environments, or are you okay just concentrating on top two? Do you need a great user experience (in which case avoid Java), or, is reaching multiple devices more important than having a great application (in which case just use Java). If there is a need to reach non-data enabled device, use SMS.
3) Wait, for one (or two) dominant platforms to emerge. It may become a long wait.

Browser as an application platform.
This is where I spent a few years working on, unsuccessfully. The fact that the browser has been able to give an excellent programming environment is behind the success of the Web. Also, the fact that browser market share could jump from one dominant browser (Netscape) to another (Internet Explorer) meant that the developers did not have to worry that much about fragmentation. Internet Explorer came after Netscape got a dominant market share, which meant IE had to keep bug compatibility with Netscape. Anyone who wants to challenge IE now (Firefox, Safari, Chrome) will have to keep bug compatibility with IE. All good stuff for the developer. Standards obviously helped, but that was not the whole story. Unfortunately, this has not happened on the mobile front.
There is a real opportunity to standardize on the browser as THE platform for the mobile, that is, start with the current implementation of XHTML, CSS, Javascript, plus try to standardize on things that will immensely help the mobile developer: offline browsing (provide some data storage) and access to internal phone data: addressbook, calendar, file system, camera and the menu system. Then, add adequate security options and provide opportunities for mobile operators and handset manufacturers to monetize on that. In other words, the operators and handset manufacturers get to "sell" their interfaces (in a standardized way) to mobile application developers who want the richness. The security issues of a rich and deeply integrated platform probably needs a separate blog post. But security isn't a problem that can't be solved.
Yes, the browser itself will become a commodity (and it should be) and may cause the demise of companies trying to make money just by selling browsers if they dont innovate (think Openwave, think Teleca) or if they dont find anything connected to the browser (say, an SDK or a set of end to end services) that can be monetized. There is still a lot of scope for innovation in the browser itself: in terms of faster network access, less memory and battery consumption, better usability.
There is one problem here and that is a big problem. The current browser based tools do not give the ability to do what I call 'pixel-perfect' UI. The attempt to solve this in a standards based way has failed: with almost no adoption of SVG and the acquisition of Macromedia by Adobe. SVG lost out not for lack of implementation, but for lack of developer tools.
Which brings us to Flashlite, again. I think, among all the platforms, Flashlite has the best chances of making it. It has a dedicated developer community, good developer tools, a presence in major handsets and a viable business model.
The way for the browsers to compete here is not with yet another markup language, but by filling the gaps in HTML+CSS. The markup purists may not like it, but adding HTML tags and CSS properties to do advanced graphics is a good idea. Incremental ideas like border-image CSS property (draft, final version) can give a good path to mobile developers for a better UI experience.

Summary
Actually, there is no summary. The mobile developer has to pay the price of entering a chaotic market. Eventually, all markets mature and this will too. For now, I will advise mobile developers to follow option #2 (that is, select the platform based on your customer needs) and wait for consolidation. In the meantime, I will cheer for a browser based mobile application platform.

Friday, June 06, 2008

My Ideal Mobile Application

This post has been inspired by a similar sounding post: My Ideal Mobile Browser. But I must admit, I had a pretty frustrating week with mobile phones, mobile applications and my mobile data network. And then, I realized that other than voice and SMS, I have not found a single decent usable mobile application for my own use. Web browsing (the Opera Mini, to be exact) comes a distant third. Well, the Openwave Mobile browser is (was) good too. But that is besides the point. I dont use email on my phone, the most I do (when my home internet is down, which will happen often because I happen to live in India), I browse to Outlook Web Access and check my work email, in case something needs attention. I know I will get a phone call if something really urgent comens up. So: email for the phone isnt that useful for me.
A few hours ago, I had a frustrating experience with Yahoo! Go. It claims to be the best Interent experience on the phone! It took several minutes to sign me in (the first time though, the subsequent sigins were faster), and half the widgets didnt work. It didnt have Yahoo! Messenger. That is what brought me to write a list of things that I need from my ideal mobile application. Do note that this list is platform or language agnostic, if you want me (and other users) to use your mobile application, think about these:
  1. Easy and Instant Sign-in: If the application wants me to sign-in, do it once, do it fast, do it in the background (or at phone startup) if you can and get over with it. I dont want to see the sign-in screen ever again.
  2. Cache off-line data: Use the network only to fetch data that changes. If you are downloading the same list (or file) over and over again, it is better to cache it. If you are writing on J2Me, use the record store. If you are a browser app, use appropriate cache-control directives.
  3. Dont drain my battery. This covers a lot of things like not using up CPU, not using too much data (think compression or tokenization, but be aware of the CPU implications), etc. But the bottom-line is, I need to be able to use my phone to talk, when I need it. If your application interferes with it, it will get uninstalled.
  4. Snappy UI. As easy it may sound, this is actually pretty hard. But the application has to visually appeal the UI. So, things like screen transitions and list scrolling need extra attention. This is also tied to memory usage: if the application is using up too much memory, it adverse affects the performance (even for a browser based app) because the memory allocator has to work overtime during low memory situations. Good wait animations go a long way in providing an illusion of snapyness.
  5. Background applications. If the application cant be paused when I am on a call (or checking out the photos) then it wont be useful for me. I am a (at least, I claim to be) a multi-tasker.

Coming soon: my ideal mobile development platform. I could go on with my frustrations with the current mobile development tools.