Make sure there’s no dirty picture – Have a good big picture!

Few years back I had worked with a Japanese customer for a health care imaging project at their site. I was relatively new to the domain. Most of the development team was there in India.

We had some solid requirements and prototyping on some new features. I had demonstrated one of the prototypes integrated to the product which essentially play back the images aligned to the ECG cycle acquired from the cardiac patient. The feature helps the sonographer to export the data as AVI. I simply tested the feature and quickly setup the demo as we’ve already crossed the deadline. Things were working just fine. This I had already seen in the prototype earlier. Fine. I demonstrated the feature successfully and was happy about it. I requested him to to try the new feature to get more feedback from him. He happily took over the system.

He simply registered a patient, then acquired the images along with ECG. He went on reviewing the acquired images, then he exported the cycles as AVI to the patient. He quit the application and opened the patient browser if appears under the current patient. Yea it’s there. I dint feel anything bad when he registered one more patient and start the application again. (Application won’t quit, it will be residing in memory always. They simply hide the window and release the resources and keeps on waiting for commands from parent application). He did the very same procedure again. It was working I was happy again. The progress bar has been displayed again and finished the export. Then he took the patient browser once more. Surprisingly the data wasn’t there under the current patient.

As I knew the code base well, I figured out within seconds what made it to disappear the data. I told him “I’m sorry, the new patient event not handled well. The code isn’t resetting/replacing the patient ID with new one. I can fix this. It’s just one line modification” and I was about to go back to my desk to modify the source.

He stopped me and smiled and explained, “Sarath-san, are you realizing that this is a serious security issue?” I could not fully understand what he really meant with security issue.

I did not reply. He continued “For programmers, it’s a one line code modification which takes to fix this issue. But think from a customer perspective. If you went a hospital with some small chest pain and the next patient is coming with some serious cardiac problem and what if his data being exported to your ID, then the doctor gives you the wrong treatment?”

The example was perfect. I could not think of a major heart surgery because of a system/sonographer’s mistake. That was kind of eye opener. Even after all these years I still remember the story.

Most of the time, programmers are either instructed to do some part of the code without having understanding of the impact. To make and maintain better software, it is also important to understand what is the big picture. What is the real impact. Always remember the issues being found during the development time is easy to fix, once it’s delivered to the customer site, the cost will be N times more, depends on the number of customers we’ve and the cost of deploying the patches. It starts from requirement capturing to implementation. It’s responsibility of the person who captures the requirements to test/inform the major uses cases, aspect and impact of the features. On the other hand, when we’re implementing something, it’s solely our responsibility to properly understand the requirement, big picture of this requirements and the impact area. It’s equally important to do regression testing to make sure that the existing functionalities aren’t broken.

When less competent people leads these activity there’s a high chance to have the information in pockets and do not explain the requirements properly to make sure that they’ve better control over the project (trust me, there are people). But that is actually making the product and themselves worse. Also it’s developers responsibility to bug the people enough to get maximum information and clarify the requirements.

Software is free but the service!

If you’re not embraced by cloud, soon you gonna be. There’s a huge shift from the conventional way of doing Internet and Software business. Few years ago, Internet was not really widespread in an countries in the world.

We heard of Browser war few years ago. Without any good reasons Google has started it’s Chrome browser development and the version number is changing like anything within the short period of time. Why they’re so serious about it? They’re building a platform which can acts as career to their service. Even they’ve introduced a computer which purely based on a browser and enable the users to browse Internet, Play Games (WebGL), Rich Internet content using CSS 3 and HTML5.

There are several early adopters which embraced the cloud like SalesForce, Amazon, Google, Microsoft etc. They’re the major players in this area. Amazon is basically a cloud infrastructure provider and they’re using their own technology to buildup their main business.

Few years ago the software business was really simple. Some companies will develop some Software either paid or free. They deploy it to the customer through CD/DVD and customer install and use it. The vendors provides support for a fixed period and they will introduce the next version of Software and sell it again. You’re blessed if they give some discounts on the new product.

Now the mobile devices are boomed like anything. Thanks to Apple for reinventing the Software and Hardware business. Each of the post PC devices which Apple has introduced were revolutionary. iPod changed the way people listen, organize and purchase music. Apple has reinvented the music business to a new extend. It was quite different from the previous way of selling albums and songs. User has got the freedom to buy music for cheap price and that was a good step against piracy.

iPhone has changed everything again. People have seen really smart touch devices ever since BackBerry. This is business was quite different from the way Nokia, Motorolla and other vendors did the business. Once a hardware is sold, the company has no big relation with customer other than in terms of customer. Nokia had several devices which far known for it’s spec including TV out, GPS, Maps etc. But this could not generate any money for the hardware vendor. Apple’s business model was simple straight forward and entirely new. The company has built up a world of digital content which is available for the devices they sold across the world. The app store was really good for the unknown developers and small companies to sell their product effectively. It reminds of old Dell’s strategy which allowed accessories vendors to sell their product through Dell website.

