A Malayalee Developer at WCI 2016

I was fortunate enough to attend the WikiConference India, second of its kind held at Chandigarh, Punjab. It was a whole new experience! I met people from different communities of India and boy, are they passionate about their language!

As a developer, I was quite overwhelmed by the technical requirements and needs of the language community. It’s amazing how they have built such incredible applications, widgets to support their communities. The crowd at WCI saw people from all walks of life, from software developers to school teachers to homemakers.

What was unbelievably amazing?

  • Community Bonding – I saw people from different communities help each other out despite the language barrier! That’s when the slogan, ‘Unity in diversity’ really kicks in.
  • Sharing Knowledge – Afterall, isn’t that what Wikipedia movement is all about? Whatever little you knew, you shared that, be it technical or non-technical.
  • WikiWomen – More like WonderWomen! God, it’s beautiful to see a bunch of women so dedicated to the Wikipedia movement. All of them so eager to learn and share!
  •  Malayalam Community – Such a proactive group of people! I never knew that Malayalam community is a rockstar among the Indian language communities. They edit such large number of articles to Malayalam and it’s one constantly active community. Proud Malayalee here 😀

WhatsApp Image 2016-08-24 at 20.03.14.jpeg

  • Punjabi Community – Yet another amazing community, great hosts. It was great to know that many students of the Chandigarh Group of Colleges, Landran who volunteered for WCI ended up being Wikipedians! (Kudos to your first edit!)
  • Meeting Developers – I got to meet some developers which was awesome because it was great to learn about their work. New developer friends, yay!

Aftermath

I’m still in contact with many beautiful souls I met at WCI. We are planning events, helping each other and above all inspiring each other. I’ve been away from Mediawiki for a while, and this conference has reminded me of how much I miss the amazing community and contributing to Mediawiki/Wikipedia.

Looking forward to the next WCI!

[GSoC] Midterm Evaluations

It’s been over a month after the end of the community bonding period and the start of the coding phase of GSoC which in turn made way for the Midterm Evaluations. The Midterm Evaluations extended for about a week from 27 June to 3 July wherein the student will be evaluated by the mentors for the work done so far. The student also have to submit a evaluation report on Melange which has few questions on mentors and project.

Let’s move on to more project specific details, but wait, if you don’t remember what my project was all about you can read about it here 🙂

What all happened before Midterm :

    • Completion of Minimum Viable Product
      Now, this was not easy folks but was so much fun. I had to complete four interfaces for the following features :

      • Create newsletters ( Read more )
      • Announce a new issue of an existing newsletter ( Read more )
      • Subscribing and unsubscribing to/from a newsletter ( Read more )
      • Receiving a notification for new issues of a subscribed newsletter – Echo notifications ( Read more )
  • Deploy in Vagrant
    Every time a feature is done, it is tested and deployed at our Labs instance here. If you look at the main page, you can see all the Special pages related to each feature. Checkout the screenshots of two of the Special pages:

    Special:NewsletterManage

    Special:NewsletterManage

    Special:NewsletterCreate

    Special:NewsletterCreate

 

 

 

 

 

 

 
 

 

 

 
I learnt quite a lot and enjoyed a wonderful partnership with my mentors, Tony Thomas and Quim Gil. Cheers to the Newsletter team !

Community Bonding Period – Newsletter Extension for Mediawiki

