FOSS.in/2009 Day 2: KDE ftw!
We started off quite late for the event today, just after 10:00 AM. I tried sitting somewhere to continue hacking on the chat windows but could not get myself together at all, so ended up wandering around killing time waiting for Lennart's talk. I also wanted to attend Ram2's talk on the python compiler design, but it was at the same time as the PulseAudio talk. I gave up on Ram2's talk because the PulseAudio talk seemed more relevant to what I did and promised to be quite interesting.
The PulseAudio talk was (as mentioned in the abstract) not a talk on PulseAudio at all. It was a sort of a "best practices" guide on using system calls, etc. It was quite an interesting talk. One amazing thing that Lennart pointed out was the lack of a async DNS resolver function, something that I witnessed with ayttm as well and had to work around by spawning a separate thread for connections.
Post-lunch, I decided to check out what was going on in the KDE project of the day. I entered to find the hall nearly full of people and was quite surprised. The result was that I could not sit there due to the fact that my laptop was running low on battery power — all the charging points were taken. I went back to the Fedora booth and sat there waiting for my laptop to charge up while I tinkered around with random stuff.
By the time I got back to the POTD, a lot of stuff was already done, but I managed to witness a couple of really interesting events and realized why the hall was nearly full. For one, everything seemed to be perfectly managed, with Pradeepto at the helm coordinating things and a bunch of others working together amazingly well. Companies rehearse again and again to get such coordination and I can vouch for the fact that Pradeepto and gang did not rehearse during the past few days :)
The session in the POTD that really caught my eye was the Bug fixing event. It was a perfect example of how to introduce students to more complex code and how to avoid intimidating them. Aakarsh sat down with one of the delegates to resolve a bug in KStars and then got the delegate to demonstrate to everyone how he investigated the bug. The demonstration would surely have encouraged everyone to believe that even they could contribute to the code base, small steps at a time. This was followed by Sujith's demonstration of a few bug fixes, which was also quite cool.
I ended the day chatting with Krishnakant and Anusha (the GNUKhata hackers) about GNUKhata and other random stuff and came back to the hotel room early. Now we'll go for dinner somewhere downstairs and probably gather for the usual nightly foobar BoF session.
Finally, hats off to Pradeepto for KDE POTD; it was beautifully coordinated!
FOSS.in/2009: Day 1
Got up late and rushed through my bath and breakfast. I realize that I did not talk about the hotel I am living in. Well, the bed is too small, the toilet seat is too tall and the bathroom in general is quite claustrophobic. But otherwise it is a really good, clean hotel.
OK, so we made our way to the venue and were pretty much holed up inside auditorium 3. I managed to get an app packaged as I mentioned in my past post. The upstream dev acaudwell immediately responded to my patch to update version number in configure.ac, so that hurdle is out of the way too.
The Fedora team had a blast at night with food and beer and managed to rake up a huge dinner bill. I missed out on it since I was in the mood to sit and hack on something. Well, I did not. I ended up discussing a bunch of things with Ram2 and Amit Sethi.
Oh yeah, and met up with Philip too after a long time, so that was a bit of a ayttm team reunion sans Piotr :)
My first Fedora package submission
I have created and submitted gource for review in Fedora. It's a really cool source code history visualizer. It's not perfect by any means, but a very good start. It works out of the box for git, but needs some scripts to get it working for cvs and svn. I'll be trying to write some sort of a wrapper to detect cvs/svn and invoke the scripts automagically.
FOSS.in/2009 Day 0 done
Finally back at the hotel after the first day of FOSS.in. It was a good first day despite the delays in schedule, mainly because I didn't care much about the schedule ;)
Kartik and I decided to have our workouts at the same table and it turned out to be a decent idea since we did not really have people swarming for our workouts. I assumed that the pre-workout talks were chucked out since Atul Chitnis said that we can start right away at the hack centre, but it turned out to be otherwise. The result was an unprepared /me struggling with the collar mic screeching every other minute and /me rushing through the libyahoo2 slides as if there was no tomorrow.
It was not too bad in the end as we had one person asking a few things about libyahoo2 and Debian. I was able to get some work done too; see the Progress section in the libyahoo2 workout page for details. Also, thanks to Gaurav "Tazz" Chaturvedi, who gave me a packet dump of his windows yahoo messenger 10, which included everything from regular messaging to chat rooms. I'll get around to doing something about it soon, not tomorrow.
As for tomorrow, I'll be putting on my Fedora for the Fedora Project of the Day. I'll be trying to package gource, a source code history visualizer. Kartik showed me this app today and it blew me away with the wonderful visualization of the ayttm source history. This will also be my first package submission to Fedora and my first foray into something other than coding. Let's see how it goes.
Foss.in/2009: Day 0
Started the day with a nice and heavy breakfast (idli, vada, dosa, bread/butter...) and got to the venue by bus by around 10:00. Needless to say, the event started late (we're halfway into Sayamindu's talk as I write). We spent the early part of the day sitting around the Pradeepto's "bodhi tree" and talking about emacs/git/svn/other_useless_junk.
I'll be starting with the libyahoo2 workout after I've put some food into my tummy, so that would be around 2-2:30 PM.
FOSS.in Day -1: Arrived at Bangalore
I've finally made it to the hotel after a one and half hour flight and (ironically) a similarly long bus ride. But it was quite smooth, with no delays either on departure or arrival. I've settled myself into Room 101 and am now contemplating dinner. My room-mate will most likely be coming in tomorrow morning. The Wifi signal is pretty weak at around 45-50%, so I think I'll have to settle somewhere in the lobby for better signal whenever I need it.
Day 0 of FOSS.in begins with the libyahoo2 workout for me. I've got a bunch of protocol dumps using the Gyache yahoo messenger (yes, the hideous looking buggy one). I would not dare look into the code of that nightmare of a messenger, so I'm happy with what I have so far. I think I have got a handle on the chat room packets, so I might give that a shot tomorrow. The buddy picture stuff is also pretty decent, although I think we'll have to do a bit of trial and error with the packet sequences a bit. Gyache seems to have a bug in its picture stuff and it sits in an infinite loop uploading pictures forever.
I've also got the address book update packet dump but here again gyache is buggy. I think we can get it working despite that though since gyache is buggy with both address book query as well as update. We have got the address book query right, so we're definitely on the right track.
I have a feeling ignore/unignore buddy has not changed in YMSG16 and we may not need to fix it at all. I've been too lazy to actually sit down and test it though.
Finally, I hope some people get in some Windows laptops tomorrow so that we can get packet dumps of the official Yahoo! messenger doing some stuff. If that does not work out, I'll have to go back to work and get to it by myself some day.
Update: No Kushal, that's not day one; it's day minus one ;)
Coming up soon: FOSS.in
FOSS.in begins on Tuesday next week at Bangalore. I will be conducting two workouts, one on Ayttm: Face Lifts, Porting and Hacks and Libyahoo2: Getting up to speed. As of now, the libyahoo2 workout is set for Day 1 and Ayttm is set for Day 4. This means I will miss the Debian POTD talks and workouts, which I really wanted to attend. Also, Philip has his Shut up and hack workout scheduled on Day 4 too, so we may have to try for a reschedule for either ayttm or shut-up-and-hack.
I've also started hacking on the chat windows stuff in ayttm to make them the way I want them to be. If I'm not done with them by the time I get to FOSS.in, I'll most likely continue hacking on it during the event and/or during the Ayttm workout. Those who like the dirty details may read on.
The current chat windows and chat room code is slightly bulky and a lot of code is duplicated. Also, the chat logic and UI stuff is all mixed up, which makes reading code difficult in some places. I'm trying to change this into a slightly different model. Introducing Conversation, which defines pretty much from individual chats to conferences to chat rooms. This component will be responsible for all chat logic. This in turn simplifies my ChatRoom stuff since it is just a buddy list more than the ChatWindow. Also, both ChatWindow and ChatRoom will only be passing events to Conversation and dumping HTML messages (from Conversation) to their respective chat boxes. I'm aiming to reduce the code size as well as build in some extensibility (service specific toolbar buttons for example) as a result of this rewrite. Another unintended result would be a slightly reworked UI. Read the ayttm journal or follow the ayttm-devel mailing list to know what's going on there.
Bulk uploading pictures to Picasa on Linux
I was looking for a FOSS tool to upload my recent trip pics to my picasa account and came across picasup. It's a perfect tool if you're the kind who likes to use the terminal and keep the mouse out of the way. All you have to do is this:
- Put all the pictures you want to upload into a directory
- Name the directory appropriately; that will become your new album name
- Fire up picasup with the picup command while in the album directory and give your creds and other information.
This beats the FireUploader addon for Firefox any day for me since I don't have to waste time clicking on things and generally cursing the javascript/xul slowness.
git branching awesomeness
Branching in cvs was always a bit of a black art to me. I always had to plan in advance, think twice and generally breathe heavily before I attempted to create a branch. The workflow would be
- Check out a fresh copy of the code
- cvs tag -b mybranch
And then continue using that copy for your branch-specific changes. So the tag was the branch... or something like that. Anyway, you maintain a different tree for your HEAD too and will have to generally go through a lot of pain to merge patches from HEAD to branch or vice versa.
Now here's how you branch in git:
git branch mybranch
Yes, that is it. You have created a branch. Congratulations! Oh ok, you want to work on it?
git checkout mybranch
Do your foo and generally have fun with that branch. Oops, look! A patch that needs to go into HEAD:
git checkout master
And go ahead and apply your patch into HEAD. Time to push all the stuff into your public repository?
git push --all
And watch everything, including your branch changes get pushed seamlessly.
I'll say it again, this is one tool that seriously fits me like a glove. Simply awesome! The one thing left is now the merge back of the branches. I won't get there for another few weeks I guess, but from the docs, it seems as simple as:
git merge mybranch
Sweet!
Update
I just did a merge now to see what git can do. I made some changes in master and decided to merge those changes into my new xmpp branch just for kicks. I have to admit that the merge did not have any conflicts, but here's how it went:
[siddhesh@spoyarek ayttm]$ git checkout xmpp Switched to branch 'xmpp' [siddhesh@spoyarek ayttm]$ git merge master Merge made by recursive. libproxy/proxy.c | 41 ++++++++---------------------- modules/aim-oscar/aim-oscar.c | 7 +--- modules/aycryption/select-keys.c | 2 +- modules/importers/import_gnomeicu.c | 1 - modules/importers/importicq.c | 4 +-- modules/importers/importlicq.c | 1 - modules/irc/irc.c | 12 ++++---- modules/irc/libirc/irc_message.c | 4 +- modules/irc/libirc/libirc.c | 10 +++--- modules/irc/libirc/libirc.h | 2 - modules/utility/autotrans.c | 4 +- modules/utility/rainbow.c | 4 +- modules/yahoo2/libyahoo2/libyahoo2.c | 4 +-- modules/yahoo2/libyahoo2/yahoo_httplib.c | 2 +- modules/yahoo2/yahoo.c | 16 +---------- src/add_contact_window.c | 6 +++- src/edit_local_accounts.c | 4 +- src/file_select.c | 1 - src/main.c | 4 +-- src/message_parse.c | 3 -- src/service.c | 2 +- src/smileys.c | 2 +- src/smileys.h | 12 ++++---- src/sound.c | 6 +++- src/speech.c | 2 +- src/status.c | 5 --- src/trigger.c | 3 -- 27 files changed, 56 insertions(+), 108 deletions(-)
Yes, that is all! Here are the results of the merge. And here is the master branch
Ayttm 0.6.1 — The work starts now
Just did an ayttm release. This is to lay groundwork for xmpp rewrite, which Piotr will be doing after I lay down the framework. The idea is to make a clean and light xmpp framework and then have even lighter plugins on top of it for gtalk, jabber, etc. Usability and extensibility FTW!