Me: PREACH IT, BROTHER!
Matt: AND THE LORD GOD SAID UNTO ME: "YOU SHALT HAVE A GUI WORKSPACE WHERE THE FOCUS OF THY WINDOWS SHALL DEPEND ON WHICH WINDOW THY MOUSE IS HOVERING!"
Matt: AND I SAID: "BUT GOD!"
Matt: AND GOD SAID: "BUT MATT?"
Matt: AND I SAID: "BUT GOD, I HAVE TO CLICK TO FOCUS ON WINDOWS AND MAC? HOW CAN I BE DELIVERED FROM THIS WORLD OF CLICKY DARKNESS?"
Matt: AND THE LORD GOD TOLD ME SOMETHING.
Matt: WANT TO KNOW WHAT HE SAID UNTO ME, MY BROTHERS?
Me: WHAT DID HE SAY, MATT? WHAT DID HE SAY?
Matt: HE SAID UNTO ME: "THE TWEAKUI APPLET SHALL DELIVER YOU FROM DARKNESS ON WIN32."
Matt: AT WHICH POINT I ASKED HIM ABOUT THE MAC, FOR THAT IS TRUELY THE PLATFORM OF THE PRETTY GUI'ED UNIX, AND MUST SURELY HAVE IT TO SATISFY THE TRUE BELIEVERS!
Matt: AND, HE TOLD ME SOMETHING.
Matt: IN ALL HIS DIVINE WISDOM
Matt: HE SAID UNTO ME:
Matt: "Ummmm.... lemmie ask Steve-o about that... you know I don't really have any say over that."
Me: lol.
Matt: AMEN!
Microsoft Windows is actually a lot of different programs. You get the core OS, known as a kernel, and drivers to access your hardware. You get bits that allow you to manipulate windows, a file manager, bits for changing your wallpaper, managing devices, and a host of little applets. This doesn't even mention extra goodies you get like fonts, sounds, color schemes, wallapapers, and everything that ties all this together. In the world of cuisine, this idea is called "prix fixe." Windows is a package deal. You pay one price and all of this is yours. Macs are a similar deal, but they make you buy hardware with it, too.
Linux operates on what could be described as an "a la carte" deal. In fact, Linux is only the very core of the OS, called the kernel. It's quite useless by itself. A host of utilities provided by the GNU project provide an actual working system. That's not even the end of the story, though. The entire stack of programs that makes up a typical Linux system is brought together from hundreds, probably thousands of sources from around the world. Sounds like a mess? It is. If you had to find all these things and assemble a system yourself, it would take you days, if not weeks. Thankfully, people have done this step for you, and the resulting package is called a distribution.
The upside of all of this is that you are given a plethora of choices. I mentioned earlier that BASH was a common Linux shell, but you're not required to use it. Alternatives include zsh, ksh, csh, tcsh, and more. How about text editors? Pico, vim, emacs, joe, jove, jed... You are free to find the bits and pieces you like best. In fact, you're not even required to use Linux. The same programs are available for BSD, Darwin, BeOS, and a lot of other UNIX-like systems. Granted, this choice also true in the Windows and Mac worlds, except for a very important part: The GUI.
People are used to physical interfaces, like the 12 buttons on a telephone, or the ubiquitous channel and volume buttons on a TV remote. These interfaces are very hard to change, and so we accept them because we have no choice. Having modeled computer interfaces after physical ones, we assume the same thing. "This is the way it is, and I have to accept it." But computers are reconfigurable — on your computer screen, this idea simply does not apply.
To illustrate this idea, let's take a look at the most popular GUI environment for UNIX-like systems: X Windows. X Windows by itself is merely a system for drawing inside rectangles and pointing and clicking on things. The most barebones X desktop would be completely unusable, much in the same way Linux is unusable by itself. Another program, called a window manager implements the "look and feel" of the windows.
This is where X Windows departs from both the Windows and Mac GUIs. There are literally hundreds of window managers to choose from. There are ones that emulate just about every window system known to man, including Mac and Windows, but added to that are completely original and new environments. There are ones that provide a full desktop environment that would be familiar to anyone from the Mac or Windows worlds, and there are ones that do absolutely nothing but provide a few spartan decorations with which to move or resize your windows. There are even some, like ION, that completely redefine the idea of "windows". (I use ION, and I consider it leaps and bounds beyond any other method of organizing my desktop)
Moving beyond the window manager, there are many choices for the rest of the "desktop": file managers, application launchers, window organizers (You'd probably call them "taskbars"), virtual desktop switchers... it's a smorgasbord, and you get to pick whatever you want.
To really drive home this point, I'm going to count the number of available windowing interfaces for the "big three," Windows, Mac, and Linux.
Windows: 1
Mac OS X: 1
Linux: at least 481 (according to freshmeat.net)
"That's great," you say, "but why should I care?" In all likelihood, you won't. If I haven't convinced you to try something new, then by all means, don't. But, if you ever feel like your system could be doing more for you, I encourage you to look around for something better. At the end of the day, you should use what you feel most comfortable with, and what best allows you to get things done. Linux is that tool for me, but if you prefer to use Windows or a Mac or an abacus, that's fine, too.
Except for you people who use Trillian. I mean seriously, what the fuck? :-P
The first few months were pretty rocky. Slackware 3.1 is not a distro that I would subject to anyone these days, not even Linux veterans. The long period of learning started with the differences between DOS and BASH (the most common Linux shell), helped out by a few books from the library. The more I learned, the more I realized that the UNIX way of doing things looked like DOS, but it was considerably more advanced. What originally seemed arbitrary and confusing was actually a well thought out solution to a very different problem than DOS ever saw. A bit of history is in order.
UNIX was developed at Bell Labs back in the late 60's as an alternative to a huge, bloated monster of an OS called MULTICS. Back then, computers were huge noisy things with lots of blinkenlights that served many users in a timesharing system. Many remote terminals (basically computer monitors and keyboards) were hooked up to a single computer, and the processing power of that computer was divided evenly among its users. Thus, a single very expensive computer could be used effectively by many people. MULTICS was a timesharing system of considerable (some might say unbearable) complexity.
UNIX was originally not a timesharing system. UNIX is, in fact, a pun on MULTICS, created to imply a reversal of MULTICS' bulky design. UNIX was shortly redesigned for multiuser work, though. And this aspect — that multiple people are using the computer simultaneously &mdash is the idea that separates the seemingly similar user interfaces of DOS and UNIX.
Linux is a clone of UNIX, rewritten completely from scratch by Linus Torvalds some time in 1990. It is not technically UNIX, as it shares no code with the original or any of its many derivatives. Linux does, however, implement the same functionality, so people like to say that it is UNIX-like. Since Linux (and the GNU utilities that are often packaged along with it) implements the same interface, I'm going to call it the UNIX interface, but this discussion applies equally to both.
The first thing any multiuser system needs is protection. UNIX protects users from reading each others' data with file permissions — metadata that controls access to the files. Furthermore, other users are prohibited from manipulating your running programs. UNIX has mail, a way of messaging other users that eventually turned into the email that everybody knows and loves. UNIX also has a superuser, a special user that isn't bound by limits and permissions. Because there are many more things going on than a single user system, UNIX has a logical (if sometimes archaic) filesystem structure. Mac OS X users in the audience, open up Terminal and type 'ls /'. See 'etc','usr', and 'var'? That's part of the UNIX structure.
Once I understood these things, I really began to see the power of UNIX. I could schedule programs to run at specified times. I could use my machine remotely as though I was sitting in front of it. The shell was not just able to run programs, it was itself a programming language. There were hundreds of programs to process data, and they could all be combined into a powerful assembly line.
That last aspect is really the cornerstone of UNIX. The "UNIX philosophy" is to do one thing and do it well. These little things can then be combined in virtually unlimited ways, creating an extremely powerful environment. Many other systems, including Windows, have adopted the multiuser features that UNIX pioneered, but this "UNIX philosophy" is the one idea that has not been successfully copied into anything else. It is the biggest reason why I use Linux.
Stay tuned for part 3. :)
I began computing back in the dark ages, when men were men, and your typical computer interface looked like this:
Yes, I've been using Microsoft software that long. (Astute readers may notice that I was an infant in 1982. We got our TRS-80 some time around 1988, I think.) I'm sure the thought of using something like this scares most of you, but that little "OK" prompt was the gateway to an amazing new world for me. The computer was telling me, "OK, I'm yours, do whatever you want." The greatest thing about those old computers was that your access was unlimited. Every bit and byte was there, at your disposal, if you knew the right incantation.
Fast-forward a bit to our first machine in the far-reaching line of what most people call a "computer," the IBM PC clone. It was leaps and bounds beyond the TRS-80: 640K of RAM, an enormous 32MB (yes, kids, that's megabytes) hard disk, and a VGA video adapter. Flip the switch, and in about 30 seconds, you get an interface that looks like this:
C>
It's not quite as cordial as the TRS-80's "OK", but there is the computer, asking for your input. The DOS prompt isn't quite as useful as mainlining MS-BASIC direct from the ROM, but there's a solution for that:
C>gwbasic
... and the world was yours once again. In another few years, we bought a 386, which came preloaded with Windows 3.1. At this stage in Windows' evolution, it was pretty much riding sidecar. You still booted into DOS, and Windows was merely a neat windowing environment for a few neat graphical applications. Most of the fun stuff (DOOM, Jazz Jackrabbit, One Must Fall 2097, and ten million other shareware games) was still for DOS. BASIC was still there, but now they called it QBASIC, and it had a neat little editor. The computer was still a playground of unlimited possibilities.
The next computer was a 486, a very similar machine, merely larger and faster. Manufacturers now put "win" at the end of AUTOEXEC.BAT so that Windows started up automatically on boot. Windows was now host to a large group of applications, and even some games like Myst. Most serious games still stuck with DOS. QBASIC was still there, and when I wasn't programming, I was playing MechWarrior 2. Life was good.
And then Windows 95 came out. The addition of pre-emptive multitasking and a clean new interface won me over, and my parents got me a copy for Christmas '96. It was at that point that I learned its terrible dark secret: Windows was now in control. I searched desperately for the "win" at the end of AUTOEXEC.BAT, but it wasn't there. The DOS that came with Windows 95 had been modified so that Windows started up automatically. That choice had been taken away from me, and I found it distinctly unnerving. QBASIC was still there, and you could still exit to a DOS prompt with the misleading "Restart in MS-DOS mode" shutdown command, but it was clear that DOS's days were numbered.
Faced with the future, I adapted. Windows became the host to my DOS games, and many DOS games started moving to Windows with the release of DirectX 1.0. I got a copy of V*sual B*sic (its name shall not be uttered here), with which I made a fair number of applications typical of the language: slow, bloated, poorly designed abominations. By and large, though, Windows was suitable for my needs (which were mainly playing MechWarrior 2).
A few years later, Windows 98 came out. I didn't bother upgrading, since IE4 gifted Windows 95 with the same reconfigurable taskbar we know and love today. I immediately latched on to the Quick Launch Bar as my primary method of opening programs. The Internet, which was once merely a fascination viewable from AOL's walled garden (Yeah, I used to be an AOLer, too) was now a destination in and of itself. Mirabilis ICQ was the way to talk to your friends, shortly followed by AOL Instant Messenger. QBASIC was quietly dropped in Win98, and I've been missing it ever since. DOS was barely hanging on by a thread.
It was probably about this time that I discovered Linux at the Engineering Open House. I didn't really know what it was at the time, but shortly thereafter I downloaded some 26 disk images of Slackware 3.1 from AOL's file archives and managed to install it from 26 floppies onto a newly cleared 300MB partition. It was bizarre and alien, and I still spent most of my time in Windows.
The century turned, and Windows Me and 2000 were released. Windows Me was an abominable stopgap based on the now antiquated Windows 98 platform, and 2000 was based on the previously unheard-of-in-the-home Windows NT. NT and 2000 didn't use DOS at all, they were completely new animals. While 2000 wasn't really marketed for home users, many home users ran pirated copies because it was much more stable than 95/98/Me.
Windows 2000 eventually became Windows XP Home and Pro, which finally brought NT to the home user. It was redesigned to be friendlier and easier to use. The control panel was rearranged by function. The Start menu, once just a place to launch programs and change settings, was now expanded to house My Computer and a small list of frequently used programs. The systray and desktop were automatically cleaned up, and you could now have multiple users logged in at the same time and switch between them. All of this signaled to me a fundamental shift in the way people used their computer. Users were no longer in control. Microsoft made the rules, and the users paid for the privilege of abiding by those rules. This was not the computer I had grown up with.
My friends and I have been playing GunBound recently, and I'll admit, it's a pretty fun game. It would be a lot more fun if, in order to play it, I didn't have to reboot into Windows, then start up Internet Explorer and click on a Flash button that loads an ActiveX control that downloads updates and launches the game proper. Good game. Bad infrastructure.
I think this all stemmed from a discussion about finding a good game for all of us to play since we're spread about the country now. Gunbound is pretty good in this respect. It's turn-based, so it's not sensitive to lag. It's easy to pick up, and provides enjoyment for noobs and pros alike. If it wasn't so graphically heavy, and if I could run it in Linux, it would be close to perfect. I'm looking for a game that I can use to steer this idea a little more towards my side. Maybe something GPL licensed with binaries for the big three (Windows, Mac, Linux). Even a non-free game with a small one-time cost would be OK. If you have any ideas, I'd love to hear them.
Speaking of games, I realized today that I haven't played a DS game on my Nintendo DS since I got a working NES emulator for it. I do love Mario Kart, and Nintendo has a great lineup, but very few things can compare to Mega Man 2. Especially its soundtrack. I don't know if I've mentioned it here or not, but I fucking love 8-bit music. When I start up Mega Man 2, I just let the intro play so that I can listen to the music as it builds from a simple happy melody to a full-on rock anthem. For those who like that oldschool flavor with a twist, I can fully recommend the minibosses' adaptation of the Mega Man 2 soundtrack as being incomparably awesome. (You won't find it on their website, unfortunately. If you want it, I can send you a live version.)
I guess I'm sort of in a minorty on the issue, though. A conversation I had not too long ago on the subject of Ouendan/Elite Beat Agents:
Jen: It hasn't been doing very well. It's very similar to Technic Beat.
Me: But Technic Beat was an awesome game!
Kan: Yeah, but the music was kind of weird.
Me: The music was the best part!
Jen: (to Kan) Chip likes those old games...
For those who haven't played Technic Beat, it features a lot of themes from old Namco games, most done by the supremely talented AYA (Ayako Saso) and MEGA (Shinji Hosoe).
Erickson won a MacBook. That bastard. :-P He's been talking about it all day, as though it were his new baby boy. I understand you're excited, Erickson, but you really don't have to go on an on about how "purty" it is. Yes, I'm jealous. :)
target="_blank" attribute, causing the target of that link to pop up in a new window, unbeknownst to the clicker:
WHAT THE FUCK?
I have fucking had enough of it. The next time I click on a link and Firefox stalls for that split second while loading a new window, I will hunt you down and repeatedly ram the sharpest object I can find into your wide-open fear-stricken eyeballs. Is your webpage so special that it needs to stay open when I go to another site? Are you afraid that your users might leave and not find their way back? Do you not understand the purpose of the back button?
Especially annoying are those of you that do this for links to pages on your own site. Listen, you pusillanimous pile of putrid pulsating pox pustules, if I wanted to open the page in a new window, I'd right click on the link and open it in a new window. I do not need, nor do I want you to do it for me, and doing it without even warning me is fucking unforgiveable.
You need to fix your shit before I break into your datacenter and fix it for you with a 10 pound sledgehammer.