Monday, October 17, 2005

Legos and Instant Messaging

This last weekend was pretty nice. As usual, I spent Saturday with my daughter. I took her to the toy store to play for at least an hour and a half. Now this is tough for me, because I'm not crazy about being in crowds, but it was fun watching her play. Then, we went next door to the big department store and bought her a Kelly doll and some more Legos (hey, better prices, you know?). Finally, it was off to the Dairy Queen for an ice cream cone.

We played Legos for quite a while once we got home. Those things are amazing! You can build anything your little heart desires with them. My daughter is really quite creative in building cars, trucks, and houses with them. Engineer material? C'mon, do your Daddy a good turn and be a doctor, lawyer, or country music star. That way you can take care of him when he's too old and crotchety to take care of himself.

Sunday at church was strange. Most Sundays, like 99% of them, I DO something during the service and/or Sunday school. But this weekend there were so many absent from the second service band that the first service band played in the second service and I sat out. Kind of a bummer, actually. I like leading worship, I really do. Not only that, I wasn't teaching, preaching, leading communion, not nuthin'. Felt strange. At least 80% of those that attend church never do any of these things and miss the whole friggin' thing. Sad.

After church I did the obligatory listen of the Dallas Cowboy game. It was pretty exciting, really. I can't pick it up on the television, so I listen on the radio. I've gotten used to the condition ... I'm going to listen to the radio anyway because I WANT biased announcers. Cowboys won! They are now in sole possession of first place in the NFC East. We'll see if it holds.

Then I went to my doctors office clients for the rest of the day. They're closed on Sunday, of course, which is why I go then. My objective: Instant Messaging behind a firewall.

Now let me say first off that I know (or knew, to be precise) almost nothing about Instant Messaging (IM). I'm not dissing it or anything, just never had a call to use it. I tried out IRC (Internet Relay Chat) chat rooms back in '95 to my ... chagrin? I was chatting with these girls, when one of 'em says "you seem like a nice, straight guy, so what are you doing in a lesbian chat room?" I left the chat room and IRC.

I've never seen IM as terribly useful, but I use it occasionally in my video networking tech gig and it comes in pretty handy. Probably the ability to quickly and easily exchange files is the most useful feature.

Now my doctors wanted it for a business reason: they want the receptionists at the front desk to be able to contact the girls in the back to tell them they have a patient waiting without having to use the phone. The IM should sound a tone or something to give audible feedback in case they are not looking at their computer when the message arrives.

I looked at Yahoo Messenger, AIM, ICQ, and all of those at first for a solution. The problem is that they use a server somewhere out on the internet to host the user ID's and such. I wasn't crazy about business information being shuffled around outside my network, and besides that, these protocols are crazy vulnerable to attack. I want to keep everything that happens inside the firewall on the doctor's intranet, so these just weren't going to cut it.

When I first started looking into it, I thought that IM happened peer to peer and was serverless. Kind of like some kind of fancy NET SEND, I guess. That's dumb if you think about it. I have NET SEND disabled (as you should as well) on every workstation for security reasons, so that just isn't going to cut it either.

The answer is to run an IM server behind the firewall and have a client installed on each workstation that uses ONLY that server. After looking around for quite a while, I settled on a server called Jive Messenger. This server uses a protocol called XMPP (otherwise known as Jabber). It is an XML on top of HTTP kind of a solution. It allows me to disallow connection to outside servers and to predefine the users (managed environment). Best of all, it is open source, written in Java, allows plug-ins, and is free!

I know Java, so choosing Java based server/clients is a no brainer for me. The server source can be downloaded, so I can make any changes I need, or use the plug in API to extend the capabilities. I downloaded it Friday, and configured it on my own network. It is exactly what I want. In fact, the only two things I could think of that I needed that it didn't have were available via plug-ins, so I'm liking this.

Now I've got the server, what about the client? That's where things got a bit dicey. There are a gazillion IM clients out there ... which one to pick? Obviously, the client must be able to talk XMPP/Jabber protocol, be open source, and of course, free. It should also be written in Java if possible. The product I originally suggested to the doctors, Trillian is probably the premium open source IM client out there. However, I discovered that it is serverless ... you must be registered with one of the big boys to use it. Trillian Pro ($25) can talk the XMPP/Jabber protocol, but not the free version. From what I've seen, the $25 would be worth it, but not when multiplied by a couple dozen workstations.

After playing with several clients that just didn't do it for me, I tried out one called Jeti/2 which I guess is Dutch or German. It's the one that I settled on, at least for now, even though the instructions are in Dutch/German. It wasn't so straight forward to get to work, but once I did get it to work, it worked like a charm! It allows tabbed chats, emoticons, and sounds! It's still not up to version 1, but it's free, and it works!

Although it is written in Java, I'm not sure if the source is available or not (although, being in Java, I can probably get at it). The website is in Dutch/German, so who friggin' knows if the source is available or not! Maybe I can translate the manual into English in trade for "keys to the sourcecode kingdom" or something. It doesn't need to do much more than it already does, but it would be nice to be able to make any necessary changes to it myself.

Jeti/2 doesn't seem to manage logging on very well, but if you set it up to automatically log on when the program starts, it works like a dream. The sounds can be any sound file, although I haven't tried it out yet. Setting it up was kinda weird ... it would be nice to set up who can do what entirely through the admin console of Jive Messenger and have Jeti/2 just use the configuration, but that may be a bit much to ask since the two development groups aren't at all the same. Jive Software has an API out called Smack (?), but I would have to write the entire client and I'm not sure I have time or the doctors have the money for that.

The way it all finally ended up is that each person is individually locked to her workstation, which is what I was trying to achieve, but not exactly the optimum. Still, I find the whole experience a very interesting blending of a great many technologies into a single solution. Quite fun, at least, for a geek.

0 Rant In Reply:

Post a Comment

<< Home