Older blog entries for jwb (starting at number 3)

Gene Kan

I knew Gene Kan, barely. He and Yaroslav are friends with my friends, and are occassional visitors. Gene was in my office a few weeks before his death, installing an email server in a machine room. Why would a man expecting death build an email server to last a decade? I do not know.

Role-based access control

There is a SIG in the ACM for role-based access control (RBAC). They meet every year for a symposium. A lot of papers are presented. I cannot see anything in all the RBAC literature which is more functional than putting users into groups the old-fashioned Unix way. My machines using regular Unix security have many role accounts: httpd, nntpd, ftpd, lpd, uucp, daemon, nobody, and so forth.

The main problem with the Unix authorization model is the lack of delegation of authority, but this is a separate issue from RBAC.

The iPod is my new diversion. I started a project "dopi" to write an application that uses the iPod. So far, I can list all the files, read and print their ID3 v1.1 tags, play music from the iPod, copy data from the iPod to another filesystem, and write the ID3 v1.1. ID3 v1.1 data can be changed in place because the data is fixed length and offset. I can't write anything else because libhfsp doesn't support writing and there is no read/write filesystem driver for HFS+ in Linux.

I just wrote a stupid little program that ties everything together by walking through the iPod playing 200KiB at offset 400KiB from the beginning of every mpeg.

I don't think Tk is going to cut the mustard for the UI, so I am going to go off and read a tutorial on QT. C++ is evil, but GTK+ is more evil.

If you have an iPod and a suggestion please send it along.

I have begun work on an implementation of the W3C DOM Level 2 Core and Events. The implementation language is C. There are existing DOM implementations in C, not least DOMC and GDOME. These packages don't implement my style of C API, so I decided I needed my own. I absolutely insist on consistent return values from functions, naming conventions, etc.

So far I have some relatively good ideas for the nuts and bolts. It should be easy to use a shared string table to reduce memory usage on long documents, and I have planned ahead of time how to implement live NodeList objects (which neither existing implementation implements).

The major stumbling block so far has been deciding what C datatype to use for DOMString, which is a sting of unsigned 16-bit values. wchar is a joke: just like all other C datatypes (save char), you never have any idea of its actual width. The C library functions for dealing with wchar are horrible. I have dodged this problem by skipping wchar altogether and just using auto* tools to detect and define a 16-bit-wide system datatype.

As usual, C's definition is a hindrance. There ought to only be signed and unsigned 8, 16, 32, and 64-bit integer datatypes in C, and they ought to be explicity defined that way.

I am playing with this site. It let me certify myself as Apprentice :) I think this is a niche community worth investigating.

PS: There doesn't seem to be a way to revoke a certification.

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!