Monday, October 17, 2011

Working with Vim

Many newcomers to the world of Linux and the Linux programming environment are scared of Vim! Similar was my situation a few months ago when I was reliant on Eclipse CDT for my programming needs. I had acknowledged the flexibility of Vim at the first stance and was willing to try it since quite long; after all, there had to be a reason to why some of the most prolific programmers I have met were not willing to move ahead of it.

Working with massive projects, I discovered the answer-
When abstraction eases out things for you, you tend to enjoy its benefits and avoid looking into unnecessary details with all your focus on implementation. When you are in the urgency to begin outputting, you tend to work this way leaving out the details for future research. That's a newbie approach.

But when you are used to stuff on a daily basis you look for ways to shorten repetitions so much that you wish certain aspects of life are fast-forwarded in macro style. Even an unnecessary mouse click becomes heavy! When you do not want to bother your brain with minute things and reserve it for that juicy algorithm/system design you had planned all the way, its your Peripheral Nervous System that readily volunteers for handling teeny-weeny issues. That's what Vi(m) exploits. Its commands are a bit hard getting used to in the beginning but once internalized, you can even use them while dreaming!

I am loving the tool! Certainly some things win hands down.

Friday, October 7, 2011

Danni, you made my day!

The grieving effect of Jobs' demise had just began to ruin my mood (he being one of my role models) when Danielle's honoring gesture made my day!

October 7th is Ada Lovelace Day. A day that showcases women in science and technology by profiling a woman technologist or scientist on your blog.

This calls me to write about an influential woman in technology I know of.
Though it won't be hard to figure out but if you ask me who is my Ada, she is-

Danielle was the one who introduced me to the FOSS developer world and continues to hold immense trust in me. An unprecedented optimist full of ideas and always ready to help. Oh she knows the Linux box inside out and has the answer to any system related issues I face ever! No doubt she loves penguins (the real ones) and is playing with them (the tux here) since the age of ten [edit: not age of ten but tenth standard] when her dad gifted her a Linux CD. She loves her work a lot and I have even caught her working on a Sunday!

She is a super skilled developer who is very patient (a rare combination because codes make people go crazy at times. ;)  When asked, how are you so patient, she says, "I also do my screaming locally, when there is no one to hear it, but occasionally my housemate."

Her hobbies are playing saxophone, photography and lately, swing dancing and playing netball too. And its worth mentioning, I have never seen a more concerned environmentalist as her before who even cares about the pests infesting her chilli plants [?].

Thursday, August 4, 2011

Will not be able to make it to the Desktop Summit this time

I applied for a business visa for the first time and it was refused :(
I have filed a remonstrance appeal against the decision as the document work on my part was perfect with the invitation and all other documents the GNOME travel committee and KDE e.V. had provided me, but processing it is going to take at least a month (as a visa officer told me over phone) and I wont be able to make it to Berlin before 8th even if I reschedule my trip.

I am deeply sorry for the change in the program caused due to this. I hope that Desktop Summit program committee will find a good replacement for my talk "Knock Knock! What is new?" which was scheduled for the 3rd day (8th August, 2011) of the conference. I am so sad that I won't be able to join GNOME Women's Dinner nor will be able to attend the Women's Networking BoF. I owe my apologies to the GNOME travel committee too for the changes they will have to make because of this. :(

Wednesday, July 27, 2011

Schengen Visa Interview

Just got back from my single day trip to Delhi for my visa interview at the German embassy. Spent two nights travelling in train and my legs pain now making me realize I managed to walk a lot there. Happy to be back home now. Interview went fine and I hope my visa and passport to be parceled to me within 4-5 days. Exited!!

Monday, July 18, 2011

Understanding the structure of a GNU Autotools project

How many times would most of the people using this have downloaded a project built with GNU Autotools and tried to build it following the INSTALL instructions and have been very contended finding success. Nearly half of them would have not needed to know anymore than that and half of the remaining would have got no time/energy to go any further. I am one person transitioning from this nearly 25% of pathetic developers to the other nearly 25% of happier developers.

To get an understanding of what all a project build with GNU Autotools comprises and to respect the presence of each and every file in a source directory, initially and intermediary to configure and build steps I seeked an Autotools reference. For a pictorial remembrance, I roughly sketched a flow graph (which is partially complete with only the most important files and processes which I need to know for now)
For more comprehensive details The Goat Book is an excellent reference (huge and to be taken in as need arises). Thank you Bharath for suggesting this book to me! :)

