The 3rd day of FUDCON KL started a bit sluggishly for me. May be because of brainstorming and hacking till late night. We (Kushal, Soumya and me) decided to work on a new app to display system logs in a user friendly manner. We named the application Tower log tower, in short, tlogt, after Twin towers of Kuala Lumpur 😉

During the first few hours of the day, we went to visit some tourist spots in Kuala Lumpur: Aquaria and Petronas towers. After we returned, we settled down for the on going talks. Amidst of various talks on the 3rd day of FUDCON, I was sometimes in listening mode, but for most time I was in coding mode. We decided to try something different in TlogT. The UI would be rendered by a Django daemon with all the WOW factor of HTML, CSS and JS. I was to code the Django server code, while Kushal and Soumya were working on writing the parsers for extracting the logs for various processes. In a few hours, we had a decent Django based functional desktop app ready. Although, quite some work remains to be done on the UI part.

There was Kushal’s session on Python for newbies in the afternoon. It’s always nice to see Kushal talk on Python. I don’t have the exact count, but I am sure that Python sessions by Kushal inspired many (including me and my friends) to start coding in Python. The ending keynote for the day was given by Abu Mansur Manaf. This should really boost newbies to become contributors 🙂

I spent the evening in the hotel room listening about various functional programming languages and features of the languages from hircus and Kushal. Later, we went out for dinner with the rest of the event crew members to a local food joint. I stayed up at night to see off other Kushal, Soumya and others who had to catch an early morning flight back to India. After bidding them good bye, I packed my bags and went to sleep.

FUDCON KL 2012 Day 2

Day 2 of FUDCON KL started with a talk on Fedora book by Joshua Wulf (for me Sitapati Prabhu). This idea is very intuitive for any one (especially newbies) to start contributing to Fedora documentation. Although, contributors need to know some basics of docbook, I guess that’s not tough.

There were many interesting talks for the day on topics like Ask Fedora, Transifex, Fedora Tour, etc. Soumay‘s talk on Fedora in Education was really inspiring. He shared how he initially started as a contributor and many things about DGPLUG‘s Bijra project. Following this talk, there was another talk by Soumya on Ask Fedora. This one explained to the attendees what is Ask Fedora, why was it needed and how it can be used. Soumya also explained to the attendees that Ask Fedora runs on Askbot (an Open Source QA forum) and encouraged people to contribute to Askbot.

After lunch, it was time for my and Mahay’s talk on Effective localization Crowdsourcing (using Transifex). Mahay stared the talk explaining to the attendees about localization, internationalization and it’s importance. This helped set the scene for the entire talk. Then I spoke on the various gotchas in the traditional localization workflow and how Fedora tried to get rid of these gotchas using Transifex. I explained to people about Transifex, what it does and why it’s so awesome. I also explained about the various super cool features in Transifex like crowdsourcingproject management, release management, Translation Memory, glossary, etc. I also told the attendees about how to contribute to Transifex.

Well, that was not all. It was followed by another session on How to internationalize and localize softwares. I took example of a simple Django app and explained how to i18n (using gettext) the app and extract the source POT file. Then I showed how to localize it using Transifex. I gave the attendees a walk through from creating a Transifex account to creating a project, resources, releases, forming teams, translating and finally to downloading translations and deploying it in their app. I also mentioned about other i18n methods available for different languages and directed people to the necessary resources. With this, I finally concluded my talk.

After the talk, it was time for some tea and then lightning talks. Christoph Wickert‘s talks on LXDE and Clouds were super cool. Michel also spoke on the ROX DE and ROX filer. We had some post session discussions and some group pics.

Today was the day for FUDPub. It was supposed to start at 8 PM at Sri Petaling Hotel. We reached the hotel and had some rest. Then we moved downstairs to join FUDPub. It was hell lot of fun out there.

FUDCon KL 2012 Day 1

I arrived at Hotel Sri Petaling at around 3 AM on May 18, 2012. After very less sleep, I woke up at 6:30 AM. After having our breakfast at the hotel, we left for UCTI (the venue for FUDCON KL) in a bus arranged by the FUDCON KL organizers. After reaching the venue, we got ourselves registered at the registration booth for FUDCON and we received our coupons for lunch and tea. It didn’t take long for the other attendees to arrive at the venue.

The first day of FUDCON began with a key note speech by Christoph Wickert on “Leadership in leaderless organizations” and how this is in action in Fedora.

Christoph Wickert speaking on “Leadership in leaderless organizations”

Christoph Wickert with his key note

