Due to issues with the remote work situation and the limitations of my contract, I've left my job which I've had for the last year on positive terms. Now that I'm in New Zealand and with a lot of free time, what will I do? I'm contemplating school. Once upon a time, up until June 9th, 2009, German citizens (yay, me?) qualified for domestic tuition rates for Masters here. That was until June 9th. The government decided that the additional students that might draw were not worth the reduced tuition income, and have opted to cancel. So, I am now contemplating school a little less. Too many options now :)
While working, there's been a lot of fun and important work postponed due to time constraints, so I've started tackling that now. There's a bunch of new bugs in Redhat and GNOME's bugzilla now filed. I've cleared out some reading queues and cleaned up my inbox. A large foreboding mountain of papers to my right has been re-organised and some of it dealt with. Progress!
DJAqua
My Rhythmbox plugin,
DJAqua, that announces a track's artist and title before and after play has had an annoying bug for a while: it froze Rhythmbox. I've now narrowed down the cause to Speech Dispatcher's involvement. It's only when functions passed to Speech Dispatcher as callbacks try to adjust Rhythmbox's volume that Rhythmbox freezes. Python threading issues? I'm not quite sure. I've come up with a slightly less ideal solution, though. I still want Rhythmbox's volume to lower when Speech Dispatcher is reading out the text for the track's artist and title, and for it to be restored afterwards. Unable to rely on Speech Dispatcher's callbacks when speech begins (to lower) and ends (to restore the volume), I now lower it when I send the command to speak, and schedule the restoration with an estimate of how long the announcement will take.
Here's part of the neat part. Originally, I was just going to guess it would take 6 or 7 seconds (based on informal timings) to read it out, but that really won't work when the title and artist are longer than usual or shorter than usual. So, I did the intelligent thing. I collected some sample data on how long it took for 11 random samples to be spoken, and how many characters were in those samples. I then analysed the number of characters per second and found that the average was consistently around 15 with a few outliers. So, now it expects the speech to take (
# of characters to be spoken / 15) seconds, and it works very well. Yay. This lets me ignore Speech Dispatcher's other race condition which sometimes prevents the callback from being called when speech begins.
I've filed a bug with Redhat for the issue of Begin not being emitted, and a bug with GNOME for Rhythmbox's UI freezing due to the plugin:
I know I need to pursue this better with Speech Dispatcher. I wrote them about the first bug and they are vaguely aware of the problem but didn't have a solution at the time. Then I disappeared due to work business.
So, yah, now DJAqua doesn't freeze. If you want to hear what track is playing and its artist, and you have a working installation of Speech Dispatcher (in Fedora 10, I had a bunch of other issues that don't seem to be problems in Fedora 11, regarding Pulse Audio and stuff), please try it out. I actually have to move the new code to its gitorious repository, ah well.
Phone Number Portability
Having grown up with super-portable e-mail addresses, the fragile connection between a mailing address and a phone number to a person seems utterly ridiculous to me. Clearly, people should specify that mail should go to
me and not some building, and that a phone call should to
me and not some randomly assigned phone number.
Consequently, I use my father's mailing address all the time. It adds almost a week or two of latency for a lot of mail, but it ensures it will get to me now and in the future. As a co-op student, I moved way too much to keep track of who has what address and to try to update them all. Regarding phone numbers, I've been grateful to have my Vonage phone number for so long. Of course, it fails in being regional to Guelph, but that's alright for me. I end up getting a local number wherever I go, but that's often split with others, so the cost isn't doubled.
The future will be better.
For example, people in the future won't, when moving into a new home, end up with a recycled phone number that once belonged to an automotive shop, who continues to receive daily calls to the number. Internet listings are in part to blame, particularly ones to which you cannot contact to request the now residential number be removed :( Hehe.
Celebration of Freedom
While my work was not slave labour (though the remote work environment, given the time difference, left me feeling isolated as though I lived in a closet), it is always pleasant to celebrate change and free time. Of course, with unemployment comes economy, so homemade cupcakes and half-price arcade fun it was! I have my girlfriend to thank for both. Hurrah for her!
The influx of self-directed time has led me to review all my pending goals and tasks, to reorganise them and to start milling through them. Some are as common as "Clean this room!" or "Pad the doorway to prevent the slamming noise". Others are "save the world" and "figure out what I want to do for the next year, the next three years, where I want to be, the value of people and time with them, etc. I sometimes wish I had a wise sensei like Splinter from Teenage Mutant Ninja Turtles or Enho from The Twelve Kingdoms to offer some advice.
Debugging, problem solving, and mail notification
Mail Notification by Jean-Yves Lefort has a bug. I reported it a couple years ago, but it remains. The CPU seemingly random takes 100% while it continually claims it cannot connect to the IMAP server, which is true, but I don't know why. It is probably triggered when I resume from suspend, or when I am disconnected and reconnect, or when the hour turns. I don't know.
I don't really know how to debug the 100% CPU activity. I'm going between ltrace, sysprof, and gdb and learning a bit about each. I think I'd really like to use Linux Trace Toolkit, but it's not as trivial to setup, it seems, requiring a kernel patch. Or maybe I'm just confused. Anyway, whenever it comes out, I quickly quit what I'm doing and think about how I can figure out what's going on. I am sure victory is within my grasp.