Edit1: Unwilling to update the diagram above. Refer to for precisely defined ones. Amazing resource.

Saturday, July 16, 2011

An Honest Declaration

I got involved with GNOME through the awesome program for Women Internships from December 2010 to March 2011. With that on end and with the fact that I had already completed my graduation I was expected to join any organization and be immediately productive. So was what I wanted to be but the "any organization" part does not suit me as I do not want to miss geniuses around me when I work in an office environment.

With the GNOME tag associated with my name, I was undoubtedly offered many positions from application to embedded development but with none I felt the level of satisfaction I got while working for GNOME. I began late compared to my more aware counterparts who started open-source contributions while still in University (and I really regret that) but I realize that to be where I want to be, there is no short-cut and I have to trace the complete path.

So, yes I want to be immediately productive and yes, I want to work with geniuses around me and to fulfill this craving of mine, I will continue providing services to GNOME as an honorary developer until I make myself worthy of being taken in by one of the many firms that have made GNOME what it is today! Although, this required me to convince a lot of people around me but I am happy that they are finally with me now respecting me and my reverberating ambitions.

Wednesday, May 18, 2011

The Inner Beauty

I have been using Linux for quite some time now but only recently got a chance to peek into the internals of the OS I work on in detail. Unix/Linux internals had been on my hit-list since a very long time.
I was looking for some comprehensive books on the same and came across the following (in increasing order of complexity, I list)-

All these go well with a bit of the classic Unix source archive or Linux kernal source or both to compare (which is what it makes more fun and makes you feel out of the classroom ;) and you'll be good without these too in case you lack time or energy..

Friday, May 6, 2011

Interested in starting and maintaining a GNOME user group (GUG) in your area? GNOME foundation will support you!

Hello all Brave boys and Smart Girls out there!

GNOME is a cool free desktop we all love and its always looking for smart, energetic and enthusiastic volunteers who can help in spreading word about it in various parts of the world! There is a big list of already existing GNOME User Groups but its still too small for what we have envisioned to achieve!

GNOME provides you support in your endeavor by providing you domain and monitory assistance in carrying out GNOME activities.

These links will help you kick-start and show the leader in you-

 I hope this quick list of ideas may also help you plan out your actions-
  • You should create a mailing-list on GNOME infrastructure for keeping people updated about the latest advancements and mass mailing all round the year.
  • Make a cool list of topics that you'll be covering at each get together and plan a theme or basic idea for each meet-up. You can get ideas from here.
  • You can also at times, invite an established FOSS identity which might not necessarily be part of GNOME and can get cool ideas to implement in GNOME from him or her.
  • You can definitely slowly incorporate hack-fests and documentation-fests as theme ideas provided you find people capable to take part in those.
  • Initially you may need to train a bunch of volunteers who can take care of introducing GNOME and GUG to large groups of people. They should better be clear, confident and convincing.
  • You will also need a group of technically trained people(or train them) who can identify and train potential contributors.
  • Do something that people can take back home with wellness in mind. Definitely keep some computers on which people can experience GNOME and maybe distribute a free GNOME3 CD to each member in the first get together and note their first response and suggestions to improve GNOME.
  • Keep in mind that part of the group is to involve new users and contributors and most of them might be having no idea of what GNOME is all about so you and your volunteers need to be patient in  handling them.
  • Celebrate GNOME Events :D
  • Never forget the GNOME Code of Conduct.

Rock on!

Saturday, April 9, 2011

Three Cheers for GNOME 3!!!


