I have found Stackoverflow to be an awesome resource for programmers. Be it fixing a bug, understanding behavior of an ill-documented API, it has always welcomed me with a helping hand. I wouldn't have known about incredibly useful tools such as jsfiddle but for stackoverflow. Despite having an account for the past 11 months, I had not answered a question, and neither had asked one. This however changed in the past couple of weeks, and I am writing about my experience of being on the other side - contributing to this awesome resource by answering/asking question(s).
I started my contribution by answering my first question on 6th January, 2013. In this time frame (upto 22nd January, 2013), I have answered a total of 39 questions, asked one question, written 35 comments, received 30 responses, casted 40 votes, and earned a reputation of 619. I am among the top 1% users in the week of Jan 20th. More granular breakdown can be seen in my profile.
I have found answering questions on stackoverflow to be an intrinsically rewarding experience. The eyeballs are an important factor in shaping this experience - Your answer will be read and scrutinized by others. Some of the criticisms can go a long way in clearing misconceptions. This can be best experienced when answering questions that have recent activity, particularly new questions. This answer on simple filtering of file inputs,
or this one on sum of harmonic series of first n naturals, are some examples highlighting the point.
Answering questions can also be helpful in learning a new language, or framework. Since there is an extrinsic reward in the form of reputation for writing a useful answer, it forces one to think hard and write in a simple language. I am particularly proud of writing this answer on a specific OOP detail in Python.
There is no downside to answering questions as such, except the opportunity cost spent in answering the questions. Balancing the time spent on this with your daily schedule is important.
Picking topics and questions as a new contributor
Once you have decided on answering questions, the next question that arises is picking the topics in which you have an expertise. I picked up
competitive programming as my primary areas, because I knew sufficient to answer many of the questions without RTFM, and yet there were things I could learn about.
As a contributor, I have found stackoverflow to be very competitive. An answer to an easy question can be expected in a couple of minutes. The SO community is is also proactive in penalizing incorrect answers and incomplete questions. These can be sometimes demotivating to a new contributor. A general strategy to avoid this would be to choose a specialized domain area (e.g.
beautiful soup +
From the point of view of increasing one's reputation and learning from mistakes, it is generally a bad bet to answer questions that are older than a month. There are strong chances that the asker would have moved on, and you might find it difficult to get any eyeballs as well. I realized this after answering many old questions on
Python. At the very least, someone having the same questions in future will read your answers and benefit.
I just attended the annual Google Mentor Summit at the Google headquarters in Mountain View, California held on 20th - 21st October, 2012.
What is Google Mentor Summit
Here's some background before I dig into what happens at the Mentor Summit. Google organizes Google Summer of Code (GSoC) and Google Code-in (GCI) every year during summer and winter breaks respectively. The participating organizations mentor students to write code for their FOSS projects during the program and Google pays stipends to the students. Both these programs see huge participation from FOSS organizations. For instance, there were 180 participating organizations and around 1100 students in this year's GSoC.
The mentor summit is 2 day unconference where representatives (around 2) from each successfully participating organization are invited to Google to greet, collaborate and code. The purpose for the meet-up is to collect feedback to improve the program, and let the FOSS developers mingle.
How did I attend the summit
I was a mentor with Tux4Kids in GCI 2011, and a result was selected to represent my organization at this year's Google Mentor Summit. It also helps that Google covers major transportation and living costs.
There were around 350 mentors attending this year's summit. You can see a group photograph of all the attendees that was taken at the end of Day #1 of the summit. Photo by Robin Smidsrød
Food: This year's mentor summit began with a pre-summit party on Friday, 19th October with Thai cuisine at the Wild Palms Hotel. This was followed by Italian cuisine on Saturday followed by a pool party. During both days of summit, breakfast and lunch were served at the Googleplex.
Commencement: A big surprise was awaiting us at this year's commencement. Apparently, someone from last year's summit had suggested a geeky way to greet each other and the organizers wanted to try that out. We stood in two parallel lines, and people from the starting point would go all the way to the end of the line greeting everyone they saw on the way. In this way, everyone would greet everyone exactly once and total of 61425 greetings would have happened (n*(n+1)/2). Very soon the situation became comic as everyone was trying to optimize the time to no end, but it was effective in bringing casualness to the environment.
Talks: As I mentioned earlier, Mentor Summit is largely participant driven and informal in nature. Several weeks prior to the summit, people had started writing ideas on talks they would want to take and voted on talks they were interested to attend. There were talks focusing on how to improve the program in future, collaboration tools to improve efficiency, programming languages, open-source gaming. And then there were specialized talks on Operating systems, deploying on cloud, machine learning applications to name a few.
Swags: Different FOSS organizations had brought stickers of their organizations, so it was a big sticker exchange fair. There were awesome GSoC and GCI tees kept on a table and waiting to be collected until no more were left.
Chocolates: A year or so back, Mentor Summit started a tradition where all the attendees would bring chocolates from all around the world, which would then be kept in a separate room. One can simply go and munch chocolates to their fill any time during the summit.
Going around Googleplex: Googleplex, the corporate headquarters of Google in Mountain View, California is spread across a number of buildings (they just seemed so many, no clue of the exact number). Bicycles are the preferred way of transportation between the buildings. I visited the famous Android building (the one where they put an Android statue for every new release), and also the Google Store.
good great news: 17 undergraduate students from DA-IICT have been accepted in Google Summer of Code (GSoC), 2012. Here's a comprehensive list I compiled:
|Name (project hyperlinked)||Year||Organization|
|Anirudh Subramaniam||4th||Inclusive Design Institute|
|Gaurav Arora||4th||Xapian Search Engine Library|
|Jainit Purohit||3rd||Interface Ecology Lab @ Texas A&M|
|Neel Shah||2nd||International GeoGebra Institute|
The post is incomplete. I will keep updating when I am bored from exam preps.
I don't blog much
I have been trying to maintain a blog since past year and the result so far is scattered writings over many places, and truthfully I haven't written much. I can't stress how much I regret for not maintaining one till now, for one, if you have written down your experiences, there are good chances you will have a better retention of them and will be able to relive them later and two, they can be helpful to others. Even if you don't think you can write something that would help others, it would allow others to know you better. When you are not writing about what you feel important at the moment, chances are your memory of the event will eventually fade away.
One of the reasons why I have failed so far in maintaining a blog is due to my organizational skills or the lack thereof, I would start writing drafts and then get distracted. This would often result in postponing the writings, and after some time I wouldn't feel it was important enough to write the post anymore. I would be riding on a wave of new ideas by then. As such, I am very focused when it comes to writing code, but writing a post is something I could never manage to do in one sitting.
I am here, trying again with a new blog software Obtvse. I have a hunch that I am going to blog a lot often now, and Obtvse would play a big role in that.
How can Obtvse help in improving my blogging frequency?
In Obtvse, any post belongs to either of the two states: idea, and publish. Every post starts as an idea, and when you have iterated enough on the post, you can publish it. The main difference here is that you don't feel compelled to publish something in one sitting. Here's an image of the interface. Another thing that appeals me about Obtvse is it's clean and simple interface, which is pretty much focused on allowing you to write/read.
Do you want to use Obtvse too?
Hosting your blog using Obtvse isn't as trivial as making a Tumblr blog, mainly because you need to host it somewhere. The code for Obtvse is shared by Nate Weinert on github. Since Obtvse is written in Ruby on Rails, Heroku was an obvious choice to host for me. I have added some instructions on how to host on Heroku on my fork of Obtvse.
Here are some load test results on the Heroku's Cedar stack (based on a rush on blitz.io). $ --pattern 1-250:60 http://sidsaquarius.in Blitz.io generates a load test against my url which goes from 1 to 250 users in 60 seconds. The response time keeps increasing with more users (and drops completely when users reach to 100).
The miss rate (orange) is zero for the first 60 users. After that, it starts increasing and hit rate (green) decreases and falls to zero at 100 users.
This means you can handle around 60 simultaneous users without a problem. If you need more scalability, go ahead and add some dynos.