drivers is currently certified at Apprentice level.

Name: Donald Rivers
Member since: 2000-07-18 18:28:30
Last Login: 2009-02-10 20:17:48

FOAF RDF Share This


Currently interested in developing ClanLib, I am now the official documentation maintainer of ClanLib, but I am also currently working on supplementing my C++ knowledge. email is drivers (at) uswest (dot) net


Recent blog entries by drivers

Syndication: RSS 2.0

User Interface stuff:

With all this talk about GUIs lately on Advogato, osOpinion (the stuff about Jef Raskin), and Slashdot (which linked to both the osopinion and advogato articles), I thought it would be good to put up a new diary entry -- it's been almost three months since my last one anyway. I recently picked up Jef Raskin's book, The Humane Interface. It's really cool stuff. I mean really amazing, to me. It was like discovering a new religion and realizing you agreed with everything they taught. :) Based on the posts at the three sites, it doesn't sound like anybody has read it. When I'm not reading it, I'm constantly thinking about the ideas put forth in it. It convinced me that the current Windows/Mac GUI system is severely lacking in usability. Personally, I think GNOME and KDE's efforts to duplicate those features (and doing a worse job in the process) is not done with human interaction principles in mind. (In the articles, Raskin was criticising Apple for sticking with the same old wimp paradigm with OS X, but I think the same should apply to GNOME and KDE). I should say that he doesn't just want to get rid of windows and icons but files, and the distinct sets of commands we call applications.

So anyway, I've been thinking about creating a humane interface as described in the book. No specifics yet but I have been thinking about whether or not I would make it something that integrates itself with unix, or whether it should essentially be its own operating system altogether (ditch posix altogether) -- even though I would probably use the Linux kernel and maybe even X11 to provide access to a raw hard drive partition and the frame buffer and input devices. Just get the bare minimum running in existing OSes, then start providing functionality within the environment itself. Kind of like how emacs uses Lisp. (I think. I don't use emacs.) Although I don't know to what extent regular programming would need to apply to this new environment. Since ease of firing off commands is part of the idea behind the interface, I'm sure some way to combine commands would be part of the interface.

I realize this is a pretty enormous task. Not only am I basically creating an operating system from scratch, but most of the things we now consider "applications" will have to be scrapped and reimplemented but in a completely different philosophy. When I think about ways to attempt to do the things in the system I am imagining we now do in applications, I get very excited about the possibilities.

... more later I'm sure.

Another month, another diary entry. Today, I started trying to figure out DocBook to no avail. I am planning to write a "book" about ClanLib. I downloaded jade (Windows binary, for now) and discovered I had to find and install three other things, each from separate sites and not necessarily ready to use: the docbook dtd, iso entities, and DSSSL stylesheets. Had to hack various files to get them to recognize each other and everything is still all screwed up. I must have done something wrong, but the error messages certainly don't help. I'm over my head. I'll probably figure it out soon enough. I'm going to try installing Debian at home (my Mandrake/GNOME setup is all screwed up at the moment) and I am assuming that if I tell Debian to install jade it would automatically set everything up correctly. We shall see!


This weekend, I fixed ClanLib's WAV file loader to handle extra chunks which currently cause it to report the file as invalid. I ran into the problem writing my ClanTTT game I mentioned earlier.

I helped my friend Nick write a new PCX loader for ClanLib. The current one only handles 8-bit files, but the one we wrote handles everything from 1-bit (mono) to full 24-bit files. It was fun doing that kind of graphics programming because most of the time that we were debugging it, the screen was a really mixed up version of the image, but when the correct image popped up, it looked beautiful and we yelled out in surprise that it finally worked.

It is my first code contribution to free software! (As soon as I send in the patches.)

Today I picked up eight Isaac Asimov books for about US$20 from a used book store. They are the nice Del Rey editions from the 1980's with the beautiful artwork by Michael Whelan (the "Robot" and "Foundation" series, anyway), not like the ones in print today. (I used to have a much nicer set but it got stolen in 1993.)

Check it out.

Well, I am now officially the Documenter for ClanLib.

I'm also working on writing a multiplayer ClanTTT (Tic-Tac-Toe), network multiplayer game. Of course it's only an example. I will use it as a basis for a ClanLib tutorial. (The current tutorials (not written by me) are way out of date.)

I got one of the two lead developers to join Advogato. If some people could certify him as a Journeyer, that would be cool. Then he could actually sign himself up on the project page. Funny how "observers" can't sign themselves up even to their own projects. He's mstarch.

I have been studying object oriented architecture and design, along with trying to figure out the architecture of ClanLib, in order to write documentation for it. For the longest time I was stuck because the inheritance tree didn't make sense. There is a CL_Target interface, which is something you can draw on. Then there is a CL_SurfaceProvider which instantiates images that can be blitted to the screen. Then there is a CL_Canvas, which acts as both a CL_SurfaceProvider and CL_Target. That is, you can draw on it, then use it to instantiate a CL_Surface. A CL_Surface is packed into a special format designed for fast blitting to the video card, not for drawing on. In fact, the data may be cached on the video card. For some reason (probably for the benefit of CL_Canvas) CL_SurfaceProvider (which is an interface class) inherits from CL_Target. Yet, not all surface providers are intended to be Targets. Most surface providers just load an image from a file, or the resource manager. So I asked why they made it the way they did, and suggested an improvement if there wasn't a reason. That is, make CL_Canvas use multiple inheritance of interfaces, both CL_Target and CL_SurfaceProvider. I haven't heard back from the mailing list yet. I'm new to this so maybe it's some kind of social mistake to suggest an improvement (stated as a question) without knowing the whole situation, and without providing a patch (and testing it out yourself to see if it is feasible). Who knows. We shall see. Actually I just wanted to ask if I was way off base before I tried changing the code.

6 older entries...


drivers certified others as follows:

  • drivers certified deekayen as Apprentice
  • drivers certified lilo as Master
  • drivers certified mstarch as Master
  • drivers certified gotem as Apprentice
  • drivers certified scjody as Apprentice
  • drivers certified drivers as Apprentice
  • drivers certified sh as Journeyer
  • drivers certified sphair as Journeyer
  • drivers certified Judas as Master
  • drivers certified grumbel as Journeyer
  • drivers certified carmstro as Apprentice

Others have certified drivers as follows:

  • miniver certified drivers as Apprentice
  • mstarch certified drivers as Apprentice
  • gotem certified drivers as Apprentice
  • sphair certified drivers as Apprentice
  • scjody certified drivers as Apprentice
  • drivers certified drivers as Apprentice
  • sh certified drivers as Apprentice
  • carmstro certified drivers as Apprentice
  • Judas certified drivers as Apprentice

[ Certification disabled because you're not logged in. ]

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!

Share this page