Everyone is celebrating the GNOME 3 release with over a hundred launch parties being organized in different corners of the world. At this moment of applause, I want to extend my sincere thanks to the GNOME Foundation and the GNOME.Asia Committee for choosing India as the spot for the largest GNOME.Asia event ever! Along with the student training sessions, it has definitely sparked a lot of awareness amongst students here as can be seen from post summit follow ups answering which I have spent quite some time after returning from Bangalore.

To the students I want to say a lot of things have to be learnt and this is just the beginning. Your enthusiasm is going to guide you into being successful contributor. I have seen many of you newcomers actively showing up on IRC on #gnome-love and I want to see even more numbers and even more women contributors, at least all those students with whom I had a one-to-one talk!

Thanks to the GNOME Foundation for sponsoring me enabling me to attend it. Huge targets were achieved in a manner which was real fun! I saved a wonderful collection of memories from Bangalore hackfest and Asia Summit 2011: 

Slideshow requires Flash plugin to be installed

More of these can be found on
For those who could not attend the summit or my talk in particular by any means, you can find my slides here.

Sunday, April 3, 2011

GNOME Asia Summit 2011 - Updates

Day 1 and 2 of the Hackfest begun from the Intel's HAL Airport Road office at Bangalore (thanks to Srinivasa for getting it arranged).
I got a surprise on the first day sent to me by Empathy maintainers, Guillaume and Xavier =)

Thank you both for this awing surprise! That was really motivational.

The Hackfest was kick started with a round table deciding upon the tasks to be accomplished during the five day event and ended with a wrap up of the entire day's activities done by each person to analyse the effectiveness and time utilization.

I volunteered to assist with marketing and organizing besides hacking.
In this while I had been trying to get more media contacts for interviewing our delegates and covering the event. Two of them from Linux format whom I contacted about a month ago actually arrived here on April 1. We were able to arrange discounted accommodation for them in the same hotel as where we stayed and they have been doing their job well without bothering anyone during working hours. I was made the newest addition to the GNOME Asia Organizing committee and tried to give my best to the role and provided my point of views and ideas whenever necessary, about possible ways of spreading awareness of GNOME in Asia, keeping the often overlooked facts in mind.

Hats off to the release team for worked really hard and preparing GNOME 3 ready for release ahead of time (not to mention the April Fool's prank was unexpectedly adorable ;) I had been observing the extensive amount of work a release requires and sleepless nights the release team members spent busy writing release notes.

For Empathy, I was able to begin making changes on my hugest branch for persistent chats which involved studying about Webkit and Pango. I followed up with the Usability team for their useful input on the design changes required to be done in Empathy for this and also discussed it with Allan Caeg. I reported and pushed a patch for a small MUC usability patch and with Fred Muller's help, found out two file transfer bugs in Empathy<->Pidgin interaction over which I'll be working soon after this to make him happy!

Before the summit, I got a peppy GNOME 3 T-shirt and Free Software promotional stuff including stickers I decorated my laptop with-

On April 2nd, the first day of the summit, I attended keynotes by Brian Cameron and Vincent Untz and also his next talk on Building GNOME on build service and SUSE studio which contained some notable points for me. After this, I spent some time at the help desks with students new to GNOME and Linux in general and tried to ease their Linux fear clearing their basic doubts about migrating from Windows to any Linux distribution and explaining its benefits. Tried my hands over OpenSUSE for the first time on a demonstration system and learnt about it from Manu Gupta who has been supporting it since over an year now.

I'll be giving my talk on "Contributions of a newbie to the free desktop's Empathy" tomorrow! Be sure to attend it on Track 2. Will be updating more pictures soon!

Monday, March 28, 2011

GNOME Asia Summit 2011 - Adventure Begins ;)


Today I landed Bangalore, the venue for GNOME Asia Summit, 2011. My travel was sponsored by the GNOME Foundation. Other than Bharath Acharya, the backbone for the event, I met Srinivasa Ragavan, Pockey Lam, Vincent Untz, Andre Klapper, Frederic Peters and Frederic Muller, Allan Day, Ryan Lortie, Josselin Monette and Andreas Nilsson today! We had lunch together, walked up to a nearby mall and talked over a lot of stuff! It was fun! Hoping to meet the other Hackers and Marketing, Design and Release team members in the coming days.

