NewtonIM

NewtonIM ScreenshotWhat is NewtonIM?

NewtonIM is a jabber client for the Newton Message Pad 2×000. It requires Newton Internet Enabler.

What does it cost?

NewtonIM is free, of course. If you’d like to send me a Writewrite or two in thanks, however, it would be greatly appreciated (or at least the name of a supplier). I might break down and try those Nu screen guards, but I like my writerights! :)

Some notes about NewtonIM

NewtonIM was an app written to reacclimate myself to the NewtonScript language. It’s development went something like this:

My first goal was to build a simple app that resolved a domain name address. From there, I built an app that would connect, and talk over an endpoint. Then I figured, why not make it conenct to a jabber server? Well, I’m going to need an XML parser, and some sort of user interface then right? And so on…

Basically, the code’s a mess… but it works. Here are the features thus far:

  • Logs in to the Jabber server using plaintext authentication only.
  • Understands most PRESENCE tags, but does not deal with any PRESENCE subscriptions
  • Understands the jabber:iq:roster namespace for importing your roster list from the server.
  • Implements “Star menu minimization” and “drag to the left edge of the screen docking” (The latter is similar to something that NewtFTP has. Its still buggy.)

How does NewtonIM work?

Since I started, there are a million structural improvements that could be made to this application. Here’s how it works now.

NewtonIM connects to the jabber server and authenticates using plain text authentication. Then, the stream of XML tags coming from the sever is tokenized and inserted into an array. This array is the XML fifo which the parser reads, one at a time in the base view’s viewIdleScript.

Change Log

  • 1.2 [Paul Guyot] 23/06/05
    • fixed a bug introduced in previous build that prevented it to work.
    • fixed a bug generating errors when messages arrived from contacts whose instant messaging window was closed.
    • replaced the idle script with a deferred call for faster response. Added a “mutex” to prevent re-entrance problems with the forked task (the roster list download happens in a fork task because of the progress dialog). Another rationale for this change is that it fixes a bug that prevented messages to be received once the main window had once been minimized.
  • 1.1 [Paul Guyot] 23/06/05
    • optimized the XML Fifo to only parse XML tags once.
    • characters with more than 7 bits are replaced by question marks (otherwise the server disconnects). Handling UTF-8 input would require quite a lot of rework of Newton IM networking code.
    • instant message window no longer show blank text when too many messages arrived. This was fixed by limiting the size of the history to 1 KB
    • empty tags are now handled properly (previously, the XML Fifo stack was never emptied and kept growing).
    • password is shown and sent properly.
    • show only online users preferences is now applied at application startup.
    • the connect/disconnect button is now set back to connect if connection to the Internet failed.
    • made some debug output conditional to the project debug flag.
  • 1.0 [Jake Bordens] Original Release

Downloads

Want to try NewtonIM? Before downloading the package, remember, this is pre-beta quality software. Use it at your own risk.

The famous Paul Guyot has contributed several improvements as v1.1 and now 1.2. Download 1.2 here. nim.pkg

Also, you can download the full source code as a DiskCopy 6.3.3 compatible image here. nimsourcecode.img
Thanks Paul for this and all your other awesome Newton work!

I have released the source under the GPL. Download the zip file containing the original 1.0 project here. nim-source.zip
Drop me a line if you have any problems, comments, or suggestions. I’ll do my best to reply.