Caffeine Peter Colijn
(RSS)

July 05, 2005 (link)
Grazaphics

Just finished my raytracer. At 7am. It's due at 9am. I appear to be a master of StudentSyndrome (or is it a master of me?). In any case, I made it generate a purdy picture:

[image]
Bender's all shiny now

Life

My sister's been in town for the last few days for her birthday, and that's been nice. Went out with her, mrwise and amps on Friday for some beer, which I seem to be doing far too rarely this term.

[image]
mrwise in his preferred coding apparel

Also came across one of the classiest wines in existence this past weekend, namely Fat Bastard. I mean it's like a wine just for me! It is actually reasonably good, but with a name like that it doesn't even have to be.

[image]
The klassy wine

July 07, 2005 (link)

On Clothing

drheld: Clothes are for chumps. You should have just left :)

July 12, 2005 (link)

A day in the life of Pedro

So here I am, coding up my stupid, stupid concurrency assignment. (I'll rant about why it's so stupid in a moment; hang on.) Once in a while, it's printing out some stuff I don't expect. So naturally, it being a multi-threaded program, I assume I have some annoying race somewhere that I'm going to have to track down. But nope. I just left a 'return false' at the end of a method from when I hadn't implemented it, instead of actually, you know, returning something useful. Classic.

Concurrency (the course) sux0rs

This course has been an exercise in frustration. The assignments are mind-numbingly boring, most of the material is covered in either OS or trains and they like to cancel the lectures without notice. Whee!

If you need some examples of boring assignment questions, here goes:

Implement nqueens. No really, in 4th year. Even though you've already done it 5 times in other courses.

Implement quicksort. No really, in 4th year. Even though you've already done it 5 times in other courses. Good, now write it AGAIN in Java.

Write the following stupid thing that could never even conceivably be the slightest bit useful FOUR TIMES in only slightly different ways. Good, now write the stupid piece of shit AGAIN in Java.

Sigh.

July 13, 2005 (link)

Gotta Love rml

"Rumor is that the 'd' in 'dnotify' does not stand for 'directory' but for 'suck.'" Yep. But now that inotfiy has been merged into the kernel, maybe there will be less suckage in the future.

July 17, 2005 (link)

PCs suck

Here's the story: in California, I bought a GeForce 6800GT. When I got back, I promptly attempted to install it in my box. It massively didn't work. As in the system hung hard right after the BIOS did its "detecting drives" crap.

Well, that sucks, but I had crap to do, so after I played with BIOS settings for a while I just stuck my old card back in. Meanwhile, mrwise confirmed that it did work in his machine.

I thought my super quirky dual Athlon board had finally come to haunt me. Today, however, wanting my powerful video card to play with GPU shaders, I decided to try again. Eventually it turned out that "USB legacy support" was bunking the whole thing up. And Apple wants to switch to this crap, when they have a perfectly sane architecture? I mean I do understand that there are all kinds of business reasons they'd want to, but it does make yah wonder...

Anyway, after turning off USB legacy support, I'm happily using my new video card and Quake3 runs at over 200fps at 1600x1200. Whee! Of course, I can no longer use my keyboard to get into the BIOS or deal with lilo, but hey, nobody ever screws up lilo.conf, right?

But seriously, why on earth would USB legacy support make video fail, and not in general, only with this particular card? One of my previous managers suggested, early in my co-op career, that I should really switch out of software and into hardware. Yikes! I wouldn't last 2 minutes in hardware, and I think this experience proves it. At least with software you can get debug information. With hardware (at least for someone with my level (i.e. none) of experience) you just have to poke and hope until it works...

July 23, 2005 (link)

GStreamer

My first venture with GStreamer: a simple program to read tags. It weighs in at ~150 lines, with 4 callbacks. That's not a lot, but when you consider that all it does is read tags, and the code isn't really very obvious (to a newcomer), it is a bit of a pain.

Compare with TagLib: ~20 lines, no callbacks. TagLib's API is so simple you don't need to think about it:

TagLib::FileRef f("foo.mp3");
TagLib::String artist = f.tag()->artist();
f.tag()->setAlbum("Some album");
f.save();

This is exactly how I envision handling music tags. It just makes sense. You see that code, and you know what it means. (They lose a few points for writing their own string class, so that if you use their library you'll have yet another string type floating around your code, but Glib/GStreamer/GObject re-implement the entire universe so I can't really fault them when comparing to that.)

Now I understand that GStreamer does way more than TagLib, and that's great. A good, free media-streaming framework is definitely a Good Thing. But as much as possible, I believe that keeping the simple cases simple is really valuable, since it brings people to your library for something simple, and hopefully as their app matures they'll move into its more advanced features. If all I needed today was tagging, I'd use TagLib. And then if I decided I wanted playback later, I'd have no strong reason to use GStreamer over anything else.

Anyway, a little perspective for those who may be in a position to take advice on how to promote GStreamer :)

BTW, I will end up using GStreamer in the end for tagging since using TagLib would add another dependency that not a lot of people have. Anybody with GNOME will have GStreamer; TagLib is pretty non-standard as far as I know.

July 30, 2005 (link)

Internet Explorer 7

jim: It's not that there is no stop button, it's that the stop and refresh buttons are now one and the same. When a page is loading, the button is stop; when the page is finished, it's refresh. I think this is pretty awful; users will just get confused as to why there is sometimes a stop button and sometimes a refresh button, when it does what, etc. Not to mention that in some (admittedly rare) circumstances you do want to reload before the page has finished loading.

And yeah, moving the menus down below the location bar is sheer idiocy. People will be clicking "back" instead of "File" for months. Sigh.

Back: June 2005 Next: August 2005

email: caffeine@colijn.ca