Tao of the Machine

Programming, Python, my projects, card games, books, music, Zoids, bettas, manga, cool stuff, and whatever comes to mind.

Tao Teh Ching translations

Tao Teh Ching translations. What a mess. All of them are different, to the point where the verses have entirely different meanings. Which one is the "correct" translation? (Of course, the answer is that none of these translations capture the essence of Tao adequately.)

Some examples of translations of the first line:

  • The Way that can be experienced is not true.
  • Even the finest teaching is not the Tao itself.
  • The Tao that can be followed is not the eternal Tao.
  • TAO can be talked about, but not the eternal Tao.
  • (what I learned first:) The Tao that can be named is not the true Tao.

The problem with Taoism is, that all can be correct, or none. In fact, they are probably all correct and incorrect at the same time. Hmm, quantum-religion, anyone? emoticon:loveit

Posted by Hans Nowak on 2003-07-11 23:56:23   {link}
Categories: esoterica

Inspecting referrer logs...

Some observations:

  • Quite a few people come in looking for the wrong things. Last month it was the "Pretty Face" manga, this month people want free Harry Potter downloads, or are looking for Luna Lovegood. ^_^

  • How the hell can this be a referrer link?!

  • Adding my weblog to Artima Buzz sure gave me a lot of extra page hits.

  • The simple upload script attracts quite a few people as well. (Especially through the daily Python-URL.) Maybe I should do more Python/Windows thingies. I always wanted to write a little registry hack that inspects those registry keys used for automatic startup of programs, and allows you to delete unwanted entries. It's not a lot of work, and it's (probably) not difficult, but I never got around to it.

  • Top queries for July so far: 78 luna lovegood, 22 hajime no ippo manga, 19 zoids, 16 pretty face manga, 14 kiss hi naisho ni. For June: 154 pretty face manga, 41 lilim kiss, 29 luna lovegood, 23 manga pretty face, 23 kiss ha naisho ni, 21 tao of the machine, 18 hikaru no go hentai (!). (It also includes such highlights as 14 national check control, and 10 vim mug. emoticon:loveit) Who said I had a Python-related weblog? :-)

Posted by Hans Nowak on 2003-07-10 18:39:05   {link}
Categories: general

I need a UPS...

(Uninterruptible Power Supply, that is, not the overcharging packet delivery company.)

The power went off while we were away, and when I restarted the computer and tried to check my mail, I could not connect to localhost anymore. Localhost? Yes, to the spambayes proxy that sits between my mail client and the POP servers. Unfortunately, the power outage must have caught spambayes while it was writing to disk, because the database file was corrupt, and could no longer be unpickled. Verdoeme.

