Last Saturday, on Jan 10, 2015, we had a Fedora 21 release party in Bangalore. It was held in the premises of Red Hat, Bangalore with the help and support of Archit and Humble, who are working at Red Hat, Bangalore.
Registration for the event started from around 9:30 AM and slowly people started dropping in. Over 40 people had turned up for the event. We started the event at around 10:30 AM with Archit giving an introduction about Fedora.
Then, I spoke on Fedora 21 release and it's highlights and Fedora.Next. This was followed by Neependra Khare speaking on Project Atomic and Docker. Then, we celebrated Fedora 21 release by cutting a Fedora 21 cake. Sayan did the honours of cutting the cake.
Following this, Sayan spoke on "How to contribute to Fedora". He explained in details the various teams in Fedora and how one can join one of them. He also mentioned about the awesome Fedora contributors from India and abroad, about their projects and how one can join them. He also touched on the tools needed to communicate with the Fedora communitylike IRC, mailing list, etc. Then there was a break for snacks. This was followed by an introductory session on RPM packaging by Sinny.
Finally, there was the open house, where people asked questions about Fedora and getting involved with Fedora, shared their experiences with Fedora. It was around 1:30 PM when we called it a day and dispersed on our own ways.
We are looking forward to have more Fedora meetups, activity days in Bangalore in the upcoming months, to help us contribute more and more to the Fedora community.
Today, we had a Fedora meetup in Bangalore, at HackerEarth's office. Although, there were only 4 attendees including ourselves: myself, Sayan, Ashwin and Puneet, we made the most out of the meetup. The meetup lasted from morning 11 AM to around 3 PM. Following is a summary of our activities during the meetup:
It was great to meet with like minded folks interested in technology and Open Source and hack with them. We are looking forward to have similar meetups every month. We envision these Fedora meetups to be a place where people can join and share knowledge, and hack on cool Open Source projects.
try.waartaa.com has been live since January, 2014. We have got quite some signups and some folks actively using Waartaa. Thanks to our code level optimizations, which has led to storage complexity for channel chat logs dependent only number of unique channels being listened to. We're also able to achieve good real time performace in our demo instance with ever growing chat logs. It's time to publish some stats about our demo instance.
Specs: 2 CPUs, 2 GB RAM (Linode VPS) Usage:
Specs: 8 CPUs, 2 GB RAM (Linode VPS) Usgae:
It was great that our proposal to speak on Waartaa at Flock, 2014 was accepted. So, I, along with Sayan went to Prague, Czech Republic last week to attend Flock. Flock was a 4 day event packed with loads of talks and workshops. It was like living in a dream at Flock. I was able to meet so many great people from the Fedora and Open Source community.
The day started with an opening note from Matthew Miller, the Fedora Project Leader followed by a keynote by Gijs Hillenius on "Free and Open Source Software in Europe: Policies and implementations". Gijs, an IT journalist, threw light on the state of adoption of Open Source Software by the European Union, it's success so far, things that did not work out and how politics is playing a crucial role in the process. Then I attended the talk on "Better presentation of fonts in Fedora" by Praveen Satpute. In the talk, Praveen expressed his concerns on the lack of good tools to manage fonts and that YUM is not sufficient for it. He laid emphasis on building a better infrastructure for managing fonts. This will help to grow community around fonts and better quality fonts in Fedora.
After this, I attended the talk on "Where's Wayland?" by Matthias Clasen. Although, I could not make much out of the technical tits and bits of Wayland, yet I got some insight into how Wayland plans to replace X11 and improve application security in Gnome. After lunch, Hans de Geode spoke on "Wayland Input Status". Here, I came to know about the complexities involved in handling events from input devices: mouse, touchpad, etc. and how they are evolving the input system for the upcoming Wayland integration. This was followed by a talk on "Predictive Input Methods" by Anish and Mike.
The day ended with a party at "The Pub".
The second day started with Pierre-Yves Chibon( AKA pingou) and Stanislav Ochotnicky speaking on the Fedora review server and how package review can happen without any bugzilla interaction. This tool will speed up the process of package review by eliminating time consuming to and fro communication between the package maintainer and the reviewer. The tool will also include integration with existing Fedora infra tools: FAS, koji, copr, etc. This was followed by an awesome talk on Ansible and it's usage in Fedora Infra by Aditya Patawari.
This was followed by the keynote on Novenna, the open laptop project, by Sean Cross. Sean spoke on how they built a laptop from scratch, how did the project start, the architecture of the laptop and their roadmap.
The rest of day, I was busy hacking on Waartaa and speaking people about it. Then, I attended the talk on "Rise of the Fedora Desktop: Gaming". I recollected the days I spent tweaking Wine to run various Windows applications and games on my Fedora box. I shared my good and bad experiences with gaming on Linux with Gergely afte the talk.
The second day ended with an awesome boat party on the river Vltava.
Well, I spent most of the last 2 days of Flock hacking on Waartaa. In between, I also attended quite a few talks and workshops. I started Day 3 by going to the talk on "Gnome: a content application update" by Debarshi Ray, a Gnome contributor and also one of my mentors in the world of Open Source. Then there was the joint session on Fedora Next, where Matthew introduced the respective project heads for different Fedora Next verticals. Each project head spoke about what is coming up for this release, roadmap for future and where they need helping hands.
Then there was a group photo session before lunch. As always, it was Jared Smith who was taking the photographs, standing on the edge of a window a couple of floors above ;)
After lunch, I went to listen to Richard Hughes speaking on building the Gnome App installer from scratch. Following this, I attended the workshop on Fedmsg by our dear and awesome threebean. threebean started with showcasing the basic API of fedmsg and finally went forward to implement a CLI based app which will tweet when one votes for a package on Fedora tagger.
I started Day 4 by attending the talk on "Secure programming practices" by huzaifas. Then I went to listen to Langdon White speak on "Fedora for developers". Then I went to listen to Justin Forbes speak on how to write kernel tests for Fedora. Post lunch, I resumed hacking again on Waartaa. I also went to the Gnome newcomers workshop. I tried to add GIMPNet IRC server in try.waartaa.com. However, it didn't work out as GIMPNet IRC server doesn't seem to support SSL, whereas Waartaa in production enforces SSL connection to IRC servers to ensure secure data transmission. I reported this issue to Marina.
It was a wonderful experience to attend Flock. Meeting so many fellow open source contributors, upstreams helped to strengthen my will of fire to contribute more to the Open Source ecosystem. There are a few projects I badly want to contribute to: Gnome, fedmsg, Mailman3, progit. But, I am currently too overloaded with the tasks in Waartaa. I guess that's part and parcel of driving your own project. I made quite some enhancements in Waartaa during the conference. The important ones among them would be implementing route based navigation in the chat interface, on demand loading of data, and bidirectional pagination of chat logs (on going). This will help decreasing load time for waartaa, decreasing client side memory usage and will provide a better mobile experience. I spoke with Fedora infra team on various scale issues we are currently facing with Waartaa and discussed on how to overcome them. I also received a couple of feature requests for Waartaa. With support and feedback from the community, I will keep making Waartaa better and better.
Flock 2014 Youtube channel: https://www.youtube.com/channel/UCQIXiF6fxPCtHw_XwHFq6nA
Waartaa or wārtā is a word in Hindi: वार्ता, which means to communicate. And that's what waartaa is for. Waartaa is a web based IRC client as a service and it facilitates centralized logging, idling functionality, unique identification across multiple clients and a rich UI for awesome user experience. Waartaa is open sourced under MIT License. The source is at https://github.com/waartaa/waartaa/ .You can download, fork, customize and setup Waartaa as a service anywhere, be it a single user laptop/desktop, server for your self and your friends.
There are an arsenal of IRC clients and tools, so why another one?
Waartaa is not just a random fun project, although it has been fun and full of adventures to work on it. Below are a few reasons why I started to work on Waartaa:
Waartaa solves the above issues as follows:
I have been contributing to Mozilla for some time now and so, I got the opportunity to attend Mozilla Summit 2013 at Santa Clara. Contributors from all around the globe turned up to attend the Summit which was going in parallel in 3 places: Santa Clara, Brussels and Toronto.
I also met the Erik Rose, the creator of nose, dxr and many other awesome tools. I had contributed to Erik's nose-progressive in the past. It was an honour to have a conversation with him.
Well, it's been quite some time since I last blogged. There have been a lot of things happening at my end and amidst this I totally dropped the ball on updating my posts. As it is said, it's better late than never. Let me summarize what happened over the past couple of months.
I quit #Transifex last January (2013) and joined #Goibibo. Goibibo is one of the products of Ibibo Web Pvt. Ltd., an e-commerce giant in India. No doubt Goibibo is doing an awesome job in the market, one of the main reasons for me joining Goibibo was that it is a #Python shop and #Django is what that drives it. Needless to mention that we Python lovers always favour Python and love to stick to it :D. So far, it's been an #awesome #roller-coaster ride at Goibibo, especially, in terms of the scaling it handles. Things are totally different when your product serves so many users and especially when you are dealing with monetary transactions. The things I learned at #Transifex helped me to push some best practices like TDD, coding standards (Flake8), etc. in Goibibo's work culture. I also replaced #gitweb + #reviewboard with #Gitlab as our VCS. Gitlab has helped a lot to streamline the process of pushing code. People now work on #branches for each feature/fix. The #branch gets tested by #QC and the #developers first. If everything is OK, the branch gets merged to master and pushed for a release. Currently, I am planning to implement #DXR codesearch and #IRC for communication.
This year, a new initiative was taken by Pycon India group. It was to conduct Python workshops all across India to spread Python awareness in the month of August 2013. I and Sayan have been regularly attending pre Pycon meetups (mostly in Goibibo's office) and decided to volunteer for the same. I and Sayan conducted two workshops on basic Python: one at BNMIT and the other at Reva Engineering College in Bangalore. We met a lot of inquisitive youngsters in our workshops. We did our best to motivate them and contribute to Open Source.
This year's Pycon was super awesome for many reasons. We had a large gathering of #dgplug folks for the first time in any conference. We had loads of discussions, brainstorming on project ideas and some hacking. I conducted a workshop on "Test your code" on the first day of Pycon. I got the chance to meet the Kenneth Reitz, the creator of request. I was greatly inspired by the keynote speech by Kiran. Among other talks, I also found Anisha's talk on Functional testing with Python quite interesting. This year, Goibibo sponsored Python and we had a Goibibo stall at the venue. We had quite a lot of activities going on at our stall. It was great fun. I spent most of the time during the conference hacking on waartaa. I got some tips from Kaustav Das Modak on optimizing mongodb for waartaa. Most of the days ended with a #dgplug team dinner. The following day after Pycon, I, Sayan, Kushal and Kenneth went for a trip to Mysore. It was great fun.
Well, that'll be all for now. It's getting an overkill for a single post ;)
The theme for the website uses the theme of Twitter bootstrap as it's base. A cool thing about my home page is that the projects section is dynamically generated using MyGithubProjects to show the projects that I work on in Github: projects those I own and upstream projects I contribute to. So, I need not maintain the list of projects any more for my portfolio ;)
It took me some time to integrate MyGithubProjects as task in Nikola to generate the home page from a custom template. Also, playing with styling for the page was fun. After putting all this time and effort, it seems pretty good enough to satiate me.
You can find the code for my website here.
Lately, I found out that Django's TransactionTestCase leaves test data in database after the test case is executed. It's not until the next execution of _pre_setup method of a TransactionTestCase instance that the database is flushed. This is troublesome when tests are run with Django Nose's test runner with REUSE_DB =1.
An easy fix to this is to customize the TransactionTestCase so that it deletes the test data on exit. I wrote a simple wrapper around Django's TransactionTestCase and extend it to write other transaction test cases.
from django.test import TransactionTestCase from django.db import connections, DEFAULT_DB_ALIAS def flushdb(cls): if getattr(cls, 'multi_db', False): databases = connections else: databases = [DEFAULT_DB_ALIAS] for db in databases: management.call_command('flush', verbosity=0, interactive=False, database=db) class BaseTransactionTestCase(TransactionTestCase): @classmethod def tearDownClass(cls): flushdb(cls)