Find the Blind – Project.

Lately, I’ve been contributing to this project ‘Find the Blind’, developing a technical solution to one of its functions. This has been a part-time thing that I’ve been working on along with my friend Deepan Subramani (developer at Thoughtworks), who has decided to help in his spare hours. This project is very special to me personally, and I’m sure this could help improve, in its own little way, the way we use technology for improving healthcare in rural areas.

This article serves two purposes:

1. We’re announcing it publicly, so it pushes us to deliver  (since we’re all working part-time on this).

2. It is also an effort to attract like-minded people to come along and help us with the project. Contributions are required on all fronts, especially technically and financial sponsorship-wise.

So, here we go..

Find the Blind is a project undertaken by Dr. Ashwin Mallipatna to detect and treat visual defects in children at a very early stage, especially in rural areas. More about this effort here.

Visual defects not detected and treated at early stage can later lead to severe consequences, total vision loss being one of them. This affects the overall future of the country with many youngsters coming out with visual defects, that could have been treated. With this vast a population, it poses many challenges to detect these defects at an early stage. This project tries to solve this problem with a social strategy involving village panchayats and schools in the overall setup.

With the above introduction, I move on to the technical point. There are two areas which need some technical intervention.

One, with the detection of the defect itself. Medical instruments are very costly and mostly static (stay in one premise). Portable ones have low degree of accuracy and aren’t suitable for rough handling. To solve this, the team went with an innovative Red reflex screening method, where an inexpensive digital camera with the right parameters and subject conditions is used to take appropriate readings. This strategy was well received and was recognized as a technology innovation by MIT’s publication. You can read more about it here.

Second part is location part. Since rural areas aren’t well connected, it becomes difficult for a team to keep track of all patients identified and  schedule visits  for regular check-ups. It is essential to have a system that can help locate a patient’s house and also allows access to patient’s information for viewing and modifying.

This is where our technical solution comes into play. Here are few brief details regarding the solution:

It involves an android based smartphone/tablet, which the health-worker carries. Our application deployed to the device would help the health-worker to locate the patients by giving out directions to the patient’s address. It also acts as an offline data collection tool, which the health worker uses to gather health information about the patient. Later the patient’s health details gets uploaded to the central server. The back-end patient system is build with django/python and will be the central store for all the information. The data exchange between the android client and the django server is in json format.

The two of us, I and Deepan, have just started implementing the above mentioned solution and looking to finish in the coming month or two. We should be able to get it up and running by the end of July to beginning of August.The project will undergo a pilot till the end of this year in a village near Bangalore, and (after its success) will be launched for use in other parts of the state.

It is going to be an extensive effort on part of everyone involved, and we’ll try our best to pull it off the best way we could.

If you’d like to contribute in anyway possible to this, please write back to me at satya[at] stating the way you’d like to contribute.

Note for contributors:

We’re looking for contribution primarily in the following areas:


1. Developers on android/python/django platform.

2. Architects to help review the solution design.

Financial Sponsorship:

3. To procure hosting environment. We’ll probably go with EC2.

4. Android devices. One tablet with GPS and one/two smartphone.

Social Project Execution

5. We’d need some project co-ordinators to help with the social activity.

Keep an ‘A’ player engaged

In my previous post An ‘A’ player in ‘B’ team, I touched upon few options that one has when he’s put in an average to sub-standard team. One of the options was to leave for a better option.

As organizations, you want more and more ‘A’ players. They’re the guys, you can throw into any situation knowing that they’ll take care of it. They sniff opportunities when others are pondering over the problems. They bring energy and momentum even when situations seem dark and bleak.  Its hard anyway to find one, when you do.. letting them go is obviously not the wisest of  things to do.

Typically, they struggle in larger organizations because of all the politics/bureaucracy that precedes any decision making process. And the word ‘process’ itself is kind of a metaphor for killing innovation within the company. People are mostly rewarded for doing average work, not extra-ordinary things. It discourages a good talent to keep engaging himself in company’s growth and activities.

So, what do you do.. to retain them, and keep them engaged.

1. Give them some space.

2. Opportunities to innovate.

3. Accept failures.

4. More responsibilities to execute.

5. Provide them good team to nurture and guide.

6. At times, keep them away from the bureaucratic BS.

7. Pay well. Don’t restrict them to bands.

The list is not exhaustive, but certainly ample to help you retain him long enough. As is generally said, a good programmer can be ‘X’ times more productive than average one (with X ranging from 10 to 100.. and at times infinity too).

the new attrition problem..

Top companies are having a new attrition problem.. with start-ups. Many of their top developers, are choosing to work with smaller companies, even for lower pay (at times no pay). The primary reason being the challenge and innovation that comes along with being associated to a start-up.

This is not really a problem, actually.

They’re creating a brand for you. And, at the rate that start-ups fail, may always come back too. In either case, they’re an asset to your organization, irrespective of whether they’re with you or not.

1. They increase your brand value (for developers)

It tells other developers that this is the company that gives enough confidence to be able to start on your own. After my first start-up, I was looking for a company where I could feel more at home. I chose Thoughtworks at that time, specifically for the same reason. The culture, thought process and perception is very entrepreneurial. That is the reason I could take the plunge again into starting up. Had that not been the case, I’d have worked at an uninspiring place, killing most of what confidence and imagination, I had left at that time.

