Older blog entries for kwoo (starting at number 34)


SyntaxPolice: Thank you for the link! The link I was talking about was for another book on the subject. The two should complement each other, though.

GNU Smalltalk

Got a mail from brondsem announcing success in building 2.0k on Solaris/SPARC, so it's not a generic big-endian issue. I'll look into this more when I have time -- right now I'm rushing through some housework in the hopes of getting more of the grass cut before it starts to rain.

X serving

Got remote X connections up and working within a matter of minutes. Encrypted, even. Not to shabby -- thanks to the OpenSSH team for not making it a pain in the butt!


Playing with the regular expression library in O'Caml. It is fun and entertaining. I'm more used to a Perl or Ruby approach, but Caml's is good enough for what I need to do.

I found an on-line book that is a pretty good introduction to O'Caml, and it answered some of the questions I had that weren't answered in the user manual. This makes my life much easier! I'll post the URL when I find it again, but it's only two or three links off the main O'Caml site.


Built 3.06 on both of the laptops (Linux/PPC and Linux/x86), re-read the user manual, and am in the process of catching up on the mailing list.

GNU Smalltalk

No progress here. brondsem e-mailed me regarding linking problems with Solaris (specifically /usr/ccs/bin/ld), but I wasn't able to help -- it's been a long while since I've barked up that tree.


Not a lot of work done here, either. It continues to bubble in my subconscious, and a lot of painting myself into corners has (hopefully) been avoided.


I had the potential for getting some user input before real development begins, but that won't be happening now, as I can't make the meeting. The other folks are meeting up, and I'm hoping that the results will be posted on the mailing list that sparked the whole idea.

Spare cycles

My spare laptop is pretty resource-limited (32MB RAM, 366 Celeron), so I'm going to see what I can do about leeching off of my other machines' spare cycles (and memory). The firewall box has a bunch of spare disk space and a thousandth of a percent of CPU usage actually being taken up, so it's likely I'll just run X sessions off it.

Of course, this means I'll have to distribute backup responsibilities across the other machines on the network, but cron and rsync will do that just fine.

Other stuff

Much yardwork and spending of money today. Got a new shovel, some strawberry bushes, a small army of flower pots and labels. If it doesn't rain tomorrow, I should be able to finish getting the lawn trimmed right down and we can stake out the garden plots and start ripping off the turf.

I finally remembered to pick up chamomile seed, and we got a couple of other herb seeds. This weekend marks approximately four weeks before last frost in our zone, so we have a lot of seed starting to do this weekend.

GNU Smalltalk, part deux

Here's the current scoop. If there is a place to find more information, please let me know.

  • builds successfully on FreeBSD/x86 5.0rc1, but fails sigsegv stack overflow test
  • builds, tests, and installs successfully on Linux/x86 (Slackware 8.1, fresh install)
  • still not building on Linux/PPC (invalid character '^?' makes CFuncs.st barf)
  • uses libiberty.h, which Mac OS X.1 doesn't seem to include (and I'm too lazy to do a binutils install on it)

I'm thinking it's an issue with big-endian machines -- can anyone with a big-endian machine take a few minutes to build 2.0k and see if it works? If it's a generic issue with big-endian machines I think I can find it, but if not, I've still got a bit more digging to do.

GNU Smalltalk

Got the latest (2.0k) and set about compiling it. I was never able to get the earlier 2.0[:alpha:] versions to compile, but this time I've resolved to see it through to the end.

There are three languages that I really like -- Lisp, Ruby, and Smalltalk. I have working Lisp and Ruby interpreters, but would love to add GNU Smalltalk to the collection. Squeak is fun for playing with, but I find it hard to understand, and too graphically demanding.

The first problem was an include of the file siginfo.h in one of the sigsegv files. It turns out that file isn't necessary to include on Linux/PPC -- I commented out the include, and it worked just fine.

Unfortunately, I'm getting bit in the butt when it comes to CFuncs.st -- it's complaining of an invalid character ('^?'), and I'm trying to figure out where that's coming from.

More (and hopefully a patch) when I figure that out.

Software Engineering

I'm going through the 6.170 course materials from OpenCourseWare at MIT. So far (middle of the second lecture notes) things are very much as expected, but with a slightly different point of view than many of the books I've read on it.

Slackware 8.1

I just finished burning a Slackware 8.1 ISO to install on my old laptop. I had installed QNX on it just to see what was happening in that world, but QNX doesn't like a Celeron 366 with 32MB RAM too much -- but Linux will do just fine. I'm just going to run a cable from the office to the bedroom so I can do my thing while Ellen reads, but still hang out together.

Ruby and XML

After a brief search, I have come across nqxml, a pure Ruby non-validating XML parser. It misses a couple of things from the spec, but those things are documented, so I can be sure to avoid them.

