...making Linux just a little more fun!
This article started percolating when Thomas asked:
I'd really love to see an article of how Unix was used in the past. Now, with PCs so cheap and popular, it's all the same method. You don't often hear of people saying they're using a dumb-terminal (unless they have an XDMCP server running.)
Yes, the terminfo database actually meant something back then. On the other hand, the multiplicity of keyboard layouts led to the infamous backspace problem in Linux. (But it's not just a Linux problem.) Anyway, here's how I found Unix, Linux, and Linux Gazette. There's also a bit on the development of internationalization (non-English support), and muse a bit on the importance of history.
I started computing in junior high school, taking a BASIC class on Apple II's (1980). A fellow student's father had one at his office, so we met there on Saturdays and wrote our first game, a shoot-the-bird thing. Soon afterward my dad borrowed a TRS-80 Model 1 Level 2 for me to play with. 16 KB RAM. A cassette interface that never worked so I couldn't save programs. 1 Instead I left the computer on and put different programs in different number ranges. (BASIC programs had mandatory line numbers.) I immediately saw the computer's potential as a word processor, but neither model had lowercase letters. The TRS-80's manual said there was a "hole" in the video memory where the lower-case ASCII bit would have been. I didn't understand why they left out something so fundamental. Every month, Creative Computing magazine had sample programs and programming contests. (Echoing later DRM controversies, the first issue discussed a plot by the US Postal Service to regulate email. 2) Every microcomputer was incompatible; they all had tradeoffs in their graphic capabilities and BASIC features. (They were called microcomputers then. "PC" came from the later IBM PC trademark.) I never saw a PET; I saw the Atari 400, Atari 800, Amiga, and an early palmtop (TRS-80 Pocket Computer) only in stores.
People couldn't afford computers so they played video games in arcades. Space Invaders, Pac-Man, Defender/Stargate. I didn't because I vowed, "One day I will have my own computer and I won't have to put quarters into it." Then I got a computer and had so much serious stuff I wanted to use it for that I didn't have the patience to learn games. But I have to say, the best game was Defender/Stargate because the spaceships would explode to the edges of the screen, then later unexplode at the start of a new round.
In high school (1982) I convinced my dad to get an MTU (Micro Technology Unlimited) computer after a rave review in a magazine. [Picture] It cost around $3500, and had 64 KB RAM. The operating system was CODOS ("Channel-Oriented Disk Operating System"). By "channels" it meant file descriptors, borrowed from Unix. It had programmable fonts, sideways text in the graphics API, and GRIN ("GRaphic INput", meaning you specified a pixel by moving a screen-wide crosshair with the arrow keys). Neat toys, but ultimately not useful for much. Eventually my dad sold it to his girlfriend, who did PR at Microsoft in the early days. She loved the MTU and its word processor, especially the function-key legends at the bottom of the screen.
Then the IBM PC came out. Its BASIC had many more features than any of the others. I'd go to the computer store and read the manuals and imagine programming it. Then the Macintosh came out in 1984 and blew our socks off. A word processor that actually showed you the fonts live onscreen. Cute little icons, draggable folders. In college I borrowed time on my friends' Macs to write my papers. My dad bought an IBM XT for work, but I didn't use it much until later.
In 1987, my second year of college, I took two programming classesi, both using Modula-2 on VAX/VMS mainframes. We wrote programs on h19 terminals using an editor called h19. The boring terminals were hardwired to one mainframe; the interesting terminals had a text menu of computers you could log into. Dialing in from home you also got the menu. I soon discovered email and phone (a split-screen chat program). Those blew my mind; I immediately saw the power of networking and databases. I could write to somebody in Iran and get a reply in a few minutes. For the next several years I tried to convince my dad to get an email account for his business, but he never saw the point. Online services consisted of dozens of local bulletin boards, CompuServe and a few others, and the BITNET the universities used. There were Internet gateways between the mail networks by that point, but CompuServe charged 10c/message for foreign email. There was one Unix computer (blake) on the campus network, but nobody I knew used it. Unix was just one more thing in the alphabet soup of systems.
In 1989 I graduated (in Speech Communication) and inherited my dad's XT. He was selling medical insurance plans (or what are now called medical savings accounts) to companies, and had me test the proposal/administration program his programmer was writing (in BASIC). He wanted to give away stacks of floppies with the proposal program at banks as a way to recruit customers. The program gave a rate quote for the client's company size and employee profile (e.g., how many with children). Later he wanted it to compare our rates with plans from the various insurance companies, to give the public greater knowledge and choice. It would have been a perfect application for the Web, but the Web didn't exist yet.
In 1990 the Mac Classic came out, the first cheap Macintosh at $1090. My six-year dream of owning a Macintosh became a reality. But the following summer I bought a huge book on AT&T Unix and thought it was the bomb. Everything that DOS did badly, Unix did well. To practice Unix, I got a dialup shell at a bulletin board running XENIX. It had Usenet via UUCP. In Usenet messages I heard about this wonderful thing called FTP that was download heaven, but you had to be directly on the Internet to use it. Only universities and a few large companies had Internet access. So I connived to get a job at the university, where I could use the labs and get paid too, rather than me having to pay tuition. I got a filing job at one company, which lead to a data entry job (using a horrible IBM mainframe program that looked so primitive). Then a data entry job opened up at the university, or rather at the large hospital it's affiliated with.
I got a second book about Unix called Life With Unix (1989: Prentice Hall, out of print). It was a humorous look at the Unix culture and philosophy, with lots of interesting trivia. I'd recommend it if you can find it. This article is titled "Life With Unix" in its honor.
I started that job in November 1991, and a week later learned about Linux in a Usenet message. Talk about a Christmas present. Linux was at version 0.6. There was a boot disk and a root disk, but no user accounts. I wanted to run Linux so badly but I didn't have a 386. My friend installed it, said you couldn't do much with it, and erased it. The next year I sold my Mac for $150 and bought a 486/66 for $2000.
Meanwhile at the university, there was now a general student computer, a Sequent/DYNIX (milton). Unix denizens used the cooler DEC/Ultrix (hardy), a BSD variant, especially for CPU-intensive compilation. There was also an AIX computer. The VAXen were still online for the engineers. The h19 terminals had been replaced with NCD X-terminals. I thought their high-resolution color screens were a ridiculous waste of money. The terminals came with a built-in window manager (Motif) and a menu to telnet into the frequently-used hosts, each in an xterm window. This was the University of Washington, so Pine was encouraged. Everybody read their mail via telnet/Pine. But you could do xdm login to one of the Unix machines and get a graphical login screen and twm. That's what the cool people did. The tradeoff was it took more CPU time on the host, so after eight hours you got nice'd and things slowed way down. Most of what is now blogs and chatting and eBay was done on Usenet. "The Net" meant the Usenet community. I'd go down Friday evening to "read news" and get home Saturday afternoon. We didn't really use the GUI at all except to set the background image and run a clock. A few people played MUDs.
I put Linux on my shiny new PeeCee in 1992, first the MCC Interim distribution, then Slackware. xfree86 wasn't stable yet and I despaired it ever would be. I almost bought BSDI Unix which did have an X-server, but the $1000 cost daunted me.
My hospital job went from data entry to database (FoxPro), and then workstation support (Windoze). In 1995 I got a better PC which I tried to put the new version of Slackware on, but it kept segfaulting at random moments. I cursed Slackware and asked a colleague which distribution was most reliable. He said, "Red Hat, because they actually test their distribution." Red Hat had just come out; it was the first commercial distribution. But I switched to Debian instead because of its community development process; I planned to become a developer. Later when I tried to compile a kernel, the segfaults came back, and I finally traced them to bad memory. So it wasn't Slackware's fault after all, but I had already switched.
I dreamed of getting a job using Linux. For years that was unrealistic; everybody wanted Windows. By 1996 it was starting to seem possible, then in 1997 it happened. I got a sysadmin/tech support job at a small ISP, and installed Slackware on 386s to function as wireless routers. The computers came from the Boeing surplus store for $50 each. The ISP owner made a deal with "friends in high places", giving them a free T-1 equivalent in exchange for putting a microwave antenna on their roof and a router in their attic. The other servers were a mixture of BSD (dns), HP-Apollo (mail), and NT (ppp). I left after a couple months and returned a year later (1998), and the 386's were still being used. But there were some dozen dead ones. My job was to move parts around to get some of them working. Some had pre-IDE drives, a protocol called RLL, but Linux detected them just fine. :) Yet only two or three computers were usable. So one glorious day I put ten 386's in the dumpster. The next day, the owner went to the Boeing surplus and got ten more $50 computers. This time they were 486's with more recent peripherals. Good for me; it meant they were more reliable.
I learned at that company there's such a thing as being too cheap. We sysadmins couldn't get the equipment we needed. The owner was determined to squeeze the last bit of life out of the ancient HP-Apollos with their esoteric Unix interface. The network was practically held together by duct tape. My co-sysadmin said, "I can hear the servers groaning at night and I'm worried." The dialin server was NT. I wasn't sure I wanted to work for a company I couldn't recommend to my friends, so I quit.
My programming hobby had gone from BASIC to C to Perl to Access BASIC. Then Java appeared in 1997 and I believed the hype. But Sun wouldn't release a JDK for Linux, and the third-party Blackdown clone looked like it would always be a year behind Sun's version. I learned about Python in a Java newsgroup, jumped ship and never looked back. The more I used Python, the more I liked it, similar to how I'd found Linux.
In 1999 I got a job at Linux Journal (SSC) as webmaster. Marjorie Richardson was editing Linux Gazette, and it was taking every last weekend of the month -- difficult when you have a family. She gladly turned it over to me so she could "have her weekends back". I knew about LG but had never read it much, preferring to have my information indexed (everything in its place) rather than random (as the 2-Cent Tips are). There was no Answer Gang, just Jim the Answer Guy and Heather the Editor Gal. We formed The Answer Gang to share the load, and later made the TAG Knowledge Base and improved the LG search engine.
I started using KDE at SSC, since it was the office standard. For work it's better to have everything you might need under the menus, rather than scrounging around to find and install a program. Eventually I switched from FVWM to KDE at home too.
By 2000 the Linux bandwagon was in full swing and I heard all about it as LG editor and overhearing the LJ editorial staff. If you look at the News Bytes column in LG around 1998-2000, it was full of press releases from companies. This was necessary in the early years to promote Linux and help struggling companies, but eventually I got tired of the marketroid hype. How can every company be "the leading" one in its field? Then Dmitry Sklyarov got jailed for writing a decryptor for Adobe's eBook format, and I started putting political analysis in News Bytes (first article) and cutting out the press releases. Then Mick Conry took over News Bytes and kept the focus on analysis and nonprofit activities, also bringing a European perspective.
Seeing the press releases and LinuxWorld conferences burned me out on the Linux advocacy role. Others were doing it; I didn't need to anymore. Linux became just the environment I compute in, not a crusade.
In March 2001 there was an article in the newspaper about Microsoft not meeting its stock expectations. I considered it minor; stock prices move up and down all the time. But incredibly, it precipitated a selloff that became the dot-com crash. "Are these investors idiots?" I thought. "First they buy stock way above the companies' asset value, then they dump it on minor news."
In 2003 I was laid off from SSC. I wanted to get out of sysadmin and take a break from programming. I thought about technical writing. But then one Python job came up and then another, and I couldn't turn those down since they're so fun.
Last summer I switched from Debian to Gentoo, which is what my computer is running now.
Internationalization was held back mainly by hardware. ASCII (1967) predated microcomputers, but it took years to become fully implemented on them. The Apple II had the most complete set, including |, which it flaunted in the computer's name (Apple ][) and command prompt (]). But it did not have lowercase letters.
The TRS-80 had four arrows instead of |. It also had no Ctrl key, so you couldn't type control characters from the keyboard. You had to use the CHR$(n) function to display them. A few characters could be displayed only by POKE'ing them into video memory. The high-bit characters were block graphics (a 2x3 grid with every combination of "pixels" lit). The PSET command lit a certain pseudo-pixel by mapping its x,y coordinate and its five neighbors to a Tetris-like character. This trick allowed you to mix text and graphics, which the Apple II didn't do except as a split screen. The TRS-80 model II had a second character set, Japanese kana.
The Apple II used the high bit for inverse video. Keyboard input came in via a reserved memory location, and the high bit indicated there was a new character waiting. So the high bit was "wasted", not usable for distinct characters. (The Apple II also used reserved memory locations for many other purposes. For instance if you PEEK a certain address, it would switch video modes. Addresses were signed 16-bit integers, so many reserved addresses were negative. More trivia about Applesoft BASIC is in the FAQ.)
The IBM PC put western European characters in the high-bit space, hooray! But to input them you had to hold down ALT and type the numeric code, which meant you had to memorize them or carry a chart around. As if! The characters chosen were a seeming hodgepodge: OK for Spanish and German, lacking capitals for some accented letters, and who uses a y-umlaut? This character set conformed to no standard, making it useless for data interchange or archiving except with other DOS PCs. When IBM and Microsoft started marketing DOS in non-English speaking countries, they created character sets ("code pages") for the local languages, Macintosh had its own character sets, Russian had its own homegrown KOI-8 character set, and there was also the international standard (ISO-8859-n). So it was quite a mess.
But all these 8-bit character sets had a fatal flaw: you could use only one language family in a document. Since all character sets inherited ASCII you could mix English and French, or English and Russian. But you couldn't mix Russian and French unless you ASCII'fied one of them. Don't even think of making a Russian-Arabic dictionary. And depending on hardware limitations, you could only display one character set on the screen at a time anyway.
Unicode attempted to fix all these flaws by making a combined character set covering all the world's alphabets. But software and libraries had to be rewritten to recognize multi-byte characters. This took years under Linux and is still not complete. You needed Unicode fonts, libraries to encode data to UTF-8 (the ASCII-friendly interchange format), standard labels for the encodings, sorting algorithms, and Unicode-aware text editors. The latter was the hardest part, especially if you had an affection for an existing editor. The switch from console mode to X-windows was also necessary, because the PC text console cannot use multibyte character sets.
It's always good to look back and see, not just what people did but what their assumptions and goals were. I was born in 1966, and grew up thinking the 1950s were the pinnacle of suburban achievement, as homogeneous as Leave It to Beaver. Then I read Philip K Dick, a postmodern author who belonged in the 60s revolt but he was writing in the 50s. So the cracks in the American dream were already apparent; people were just in massive denial. Then you look at the physical layout of 50s houses. People were so proud of their suburban houses with the latest convenience appliances. But the houses were tiny: I visited a 2-bedroom house a family grew up in, and it wasn't much bigger than my studio apartment. One-car garages. Two electric outlets per room. (What do you need to plug in besides a lamp?) Five TV channels, all black and white. Phonograph records. Two radio dials: volume and tuning. Yet a lot of people were very happy with all that; they thought it was much better than before.
In the early 90s, Linux World Domination was just a farfetched dream. We fretted about whether xfree86 would even run. Instead of the Web there was the phone book. Life was slower. You mailed in a resume (all nicely formatted on thick cream-color paper), got a call on your answering machine, called back the next day. Now you e-mail a text resume and if you don't answer your cell phone immediately, the job goes to somebody else. These things happen so gradually we don't realize how much we've changed, and we can't even remember what we used to think.
The dot-com bubble was similarly seen as the pinnacle of the technological boom. People read about Linux in the newspapers. You had to have a .com after your name or you were nobody, even if you were a hair salon or supermarket. Neighborhoods gentrified and became boutiques. Then the crash came and things pulled back. Domains expired. Apartments became affordable again (sort of). The Linux hype vanished.
But Thomas Fridman argues in The World is Flat that the greatest leap of computerization and globalization actually happened after the crash. In spite of the disillusion with online pet-food shopping. In spite of the antiglobalization protests. Linux is no longer hyped, but it has become commonplace. Companies know what Linux is, and they're more willing to accept it if it gets things done. Linux has become deeply rooted in governments, schools, and software engineers outside the US. Much to the chagrin of SCO and Sun, Linux has become the standard against which other Unixes are measured. If a company ports software to Unix, it ports it to Linux first. That is, if it didn't develop it in Linux in the first place. So there is a lot happening behind the scenes now, it's just quieter.
David Keil's TRS-80 emulator for DOS comes complete with a virtual cassette device. Its manual page is a total hoot. "Because the virtual cassette works exactly like a real cassette it takes the same amount of time to CSAVE a file in the emulator as it does on a real TRS-80. So now, not only can you run cassette based programs with the emulator you can also experience the incredible speed of cassette based I/O." Tapes are stored as *.CAS files. The emulator has a baud-rate control and motor on/off switch. To provide a more realistic experience, the emulator does not force these to correct values; instead it will happily read gibberish if you set the baud rate wrong, or overwrite the next program if you forget to turn the motor off. You can also connect a real tape recorder to your sound card. And if you don't have a sound card, don't worry. You can save the program to a WAV file, and load WAV-programs created by regular sound utilities! I wonder what Barry Manilow's "Copacabana" would do to a TRS-80?
"Two main views were heard [at the Electronic Mail & Message Conference], though there are several more. One was the idea that electronic mail is in some sense a simple replacement of paper mail, which the Post Office speakers seemed to think. The other view sees 'electronic mail' as just one fact of the coming world of transmissive computing in which a lucky few already live.... A surprising political issue surfaced at the conference: the role demanded by the U.S. Postal Service in a new world they claim to understand but may not. What the Postal Service wants to do might narrow and restrict what you can do in the future with your computer. [Original article]
Mike is a Contributing Editor at Linux Gazette. He has been a
Linux enthusiast since 1991, a Debian user since 1995, and now Gentoo.
His favorite tool for programming is Python. Non-computer interests include
martial arts, wrestling, ska and oi! and ambient music, and the international
language Esperanto. He's been known to listen to Dvorak, Schubert,
Mendelssohn, and Khachaturian too.