2. They form the ‘culture’ within the organization

Entrepreneurial behavior is very contagious. People who exhibit those behavior tend to be leaders. They inspire, motivate, act accordingly and form the basis of your org culture. They drive innovation at workplace and positivity just oozes out of their personality. All these traits are not bad to have in an organization.

3. They’re resourceful and get stuff done

Goes without saying. They might not be the smartest employees but they’ll certainly get stuff done. All they’d require is some autonomy and space to execute things.

4. When they go out, they spread the word.

An organization could actually boast themselves of the number of entrepreneurs they’ve produced. Many of the top management and technical institutions also struggle to state that.

In all, if people are leaving you to start their own companies.. don’t stop them. In fact, encourage them to do so. Create that as a norm and you’ll see the effects in your regular day to day transactions too.

Extending the Joel Test..

I’m sure everyone’s read The Joel Test. Its a very scratchy and effective way to know the quality of a software team. The article is about a decade old and primarily focuses on the technical aspects of a software team. In spite of its age, it is very relevant to companies in the current era too. If you’re looking to join a software company, its handy to have this checklist and use it to measure the team’s quality.

Overtime, I thought of few more things that could be appended to the list.. Here is the list, with few things repeated from the Joel test..

  • What are the programming languages you work on? Which one is the most predominant?
  • Laptop or Desktop system?
  • Configuration?
  • How frequently do you make builds?
  • Unit/Integration tests coverage?
  • How frequently do you release to production?
  • Hosted on cloud or private servers on datacentre?
  • What are the software that you use regularly?
  • Have you bought any software? Please mention them and reason to buy them.
  • Google/Zoho apps or Office docs?
  • Which bug-tracking tool do you use?
  • Do you use a project management tool? Which one?
  • what source control tool do you use?
  • Do you have continuous integration/deployment? If yes, which tool do you use?
  • Cubicles or open office?
  • Do you provide Lunch?
  • Snacks?
  • Coffee or Cool-drinks?
  • Do you have UI professional in-house?
  • Do you have QA folks?
  • Do you have a business analyst/product manager to work on customer/product requirements?

The list comes from some of my experiences of working with development organizations.. Please feel free to suggest some of your own items to add to the list.

Lets conduct a survey and try to see how Indian companies rate on this list..

Windows 8 preview.. what it means..

Just saw the recent development on Windows 8. Microsoft is planning to make it big this time. Windows 8 would run on PC, tablets and phone possibly the same way. At least that is what they claim to do. Here’s an opinion on this release  Why Windows 8 Is Fundamentally Flawed as a Response to the iPad.

Here’s a video of the same:


But, what is more important is the trend. What this means: couple of things:

1. We’re moving into a period where human-machine interactions will be redefined very quickly.

Think of players like Apple, HP (palm os), and all others joining the bandwagon. Voice based, touch based, gesture based interactions will quickly overtake the regular keyboard-mouse interactions.

2. Apps need to be designed with the above in mind

Future apps need to be designed with this in mind. Gone are the times where you can build a desktop-app alone and get away with it. Your users will be consuming content with all different devices, need to be ready for that.

It looks very refreshing to see growth in this direction. I always believed that’s the way it ought to be.

An ‘A’ player in a ‘B’ team.

Its a tricky position to be in.

Well, let me define the situation a little more.

‘A’ player is one who is typically smart and effective. Has more than one solution to a problem, where other team members hardly understand the problem. Never ever do you need to follow him to get work done, in fact, he keeps the team on their toes. Takes initiative, and often undertakes more work than he can handle. Inspires people and has a following of some kind.

‘B’ team is one which either comprises of too many senior folks who find ways of not getting out of their comfort zone or folks who’re not competent enough to solve the problem, leave alone solving it well. Both look to choose the easier route, one which is closer to their intellectual reach and doesn’t stretch them.

So, what do you do in that situation..

1. Take advantage of the situation:

Well, since you’re few steps ahead of the team, take advantage of that to finish work early and make up more time for other activities that you like. Contribute to open source, work on a part-time project, etc.

2. Try to pull the team up:

Try to motivate others by your effort and dedication. Coach them, mentor them, push them.. set higher bars of excellence. Show them the way.

Easier said than done. Most teams don’t react well to peers’ advice. They’re a ‘B’ team for a reason. But one can certainly try it out.

3. Get that promotion, you missed last time:

There’s no better opportunity to do lot of work and get that desired promotion. However, need to be careful with the team politics. You may be overloaded with work, and eventually blamed for things (since you were the one who did it).

4. Shut up, and go through the flow:

Chances are you won’t do it, but the probability is high. Just get through this project and move on to another one, quickly.

5. Run as fast as you can.

After trying out above things for a while, if you don’t see any improvements or changes. Move out. Its not worthwhile to spend effort on a team that has no motive to excel. Look around for right people and projects, in certain case companies too.. and run as fast as you can.

Well.. I could only wish, you never get into one of those situations.. But if you do, tackle it with some care. Your action or inaction, can have lasting effect on your career.