Rediscovering OS/2

So I picked up a surplus computer from work this week. Honestly, I bought it more because it was cheap than because I needed it. But it was a giveaway price for a good-quality system. Micron’s Client Pro line (its business-class line) is as well-built a PC as I’ve ever seen. The machine didn’t come as advertised, but it was still a good price for what I got: a 266 MHz Pentium II, 64 MB of RAM, a 4-gig Maxtor hard drive, a Lite-On CD-ROM drive of unspecified speed (it seems to be at least 24X), an Intel 10/100 PCI NIC, Nvidia Riva-based AGP video, an ISA Sound Blaster, and an ISA US Robotics 56K faxmodem.
Of course my first thought was to put Linux on it. But I have better machines already running Linux, so what’s the point, really? Then a few things sent me hurtling down the roads of my oldschool retro computing past, and a thought hit me: OS/2!

What I consider my first real job involved installing OS/2 literally a couple hundred times. That was version 3, on 50 MHz 486s. But by the time a Pentium-166 was a hot machine, I wasn’t using OS/2 much anymore. I realized I’ve never really seen OS/2 on something as hot as this P2-266 before. And I used to know how to optimize the living daylights out of OS/2, so this could turn into the best computer I’ve ever owned.

I had to patch my OS/2 v4 installation disk 1 to deal with the drive in the machine (download IDEDASD.EXE and unzip it, then follow the instructions in the README file) but once I got that going, installation was smooth. I need to track down device drivers for the NIC and video card yet. But I got a basic system up and running in about 35 minutes. That’s not bad.

I can’t wait to see Mozilla Firebird on this thing.

Dave’s MP3 jukebox of his dreams–almost

Edna is a very easy-to-setup up MP3 jukebox written in Python and licensed under the GPL. I think a radio-like mode can be added to it pretty easily. Here’s the routine that selects songs to play:

def make_list(self, fullpath, url, recursive, shuffle, songs=None):
# This routine takes a string for 'fullpath' and 'url', a list for
# 'songs' and a boolean for 'recursive' and 'shuffle'. If recursive is
# false make_list will return a list of every file ending in '.mp3' in
# fullpath. If recursive is true make_list will return a list of every
# file ending in '.mp3' in fullpath and in every directory beneath
# fullpath.

if songs is None:
songs = []
for name in sort_dir(fullpath):
base, ext = os.path.splitext(name)
if extensions.has_key(string.lower(ext)):
# add the song's URL to the list we're building
songs.append(self.build_url(url, name) + '\n')

