FOSS.in/2009 Day 4: cd
trek and hack
[info]siddhesh

The last day of FOSS.in. Kartik wakes me up saying "You have to pack, get up". I got up, went across the hall and rang Ram2's bell a few times to wake him up.

So I packed up my stuff and got ready. This time I did not forget to wear my fedora. We had our breakfast and realized that a number of people had left early, either for the venue or to meet someone in the city. When we went out to our bus, we found that it was not there. We started talking to rickshaw drivers and bargaining with them when one guy came up to us saying that he was here to take some people from the hotel to NIMHANS. That was us. But we weren't sure, so we had him call his boss and confirmed that it was indeed us.

Susmit: "Well, if he wanted to drop us to the venue then why are we wasting time calling people? Why not just pile into the bus and go ;)".

So we finally reached the venue, only to find that it was almost deserted. People started crawling in quite late and the place eventually filled up. I sat down with Kital at the Fedora booth and fixed my package submission for Fedora. At 12:00 I went up to Lennart's FSH talk, but did not find it as useful as the previous talk. He could just have combined this one with the last talk and done one marathon talk, but I guess that would have been too long. Anyway, it was time for lunch.

I was pretty listless after lunch because there wasn't enough time to hack on anything significant, so I decided to take a nap at the booth. I woke up to find that I had only 20 minutes to say good bye to all the people I came to know during these 5 days. Wait, a phone call. An automated message telling me that my flight had been delayed by half an hour. Well, I had some more time now, so I went up to the hack centre to check out who was doing what. I bugged Gopal for the Speaker kit and he finally shooed me off with some stickers. I told him that the coordinators had done a great job, something I managed to notice this time since I was not sitting in the corner and hacking like last year.

While I was roaming about, I entered the Gnome POTD and saw Oliviere Crete giving a talk on Telepathy. I sat down and listened. And I have to admit that I was quite impressed with the layout. I remember wondering why I was working on getting ayttm and libyahoo2 up to speed when such a wonderful effort was underway to do messaging the *right* way. Now that I think of it though, it is not the only right way to do things. While ayttm may not be as extensible as the Telepathy framework+Empathy, etc, it has a totally different use case. To be able to fit into a sub-1 MB package and work well with minimal dependencies. And it can work on *BSD. The workout participation for ayttm unfortunately fizzled out since it was pulled off the itinerary and it is not popular or cool enough for people to want to contribute to it. But I managed to make some headway into the chat window stuff and will hopefully get that out of the way soon. Next week I plan to work on the webcam stuff for yahoo at Rahul's request. OK, I digressed.

I had to leave the talk halfway since I was getting late. I stepped out of the hall and managed to say goodbye to everyone I recognized and could catch hold of. I managed to find Pradeepto just as I hauled my bags up to leave. We said our goodbyes and I left for the gate, trying to find a rickshaw. But what I found was a bus, a BIAS-7 going to the airport :)

So I'm now sitting in the airport lounge reflecting back on one of the best events I've attended so far. This was very special for me because I got to know a lot of very good guys: Pradeepto, Aanjhan, Sayamindu, Joerg, Gopal, Susmit and so many others. The best part of the week was the BoF sessions all of us would have in Pradeepto's room, talking about foobar and sharing stories. I did not have too many uber hacks to talk about through this week, but a lot of cool incidents that seemed to make a big difference to the way I thought about the Indian FOSS movement and the people involved.

This was fun. I hope I get to do this more often.


FOSS.in/2009 Day 3: The blues
trek and hack
[info]siddhesh

The penultimate day of FOSS.in/2009. And me and Kartik got up even later than usual. We managed to get ready quickly and reach on time for breakfast, only to realize that practically everyone else was late. We left for the venue (eventually) at about 10:30. Philip had already arrived at the venue and he asked me about the ayttm workout, which was to happen today. I thought it was cancelled, but we decided to go for it anyway. So we spent the time before lunch in the hack centre with Kartik and Ram 2 going about their Debian workout and Philip scp'ing his latex presentation back and forth on his server since he was stuck with his Mac.

I came up to the hack centre to work on ayttm but saw Russell Nelson teaching a bunch of people how to solder stuff. This got me excited since I remembered my my childhood, with me trying to make some weird stuff with wires and pins (yes, a couple of them exploded too :P) and trying to "repair" stuff, eventually breaking them. So I had to get up and see what he was doing. That way, I would be putting the soldering iron my wife recently got me, to constructive use.