GNOME Hackfest begins tomorrow. 

The week ahead is going to be busy but full of adventure! :D With lots of registrations for the summit already made and student registrations going free, a huge audience is expected for the launch party and GNOME 3 is catching the mood!

Will be adding on more related details as I get time.

Monday, March 14, 2011

Contact Blocking and Report Abuse to be available in Empathy3.0

Many users had requested this feature (bug) and it is now available for all to use.

Now Empathy supports blocking/unblocking contacts on per-user basis for connections that support contact blocking (for ex. gmail) and report abuse for connections that support this feature (though currently there are no connection managers implementing this). Danielle completed two branches for "Contact Blocking" and "Report abuse" last month and I recently re-based them to master for her which took some time since the branches had diverged  much.

Here a few snapshots of the interfaces introduced-

The Blocked Contacts can be viewed and managed with Edit->Blocked Contacts menu-item
in the main window to open up the following dialog

Blocked Contacts Dialog

...on which you can perform usual live search.

One can right click individual contacts in contacts' roster and on selecting "Remove" he'll 
notice this extra "Delete and Block" button, if supported.

The Contacts->Block Contact menu item in chat windows is a check menu-item that can be toggled

The subscription box provides a convenient way to right away block a contact without need to first add him or her.

Confirmation dialog that would pop up on each attempt of blocking a contact

On completion, Empathy was in string freeze while getting ready for release, and the ready-to-merge branch was too cool not to be available in this release, so Guillaume requested a freeze exception from the i10n team which was granted and the branch was finally merged! :)

Wednesday, March 2, 2011

Recovering data from a broken hard disk

Some time ago, my computer's hard disk broke and I didn't had a recent backup copy which increased my pain.
I hope no computer dependent ever faces such crappy situation. Just like a burnt child dreads fire all life, I have made it a habit to backup my system data at the end of each day (backintime is a super fast tool) and monitor the healthiness (SMART status) of my hard disk's regularly!

Here I describe how I recovered my data in that situation. Most of the commands mentioned here will require root privileges.

It happened one fine day when I started my computer and after making some changes on a set of files, tried to save them for testing. System refused and reported that my file system was read-only. Without thinking much I tried to restart my system and it never opened up in GUI. I ended up with unmountable partitions-

mount: mounting /dev on /root/dev failed: No such file or directory
mount: mounting /sys on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed: No such file or directory

Target filesystem doesn't have requested /sbin/init.
No init found. Try passing init= bootarg...

and then it asks me to enter commands in Busybox.

