Saturday, 29 March 2014

Are the boundaries between Software infrastructure for handheld devicesand server side software changing again ?

Around 10 years back, I was lead for a team that took a big (perhaps bloated) communication software component whose purpose was to re-engineer such that we (a) retain existing functionality (b) Implement new concerns of distribution for server side (c) Retain performnace characteristics for server side (d) Target mobile devices with a reduced footprint. In other words turn the space-time tradeoff on its head.

I cannot say we were entire unsuccessful or successful. We could retain performance, functionality and new non-functional concerns. We could cut the footprint to 1/10th but by the time we finished it (a year or so), the requirement on the mobile device footprint came down to 1/4th of what we had achieved. There was enough grinding of teeth all around. But we came to a realization that server side software and software for handheld devices was to be different as requirements were so divergent. All we achieved is that we got rid of bad coding and gained insight into how to optimize code for size. And we started another seperate project to create a new code of the component for mobile devices.

That was 10 years ago. Server side memory was in GBs and handheld devices in MBs. For a volume driven business of devices nobody was willing to take the decsision of increasing RAM & ROM size to accomodated common software as selling price was fixed (by competition) and if Input costs go up, it will only eat into profits. Profits that are calculated when multiplied by millions of units sold. We had learnt our lessons

This is 2014. Smartphone memory of 2 GB is common and 3/4 GB may be about to go mainstream. Though the number of apps have exploded beyond imagination, so has the memory mangement. I frequently see simple apps having sizes in excess of 10 MB. It forces me to think whether our work was far too ahead of times or we just jumped to the wrong conclusion. Today my 1/10th footprint or what we achieved (400K) would be easy to accomodate and not the concern of the application footprint. So can we now say that Server side software and Handheld terminal software have converged ? 

If we look at size, the answer may be "probably yes" in most cases. But there is a new challenge. Energy efficiency. Battery life is the single biggest problem facing terminal side software. Every bit of tuning is useful to prolong it. Though energy efficiency is important on server side too its nowhere on the top and the big focus is to save additional server hardware that is used to scale out the  application. Ofcourse the programming language of choice is different on server (C/C++) and terminal (Java, Objective C or Java like). 

What do others feel ?


No comments:

Post a Comment