We’ve seen tablet computers in different form. Most of the time it was actually just a scaled version of a PC. None of the customizations are made for the tablets. The touch devices has changed everything and Apple made the better experience of iPhone in a better and bigger landscape. Nobody was really able to figure out what to do with the new device. But later they realized that whatever they’re doing in a PC can be done better and efficient in an iPad like social networks, photos, videos etc. Games and other apps are made use of the size available and people started making the content in the form of magazine for iPad.
A revolution has started there. The content publishers made their magazines specially for iPad. They could override the limitations in reaching the audience world wide as it’s delivered through Apple’s content distribution channel. The subscriptions were competitively priced and made available for the users.

The revolution is not really happening around tablet and mobile devices. Companies like DropBox (online File Storage), Evernote( note taking application), RememberTheMilk(task Organizer, Gmail, BaseCamp (37 signals’ project management software), Google Docs etc. are the some examples of cloud services at least for the general audience. The user computers are just acting as a view and it can be rendered across and hardware platform and form factor according to the user needs. For example, evernote has apps for iPad, iPhone, Android, PC, Mac etc. The service is synced across devices. The content is heavily depend on the server and has to make sure that device is connected online for proper synchronization.
Software and Storage as services helped the users to make their content available at server and make it available across device instead monotonously keeping in a single machine.

If you notice, the client software provided by all the services are free. No need to pay a penny but the features and services are paid. For e.g. RememberTheMilk has too many limitations for the free version. We’ve to subscribe for the pro service to get the best experience across the devices. This is a new way of doing business. Instead of getting users one time, they’re keeping them attached for long time to generate revenue. All the cloud services are heavily dependent on such business models.

But this has some disadvantages also. Companies putting high amount of subscription charges for the users. The companies like NYTimes.com are making the free content available in a PC as a premium content in Mobile and Chrome Web App. Also the services are not competitively priced. If you ask me, if I am ready to pay 100$ per for few subscription, I wont opt that because the value of money is different across countries and continents.

Your hardware gonna be light weight and heavily gonna depend on server. The other advantages of the cloud softwares are, they’re not really affected by piracy, deploying the new version of software is easy and less painful. But the cloud is the future go and embrace it.
iCloud is the going to be the next Google – (minus) Web. They’re really going to make a snapshot of digital content of this world except web. Waiting for iCloud!

Why does Apple not allow Flash on iOS Platform?

This is a question being asked several times by several people across the globe. My take on this. My reply on this interesting questions can be found in Quora [http://www.quora.com/Why-does-Apple-not-allow-Flash-on-the-iPhone-or-iPad]

Apple has a very clear strategy on the OpenWeb. That’s the reason they made WebKit as an open source project which fuels both desktop and mobile browsers.

Why flash isn’t supported in iOS is like why Apple is not supporting SilverLight which is a Microsoft equivalent of Flash.

History of Flash business
The web became so popular in the last decade and the standards remained same. Since most of the browsers comply the standards of HTML, developers faced increasingly complex to meet the high demands of Rich Internet Applications. That’s how the companies like Macromedia started implementing the flash across the web. The Internet hadn’t much video and audio content before and mostly the flash was started using for impressive ads. If you check the flash history in Internet a couple of years back you can see that it was mostly used for ads and creating contents like greeting cards, flash based small games etc.

When the Streaming market started Evolving with YouTube, again the incapability of browsers had came to picture. They were not capable of displaying content. There it started the saga of flash based video players.

Once after Adobe acquired Macromedia, the strategy for Flash has been made more in to web. Companies like Microsoft created rivalry platforms like SilverLight to integrate their .NET based code in to web. But it was mostly done by copying Flash itself.

Now the increasing number of plugin ecosystem made the open supporters of web to think about improving the standards of web to demand the high customer request.

The streaming sites like YouTube are paying huge amount of money every year to making use of Flash Video codec. If the inability or weakness of a legacy system helping someone to make the business, it will not last for long time.

Apple’s strategy
Apple’s has already mentioned that Flash is number of bugs and it’s quite ineffcient to work with a mobile platform. Adobe was not really serious about the mobile platform till then. I have brought a Dell Mini 10v for me sister last year. The flash video in that device was simply sucking. Frequent flickers and low frame rates made me cray about the device and I finally blamed Dell not Adobe. It could have affect the reputation of Apple. Apple so strict about the functionality they’re providing. They choose a proper blend of features and make sure that it works. On the other hand companies like Nokia implement all the latest technologies in to their hardware and not really bothered about it works or not. Still Adobe is struggling to deploy Flash in the mobile platform. Even Android supports flash, it’s not really supported in all devices. It only supported in the high end devices.

CPU/GPU Utilization and battery life
Nobody has doubt on the CPU usage of Flash under any platform. It’s quite important for companies like Apple to sustain battery life maximum possible for the devices.

HTML 5
Web must be implemented with open standards. The business model of flash required to reconsider for future. Microsoft already cleared air about Silverlight and HTML 5 strategy[ Posted in essays | Tagged , , , , , , | 1 Comment |