Older blog entries for pcolijn (starting at number 50)

Christmas

Had my last exam, trains, last Wednesday. I brought all my luggage to the exam, since I had to catch the 5:00 Greyhound out of Waterloo to catch an airport shuttle in Toronto at 7:30 to catch my flight at 9:00. After that it was serveral mad days of shopping and cooking, all culminating Christmas day in a feast for our family.

It was fun, but extremely tiring. Hopefully the rest of my time here in Calgary will be a bit more relaxing.

amps in a festive mood

My parents gave me a Rio Karma 20GB mp3 player. Unfortunately, it hasn't arrived yet so I haven't had a chance to play with it, but I'm looking forward to it. Plays ogg, flac, mp3, wma and has an ethernet HTTP interface (in addition to USB 2.0) to alleviate all your cross-platform woes :)

But possibly the coolest gift Santa brought this Christmas was the Gender Bender robot for my friend thapthim.

Gender Bender gives us a show

Skiing

Tuesday I went skiing with amps and my grampa, and it was a lot of fun. In addition it was a beautiful day and the mountains were gorgeous. I'd forgotten what crisp, winter mountain air was like, not having been skiing in several years.

View from near the top of Sunshine's angel chair

Sysadmin

My sysadmin duties for my family have begun. Spent last night doing an unconventional install of Ubuntu on my sister's laptop. Her cd-rom drive wasn't playing nicely so I had to use install floppies (blech) for Sarge and a statically-compiled debootstrap to get it going.

Today I updated my parents to Fedora Core 3, which went pretty smoothly, and before I leave I need to set up an APC UPS on the little router/DNS/SMTP server, which should be easy except it's running a 2.2 kernel, so some hackery may be required.

My parents do in fact run Linux, but that's not as amazing as it might sound, since my dad is a CS prof at the University of Calgary and he's a UNIX greybeard, so he knows what he's doing. Still, they have surprisingly few problems with Fedora these days, which is a good sign.

Stupid house

No fucking water.. AGAIN. Notice that no water means no coffee, which is an extremely bad thing! We're currently boiling snow water in pots on the stove, at which point we'll run it through a Brita and I can hopefully get my fix.

(And yes, andrew, the snow was yellow. How'd you know?)

Moving

It sucks. I can't believe I do it every term. I spent the better part of this week packing my stuff, cramming it into my sister's Tercel, and dropping it off at a storage locker. I think the most impressive was when I got my entire bed, frame and futon, into the car, along with several boxes and a bike. I never knew Tercels could do that :)

I managed to sucker one of my friends into keeping both my computer and our file server at his place. Once he saw the music collection, it wasn't hard to convince him :) So I should be able to get at all of it while I'm down south, and my web page should still work. Anybody know any good streaming music servers? I think I used icecast when I was in England, is it still the best way to go?

School

My next exam is tomorrow. It's physics, and should be easy. I'll have to study a bit, but not much.

I'm currently procrastinating writing a paper for my music course. The prof extended the deadline so we could just hand it in at the exam (which, for that course, is on Monday). The extended deadline is, as always, a mixed blessing. I'm sure glad I didn't have to write the stupid thing while finishing up my real-time project, though.

Montréal

Had a great time seeing a bunch of you NITIots last weekend. It was good to catch up with you and rest a bit.

mrwise shows off his classy table manners

Descartes doing what she does best

While sitting here procrastinating, I came across some photos from the summer that I don't think I posted before, but which brought back some good memories...

Andrew and pmccurdy go at the beer at Oka

mrwise gives us his usual smile

WvMAPI

I intended to get in on the hackfest with wlach, but with moving and packing and everything, didn't quite manage it. Anyway, it's my intention to do some work on WvMAPI in my free time over the next term, for my "NDF" at Google. I'd like to do all the async stuff I talked about in my work report, add in the attAttachment stuff, and write some EPlugins for Evolution.

Some might say I'm insane, but I really want the satisfaction of cleaning it up, and I've gotten a number of winmail.dat attachments lately, so that's sort of prodded me along.

