Tuesday, July 7, 2015

What did I do in my Eklavya summer internship at IITB ?

Right now, I am in the train, having befriended one ma'am who happen to be a lyricist and a script-writer. Can you imagine she knows seven different languages, and guess what? This is after leaving behind English and Hindi. Well, after this I was thinking how many languages do I know. Zero, damn sure. Okay, I also know other a lot of other languages. The only difference is I write code in them.

And yeah I am finally going back to home. So, I woke up this morning, and couldn't think of anything better than writing this post which is an answer to a question that I have been asking myself for quite a few days now that whether my choice to join the Eklavya internship at IITB was right.

I don't know. I have no answer. Or may be I do have a lot of answers, or bits of those answers. I would like to collect and freeze those bits here and now forever.

First question : Did I really learn something in IITB ?
Well, the answer depends on what is your definition of learning. If you are like me, having spent quite a few years now solving logical questions on paper, then I must agree that many a times I did feel what a bullshit and mundane sort of work I was doing. Many a times. Once I even thought of leaving my internship midway. But I didn't. I don't know why.

But now I will say I did learn many a things, some about others and a lot about me at each of physical, mental and spiritual level, as James Altucher always puts it.

So, breaking all the suspense surrounding the title, let's talk from the start.

When I first came here, there were presentations regarding various projects, and I took the project named "Big Data and Analytics". Later I will tell you whether my decision to take such a project with sucha big name was good or not.

But after the project selection, we spent the next week in the lab tying to learn these things, because we were told that later there will be a test in the weekend on topics of Python, Java, MySQL, Django, and Javascript.

Alas, I knew only one thing there : Python.

Okay, no lies. I knew Java and MySQL too, but not that much.

So, I spent that week learning Django from their own documentation. And I was kind of feeling great because I was playing around with web frameworks for the first time, although I had no idea what I was doing.

Finally arrived the day of the test. And guess what I got around 60 percent. Actually 59.57. Otherwise they wouldn't have asked me for a retest. And yeah, I failed in Javascript. I got around 10 percent, I guess. But no shame. I was not alone there. Plus, you couldn't expect from me to learn all this in a week.

But I did complete my Django tutorials there. It felt good.

Then the project that I chose, I hope you do remember "Big ..", there were subprojects within it. I chose "Study and Integration of edx Insights". So, was it a good choice ? There is no right answer here, but yeah, we got to interact with Phatak sir more than any other group. Actually most of the other groups didn't get to interact with him other than on initial and final days. It was always inspiring to listen to him, when he used to tell us what are his thoughts on different things, or when he would share a story of his life with us. It was always great to listen to him, and everyone would want to listen more from him. At least I did. Don't get jealous now.

But pausing here for a moment, I would say that one important thing that I learnt here is how one should select their project based on presentations only. Why so ? Because I made judgemental errors, not once but many a times. May be one learns from their mistakes only.

Then, in one of our interactions with Phatak sir, he gave us the assignment to find out the necessary code changes to get a particular feature in the edx. Ah, the problem was that the code was 250,000 lines or more. I never counted. Everyone just says this number.

So, the next week, I remember, 15 students none of whom ever looked at this amount of code, spent their time trying to figure out how to get this feature. And finally we did find it out. At least we thought so. We never tested it. Who was going to install edx on his local machine. But it was a proud feeling to tell Phatak sir that we had completed the assignment, and our efforts were appreciated.

No other group got to study this much amount of code, other than the LTI group.

Then we started on with our real project. It's then I realised that my project was not of writing code, but there is code already there, actually four different pieces of them doing different jobs. Our task was to study it and then integrate them so as to make them work together. I got to realise that it's not all about writing code but also there are many many other aspects related to a product development.

But I didn't know what to do. It's then when we started with hadoop and hdfs. I remember one of my friends doing such things in college only. I couldn't understand what he was doing then. I do understand it now. Although I did only basic tasks with Hadoop and MapReduce, it has given me enough confidence and excitement to continue playing around with it. I did played a little bit there, and I will continue with it for sure.

