Europe

This summers I was in Germany for my internship. On the weekends I backpacked across different places around Europe, visiting:

  • Freiburg (Germany): It is small town extreme south of Germany. It was where I stayed during the three months. It is a nice and warm student town and you get really awesome beer at the Feierling Beer Garden.InstagramCapture_4fa7c98b-dc0a-42e3-9173-979ad2e9bc95_jpg

Continue reading “Europe”

Knocked out of Node Knockout

I had spent this Saturday participating in Node Knockout. I had planned for a little Travelogue web app called Mapvel, with which one can share his experience about the current location, hence other users can get what people think about a place. I was planning to make use of a person’s real location by using the HTML 5 Geolocation API.

My team name was Struggler, that shouldn’t be a surprise considering that I am making this post.

But then things went downhill from there. I got this idea around 10 hours into the competition. Then I realized that to store Geolocation and perform spatial queries, I would need to use MongoDB. But this was the first time I had even planned to use it. Then I thought, lets make people sign in with Twitter, oh well, this was the first time I was implementing OAuth stuff in Node.js. Hence most of my time was spent in reading the docs and playing around with these. The build part comes later.

Apart from that there were some awesome happenings in college (I am being sarcastic!) and I also have 4 project submission to do this week. Excuses aside, I sat Saturday evening and night and got a basic version of the app running. Twitter login worked, MongoDB worked, I started hating Jade even more. Today morning I woke up and decided to give up.

It was good experience, I was coding fast, and learning fast as well, I just implemented login with Twitter and was querying MongoDB in few hours. Maybe I’ll get back to completing this Mapvel some other time.

Recollections from the Mozilla Summit

Couple of weeks back I was at Mozilla Summit at Santa Clara, USA – a grand get together of people who contribute to people. This was the first time i was meeting the first global Mozilla community, the first time I went outside India. It was a massive effort to bring the paid employees as well as the voluntary contributors at the same place. I got to meet and talk to people with whom I had only been talking on IRC.

Mitchell Baker’s keynote on the Nature of Mozilla, really set the mood for the Summit and it best defines why Mozilla exists and why we all gathered over the weekend to discuss the future goals and plans for Mozilla.

The event lineup was well thought of, to keep you interested and give you options to choose from the tracks going on at parallel. I met so many people I probably don’t remember the names of quite a few but some were Brendan Eich, Asa Dotzler, Brian Bondy, Brandon Benvie, Alon Zakai, David Herman and so many others. It was great to talk to Luke Wagner over the internals of SpiderMonkey, Mozilla’s JavaScript Engine and JITs. I also had a chat with Patrick Walton over Rust and Servo and both the projects really look promising.  Randomly bumping into new people while playing Guitar Hero and getting to talk to them is another great thing about these events.

It was very informative to see the demos and talks about the upcoming projects and products we are working on, advances with respect to performance of FirefoxOS, brainstorming on the different products and discussion about how we can improve the Mozilla ‘platform’ code, sessions about Servo, how to appreciate contributors and so many others. At Innovation Fair booths I could interact with all these people who are working on these projects, and it gave much better insight.

It was a great event, I felt a part of the common cause, of a shared vision — of an open web.

PS: Thank you Mozilla for the free passes to Great America, the amusement park was one experience I will never forget.

Why should you be at RubyConf India

Warning: This post is a non-Rubyist’s take on RubyConf India. Forgive me for my inaccuracies.

I’ll accept it right at the beginning, I don’t do Ruby (forget Rails), having dabbled with it previously I knew just bits of it. And when I got the opportunity scholarship, there was no reason not to go.

Reason #1: Ruby is nice, and so is the the Ruby community. Trust me, the Ruby community is one of the best that I’ve ever seen in my life. People are so friendly, progressive, open to discussions and ideas. Really amazing!

Reason #2: The star cast at RubyConf India is pretty good. Let me list it out – we had Steve Klabnik, Jim Weirich, Aaron Patterson, Andy Lindeman, Nick Stutter, etc. Nothing is better that hearing the best from the pros.