So, I renamed the database files, restarted the proxy, and everything works again. Except that I have to retrain spambayes from scratch again. :-(

Since power outage is a common problem here, I wonder if it's possible to make spambayes more robust. Something like writing a backup file every now and then, and trying it if the "current" file appears to be corrupt. Or maybe this isn't a job for spambayes, but something that needs to be solved with a cron job (or something similar; I'm not on Unix).

Posted by Hans Nowak on 2003-07-10 17:32:32   {link}
Categories: Python

Textile 2 beta

Textile 2 beta is available.

Tja. I don't really use it anymore, but if a Python version comes out, I'll probably stick it in Kaa and Firedrop.

Nifty: I like the nested lists. Eventually, Sextile will have to support something like this too.

Not so nifty: All this syntax kind of clutters the format, IMHO. The result sometimes looks quite Perlish, with all those |%{}*@! characters. I'm not sure if it improves readability.

Posted by Hans Nowak on 2003-07-09 17:32:28   {link}
Categories: general

On IRC, nobody knows you're not a dog

Where to download the manga (and anime) I mention in my weblog? First of all, there's the links page. Some groups release their stuff on IRC, though. For newbies, here's a quick guide on how to download from there.

(I'm assuming that you at least know the basics of IRC: logging on to a server, setting a nickname, joining a channel, etc. If not, see this tutorial.)

1. Get a decent IRC client. For Windows, I recommend mIRC.

2. Connect to a server where manga groups dwell, for example:

/server irc.mircx.com

3. Do a /list if you don't know the group names. Some well-known channels are #snoopycool, #omanga and #solaris. Join them:

/join #snoopycool


4. Read the rules first:


so you don't piss off the moderators. On most IRC channels, moderators are *very* quick to kick and ban obnoxious users, or just anyone who puts a foot wrong. Don't expect the manga channels to be different.

5. Get a list of users that have file servers:


You will now see a (possibly long) list with entries like this:

-Lizard_Axe- [Fserve Active] - Triggers:[/ctcp Lizard_Axe Valkyrie Profile! & /ctcp Lizard_Axe #mangarealm releases & /ctcp Lizard_Axe Some #cabbit releases] - Users:[0/3] - Sends:[0/2] - Queues:[0/100] - Record CPS:[16.4kB/s by Omnivore]

This means that user Lizard_Axe has a file server, that is currently used by 0 users (out of a possible 3). He's sending 0 files (out of a possible 2) and 0 files are queued. (Usually, these values with not be 0.)

To connect to the file server, use the triggers. These are usually /ctcp commands. In this case, /ctcp Lizard_Axe Valkyrie Profile! connects to (a part of) the file server, and so do /ctcp Lizard_Axe #mangarealm releases and /ctcp Lizard_Axe Some #cabbit releases. Different triggers give you access to different file collections. Just type them in the input bar, and if everything goes well, you'll get a little pop-up screen asking for confirmation to connect to this fileserver. After confirming, you'll get a DCC chat screen that lets you access the server.

6. File servers emulate a console screen, and common commands like dir are possible. You'll do dir a lot to see what files are available. Use cd dirname to enter a directory and cd .. to leave it. (It's just like DOS... ;-) To get a file, do get filename. (Make sure you don't make any speling errors in the filename, or it won't work!) If there are send slots open, the file will be transferred immediately. If not, it will probably be queued, unless all queue slots are full as well, in which case you're out of luck and have to try again later, when it's less busy.

Most of these screens close after a few minutes, so you'll have to be quick, or reconnect. Also, many users require you to stay in the channel, or they will cancel your download.

7. Some channels allow the @find command. Just type @find foo, where foo is (part of) the name of the manga you're looking for, and search result windows will pop up. Be careful where you do this, though; some channels will ban you if you do a @find.

That's all.

Posted by Hans Nowak on 2003-07-08 17:32:23   {link}
Categories: manga

Dutch bloggers

Dutch bloggers by zip code. If I still lived in the Netherlands, I would be in 64.

Posted by Hans "Nederblog leeft" Nowak on 2003-07-07 17:32:09   {link}
Categories: general, Nederland

Getting spambayes to work on Windows

I never installed spambayes before, mostly because I was incorrectly assuming that you'd need certain email clients, and that there was no integration for my current email program (Pegasus Mail).

Fortunately, I was wrong. The Pegasus/spambayes combo is happily filtering out unsolicited emails as we speak. And I didn't need a special plugin. If you haven't installed spambayes yet for similar reasons, or are unsure whether you can/should, then this article may be of help to you.

Note: spambayes is still in alpha, and it's possible that you encounter bugs. In fact, I stumbled upon a nasty bug in version 1.0a3, a parser error that made the proxy choke, and therefore stopped Pegasus from getting new mails. This may be fixed in version 1.0a4, changelog sez:

Richie Hindle 03/07/2003 Fix a bug in pop3proxy where long attachments would be broken.
Richie Hindle 02/07/2003 If an exception occurs parsing a message in pop3proxy, append an 'exception' header to the message and recover.

So, make sure you have the latest versions of spambayes and mimelib (aka the email package).

In spite of any glitches, the package is quite promising... so far, it caught 100% of spam, with only a little training.

Posted by Hans "spamburger, anyone?" Nowak on 2003-07-06 23:54:56   {link}
Categories: Python

Sunday roundup

OK, the titles are not getting any more original...

1. I am currently tinkering with an experimental program. May or may not work; development is not going very fast. More later... maybe.

(Update, 2003.07.07: The successfull installation of spambayes makes this project obsolete.)

2. Some ultra-short manga reviews.

  • Outlanders: Aliens threaten the earth. A boy happens to be the love interest of the alien princess, and from this position attempts to save the earth. <spoiler, highlight to see> It doesn't work, and almost everybody dies at the end. An interesting manga with a disappointing end. </spoiler> Rating: 6/10

  • Hotman: Strange title. A relatively subtle manga that tells the story of a family, dealing with everyday problems, emotions, love and death. Rating: 7/10

  • Venus Wars: Not recommended. Boring stuff with bikers and soldiers on Venus. (May sound more exciting than it is.) Rating: n/a

  • Eatman: A bit RPG-ish; explorer/adventurer Bolt Crank has a peculiar ability: When he eats something (usually made out of metal), he is able to reproduce it later. Lots of small stories (quests), some larger storylines as well. Rating: 7/10

  • Tuxedo Gin: Shortly before he can go on his first date, a boy has a fatal accident, but is offered the possibility to return in an animal's body. Turns out he returns as a penguin... Rating: 7/10, for now

3. If I wasn't sure before that bettas had their own personality, how about this. Today I fed my fish some so-called bloodworms. (These come freeze-dried in a container, I don't want to mess around with live worms.) Most bettas liked it, except for Shaggy, the green crowntail. He nibbled at his food, then swam away and sat on the bottom of the tank... I swear, it looked like he was pouting! emoticon:loveit I dropped some pellets in the tank (the regular food), and he snagged them up real quick.

4. Apparently MySQLdb doesn't support the ? parameter in strings. For example, this code works with Gadfly, but not with MySQLdb:

sql = "insert table (foo, bar) values (?, ?)"
cursor.execute(sql, ('blah', 42))

Instead, you have to use:

sql = "insert table (foo, bar) values (%s, %s)"

Or maybe ? is deprecated and I don't know about it?

Posted by Hans Nowak on 2003-07-06 18:06:05   {link}
Categories: manga, bettas, Python

And a quote...

I am not a jack-of-all-trades. I am an explorer.
--Bolt Crank

(Who is Bolt Crank?) (For downloads, look here while it lasts... has some other stuff too. Or go here.)

Posted by Hans Nowak on 2003-07-05 02:09:18   {link}
Categories: general, manga

Programming adventure games, anno 2003

Let's say that I want to write an adventure game. (By this I mean a text adventure, or interactive fiction.) In Python, or whatever; doesn't really matter.

This type of program is quite interesting, because modern ideas about good programming practice don't really apply to it. I can see at least two issues:

Problem 1: Incremental development. Sure, you can "do the simplest thing that possibly works", and add new features from there, incrementally. Works for many programs of all kinds. The problem is, that you cannot *release* the adventure until all parts are in place, unless your players are willing to put up with missing features. It sounds like an interesting idea: "version 1.2 now has 4 new quests", but somehow I don't think this would work. Playing the same game again just because it has a few extras?

So, I don't think "release early & often" will work here.

Problem 2: How to test it? Indeed, how *do* you test an adventure game? Can it be tested efficiently?

There's a difference between testing the basic stuff (does command X work?) vs testing "everything". The latter seems impossible. There are countless, maybe infinite situations; how can you possibly test them all? Even if we restrict the tests to every possible command with every possible object/person, that will be a hell of a job to test.

But, let's say we're going to try it anyway. How would one approach this? Maybe we need some kind of automation mechanism. Set up an environment... player in room X with objects Y and Z, creatures C and D, and objects E, F and G in inventory, execute command, test if it has the desired result.

A testable system like this might be useful. I'm not sure what the current state of the art is in the IF world; do systems/languages like Inform support testing? Or are IF authors still on their own (and dependent on playtesters) when it comes to verifying their games? I'll have to find out.

Posted by Hans "you are in a maze of twisty passages, all different" Nowak on 2003-07-05 01:40:04   {link}
Categories: games, ideas, programming

Generated by Firedrop2.