After the keynote, it was time for the  bar camp. Although, many were skeptical about barcamp in the 1st day of a FUDCon, it turned out to be awesome. Many a people pitched their topics for the bar camp. Among others, I also pitched two topics:

  • Transifex: A developer’s perspective
  • Agile system tests in Django

FUDCON Attendees

Since there were a lot of topics proposed and there was limited time, the topics were shortlisted based on votes by the attendees. One of my pitched topics: “Agile system tests using Django” finally made it into the shortlist. The bar camp sessions were scheduled to start at 2:30 PM. Over lunch, I was having some nice conversation with Kushal, Michel and Soumya on various topics related to Open Source and the LUG related activities in our places.

Among the many interesting lighting talks I managed to attend some (though not all) talks: Improving collaboration with other open source projects, Fedora for students, Git, Fedora and packages, etc. I had my talk at 4 PM. I spoke on:

  • System tests are needed
  • Why we need fast system tests?
  • How the Django test framework makes system tests slow?
  • How can we remove unnecessary overheads?
  • How we run faster system tests at Transifex?

For this, I used this post from blog.transifex.com.

It was an awesome 1st day of FUDCON KL. I participated in my first bar camp and it turned out to be a lot of fun and exciting. We had some post-event chats and discussions while leaving the venue. I also had some long conversation with Joshua Wulf while heading back to the hotel on matters related to spirituality. This was an eye opener and I had many of my doubts resolved by the grace of an elevated devotee like him.

So, it was an enlightening day for me, both in terms of FOSS and spirituality.

Create a dummy Fedora repository (for Dorrie)

I have been fiddling with Dorrie lately. Dorrie is a web interface to create Fedora spins, remixes and installation media. But working with Dorrie requires one to have a Fedora repository at disposal if one has to build Live ISOs. I rule the possibility of downloading packages from the internet for testing. You need to have a local repository for testing it in a nice and efficient way. I tried to create a dummy Fedora repository with 0-byte .rpm files and tried to mock livecd-creator, but I failed. I forgot that livecd-creator installs the packages during the process of creating a Live ISO. Nevertheless, this attempt was not without any result. I fixed and updated Dorrie’s code to handle offline repositories.

Now, we (I and sayan) are working on another feature for Dorrie: building installation media (just like Fedora installation DVD). We are using pungi for the purpose. If my calculations are correct, then building an installation media leaves an option to use 0-byte .rpm files. But, this is not the topic of this post ;). I will talk on how to create a dummy Fedora repository.

Fedora repositories mainly have two important components for a Fedora version: releases and updates. All files in the dummy repository can’t be fake, the metadata files have to be there for real, otherwise the packages names won’t be found. I have devised a shell script for creating such a dummy repository.

# Destination directory


#file extensions to be touched

#patterns to exclude from rsync
EXCLUDE_PATTERN="--exclude=source/ --exclude=debug/ --exclude=repoview/
--exclude=x86_64 --exclude=Everything/ --exclude=Live/"

#This will create only the directories and 0-byte .iso and .rpm files
#Since the files created will have newer timestamp, when we run
#rsync for real, the .iso and .rpm files won't be downloaded
rsync -auvr $URL $DESTDIR --dry-run $EXCLUDE_PATTERN |
while read line; do
 if [ `expr match "$line" ".*/$"` -ne 0 ]; then
 echo $line
 mkdir -p $DESTDIR/$line
 elif [ `expr match "$line" "$FILE_EXTENSIONS_PATTERN"` -ne 0 ]; then
 echo $line
 touch $DESTDIR/$line

#Download metadata files
rsync -auvr $URL $DESTDIR $EXCLUDE_PATTERN --progress

This is just a sample code. The above code can be customized to do more versatile dummy cloning of Fedora repositories.

NVIDIA issues fixed on Fedora 16

This week, I upgraded from Fedora 15 to Fedora 16 on my Dell XPS M1530 laptop. This laptop has a 256 MB NVIDIA 8600M GT graphics card. The default driver for NVIDIA cards that came with the installation was nouveau. Nouveau is an open source driver for NVIDIA graphics cards and is under development. Things are becoming better and better with nouveau.

I ran gnome-shell for some time with the nouveau driver. 3d rendering worked nicely and without any latency. I did not find any other issue except for some overheating issues. So, I decided to switch to the NVIDIA’s proprietary driver.

Here is a good tutorial to disable nouveau and install NVIDIA’s proprietary driver in Fedora 16: http://www.if-not-true-then-false.com/2011/fedora-16-nvidia-drivers-install-guide-disable-nouveau-driver/

