Stupid Programming Tricks, LJ Index and more.

Do you want to spend the rest of your life selling sugared water, or do you want a chance to change the world?

—Steve Jobs to John Sculley, 1983

C'mon Steve, do you want to go on selling colored plastic all your life, or do you want to change the world?

—USENET posting to Steve Jobs, 1999

jbum rocks

Jim Bumgarner's Public Opinion Research Project at www.jbum.com/jbum/public_opinion.html takes the Sucks/Rules-O-Meter concept to its extreme. His site lets you poll the Web (through www.altavista.com) for the negative and positive adjectives of your choice. Here are a few of the polls displayed at the site on September 23, 1999.

GAMES FOCUS—Weiqi Baduk Igo Go

a robot playing a board game or striking a thinking pose?

From its origins in China, Weiqi has spread through Asia and indeed throughout the world. In Korea, where it is most popular, it is known as Baduk, while in Japan and elsewhere, it has the familiar name Go. Its rules are simple and easily acquired, yet the mathematical and logical complexities are vast and largely unfathomable. Indeed, some say Go can be as demanding and subtle as art or science, while the scope for personal expression is such that it is said one cannot hide his personality on the Go board. So what is your Linux box's personality like? Go find out!

The board is 19x19; the stones are round. Everything else is just numbers, a dendrite path which I would vaguely estimate to contain a number of paths somewhere around 361!/111! (if we assume 250 moves per game). Navigating this path well has proven to be an impossible task for computers. Still, in the post-Deep Blue world, Go may be both the most promising and the darkest frontier in artificial intelligence gaming. From chess, we developed heuristic searches and witnessed the power of brute force when we trimmed our search trees, not to mention the parallel processing research which occurred during the construction of Deep Blue. The subtlety of Go, which is less materially dependent than chess and has more branches in the dendrite with a less clear objective (territorial acquisition rather than monarch hunting), has rendered brute force largely ineffectual, and we have to resort to pattern recognition and analysis and strange algorithms to make a computer think like a human. What we learn from developing Go software could expand our knowledge base of AI theory and techniques a great deal. The computer chess authority Hans Berliner remarked that Go “may have to replace chess as the task par excellence for AI.” Fortunately for us Linux enthusiasts, there is some very high-quality Go software floating about, free of charge and with the source code, of course.

If you have long been frustrated by GNU Chess, you can get back at the GNU Project by beating GNU Go—well, maybe not. While computers are relatively worse at Go than at chess, GNU Go is not a weak program. In fact, it recently took second place at the 1999 U.S. Computer Go Championship, winning the “Best New Program” award as well. It has a text interface, but since it understands Go modem protocol, it can also be played against other programs or with the Cgoban interface. Check out www.gnu.org/software/gnugo/devel.html if you're interested in playing or contributing to the project.

Figure 1. GNU Go for Console Enthusiasts

Baduki, by Jim Laebum (who goes by Artist), is free Go software with its own graphical interface. The program is actually quite good, and the interface is nice. The board seems to have come from the GIMP's wood pattern (I suspect, since I did this myself for Go software I was writing). The software allows you to set handicaps and play levels, and the interface scales to whatever window size you like. Additionally, Baduki can give its rationale for moves, show its thinking process and display alternate moves. Baduki understands GMP (Go modem protocol); thus it can play on IGS (Internet Go Server), NNGS (No Name Go Server) or against another program such as GNU Go. The Baduki home page lives at soback.kornet21.net/~artist/baduk/baduki.html.

Figure 2. Jim Laebum's Baduki

CGoban (Complete Goban) by William Shubert is the Go equivalent of xboard. It allows users to play Go against programs (such as GNU Go or Baduki), or against other players on the Internet Go servers. In addition, CGoban allows one to examine SGF files, that is, game records. The interface looks quite nice (the standard wooden board with black and white stones), scales to whatever size you like, and should run on all UNIX systems with X. CGoban will automatically connect you to the Go server of your choice with a simple mouse click. The home page of CGoban is http://www.inetarena.com/~wms/comp/cgoban/.

Figure 3. CGoban on the Internet Go Server

The Internet Go Server is the on-line meeting place for wired Go enthusiasts the world over. You can telnet in and play with a text interface, or use a graphical interface like CGoban. IGS is similar to the chess servers, with the typical commands applying like who, match, observe, kibitz, tell and shout. I find the atmosphere to be friendly enough, though less talkative than the chess counterparts. Also, blitz Go seems to be less popular than blitz chess, and as for lightning Go, I don't know. (Lightning chess is one or two minutes per game, a rather difficult schedule for Go.) If you want to check out IGS's well-designed web page (available in English, Chinese, Korean and Japanese), go to http://igs.joyjoy.net/. Or, if you want to go directly to the server, use telnet igs.joyjoy.net 6969 (yes, port 6969). There are a few other Go servers wandering about, No Name Go Server (NNGS) being one of the more popular. CGoban already knows the addresses and will connect you automatically.

Whether Go interests you on a playing level or a programming level, many on-line resources are available as well as software and many excellent books. A visit to your local bookstore or gaming shop should provide you with ample opportunity to foster an obsession (assuming, of course, that you don't find it boring). Likewise, if AI is your thing, Go is in need of creative solutions and has a lot of scope for truly clever, brilliant thinkers. If you become outstandingly fond of Go, you may even want to check out your local club, which would probably be overjoyed to have a new member. Happy Going! (Next month, something more violent...)

—Jason Kroll


Doc Searls is the Editor in Chief of Linux Journal