# recurse down into subdirectories looking for more MP3s.
if recursive and os.path.isdir(fullpath + '/' + name):
songs = self.make_list(fullpath + '/' + name,
url + '/' + urllib.quote(name),
recursive, 0, # don't shuffle subdir results

# The user asked us to mix up the results.
if shuffle:
count = len(songs)
for i in xrange(count):
j = random.randrange(count)
songs[i], songs[j] = songs[j], songs[i]
return songs

A question for Python programmers: I added a few lines to the shuffle routine, right after the line count=len(songs).

# radio mode -- DLF, 9/7
blacklist = open('blacklist', 'rb').readlines()
overplay = open('overplay', 'rb').readlines()
countb = len(blacklist)
counto = len(overplay)
for i in xrange(count):
for j in xrange(countb):
if songs[i] = blacklist[j]:
k = random.randrange(counto)
songs[i] = overplay[k] # end radio mode hack

What it’s supposed to do is load a blacklist and overplay list and, when shuffling, compare the current element against the blacklist, and if it finds a match, randomly substitutes a song from the overplay list.

What it actually does is nothing. Anyone have any ideas?

Hacking Mozilla Firebird

Nothing frustrates me more than unfulfilled potential. And that’s why Mozilla Firebird, in spite of its amazing strengths–great speed and small footprint, aside from the things it inherited from Mozilla like good standards compliance, tabbed browsing, popup blocking–well, it bugs me. Why settle for being great when you can be the best there ever was and make people wonder if there ever will be anything better?
Every other modern browser I’ve seen lets you turn off GIF animation. I always do. Still ads very rarely bother me. Moving ads do about 99.999% of the time. As it turns out, Firebird still has the capability, the control panel option is just gone now, in order to make the browser less confusing.

To get it back, locate the file prefs.js inside your profile. In Linux, search your home directory; in Windows, use the Find File option and remember that every Mozilla-derived browser you have installed will have one. Once you find it, open it in a text editor and add the following line:

user_pref(“image.animation_mode”, “none”);

Another good option, if you like movement but don’t like looping distraction, is to replace the word “none” with “once”. Then the animation cycles once and terminates.

Shut down your browser if it’s open, then save the file. Close the file, then reopen your browser. You’ll now be able to browse in peace.

There are bunches of other good tips at this page. Here are my favorites:

Disable blinking text by creating the file user.js in the same directory as your prefs.js file if it doesn’t exist (it doesn’t by default), and insert the following text:

// Put an end to blinking text!
user_pref(“browser.blink_allowed”, false);

Disable the marquee tag by creating the file usercontent.css in the same directory as your prefs.js file if it doesn’t exist (it doesn’t by default), and insert the following text:

/* Stop those marquee tags! */
marquee {
-moz-binding : none !important;
display : block;
height : auto !important;

Speed up browsing on fast machines by creating the file user.js in the same directory as your prefs.js fileif it doesn’t exist (it doesn’t by default), and insert the following text, which removes a quarter-second delay before starting to render the page:

// This one makes a huge difference. Last value in milliseconds (default is 250)
user_pref(“nglayout.initialpaint.delay”, 0);

Turn on pipelining to speed things up some more by creating the file user.js in the same directory as your prefs.js file if it doesn’t exist (it doesn’t by default), and insert the following text:

// Enable pipelining:
user_pref(“network.http.pipelining”, true);
user_pref(“network.http.proxy.pipelining”, true);
user_pref(“network.http.pipelining.maxrequests”, 100);

The future of the computer industry (especially Microsoft)

This story, 2003 and Beyond is probably already really widespread. It’s a very L-O-N-G but thoughtful analysis of the computer industry of today.
The piece doesn’t paint Microsoft in a very flattering light. One of the things I’ve noticed about most pro-Microsoft pieces on the web is that they say Microsoft isn’t a normal monopoly, because after they got their monopoly, they didn’t raise prices. Well, I’m not necessarily convinced that every monopoly immediately raises prices. A company gets used to a certain level of growth, which increased market share provides. When market share slams into that wall of 100% and stops increasing, revenue stops increasing unless the market grows. Holding prices steady at that point may encourage the market to keep growing. Then, when the market stops growing, if you’re thirsty for continued growth, you start raising prices.

This piece articulates that, and tells what’s next now that the market isn’t growing anymore.

This is the most thoughtful analysis I’ve seen yet of Microsoft’s very recent history and current plans, pointing at XP, .Net, and Palladium and showing which way they’re headed by pointing out the pattern in the most objectionable features of each new technology. It took me a good 30-45 minutes to read, and I’m a pretty fast reader, but it’s worth the investment of your time.

The bloatware antidote for Windows

I needed a Windows MP3 player that wouldn’t take over my system and wouldn’t take as long to download as the typical alternative Web browser circa 2003. Which meant I went looking at one place.
That place is

I found what I was looking for (besides a way to legally download a song for $1.75, which is beyond these guys’ control). It’s called Coolplayer. It’s a 170K download that expands out to a 350K executable that uses an ini file in the same directory. Installation consists of putting it where you want to store it. Uninstallation consists of deleting the executable and the ini file. Excellent.

Coolplayer plays MP3s and has a simple playlist editor. Nothing fancy, just the basics. Well, and I guess I should mention it keeps me out of the eternal war between Microsoft, AOL Time Warner, and RealNetworks over control of whatever PC I happen to be using. As far as I’m concerned, that’s a feature, and maybe its best one. No, Realplayer, you may not take over the filename association for textfiles! If I wanted a text editor, I’d have run Metapad!

Most of the apps linked at Timyapps are substantially under 1 MB in size and provide just the basics most people need.

If the executables are still too big for you, there’s UPX. UPX is a modern-day PKLite that works on Windows apps as well as DOS apps. Among other things. I used an old version of it–I haven’t downloaded the current version 1.24, which has better compression–to pack the CoolPlayer executable down to 173K. The superfast, minimalist Off By One Web browser packs down to 359K.

If you’re building a super floppy or CD of Windows utilities, packing them with UPX is a good way to get more space for them. (Betcha didn’t know you could fit a Windows Web browser, MP3 player, and a text editor on a 3.5″ floppy and have room to spare, did you?) Or if you’re stuck with a way-too-small hard drive, UPX can gain you some space.

See, if you’re stuck with Windows 95 on a 386DX40 with 8 megs of RAM and a 170MB hard drive, you can get the basics you need to turn that into a useful computer. And the tricks still work if you’ve got something better.

Mozilla 1.3 has gone beta

I noticed that Mozilla 1.3 hit the beta stage today. I’ve been running the alpha version under Windows 2000 since mid-December, both as my primary browser and mail client, and I found it to be buggy, but its bugs were very predictable.
Predictable is good. Predictable means you can work around it. I worked around them easily enough that I didn’t report them, which was a mistake, but I’m sure I’m not the only one who saw them. I’ll report them if they’re still present in the beta.

Aside from those couple of predictable bugs, none of which ever caused the application to crash, it was reasonably stable. The main reason for calling it an alpha, I think, was feature incompleteness rather than stability. Stability wise, 1.3a was at least the equal of the original (pre-service pack) IE 5.0, 5.5, and 6.0, if not better.

So now I’m running 1.3b. I had issues with installing it. If you have 1.3a, disable startup acceleration. If you have a previous version of Mozilla hanging around and you intend to install 1.3b and you want to be absolutely safe, disable startup acceleration, then reboot, then install.

Then again, you may not have any problem at all. I get annoyed when people pronounce something stable or unstable based on trying it on one machine under one set of conditions for a couple of hours, and then they wonder what’s wrong with you if you do the same thing and have different results. So I won’t claim to have the final word.

But I’ll say this: If you want innovation in a Web browser, especially under Windows, Mozilla is pretty much the only game in town anymore. And its mail client isn’t bad either. For that reason alone, it’s worth a look.

And if the “beta” branding scares you off, I don’t blame you, because beta software has a deservedly bad reputation. This one’s a lot better. I won’t say it’ll never crash, because I’m sure it occasionally will. But the more people use it, the faster the bugs get found, and the faster it reaches true production quality. And that’s good for everyone.

Ultra-useful Windows and DOS utilities (plus Linux stuff)

There are loads of links in this mail. Explore them; you won’t be disappointed.

Hello. I maintain the Interesting DOS programs website and I was pleasantly surprised when I got an email telling me my site was mentioned in your book as a download reference site for XMSDSK.

While I only provided a link to the XMSDSK file on Simtel, it was still great to see my site which I never thought will ever get mentioned in any book, especially a Windows one ๐Ÿ™‚

I got your book and I like it (a lot). However, there were some tools I thought should have gotten mentioned (most are mentioned on my site)


On Page 65, you mentioned FIPS as a tool to resize partitions. While I haven’t tried FIPS, there is another freeware utility which I’ve used several times :

Partition Resizer v1.33 It resizes/moves your FAT16/FAT32 partitions safely without losing the data on it. It doesn’t eliminate the need for FDISK. You use Partition Resizer to resize and rearrange the FAT16/FAT32 partitions to create free space on your drive and then run FDISK to create the partition.


The Infozip link at is orphaned and is no longer updated. An updated link is at


On Page 209, you mentioned that internal Zip drives lack DOS drivers, this is not true as I have an internal ZIP drive and I access them from DOS. Perhaps you were trying the older drivers that came with the first Iomega parallel port drive?


FastVid v1.10 Improves video performance on Pentium Pro and Pentium II PCI/AGP systems. I haven’t tested this myself but you may want to check it out.


LFN Tools v1.48 These are DOS commands (as stand alone EXE’s) that can handle long filenames in plain DOS. Supports FAT32

For example there is LCOPY which works like XCOPY under a DOS window (copying the long filenames) but in plain DOS. This is useful for diaster recovery situations when you can’t get into Windows and you need to get files off your Windows drive. Other commands include

LMD – create a long directory name LRD – remove a directory with a long directory name (e.g lrd “Program Files”) LDIR – like the DIR command showing long filenames.

The Tools are released under the GPL so source code is available and it is free.


AVPLite Build 134 Free (yet powerful) command-line antivirus detection and removal program.

The engine is only is only 49K (the antivirus updates are about 1.7MB) but it can scan inside ZIP, TGZ, CAB, mail folders in Netscape and Outlook, DOC files). If there is a virus on a machine, you can have a bootable disk with XMSDSK to create a ramdisk, then have the AVPlite and the antivirus update on separate floppy disks unzipped to the ramdrive and then run AVPlite from the ramdrive.


Some Linux links :

SET’s editor v0.4.41

GREAT text editor with the fimiliar Borland IDE interface with syntax highlighting. This is literally the FIRST app to install after you boot Linux. Editing text files with Joe, Vi and Emacs were ummmmmm….. kinda difficult ;-). Released under GPL.

