Older blog entries for pcolijn (starting at number 152)

MTA Hates Me

The MTA (aka the NY transit people, aka the only people I know who actually use a .info TLD) hate me. The past few weeks, the train I take home (the L) train has not been running between midnight and 5am. For those who know me, you can understand that this seriously cramps my style. Bastards!

But now, to rub salt in an already painful wound, they've decided not to run the L train all weekend. So I'm essentially stranded in Brooklyn unless I want to spend an altogether rediculous amount of time taking the G and J trains. Grr!

Head First Design Patterns

I bought this a little while after GUADEC and being inspired by pvanhoof. It's pretty good. I've actually used most of the patterns in some way, shape or form before but it's good to put a name to them and get the formal definition in my head. However...

Rant: UnsupportedOperationException

So I touched on this a while earlier but today my hatred for UnsupportedOperationException got some more fuel when I was reading the design patterns book.

In the composite pattern they actually recommend using this exception so an implementation can avoid implementing some of the methods from the interface. They do mention that not implementing some of the interface methods is bad, it's a tradeoff, etc. Fine.

What's evil about UnsupportedOperationException is that it's unchecked. Meaning the compiler doesn't warn you about it if you don't try to catch it. So here you are, coding against some interface and unbeknownst to you some of the methods are just going to bail on you and your app will crash, and you would never know that this will happen by looking at the interface specification or from compiler warnings. Lovely!

Please, people: stop using UnsupportedOperationException! If you really need to leave some interface elements unimplemented make your own checked exception like UnimplementedException or something and explicitly indicate which interface elements are optional by using throws in the declaration.

Unchecked exceptions should really only be for serious runtime errors, like NullPointerException, ArrayIndexOutOfBoundsException or ClassNotFoundException. IMO UnsupportedOperationException is a gigantic hack that should never have existed in the first place. And now we're all screwed by it.. sigh.

Another One Bites the Dust

My iPod just died. It's very sad. It just won't turn on at all, even if it's connected to my machine (so it isn't just that the battery's dead).

Either I've had extremely bad luck with my iPod, or they just plain suck. I bought it less than a year ago and it's already been replaced once. In addition, it skips on mp3s that xmms, mplayer, rhythmbox and my Rio Karma all manage to play just fine.

slatepelican also had her iPod die recently. And I notice that everyone seems to have a pretty new iPod around here; either the nano or the video. You don't see very many minis or pre-video full-size pods. Either people really love upgrading their iPods all the time (Apple's marketing is really good, so this is possible, I suppose) or I'm not the only one experiencing iPod distress.

Is it unreasonable to expect a gadget to last more than a year? Or are iPods and the like just the latest thing to become disposable?


Sometimes I feel like everyone in this country is this guy.

18 Jul 2006 (updated 18 Jul 2006 at 21:48 UTC) »
Reducing Suckiness

If you use Mac OS X try:

export CLICOLOR=true

In your .bashrc. Why this isn't on by default is a pretty huge mystery to me.


There's still lots of suckiness left. People often ask me why I don't like Mac OS X. I have some good reasons, but they're hard to articulate. I'm going to try anyway. Also note that I don't mind OS X for stuff like browsing the web, listening to music or managing photos. Since those kinds of things are where OS X is mostly targetted, I'm not claiming OS X sucks in general. I'm claiming it sucks for me.

  1. Not really a feature of OS X itself, but Mac keyboards and mice are annoying, especially if you use UNIX apps. ctrl and fn are reversed, so I hit fn all the time (ctrl is also the way more useful key, so it should be easier to hit). And one button mice.. yeah, lots of fun when you want to use an X11 app. On a non-laptop you can of course just plug in whatever keyboard and mouse suit your fancy, but you're stuck on a laptop.
  2. Window management. In short, it sucks. When you have 4 or 5 terminals, plus a few Vim windows, plus a few browsers, it's really hard to get around. command-tab helps a bit but its semantics for apps that have multiple windows (like terminals and web browsers) are never quite what I expect. Exposé was supposed to remedy this, but when I'm working away I don't want to make my machine swap to disk just so I can see all my windows. Plus, on my MacBook Pro it doesn't work for some reason. I setup the hotkeys I want and they just show some weird symbol I don't understand when I push them.
  3. The dock. Most confusing interface EVER. You can put files, folders and applications there. Some applications disappear from there when you quit them, some don't (yes, I know the rule governing this behaviour, but it's not intuitive). And if an application isn't in there it's a lot of effort to go and find it and run it. Some apps, if they're running and you click the icon in the dock, they will raise their windows. Some won't. So you can't depend on that behaviour from the dock (it does at least appear to be consistent with command-tab).
  4. Speed. This has gotten much better over the years as Apple's hardware has gotten faster and Mac OS X has gotten more efficient, but it still can be an issue. For example, Firefox takes 11 "hops" in the dock before displaying a window on my MacBook Pro after I boot. I have a gig of RAM.
  5. Notifications. When an app wants to tell you it's done something, it bounces incredibly annoyingly in the dock for a while, completely distracting you from whatever you were doing. This often happens for seemingly unimportant things, like "we finished installing your software update." You know what? I don't care. I'll reboot when I feel like it, thank you very much.
