Wednesday, May 24, 2006

Wizardry

Said once before, but it bears mentioning again, and was stated most articulately in a Slashdot discussion on computer literacy (available here [slashdot.org]).

What is magic? Words and symbols of power that shape the world according to the will of the magician. The magician speaks the right magic words, and draws the right sigils, and obtains the desired effect.

Meanwhile, the INT 8 half-orc barbarian doesn't have the faintest idea what all the runes carved on his battleaxe actually do. He doesn't care. He knows the end result is a +1 to hit and that suits him just fine. Neither is the ranger concerned about exactly how these enchanted bracers improve his aim with a longbow; they just do. Only the wizard needs to worry about the details.

And what is programming? Words and symbols of power that shape the computer according to the will of the programmer. Type the right instructions, give the right command arguments, and obtain the desired effect.

Ever created an infinite loop? Had a recursive process go berserk on you? Made a small mistake while invoking rm -rf? Yeah. Pure 'Sorcerer's Apprentice'.

We are the nearest thing to magicians that has ever existed in reality. Our spells work and are truly powerful, our mistakes cause incomprehensible chaos, and when one of us turns bad then sometimes the whole world can suffer the consequences. No wonder the muggles treat our creations like they're the mysterious products of a magical power beyond their understanding: that's what they are.


Another good post (a wee bit harsh, but all things considered, very true) and its even better reply can be found here [slashdot.org].

And as I sit here linking to these posts which I feel reflect my view on computer literacy, I become more and more aware that it's going to be asked of me exactly how I myself feel about the topic.

Okay, then, my views on "computer literacy" and what makes one "computer literate." Tricky to quantify, as many people use computers for many different things. Maybe an enumerated list...

-Need to have basic proficiency with text entry. In other words, a rudimentary level of touch-typing ability is necessary.
-Know some hardware. People I know, for some weird reason, are terrified of the guts of a computer. I'm not saying know individual IRQs and IO addresses, or even the pinouts of processor sockets, but at least know what hard drives look like, what network cards look like, what video cards look like, etc., and be able to install them physically (drivers are commonly another issue that, much of the time, I would not wish upon my worst enemy).
-As was stated in the post I linked, know the difference between a type of task and the software that is used to execute it. You do not give a PowerPoint in front of the board of directors. You give a presentation, and that presentation may have been made with PowerPoint, KOffice, Keynote, AppleWorks, OpenOffice, or another application.
-Related, but significant enough to be separate: THE BLUE E IS NOT THE INTERNET.
-Know about different operating systems, some (not all) of the advantages/disadvantages to each, and some of the basic ways in which they differ. For example: Windows has the most off-the-shelf software available for it, is reasonably easy to use, but is insecure and unstable. Linux is free, has a wide variety of software available for download (usually not available in stores), but is very difficult to configure except in certain cases. Mac OS is the easiest to use and falls somewhere between Win and Lin for stability and security, but requires special hardware to use and is not free.
-Know alternatives to "default" software packages. For example, Foobar/MPlayer as replacements for Windows Media Player/ITunes, Gaim/Miranda as replacements for AOL/MSN/Yahoo messenger, Jabber as a (superior) replacement for those messaging systems as a whole, etc. Not necessarily required to always USE those replacements over the "official" package, as this is a matter of preference, but at least be aware of their existence. This goes back to knowing the difference between tasks and the tools used to carry them out.
-It's sad that I have to say this, but know how to protect yourself when networked with other systems. I don't care what the zealots say, just having and using Linux/OSX as opposed to Windows isn't good enough. Nothing is an adequate substitute for caution and common sense. A guy I work with contracted a rootkit on his Linux box, thus proving my point. Further proving it is the fact that he has been paranoiacally cautious ever since, and has yet to be compromised again in an even remotely similar fashion. As soon as the human element (i.e. recklessness versus caution) was addressed, security improved significantly. This does not mean you need to know in detail what a rootkit is, how viruses work, the specifics of buffer overflows, etc. But understand the basic concepts: viruses attach to files and cause various forms of damage (widely various-everything from simply bogging down network connections to rendering a system unusable at the firmware level (y halo thar ANSI virus)), rootkits compromise access to your system and open a "backdoor," spyware reports your activity to its masters, etc. Also know the countermeasures for each, and remember for the love of $DEITY to keep definition files updated.

I could go on and on, but this is the major stuff out of a nearly endless list of criteria I could give. Honestly, what it really comes down to (in my opinion) amounts to two things: First, be able to learn new things. Yes, "things," that ever-loathed generality of generalities. Learn new stuff without going into panic mode, understand that you probably won't hose your system, and if you do, know that it can be fixed. Second, and possibly more important on a psychological or emotional level, take interest in technology to some degree. This does not mean you have to be a card-carrying member of the geek association of your local community (or hell, the world). But if you enjoy doing something on a computer, read up on it. Read the Wikipedia entry, check out a book, read technical whitepapers (ok, that last one will be demanding of your attention span). Have an iPod? Do some reading to find out exactly how the songs get onto the magic white box. Like doing digital photography? Study graphical compression algorithms (LZW, JPG, PNG) or CCD technology. Take enough of an interest in what you do most often with your PC to want to learn how at least that part of it works.

And for godsakes, that's NOT a cupholder.