(SET edit is also available for DOS with a built-in MP3 player ๐Ÿ˜‰ )

The one page linux manual A PDF containing a summary of useful Linux commands You mentioned on your Silicon Underground that you wished there was a command reference for Linux. This one is close

————————————————————————- Since you mentioned Win3.x program manager, thought I’ll mention this

Calmira II v3.02 Freeware Win95 shell/interface for Windows 3.x, including explorer, etc.

Mask for Windows – PRWin98 Gives Win3.x apps the look and feel of Win9x apps


Looking forward to your upcoming Linux book (I agree with your sentiments on Silicon Underground – documentation is the main holdback for Linux)

Dev Teelucksingh
Interesting DOS programs at
Trinidad and Tobago Computer Society at

— This email sent with Arachne, the ultimate Internet client —
— —

Wow. Thanks for all the links. That’ll keep my readers busy for ages and ages to come. I did immediately go download SET edit. Very, very nice.

I’m very glad you like my book and look forward to the Linux book. It’s coming along, faster than the Windows book did, but not as quickly as I’d like. I’m not even willing to hazard a guess when it will be finished at this point.

A year from now, there will probably be twice as many Linux books available as there are now. Maybe more. The quality will vary widely. But we need them. The stuff coming out of the Linux Documentation Project is getting better (or maybe I’m just getting smarter) but the stuff available even six months ago very frequently had gaps that a newcomer wouldn’t be able to climb over: missing steps, poor or inaccurate description of output–all kinds of little things that suggest the author didn’t take the time to step through the process one last time. A plethora of available Linux books will help in more ways than one.

Back to DOS and Windows… Although many people deny it, DOS is still an integral part of Windows, and some things just can’t be accomplished without diving into DOS. Even under NT, I always keep a command line open. I can tell you the last day I didn’t use a command line. It was in June of last year. I know because I was in New Mexico, far away from work and from any of my computers.

So Iomega finally got around to releasing Zip drivers that work with the internal IDE and ATAPI models? About time. We bought a big batch of them at work about two years ago, and I needed to access them from DOS, and nothing. The drivers wouldn’t work. We contacted Iomega, and their line was, “These drives require Windows 95 or newer.” A year later, when I was writing that chapter, drivers still hadn’t appeared. But better late than never.

Thanks again.

WordPress Appliance - Powered by TurnKey Linux