13 Jul 2006 (updated 13 Jul 2006 at 06:05 UTC) »
Ranty Ranty

This entry will be a rant. You've been warned :)

I finally got my new bank card from WAMU (that's Washington Mutual for those lucky enough not to know). This has been a long saga.

Step 1: learn from drheld that WAMU was replacing their VISA debit cards with MasterCard debit cards (which in itself sucks, since MasterCard is accepted in fewer places than VISA).

Step 2: have WAMU cancel the VISA part of my old card before I had received or activated the new card. Incidentally, this happened while slatepelican and I were in Spain. Not the best time.

Step 3: have WAMU assure me, very convincingly, that my card would continue to work in ATMs until I got the new one and activated it. Indeed it did work in an ATM. One more time. And then it stopped working entirely.

Step 4: receive my new card, finally, because Tony was nice enough to bring my mail from California when he was visiting drheld and Don in Vancouver.

Step 5: activate the new card! Yay, money! Order stuff online from Amazon and PalmOne.

Step 6: orders from Amazon and PalmOne not working. Call WAMU. I thought I activated my card? No, we cancelled it. Ah, so when I said "activate" you thought I meant "cancel." I see. Well can I get a new one? Sure, it only takes two weeks.

Step 7: get new card finally today.

Step 8: activate new card. We'll see if they actually did it this time.

The thing that infuriates me the most about this is that to get a new card with WAMU they have to send it in the mail. Pretty much any Canadian bank that I know of will give you a new card on the spot if you go into a branch. WAMU claims they can't do that because all the cards have to come from some central MasterCard place. They should at least be able to give you a new ATM card on the spot. Not being able to get money, especially in a city like New York, really sucks hard.


Things I have learned so far:

  • Paris CDG is quite possibly the worst airport in the world. Too ghetto to have the little walkway from the plane to the terminal, incredibly slow busses to take you to the terminal, incredibly slow busses to take you between terminals, glacial immigration lines (though when you finally get to the front, they don't do anything; they just take your little card out of your passport and let you go) and a lossy baggage system. Fun! I keep trying to come up with some funny expansion for CDG, preferably starting with "crappiest," but I can't think of anything good. Suggestions welcome.
  • Stores and restaurants and pretty much any kind of business in Spain have the oddest hours. At any given time, maybe 1/3 of things are open. We've gone by a supermarket at many times of day and never seen it open. You can walk down the main street in the middle of a business day, when you would expect all the shops to be open, and only find a few willing to take your money. Odd.
  • Evolution uses 80MB of memory. Gahjeebus.
  • Happily, tinymail uses 4.5MB of memory on the same mail. I should really check that out. pvanhoof's talk was really good, and I need to check out this.
  • Gimmie is pretty cool, and almost makes me want to switch back to a GNOME desktop from ion. Almost :)
  • Some very cool stuff is going on in monodevelop. I usually can't stand IDEs because I'm a vi addict, but it turns out the editor in monodevelop is completely replaceable, so you could conceivably just drop in vim. And it's not just for C#. Worth looking into, anyway.
Some Things Never Change

Exhibit A: mrwise

Exhibit B: one chocolate-raspberry cheesecake

Can you imagine the effect of combining exhibits A and B? Well let me tell you, it's glorious. Gloriously flatulent, that is. It also seems to be inducing hysteria:

"I practiced my vagina off, and grew a cock. A healthy cock." — mrwise
"I think that needs to go on PlaNit" — me
"... it kinda hurt, though." — mrwise


Wrote my last exam Saturday night, and am now completely finished my degree. It was a long haul, and quite frankly I'm glad it's over. I do have a lot of good memories from this degree, but I'm also getting pretty sick of Waterloo and the whole assignment + exam scene.

In 2 days, I begin 2 months of pretty solid travelling that has me doing this:

YYZ -> YYC -> TYO -> TPE -> SEL -> HKG -> BKK -> CMB -> SIN -> KUL -> YYC -> YYZ -> JFK -> BCN -> JFK

At the end of it, I think I'll never want to see another plane again. But it should be lots of fun! I'm totally looking forward to it.


UW are changing disk quotas today. If you're like me and you're graduating, get anything you want off there quick!

Google Calendar

This is the project I worked on at Google. I mainly told people I worked on Gmail because they're kinda related, but they are separate projects and I was on calendar.

I'm pretty excited about the product. Our hope was that it would really be the first calendar product ubiquitous enough to really get people using calendars in a big way, so wide-scale use was definitely one of our biggest goals. Some features that help with that:

  • Event extraction. Google Calendar will scan your Gmail inbox for messages that contain some structured event information, extract that information, and place a link on the side of the message allowing you to add the extracted event to your calendar. This works with both free-form text and Outlook-style meeting invitations with an actual iCal attachment.
  • Quick add. Near the top-left corner of Google Calendar is a "Quick add" link. You can use it to enter free-form text describing an event, and the corresponding event will be created for you.
  • iCalendar and XAPI (CalRSS) feeds. Every calendar you create on Google Calendar can have public and private iCalendar and CalRSS feeds to make integration with 3rd-party applications (like Evolution, Apple iCal and Mozilla Calendar) easy. Google Calendar can also subuscribe to iCalendar feeds and import iCalendar files.
  • Outside organisers. Using the iMIP standard, responding to meeting invitations send from Outlook, Hotmail, and Yahoo! Calendar works properly.

The features I worked on, for the morbidly curious:

  • Calendar sharing and ACLs
  • Multiple calendars and new calendar creation (this is definitely something you should use; you can create multiple calendars to have, say, a "work" calendar and a "personal" calendar)
  • Some of the calendar feed stuff
  • Some of the recurrence stuff
  • General backend stuff

Anyway, go login and enjoy! If you have a Gmail account you can just login and start playing right away!


"Everything sucks." -- pphaneuf, circa 2003

This claim turns out to be mostly true. I've had some (minor) UI rants stored up for a while, and I really just need to get them off my chest.


I've been pretty happy with it, but it does have some UI nits that drive me crazy from time to time:

First off, the address book is pretty decent, in that it lets you store multiple numbers per person, their picture (which you can take with the builtin camera), address, birthday, etc. All the standard "address book" stuff you'd want. And it even has a type-ahead-find feature that lets you type "pu" and get all the punks in your address book (a rather large list on my phone).

Now comes the integration with the phone application. This is actually pretty poor. When you get a call from an unknown number, it asks if you want to add them to the address book. Fine. But you can't just add that number to an existing contact. It always creates a new contact for you if you choose to add them. Grr. So you create the contact, save it, try to remember the number, then go edit the actual person and add the number as their mobile or home number.

Then there's the phone log. It's not by reference. So you get a call from some punk one day, and add him to your address book. Then he calls you again. In call log you don't see the name twice, you see the number and then the name. Come on.. it wouldn't be that hard to do the call log by reference, and it would make it so much more useful.

Finally, memos. Memos is an incredibly simple application. You create memos (which are essentially text files) and then you save them, view them, edit them, delete them. Pretty basic. My only gripe is that the main UI lists all your memos by number, but you can't just push the corresponding number on the keypad to select a memo. A small gripe, but that feature would save a lot of time.


I recently got a LiveJournal account (caffeinemonkey) so I could have a friends page and view protected entries. (Don't worry, this is still the official location for my blog.)

My god does LJ ever have some bad UI. My most major issue is that there's no login link (or indication that I'm not logged in) on the friends page. So when I go there I never know if I'm logged in, and I have to go to livejournal.com, see that I'm not, log in, and then reload my friends page. Seriously, people! Way to suck.

The "user info" and management pages are also hideously awful, but at least you don't use them that often. But seriously, stuff like "If you are this user, you can blah blah blah"? Hello! I'm logged in here! Of course I am this user!

The navigation bar at the top is also problematic. I mean it's ok, but it's not really all that discoverable. It took me a while to discover that I needed to use that thing and go to "Manage" and then "Friends" to add friends. I initially thought of the user info page as the "change your settings and manage stuff" page and was looking for links on there to edit friends and such.

Ok, phew. That felt good :) Be sure to join us next time on "bitching about random UI suckage."

143 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!