But, this would work perfectly if this was for Fedora 15. Fedora 16 comes with glibc-2.14.90-14 and the NVIDIA proprietary driver (the latest stable driver as of now is NVIDIA-Linux-x86-285.05.09.run). This issue has been reported at https://bugzilla.redhat.com/show_bug.cgi?id=737223. The issues I faced after installing the proprietary NVIDIA driver in my Fedora 16 machine were:

  • window manager behaving sluggishly
  • tab switch in applications like gnome-terminal, nautilus browser taking around 3-4 seconds (no such issues with KDE’s konsole)
  • System getting overheated
  • Increased latency in gnome-shell effects
  • Similar issues with window manager and tab switch on XFCE too

I guess everything depended on glibc were affected.

This issue could be fixed  by downgrading glibc to  glibc-2.14.90-4. I tried to do this to find that there are quite a few applications depended on glibc-2.14.90-14 in F16. So, I gave up the idea. I was looking for nvnews for any news from NVIDIA about fix for the above issue. And I came across this thread http://www.nvnews.net/vbulletin/showthread.php?t=122606 where I found about the current releases of NVIDIA graphics driver and the beta driver at http://www.nvnews.net/vbulletin/showthread.php?p=2498046. I was desperate enough to try the beta driver. I did:

and then follow through the on screen instructions.

  • # init 5

and logged in. To my surprise, everything was perfect this time. No latency in gnome-shell, no overheating issue. Everything is just fine. Now, I have been running gnome-shell on Fedora 16 in my laptop for over 24 hours. I did not find any issue with the NVIDIA beta graphics driver so far.

Me & FUDCON India 2011

I arrived in Pune for FUDCON on November 2, 2011. On November 3, 2011, I had an opportunity to visit the Red Hat office in the city and hang around with Fedora community members. I learnt more about the mechanism and importance of localization from Runa Bhattacharjee. In my free time, I also helped with some FUDCON related work. I  was able to meet Jared Smith, Joerg Simon and Robert Scheck for the first time in my life, talk with them. I couldn’t ask for anything better.

Day 1: November 4, 2011

Day 1 began with a speech from the Director of COEP followed by the keynote speech by Fedora’s Project Leader Jared Smith. Jared explained to people the various aspects of Fedora and how Fedora takes the lead in pushing the limits of FOSS development. Following that was my talk on Transifex. The audience included people mainly from the L10n domain. There were some mishaps during the talk. First, my Dell XPS laptop wasn’t able to use the projector; second, I had to use another netbook which I wasn’t used to; third, there were some power issues, and the netbook turned off and finally, there was power cut for a few minutes. What a chain of mishaps! I had to resort to reading the slides from my phone during the power cut. Finally, I used Kishan Goyal’s laptop to continue with the presentation. In  my talk, I explained the current features and upcoming features of Transifex. I explained it with a use case, starting from registering to advanced usage of www.transifex.net. The audience appreciated our upcoming market place idea and the Translation Memory feature. I also got feature request for having a global glossary for a particular language in the language page. It was really nice that the audience were so actively communicating during the session. I also told how to start contributing to the Transifex project and shared my experience working on Transifex so far: from a contributor to an employee.

After the lunch, I attended Heherson Pagcaliwagan‘s session on “Fedora web of trust” and got more insight into the use of GPG keys. We did a small workshop with Heherson on how to get introduced to each other, verify identity, share GPG key and sign it. Heherson also showed us how to encrypt mails using GPG key. Then I attended Joerg Simon’s talk on Fedora Security Lab and OSSTMM. Kital showed us a variety of security tools that can be found in the FSL, and mentioned others that need to be packaged. I must try out the tools in the FSL now. They are so cool.

Then I went back to the speaker’s lounge and started writing some code on Transifex. It was a great first day at FUDCON for me.

Day 2: November 5, 2011

The Second day of FUDCON began with Harish Pillay speaking about the community. Unfortunately, I was not able to turn up during the keynote, as I had to re create my slides on my talk on “Testing your Django app”. Because I had accidentally, deleted the folder which contained the slides. After I was done, I hurried to attend Arun Sag’s talk on “Creating web apps using Django”. I liked Arun’s way of presenting things to the newbies in a very lucid way. He used his classic Blog example for this.

