Tuesday, April 13, 2010

Collaborative MindMap – Anand Narayan

As we promised earlier, we have a special article by Anand Narayan himself sharing his experience as the developer of Collaborative MindMap: and interface you can use to collaborate online with like minded26874_1423248302114_1259930618_1207705_1029667_n people. The idea is ingenious and we’re proud to have an article from Anand himself on our website.

Anand is pursuing his B. Tech., CSE from VITU and he is currently in the third year.

As an introduction, we have his video about Collaborative MindMap here:

And without further delay, we have the man himself. Here’s what he feels:

5 semesters over, 3 to go. I wanted to build a nice app that I would fetch me some money before I get out of college. So I brainstormed with a lot of my connections, did some market research, finally landed up at one. Collaboration was (is) the in thing. Even Google (wave) was into it. And one of my mentors suggested I do a collaborative mind mapping tool. Sounded pretty interesting, something I could sell. So we collaborated and charted out the features and I started with the development.
Step one of every project; you got to choose the technology you are going to use to implement the idea. I asked a lot of people, social networks, friends, geeks. Didn't get many suggestions. Ended up with a couple of libraries, stuck to one. Learnt it for a week. Then had no clue how to use it to develop what I wanted, felt like I was stuck with too ambitious a project. This is where it really helps having a mentor, he broke it down, and I finally got going.

It was full code now, after like 3-4 days of coding, I just finished connecting a couple of rectangles and stuff. I realized that I had chosen a very low level technology, which meant that I had to write a lot of code and in-return I get a lot of power. For instances I had to code even a simple textbox and trust me it’s not that easy to code a textbox, loads of events have to be taken care of at such a low level . And so I continued and had a lot of fun. I was able to appreciate computer graphics; so much of code goes into them, browsers, desktop interfaces and stuff ... Lovely.

After sometime with development, I reached the crucial collaborative part. I had a naive idea about how to go about this, again googling, Wikipedia, only made things worse. The more I read about them, the more I got confused. Fortunately I landed on some code and I got the concept in like minutes. It’s so weird theory is always confusing, but it is actually meant to make things simpler.

So now my working prototype was almost ready, I just had to test for a few bugs, and I was ready to go. I made a screen cast and showed it to a few people and got some feedbacks. Eventually I attended Barcamp Chennai, a few of the people whom I had shown the idea to, were present there and they really egged me on to demo my prototype there. Thanks to them I did speak at Barcamp and I demoed the product, got some nice supportive positive encouragement from the people there. They gave good suggestions and I really felt like I should do more to this product, because so many people like it, Felt great. I was wondering how Steve Jobs would feel when he shows off a product like iPad to the whole world and have them jaw drop .

So this where I am now , I am looking at developing the UI , adding more features , making an alpha version , then beta , then release . I'm also looking for people who can work along with me. If you are interested mail me at anand[at]sanandnarayan.com

We hope you enjoyed this inspired you to do something similar. We’d love your feedback, you can always follow us on Twitter: www.twitter.com/VITreporter or just email us: contactus[at]vitreporter.com

We’ll be back with more!

Special thanks to Aditya Vikram Thoomati for letting us use his image.

Saturday, April 3, 2010

Top Programming Myths

Each one of us often wonders - how do we become good programmers? And that question becomes much more predominant if you’re going to get an engineering degree within a period of four years.
First, let us shatter some misconceptions. The first one is what most students believe – the more programming languages I learn, the better I will become. Wrong. In fact, you couldn’t be more wrong. Programming is like poetry. And when you try a different programming language, it becomes more or less the same situation where you switch to completely different writing language and try to come up with meaningful poems. In fact, a new programming language will only result in the overhead of adapting to the syntactical changes.
The second of most prevalent misconceptions – I should learn programming from a book. Let us ask you a question from the perspective of poems again – which poet do you know of, learnt poetry from an English grammar book? Again, programming is something best learnt through experience. Yes, a reference book is definitely going to help, but it is not going to be a source of new ideas in terms of algorithms. A programming language book is only going to explain to you the grammar of the language, the syntax. It will not inculcate in you the skill to come up with an algorithmic solution to a problem.
The third – those who took programming in their high school can only be good at it. Again, false. Programming is like mathematics and poetry combined. You can learn and master programming at any stage in life, given you move in the right direction with it.
Okay, enough myth-busting. Let’s get down to ‘how to learn programming’. The key my friends, is experience combined with a sharp analytical skill. First, one needs to learn how to effectively translate and break every situation down into a programming problem. Almost everything encountered in engineering can be put in terms of programming. Once you’re able to do that, half the work is done.
The next stage is the planning and analysis. Hold your horses before you reach out for the keyboard and begin coding. First, get yourself some old fashioned piece of paper and a pencil. Now, analyse the problem statement mathematically. Take some cases, try them out, see how the math flows. Next, move on to the more extreme cases and see if the flow of things is still the same. If not, repeat the previous step, until you begin to get the drift of things.
Now comes the part where your computer and the compiler are your best friends. You’ve done the planning, you’ve done the analysis, it’s now time to sit down, and code. In real programmer vocabulary, this part is not as exciting as the planning and analysis part. Ask any good programmer and you’ll find out.
So what do we conclude from this? Firstly, you need to know just one programming language. Yes, classical computer science doesn’t need you to know more than one. A programming language is just a way of translating mathematics into a computer’s language.
Secondly, try programming more for mathematical situations rather than things like sockets and other such utilitarian pieces of code. Unless you’re really interested in run of the mill Information Technology, you don’t need to know much about such code.
Thirdly, spend more time with a pencil and a paper than an IDE. Imagine more, and think in terms of mathematics.
Fourthly, get an algorithmic bent of mind. Instead of issuing a reference book from the library, buy yourself a copy of a hardcore algorithmic bible like “Introduction to Algorithms” by CLRS or “The Art of Computer Programming” by Donald E. Knuth.
Lastly, patience. Which of course, all of you who have read till this line, have.
Cheers and happy coding.