Russell explained some basics of soldering and then went on to show a small example of attaching an LED and resistor to a small microcontroller board. I stuck around to see how soldering was done and then finally decided to skip the software part and get back to ayttm.

We sat down to hack again after lunch, but Philip vanished after a while, probably to prepare for his talk. I continued trying to get some stuff together while we also battled with a relatively unreliable wireless connection. The organisers finally pulled down the wireless in the hack centre since they were overloaded. I spent the rest of the time mucking about with nothing in particular. All the while, it was quite entertaining listening to Rahul Sundaram, Kartik and Ram2 discussing Debian and Fedora release cycles.

Finally it was time for Philip's talk. While I got up to go down to the hall, we were joined by a bearded guy who came up to talk to Ram2. I casually looked at his tag and realized that he was Baishampayan Ghose. I have only probably conversed with him or read his emails on mailing lists or heard about him, so meeting him in person quite suddenly was a surprise, which kinda left me a bit tongue-tied ;). He recognised me instantly (probably due to the tag) and became the first person other than Philip and Kartik to ask me about ayttm/libyahoo2 :). We then walked down to the hall to attend Philip's "Shut up and Hack" talk.

I thoroughly enjoyed the talk, mainly due to the spontaneity. He basically talked about reasons for which hackers hack. Not just software hackers, he talked about hackers in general. He then went on to make some useless and some other useful little snippets of code to explain how one could hack. The point was to not call a committee to decide when, where and how to scratch an itch; just scratch it now.

Bluesmoon was followed by Blues before Sunrise, which was strictly OK, because of which I walked out after the first few songs. We had a fun time with Himanshu and Kartik finally getting the better of Rahul Sundaram in pulling his leg. Pradeepto was lying down in a corner and soon after, everyone was gathered up around him and were chatting away. Gopal came up to chat too and once again managed to call me the "bakra who Philip caught to work on ayttm" :P. He had said exactly the same thing at last years FOSS.in. It turns out that Philip had asked Gopal if he could contribute to ayttm, which Gopal was able to conveniently turn down since he soon joined Yahoo! :P

All this was followed by a speakers dinner at the hotel, which was quite a lot of fun too. Kushal had 7 bowls of soup till the time I was hanging around and was probably looking to have more. There were occasional shouts of "PulseAudio sucks!", "PulseAudio rocks!", "KDE sucks" and "Lenny rocks!" just to pull each others legs. It was quite cool to watch a lot of people get a little drunk on beer and having fun in general. Me, Kartik, Aanjhan, Ram2 and Pradeepto then came down to Pradeepto's room and were chatting about foobar right up to about half an hour ago. Now here I am sitting in the hotel room with Kartik fast asleep. I'll go to sleep now.

This has turned out to be a long post. Yes, it was quite a long day.


FOSS.in/2009 Day 2: KDE ftw!
trek and hack
[info]siddhesh

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
trek and hack
[info]siddhesh

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
trek and hack
[info]siddhesh

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
trek and hack
[info]siddhesh

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
trek and hack
[info]siddhesh

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
trek and hack
[info]siddhesh

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
trek and hack
[info]siddhesh

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
trek and hack
[info]siddhesh

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:

  1. Put all the pictures you want to upload into a directory
  2. Name the directory appropriately; that will become your new album name
  3. 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
trek and hack
[info]siddhesh

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
trek and hack
[info]siddhesh

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!

Tags: ,

Ayttm Workout proposal at FOSS.in/2009
trek and hack
[info]siddhesh

I just submitted an ayttm workout proposal for FOSS.IN/2009. Hopefully it will get accepted this time and we get some real work done. I want to get a 0.6.1 and 0.6.2 out before the event begins so that there is a nice clean base for people to work on.

I hope the workout gets accepted.

I hope we get worthwhile contributions.

I hope they have the cold caffeine too this time :D

Free food ftw!


Who the hell invented the blink tag?
trek and hack
[info]siddhesh

