Wagonmaster and Chief Iceman: David "Pa" McClamrock
OK, I'm not really a penguin, and this isn't really an icebox, but "David McClamrock's Linux, IceWM, Tcl/Tk, and Gnocl Web Page" sounded too prosaic and (to the uninitiated) too incomprehensible. It's more accurate, though: I really am David McClamrock, and this page really is about the Linux computer operating system, the IceWM window manager, the Tcl/Tk "WISH" programming language, and the Gnocl Tcl/GTK+ extension package. You won't see any fancy graphics, or fancy Web design, or fancy anything here. You'll only get solid information (I hope), some links to pages and packages you may find useful, and maybe a few little laughs.
Slow-Breaking News from Pa Penguin's Icebox
If you're reading this page, you may already know about the free Linux operating system. (Linux is a trademark of Linus Torvalds, who created Linux to run on his home PC in Finland in about 1991. I think I'm supposed to mention that, even if you already know.) You may also be more of a computer "geek" than I am. I'm basically an ordinary computer user who started looking into Linux in early 1999 because Windows 3.1 wasn't Y2K compliant and I couldn't look forward eagerly to "upgrading" to a later version of Windows. Before the end of 1999 I had bought a new "white box" computer, installed Linux (Mandrake 6.1) as the only operating system on it, and used it successfully for word processing, e-mail, Web browsing, home finance, graphic image creation, and more. Since then, I've never looked back, and my home computers have never again been defiled by any "Micro$oft" products.*
* Well, hardly ever. Actually, in addition to my Linux-only desktop computer, I now have my daughter's old laptop, which had Windows XP on it when she handed it down to me. After finding that I didn't really have any use for Windows XP, though, I reformatted the hard drive with Linux-only partitions, and it now runs Puppy Linux (see below).
Why the "Pioneer Penguins on the Prairie" picture, which I produced back in 1999? Well, penguins are associated with Linux because Linus Torvalds likes penguins. These are pioneer penguins because you may need a bit of the old pioneer spirit to break free from Windows and use Linux instead (although you don't need nearly as much of it now as you did in 1999 or before!). And they're on the prairie because I thought it would be amusing to produce a parody of Garth Williams' cover illustration for Laura Ingalls Wilder's Little House on the Prairie with penguins instead of people.
If you don't already know about the origin, development, and underlying ideas of Linux, you may want to read Just for Fun: The Story of an Accidental Revolutionary (New York: HarperBusiness 2001) by Linus Torvalds. If you'd like to know more about what's been happening with Linux, you might wish to look at one or more of these websites:
If you look at DistroWatch, you'll see that there are a huge number of different Linux "distributions." People can take the Linux operating system kernel and package it with any programs they like. For years I used Mandriva (formerly Mandrake Linux), which I still think is one of the best big distributions. More recently, though, I've been using what I think is the very best of the little Linux distributions: Puppy Linux. ("Puppy Linux" is a trademark of Barry Kauler, the original developer of Puppy, and he has some other trademarks and copyrights too.)
Here's a screenshot of my Puppy Linux desktop, running the IceWM window manager (see below) with my "LightHeart-Autumnalia" theme, and displaying a background image derived from a painting by Maurice Utrillo. You don't have to have all those icons on your desktop if you don't want them, but I find them very useful, and the little "Show Desktop" button in IceWM (right next to the "Start" menu button at the lower left corner) will let you see them with a single click.
Puppy is the easiest-to-use Linux distribution I've ever seen or heard of, and it's really small--only about 128 MB at last count, which includes a lot of useful programs in addition to the "kernel" of the Linux operating system. You can run Puppy from a bootable "Live-CD," and copy the big main file to a hard drive or a flash drive for faster loading. (There are a lot of other ways to run Puppy too, but I think that's the simplest, and it's the one I use.) Installing additional programs and configuring your system are often quick and painless--and, in the event that they're not, you can probably get help from the Puppy Linux Discussion Forum. (I've found that the "Puppians" in this forum are most often friendly and helpful, even with "dumb" beginner questions.) Even more conveniently, now that you're here, you may be able to find out some basic things from my Puppy pages: Getting Started with Puppy Linux; Backing Up, Upgrading, and Restoring, where the "Upgrading" section is especially about upgrading Puppy; and Adding Programs and Enhancements for Puppy Linux.
If you know anything about Linux or other Unix-type operating systems, you know that there are many different "window manager" programs you can use on these systems. My favorite is IceWM, "the window manager cool as ice." It runs fast, it looks good, and it's pretty easy to understand, even for an old non-geek like me. You can give IceWM many different looks with different "themes," and it only takes a few seconds to switch to a new theme. Here's a download link: IceWM 1.3.6 .PET package for Puppy Linux. IceWM is also available for many other Linux distributions.
Here are six IceWM themes that I've designed, all included (along with quite a few that other people designed) in the Pa Penguin's Favorite IceWM Themes package. All of my themes are shown here with their corresponding GTK+ themes, also designed by me, that you can get in the Clearlooks GTK+ Colorschemes package. (In case you don't know what GTK+ is, it's the "GIMP Tool Kit" for producing good-looking graphical windows with consistent color schemes; a lot of programs in Puppy and many other Linux distributions use it.)
If you don't like the same themes I like and you want to look at some others, you can start with the IceWM Themes Exchange on the Puppy Forum, or the Box-Look.org IceWM themes page. If you want to know more about IceWM, you can visit the IceWM Home Page.
After I started using Linux, I noticed that some very useful programs, such as FileRunner (a file manager, the predecessor of WISH File Rusher), CBB (Check Book Balancer, the predecessor of WISH Checkbook), and Tk NotePad (a simple text editor like Windows Notepad, only better--the predecessor of WISH Supernotepad) were written in a language called Tcl/Tk. (That stands for "Tool Command Language/Tool Kit"; it's pronounced "Tickle-Tee Kay"; and it's known to certain connoisseurs of coolness as "The Cool Language/That Kicks [insert name of object or body part to be kicked]"). Eventually, when I found out more about Tcl/Tk, I thought, "This sounds pretty simple; maybe even I could write computer programs in this language!" Lo and behold, I could.
I call Tcl/Tk the "WISH" programming language because the Tcl/Tk "WISH Interpreter" (see below) is pretty efficient, in human terms, at interpreting the programmer's "wishes" to the computer. I call Tcl/Tk the "Ultimate in Open Source" for two reasons:
"Free" or "open-source" software is supposed to make you free to do things with your computer by opening up the supposedly human-readable "source code" for the programs you run--but the source code for a program won't do you a lot of good if you can't understand it. Many programming languages are designed to do a lot of math and logic, they have different "classes" of data to keep track of, they have complicated "syntax" that you need to keep straight or else your program won't work, and so on. Tcl/Tk has pretty simple syntax, and it has only one class of data: text. It lets you issue understandable, English-like commands to your computer, even if you don't know a lot about math or logic. (You can use Tcl/Tk to do math or logic, but you may have to use a special command to tell the computer, "This is math or logic, not just text.")
You may already know what that means if you're reading this page--but, just in case you don't, here's what it means.
Human beings can't understand huge collections of "ones" and "zeroes" very well, but computers can't do anything if they don't get some "binary code" written in "machine language," which consists of nothing but ones and zeroes. So, human beings write "source code" in programming languages they can understand; then the source code needs to be translated into binary code for the computer.
The source code for a program can either be "compiled" (translated into binary code ahead of time) or "interpreted" (translated into binary code when the program is run). For a compiled program, the source code may or may not be readily available on your computer. For an interpreted program, the source code has to be readily available on your computer; otherwise the program won't run because it isn't there. For an interpreted program, the source code is the program.
The basic idea of "free" or "open source" software is that you're free to read, modify, and distribute the source code. If you understand an interpreted language, you can always read and modify the source code for a program written in that language, with little or no delay while you find out where the source code is (or you find out that it isn't available). Also, you can instantly test-run any modified version of the program; you don't have to compile it first and hope nothing goes wrong during the compilation. (So why would anyone use a compiled language? In terms of computer time, compiled programs are faster because the computer doesn't have to translate source code into binary code before the program can run--although the difference in speed isn't nearly as important as it used to be, because computers now are much faster than they used to be. In terms of human time, on the other hand, interpreted languages often enable programmers to get jobs done faster than compiled languages do.)
Interpreted languages also make it easier to distribute open-source software widely and effectively, because they allow you to "write once, run everywhere." You don't have to write a different version of each program for each operating system that you want the program to run on. There just needs to be a different version, for each operating system, of one master program called the "interpreter." Programs written in Tcl/Tk are run by the "WISH Interpreter" (known as the "wish interpreter" to case-sensitive Unix-type geeks). That's logical enough, since Tcl/Tk is a Window-opening, Integrating, Scripting, High-level programming language:
Versions of the WISH Interpreter are available for Unix-type systems (including Linux and Mac OS X), Windows, and older Macintosh systems. If you don't already have it on your system, you can get it in ActiveTcl, available for free download from ActiveState, "The Dynamic Language Experts."
In case you'd like to know more, here are links to a few other leading Tcl/Tk sites:Tcl Developer Xchange
Most Linux distributions come with Tcl and Tk packages. If you're running Puppy Linux (as I am), but you're using a version of Puppy that doesn't have Tcl and Tk built in, here are links to .PET packages for Tcl and Tk 8.5.6:
Tcl 8.5.6 .PET package for Puppy Linux
Tk 8.5.6 .PET package for Puppy Linux
Some people don't like Tk, OK? They think it's ugly, or old-fashioned, or whatnot. I don't think it's ugly (at least, it doesn't have to be ugly), and I don't care if it's old-fashioned--but I have to admit that Tk's comparatively newfangled competitor, GTK+, not only is a lot more popular and (at its best) is at least slightly better-looking, but actually is more useful in some ways.
What to do? How can you keep Tcl's simplicity and ease of use, and yet get the benefits of using GTK+ (when appropriate) instead of Tk? Simple: Gnocl to the rescue! Just install Gnocl, put a "package require Gnocl" line in your Tcl script, learn (from the Gnocl documentation) how to use Gnocl to call up GTK+ widgets instead of Tk widgets, and you can make your programs look and work just like any other GTK+ programs. To see what I mean, take a look at WISH File Rusher, WISH Music Time, WISH Checkbook, WISH Disc-Writer, and WISH Command Console.
Here are download links:Download Gnocl 0.9.95-20110429 .PET package for Puppy Linux (approx. 375 KB)
And here are a couple of places to find out more about Gnocl:
Gnocl Website (has lots of documentation, plus Gnocl package for Windows if you want it)
Gnocl (The Tcl'ers Wiki)
As I was just saying, Tcl/Tk is so simple that even I can use it. Here are links to descriptions, screenshots, and download links for programs I've written in Tcl/Tk, or in Tcl/GTK+ with Gnocl, to run on Linux:
I also have a couple of "megawidgets" for use by Tcl/Tk programmers, included in the packages for all the above-listed Tcl/Tk programs. These are WISH Color Picker Plus, a versatile megawidget for choosing and designing Tk color schemes for graphical program interfaces, and WISH User Help, the world's simplest hypertext help system (as far as I know, anyway).
All my programs and megawidgets are distributed under the Maximum Use License for Everyone (MULE, for those who favor silly-sounding, animalistic acronyms)--a little lightweight license I wrote myself to introduce a bit of barely perceptible levity into the lugubrious lore of licensing, while retaining the rudiments of a real open-source software license.