LJ Archive



Thanks for Dave Taylor's Work the Shell column in the December 2007 issue of LJ. I learned some new things from it. Truth be told, most of the articles in LJ are irrelevant to me, but I slow down and pay attention when I come to Dave's column.

Dave didn't mention it, but surely he knows about calc (isthe.com/chongo/tech/comp/calc)? This is a very powerful command-line calculator that I use often.

In the interest of full disclosure, Landon Curt Noll happens to be a personal friend who wrote calc long before I became acquainted with him. Keep doing what you're doing in LJ.


Dell Linux Systems

I'm part of the reason Dell is showing weak sales on Linux systems. I just purchased a slightly upgraded Dell Inspiron 530 for $579.75 with Windows XP, and I'm reformatting and putting Linux on it the day it arrives.

I considered getting the identical FreeDOS or Ubuntu version, but they were several hundred dollars more expensive, because they offer only a $150 rebate instead of the $360 rebate that you get with Windows!

Something stinks at Dell when a Linux or FreeDOS box costs $210 more than an XP box.

Stanley Miller

Thanks for the Games

Thank you for three game articles in the December 2007 issue of Linux Journal. I am glad to see progress in Linux gaming. Games are the only reason I still have a Windows partition on my computer. The best first-person games are still only on Windows (BioShock, Oblivion and so on). Fortunately, my favored strategy game does have a Linux version: Dominions 3 (www.shrapnelgames.com/Illwinter/Dom3/1.htm).


More Business Content, Please

I was recently browsing through the archived articles of Linux Journal on www.linuxjournal.com, and I noticed that the past year or two has marked a decline in the number of articles targeted at business Linux users. Recent articles have focused more on home and educational users and developers than on the business administrator.

I understand that it's a struggle to find a balance between which audiences you target, but as the manager of an Information Technology department for a medium-size business, I would appreciate more focus on the business administration side of things. I'm looking for articles that give me good, detailed suggestions on how and where Linux can be useful to my organization. It's great to read an article about thin clients, LTSP and how the two can be used together in a lab environment for students in a school, but I don't have large lab environments with various people coming and going all day using the same machines. I have cubicles where the same people sit down at the same desks every day and use business applications, like Microsoft Office and Visual Studio. How about some articles that tell me how I can implement OpenOffice.org without making my users angry and without making it impossible to interact with all of our customers and suppliers who use Microsoft Office? How about articles that present methods to migrate Microsoft Access Databases (I use the term “database” coupled with “Microsoft Access” very loosely) to open-source RDBMS systems with Web interfaces? Articles focusing on ERP systems for businesses? Of course, I'm not suggesting that you turn your attention entirely or even primarily toward business users (unless, of course, you'd like to fork another edition of LJ), just that you bring some of the focus back to that area. Also, I realize that Doc Searls has his Linux for Suits column, but the times I've read that, it seems to read more like the editorial page of a newspaper and less like a practical guide for implementing Linux in a business environment.

Finally, because of some of the editorial comments I've read in LJ about the Novell/Microsoft agreement, I have to put in my two bits about the deal. I understand the strong anti-Microsoft reaction of Linux purists everywhere, I realize that it certainly isn't an ideal situation, and I understand the wary attitudes with which people approach the deal and say, “What kind of stunt is Microsoft going to pull this time?” That's all completely understandable. However, as I said before, I manage an IT department, and Novell is helping me save loads of money on Microsoft licensing and is providing some very promising prospects for alternatives to Microsoft software in the very near future, along with some prospects for more interoperable systems between Microsoft's software and non-Microsoft software. Of course, I, too, am a bit cautious about what Microsoft sees in the deal, but I'm also a very satisfied Novell customer and see a lot of potential for their products to, at the very least, become a gateway out of the Microsoft world and into open source.

Nick Couchman

We appreciate your comments Nick, and we'll try to include more business-oriented articles soon.


I enjoyed Roman Shaposhnik's article “Roman's Law and Fast Processing with Multiple CPU Cores” in the November 2007 issue of LJ, but he too briefly touched on an issue with large future implications. The problem isn't finding ways to make threads more deterministic; the problem is in our assumption that computers should be deterministic. A reliance on determinism works for processing on 8, or 16, or even 256 cores, but what about 256,000 cores? Or 256 million cores? As elements flicker in and out due to errors and faults, these creations will be better imagined as statistical ensembles than simple machines, no matter how many OSI-like layers are created. As a developer, you can become comfortable with ways to flesh out the gotchas that occur in parallel environments, but there is only so far that tools and insights can go if they are based on the wrong foundation. At some point in the future, we'll need to trade our Boolean yes or no for a Bayesian degree of belief. The software community has started to get a taste of this in loosely coupled aggregates like grids, but there is much, much more to come.

Jon Dunfee


I have been a reader of Linux Journal for many years and find something to enjoy in every issue. I was, however, somewhat baffled by your inclusion of Sandeep Sahore's Tech Tip on his program showdate in the November 2007 issue.

Although it is indeed very useful to determine dates in the past and future, showdate is entirely unnecessary, and by the author's own admission, broken and quirky.

May I present GNU date, included with every distribution of Linux I have ever used (source available for your favorite UNIX, naturally). For the benefit of your readers, I have duplicated the examples from the showdate Tech Tip and added a few more.