Look what your invention has done to the interweb :(

Tags:

Getting a little loud
trek and hack
[info]siddhesh

Me and me missus settled down to watch a movie (300) yesterday only to realize that the volume of the movie was considerably low. All controls on alsa mixer were jacked up to full and it wasn't related to any of the default volume level bugs; I had done an alsamixer -c0 to jack up the volume levels. I have only one audio card.

I searched on the interwebs for a software mixer program that could give me something a little more audible, no matter even if it was slightly screechy. I found nothing worthwhile and was about to give up. Then on a whim I opened up the movie on mplayer instead of the default totem (I rarely need to do that I must say) and started looking at what I could jack up there. Lo and behold, there was a slider in Preferences > Audio tab called Stereo boost (or something like that; it's on the other laptop and I'm too lazy to look it up now), which worked for me. I turned it all the way up and was finally able to understand the dialogue. It's a different thing that the movie turned out to be mostly about people cutting up other people (of course, that was fun too ;) ) so my efforts were worthwhile only for the first few minutes of the movie.

That said, this does not work for all kinds of movies since it seems to turn up the volume only on a specific channel. Due to this, on another movie, the dialogue was drowned out by traffic noise due to this stereo boost being jacked all the way up. Anyway, the point of the post was to say that there is in fact a way to (sort of) amplify sound in software.

Also, it looks like alsa does not quite seem to give the same kind of output that the audio subsystem on windows would give. Maybe this is specific only to certain types of cards.


git FTW!
trek and hack
[info]siddhesh

I started using git with ayttm only a week ago and I'm loving it already. I love the fact that I can commit multiple fixes to my repository and then push them out all together with a single command. Everything remains well sorted out without me having to break my flow to commit changes into the central repository. It's either that or committing a huge chunk of code, and I would regularly choose the latter.

The central repository on SF was a bit difficult to set up especially since it was my first time with git and there was a lot I needed to learn about the system. Add to it the pain of migrating the cvs repository contents to git. But once I figured out the stuff, it all seemed to fit in so beautifully. I know I've only scratched the surface of its power but it just feels good to use. Few programs have given me this wow! feeling since some time now. I guess it's all about individual preference though.

Tags:

Moving Ayttm to git
trek and hack
[info]siddhesh

I am importing the ayttm cvs repository to git as I write this. This was something I had thought of earlier, but never had any motivation to do so since things just worked without it anyway. It was Kushal who made the suggestion to me, saying that it would be easier for the Fedora guys to keep in sync with development upstream. I take it from this that the Fedora community will contribute some code to ayttm in the future, which I will be able to pull in easily in the future.

Tags: ,

Size does matter
trek and hack
[info]siddhesh

The packages we released for ayttm 0.6.0 were around 1.52 MB with bzip2 compression. The guys at puppy Linux built ayttm optimized for size and they were able to reduce the package size to half with it! Here's the forum post for those interested.


The journey so far, and ahead
trek and hack
[info]siddhesh

The last six months have been quite big for ayttm, and for me too. We did on last Friday, what was probably our biggest release in ayttm. Well, it's a bit subjective I guess, because I felt that way even when I did the gtk2 port release. And the IRC release. But this one was really big. Check out the release notes and you'll know. When asked about ayttm a few months ago, I had said to Sankarshan that I would be done with yahoo and msn support by next year. I'm really happy that we've managed to get it done way before time. There is yet another goal I had mentioned to him then — making ayttm stable.

We're still not as stable as we'd like to be. There was one completely random crash that Minto (package maintainer for Fedora) came across and showed me at work today. We were not able to reproduce it the second time. We need to iron out these things. My next focus is going to be the chat window/room stuff. The code is almost completely duplicated, so I'm going to make something uniform out of it, focussing more on separating the UI from the core. This will hopefully result in much cleaner code.

Once this is done, the ugly xpm smileys will have to go. I'm thinking of using a subset of the protocol smileys instead, especially the PNGs on the website. The website needs a lot of updating too. Kartik has volunteered to do the online manual and the new screenshots when he has time, so that should be done pretty soon.

There are a few people at work who are wondering if we would do voice support. Maybe.


Ayttm progress
trek and hack
[info]siddhesh

Right now, the cvs version of ayttm looks pretty good. We've been able to get in YMSG16 support, MSNP15 support and a lot of fixes in the GUI and jabber. I finally got rid of the custom dialogs code in ayttm and Piotr has done a lot of work with the state/status messages. The netv2 code also seems to be looking quite good since nothing seems to be breaking in it of late.

There are a few filler functions that remain to be implemented in MSN so that it does not crash. Also, both yahoo and msn need file transfer and invitations -- I am not done with that either. I have been threatening to do a release for some time now, so I might just act out that threat in the coming weeks. So these are busy days.