On much googling I found this somewhat useful.
I decided to use my Ubuntu live CD to recover the data, check the drive's status and reinstall the system if possible. The disk utility reported two bad sectors and when that happens, there are more to follow.
Broken disk was not really bad for my PC was still under warranty but I was worried about my data.
In panick I decided to use the dd command to create an image of the partition on a blank external drive.
I got this error:
ubuntu@ubuntu:/$ sudo dd if=/dev/sda3 of=/media/2c0adbca-f37e-4f53-b975-8c7a99ee2757/sda3.imgdd: reading `/dev/sda3': Input/output error5341584+0 records in5341584+0 records out2734891008 bytes (2.7 GB) copied, 162.043 s, 16.9 MB/s
Then Danni suggested me to use ddrescue as a tool to copy my disk off. ddrescue is like dd, just that it retries, skipping bad bits.
So I tried to install ddrescue onto the live CD but each time apt-get kept getting stuck while unpacking, in D-state (ps aux | grep dpkg showed the unpacking process' status  Ds+ which means uninterrupted sleep.) Processes in D-state cannot be killed until system is rebooted and are termed as zombie processes.

Dismounting the corrupted partition didn't help either, I'm not sure why.
The syslogs kept displaying IO errors on device sr0 which is the cd-rom usually, so I instead burnt Ubuntu rescue remix (which has many rescue tools including ddrescue pre-installed).
Then in hurry and without knowing the consequences of writing a large file onto a MS-DOS file system (which was what this external drive was formatted with), I started creating the corrupted file system's image with the rescue remix.

My disk was spacious enough but the process halted reporting disk to be out of space.

My bad, I doubted this was because of mismatching file system on my external drive and thought of  formatting my external drive with two partitions (for the first time):  ext4 for the image and NTFS for the rest. For this I studied the fdisk and parted commands extensively. I eventually could make a large enough ext4 partition but something went wrong with magic numbering when fiddling with fdisk. The image was ready within a second which smelled of something wrong! :-/

The reason for image creation faliure turned out to be the disk's file system. MS-DOS restricts files sizes from being more than 4GB[?] in size. Danni told me I could save the image (which is nothing but a byte-wise copy) to any file system with larger file sizes permitted (not necessarily ext*), so I deleted all partitions and made a single fully stretched one (using fdisk utility). I formatted it with NTFS whose data I would be able to see using any OS like this:
mkntfs /dev/sdc
where sdc was the external hard disk (mount -l command shows currently mounted partitions or df -T could also be used to check this).

Then, with all other partitions unmounted (umount command) and only the external disk mounted, I ran the ddrescue command. The steps were:
  • Mounting the external hard disk file system I was writing the image to (sdc1 in my case) if not yet mounted:
    mkdir /mnt/target
    mount /dev/sdb1 /mnt/target
  • Writing an image of corrupted partition (sda3 in my case) to the file system mounted:
    ddrescue /dev/sda3 /mnt/target/ddrescue.img /mnt/target/ddrescue.log
This ways, I was able to create my image with corrupted data skipped.
Checking the image using e2fsck couldn't succeed and I needed to run fsck manually:
fsck -y /mnt/target/ddrescue.img
FWIW, my image on check (without repairing it) reported:
error: Inodes that were part of a corrupted orphan linked list found
Now, rerunning check reported the file-system's copy to be clean and (hopefully) repaired and ready to mount.

I tried it using mount loop (which is just a way to mount a file as a file system) as:
mount -o loop /mnt/target/ddrescue.img /mnt/recovered_sda3
where /mnt/target/ddrescue.img was treated as device and /mnt/recovered_sda3 was the desired mount point directory. Now I was able to use  /mnt/recovered_sda3  just like root directory with all my data in /mnt/recovered_sda3/home! :D
I tried to format my corrupted partition and even to delete the entire partition on the faulty disk but could not do it.
Finally, I installed Ubuntu on a new hard disk afresh, mounted my external drive onto it, mounted the recovered partition's image and copied my /mnt/recovered_sda3/home onto /home :
 rsync -auvxz --progress /mnt/recovered_sda3/home/ /home/
(keeping the trailing '/' intact)

With that, had my computer back to what it was before the snap!

Had I had faced this situation on a healthy hard disk (as sometimes happens if the computer suddenly shuts down while booting) and if direct checking and repairing the file system using e2fsck/fsck failed, I could have copied the repaired image of the partition bytewise back to the same device like this:
dd if=/mnt/target/ddrescue.img of=/dev/sda3
Thank you Danni for guiding me through this and saving me a lot of  time and Google searches.

Friday, February 25, 2011

Internship updates...

Hey people,

Didn't get chance to blog about what I had been doing lately so here's a compiled mix of it all.

Good news first:
  • Now Empathy multi-user chats are separated from the chat-room windows they are displayed in. i.e. users will be able to join/leave chats without closing the room [commit].

    I am working on the opposite i.e enabling the user to continue being connected to a chat when chat-room window has been closed (bug).

  • The /part command is working for chat-rooms and private MUCs (bug [commit])
    UPDATE: There was a small fault in part message construction in telepathy-idle. It was not sticking to correct format of PART messages as per RFC 2812 sections 2.3.1 and 2.3.2 which was preventing the full part message from being displayed to the members. It has been fixed in this bug now.

  • To prevent a user from deleting significant accounts like freenode from list of networks, a new "Reset Networks List" button was added in the IRC Network Chooser dialog (bug [commit])
New things I learnt in this phase:
  • Insight into telepathy-idle
  • Using Wireshark to monitor packets sent to and received from a network
  • Conflict resolution after rebasing.
    To help me gain more experience with conflicts, Danni has given me two massive branches to rebase.

There were some not so cool things also like, I started my work on notification for enabling/connecting a disabled/disconnected account when trying to connect to rooms affiliated to it (bug) but it eventually turned out to be blocked by this bug. There must be some comparison workaround used by Empathy to keep things working which I am yet to discover! A particular horrible thing was my hardisk snap and not having an up-to-date backup added to it but I was happy to be able to recover my data (thanks to Danni). It was another learning experience and I'll dedicate a separate post to it.


Gnome.Asia Summit 2011 will be held in Bangalore, India this time. I am happy to get a chance to speak about my internship experience in my talk- Contributions made by a newbie to the free desktop's "Empathy", in front of such assorted community of developers, documenters, marketing people, GNOME users and prospective contributors. I am particularly exited about getting a chance to see the biggies of this world! :D

Wednesday, January 26, 2011

India celebrates its 62nd Republic day!

This one's is for all proud Indians and all world citizens who are happy for the republicans of the largest democracy in the world! :)

Today is a day to retrospect and be thankful to all those who brought a revolution to the nation and contributed towards the preparation of a permanent constitution for its people and for their future generations to be able to live a just life, in peace.

Monday, January 24, 2011

Internship - Week 5

The much awaited "Save all' button feature of Empathy's debug window is now in a working state. :)

I started working over this one in my 'Save all' button branch as my second ever bug to be fixed for Empathy but insufficient experience in asynchronous programming and debugging caused it to stand by. This week I went back to it and with the past one month's experience, it was all play!

Here's a shot.

This "Save all" button will be useful when users face issues and are unsure of what part is causing a particular problem. It could be the connection managers, mission-control or parts of Empathy itself. So with this branch merged, instead of saving individual logs for each service selected using the service chooser, one will need to simply use this button and have a compiled log saved on disk.

I made another not much observable change in this branch too. The older save button used to fetch log messages from the model which was updated from the cache and was used to display the messages in the main view. To make both saving tasks work coherently and to avoid code reuse, I changed it to load messages directly from the cache like what our new "Save all" button does.

There was this another bug evident using telepathy-gabble 0.11.5, about which I also mentioned in my last post, where, in MUC chat window tabs the typing icon was not getting correctly updated [bug]. I begun with a patch for it but after discussing it over IRC, finally closed it as the typing icon in MUCs is no more relevant when the typing icon is displayed next to the composers now.

Monday, January 17, 2011

Internship - Week 3 & 4

Hi all!

The passed week and its last, I worked on the following:

The last feature was a proposal that caught my eye while browsing the empathy MUC issues.
Having the knowledge of who is typing in a chat room in real time would be quite useful. This was possible using "composing" states obtained from chat state notifications (XEP-0085). Although one-to-one user chats in empathy provide this facility but private chats and multi-user chat rooms were still deprived of this feature.

While working on this, Danielle helped me with chat state observation and discovered a telepathy-gabble bug causing unexpected parsing of incoming chat states as a part of this endeavor, after whose resolution I was able to pursue my tasks at hand. Hence, to test this work out, you'll need the bleeding-edge telepathy-gabble too.

Here are demonstrating shots for the same:
Private MUC

Chat room

So you can see that with the gabble bug rectified, now the chat window tab typing icons also work but they are a bit faulty. "Why", is what I am looking into!

Tuesday, January 4, 2011

Internship - Week 2

Hi there,
A very Happy New Year 2011 to all of you!
Last week, the Christmas and New Year fervor enthused everyone. The commits I feel weren't satisfactory and i'll be consequently giving more love to Empathy this week.

I submitted-
Some of my time was spent figuring out why /nick command behaves weirdly in Jabber MUCs and am currently working on this bug.