iHate ( the Utu client )

Jan-3-08: It’s Broke Folks

Several people have commented about trying to download iHate for the mac and having it not work. This could be several things from Leopard incompatibilities to just a bad build for the client.

I’ll be fixing them up shortly and putting new builds up for people to try.

It should work on Linux, but contact me if it doesn’t (I’m running it on Linux).

Zed (zedshaw@zedshaw.com)

Sep-18: Toolbar Looking Good

Here’s a little screenshot showing off the toolbar being positioned to the right and the dynamic feedback icons in the tabs:

iHate now has most of the commands available via the command input (/find for example) as toolbar buttons.

What’s great about this is that the toolbar buttons just run the commands themselves, and the commands are smart enough to realize when they’ve been given nothing useful so that they prompt you for input via a dialog box.

This means, if you do /find you get a dialog box, if you click the find icon (binoculars) then you get the dialog box as well since that’s what is run as a command, and if you type ’/find mongrel’ then you don’t get prompted and it shows the results in your currently selected tab.

Sep-17: Super Sexy Find Command

Developing commands for iHate is proving incredibly easy. I had to beef up the robustness of the command running engine, but otherwise my development pretty much goes like this:

  1. Start up iHate.
  2. Run command. It blows up or doesn’t work.
  3. Run /load all to reload them again.
  4. Repeat until it works.

Once in a while I have to restart iHate if I had to fix a bug in its code but otherwise this is making it very simple to write new commands.

The end result of all of this is that I’ve got a very sexy /find command going right now:

You can see me trying a few find and how it prints the results. It first clusters by the rooms, then by loose times, then by who said it, and groups the joins and leaves together as noise.

It’s implemented kind of crap since it just goes through the file from front to back and runs a regex on it, but this means you can even construct a regex for your search (as you can see when I search for mongrel is (cool|fun|stupid)).

The next drop will make this faster, roll off old logs, and do some caching to make this lightning fast. Anyone who wants to take a crack at improving this should grab the code and try it.

Sep-15: Themes, Fonts, Commands

Here’s some more screenshots of the iHate client in progress showing off some of the latest features:

This shows the emoticons and the new Off-Topic feature. I frequently get pissed at Nazi operators on IRC who—despite using a client that is fully capable of removing cuss words— insist on imposing their little pathetic view of the word FUCK on everyone else. I also get tired of listening to people talk about their bunnies or their sex lives. Annoying.

Now our tiny Hitlers and the US Weekly Readers can take their sensibilities and just put it in their client with /ot word word word.

In the above screenshot, you can see that I declare a word OT, and any messages that come in with that are shrunk so small I can’t see it. It actually works on formatted portions of the messages, so if you want to be polite so that people don’t read the cuss words, just format them.

Here’s what the client looks like on a dark theme (for all you hax0rs):

Not bad, although the font colors would have to adapt as well. That’s not a problem since the new data store uses kirbybase to store information about fonts, defaults, servers, people, and rooms. Above you can see me set the default look-and-feel with /set laf ….

All of this will be released soon for people to play with.

Aug-6: Command And Display Parsing

It’s on the way party people. Check the screen shot below of me playing with the very nice command input and display parsing for the UI:

What you’re seeing here is two parsers in action and a little state machine magic. Very light use of it though, almost not even one yet.

One parser takes what you type into the input text field and tries to determine on the fly if that’s a command, whether it’s formatted right, and if not either shows you a message so you can correct it. If it’s not a command then it sends it on.

That’s the sending end and will make extending iHate very nice. These parsed commands will be used to lookup little plugins that do the real work.

On the receiving side we’ve got colorization, font faces, and emoticons all at work. When a message is received that needs to be displayed in the chat window (or system messages, errors, etc.) the raw text is handed to a display parser. The text can have wiki style formatting in it like:

_underline_ is cool but @code blocks@ are better *yeah* :-)

And the chat panel will parse that out, turn it into display tokens and then show them in a nice format. It can even optionally leave the markup text in or take it out depending on a setting.

In the next few days I’ll have a release pushed out and documentation to follow. Enjoy!

The Author

iHate is written by Zed A. Shaw for the Utu project as the official cross platform client.

The License

The iHate client is licensed GPL v3 meaning you better be careful how you distribute it.

Isn’t Apple Going To Sue You?!

I hope not. I’d hate for them to demonstrate how they don’t have a sense of humor and don’t understand parody and irony. It’d be a crying shame for them to sue a guy like me, especially since I changed the license of Mongrel from LGPL so they could include it in their fancy operating system. That’d just be really mean of them.