Wednesday, 30 July 2008

International Goan Convention

So last week was the 2008 International Goan Convention. There were a bunch of workshops and stuff during the day which I did not attend because I had work. Now even though it was last week, it's really ending for us tomorrow (or, later today, anyway). That's because the Mando group was staying at our house.

Now, I wouldn't say the preparation for this event was spectacular. The coordinators thought the Mando troupe was arriving Monday, when in fact they arrived on Sunday night. As if that wasn't a shock, they didn't really have anywhere set up for them to stay. And because we're such nice people, that's how we ended up with 6 people staying over, not to mention the 5 others at my grandparent's house across the street. There were 3 more not with us, but since they needed to practice, they came over quite a bit, too.

Anyway, last week was quite a busy thing. First there was the Goan Idol on Thursday, where I had to video tape and take pictures at the same time. Then the Tiatr on Friday, which was amazingly long. And finally the Grand Ball on Saturday. No pictures to put up yet, but I've got tons from everyone's camera. More on that in another post...

Monday, 21 July 2008


So how did this happen?

Somehow not only does my team lead (who gives me work and I ask questions) have vacation next week, but so do my mom and dad. I, on the other hand, technically have no vacation since I'm on contract.

Well, at least my sister doesn't have vacation. ;)

Monday, 14 July 2008

MSNP15 in Pidgin

So, look at that, MSNP15 is now in Pidgin's main branch. Well actually, it was committed over 23 hours ago. But unlike John, I wasn't going to say it was done until the GObjectification branch had the update as well.

While it would be great to take credit for the whole thing (but I wouldn't, because I'm not that sort of person), there have in fact been several contributors. Let's take a look at that now, shall we, with these graphs from ViewMTN. Yes, I realize they're kind of small, but full size would make this really long and you can always click on them.

MSNP13 started way back when on the im.pidgin.soc.2006.msnp13 branch (though it wasn't actually on MTN). This was done by Ma Yuan for GSoC in 2006. Several new and interesting features were implemented then. Receiving OIM's was one of the first new features. Adding contacts from the Yahoo! network was soon added, as well. One of the most requested features, personal status messages, was added not long after. There were also various changes made under the hood to support the new protocol, such as SOAP processing code. Unfortunately, some of that code was in need of cleanup, and in fact some parts went against the original MSN protocol plugin's design. In the end, this code was not yet ready to be merged.

I don't think much happened after that until the next year. Richard and Ka-Hing did some work in ticket #148 to get things up to standard. This work resulted in the new im.pidgin.cpw.khc.msnp14 branch. As you can tell from that graph there, it involved quite a bit of branching off to get things cleaned up. For a month or two, this branch only really had updates from trunk applied to it. There were some minor updates made to fix bugs. Around May, Stu began making several changes. These fixed a variety of bugs, and closed several tickets. Partial updates were found to be buggy, so the full contact list would be used for the time being.

Again, this branch sat with no commits except for propagating from trunk. There was then yet another MSN GSoC project for 2007. This time the project was written by Carlos Silva. Besides cleaning up the code, there were several other goals such as direct file transfers, transfer of winks and voice clips, and the like. There were several fixes made in this time that took care of quite a few major bugs and tickets. In this case, the MSNP14 branch was propagated to trunk in mid-September, but it did not compile by default. In this regard, it looks like the major objective was complete, but the next biggest objective was not. Even this merged code did not make it into the next few releases, because they were branched from trunk earlier for some other reasons. In the background, Ka-Hing had started work in im.pidgin.cpw.khc.msnp14.soap which involved much cleanup to the SOAP code. This was merged at around November.

Some time around this point, I started hacking minor things in Pidgin. Using whatever documentation I could get out of msnpiki, I updated libpurple to be able to login with SSO on MSNP15. This involved a couple other cipher changes as well. While that was all fine and dandy, it did nothing about the various other problems in the code. Around December, Sean noticed these things, and I was promoted to a "Crazy Patch Writer". While Gary took care of committing the cipher stuff, Ka-Hing and I worked with my code, cleaning up some things that weren't ready yet. Soon after, we got some help from Masca and Maiku reporting bugs and making fixes.

At the beginning of June this year, Richard gave me push access, and I started my own branch at im.pidgin.cpw.qulogic.msn. This had all the MSNP15 changes, of course, as well as anything new I came across and decided to work on. One of the biggest bugs was renewing ticket tokens for all the SOAP operations. It turns out no-one had figured that out before, so I had to reverse-engineer it myself. oSpy was a great help in achieving this. Dimmuxx, an Adium user, also started some unofficial Adium builds with code from my branch. This turned out to be a great help in testing out the code. Not only did Dimmuxx test out token updating by staying connected for 24+ hours, the Adium users helped unearth quite a few bugs. If it weren't for them, I'm sure I wouldn't have found all of them. Lately, I've been doing a lot of cleanup. The debug messages in the MSN plugin were all prefixed with various names, from plain old "msn", to stuff like "MSN-OIM", "msn_switchboard", to just "msg". There was also a lot of dead code due to the MSN servers dropping commands along the way from MSNP9 to MSNP15. Anyway, here's the final merge (the middle hexagon), along with a propagate to the GObjectification branch to the right.

So, with what does that leave us? Well, Pidgin now supports MSNP15, ahead of most other MSN clients of which I know. Assuming there are no critical problems, this code should be in 2.5.0. Of course, there are still some other items that need to be done. Fast file transfers using direct connections (#247) do not work yet, though they are in msn-pecan by Felipe. Winks, sound clips, ink, and all those other items (#393) are not yet ready. There doesn't even exist code for things like shared folders, though I am not aware of a client that does support that fully, anyway. Nevertheless, I can't wait for 2.5.0 to be released!

Wednesday, 9 July 2008

My messy cubicle

Well, it's not really that messy, but it sure is full of stuff...

Let's see what we have here...

On the left is my Linux computer. I was using the monitor on top of it for that, but I got tired of the CRT-ness, so I got that next 17" LCD over for it.

The oscilloscope is for testing output from my test board, which if you ask me, looks nothing like a square wave, but apparently is quite alright for DTV. The test board is right above it, though you can't see it too clearly. I can't give away all AMD's secrets, now can I? ;) That pole there has a TV feed with some random stuff for testing. And CityTV, if I really feel bored.

The darker screen behind the keyboard is the Windows laptop. It's kinda old, and I don't like trackpads, so I use Synergy to control it from the Linux machine. Darn old keyboard and mouse, but they're way better than working on a laptop. The larger CRT at the right is a second display for the laptop. At least it does 85Hz, so it's not so tiring as the other one.

At the top are testing displays. The Dell on the right doesn't have a power supply, so I don't use it yet, but I probably will for some dual-output tests. The Samsung's a lovely 24" widescreen which I'm using to test board output. Evidently, things aren't working, as that garbled mess you see should look something like the image conveniently hiding everything on the three other displays (That's right, no secret information for you!).

Finally, off camera to the right, there's another test board taking up the rest of my desk. I have just enough room to fit my AMD coffee mug (filled with water, of course) and Engineering notebook. On the floor, there's also a 40" Sony I get to play with as well (You'll just have to believe me). I seriously ran out of plugs to connect all these things.


I really don't have anything to say here right now. But I suppose I will eventually...