Friday, 21 May 2010

Coming soon, to a Pidgin near you...

Direct connections for MSN! What do I mean? Just take a look at the screenshot below.

What's that? You don't see it? Just take a look at how fast it's going. Yes, that's right; it's not a pitiful 10KiB/s, but about an order of magnitude faster.

It all started with this little patch on trac. But it required a lot of work to get it going. I must have made at least 60 commits just fixing things and getting it to cooperate with aMSN and the official client. I think it should be good now, but you can always disable it in the Account options. It even makes buddy icon and custom emoticon loading faster.

Anyway, I promised I would say something about 2.7.1, and here you go. Direct connections will be in 2.7.1. In fact, I'm just about to push all the revisions.

Monday, 17 May 2010

Branchifying Revisions in Monotone

Have you ever started committing things in Monotone and then realized "This should probably go in a separate branch"? It's somewhat difficult to fix that. You can add a new branch cert, but the old one won't go away.

I wrote a little script based on a mailing list message I saw. It removes the old branch cert, and adds the new one, moving forward along revisions. It even changes merges with "the rest" into propagate messages instead. There are limitations, though. It only works with linear history (but if you've been working alone, that shouldn't be a problem) and it requires mtn 0.45 (since it uses the binary cert format.) Of course, it goes without saying that if you've shared any of your changes with someone else, then this is pointless (or you'd have to change everyone's database.)

It's pretty short. Make sure those SQL statements don't break up when you copy it.

#!/bin/bash

set -e

DB=db.mtn
KEY='someone@domain.com'
START=0123456789abcdef0123456789abcdef01234567

OLD_BRANCH='com.domain.main'
NEW_BRANCH='com.domain.fancy-stuff'

prev=
curr=$START
while [ -n "$curr" ]; do
    echo "Changing revision $curr"

    mtn --db=$DB db execute \
      "DELETE FROM revision_certs WHERE hex(revision_id) = upper('$curr') AND name = 'branch';"
    mtn --db=$DB -k$KEY cert $curr branch $NEW_BRANCH

    parents=`mtn --db=$DB automate parents $curr`
    if [ `echo "$parents" | wc -l` -eq 2 ]; then
        # Fix a merge
        echo "Fixing merge for $curr"
        mtn --db=$DB db execute \
          "DELETE FROM revision_certs WHERE hex(revision_id) = upper('$curr') AND name = 'changelog';"
        other=`echo "$parents" | sed -e "/$prev/d"`
        mtn --db=$DB -k$KEY cert $curr changelog \
"propagate from branch '$OLD_BRANCH' (head $other)
            to branch '$NEW_BRANCH' (head $prev)"
    fi

    prev=$curr
    curr=`mtn --db=$DB automate children $curr`
done

Wednesday, 12 May 2010

Pidgin 2.7.0 Released!

So it seems like I only post about minor releases (as opposed to micro), but I promise that I'll definitely say something about 2.7.1.

Anyway, Pidgin 2.7.0 should be released pretty soon now. You may or may not know that the release versions are dictated by API/ABI requirements. A minor release means we've added API. I wouldn't say there are tons of new user-visible features in this release, but definitely some developer-related things.

Most importantly, we dropped support for old GTK+ and GLib, requiring 2.10.0 and 2.12.0 respectively. Visibly, that means we can't support Windows 98 anymore, but I think we can say that's an acceptable loss by now. For development purposes, though, that means a ton of code that can be removed. It means a lot less code that needs to be maintained. We also were able to upgrade some things like from EggTrayIcon to GtkStatusIcon, which is better at integrating into the notification area.

Don't worry; it wasn't all development changes. We've also got integrated Mood setting. This interfaces to ICQ and XMPP, so I don't know too much about it. More in my area, MSN gained support for file transfer previews, which show up in the request window and the conversation.

There are quite a few other changes that I don't really even know about, so you might want to check the ChangeLog.

Monday, 3 May 2010

Mentoring a student for GSoC

So last week the accepted proposals for GSoC were announced. Pidgin was given 4 slots.

First up, we have Ivan Komarov working on improving ICQ. I don't really use ICQ, so I can't say much, but if you do, hopefully there'll be a lot of great things coming out of it that will be useful to you. Next up is Adam Fowler working on a better chat log viewer. People really seem to complain about what we have now and at the very least, it's kind of slow once you have a lot of logs, so there should be room for some good improvements there. And then we have Gilles Bedel working on detachable libpurple sessions. I'm not sure how often I'd use it, but every once in a while, I feel like checking in on Pidgin from the laptop and it's a very painful process through SSH and D-Bus. This project should make that sort of thing much simpler. Finally, we have Jorge VillaseƱor Salinas working on refactoring MSN.

So that last one is the one I'm mentoring. Personally, I've been wanting to re-write bits and pieces of the MSN prpl for a while now, but I've never had the time to get around to it. Jorge's already done some great work getting custom smiley support working for Pidgin 2.5.0. I'm sure he'll have no problem re-working the MSN prpl. I'm looking forward to getting a more structured and (hopefully) well-designed prpl which should make development a lot easier and quicker.

Thursday, 22 April 2010

Confusing hallways...

Have you ever been in a building and just got totally confused? Like where in the world am I going through this hallway?

I don't mean that it's a little weird. Sure, Bahen is a bit weird, but only because it's basically a building on top of another one. It's not really all that confusing. MedSci's also a bit weird, with that extra lecture hall (that we had ECE253 in) in a separate half for some reason.

No, what I'm talking about is the Benson building. We just had an exam in there a couple days ago. I don't really get that building. If you've ever had an exam there, you'll know what I mean.

There are two sets of doors, but you can only enter (for an exam) through the ones closer to the intersection. When you get in, there are stairs on the left, just in front of you. But if you go forward just a little, there are more stairs to the right in a nearby hallway. Eventually you can get upstairs after going through several floors and half-floors and what not.

Finding a washroom isn't all that easy either. On the third floor, the women's washroom is about halfway down the hall from the gym, but the men's is hidden. You go all the way to the end of the hallway and there's some sort of cafeteria in front of you. Immediately to the left of the hallway are more stairs (that go in the opposite direction). The men's washroom is in the little nook just a bit farther left between the end of the building and the stairs. It's confusing just trying to describe it. Anyway, I missed it once as I thought that was where the elevator would be (but apparently there isn't one). So I went down the stairs instead and all that was there was the second set of doors. And apparently, all you can do is exit!

Yep, I just don't get it.

Monday, 12 April 2010

Bye Bye Thesis!

Soo, I guess Thesis is finally done!

Last Friday I handed it in to the EngSci Office to get put in the "special" envelope, and today I dropped it off to my professor. Here it is in its wrapped-up glory (which is, in all honesty, not that exciting.)

Silly me, though, I didn't take a picture of the final blue-cover version. It must have been the relief of getting it printed and bound with 5 minutes to go. Maybe I can get some 1T1 to borrow it from the library some time.

Now, I guess I'd have to say, in all honesty, it probably doesn't say much, really. Sure, I managed some results, but they definitely could have been better. However, one thing that I do know, is that it looks awesome thanks to LaTeX. Just check out this lovely (inside) title page and first chapter (fonts are slightly off since I used convert to make these PNGs):

Friday, 5 March 2010

Iron Ring!

Just got it yesterday!

Just a few more months until graduation; isn't that amazing...