Awesome AJAX web-based telnet application

Wed, Jan 18, 2006 2-minute read

A while back, I wrote the article, “A Web-enabled, Monad front end: Monad hosting.”  It was in reference to WebCmd, a neat little Javascript application that emulates an interactive terminal.

I also talked about the fact that it wasn’t really an interactive terminal. 

This falls quite short of the infrastructure required to support an interactive program such as VI. Let alone Emacs :)  There’s no support for cursor positioning, keyboard polling, and much more. For the Unix world, take a gander at the feature set of the VT100 Terminal Emulation Requirements. For the Windows world, look at the Win32 Console API. To make a fully interactive web-enabled front-end, you would need to implement the equivalent of cmd.exe in Javascript. The performance would be atrocious. So in the end, it’s attainable – but at a very large cost. Once you’re done writing that much Javascript, you’re likely to start rocking back and forth, whilst arguing with yourself.

Fast forward to today, where the Mike Bergsma leaves the following sleeper comment:

Did it. VT200 emulation. Pure AJAX. SSL It was difficult to say the least. It launches with a CGI script, or it is downloadable.

It’s a comment of understated magnificence.  One in the same vein as Fermat’s famous, “I have a truly marvelous proof of this proposition which this margin is too narrow to contain.

Mike has implemented a web-based telnet application, including support for VT200 terminal emulation.  Mike provides a guest account on his server to test with.  I was able to log in, navigate around the system, get colorful directory listings, use hotkey shortcuts, and even execute heavyweight applications such as VI and Emacs.

Truly amazing – check it out: http://www.koikids.com/!

[Edit: This seems to have moved here: http://www.koikids.com/dashboard.htm ]

[Edit: Monad has now been renamed to Windows PowerShell. This script or discussion may require slight adjustments before it applies directly to newer builds.]