Poop. Chatopus consumes a huge amount of power running in the background even with the keepalives turned way down to every 15 minutes or so. The data connection keeps waking up, and that forces the Treo to power on its radio. I'm assuming that because there are no server smarts for the client to tell that it's backgrounded and thus to keep quiet, any messages, such as contact signon/off, available/away status changes, and so on, get sent out by the server unsolicited, forcing a data call to go up.
I thought the extra power consumption might be at least partially due to the fact that my phone is 15 months old and I use it a lot, so the battery has been through countless cycles—I thought the battery might be getting tired. But no; I ran a full day with Chatopus not running and the battery only ran down to 90%. With the IM client connected it runs down about 3-5% per HOUR, necessitating a recharge every night.
There's no way around these constant data calls without hacking at least the server, and possibly the protocol as well. To do it "right" would involve the client informing the server of its foreground/background state, which of course requires a change in the protocol. I can imagine some other ideas, like hacking the server to keep quiet until either client traffic arrives, or an actual IM message arrives for the Treo, and then sending all the backlogged contact list changes all at once. I have no idea how easy that would be. At least the server appears to be written in a language I know.
Well, I can still use it, I just can't really keep it connected in the background. I only get about 20 hours of battery when it's connected constantly.