Life

Watch out, NITIots! mrwise and I are coming to Montréal this weekend to grace you with our magnificent presence. e-mail me if you want to go out for beers or foos or something.

More poking and prodding by medical experts, including an annoying test next week where I can't eat anything for a day. On the plus side, the specialist gave me a prescription for B12, so I can stop feeling shitty while they do all this stuff :)

And I'm so gonna look for a bank account that gives me a free gun when I'm in the states!

Exams

They suck. I procrastinated an incredible amount studying for my CS 370 exam I had today, and now I'm glad I did. It was dead easy, not worth even the paltry amount of studying I did do. Mon examen de français est demain. Je pense qu'il sera assez facile; mon français écrit n'est pas très mal. Ce qu'il faut améliorer, c'est mon français oral. C'est un peu bizarre je suppose; je connais beaucoup de personnes qui trouvent l'inverse. C'est peut-être que pour moi, c'est plus facile d'obéir les régles de grammaire que d'oser parler.

CUPS

hub: you may want to dig around in Niti's CVS a bit. I remember writing a patch to CUPS that made it start up considerably faster, for an old version of ExpressionDesktop. I don't remember what happened to it, but my guess is "nothing." :) I'm not sure if it would still be relevant, but it's probably worth a look.

Trains

It's finished! Yay! We had our demo on Friday. Unfortunately, our stuff didn't work as well in the demo as it had the night before (famous last words). Our final project was "follow the leader," which was apparently very popular this term. The idea is basically to put all the trains in a loop on the track, and have them be evenly spaced out. So the difficult problems are merging new trains into the loop, and maintaining constant velocity.

The latter may not sound very difficult, but believe me, it is. The trains have speed settings, like speed 5 or speed 10. But that means nothing in terms of actual physical speed in cm/s. One train might go at 15cm/s at speed 5, another might only go at 10cm/s. So you have to be constantly updating the speed estimates for the trains and dynamically changing their speeds to keep them all going at roughly the same speed.

Anyway, we managed to get 8.5/10 on the project even though it didn't work as well as it should have, so I'm not too upset. It's odd though; the whole term, all these months of hard work, culminates in a 20 minute demo. The prof seemed distinctly uninterested; I can't blame him, either. Our demo was at 4:20 pm and he'd been seeing demos since 9 am. It's just odd to have all this stuff that you've been devoting your life to for months suddenly be turned into a number and become irrelevant. That's school for you, I guess.

And although I did learn a lot of stuff, most of it didn't really have to do with real-time programming. I became much better at low-level programming, learned about x86 architecture, designed some graph algorithms, and generally, I think, just became a bit of a better programmer. But the actual real-time component of the project was pretty small.

Anyway, with that, I leave you with one last screenshot. This is our track simulator, with 3 trains in the loop, and a 4th one merging in at the bottom. The red boxes are trains, and the circles are their "slots" in the loop. The program constantly computes the distance between trains and their slots, updates speed estimates, and adjusts train speeds. It also updates the slot targets when new trains are added, and computes merge targets for new trains based on their locations.

Cap'n! There be trains here!

Life

Feeling a bit poor these days, due to it being near the end of term and my having spent a bunch of money on things for next term, like my flight, my visa, and a month's rent. Needless to say, Christmas will be going on plastic :) But I'll become rich as soon I get my first paycheque at Google, so I should be able to squeeze through without too much trouble.

Will probably be coming to Montréal next weekend with mrwise. Hopefully I'll get to see a few of you NITIots. I'll post the details of when we're coming and all that when I have them.

Browsers

apenwarr: "IE is still the best web browser, darn it. And yes, I've tried Firefox and seen Opera."

This deserves some qualification, IMO. What makes it better than Firefox and Opera? It can't be features; Firefox has several nice features IE lacks, like tabbed browsing, pop-up blocking, and a Google box. The only possible way in which I could concede that IE might be better than Firefox is that there are still lots of websites that only work with IE. But that's not because IE is great in any technical sense, it's because it has the largest market share.

