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]](/~caffeine/200507/img_0000_small.png)
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]](/~caffeine/200507/img_1213_small.jpg)
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]](/~caffeine/200507/img_1214_small.jpg)
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.
email: caffeine@colijn.ca
|