|Interview: Max Mikhanosha||- by David C. Guttormsen|
As anyone who spends any amount of time using IRC networks knows, Max Mikhanosha is the author of the award-winning IRC client, OpenChat/2 (OpenChat/2 was the runner-up in the 'Best IRC Client' category of the 1996 OS/2 e-Zine! Readers' Choice Awards).
For those that don't frequent IRC channels, an IRC client is a program that allows users to connect to IRC servers around the world and chat with other people in real time. OpenChat/2, despite its relative newness on the scene (the winner in the 'Best IRC Client' category is practically ancient when compared to newcomer OpenChat/2), has won a loyal and vocal following among IRC users.
Last month, I had a chance to speak with Max, or 'mikh' as he is known on IRC, in his natural environment. How else would you interview the author of an IRC program than with his own client?
e-Zine! : OK, I am here with Mikh, author Of OpenChat/2.
mikh: heya all :)
e-Zine! : Let's jump right in: when did you first start OpenChat/2?
mikh: About a year ago if I remember right.
e-Zine! : So you have worked on it for a year? How many revisions did it go through?
mikh: A lot of them :) There were more then 25 beta versions. At least I remember talking to Thomas Bradford of BMT Micro about releasing it in May of 1996, but it took much longer. I prefer to release a new version whenever even a small bug is fixed, not like once a year updates.
e-Zine! : Was the beta a fairly wide beta?
mikh: Not very wide. About 20-25 active beta testers who'd send bug reports.
Also there are was a team of 3-4 people who were writing scripts for OpenChat/2 and these were mostly testers I was working with.
e-Zine! : So OpenChat/2 uses an exclusive script language then?
mikh: OpenChat/2 scripting is mostly compatible with UNIX IRCII. Mostly means not completely.
e-Zine! : Can you expand on 'Mostly'? What are some distinct features to OpenChat/2's scripting language that are not found in other Clients?
mikh: For example there are no ^ operations in expressions and some UNIX scripts that use them rely on UNIX IRCII bugs, so they will not work.
e-Zine! : So then is OpenChat/2 not IRCII compatible?
mikh: Yes, you can run UNIX IRCII scripts, if you provide a UNIX-like environment, that mean all UNIX utilities like cat, ls, rm and such, and a UNIX-compatible shell.
e-Zine! : I know there is already at least one OpenChat/2 exclusive script, and others to follow. Does this means that I can not stay with say, LiCe or Phoenix, that I have been using for years?
mikh: Nope: running LiCe or Phoenix is not recommended on OpenChat/2. Not that you cannot do that, but why would you want to use a GUI client with a script that does not support color, menus, sounds, drag-n-drop and such?
OpenChat/2 scripting is very fast. It compiles scripts to a bytecode, like REXX or Perl or ELisp. That makes script execution much faster.
e-Zine! : What does the speed increase offer the end user though?
mikh: Instead of adding a lot of hard coded features to the client itself, OpenChat/2 tries to move more functions to the script. That allows great flexibility, i.e. when mIRC introduced ^C color codes, it was a 5 minute change in a script to support them, without changing the client itself.
Because of a fast scripting speed, scripts can handle large amount of text, process / convert / whatever it, without using a lot of CPU time.
e-Zine! : So OpenChat/2 works well as a background app?
mikh: Yes, it works fine as a 'bot'. In fact I saw people having weeks of uptime with OpenChat/2 running. OS/2 crashed first, not the client. :)
e-Zine! : (smiling) So it is not that OpenChat/2 can't run them, it is just that they are not able to utilise all of OpenChat/2's potential?
mikh: Exactly. There are enough native scripts for OpenChat/2 which are utilizing all of its power. People who are used to LiCe scripts may want to stay with the default OpenChat/2 script, it looks more like LiCe. People who prefer Phoenix/Purapak/BitZ scripts can download GemZ, which reminds them of these.
Also there are interesting things about the interface in general. The whole user interface that you see, i.e. menus, colors, sounds, drag-n-drop, dcc stuff etc., is coded in a script. There are default scripts which consist of two files (sample.irc and openmenu.scr). There is also a file called 'OpenChat/2 startup script' (OpenChat/2.irc) which is loaded automatically on startup (kind of like AUTOEXEC.BAT) and from which other scripts are loaded.
Say you installed GemZ, it comments out the default script from the startup file and inserts itself there. This means all menus and the whole client interface itself is driven by the GemZ script. Ninety-nine percent of all you see is what the script is doing. OpenChat/2 is actually kind of like a small virtual machine for running scripts. :)
e-Zine! : What was your reason for making OpenChat/2?
mikh: Because I like IRC and there was no client [for OS/2] that suited my needs.
e-Zine! : So you Just whipped one out?
mikh: When I started, I tried GtIRC, PMIRC, and mIRC (windows client).
I was trying to create a program you can use to chat and have fun, not to struggle with scripts and configuration.
e-Zine! : What are some future plans for OpenChat/2, if any?
mikh: Short term plans:
Fixing bugs; making raw dialogs accessible for scripts so scripts will be able to display large notebooks and such for configurations; more work on a scripting language itself -- especially a bytecode compiler -- it's not nearly as fast as it could be; more info in the .HLP file; and I need to write some kind of 'Introduction to IRCII scripting' article, with some examples and such.
Long term plans:
Support for VTD (does anyone need this by the way?). Also I need to buy a new machine that will be able to run VTD to add that support...
Adding text editor capabilities maybe? Then it will be possible to write a newsreader totally in scripting, and such, a-la emacs.
e-Zine! : Interesting, so you plan to make this into a Suite of applications?
mikh: The only one application I'm missing for OS/2 is a good and very configurable newsreader actually, so maybe it will be my next project. :)
I don't know yet, that's why these are 'long-term' plans... I'm thinking about it, watching how IBM moves about OS/2 and such. :)
e-Zine! : In your OpenChat/2 adventures what was the toughest part of the program?
mikh: Answering questions. :)
e-Zine! : (smiling) Besides that, where there any particular sections of the program that where a real hurdle to get over?
mikh: The hardest part was a bytecode compiler, and screen output code.
e-Zine! : But it did take you a year to produce OpenChat/2, there must have been some hang-ups.
mikh: Especially marking with colors. :) But watching mIRC users asking 'How the hell'd you do it?!' when I do color cut-n-paste was worth it.
I don't know. Everything was not too easy. :) IBM has some things not very-well documented.
e-Zine! : Such as?
mikh: The most noticeable examples are: AVIO documentation is very hard to find. (Thanks to some guys from inside IBM who gave me some pointers.) Searching contents table of .HLP files is also not documented anywhere, so I had to debug VIEW.EXE and see how it does it.
So a lot of time was taken inventing kludges to get around some bugs in OS/2. Hopefully it all will be fixed in Warp 5.0.
e-Zine! : Overall how do you feel about your work, has it turned out as planned? Or as good as you intended?
mikh: I really enjoying being on IRC now. :)
The most common feature I'm using is launching Netscape Navigator or feeding URLs to an existing Netscape session when right-clicking over the URL with the mouse... Also pasting back and forth from usenet newsgroups to/from IRC is very easy using the SmartPaste function.
e-Zine! : Where did the term MoMo come from? I take it is a derogatory term?
mikh: Originally it come from a movie. Get Shorty I think. Then it started being used on IRC as a nickname for a newbie user.
e-Zine! : Did you pick it up and start using it? I am asking because of the default username setting is MOMOBOY.
mikh: Don't feel insulted because the default nickname is MomoBoy. It's as good as any other default nickname, and it's not very often used on IRC. I have an autoinvite to #OpenChat channel whenever the nickname MomoBoy appears on IRC. :)
IRC has developed some kind of a slang, and 'momo' since became a part of it, especially on OS/2 related channels. :)
e-Zine! : So, the new user immediately gets access to a channel that provides help?
mikh: Yes, there are always some people on #OpenChat. They are there to help.
I wanna tell you, even if no one is answering (at 5am for example), still ask your questions and report problems, we are reading scrollback when returning to our computers.
Also e-mails to email@example.com with 'OpenChat/2' in the subject line are always answered.
e-Zine! : Speaking of OS/2 Related channels, is there going to be a Win95 version of OpenChat/2?
mikh: All I can tell you is that I refuse to use Windows 95 as a development platform. When I am able to afford to buy a new machine powerful enough to install Windows NT, I will port OpenChat/2 to Win32.
But I do not expect it to happen 'soon' (in 2-4 months I mean).
e-Zine! : How have Windows users found out about OpenChat/2?
mikh: There are a lot of people who run Win95/NT and OS/2 alongside using BootManager. So they told their friends and such. :)
e-Zine! : Ah. Where did you learn programming? And what language is OpenChat/2 written in?
mikh: I have been programming for a living since I was 16. :) My first projects were custom built real-time boards on 1816 micro-controllers (used in AT keyboards now) and interfacing those boards to AT286 machines.
I was responsible for writing a 1816 emulator using Turbo Pascal v4.5 and v5.0 so we could debug our board on that emulator.
e-Zine! : So you just 'picked up' Pascal?
mikh: Yes, Turbo Pascal was a great choice for fast development when 286's with 1 meg were considered high-end machines.
As for OpenChat/2, it's written using Watcom C 10.5 compiler.
Its a great compiler, which produces very fast code.
e-Zine! : Just for curiosity, and for those old IBMers out there, how many kloc's (kilolines of code) is OpenChat/2?
mikh: Let me count...
Just did wc -l *.c *.h -- it's 111,772 lines.
But my code is very wide BSD style and has a lot of comments so it probably can be squeezed in size twice by removing some comments and running indent on it.
e-Zine! : If there was one piece of information you wanted readers to know, what would it be?
mikh: It's a good habit for OS/2 users to use the right mouse button everywhere. In OpenChat/2, with the default script, I guarantee that whenever you right-click with the mouse anywhere you will get a content-specific menu, like clicking on a URL or someone's nickname.
e-Zine! : Well I thank you for your time, and mostly for a great client. Is there anything else you want to add?
mikh: There are a lot of features in OpenChat/2. It takes time to explore them all and some things are different than in other clients. So whenever you feel like you know all about it, e-mail me at firstname.lastname@example.org or ask on #OpenChat, there are always new things explore and to play with. :)
[Our Sponsor: SofTouch Systems, Inc. - Your System's Safe and Sound with SofTouch Around ]
Copyright © 1997 - Falcon Networking
This page is maintained by Falcon Networking. We welcome your suggestions.
Copyright © 1997 - Falcon Networking