innovation newsletter

10
India Innovation Newsletter May 2011

Post on 21-Oct-2014

294 views

Category:

Technology


3 download

DESCRIPTION

 

TRANSCRIPT

India Innovation Newsletter

May 2011

1

Index

NBN - Green�elds

Playup - Games

Playup - PSX

Playup HTML Prototypes

Simulation for testing a mobile-based application

Devops in Jigsaw

From SAS EMEA to SAS GLOBAL - How we did it!

CAPAPP

Innovation ####

JBehave Navigations

Database Subsetting using Jailer

Acceptance Tests

Acceptance Test Driven Development

Featured Project: Integrity

OSR (Online Sales Rack) - Sears

A New Beginning

Waat Interview

Dear ThoughtWorker,

Welcome to the first edition of the ThoughtWorks India Innovation newsletter. Innovation is one of the key differentiators that we are known for in the market. The key motivation behind compiling this newsletter is to keep ThoughtWorkers abreast of the various innovations done on projects at a ThoughtWorks India level. We also plan to feature some of the next-generation technologies & state-of-the-art emerging concepts that ThoughtWorkers are passionate about. We all know that tons of innovations keep happening on a day to day basis on our projects and we want to highlight these learnings to various teams at ThoughtWorks. We hope that this newsletter will inspire you and help you to think think out of the box while innovating on your respective projects.

Regards,Editorial Team

For internal use only. Please do not distribute. 2

NBN - GreenfieldsContributors: Puneet Goyal & Jagbir Singh Lehl

What was the need: The client team (some members) were really skeptical about offshoring and the impersonal connect through voice calls was exas-perating the problem. We needed a way to bridge the gap.

What we did: Started conducting stand-ups with the onshore (including client) team on Skype with Video.

How was it useful: Through the video conferenc-ing feature of Skype we were able to create a connect with the customer as well as ThoughtWorks onshore team. The client gradually showed more tolerance towards offshoring, better relations with the Thought-Works onshore team leading to better co-ordination

Playup - PSXContributor:#####

What was the need: ########################################################################################################

What we did: We changed controllers to return only JSON instead of HTML and allowed HAML processing on the client side.

How it was useful: Mobile Web Development was simplified; as now it was a matter only changing the client HAML (and some JavaScript tweaks) but no changes on the Controller.

Did you know? that Balaji Damodaran's cricket based FaceBook app (named Rummy) is very popu-lar among our admin/recruitment folks and some PS folks too!

