Stop the Presses, LJ Index and more.

I am the leader of a group of Linux-like contributors to a gigantic open-source software project. Our goal is the creation of artificial intelligence using the natural language program ALICE. I developed AIML (Artificial Intelligence Markup Language) along with a crude interpreter, and released both under the GNU GPL. The result was the now-predictable, open-source magic: a team of developers from around the world began improving the code, creating content and providing an immense user base.

ALICE won the Loebner Prize, an annual “Turing Test”, in 2000, for being the computer program ranked closest to a human. The ALICE and AIML developers have created a library of content, numerous on-line documentation sites and versions of the ALICE server in both Java and C/C++. AIML is “platform-independent, language-independent” in the sense that ALICE robot scripts run on different interpreters on different operating systems. There are interfaces for HTTP, CGI, IRC, plain text, GUIs and even voice I/O (input/output).

There are at present four companies in various stages of starting up around ALICE and AIML technology. The developers have moved on to embedded system applications, intelligent customer service agents and entertainment applications of the technology. We are trying to stay “above the fray” and “not pick winners and losers”, as this technology begins to attract the attention of “suits and other real-world investors.” Does this story sound familiar?

—Dr. Richard Wallace, dr.wallace@mindspring.com

STRICTLY ON-LINE, http://www.linuxjournal.com/

Low-Bandwidth Communication Tools for Science, by Enrique Canessa and Clement Onime, tells us how in Trieste they are building prototype on-line scientific tools to further enhance electronic collaboration and support the use of web navigation and database search by e-mail. ScientificTalk and www4mail are two such tools that are based on Linux and discussed here.

AIPS: A Historical Reminiscence by Patrick P. Murphy takes a look at the astronomical image processing system and how it is being used on Linux by the National Radio Astronomy Headquarters and astronomers the world over.

Four book reviews to help you decide if these books are worthwhile:

  • Linux Administration, A Beginner's Guide, review by Harvey Friedman.

  • Red Hat Linux 6 for Small Business, review by Paul Dunne.

  • Security Technologies for the World Wide Web, review by Wael A. Hassan.

  • Getting Started in Computer Consulting, review by Ralph Krause.


The use of cellular phones and other wireless devices has been rising exponentially. Recently, many of these devices have contained Internet-enabled functionality and even web-browsing software. If you run a popular Internet site, it's possible someone has tried to visit it with such a device and seen nothing! In this column, I'll show you how to configure the Apache web server to handle these requests successfully.


The leading Internet implementations on hand-held devices have used the Wireless Application Protocol, WAP. The idea comes from the wireless industry and is based on existing Internet technologies such as IP. Just as I use HTML for my site, mikal.org, I'll now use WML for people visiting my site over WAP.

WML stands for Wireless Markup Language and is based on XML. Similar to HTML, WML is read and interpreted by a browser built into a WAP-enabled device.

Apache WML Setup

The first thing I need to do to handle wireless visitors is inform Apache about the MIME type I'll be using. I add MIME support for the WML file extension to the default MIME type configuration file in this way:

text/vnd.wap.wml      wml

This file includes a definition of the most commonly known MIME types. On my file system, it's located in the /etc/mime.types directory.

Catching Wireless Visitors

I want to catch anyone visiting my web site with a wireless browser and send them to my WML page, welcome_wap_user.wml (listing below). For this purpose, I'll use Apache's powerful mod_rewrite module, available in version 1.2 or later. By using this, I can rewrite requested URLs on the fly based upon rule conditions. It's possible that mod_rewrite isn't already compiled into the server; check the Apache documentation for instructions on doing this. Specifically, I'll be looking at the HTTP_USER_AGENT and HTTP_ACCEPT environment variables to check for known WAP browsers.

<?xml version="1.0"?>
     <p> Welcome to mikal.org! </p>

The mod_rewrite module can be used by placing the appropriate directives, shown below, in the httpd.conf Apache configuration file. Line 1 turns on the RewriteEngine. Jorrit Waalboer, from the WML programming list at eGroups.com, provided me with the RewriteCond statements in lines 2-7 to determine if the client is a WAP browser. If RewriteCond matches one of these browsers, RewriteRule tells Apache to serve welcome_wap_user.wml.

RewriteEngine on
# Catch most WAP browsers
RewriteCond %{HTTP_ACCEPT} text/vnd\.wap\.wml [OR]
# WinWAP, WAPjag
RewriteCond %{HTTP_USER_AGENT} wap [OR]
# Nokia emulators (sdk)
RewriteCond %{HTTP_USER_AGENT} 7110
# Rewrite!!
RewriteRule ^[\./](.*)$  /welcome_wap_user.wml [L]
To activate these changes, I'll need to restart Apache.

I can now check my site, but I'll need a WAP-compatible device. For this purpose, I use the UP.Simulator, part of UP.SDK, the Phone.com software development kit. The UP.SDK supports development of WAP services written in WML. After a quick check with the UP.Simulator, I see my site is now WAP-aware and ready for the future of wireless Internet.

For additional information on WAP, WML or building a WAP service, see Resources.

—Philip Mikal (philip_mikal@yahoo.com) is an Internet technology consultant based in Silicon Valley. He can be reached at mikal.org.