The date ten years ago:

$ date --date="10 years ago"

Same as above in epoch seconds:

$ date --date="10 years ago" +%s

Five years, two months and 23 days from now in the format YY-MM-DD:

$ date --date="+5 years +2 months +23 days" +%y-%m-%d

With date, when you combine + and - in one command, it does the right thing (unlike showdate):

$ date +%y-%m-%d
07-12-05 (now)
$ date --date="-5 years +2 months +23 days" +%y-%m-%d
03-02-28 (2 months and 23 days after 5 years ago)

Schedule an at job 12 minutes and 35 seconds from now:

$ at -t $(date --date="+12 minutes +35 seconds" +%Y%m%d%H%M.%S)

Date isn't broken by large numbers:

$ date --date="+1000 years"
Sat Dec  5 16:41:40 EST 3007
$ date --date="+10000 years"
Wed Dec  5 17:01:17 EST 12007

Date understands weeks too:

$ date --date="+3 weeks"

Date is even more flexible, for example, all of the following are valid:

$ date --date="yesterday"
$ date --date="tomorrow"
$ date --date="last thursday"
$ date --date="+2 weeks yesterday" (two weeks from yesterday)

In fairness, like many GNU programs, a lot of the above is documented only on the info page (not the man page).


Another Tip on a Tip

This is in response to the Tech Tip on page 92 of the January 2008 issue, “Removing Duplicate Lines in Unsorted Text without Losing Input Order”. If you have Perl installed (most distros do), you could do it like this:

$ perl -ne'$x{$_}++||print' /tmp/numbers

John W. Krahn

Bash Can Do It

I was surprised and dismayed to see Dave Taylor resort to Perl to map letters to numeric values, in his January 2008 Work the Shell column. He states that the shell can't do this easily: “There's nothing I can imagine without extraordinary levels of effort.”

Perl is not needed; bash can do the same thing easily:

ordvalue=$((`printf "%d\n" "'$letter"`-96))

Russ Turner

Dave Taylor replies: Cool. I didn't know you could do that!

Get a Clue

Mick Bauer's column “Getting a Clue with WebGoat”, in the January 2008 issue of LJ, was missing a few clues. After some trial and error using Ubuntu 7.10, I found all the “Gutsy” clues. Mr Bauer left me clueless on setting the JAVA_HOME variable. The QRG is:

$ sudo apt-get install sun-java5-jdk
$ export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun-
$ wget http://webgoat.googlecode.com/files/
$ unzip Unix_WebGoat*.zip
$ wget
$ java -jar webscarab-installer-20070504-1631.jar
$ java -jar "/home/username/WebScarab/webscarab.jar"
$ sudo sh ./webgoat.sh start80

What doesn't kill me makes me better.

PS. I like (intentionally, I hope) that the use of Tomcat was installed with WebGoat and that in the same issue Alan Berg had an article on efficiency tricks with Apache and Tomcat titled “Separate the Static from the Dynamic with Tomcat and Apache”. As my first use of Tomcat was with WebGoat, touching on Tomcat later in the issue gave me a chance to further explore Tomcat. Bravo.


Iceweasel Clarification

In the January 2008 issue of Linux Journal, Kyle Rankin wrote an article concerning anonymous Web browsing. Although the bulk of his content appears accurate, I noticed a fairly big mistake in one reference regarding the Knoppix LiveCD. He refers to Iceweasel as “Firefox's name on Knoppix”. This is inaccurate. Iceweasel is the forked browser based on Firefox, built initially by the Debian distribution. Iceweasel relieves the non-free issues that are part of the Firefox browser, as the Firefox browser cannot be redistributed using the Mozilla Firefox name or logo if any changes are made by a distribution.

Christer Edwards

GRUB Security

I enjoyed the “The Tao of Linux Security” article by Jeramiah Bowling in the January 2008 issue of Linux Journal. I do have one small tip for the author, however. He suggests setting a password to the GRUB bootloader by adding password yourpasswordhere below the timeout line in the GRUB config file. Although this is technically accurate, if we're shooting for security, let's try not to leave passwords lying around in plain text.

Most major distributions should ship with the grub-md5-crypt command that allows you to generate md5-hashed passphrases for the GRUB bootloader. I suggest that anyone applying a GRUB security model would use this tool to generate an md5-hashed password and use that via the syntax password --md5 pasteyourmd5hashhere.

Christer Edwards

More Work the Shell Tips

In the January 2008 issue of Linux Journal, Dave Taylor is musing over “how do you step through a word, letter by letter, in a shell script”, and later, “how do you convert characters into corresponding numerical codes”. Here is how (bash):

while [ -n "$in" ]; do
   val=$(($(printf %d '"'${in:0:1}) - 96))
   echo "... letter ${in:0:1} has value $val"

As for the Perl code used later in the same article, the simplest way to get from a string a list of corresponding byte codes is to use unpack with a C* or c* pattern. So the following Perl gives the result he is after:

@values = map {$_ - 96} unpack "C*", "linux";

A corresponding list of “letter keys” will be produced by split //, "linux";. Of course, variables could be used in place of literal strings.

Michal Jaegermann

LJ Archive