Agriculture Information Index

This is something thats been hovering over my head from the past 2 weeks. One of my extremely smart friend talked to me about this idea and without spilling a lot of details about it (since he still wants to pursue this as a business) – I want to give my 2 cents on this.

The idea is very simple – basically create a searchable index with a REST API in the front for the agricultural information for a certain region – in this case it would be some county/district in India. This index would be a subscription based one for people who want to sell services and goods to farmers in this farmland. That’s the idea – but when you get down to implement it – it’s an uphill task. Since I have been thinking about this I want to take a crack at this – in theory for now. The difficulty is in collection of data – it needs to be cheap but network connected. The one thing that comes to my mind when I think about it is – Raspberri Pi – RPi has made inroads to some serious business models from a hobby and I think a simple prototype can be built which have multiple sensors and can capture them and store it temporarily. This could further be powered with solar (yeah I know the cost might go up with this one). The networking part can be solved with a simple solution. The Rpi unit doesn’t need to be online all the time. It could be a simple app running in background on an Android phone which will collect data as you pass by Rpi and send it across to a central location. There is a lot of scope for innovation in getting the data out from fields to a central db.

Then there are human problems – like vandalism and people stealing these things away for copper in it. This is going to be tricky. The farmers are mostly poor and they would need a incentive to keep these Rpi’s buzzing and collecting data. I think there is a scope here to involve a CBO or a micro lending company to turn this into an interesting investment option for the farmers. Imagine treating Rpis as cattle and as the data gets collected they would get paid some amount. It might be less than what they can make over cattle – but this one would be reliable and more recurring. Also the fact that the data might actually help them find the resources like fertilizers etc faster and might raise their land value is pretty convincing.

That’s just a small sample of what I think about the Agri data. I would love to jump into something like that and build a nice usable prototype if I have enough backing.

I did explore a very similar idea in Education area with another friend of mine who is equally skilled and passionate about bringing in cheap hardware and rich content to teach kids in remote areas – but that’s another blog post.

I think if you scale back and take a look at bigger picture – the bigger index is the social index – which would be hard to create but with incentives and some good planning it would be possible to create a social aspect index of Indian rural area which would then help other CBO and NGOs to be able to target specific issues at grass root level in the areas they want to.

The possibilities are unlimited and my imagination is buzzing!

2 Absolutely Necessary Qualities in an Offshore Team/Member

After a recent event – where I ended up working all day Saturday, I have been thinking a lot about Offshore developer/teams and Onsite Clients’ requirements. Having worked on the other side where the Client looked down upon us for every little mistake – but couldn’t let us go because it doesn’t get any better – I have realized couple of things.

Here are 2 absolutely necessary qualities that I would expect in any Offshore development team or member.

1. Escalate: Offshore development kinda happens in future. I mean the timezone wise they are always ahead of us. This needs to be used as an advantage. Whenever something goes wrong or something doesn’t work – the Offshore team needs to escalate it to their Clients Onsite. This helps the Client to take necessary action even before this issue turns into a roadblock.

I am not sure of any other country, but of what I have seen mostly in India. So, these observations are based from my Indian work experience. It is such a strange medley of opposites and paradoxes. Indian developers are very smart to grasp technical ideas but their smartness fails them when it comes to communications. From the childhood, most Indian parents encourage their kids to become class toppers (Believe me, topper is a household word there, I was once a topper too.). There is no emphasis on clear communications. Parental authority in the initial stages and later work based hierarchy system actually supresses any communication abilities a person may have.

The end result is – a brilliant mind, but a numb tongue. So, if only the developers or the team members can learn to voice their opinions much more vocally – we would not have so many issues. Escalate problems as you see it. Raise red flags whenever you can. Your Onsite manager is not your Dad, he won’t be mad at you or judge you for bringing up a problem/issue.

2. Proactive: Most Indian developers I meet are reactive in their approach to development. If I give them a problem they will solve it based on their knowledge. But life doesn’t come in neat packets of problems. It’s a big mess that just overwhelms you.

Being Proactive means, anticipating delays, anticipating what might come up and prepare accordingly. It is said that only 300,000 years ago Humans developed – Pre-Frontal Cortex, the area under your forehead which gives us the ability to simulate any situation just by imagining it. Prior to that, we had no clue of any experience which we have NOT faced it physically. Just imagine how important this is. We got a whole extra add-on. We got a simulation laboratory right in our heads. This gives any human to use Imagination to try to simulate things, situations, actions, behaviors etc without even physically experiencing them.