I'm going to make a little tag-rewriting tool with it, and hopefully it won't turn out too bad. The only real worry I have is that it will turn out to be as confusing as XSL-FO. We'll see.

Trust metric presentation

raph: I read through your slides for CodeCon, and found it inspirational. Thank you for posting those. I had been messing around with ideas for authentication and whatnot for Blister, but I think it might be more interesting to integrate an Advogato-like trust metric instead -- it takes more effort, but it will be interesting effort that will teach me something.

XSLT and brethren

I've been reading up on XSLT and FO for the past couple of hours. On one hand I can see the "correctness" factor -- but on the other hand, it really seems like a bunch of academic masturbation.

That is not meant as a flame to supporters and/or implementers of the platform -- it's just a personal opinion. Rate me down if my opinion bothers you, but send flames to /dev/null. Responses to flames will be generated by /dev/zero. Or /dev/urandom if you're lucky. :-)

That being said, I don't like to complain about something without at least having a suggestion as to how to fix it. I don't have a fix right now, but I am going to focus my next few hours of reading on the DOM or SAX (whichever is best-supported by Ruby) and see if I can't throw something together for those of us that want little more than tag transforms.

Random question of the day

The Japanese language uses counter suffixes, and there are many of these counter suffixes for different types of items. Which counter suffix is used for lines of code, and which is used for files/directories in a filesystem? My Japanese isn't good enough to hit a Japanese programming page and find the answer on my own. Needless to say, my language texts are a little lean on answers to this one.


I have started a new project called Barter. It will be an on-line, community-based bartering system, implemented as Ruby CGI scripts with HTML templates. I plan to migrate the templates to XML as soon as I understand XSLT.

Barter is kind of a "warm-up" project for another project. The other project is much more complex, and I think I'll save time in the long run if I pull off a simple project to learn XSLT and beef up my Ruby skills rather than try to jump right in to the complex one.


Though there are now a few templates and some simple code written, I'm beginning to see that this is going to turn out to be a rather complex project. I have decided to develop Barter as a way of getting familiar with XSLT and Ruby, both of which I intend to use in Blister.

So far I have found two reasonable-looking XSLT toolkits -- Sablotron and Xalan/Xerces. I'll have to do a little bit of playing with them to figure out which one I get along with better.


Well, I asked Ellen, and she did come up with two more points on the Blister suite's feature list. The feature list now looks something like:

  • seed tracking (source, info, germination rates, number planted, etc.)
  • garden organization (what goes where, beneficials, cross-pollenation, etc.)
  • crop rotation and fertilization
  • comprehensive labelling (mostly for seed starting)
  • a foods and recipe database
  • animal ancestry tracking (to avoid line breeding, etc.)

I also thought of one more point earlier, but I seem to have forgotten it.

The list also doesn't include common infrastructure -- user tracking, authentication, etc. When I add it all up, it is fairly compelling to adopt a web infrastructure for it, or at least a XML-over-HTTP architecture. I need to look into the default support for XML and CSS2 for common browsers on OS X, Linux, and the BSDs, which form the majority of my machines.

It's also tempting to use it as an avenue for exploring XSL. Is anyone still doing anything with XSL? I remember it (the early versions I played with a few years back) being rather on the obtuse side, but I need to have another look and see if it makes sense to me now.


I re-read the first section of The Ruby Way, in preparation for doing some prototyping work for Blister and for an on-line bartering forum. The parser is a little more hairy than I remember it being, but it does what I expect for my coding style. Though I am usually a bit put off by an enforced coding style in a project, I definitely see the point with Ruby -- there are a few gotchas that can be defeated by sticking to one style (begin-end and curly bracket subtleties, determining the receiver of a function, the unary '*' operator, and a few others).

Other stuff

My hand is doing much better now. Another couple of days and the burns will be gone.


The feature list for Blister has been growing and growing. I'm starting to have second thoughts on trying to integrate it all, and have several smaller programs instead. So far the major divisions are:

  • seed tracking (source, info, germination rates, number planted, etc.)
  • garden organization (what goes where, beneficials, cross-pollenation, etc.)
  • crop rotation and fertilization
  • comprehensive labelling (mostly for seed starting)

I'm sure if I asked Ellen, she would add another two or three points to the list.

I've decided on an XML back-end to the whole mess, simply for ease of parsing, and because it can be edited by hand. If I'm careful with the DTD creation, I can have a tagset that will compress well.

Other stuff

I have to hack together a XML tutorial for Ellen tomorrow while she's at work. She's a WordPerfect 5.1 veteran so the idea of tags is not entirely foreign to her. She's also a real trooper, learning Mac OS X and basic Unix -- she decided it was time to organize her system tonight, and she mastered the columns mode of the Finder in no time.

I also managed to burn my mousing hand preparing dinner this evening. The pain is keeping me awake, but not alert, so it's quite frustrating. Well, off to bed I go in hopes of sleep...

25 older 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!