Next was my talk on “Test your Django app”. As during Day 1, the projector did not work with my laptop, so I used Arun’s laptop for the purpose. I explained why tests are necessary, different testing frameworks in Django (doctest, unittest). Then I went forward to explain how to write simple unittests. For this, I wrote some tests for Arun’s blog example and used it so that the audience could relate things with the previous session taken by Arun. I showed some simple test cases and ran the tests. Then, I introduced the Django Test Client and spoke about its importance and features. After explaining things about the Test Client, I showed the relevant code and ran the tests again. Finally, I explained about coverage: what is it? why is it required? How to use coverage? I again ran the tests I had run before, but this time I ran them with coverage and explained how to read the coverage report. I haven’t been too happy with this session of mine. Now, when I think of it, for students who just got introduced to Django, the session on Django testing might have been asking too much. Anyway, the students now at least know something called Django testing exists. So, when they need it, they can learn.

After having lunch, I attended Siddhesh’s talk on “Security Exploits”. During the session, I could not but think that why I did not have someone like Siddhesh teaching me OS in my college. He was awesome. Back in my college days, I had tried reading about security exploits, but I did not get far. But during this session, thanks to Siddhesh’s explanations and my earlier reading, I have gained a better understanding of security exploits, especially stack smash attack, overwriting nearby entities in data region by string overflow, etc.

Following were two lightning talks on 1) How to deal with kernel panic? 2) Running external commands from Postgres. Yogesh in his talk on “kernel Panic” showed how to collect relevant data when there is a kernel panic. This data can be used for creating useful bug reports or for fixing the bug itself.

After attending Siddhesh’s talk on autotools, I joined mether’s talk on ask.fedoraproject.org or askbot. Mether discussed its roadmap and mentioned various feature requests. I picked up to implement a few of the feature requests. After the session, we had a group photo session of the almost all the people involved in FUDCON. Then all the speakers, volunteers and organizers went for the FUDPUB. I enjoyed a lot at the FUDPUB. I spoke with the community members, danced with them, drank Mirinda and ate some delicious food. It was just awesome.

Day 3: November 6, 2011

It’s the hackfest day. I decided to run a Transifex Testathon. I pitched the topic on stage and invited people to join me. I helped some of my friends install and setup transifex in their machines and showed them how to run tests. I started writing new tests for the watches addon in Transifex. I came across a chain of undiscovered bugs while doing so. It took me some time to write a proper test case for the watches and accordingly fix the bugs in the code. I also helped Kushal to get him logged into his Transifex account and creating a Transifex project for “Python for you and me”. Jared Smith, set up the tx client for “Python for you and me” and now PYM is hosted at https://www.transifex.net/projects/p/pym/ for localization. Shreyank, Vaidik and I had discussions on the roadmap for Dorrie. I setup Dorrie on my machine and played with it for some time. I decided to write tests for Dorrie the coming weekend.

Then, at the end of Day 3, in the auditorium, a cake was cut to celebrate this FUDCON along with quite a few photo shoots. The FUDCON organizing group and the volunteers from COEP did a great job to make this event go on smoothly.

FUDCON India 2011 is the first ever FUDCON in India and the largest FUDCON in terms of the number of participants. Apart from learning new stuffs and hacking, FUDCON provided a great platform for Fedora contributors to meet with each other and make new friends. It is also a nice experience to work with people whom I had known only in the IRC until now. I am carrying sweet memories of this FUDCON with me. These memories will help me focus more on contributing to open source and be a better contributor.

wordgroupz development news

For some time now, I have been working on wordgroupz. Since version 0.2, I have added some new features.

The new features include dictionary support: online webster dictionary from dict.org and offline wordnet. For implementing the online dictionary support, I used the server interface of dict.org. For offline, I used the dictionary databases of the wordnet application and the python-nltk library.

I also included wiktionary support this time. I used to find it tedious opening a notebook, browser to search wikipedia/wiktionary, copy-paste notes. That’s why I decided to get them all together under one hood – wordgroupz. I include a gtkNotebook : 1st page for showing, editing details of the selected word and the 2nd page for browsing through wiktionary and downloading pronunciations if available. I had to study urllib2, BeautifulStone, pywebkitgtk for the purpose.

I also worked on the new interface, added some custom buttons to the interface. I studied gtkNotebook, gtkToolbar, gtkStockImage, etc. I also improved some logic for the interface. Now, wordgroupz allows to add words without any groups and such words are put in an “no-category” group. Now, there is a “details” field for group-words. Groups can be deleted. I have to write the code to move the words to the ‘no-category’ group once its parent group is deleted.

I released wordgroupz version 0.3b today. I have to work on machine generated pronunciation for words whose wiktionary pronunciation are not available. I have to design the games and quizzes for wordgroupz. Lots of stuff to do.

Please feel free to try wordgroupz and suggest any improvements to be done.

Details of how to get wordgroupz was given on my previous post.