Reason #3: So many stories at one place. Yes, you get to hear the stories of so many people – each being an inspiration in itself. The times when Aaron Patterson says he is a college dropout thrice, denied the opportunity to study at University of Washington but then goes and teaches there for years, you feel no matter how bad the situation is, you can always get better.

Reason #4: Ruby is for everyone – BRails. This really drew my attention – how much do we think about the physically challenged when developing products? Siddhant’s though visually impaired served as an eye-opener for everyone. He had be developing with Ruby and Rails for quite a few years – and developing teaching materials for the others.

Reason #5: You can do cool stuff with Ruby and rediscover old school concepts again. Places where representation of the data matter more than just numbers. Parallelism can be both your friend and enemy (just like MRI and JRuby can be), how you can dive into Unix system calls from Ruby itself. Last but not the least a bit of Rock and Roll with Ruby doesn’t hurt either. For those who are wondering, what I am blabbering you should take a look at the list of talks.

Bonus Reason: The beer parties after conferences are always awesome.

Personal Takeaway: Do more Ruby and use it for more of my personal projects. There is a lot that can be done with it.

The value of Re. 1

This weekend was at Ooty, also known as the blue mountains or Nilgiris. When I came to Bangalore little did I know that I would be going to Ooty 7000-8000 feet above the sea level. Well, I did not have any warm clothes, no sweaters/jackets. What followed was two days of shivering cold, but full of enjoyment.

We traveled a lot, the lush green valleys and mountains were a welcome break from the hectic life in Bangalore. I had different kinds of tea – Masala, Chocolate, Plain (an achievement in itself). The tea gardens of Ooty  had some magic of its own.

But, still the ultimate take away from the trip was the moment when we stood at the highest peak of the place without any shirts on, and everybody else was wrapped in sweaters. I still remember the look on the faces of the rest of people (awestruck by our heroic feat – seriously?)

To end the story, our last night at Ooty was too good. We ran out of cash (barring the 100 bucks I had saved up for emergency) and entire Ooty also ran out of cash. You got it right, all the ATMs in that place were out of cash too. Turned out we didn’t even have enough to have dinner. After searching our bags we collected Rs. 7, in all one rupee short of Rs. 108 – the bare minimum required for 3 people’s dinner. Whoever designed that Airtel ad, you did a very bad job. That 1 rupee was gold for us at that time. Nevertheless, the guy turned out be nice, served us food!

We returned that night from Ooty. It had left a soothing impression on all of us. I now miss nature in that form.

I have uploaded selected few photographs at Flickr. Check them out if you want to.

Note to Self

This is a note to myself and to anybody else reading this blog. These things have been helpful in college and also go a long way in helping others too. So I just thought of jotting them down.

  1. Document what you do: You always experiment, try out cool things everyday (they may not seem cool to you, but it maybe for others), just take some time out and make a note of that, write a blog post. Not because that would be show-off but because it will go a long way in inspiring and helping your juniors or any other person from outside your college as well. I can vouch for it because there have been many blogs from whom I have taken inspiration.
  2. Be passionate for engineering: Make things, create! Its the best way to have fun, when code that you had been hacking on runs, or the Arduino LED glows, the ecstasy is incomparable. At the end you will end up tinkering with a lot of things and a whole bunch of messy ideas in your head.
  3. Give back: You will always find yourself looking up answers on Google, Stack Overflow and the like. Take a moment after you solve your problem, share it with the world, answer a few questions on Stack Overflow, or on our group. Improve the community as a member, because if others hadn’t contributed you wouldn’t have found the answers.
  4. Open your eyes and ears: Look outside your world, there are a lot of great people to meet and find out. Keep yourself updated with the latest from the tech world. Read other blogs, HN, etc.
  5. Re-invent the wheel:You can go ahead and try to make a square wheel (doesn’t matter if you fail), the experience that you gain along the way will be what will be valuable to you. Don’t be afraid to re-implement something because it already exists – who knows, yours could be different or better?
  6. Find your specialty: That one thing that you are good at, do it often, iterate until you are good. You find yourself drawn to cool user-interfaces then just do HTML/CSS just don’t for Python because your friend is doing it. As it is stated in the Unix Philosophy – “Do one thing, do it well!”