Upgrades

I hadn't updated my main Gentoo system in a while, mostly just due to laziness. I'd just emerge a new version of a package if I was feeling in the mood for an update.

Last weekend, though, I did a full update. Meaning I now have Gnome 2.8, Evolution 2.0 (in addition to 1.4, for ExchangeItEvolution goodness, thanks to Gentoo's awesome slot system) and the hal/udev/dbus stack.

Quite frankly, I found Gnome 2.8 to be a bit underwhelming. Not much has changed since 2.6. Samba browsing seems to work marginally better, in that it doesn't blatantly crash as often, but it still doesn't show any shares. It works if you use the "go to location" dealy and enter something like "smb://myserver/myshare" but that isn't really browsing, is it? I imagine it must work for somebody. Either that or Gnome's QA team just never tests it. But louie and gang seem pretty pulled together. Maybe I'll ask some people on IRC how to make it actually browse stuff. Not that I really need it; I use NFS usually (not quite brave enough for FunFS on my music share, unfortunately).

One thing, however, that totally frustrated me about the new Gnome was how they redid the "add to panel" stuff. I can understand why they wanted to do something about it, since the old system required navigating through eleventy billion (yet) menus. But the new dialog, while it sure is simple, is IMO actually harder to use:

New "add to panel" dialog in Gnome 2.8

Why, oh why, would you want to sort this thing alphabetically? Notice the "Application launcher" thingy is right there at the top, but only by coincidence. The "Custom application launcher" thing (which lets you add a panel icon to launch an app that isn't in the menu) is further down, for example. Not to mention that applets that have nothing to do with each other are side by side, like the freaking weather report and window list (taskbar).

This thing is just begging for categories. The funny thing is they had categories for the applets before; there were amusements, utilities, etc. It made finding stuff much easier. Initially when I tried to add an application launcher to the panel, I thought that dialog only had applets because I saw all kinds of applets in there, and expected there to be a separate category for launchers.

Sometimes I see the things they do in Gnome and I really feel like there are lot of people working on it that "get it." And I think Gnome hackers generally are pretty conscious of usability these days. But then you see things like this, that are pretty serious usability regressions from the previous version, and you just sit there and say.. What The Fuck? Sigh.

Ubuntu

So, I joined the gang and threw Ubuntu on my iBook after replacing the disk. I figured "hey, a Debian that isn't a bitch to install, cool." And it does live up to that, but I don't find it to be the baby-saving world-hunger-ending bliss that everybody else seems to. First of all, the included apmd doesn't seem to support sleep, which the default debian apmd did. It also has weird shutdown issues. Sometimes it goes to sleep (interesting, since it'll never do that when I want it to) during the shutdown procedure. Pretty annoying, since the next time you try to use the laptop, it powers on, only to finish shutting down.

It also has some serious power issues. It sucks juice faster than Andrew can drink beer. There are all kinds of crazy cron jobs that keep the disk running all the time, and I suspect the kernel has very little, or poor, power management support in it. It sucked my battery dry today in a little over an hour; OS X, by comparison, will easily last 4 hours and Debian could manage nearly 2 (without any serious tweaking; just installed apmd and cpufreqd).

Don't get me wrong; Ubuntu is pretty damn good for a first shot. It got my X configuration right the first time. But its installation is no better than Fedora's Anaconda or SuSE's YaST. It is better than Debian's previous installer, but that's not saying much. Other than the installer, I don't find anything too special about it. It is slimmed down, which is good for some I suppose, but mostly a hindrance to me, since I want all kinds of stuff like cvs and make and gcc anyway.

Life

Will be living with mag, drheld and iMac next term. Should be fun. And distinctly not cold. We're living in Palo Alto, just a short walk from the CalTrain station. The pictures of the house that I've seen looked pretty nice. And, uh, that's about all I can say because I've never even been to the area before!

Might come to Montréal with mrwise sometime soon. He needs to find a place to live and I need some drunken debauchery. We're thinking the weekend of Dec. 11th maybe...

Trains

We had our train tracking demo today. It's probably the toughest part of the course, and it was really touch and go for a while. We discovered at around 7 this morning that our sensor code (which is crucial to doing anything) was fundamentally b0rken, after several failed attempts to fix it. Fortunately, I managed to cobble together some extremely hacky code that worked by resetting the track after every sensor query, adding a significant delay to sensor notifications, and increasing the possibility of missed sensors. But it was good enough, and our trains managed to get to their destinations, missing them by about 10cm at maximum speed (not great, but not awful).

This all means that I've slept about 12 hours in the past 96. Frequent espresso treatments have meant that I'm not actually feeling too bad, although I'm sure my body will come back with a vengeance one of these days and kick the crap out of me for what I've just done.

I'm particularly proud of my userspace VESA graphics driver dealy that I wrote this weekend, which is used by a "getty" process that implements ttys, and by the track display dealy, to show the locations of the trains. You can switch ttys by pressing alt+Fn, just like in Linux. And there are 6 of them, just like in Linux. I caught myself trying to run "df" in our OS the other day :) There's also a debug tty on tty7, where debug messages from the kernel show up, as well as stdout from any processes that don't have a tty. It sounds pretty simple, but it was actually suprisingly complicated to implement, especially considering that anythiing time-intensive (like rendering fonts into a backbuffer, or blitting onto the screen) has to be done in userspace, since you can't sit around in the kernel with interrupts off doing random crap. So when a process write()s to stdout, it just copies stuff to a buffer (in kernel space) and notifies the kernel. The copy is done in userspace. If the buffer that was updated is the buffer for the active tty, the kernel generates a software interrupt, which our getty waits for. When the interrupt occurs, the getty just has to render the text from the kernel buffer to the backbuffer and blit. Simple in theory, but the details were painful.

Mag (being the insane guy that he is) also wrote a complete track simulator dealy for debugging route-tracking and train tracking. You can make a sensor fire just by clicking on it, and see how the model responds. It's pretty cool, and it's what actually goes on inside our system.

That said, here are some obligatory screenshots:

Shell running on tty2

The track display

Mag's insane track simulator

Laptop

I got a new hard drive for my laptop last week. It was about $150 after tax for 40GB, which isn't too bad. And the laptop is much more useful to me now than it was without a disk :)

After some delicate surgery, the prognosis is excellent

The only thing is that while I was in there, I managed to sever the cords to the left speaker. I don't care too much, since I rarely used the builtin speakers, using headphones almost all the time with it, but it's a shame nonetheless. The right speaker still works, though.

Bike

While I was (you guessed it!) in the real-time lab on Saturday, some drunken bomber-goers decided it would be a good idea to kick the crap out of my bike's rear wheel. The thing that really pisses me off about this is that I just don't get it. I don't understand why you'd find it fun to trash a stranger's stuff. Although I wouldn't do it myself, I could understand stealing a bike. And I could at least understand the motivation for trashing somebody's stuff if you (for some reason) really hate the person. But as far as I know, I don't have any serious enemies.

Anyway, there are few things that suck more than coming out of MC at 10am on a Sunday morning after an all-nighter, having the light burn your eyes, and discovering that your bike's been trashed, meaning you're going to have to walk the 1/2 hour home in the burning light.

This term seems to be the term where everything I own breaks; my laptop, my bike, my watch broke the other day, and we had another dead disk in our fileserver a week back (don't worry Carl, we didn't lose the Lorraine skits).

Life

Drinking tonight, of course. Followed by much sleeping. kjrose suggested beer and foos sometime soon, so that might happen this weekend. He claims to know a few bars in town with decent foos tables.

Don't have a place set up in the bay area yet, but will hopefully be living with mag and drheld, which should be interesting. mrwise and I have to figure out what we're going to do with our file server. I think he's probably just going to take it to Montréal next term, and we'll figure out some way for me to have access to it. I'll probably set up a streaming server for my music; that's what I did when I worked in the UK. Though I did suggest building another file server and datavaulting our 360GB of random crap between them :)

Ranting

This post is pure rant. Just a warning in case you don't like rants :)

Air Canada

They're bastards, I tell you! Bastards! Or, at least, the people who wrote their online ticketing system are. I've never bought a ticket from aircanada.ca without the site screwing up somehow. Today I booked my flights to Calgary and San Francisco, and it was no exception.

It's a bit complicated, because I'm going from Toronto to Calgary to San Francisco to Toronto, so it's not a simple return flight. But they have an option for that; it's called "multi city." So I do that, put in my itinerary, and start choosing flights. So far so good. Then I realise that I actually wanted to go to San Francisco a day earlier; wow, they even have an option to change it while you're selecting the flight, maybe they don't suck that badly after all, right? Wrong. I tried to change it, and was then redirected to a page saying that that "technical difficulties had been encountered." Lovely. And of course back won't work, because they've used POST without doing a redirect, and saying "yes" to re-POST doesn't work.

Ok, so fine, I start again. I put in the right date the first time this time, and get all the way to the checkout. Now it asks me to sign in with my Aeroplan thingy. I do actually have an Aeroplan account because I fly often enough that it's worth it, so I dig up the number. They ask for a 'PIN'. I think that's odd because I remember having a password, but I enter the number I think it's most likely to be, and lo and behold, that's wrong. Same deal of course; can't go back, have to re-do the whole thing again.

Finally, I get back to the same point. I enter what I think is my password, and it works. So why the hell do you call it a PIN, you braindead idiots?

One might ask why I even fly Air Canada. It's certainly a good question; in this case it turned out to be $200 cheaper than anything else, although when they make it that painful to buy the tickets it might almost be worth the money to fly with somebody else. Fortunately, I don't often have problems with the actual flights; maybe I've just been lucky, but they're typically on time and reasonably nice to me.

Packaging

So, being bored today, I packaged up a bunch of Niti's open source software for Gentoo. Thanks to recent packaging efforts (thanks sfllaw!) it was dead simple. Only a small patch was required for ExchangeItEvolution, and that was pretty trivial.

You can get the fruits of this labour here. Included are WvStreams 4.0, XPLC 0.3.10 and ExchangeItEvolution 0.9.5.1. Just unpack it in your PORTDIR_OVERLAY directory and emerge away!

The funny thing is, I can't remember if anybody at Niti even runs Gentoo any more. For some reason I seem to recall that musicdieu runs Gentoo. In any case, the packages should be in ~x86 for most Gentoo users to enjoy in the next few days, and in other architectures in the next few weeks.

IMMS

mag's been doing some cool stuff with IMMS lately. In particular, he's added a daemon with a line-based protocol, making it really easy to integrate it into any music player. I'm pretty tempted to try to get something going with RhythmBox, which is slowly becoming my favorite music player. I like the way the library UI is done, although mag brought up a valid point: it really doesn't deal with poorly tagged music very well. If you have some stuff tagged as "The Cranberries" and some other stuff tagged as just "Cranberries" they won't show up as the same artist. It's difficult, if not impossible, to get a perfect solution to this problem, but I think I agree with mag that something would be better than nothing here.

Also ran into a problem with the IMMS Beep plugin this weekend that was caused by dynamically exporting everything in the shared object; a problem I ran into at Niti over the summer. Why does everybody's pkg-config stuff give -Wl,--export-dynamic for --libs? Seems kinda dangerous to me. I certainly want to know when I'm exporting everything dynamically, and now with pkg-config I have to constantly use filter-out in my Makefiles. Sigh.

Windows

My roommate's girlfriend was in town this weekend, and her laptop had been rendered almost completely useless by adware. One of the adware programs had installed a DNS proxy that made everything resolve to a gay porn site, and others had set IE's security settings to the lowest possible. I managed to get it cleaned up a fair bit by downloading AdAware using the command-line FTP client, and ripping a bunch of crap out of the Run{,Once,Services} keys in the registry. But geawwd, I'm glad I don't run Windows!

41 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!