So, developers – please put that to good use. Use that 1/4th of your brain to basically see the future. It’s something everyone does without being observant. It’s called day dreaming. When you are dreaming of that beautiful girl sitting in front of you in a Coffee shop or when you are dreaming of that vacation you have been wanting – all these things use your frontal brain. So, next time just use it in your projects to fore see what would happen if you did something and what possibly could be your response to it.

An example: We setup a stage server and I asked the developer to add some changes there and test them. He made his changes, but when he went to test them – the login didn’t work. So out of habit of his reactive mind – he assumed that he is powerless and basically sent out an email to me (from the future) telling me that the login doesn’t work. Well, you are the developer – if login doesn’t work then you gotta fix it. That’s what I did. When he said, the login didn’t work – I debugged it and figured out what was happening and I fixed it. The only difference between what he did and what I did – is not technical, but psychological.

That’s all. I don’t want any more features in my developer from India. I don’t care about your sex, about how you look, about your skills, about your coding powers etc. All I need from you is – A good red flag raising capacity and the ability to fore see them coming.

That would save the whole industry of Offshore development from using double the bandwidth in communications – back and forth.

Stage Actors Vs. Backstage Crew

The other day I was having a chat with one of the very bright colleagues of mine. He mentioned something that stuck with me and kind gave me a big picture of what I have been thinking of. He mentioned about how on a broader scale job skills are divided. I am currently looking for job and also trying to get into a career which not only would be challenging but also deeply meaningful to me. What he mentioned kinda gave me a picture of what I should be looking for in an Ideal Job. Ok, here is the scoop on the story.

There are 2 kinds of job skills – to make it more analogous, let’s consider Theater performances. You have people who perform various roles on the stage and then there is a whole crew which makes the show happen behind the scenes. Now if we generalize we can cast them in basically 2 groups(very broad).

  1. Stage actors
  2. Backstage crew

So, in the area of job skills – Stage actors are the ones that deal basically with one idea – ‘CRUDding on the client data‘(TM). All these guys do is to take the content which gets created or exists and show it to client in various ways so that it’s easy for the client to modify and maintain the data. Irrespective of job descriptions and technology used almost all of the people in this bucket(Stage Actors) do this perennial task. Your American Idol in this area would be DHH

Backstage crew are the ones who deal with ‘In-Memory computation‘. These are the people who pull the strings (or threads, or processes). These are the experts of code optimizations and innovative algorithm designers. These people make the machine do all the grunt work using automation and make it work the way they want it to be. Your American Idol in this area would be ZSFA

A simple example would be of Facebook. When it started, Facebook is nothing but a bunch of PHP files and MySQL database. The stage actors did a great job of making it popular, but then when it started to have millions of page hits – this actually made the expert backstage crew to step in and write those smart programs that can deal with those millions of hits. In the early stage the backstage crew was present too but their role was not that prominent, in the later stage the stage actors are still there but their role has become one of the important role, not just the only important role.

Serendipity again I guess, it so happened the day we talked about this – Steve Yegge came out with his stunning post of ‘Get that job at Google‘. If you carefully analyze what he says or the skill set he is looking for, he is actually referring to the back stage crew guys.

So what can I do to advance my career of 7+ years which I spent in ‘CRUDding with client data’? I took the clue from Steve and got myself 2 books.

  1. Introduction to Algorithms
  2. Algorithm Design Manual

As I go through these books, I realize they have a deep learning curve and probably it’s a good thing. You just don’t get to become a stage director (part of backstage crew) over night. I am going to invest my time and energy and see where it goes. I already enjoyed couple of cool moments when I try to implement some of the ideas in those books in Ruby code.

Also I have decided to learn Erlang. I think that learning a functional language actually twists my brain cells in such a way that I would end up being more creative and start to think about computation in very different terms. In addition to that I am going ahead with Flex learning too. The reason why I love Flex is that it gives super wings to my programming imagination. I can actually write Actionscript code and generate a visual way of saying things.

My immediate idea would be take for example – take binary search, implement it in Ruby or Erlang and then write a program in Flex which would visually follow, in slow motion how binary search works and shows it in the browser for the user! Now that’s what I call complete learning.

Note: The credit goes to Ratheesh for discussing with me the pattern he saw. I added in more of my flavor to it.