Did you know? that Prabha Pattabiraman worked on her Bharatanatyam software (with help from Alex and Danny and presented it at XConf?

Playup - GamesContributor : Rajat Vig

What was the need: Since we were working on daemons and Rails applications, sharing data model definitions and migrations across services was becoming an impediment to delivery.

What we did: We used a GEM for sharing data model across services.

How it was useful: We combined the models into a GEM allowing us to reuse the code across Rails and daemons

Playup HTML PrototypesContributors : Mubasher Nadeem & Amitendra Chauhan

What was the need: A mechanism to share the HTML prototypes across geographies for review and feedback. What we did: We used ProtoShare; an online prototyping and collaboration tool.

How was it useful: Being an online collaborative tool, the static interactive HTML prototypes created with ProtoShare were available to ThoughtWorks and PlayUP teams across geographies for review and feedback. The prototypes helped in sharing a common understanding amongst distributed teams. The prototype was also used as a reference for stories, to provide more context. This online tool was easy to learn and use.

3For internal use only. Please do not distribute.

Devops in JigsawContributor: ####

Chanting the DevOps automated deployment mantra, we did the following so as to make things neater in terms of best practices:

1. Replacing cron jobs with Rufus-Scheduler2. Externalizing application configuration to a file rather than system environment variables How it helped: It helped in easier mainte-nance, faster deployment and as a team we were able to give continuous releases.

Simulation for testing a mobile-based applicationContributors: Prashanth Narasimhan & Ramesh Rajamani

What was the need: CycleTel is entirely an SMS based application. We had to have a SMS gateway provider interface to build that would handle all mes-sages coming from users and send appropriate responses. Since we did not have a SMS gateway provider finalized, we did not have a test account to connect to.

What was done: We ended up mocking that with 'Fake SMS'. This was a simple test page that would receive the message from the user, route it to the interface and get back the appropriate response from the application.

How it helped: Testing the application from a simulator test page was more intuitive than from the back-end. It also helped us capture certain details like messages not being split properly, messages getting garbled, application not being able to handle other languages etc.

From SAS EMEA to SAS GLOBAL - How we did it!Contributor: ##########

What was the need: Being an integration project, we had to build our application to interact with 4 different sources/systems. Each of these systems was being developed by different sets of client teams across the globe. The challenge was that these systems behaved in a unique way for different coun-tries supported by our application. Initially, with one or two countries in the app, we had written dedicated code for each country. But with more number of coun-tries coming in, we realized that this approach was going to be tedious.

What we did: We built a framework that would take in just a set of database configuration for the new country and work with all the interaction points smoothly. This includes information like screen configuration on the UI, how to read data from one interaction point, how to pass it on to another and how to invoke another interaction point.

How it helped: This saved us a lot of dev/QA time. This was well recognized by the clients, that what we served for EMEA region can now be extended glob-ally, with adding just db configuration scripts that finishes major junk of the integration!

Did you know? that Boojapathy Chidambaram wrote an article in Jan 2011 that appeared in Groovy Magazine?

4

Did you know? that Sumana Biswas and Sridevi Ramoo, our recruitment folks, have been attending Agile Foundation sessions to learn more about how we work?

Did you know? that Sudhakar Rayavaram, Rekha, Kalarani, Yekkanti Kishore, Ananth Kasill-ingam, Vivek Raghunathan are working on Android Apps? Few have been released to the market too. Some of them have started sizing and responding to Android proposals.

For internal use only. Please do not distribute.

Capability ApplicationContributor: ######

The Capability application is geared towards increas-ing focus on developing individual capabilities of all Thought Workers in Chennai. It is a tool where people can answer a few questions, which provide insight on the individual's expertise. The reports will help us to know where we stand as an office with respect to customer engagement. It helps to identify the gaps for different roles, which helps to plan further steps in improving the same. Further plans to add feedback in the application for the sessions conducted based on the areas, which were planned to be improved.

JBehave NavigationsContributor: Aman King

What was the need: Navigation between JBehave stories and Java step implementations was cumbersome.

What we did: Wrote an IntelliJ Idea plugin that made navigation easier. You can check out the code at http://bitbucket.org/amanking/jbehave-bdd-plugin

How it helped: ############################################################################

Database Subsetting using JailerContributor: Ajit Joglekar

What was the need: We needed a local database for working at offshore as production data was getting replicated on to dev databases daily during offshore hours. This hampered the productivity significantly.

What we did: We created a local subsetted database to provide stable instances for devs and QAs using an open-source tool known as ‘Jailer’. You can download it at http://jailer.sourceforge.net/

How it helped: This required considerable on-going effort but we managed to have a local database, which helped us in regaining the lost productivity.

Story GroupingContributor: Manjari Sharma

What was the need: At the time of inception, we realized that the business was not exactly clear about what they wanted and there was not enough informa-tion available to come up with a Master Story List just yet. The features were at a high level, and were not sufficient for us to plan the iterations or estimate. Also, the business didn’t have time & was not able to prioritize at the story level.

What we did: We came up with “Chunks”. Chunks are a group of stories relating to the same area of functionality. They have almost the same size and fit in one iteration. The idaea was that the business would only prioritize chunks & not stories.

How it helped: It ensured that at the end of an iteration, the business was delivered a complete piece of functionality and not just a set of possibly unrelated stories.

Did you know? that Ashish Kumar Mishra created a Youtube extension called Smart Video, which has more than 24,000+ users (out of which 4,500 are on Firefox and the rest are on Chrome)?

Did you know?that Ramanathan Balakrishnan presented his ZFS talk at XConf Bangalore based on the work he tried to introduce in his project?

5For internal use only. Please do not distribute.

Cutting Edge Testing Contributor: Anay Nayak

What was the need: In the C4 project, the CMS (TeamSite) has been enhanced to allow building a page through a module-picker, which allows the Editor to choose components that would define the page (such as Related Links, Latest News etc). While this approach provides tremendous flexibility to the editor, in our application, the existing framework tightly coupled the view (StringTemplate) and the model (content defined by the Editor) to the selected module. These modules (teamsite + business logic + view files) are shared and used by different teams to build & support multiple websites.

What we did: We now have acceptance tests, which verify existence of different page elements through xpath. These are similar to db-based tests, which insert test data and verify the content rendered on the page by the st files. They run very quickly and give us instant feedback about any changes done to the modules by other teams.

Acceptance Test Driven DevelopmentContributor: ######

We practiced Acceptance Test Driven Development for automating the automatable functional scenarios, wherein Quality Analysts paired with Business Analysts and the business and determined the requirements and converted them into the Behavior Driven Development functional scenarios using the “Cucumber Framework”. The same functional scenarios were picked up by the developers and they developed the feature based on the steps mentioned in the Cucumber scenarios.

At the same time the Business Analysts and the business also went through the scenarios, which helped them to understand the behavior of our appli-cation. The strong collaboration between Quality Analysts and Developers helped us to automate the 100% of the automatable acceptance and edge case scenarios, which turned out to be a great success.

Did you know? that the Finance team has moved from Tally to PeopleSoft, thus being able to pull reports 50% faster? Also the Recruitment team has moved from Lotus Notes to the very cool Avature platform? And the IS team have moved our infrastruc-ture environment to a more stable data centre at Sify.

Did you know? that Puneet Kataria & Sapna Singh for the 1st time ever, created a “User Experi-ence Zone” at the recent Martin Fowler event, where they simulated the ThoughtWorks office environment, and thus got a tremendous response from the attend-ees of the event.

Did you know? that Srihari Srinivasan runs an aggregator website called “Systems We Make” which has garnered more than 35, 000 page views in just 5 months!

Did you know? that Anush Ramani contributes to Step Up Travel by helping governments across the world improve tourism in the rural sector and also by generating tourism analytics.

6For internal use only. Please do not distribute.

7

Featured Project: IntegrityIntegrity Digital Solutions is a 8-person start-up based in sleepy Temple, TX. They got engaged with Thought-Works to develop a revolutionary Electronic Medical Record (EMR) product for Eye practices in the US. This makes Integrity a player to reckon with in the niche Oph-thalmology EMR market.

Integrity will probably be the only specialty EMR product that offers an intuitive, cloud-based solution with very little start-up costs for doctors to get up and running. This, in an industry where the norm is a high installation cost and thick client applications with ugly user inter-faces, is a good place to be. The window of launch of the product is designed to allow doctors to take advantage of the HITECH Act, which offers a $44K reimbursement for EMR implementation. Below listed are the new things that was done on this project:

Use of Ramdisk to reduce integration test times

Our integration tests (that are part of the dev build) were particularly slow to run (a limitation of the tech stack). After trying a number of different methods to reduce build times, we had a 22-minute dev build. We decided to use the excess RAM on the laptops to run the build and reduce build times. Using RAMDisk software, we were able to mount some RAM as a separate volume and run the tests off this. The entire code and infrastruc-ture are mounted on RAM. This reduced our build times to about 12 minutes. (Bharani)

Use of screen capture tools and narrations to explain scenarios and questions to SMEs

Being a distributed project, our SMEs were remote. Often, our only interactions would be through emails and the occasional Skype chat. While this worked, some-times, emails were misunderstood and caused even more emails to fly around. Until we started using screen capture software with background narration (We used Jing) to walk SMEs through the different scenarios. Our application being fairly UI heavy with a lot of screen elements, this proved very helpful to have our SMEs understand our queries correctly and give us an answer accurately.

Large visible release planning wall to aid SMEs in visualizing the breadth of scope of the prod-uct and to view relative feature priorities

Towards the end of our first release, we were busy discussing the future development roadmap of our prod-uct. The SMEs were having a lot of difficulty visualizing the different features and prioritizing them relative to each other in a timeline. Our onsite team came up with a huge physical release-planning wall with the cards having just enough detail so that the SMEs could look at it and physi-cally move things around. This helped them get a much better picture of the big picture and in the end resulted in much better prioritization decisions.

Ipad compatibility - code splitting

When initially started, the ipad was not one of the supported devices on which our app was designed to run. However, it became an important device to support, espe-cially since it has a lot of traction in the medical profes-sion. Our app is a GWT AJAX app, so a lot of JS code is downloaded when the app runs for the first time. We found that our app crashed in the ipad browser because of the size of the JS code being downloaded. We resolved this by code splitting - essentially downloading only part of the JS when the app started up. When the user would browse to other tabs, the new JS for these tabs would be downloaded and the JS for other tabs unloaded. This helped keep our browser memory consumption low and enabled our app to run on the ipad and be showcased at an important industry conference; which was a huge success for our clients.

ToUI and FromUI (aspect oriented programming)

Instead of writing code to create domains from models we came up with a AOP script that would automatically create domain given the model. This reduced a lot of boilerplate code both in the model and in the domain.

Skype channel to discuss issues and have a common chatroom for the team

We were facing a lot of issues with communication between our distributed development teams (we are a co-sourced distributed development project spread across Chennai and USA). After trying many different things, we converged on creating a common Skype chan-nel to keep the communication flowing. Team mem-bers would post important changes they made on to the Skype channel as well as post questions to leverage the hive mind. We also found that this increased the com-munication within the team (which had suffered a little bit when the team ramped up by nearly 100% over a period of 1.5 months).

Build parallelization

We had a regression test suite that ran for about 2 hours. This delayed the feedback that developers required. So, in trying to reduce the build times, we decided to parallelize the setup that runs the regres-sion tests. We created another Hudson instance and ran the regression on the slave process. We also overcame some issues relating to Firefox crashing when too many Twist instances were run in parallel by allowing some time between instances of Firefox starting up. This parallelization allowed the regres-sion test to complete about 50 minutes.

X.509 certificate based authentication

We have a link device that is co-located in the prac-tice LAN. This device needs to communicate with our application that is deployed in the cloud. We initially thought of securing the channel by using a standard username/password but dismissed the idea due to security concerns. We solved this by issuing a self-signed x509 certificate and only distributing the public key to the link device. This way we could securely manage the communication channel between the link and the EMR application on the cloud

For internal use only. Please do not distribute.

Online Sales RackThe idea was to consider how we could partner with Sears and provide them with 'ideas' that could be converted into a solution in a short span of time. This would have to be a solution that will give them an edge over their competitors. The challenge was how to make the sell.

We came up with an approach of making a sell with a quick prototype, which gives something tangible to the stakeholders to play with. Also OSR was the first idea that we presented to Sears amongst others. OSR is an iPad app that intends to provide a very user engaging experience to a shopper, getting him/her to reach what they want to buy quickly. The coolest part of the project has been coming up with the prototype. A lot of people came forward and contributed to the prototype on their personal time. Sears was very excited with the idea.

In the first release, the target customer base was women; helping them with shopping apparel. We will be going live end of May 2011. We are also building Targeted Content Platform, a backend that will have the provision to cater to multiple front-ends, OSR being one of them.

Did you know? that Vinay Venkatesh & Pavan K Sudarshan have created a “Scenario Analyzer” on Twist as a pet project, which goes through all the tests in a test suite and allows you to weed out dupli-cates. Vinay also created Twist scenarios, which would fill in his time sheets.

Did you know? that Sudhakar Rayavaram, Kishore Chakravarthy and Krishnaswamy Subrama-nian are working on an RFID based library book checkin/checkout system?

Did you know? that Jaya Chakravarthi and Arvind Srinivasan recently shared knowledge about testing mobile apps at the Chennai office?

Did you know? that Preethi Dasa recently made a video in Kannada for SIMPA’s end users, thus setting an example on how we can go the extra mile for the customer. SIMPA is a client under our SIP program.

Did you know? that Sharath Kumar has submit-ted articles to InfoQ, Tejas Dinkar has been in the core organizing committee for FOSS for the last 7 years, Tejus Datta presented at the Microsoft Microfi-nance Leadership Summit & IS Ram runs an open source environment called Belenix.

8

Featured Project: IntegrityIntegrity Digital Solutions is a 8-person start-up based in sleepy Temple, TX. They got engaged with Thought-Works to develop a revolutionary Electronic Medical Record (EMR) product for Eye practices in the US. This makes Integrity a player to reckon with in the niche Oph-thalmology EMR market.

Integrity will probably be the only specialty EMR product that offers an intuitive, cloud-based solution with very little start-up costs for doctors to get up and running. This, in an industry where the norm is a high installation cost and thick client applications with ugly user inter-faces, is a good place to be. The window of launch of the product is designed to allow doctors to take advantage of the HITECH Act, which offers a $44K reimbursement for EMR implementation. Below listed are the new things that was done on this project:

Use of Ramdisk to reduce integration test times

Our integration tests (that are part of the dev build) were particularly slow to run (a limitation of the tech stack). After trying a number of different methods to reduce build times, we had a 22-minute dev build. We decided to use the excess RAM on the laptops to run the build and reduce build times. Using RAMDisk software, we were able to mount some RAM as a separate volume and run the tests off this. The entire code and infrastruc-ture are mounted on RAM. This reduced our build times to about 12 minutes. (Bharani)

Use of screen capture tools and narrations to explain scenarios and questions to SMEs

Being a distributed project, our SMEs were remote. Often, our only interactions would be through emails and the occasional Skype chat. While this worked, some-times, emails were misunderstood and caused even more emails to fly around. Until we started using screen capture software with background narration (We used Jing) to walk SMEs through the different scenarios. Our application being fairly UI heavy with a lot of screen elements, this proved very helpful to have our SMEs understand our queries correctly and give us an answer accurately.

Large visible release planning wall to aid SMEs in visualizing the breadth of scope of the prod-uct and to view relative feature priorities

Towards the end of our first release, we were busy discussing the future development roadmap of our prod-uct. The SMEs were having a lot of difficulty visualizing the different features and prioritizing them relative to each other in a timeline. Our onsite team came up with a huge physical release-planning wall with the cards having just enough detail so that the SMEs could look at it and physi-cally move things around. This helped them get a much better picture of the big picture and in the end resulted in much better prioritization decisions.

Ipad compatibility - code splitting

When initially started, the ipad was not one of the supported devices on which our app was designed to run. However, it became an important device to support, espe-cially since it has a lot of traction in the medical profes-sion. Our app is a GWT AJAX app, so a lot of JS code is downloaded when the app runs for the first time. We found that our app crashed in the ipad browser because of the size of the JS code being downloaded. We resolved this by code splitting - essentially downloading only part of the JS when the app started up. When the user would browse to other tabs, the new JS for these tabs would be downloaded and the JS for other tabs unloaded. This helped keep our browser memory consumption low and enabled our app to run on the ipad and be showcased at an important industry conference; which was a huge success for our clients.

ToUI and FromUI (aspect oriented programming)

Instead of writing code to create domains from models we came up with a AOP script that would automatically create domain given the model. This reduced a lot of boilerplate code both in the model and in the domain.

Skype channel to discuss issues and have a common chatroom for the team

We were facing a lot of issues with communication between our distributed development teams (we are a co-sourced distributed development project spread across Chennai and USA). After trying many different things, we converged on creating a common Skype chan-nel to keep the communication flowing. Team mem-bers would post important changes they made on to the Skype channel as well as post questions to leverage the hive mind. We also found that this increased the com-munication within the team (which had suffered a little bit when the team ramped up by nearly 100% over a period of 1.5 months).

Build parallelization

We had a regression test suite that ran for about 2 hours. This delayed the feedback that developers required. So, in trying to reduce the build times, we decided to parallelize the setup that runs the regres-sion tests. We created another Hudson instance and ran the regression on the slave process. We also overcame some issues relating to Firefox crashing when too many Twist instances were run in parallel by allowing some time between instances of Firefox starting up. This parallelization allowed the regres-sion test to complete about 50 minutes.

X.509 certificate based authentication

We have a link device that is co-located in the prac-tice LAN. This device needs to communicate with our application that is deployed in the cloud. We initially thought of securing the channel by using a standard username/password but dismissed the idea due to security concerns. We solved this by issuing a self-signed x509 certificate and only distributing the public key to the link device. This way we could securely manage the communication channel between the link and the EMR application on the cloud

For internal use only. Please do not distribute.

Mobile App Development Contest at Bangalore

The worldwide market for mobile application develop-ment is buzzing and keeping this in mind, we ran the Mobile Application Development Contest at TW Bangalore; so as to trigger and kick start capability development in this area. We had 10 application submissions across various platforms (iOS, Android, WP7) and are in the process of announcing the winners. Each team is being evaluated on various parameters such as usability, market potential, code quality, automation, technology & robustness.

Thanks to Prakash Subramaniam, Nandha, Jive, the Evaluation Team and everyone else involved in driving this initiative. Please note that these applica-tions are prototypes and currently are works in progress. Please send in your feedback to the respective teams, so that they can improve their application.

Smart Shopper: This iPhone application synchronizes your shopping experience/shopping list with a group of people; developed by the team com-prising of Lucy Kurian, Hari B, Mahadeva Prasad & Balaji Devarajan.

Go Feeds: This Android application is a Continuous Integration tracker or a feed reader for Go feeds that the Go server publishes; developed by the team comprising of Rajesh Muppala, Anandha 'Jake' Krishnan, Sachin Sudheendra & Adarsh.

Video Trimmer: Unable to edit videos on your cell phone? This application allows you to edit mobile videos on the fly; developed by the team com-prising of Kiran Pratap, Rayala Udayakumar, Kaushik Chandrashekar & Satish.

Blip It: This app uses geo location data to help people who are in need by channeling aid through various service providers; developed by the team comprising of Kalyan 'Buddy' Akella, Diptanu Choudhary, Chetan Venkatappa & Kiran G. The team posted this idea on the Mobile Active user forum, and have got many positive responses from humanitarian & philanthropic organizations.

Panacea: This picture application uses real time face recognition technology & lets us leverage

augmented reality in the enterprise; developed by the team comprising of Ritesh Nayak, Navneet Kumar, Manohar Akula & Nikhil Nulkar.

App Market: This Android based application gives the user valuable insights by combining the data from the app market and elements of social networking; developed by the team comprising of Alok 'Luka' Simha, Venkatesh Munireddy, Nandhaku-mar Ramanathan & MLN.

BuildMonit: This application has been exclusively developed on the iPhone platform and lets you easily monitor your continuous integration server Go; developed by the team comprising of Arvind Kunday & Usha Chinnathambi.

Proximie: This application is a location based messaging system that sends you alerts based on which location you are at; developed by the team comprising of Pradeep Sashidhara, Avinash Chugh, Vineeth Venudasan & Jijesh Mohan.

Kannada 4 Android: This application uses Optical Character Recognition technology to under-stand regional languages such as Kannada, devel-oped by the team comprising of Rajeev Nair, Hariharan T, Shriram Sridharan & Antony Raj. The team has presented this mobile application at “Mobile Camp Bengaluru” at IIM Bangalore and have also been featured in Bangalore Mirror.

Salta: This application allows you to access your contacts on the cloud and thus enabling easy and real time contact management; developed by the team comprising of Amiruddin Nagri & Rajveer Singh Rathore.

Congratulations to all the teams and coming up with these applications and may the best team win.

This newsletter was compiled by the blood, sweat & tears of

Chetan Agarwal

Rajiv Mathew

Sanjay Sudhakar

Mukesh Kumar

9For internal use only. Please do not distribute.

The Editorial Team