Community Bonding Period of GSoC’15 ( find more about GSoC here ) students culminated on 25th May 2015. As for the community bonding of Newsletter extension, we started off with IRC meetings trying to decide the basic structure of the extension. Later, Quim Gil ( mentor ) suggested that we focus more on developing a prototype for a minimum viable product which would serve as a platform to further build upon. We have achieved quite a lot during the community period – a decent, simple plan which will be the foundation for the extension in the long run. Thanks to all involved! ( Ckoerner, 01tonythomas, Moushira, Quiddity, Bawolff, Isarra, Qgil )

  • Work done (environment setup, links to patches merged etc.)

  1. Requested for set up of labs project for newsletter extension. Project created and successfully ssh-ed to bastion.wmflabs.org.
  2.  Set up web proxy for the newsletter-test instance
  3. After a number of rounds of discussions, a proposal for a minimum viable product with necessary features was put forth.
  4. Created tasks for features in MVP and organised them on the MediaWiki-extensions-Newsletter Workboard
  5. Decided on first feature to work on : Create Newsletter

    An early prototype of newsletter subscribing feature

    An early prototype of newsletter subscribing feature

  • Lessons learnt

  1. When the project gets more exposure, more developers drop in to suggest ideas. And these ideas make a huge difference to the intended plan making it simpler and elegant.
  2. Plan before you code.
  • Problems faced and solutions found

    Initial weeks were uncoordinated due to exams, time zones, absence of a plan. With the second IRC meeting, many decisions were taken including the initial proposal of MVP and Agenda for meeting at Lyon Hackathon. All panned out after the Lyon Hackathon where the MVP was finalised and implementation of first feature decided.

  • Any changes to the original plan

  1. New feature added : Announce a newsletter
  2. Special:NewsletterPublishers page introduced with simpler and minimum fields. For more details: T100125
  • Minimum Viable Product for the project decided

    ( pasting from Proposal for Minimum viable product for Newsletter extension )

    The features listed are the ones aimed to be completed before midterm hopefully.

    Publisher

    • Create a newsletter – T100125
    • Announce a new issue of an existing newsletter

    Reader

    • Subscribing and unsubscribing to/from a newsletter
    • Receiving a notification for new issues of a subscribed newsletter – Echo notifications
  • Communication plan with mentor decided

    IRC( #wikimedia-ect ) is the main mode of communication with mentors. Logs of IRC meetings so far:

    1. Meeting 1
    2. Meeting 2
    3. Meeting 3 ( Lyon Hackathon )

    Why community bonding? Well, the key to collaborative development is the understanding among the members of the community developing the software, be it a designer, developer or a data analyst. Obviously when you are working on a project for a large scale Open Source organisation you’ll have a number of developers dropping in to help out. Through community bonding, you get to know who is who ( is the person a designer, a developer or he/she into management ? ) and with developer interactions become one among them.

     

     

     

GSoC 2015

Great news !

I’ve been selected for the prestigious Google Summer of Code this year ! For a few months starting now I’ll be working on a Newsletter extension with amazing developers from the Wikimedia Foundation. In addition to the support from this awesome organisation, I’ve two other guiding stars – Quim Gil and Tony Thomas of WMF to mentor me throughout the project period.

Checkout : Newsletter Extension for Mediawiki and GSoC proposal for Newsletter Extension

For those who are wondering about ways to become a GSoC student themselves, these pointers will help :

0.  Read About Google Summer of Code

  1. Find an organisation matching your interest and skill set. You could go through the list of accepted organisations of previous GSoCs and find out( Accepted organisations 2015 ). Understand that organisations apply for slots and might or might not get accepted for GSoC.
  2. Fix bugs for your organisation! – Go to the organisation’s bug tracker( Bugzilla mostly or Phabricator in Mediawiki’s case ) to find trivial bugs to start with.
  3. Log into corresponding IRC’s, join mailing lists and start interacting with developers. When in doubt ( if the doubt persists after meticulous googling 🙂 ), drop a question in the IRC channel and wait for answers
  4. When GSoC application period starts, find an interesting project and write a well defined proposal. Ask for reviews. Do microtasks to prove yourself a eligible candidate.
  5. Voila! Wait for results 🙂

To wonderful times ahead!

Using JSON data with AngularJs

Many use JSON format for storing and exchanging data (simply because of its easiness). If you are in middle of creating your angularjs app and was wondering about storing your data somewhere in a way that it can be easily accessed, then JSON it is. Plus, JSON goes well with AngularJS to make your job even more easier.

Let’s look at an example where I try to display JSON data  with help of controllers and  angular directives. Suppose I’ve a file called animals.json which looks like this:

{
"type":"animals",
"items":[
        {
        "name":"lion",
        "src":"img/animals/lion.jpg",
        "url" :"/path/to/movie1.mp4"
        },
        {
        "name":"peacock",
        "src":"img/animals/peacock.jpg",
        "url" :"/path/to/movie2.mp4"
        },
        { 
        "name":"cheetah",
        "src":"img/animals/cheetah.jpg",
        "url" :"/path/to/movie3.mp4"
        }
        ]
}

Now I use the $http service to obtain the contents of my JSON file and then store it in the ‘list’ property which will be later used in partial pages. A prototype of the controller would look like :


yourApp.controller('controllerName', function($scope, $http) {
			
		$scope.list = [];
		$http.get('animals.json').success(function(data, status, headers, config) {
			
			  $scope.list = data.items;
				
		})
			
		.error(function(data, status, headers, config) {
			  console.log('ERROR');
		});
		
});

Now all that’s left to do is to add the code in accordance with your need to corresponding partial file:



<div ng-repeat="item in list" >
	
			<img ng-src="{{item.name}}">
</div>

And that’s a wrap !

[Solved] Java error: Unsupported major.minor version 51.0

Recently I encountered the following error when I tried to run a Java file.

blog2

If you’re facing the same error, I’m here to save your day ! This error emerges because you’ve compiled your code in a newer version JDK and was trying to run it in a older version JDK. This was the version of my JDK (checkout the image below):

blog

Now to solve this issue :

sudo apt-get install openjdk-7-jdk

Now to set the installed JDK as your default:

sudo update-alternatives --config java

You’ll have to select from the listed JDK’s available in your system:

blog3

With this done, you are good to go !

Configuring msmtp with gmail to send patches using git send-email

When it comes to sending patches ‘send-email’ tool of git beats them all. You don’t have any trouble sending single patches or patchsets with this amazing tool of git. But before you take the reigns in your hands to send the patch, we need to configure ‘send-email’. Let’s see how:

  1. Give the following line in your command line:
git send-email 

If you get, git: ‘send-email’ is not a git command. See ‘git –help’ you need to install send-email. The following command should do the magic

sudo apt-get install git-email 

You have to enable ‘IMAP’ in your gmail settings. This can be done if you go to Settings in your gmail(click gear icon) and in ‘Forwarding and POP/IMAP’ tab, click one ‘Enable IMAP’. Now you need to configure msmtp with your gmail credentials to be able to send patches with git send-email. Firstly install msmtp:

sudo apt-get install msmtp 

To configure msmtp, create a .msmtprc file in your home directory and add the following to it:

account gmail
host smtp.gmail.com
port 587
protocol smtp
auth on
from username
user username@gmail.com
password *********
tls on
tls_nocertcheck
account default : gmail

Save the file. Please note that,  msmtp will fail unless we set the permissions of .msmtprc file to ‘owner can read and write’. To do that give the following command:

chmod 600 ~/.msmtprc

Now you can send patches with git! This is how:

git send-email --to recipient@domain.com patch_file

NOTE: If you get authentication failed error while sending, check your gmail for a email from Google notifying you of unauthorised access. Follow the instructions and steps and you will be sending patches in no time 🙂

Take a break

I had too much fun with my classmates decorating the Fresher’s Party venue. It did feel good to take one day off from FOSS lab(not that I don’t enjoy it!)

If you are feeling frustrated, lonely, unfocused maybe try doing something different from your daily routine. But do it with the one’s you enjoy being with – maybe friends, family. ‘Activities’ like chatting on mobile won’t do you any good for sure. Do something physical. Let some blood gush through your veins! I assure you that you will feel rejuvenated.

And on totally unrelated news, live for yourselves. After all, your conscience is the only person( I like to think of my conscience as a person rather than a thing) you have to satisfy. When you don’t do that, disappointment creeps in and that’s when everything starts to fall apart.

That’s enough philosophy for now I guess!

Workshop for school students

Hey there!

Yesterday was a great day! A pretty awesome one indeed. We had 8th grade students of Amrita Vidyalayam, Puthiyakavu come visit our computer labs for quite a long time 🙂 The FOSS@Amrita team gave them a taste of basic HTML and CSS. As always, the session started off with the epic ‘induction ceremony’ of P.P Rahul. He has a way of bringing out the smartness and cuteness in kids across the shyness border. Then my friend and colleague, Tony Thaikkanath took on the reigns and started off the technical sessions. His analogy of HTML’s head and body tags to that of a human body’s head and body turned out to be a catchy one. This was followed by many other sessions by Darshana, Durga, Anu and occasionally my selves explaining various HTML elements, CSS, client-server relation. We explained to them the power of Google and how they can use and search Google efficiently to enhance their interest in various subjects. Finally we discussed about cyber crimes and how to use internet safely.

The sessions were not theoretical. We demoed whatever was taught and the kids coded along with us. That’s when I found one boy who was scared —scared to even give pressure on the keyboard keys to type. I helped him type and understand the code he was trying to type. He caught up with the others soon enough. I felt a great sense of joy and satisfaction when I was able to help that little boy. I felt as if I achieved something that very day. Not an achievement that brings pride to me but fills me with pure joy. Later I found many other students like him. I and my colleagues were able to help them all. Kudos to us!

Introducing Linux Kernel

It’s been a while since I wanted to learn about Linux Kernel. This wish blossomed when I went through Shell scripting tutorials in my first year vacations. What I loved about Shell scripting was how closely I could work with the kernel. The power it gave me was immense. But as you know, ‘With great power comes great responsibility’ 🙂

Let me elaborate on what I understood of the word ‘Kernel‘: A kernel is an integral part or should I say the most important component of any Operating System. When a computer starts, the first program to run is the bootstrap loader.  This program loads the kernel into the memory and goes on to execute the init process. You can see that, out of all the components of an OS, kernel is the first one to be loaded. Once loaded, it remains in the main memory.

Kernel connects the applications with  the hardware. It manages the memory, sharing it with various kernel services. There’s much more to a kernel’s purpose. Let’s wrap up for now by saying a kernel is to OS just the way Watson is to Sherlock 🙂