Older blog entries for xach (starting at number 99)

11 Mar 2003 (updated 11 Mar 2003 at 19:40 UTC) »

Been having fun playing with CDROM ioctls. I'm setting up a little burn-tower with three 8x CDRW drives, and I wrote a little program that polls the drive and automatically burns a disc image when a blank disc has been loaded. I got a bunch of CDRW drives for under $20 from ebay. I hope they don't suck.

I've been messing with a little addressbook program in SBCL. SBCL spits out a lot of style complaints by default. I should look up how to quiet it down.

Just did a big upgrade to our Postgres system while moving it to a faster server. There were some gotchas.

  • No longer silently truncates input to table field length (i.e. stuffing 60 characters into a varchar(50) generates an error now)
  • No longer coerces '' to 0 when an integer is expected
  • No longer treats timestamp(N) as producing a date and time matching what Unix's time(N) would; you have to use abstime(N) now

The cool new features are so worth it, though.

Peter Norvig has a nice footnote about Ed Yourdon.

Some dude posted a short CGI handler to comp.lang.lisp a couple weeks ago, and it struck me as so fundamentally wrongheaded that I thought I'd try to do it The Right Way. I've learned a lot in the process, though I can't say I've gotten to The Right Way yet.

Base64 decoding confuses me. The spec says to ignore all input that isn't in the base64 alphabet, but warns that if the input ends on a 3-byte boundary there is no trailing padding. So how can you know when you're done decoding? EOF? Relying on content-length? Ad hoc? It seems to me that if, for example, there were two separate base64-encoded inputs in a file, you would need some external information to figure out where the first one stops and where the second one begins.

Last night, after buying a new hard drive, I added another computer to my home network. That brings the network device total up to:

  • 1 firewall
  • 4 workstations
  • 1 server
  • 1 laptop (with another occasional user)
  • 1 laserjet
  • 1 airport

There are some other random bits of defunct hardware, too, including a very old DEC UDB box.

With that many systems, it was getting annoying to figure out what IP I had given them. Setting up internal DNS with tinydns and dnscache was really easy; dnscache is quite flexible about redirecting queries.

I'd like to get a serious backup strategy going, but DLT media is insanely expensive. I can only afford a few tapes at a time.

Anyway, since the new system is a "server", it will be nice to move things like lpd, tinydns, dhcpd, and samba off my personal workstation.

It's hard to stifle the new hardware urge. I keep thinking "Man, it would only be a hundred bucks to upgrade this thing to a gigahertz athlon. Oh yeah, it would need a new case. Oh yeah, it would need PC2100 memory. Oh yeah..."

I just bought "Common Lisp: The Language" and "Lisp in Small Pieces" from Chapters at a huge discount. The prices, in CAD$, were lower than the prices in USD$, before figuring the huge exchange rate advantage.

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.

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