Following points have been added by Rishi Ayyer, and I feel they will be an useful addition to this post.

  1. Travel: Because you need to get out of that comfortable armchair, with the comfortable food and sleep that you know will be there. Don’t worry, it’ll be there when you get back. But go and have an adventure. You’ll learn a lot more in just a few days roaming out in the world, from practical problems, to meeting people who “do” in the real world.
  2. Be versatile: Yes, it’s good to have a specialty. It’s great if you’re a master at it too. But be open to other aspects, other interests. Always approach situations with an open mind, and an eager heart. Learn to be interested in various aspects of a particular thing. One-dimensional views can be misleading, and won’t help you build a “system” or “product”. At the end of the day, that’s the aim.
  3. Learn to code: It’s my greatest regret. And I know that’s it’s indispensable today. (Though I myself agree somewhat with this, but still I prefer my own #6)
  4. Take charge of your life: Don’t let life happen to you. Make life happen. To quote Marley, “Live the life you love. Love the life you live.”

PS: These viewpoints are purely personal and in case you have something to say, please leave a comment.

Work in Progress

I have been writing a few patches recently, mostly related to moving parts of main-thread I/O off the main-thread and few related to the JS engine, mostly associated with the ES6 spec. Though I am still learning and picking up things, it has been quite a good experience so far.

  1. Already merged are the String.prototype.repeat (Bug 815431) and the iterator methods of Sets (Bug 869996), fixing minor deviations of iterator Map, Sets and Array prototypes from the spec (Bug 875433).
  2. I am working on implementing Map#forEach and Set#forEach (Bug 866847) and Array.from and Array.of (Bug 866849). Self-hosting has been the choice in these cases, it has turned out to be pretty good, though I sometimes miss the flexibility of C++.
  3. I had also undertaken the work to self-host Array.sort (Bug 715181). Though I am kind of lagging behind in this, but still I have managed to implement Tim Sort in JS (I fear it to be very much a broken implementation – because half the browser including devtools stop working), run it through benchmarks on JSPerf, and the results have been pretty impressive and I am getting drastic speed boosts. But need to spend some time on this so that it is spec complaint and the tests stop failing.
  4. In working on async I/O I came across this key manager of the URL Classifier module, that was using blocking I/O. I am converting it to off the main thread I/O with OS.File (Bug 867776, 879724). It was some pretty old code and I had to spend some time figuring out what to do for the test cases.
  5. Among other things I worked on fixing a bug on PopupNotifications (Bug 864895), making the Alarm API preserve a few more milliseconds (Bug 877888), removing AudioBufferSourceNode.gain (Bug 880265).

But my schedule is a bit tight now, with my intern going on as well. I don’t plan to pickup new bugs any time soon. On the other hand I have started working on Google Summer of Code project (Bug 335448) and its going to be a while before I bring the module to a basic working stage, and I have been sneak-peeking into the bug for doing a read-ahead on Linux every now and then (Bug 865387).

Tid-bits from my GSoC

The community bonding period is currently on, and I am talking to my mentor. We having trying to decide the nitty gritty details of the project.

Here is my original project proposal that I had submitted. We have also set up the tracking bugs on Bugzilla to track the progress of the work. Bug 335448 will be the main bug and any other depending bug will be added to this only.

There has been slight change of plans as well, we plan not store the user searches fully anymore, instead use the Places API that currently handles the bookmarks and history to extract our relevant information. We plan not use SQLite for data storage, but flat JSON files because now the data to be stored will be minimal. Also Autosuggest Search Engines will be a module in itself.

So that’s all for now! I’ll be posting the next developments here.

Google Summer of Code it is

This summer I will participating in Google Summer of Code working on the Autosuggest Search Engine project for the Mozilla Firefox web browser. So I will begin by introducing myself.

I am Sankha Narayan Guria, (sankha93 on IRC), a second year from Indian Institute of Technology Jodhpur. I have been contributing patches to Mozilla Firefox project for quite sometime now, and recently I have been trying to work on a few bugs relating to implementing the ECMAScript 6 spec. You can find me on the channels #introduction, #developers, #jsapi, #devtools.

I will be trying to make searches from Firefox a bit more easier by automatically detecting whether you are doing a search or not when you submit a form and then present the user to add the search engine to the browser. A beautifully detailed description of the project has been written by Felipe in his blog.

I will be posting regular updates of my GSoC work on this blog. So stay tuned!

You can find all the GSoC related posts under the tag ‘gsoc‘.

When I dreamt of being a Game Developer

You read it right! It was back in my school days, early days of when I had laid my hands on computer. I knew only QBASIC and Microsoft Visual Basic 6.0 back then. Like any kid, I loved computer games, and more than that used to think of building one. Game concepts used to come in my mind, I could see myself standing in those 3D worlds of fantasy.

Few days back I managed to lay my hands on the game that I had created back in class 9. Pardon me, but it were the days of Macromedia Flash back then, and I had just played enough with Flash 5, that my dreams of making a game re-ignited again. And there I was, played around with ActionScript and cropped graphics from various sources (video games, rendered images from Maya 4, etc.). Oh well, I didn’t know of any game engines, so I hand-coded the full player movement to collision detection. It was definitely a learning exercise. And what is a game without sound? Hence, ripped off sounds from various sources, put my own fading effects to simulate distance in the game. And here is what I ended up with:

lonely_island

Sorry, cannot give it out in public due to multiple copyright infringements it will have if I do (otherwise how will I get my favorite sound track in my game? ). But what I ended up with is a game fully developed by me and one month wasted for it.

Back to today

I run away from game development, though I encourage anybody who wants to build one. Maybe the experiences from my first attempt haunt me!

Bootstrapping Mozilla Devs – Mozboot

This February our college fest Ignus witnessed the meet-up of like minded people who wanted to contribute to FOSS and Mozilla – reason Mozboot @ IITJ – a flagship event to get people introduced to the world of free and open-source software and give them a head start to contribution to the development of Mozilla Firefox.

Photo0410

The first day was utilized for getting the attendees acquainted with the world of Free and Ope-source software and the freedom it provides you. We organized a mini-hackathon to get them the feel of using open-source tools.

Next day, the day of the prime event, we started off full fledged with Mozilla. Saurabh Anand joined us all the way from Delhi to get people started with development of the Mozilla Firefox. We talked a bit why contribute and general terminologies like the mozilla-central repository, Bugzilla, etc. Obviously Josh Matthew’s FOSSDEM slide deck saved the day. Then we guided the participants to setting up their system, getting the dependencies and the mozilla-central source tree. Once done, we started the build process. In the meantime we had Shree Kant Bohra and Paras Kuhad to introduce people to Python and Django.

 

Once the build process was completed, Saurabh talked about the brief procedure to work on a bug, the review process and how to create a patch. We then showed them Bugs Ahoy and select a bug of interest and start reading about it. After sometime most of the participants had one bug selected and were reading about it. We told them to ask questions on IRC in case they faced any problems.

We used an Etherpad to share links and put up the bugs selected by the participants. The Etherpad can be found here.

The event was a success with the first of its kind by the Mozilla India Community, where people actually selected the bugs they wanted to work on and were getting involved with it. To ensure that their participation is maintained we are following up with them to track their progress. We generalized the event and have come up with a format to organize the developer events by the community here.

And this was one of the big events by Programming Club, IIT Jodhpur – one event that brought a lot of people from different colleges together.

At the end of the day going to Mehrangarh Fort to see the spot from which Bruce Wayne rose from the well in Dark Knight Rises didn’t hurt either.

Photo0419

Back to Bangalore

This January I was back to Bangalore once again. This trip was a great one. There is something different about Bangalore – the kind of awesome people you get to meet there, and the ambiance as a whole is great!

MIT Media Labs Design Innovation Workshop

One workshop, that I will never regret attending. From the MIT guys we interacted with to the other attendees, the bunch of people that this workshop brought together is incredible. I was in the Tangible User Interfaces track with my instructors being Anirudh Sharma and Daniel Leithinger. I got introduced to the values of inter-disciplinary work and the level of innovation that can be reached through it. A way to find innovative solutions to problems from our daily lives or how we could make certain things easier.

My project was to design a human posture detection kit, something that could trace how we move our hands, whether the posture we are in causes strain in the body, etc. With this we planned to study the ergonomics of the human body.

biosense-poster

Finally we came up with our prototype system – a gloves equipped with flex sensors and haptic feedback mechanism connected to an Arduino board. A couple of hand-made pressure sensors that we made by sticking together sponge strips and aluminum foil. What we generated was interesting data on how different hand movements and working conditions affected the stress conditions on our hand. Using the pressure sensors that we made we could generate pressure gradients for seats, using which it was possible to figure out how people sit generally. Our haptic feedback mechanism, we could provide feedback to the user in case of any erroneous or potential harmful posture.

We have open-sourced the code at https://github.com/sankha93/biosense/.

Firefox OS App Days

A trip to Bangalore is always incomplete without some open-source or tech meet-up. Last time I came here it was JSFoo 2012. This time it was Firefox OS App Days, a series of global events conducted by Mozilla to get people to know and develop apps for the Firefox OS platform. It was a great experience interacting with Matt Basta and Arun Ganesan who flew all the way from the Mozilla HQ to Bangalore for the event. Moreover, it was my first time as Mozilla Rep I was attending an event and meeting the full Mozilla India community.

After the little intro by Matt and Arun about Firefox OS, it was Hackathon and people came with real cool apps for Firefox OS. Few of us were busy providing tech-support and getting people started on building apps for Firefox OS. By the afternoon, I could see people presenting apps on education, real-time content sharing and information search apps powered by Wolfram Alpha, etc. And guess what? All the teams with great apps won a free Firefox OS Developer Preview Phone.

So another trip to Bangalore, well spent! (And a few other incidents that happened and I am not blogging about! 😉 )

The power of Communities

Communities are awesome! Not because I am saying so, but because I have tried and tested this out. I am talking about our own Programming Club.

There was a time when, people would say there was no flow of information from the “pro”-s to the people who wanted to learn. They didn’t know where to begin, where to start. The need was there to bridge this gap.

At the same time, Facebook was one thing that was used the most in our institute ( I don’t need to give any justification for this 😉 ). So why not make Facebook a medium for consumption of information, make it the channel for everyday discussions that should be there?

So, one random day, the Programming Club, IIT Jodhpur group was born, over a random idea that spawned when Nishchay and I were talking. The group started out small in number. We did not add everybody we knew. We wanted the group to evolve – to grow into a community. We started out by posting different links ourselves, commenting on each others post and so on. Reason? For the culture to start of asking questions out in a group and sharing stuff that we discover, somebody has to take the initiative and do it.

It evolved just as we expected, it behaved as a community a mini-social network. The people we added, added their friends and this ripple effect grew. So the group that stood at 15 members for the first few days now stands at 329, and we are still growing.

The spirit of sharing knowledge also came by itself, it was not only us that shared the links, but people came and shared tid-bits of info that found all over the web. They began to ask questions. And it worked better than StackOverflow, where things are formal and you are answered by somebody you do not know, here you would get instantaneous answers by the seniors themselves, or anybody who knows the solution.  That’s the power of the community – you know you help, because next day when you will need help there will be somebody else there for you. It connected seniors, juniors, alumni, outsiders and even faculty alike on the common ground. We could see our group becoming useful when we used to see teachers as well as alumni joining the discussions.

Sometimes discussions have been productive, sometimes inflammatory. Newcomers have asked questions and got their answers. But what we have accumulated in the process is perhaps a vast knowledge base of our collective efforts. Its perhaps greater than any wiki could provide. We can scroll down the group to see the posts back in the early days or use the search feature in the group (I wonder how many of us use that) to throw us the relevant information.

That’s the power of creating a community around which people want to connect and share. Join the Programming Club community now.

Becoming a Mozilla Contributor

Firefox is one of those open-source projects that I have used since its version 1.0 and have been using it since then. Since this July, I started contributing patches to the project. Contributing and helping develop something that I love to use and giving back to the community and helping develop a product that so many people use daily is something awesome. In this post I’ll share my experience as a contributor.

I started off as a newbie, some basic programming knowledge (I am not a Computer Science student anyways), but always wanted to give back to the community. I think this is what sets Mozilla apart from the rest. They welcome new contributers and a very well documented docs give a good boost to people who are starting off with developing stuff.

  1. The initial step for anybody would be to build Firefox from the source, the details of which can be found on their MDN wiki. Once I had the initial build done, I wanted to work on something that would be really very easy to solve but at the same time get me familiarized with the source.
  2. Luckily, Mozilla had this thing called mentored bugs, where we have mentors to guide anybody working on these. The easiest way to find out a bug to work on would be to use Bugs Ahoy by Josh Matthews.
  3. Once you find the bug that you want to work one, you can get the bug assigned to yourself and then start working on it right away.
  4. Once you are done, create a patch and post it for review from your mentor or the owner of the module you are working on. They may suggest changes, then just update you patch accordingly and post it once again for review.
  5. Once you get a r+ (ie. the patch is approved), your patch is tested on Mozilla Try Servers and once it passes all tests it will land in the source tree. Thats it, you are done with your first patch! Just repeat these steps and you start working on your next patch.

My first patch was for shifting the position of the Web Console Window from the top to bottom of the window. Although I making that change was easy, I had to update the tests as well. It was the first time in my life that I ever wrote a test. My mentor for the bug Mihai Sucan helped me readily with it, and I had no problem writing my first tests.

The experience is really amazing, you can hang out on IRC, talk to anybody and ask for help and people are there to help you out with any problem. Another thing that I do often is add myself to the CC list of a bug that I am interested in and so that when any new development occurs I am notified. That way you get to learn how that part of the code works and what the patch is doing.

You get to interact and work with a lot of great people, which perhaps you will never get in your university. I have worked with Josh Matthews, Victor Porof, Yoric, Jared Wein, Ms2ger, Boris Zbarsky, etc. (sorry if I am missing someone) and they are really helpful and helped me out with anything that I got stuck on. A tweet that I came across really captures this spirit:

The thing I really learned while writing my patches was that, the people who have mentored me in the Mozilla community actually actively encourage inquisitiveness. People ask each other questions and help each other out or they say who else in the community may know about it. This openness is on of the greatest spirits of the community, which also helps newcomers to get easily associated with such an enormous project.

Building a Better Web

Note: This post should have come earlier. But endsem exams and few other things played their role well in delaying this.

November first week was a worth remembering time in college. We had Nimble 2012 – our intra-college technical festival. Nothing could have been a better opportunity to get people acquainted with the open web technologies. A few days just before Nimble, a session for people to get to know the ways in which they can start contributing to Mozilla was organized. Things like why the open web was important and how Mozilla and we as normal people can advance it further. I then proceeded to show people the different avenues to contribute – from coding to testing, from localization to design. You can get the slides here and a set of pictures can be found here.

During Nimble, the enthusiasm of students were unmatched. Events were organized keeping in mind that any newcomer to the HTML world can also participate and better still learn. The major event that I loved and I think many other have loved as well was KillFlash. You must have guessed it by the name only. It about creating some web app purely on HTML, CSS and JavaScript. No server side and mainly no Flash, using the new HTML5 APIs.

This event saw a real quality of ideas that were thrown out. Things like Speedometer (one that measures real speed and not just a graphic), Travelogue apps and TicTacToe were built purely on web technologies like Geolocation API and Canvas. It was a great opportunity for interaction and learning as well, as juniors sat down with seniors and tried to get their hands dirty on HTML5. The enthusiasm in the people were evident from the fact that people were even running around with laptops just to check their speeds in their speedometer.

All said, it was a great time. People got a first hand experience in carving out some useful apps purely on web technologies. Deven Bhooshan and Jitendra Choudhary deserve a special thanks for their hard work in putting up such an event.