16 Apr 2004 pcolijn   » (Journeyer)

School

Had my OS and Calculus exams on Tuesday, and they both went well. The Calculus exam was surprisingly easy, and OS was pretty much how I expected it to be. I was satisfied with how I did on both of them.

Then, today, I "had" my Algorithms exam. I got there on time, we all started writing, and in the middle of the exam, the fire alarm went off. I hate that. It's funny how fire alarms only go off during exam time.. this is my third year at Waterloo and I've only had one fire alarm during lectures, but three during exams. So they decided, since it was a good 25 minutes before we got back in, that the exam should be cancelled, and a rewrite scheduled. So now I have no idea how long I'll be stuck in Waterloo...

GNOME platform issue

I thought I'd finally weigh in on this whole issue, now that a lot of people have brought up a lot of different points. For me, as somebody who's interested in GNOME development but has relatively little experience, I am particularly sympathic to a lot of the issues. GNOME development right now really isn't as approachable as it could or should be.

However, I think a lot of people got caught up in the language aspect of this problem. It isn't necessarily an issue with the language per se, although higher-level languages like C#, Java or Python can be convenient. IMO, there are two big problems: GObject, and lack of documentation.

So let me explain: I know there are a lot of advantages to C + GObject, but I hope most people will agree with me that GObject isn't exactly easy to use for your average CS freshman. "Your average CS freshman" is potentially the kind of person we want to attract to GNOME development. I've used GObject a bit now, and "subclassed" stuff and made new classes, and I'm starting to get the hang of it. But it's not exactly fun. I remember in 1st year playing around with Swing and thinking it was tons of fun.. not actually coding up the UI, but writing a new LayoutManager that did some nice layout you liked in 20 lines by subclassing an existing one and overriding a method. To subclass a container in GTK and override a method would be considerably more pain than a 20-line hack-job, to be sure.

The first time I wrote a new GTK container, I copied another one I found somewhere and kind of rewrote some code in some promising-looking places, and it more or less did what I wanted, but I didn't really bother to figure out how it worked. I've since learned a bit more and could probably do it without copying somebody else, but it took me literally 2 minutes to figure out how to write a new LayoutManager in Java. I looked at the Sun docs to see what a LayoutManager had to do, figured out what I wanted to override, did it, and I was done. No messing with GTK_IS_FOO macros, no nasty typedefs, it was easy.

When it comes to the second issue I mentioned, documentation, some of it is there and it is fairly good. The GTK docs for example are pretty decent. They could use a few more screenshots, maybe, to illustrate how something is actually going to look, but meh, most people use Glade anyway. When I started working on gnome-print, however, I couldn't find any useful documentation. The code was poorly commented. I walked my way through it, and it was fine, but for a larger project it's not so easy to just look at the code. Case in point: I've also written some stuff for Evolution. If you go on evolution-hackers and ask if there's any kind of code walk-through document or anything to "get started", you'll be told to read the code. It's a fair attitude for some things, to be sure. It's open source, you have the code, take a look! But if you're genuinely interested in trying to fix an Evolution bug, and you don't really know where to start, it'd be nice to get just a little hand-holding. There are hundreds of thousands of lines of code!

So, what I really want to say, in addition to a bit of a rant, is that I don't care whether I use Python or Java or C# or Perl, I want that "wow!" feeling you get when you can write a new widget to do something cool in 10 lines, and I want it in GNOME. I think some people may have lost sight of the original ideas behind the whole suggestion of a new language in the first place, after getting all caught up in the various potential legal issues, and the whole thing degenerated somewhat into a language debate.

I'm also not trying to suggest that GObject is totally useless and we need to get rid of it. I understand what the reasons have been so far for keeping GNOME C/C++. GObject just needs to get better and less painful, and it needs to feel more like genuine object-oriented programming.

Water

Our water wasn't turned off last weekend after all. Then it was going to be turned off this weekend, and now maybe not, apparently. The whole thing is rediculous. The landlord didn't tell us he had cancelled his plans to turn it off last weekend. If he had, I wouldn't have needed to make plans to stay at a friend's place. And he only let us know that he wanted to turn it off this weekend yesterday. I'm pretty sure he shouldn't be able to jerk us around like this, and it's getting to the point where even somebody as lazy as me is probably going to do something about it...

Latest blog entries     Older blog 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!