Older blog entries for xach (starting at number 94)

jfleck: That quote is on jwz's marginal hacks page. There's also an instance of the perl version in this beautiful rant by Erik Naggum.

Got Metroid Prime, but my Cube is on the fritz. After about 15 minutes it gets "Disc cannot be read" errors repeatedly, for any disc I try. Argh! Despite that, Metroid Prime is a lot of fun so far.

Haven't Lisped much in the past week or so. Been too busy to mess with it.

Going to see George Carlin tonight. Woo!

Just got Norvig's Paradigms of Artificial Intelligence Programming. Rock! I also got a lot done on my Lily bot. I've been hanging around on irc.freenode.net #lisp a bit, and it's pretty interesting, though nobody bit on my question about how to collect and keep track of the various utility functions I'm starting to come up with. And it's also more like #sbcl-hacking sometimes.

7 Nov 2002 (updated 7 Nov 2002 at 03:26 UTC) »

Spent a good amount of time messing around with CMUCL trying to make a bot for a MOO we use at work called Lily. I'm not quite sure how to do I/O multiplexing on a network socket and standard input, but I think I'm making progress. It's fun to actually make a useful program in common Lisp instead of just reading about it. I tried to use dan's DB-SOCKETS package, but I couldn't get it to compile in my CMUCL.

My interest was renewed after reading Erann Gat's old PARCIL code, which implements a simple C evaluator. It didn't look too awful painful, so I figured parsing the Lily protocol wouldn't be impossible.

Also recently learned that Paul Graham's Viaweb setup gave every customer their own Lisp image! That's one way to avoid problems with multiprocessing.

garym: Erik Naggum recently wrote about the "by dummies" thing on comp.lang.lisp. Here's an excerpt:

Never have I seen a book published by a novice for novices, nor heard of such a thing, but that does not mean it does not exist -- the likelihood that I would purchase it or read it is zero, as it would undoubtedly have an off-putting title and cover, probably including the target audience "dummies" or "the complete idiot". I recently reviewed a book in which the author could only be understood to apologize for his lack of mastery of the subject when he chatted endlessly about how hard it was to linearize the material and where he used more promises of what was to come and repetitions of what he had discussed than actual new information in each paragraph, how this and that feature in the topic he discussed "is not easy" to use and understand. It was torture to read and try to lift it to some readable level.

I took a couple pictures to Portland Color to get 8x10s made. The output was a little disappointing; it looks pretty much like a high-quality inkjet print. Which isn't bad, but it's not as nice as the slide. I shouldn't be surprised; I already know that nothing looks as nice as a slide on a light table. I'll have to take some pictures with more vivid colors and interesting subjects, I guess.

I've been working on an interface to Verizon's wholesale order system. Verizon has a website where you can place orders and check their status. Their interface is cumbersome, so a coworker and I wrote a frontend that's much saner and less error-prone. It works acceptably well.

However, Verizon is about to update their web interface, breaking all our software, so I've been looking into alternatives to LWP blasting and HTML scraping. Verizon has an application-to-application interface that uses EDI that looks like it might do the trick. The only downside is wading through literally thousands of pages of "business rules" to find out the small subset we need to work with. It's a scary glimpse into the world of Big Software Projects for Big Companies. It looks like the safe business strategy is to frame programming problems as tedious exercises that can be solved by armies of mediocre drones.

1 Oct 2002 (updated 1 Oct 2002 at 21:18 UTC) »

I found the problem with my prototypes. Turns out order is important and the compiler doesn't see the definition in time to do the right thing. That plus a failure to "use strict" when testing my idea out. Duh.

In other boring news, I got a new computer (a dual athlon like raph's), a new girlfriend, and I'm looking to buy a house. Oh, and I'm going to Hawaii and Super Monkey Ball 2 is a lot of fun.

That is all.

27 Sep 2002 (updated 1 Oct 2002 at 21:09 UTC) »

I've been trying to use prototypes to make new utility functions in perl. The "perlsub" documentation says this:

Perl supports a very limited kind of compile-time argument
checking using function prototyping.  If you declare

sub mypush (\@@)

then "mypush()" takes arguments exactly like "push()" does.

But that doesn't seem to be my experience. I wrote a function called linsert. The definition is:

sub linsert (\@$@) {
    my ($aref, $index, @elts) = @_;
    splice(@{$aref}, $index, 0, @elts);
}

Then I tried to write mypush using linsert:

sub mypush (\@@) {
    my ($aref, @elts) = @_;
    linsert(@{$aref}, $#{$aref}, @elts);
}

It doesn't work; the original array is not altered. But if I use the built-in push instead of linsert, it magically works. It seems that this makes it impossible to build a pyramid of utility functions, as the base functions don't seem work as expected unless they're built in.

I also found out that $a and $b are special when "strict" is concerned. I had good luck making a "foreachpair" utility function, but I got tripped up when making "foreachtriplet". Ugh.

23 Sep 2002 (updated 23 Sep 2002 at 13:38 UTC) »
vab: I mailed you about converting the Gazetteer data to the format Zipdy uses. How did you do it? The file format consfuses me.

85 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!