One more thing I did learn or should I say relearn here is to stick with the one thing that you are doing. You will benefit. Actually there has been a lot of changes in my learning patterns in the last few years. And one thing I am learning now is this. Stick around and play with one thing, and complete whatever you have decided before moving on to the other thing.

While we were doing this, one day a meeting was called and Phatak sir told us that for the next 10 days or so, our project has been changed and we will working on making SRS as well as user documentation for the blended MOOCs. It was a fun time doing that, learning about hierarchical database design. Since I still didn't have the database design course, it was all new for me, and I enjoyed it.

Once it was completed, we were back to our project. But then one day our mentors came and told us that a new group is being formed for the blended MOOCs development, and asked us whether we would like to shift to this another group.

This is where I feel that I made a mistake. I should have moved to that new group. I realised this once the work started in that group. It's not like I didn't work in my group. But there work was more of development, and I do agree for once I did feel bad. They did learn Django development. It's not like I didn't. I also did, and I continue to do. But the difference may be they did learn it while working on a real project.

But still it's okay. Sometimes you do make bad decisions. It's part of life. It makes you understand how to make better decisions. How to better analyse a situation. I feel I got better at this thing too.

A few days after that we got to know that our group mentor has been changed. There I think that those mentors related with Eklavya internship should decide their projects clearly beforehand. I guess it was a lot of mess, and not just for me, but for many other groups.

So earlier we were working with Tushar sir, Mitali ma'am, and Aditi ma'am. It was nice working with them. But then we moved to the group of Shukla Nag ma'am. Our first task was to convert their data cleaning code written as Java Servlets to python scripts. Huh, I can't tell you what a boring task it was.

I would like to add one more thing here that I was really lucky to get friends who were very good. I can tell you with the example of Sagar. It's because of him that the two of us could complete the code conversion. Had I been alone, forget that it would have been completed.

So, this internship was not just about learning from doing the project. It was learning from your friends too. I can say I learnt a lot from them. I learnt about UNIX, and at least I have got a start there. Plus, I did learn about completing things while learning on the way only.

So, the code conversion thing. We were talking about that. Yeah, it would seem boring to you, and it was in fact. But it made me, once again, read a large amount of code, and understand it thanks to the lack of documentation of this code. I learnt about JSON, and how to use it with python, something otherwise I only heard of, or read about on Quora.

Then I did wrote a few R scripts for visualisation purposes. Yeah, I did that too. It was fun doing that. And I also learnt a fair amount of R while doing it. But then, I didn't stay doing this for long.

I was moved again for the testing of the python scripts that we have written. I would say that I now prefer using a debugger, rather than writing a lot of print statements cluttering around in my code. So, I still don't know how to call R scripts with python, but I will learn that too. It should not be that hard, given that I got the opportunity to read that code and play around.

And while doing all this, I never realised that I was in the last week of my internship. It was time to go home, but I guess there was more to happen. So, then everyone was assigned to do their part of documentation and while doing so, I did learn a little bit of LaTex too. Hurray, I am going to make my CV in that only.

It should have ended then only with the documentation ready. But the last day before the presentation, ma'am said that she wanted the dashboard to be similar to that of insights, but it was not. She wanted someone to work on the required jQuery and JavaScript. Remember I failed in this only. And so I along with two of my friends was trying to do something that I had no idea of how to do.

Initially I felt like better to leave, but by the time it was midnight, I was enjoying doing this too. By the time it was 5 in the morning, I wanted to complete this and didn't want to leave, although we had reached halfway only till then, and the presentation was that day only.

So, we left and went for the sleep. So, do I know JavaScript now ? No, not at all. I will still fail on an exam like that. It's just that I have never used it before, but since now I did and I enjoyed doing this, I may later go on to play around with it. I guess that's how we start with anything. When I had basketball in my hands for the first time, I played too bad, but two years after that, I was playing fair enough, if not good enough. Same thing with chess, or the code that I wrote for the first time in my life in BASIC, or the my very first PowerPoint presentation.

But since I enjoyed my time while doing these things, I became better and then sometimes good enough. The same may happen with JavaScript too. Who knows, I don't.

But that day later in the noon, the presentation went well. And came to an end the internship.

So, was it good? I don't know. I felt good after writing this. What do you feel like after reading this? That may be your answer.