2011-08-29

Linux: A Beginner's Guide, First Steps pt.1

Before we begin:


This is what you will need in order to follow through with these tutorials:


  • Linux: It doesn't matter which flavor, but it must be installed on your hard drive (HDD).  Most major distros guide you through the basic install process (or do it for you) and have awesome documentation to help get you started. 
  • Patience: You are learning an entirely new way of doing things.  Some of the things that I am about to teach you are so far removed from the way that you are used to doing them in Windows that it's hard to put them into words, suffice it to say that it's like learning another language.  That said, some things that I am going to teach you make the way that you used to do them look like overly complicated garbage!  
  • Time:  Under no circumstances should you undertake any of these tutorials unless you have the time to sit down, take a deep breath, and actually read with understanding.  Anybody can read, but reading for understanding is much more difficult.  It requires concentration.  If you are like me and have a spouse and children, then this is easier said than done.  Do your best!
  • English: It sounds odd, but I will not be translating these tutorials into languages other than English.  I speak fluent Castillian (Spanish), but translating is not a task that I am willing to undertake alone.  You will need at least a basic command of the English language if you are going to understand these tutorials.  Google Translate is a very good tool to use, but it is not always perfect.  If English is difficult for you, please have a friend who does have a good command of the language help you out.
  • A willingness to get your hands dirty:  This is pretty self-explanatory, but, you must understand that we are going to be going deep into your system at times.  If you are unwilling dig in on your own, then these tutorials will not help you.  With this, please understand that I am expecting you to type everything you see manually.  Copy/Paste is a great way to "gimp" your learning potential.  I found this out when learning the Python programming language.  Zed A. Shaw wrote a book about it and said the same thing, you must type in order to learn how to do this and commit it to memory!  Don't cheat yourself or your system out of best practices.


Baby steps:

I am a firm believer in the "sink or swim" approach.  It works very well in the United States Military as well as other professions.  I don't believe in handing out crutches.  Crutches are there to help you through rough spots until you can stand on your own.  I say "How can you stand if you never learned how?".  What this means is that, I will be teaching you how to stand on your own two feet, and then to walk, and ultimately run.  That said, I also believe in making life easier in every way possible.  I'll be including (eventually) scripts and other neat little tricks that will help you to be more efficient and actually enjoy managing your system.


Let's get down to business:

The first thing that every new Linux user needs to learn, is to not fear the command line interface (CLI).  The CLI is a powerful tool at your disposal.  If you consider that "The eyes are the windows to the soul." so to is the terminal the window to the system.  Think of it as a gateway into another world that few rarely see.  

Now that you are all hyped up to use the terminal, let's open one!  I will not try to guess which Linux distro or Desktop Environment (DE) or Window Manager (WM) that you are using, but almost all of them allow for this:

Alt+F2

Press that key combination, a "run" dialog box should have opened.  In it, type the word "xterm" without quotes and then hit "Enter" on your keyboard (Carriage Return).  If you think that xterm is ugly, it is.  Another route that you can take to opening a terminal depends on your DE/WM.  Click on your "kick-off" menu (the equivalent of Windows's 'Start' menu) and look under "Accessories", "System Tools", or "System".  You should see something that says "Terminal", "Konsole", "Console", or something similar.


Once you have a terminal opened, I want you to sit back and take a breath.  It can look pretty scary at first.  Now, your prompt may look a tad bit different than mine, but that's okay, our terminals do all of the same stuff.  

Basic CLI Navigation:

Now that you have a terminal opened and have taken that deep breath, it's time to learn some of the good stuff.  Right now you are using your terminal as a "user", that is, you are not root.  The way you can tell if you are root or not in almost every terminal is by knowing which symbol belongs to user, and which to root.  "$" is typically used to let you know that the user in the terminal is just that, a user.  No special privileges, no administrative permissions, nothing.  "#", AKA "Crunch", "Hash tag", "Pound Sign", "Number Sign" denotes "root".  If you are seeing this in your terminal, BE CAREFUL!  Root can destroy the system.  It is important to note that even veteran Linux users only use root permissions when absolutely necessary.  It helps to avoid heartache later and is just good practice.  This is one of the reasons that Linux is so secure, we only use that which has the power to destroy only when that power is warranted.  Now, on to your first command!

In your terminal, please type:

pwd

Press the "Enter" key.  You should now see something akin to:

(darthlukan@SithCouncil) pwd
/home/darthlukan
(darthlukan@SithCouncil) 

What that command does is "Print Working Directory".  It shows you in what folder you are currently "in" at the moment.  In Windows you clicked on Start>[username] and were taken to your personal folder that had "My Documents", "My Music", etc.  It was a pretty window with a bunch of folders in "Icon View".  The only difference between the terminal and Windows Explorer is that one is GUI and the other is not.  You can do all of the same stuff (and then some) in a terminal.  

The Linux file hierarchy: 

Before we move on to other fun commands, it's important to know what the Linux file hierarchy is.  The first thing to understand is that in Linux, everything is a file.  All files are organized into folders (and even these folders are files).  In Windows, you have "C:\", in Linux we have "/".  Everything follows "/".  Here's a basic rundown:

/ = Root directory (everything is in this folder)
../bin = Binaries/Programs
../boot = Files needed to boot up
../dev = Devices
../etc = Configuration files
../home = User home directories/personal folders
../lib 
../lib64 
../media = Mounted media devices
../mnt = Mounted devices
../opt = 
../proc = 
../root = root's directory (he/she doesn't keep their personal stuff in /home) 
../run 
../sbin = System Binaries/Programs
../sys 
../tmp = Temporary files and folders (overwritten/deleted at boot)
../usr = Userspace programs, configs, and other shared files.
../var 

I didn't describe all of the folders because they are outside of the scope of this tutorial. We'll touch on them another time.  Suffice it to say that those other folders are used for magical things that you will eventually learn how to do soon :)

Another thing that is important to know is:

~/ = the current user's home directory.

Anytime you see that symbol, it means "/home/username".  In fact let's try something really quick.  In your terminal, type the following:

cd /

Then press enter.  Now type:

pwd

Press enter again.  Now type:

ls <== (lowercase "L")

Press enter.

You should see something like this:

(darthlukan@SithCouncil) ls
./  
../  
bin/  
boot/  
.config/  
dev/  
etc/  
home/  
install-data/  
lib@  
lib32/  
lib64/  
media/  
mnt/  
opt/  
proc/  
root/  
run/  
sabayon/  
sbin/  
sys/  
tmp/  
usr/  
var/
(darthlukan@SithCouncil)

Now, go ahead and type:

cd ~/     then press enter, the type:

pwd      and press enter again.

(darthlukan@SithCouncil) cd ~/
(darthlukan@SithCouncil) pwd
/home/darthlukan
(darthlukan@SithCouncil) 

You have just learned about five new things.  I'll outline them below:

pwd: Prints the working directory.
cd: "Change Directory" moves you in and out of folders.
ls: I call it "looksie", let's you "look" inside directories.
~/: Means "/home".  Ever see those geek shirts that say: 

"There's no place like ~/" or "There's no place like 127.0.0.1" ?  It's true, there is no place like /home. :)

And finally:

/: Means root, everything comes after the root directory, it is all inside the root directory, it's where things begin.

Let's try that "cd" command again.

cd /usr/share    then press enter.

Now, let's have a "looksie" :)

ls     then press enter.

Lot's of stuff in there huh?  We'll touch on all of the things in this folder at a later time, for now it's not important.

Now type:

cd     and press enter.

pwd        press enter.

Holy smokes!  How on earth did you end up there?  You didn't even tell Linux to take you back home!  Actually, you did.  See, the cd command without an argument defaults to taking you back to your home directory.  If you ever want to get back home, just cd there :)

Let's make something with all of this happiness:

Now that you have a decent command of basic movement and view commands in the terminal, let's do something useful.  We're going to give your home directory some stuff to work with.  First thing is first, I want you to "ls" in your home directory and take note of any directories that are already there.  If the folders that I show you how to create are already there, don't type them in to the command that I'm about to give you.

mkdir Documents    (press enter)
mkdir Pictures         (press enter)
mkdir Documents/notes Documents/work Pictures/screenshots Pictures/personal Pictures/edit Music Music/edit Downloads Videos Videos/capture Personal Backups Share        (press enter)

See what I did there?  Sure, you can make directories (mkdir) one at a time, or you can make them all at once with one command.  Another way to have done the same thing is to:

mkdir Documenta/notes && mkdir Documents/work 

But really, we want to make life easier on ourselves here.  Now, go ahead and browse through those directories using "cd", "ls", and "pwd".  I'm assuming that you installed a modern Linux distribution with a modern GUI (DE/WM), go ahead and open your File Manager using your GUI and arrange it so that it is right next to your terminal.  I want you to practice navigating your way around inside of your home directory using the folders that we've just created.  Use your GUI File Manager to create folders and move around inside of them.  Then, use your terminal to create more folders, just as I showed you above, and get comfortable with the two interfaces.

It's important to note here: I don't like GUI tools and interfaces at all.  I put up with them, I accept them because there are billions of people on this planet who are not like me (thank goodness!).  I would rather spend my life in a terminal than to have to click on one single object.  That said, in order to be a good user who is well rounded and knowledgeable in their OS, you have to know both the terminal and the GUI.  Find which you prefer.  At first, the GUI will be most comfortable and familiar to you.  That is okay!  Get comfortable with it.  My hope is that even if you come to despise your terminal, you won't fear it and will even be comfortable with it.  Let's be honest with each other, programs crash.  I remember when the DE/WM's out there today would crash all of the time and take you back to a TTY console (that thing with all of the startup information that you booted into), thankfully, I was no stranger to the terminal back then, so it wasn't a big deal other than to have to fix some bug or breakage.  Nowadays, most of the modern DE/WM's out there are pretty solid, but it's always good to be prepared.  Get comfortable with both interfaces now and you won't think twice about them later.

I'm going to leave you to your first steps in basic navigation using the terminal for now.  In the next section we'll talk about renaming, copying, moving, and deleting folders as well as files.  Until then, here are your assignments:

Continue to practice your basic terminal navigation until you are comfortable, then practice some more.  For each command that you have learned, read the --help output (example: ls --help) and see if you understand what it says.  If you don't understand, use Google Search to see if you can find an explanation of all of those options.  Read some wiki articles on how to do some basic installation of software and how to keep your system up to date.  Make sure that these wiki articles are specific to your flavor of Linux so as to avoid any conflicting commands/programs and configuration issues.  Get comfortable with the basic uses of your new OS.

Until next time! 


2011-08-28

Linux: A Beginner's Guide, Introduction

Introduction:

I realized only a few moments ago that in all of the years that I have been using Linux I have taken for granted that I never had to learn Linux after years of using another OS.  I never started with my hand being held by my parents, some coding guru, or Bill Gates's team of developers.  So realistically, I have no concept of the difficulties that a user of what I like to refer to as that "lesser" OS has to go through in order to effectively migrate over to Linux.  When I say that I have no concept of these difficulties, I don't mean that I don't know what questions they have, I've spent enough time in IRC and on forums contributing my little bits of knowledge long enough to know the top questions.  What I mean is, I don't understand the frustration, the anxiety, or the overall feelings brought on by the stress of switching OSes.

This series of tutorials and reference sources is my way of taking the highlights of my twenty years (at the time of this post) of *NIX experience and giving some of it back to the community in a way that I believe has not quite been done.  Sure, wikis and how to's abound on the internet, but they either are written for system admins, developers, or masochists... or they don't go far enough and are written with the assumption that you are a 3 year old who doesn't know how to read much less bash your face into your keyboard.  It is my intent to rectify this mistake.

Required:


First, let's take a look at the things that you need to know before you venture off into "Linux Land".


  • Linux is not, is nothing like, and will never be, anything like Windows.
This is very important to understand! In the twenty years that I have been using IRC (Internet Relay Chat) the number one question that I am asked is, "Is Linux like Windows?"  In the sense that it's also an Operating System? Yes.  But this isn't what people mean when they ask this question, what they mean is; does it look the same? does it use .exe files? do I have to learn anything? and basically, is it automatic? I first was asked that last one when I was 10 years old and had just learned that you had to press the clutch down in a stick shift...

Linux can look the same (or damn close to it!), it can use some .exe files (with Wine), and there is a whole ton of stuff that you need to learn (especially if you want to do the first two things mentioned).  Linux can do damn near everything that Windows can do, some of it even better, but it does it all very differently.  Some of these differences the average user won't ever see, some are so blatantly obvious that the average Windows user takes one look and runs away screaming.  You may think that I'm exaggerating, but I kid you not, at the age of 9 I had a teacher run out of the computer lab screaming because she saw me typing in a terminal window (gotta love live floppy systems) and thought that I had destroyed a precious hard drive.

Know this, there is a learning curve.  This curve is made more drastic by the fact that you've spent, most likely, years using a completely different type of system targeted specifically for a completely different demographic of user.  In general (though this is not as true today) Linux is not targeted at anyone in particular. It is an absolutely open OS, it is meant to be whatever you want it to be.  This undoubtedly brings to mind some token geek sitting in his mother's basement hacking away in what looks to be some techno-punk command center while in his underwear.  But being completely open means that you can make it the way you want it.  If you want Linux to be automagic, you can make it that way.  If you want it to spit lines of code all across the screen, you can do it. If you want it to be more secure than it already is, there are settings and programs that you can modify to do that for you.  

  • Just as God is credited with being the all giving, all taking, all knowing, omnipresent, omnipotent, creator of all that is, has been, and will ever be; so to does Linux look at you. 
I hinted at this a little recently, but now I get to come out with it; Linux thinks that you are God with a capitol "G" ("R").  Linux looks at you with open arms and waits for the day when you will return to properly administer the system to perfection, destroy the matrix, free Flynn, and send the evil of the system on a one way ticket to being non-existent byte code.  All you have to do is log in as a particular user.  Root.

Root has got to be one of the most difficult things about Linux for any user to come to terms with.  To illustrate this point, I want you to do something.  Assuming that you are on a Windows system, and also assuming that you are using an Administrative account, I want you to navigate your way into C:\Windows\ and find KERNEL32.EXE.  You there? Good.  I want you to right-click on that file and then click "Delete".  I'll tell you what's going to happen, just in case you didn't know already; you're going to be met with a nasty dialog box and a scary sound that will tell you basically "Permission Denied".  You'll be able to click "Okay" and the box will go away and nothing will happen.  The file is still there.  Know why? Because there was some person at Microsoft who came up with an idea that involved protecting you from yourself.  You can't delete KERNEL32.EXE, even as an Admin.  There are ways to do it, but they are outside of the scope of at least this article :)

Now in Linux I can destroy my kernel.  In fact, I can take down my whole system in about 30 seconds with a single command: 

rm -rf /*

PLEASE NOTE: The above command while run as root will DESTROY your system! It is a mass deletion command. I will cover the use of "rm" in a later tutorial, for now, DON'T TOUCH IT!

That's right, Linux is so trusting of root, that it will allow you to sacrifice your system.  It's that willing to please you.  That is your right as root. You have the power to give and to take away.  Understand this now, let it sink in, take a day or two off if you need to and focus on just this one thing: Linux gives you absolute power over your system.  What does this mean to you? Everything!  It means that you should treat the running of your system as a privilege, that you should take your system seriously, and that you must treat your system as you would treat your first born child if he/she were born 4 months early and breathing through a tube.  Long-time Linux users love their systems, not love as in "OMG I LOVE Lady Gaga!" No, I mean:

"See, how she leans her cheek upon her hand! 
O that I were a glove upon that hand, 
that I might touch that cheek!"
                                         - William Shakespeare, Romeo and Juliet, 2.2

We Linux users love our systems this way because we are root.  We cannot go back to another OS that doesn't give us root once we have understood the responsibility and the power of root because we understand the responsibility and power of root.  We get that guilty feeling as if we had just betrayed our one true love to the ninth circle of hell.  

  • Google is a search engine.  It knows everything.
I want you to know something, it's a secret: I absolutely, positively, undoubtedly, always have, still do, and always will, LOVE to repeat myself.  NOT!  I cannot tell you how frustrating it is to answer the same question everyday, all day, for years even though there is a very simple answer (that is often-times blatantly obvious, even to a layman) that is readily available with a very simple search term in a very easy to use and common search engine.  Google is your friend, Google knows more about you than you do, it knows all, it has talked to alien life on other planets in other universes in the 10th dimension and beyond.  The answer is there, all that you have to do is enter the proper word(s).  In fact, you may have even found this blog using Google, which is convenient because this blog is hosted by Google.  Just as you look up video games that your kid might like for Christmas by using Google, so you can use Google to find answers to questions about Linux.  

Read.  Read.  Read.  Read.  Read!  Reading is one of the things that separates us from the other animals on this planet.  It is a great way to learn.  There are tons of docs, manuals, How To's, Tutorials, and various other things that tell you exactly what to type (or copy and paste) in order to fix your issue no matter what it is.  As fractured as the Linux community appears to be, the one thing that all Linux users have in common is that we read each others' work.  I'm a Sabayon Linux user, but I cannot tell you how many times I venture over to the Arch Linux Wiki to find out how to do something in Sabayon that might not be that well documented, out of date, or just plain non-existent on the Sabayon Wiki.  There are things that I do in FreeBSD that I go to the Gentoo Wiki for, and FreeBSD isn't even Linux!  Documentation can save your life and your system, especially well written documentation.  Searching on Google is a free tool that you have at your disposal.  Use it to search for answers to your questions first, and you will be that much closer to being considered a truly competent user of any OS, but especially Linux.

  • Linux is supported by users.
Some people don't understand this statement, but it's on every single Linux site that I have ever seen.  Linux is supported by the users who use it.  Regular people.  My kids are six and seven years old, when asked by a neighbor of mine what I was doing, my daughter quickly chimed in "He's installing stuff."  "How do you know?" my neighbor asked.  "Because silly, his terminal is red, that means he's root, and root installs stuff!" was my daughter's answer before running off to play with my neighbor's daughter.  My daughter just taught an adult a very basic concept, "Root has power".  She just provided support to someone.  Now that is a very simple description of what support by users means, but both of my children started on Linux from the time they were old enough to know that buttons were things that you pressed (age 3 is when they sat on my lap and learned to type their usernames on my then awesome sauce laptop running Gentoo).

Sure, some of these "users" are programmers, developers, hackers, IT professionals, system administrators for large companies, and all around geniuses.  But they are also kids, teenagers, students, starving artists, musicians, high school dropouts, and average joes who want to help you.  You know what the best part is? They will provide ground up support to you for free.  I was twelve years old when I was sitting in IRC talking to some person who I met on the internet about their botched Debian Linux install.  I was determined to keep them from having to do a clean re-install of their OS because they said they heard that if you broke Linux you didn't always have to re-install it like with Windows (or Mac OS).  I sat there for 10 hours on a Saturday night walking this person through every single step of how to get a new kernel installed manually.  Back then, there was no binary kernel garbage that we have today.  Oh no! This was old school; downloading source packages (tarballs), unpacking to the directory, verifying md5sums, make, make menuconfig, going through each and every menu (there are a TON), selecting the appropriate items for his system, saving the config, make deps, make install, tarring up the system map, tarring up the kernel, tarring up the initial ram disk, moving it all to the boot partition, configuring LILO, configuring modules and their dependencies, re-writing shell scripts, re-writing config files, re-mapping his hard drives, re-configuring his network settings, adjusting his text editor defaults, and installing a graphical user interface (GUI).  

You know what was really funny about that?  He asked me if my username was my real name, I said that part of it was.  He said that he recognized it from somewhere, I asked "where?", he said from work.  Turns out, I knew the guy.  He was the IT guy at my mom's office (she was a translator) and I had just helped him fix what his team hadn't been able to fix in a week, which was a big deal because this particular computer that I had helped fix was the master backup server for all of the client disk image backups on their network.  Because we were able to save him from a re-install, he now had the chance to keep all of the data that he would have potentially lost (all of the disk image backups for the company computers).  My wife can attest to the fact that I spend a lot of time on my computer, sometimes days at a time with no sleep.  Guess where I am just like so many other millions of Linux users; that's right, in IRC answering questions (among other things).  Keep that in mind as you learn to use Linux.  

  • Linux is a community.

This is another hard one for people to grasp.  Linux is a community, a family, a close-knit group of users.  We may use different distributions, have different political views, and various other idiosyncrasies, but we have one thing in common: we are all using Linux.  It's like when I was in the Army and had to work with various groups from Navy  S.E.A.L. teams to Marine Force Recon and Air Force Para-Rescue.  You get us all together in a bar and there is going to be one helluva drunken brawl with insults being thrown around as well as broken bottles.  But get us out on a mission together and you would swear that we were all born from the same womb.  We'd die for each other without thinking twice and without any regret.  It's very similar between Linux users.  We each have our favorite distribution, package manager, system management techniques, etc.  We each give each other crap in our own ways (although we all generally agree that making fun of Ubuntu users is really fun :P  ) but you get us in IRC where one in our fold needs help and just watch as Gentooers, Arch users, Sabayon users, Fedora users, and even Ubuntu and Mint fanboys come together to tackle someone's issue.  One of us will be researching, another going through diagnostics, the other checking config files, another trawling Google for how to fix the issue in a GUI, another taking a portion of a Python program and converting it into a usable BASH script to fit the issue, and so on.  It is a thing of beauty!  

When you become a Linux user, you are joining a brother/sisterhood of users who believe in their OS.  They hold themselves and their software to a higher standard, but retain their humility.  To join the ranks of the Linux users you have to understand the community.  The community is there to help, to progress, to advance, to nurture, and to keep the community safe.  It is ever-evolving, ever growing, and ever sustaining itself.  You are joining a collective of life minded individuals who in their own ways are working to make the world a better place.  We promote the indie developer, we contribute code to projects, we are always learning, always refining, always doing something that helps as many people as possible.  Once you see the Linux community in action, you can't help but want to be a part of it.  I am 27 years old and have been using Linux since that fateful day when Linus Torvalds kernel was released to the public on a computer that my mother handed to me with no instruction except "Learn to type."  To this day I am amazed at the wonderful things that the community does every single day.  I highly recommend that you start reading some forums, some wiki articles, and hop into some Linux distro IRC channels while you are learning about Linux.  


You are still here:

If you are still reading this article Bravo!  You are ready to take your first steps into learning the basics of how to use Linux.  While I'm writing up the next article, here is your assignment: Use Google to look up various Linux distributions.  Find a distro that fits your personality.  Back when Linux first started to branch into distributions we called them "Flavors".  Find your flavor.  Look for something that looks the way that you want it to.  Something that when you read the "What is ?" page you agree with.  You may be the type of person who likes absolute control, who values function over form, aesthetics over all else, simplicity, elegance, etc.  Find YOUR flavor, if you are feeling brave, boot it up on the CD/DVD/USB and play with it live.  If you are feeling really brave, install it to a spare partition.  Exceptionally brave? Install it OVER your Windows install and dive in (backup first, not backing up does not make it into "brave", besides, it's good and safe admin practice).  Read about what IRC is and join your distro's channel.  Read their forums, their wiki articles, blogs, etc.  Do your research!  This is a big step, which distro you choose will define you to the community and to yourself.  It can be the difference between getting a successful start or being done before you began.

I will not do as other blogs and list distros for you and give you my opinions of them.  I take choosing a Linux distro as being a very important and very personal decision.  It's kinda like asking a girl out for the first time.  You have to practice what you are going to say, what you're going to where, which cologne to wear, and where on earth you plan on taking her out to.  You're about to choose your date for at least the next month.  I say the next month because when you pick a distro, you don't really know it until you've dated it for a while.  You have to use it, maintain it, break it, and make up with it before you really know whether you want to stick with it or move on.  As with women (and men), there are plenty of (Linux) fish in the sea.  Choose carefully where you start.  Everyone remembers their first kiss, some of us remember it fondly, some people wish that they could forget about it.  Choosing your flavor is the same thing!  Your first kiss with Linux will be remembered either fondly, or regretfully.  You decide.

Until next time!

2011-08-21

For the love of Linux...

I have been reading a few other blogs and news articles lately regarding the state of the Linux Desktop, and even got into a discussion on Google+ that touched on a few points.  Let's take a look at some of the usual talking points:


  • Hardware support on Linux is behind Windows and Mac OSX
  • Gaming
  • Office Apps, LibreOffice/OpenOffice are just not there yet
  • Windows Apps/.exe support sucks (Wine issues)
  • Nobody likes the command line (Nobody likes to type)
  • No GUI tools for system management (Always have to default back to a terminal)
  • Graphics Hardware Support SUX!
I'll briefly talk about each point, please understand this is coming from someone who grew up using UNIX, Minix, the BSDs, and Linux.  So I'm biased.

Hardware support:

This one requires a bit of a history lesson to get to the actual meat of, but nobody wants history outside of high school except historians, so this is what I have to say:

Hardware manufacturers, due to many reasons, don't feel that Linux is profitable enough for them to spend the time (and ultimately, money) on building drivers.  Mac OSX hardware support is great, if you buy Mac hardware (speaking specifically if you purchase Mac peripherals).  Also, keep in mind this, Linux hardware support is mostly provided by the community.  There is nobody sitting back in dev-land on the Linux side getting paid to build these drivers (if there are, they are few and far between and not being paid nearly enough).  That said, hardware support is actually pretty damn decent on Linux.  Barring a few small issues, I can run 4 ATI Radeon HD6970s on multiple displays and have a damn usable desktop experience.  I use the proprietary drivers from ATI because of a few performance issues and the ability to control my fan/pump speeds via command line.  If video cards and obscure wifi cards are the only things that Linux needs to catch up on, we're doing DAMN good! Even Windows requires you to download a driver for my video cards, and obscure wifi cards usually have a CD-ROM with their driver software on it, so why would you expect that in Linux it's automagically recognized?

Gaming:

I laugh at this point as I watch my wife play WoW in Wine under Arch Linux and I'm ripping people apart with my daughter playing Xonotic in a LAN game.  Gaming should really be renamed "Windows Games" because let's face it, that's what people want.  To this I say, check WineHQ to see what the support is like for your game because until that game developer learns to use opengl and writes a Linux client installer, you're SOL.  OR you could go out looking for games that are native to Linux that fall within the genre you are looking for.  If you're an FPS nut, checkout Xonotic, RedEclipse, Enemy Territory, Urban Terror, and many others.  RTS? Wesnoth, Savage2.  MMORPG? Planeshift, is damn good and Second Life is even supported on Linux.  The point is, it's not impossible, you just have to look around.  A lot of times it's just a matter of a few files being edited and you're in the clear.  For some games however, you just can't win.  For that you need to ask if swapping your OS out is worth playing that game.  Gotta love choices.

Office Apps:

LibreOffice is the big dog so far as office suites go.  If you need something like MS Project, check out GanttProject in google.  If all you need is a spreadsheet program, a document writer, and a power point type app, then LibreOffice is just fine and even supports running Office 2010 file extensions.

Windows App (Wine) support:

I'm going to be very clear, I'm not trying to be offensive but: THE PROGRAM WAS DESIGNED FOR A WHOLE OTHER OS! WHAT DO YOU EXPECT?  That's like me complaining that I can't install a .deb or .rpm on a Windows machine.  ONLY Linux offers you at least the CHANCE to have something work on your system or provides comparable alternatives FOR FREE.  I know that Apple has their own version of software that attempts to allow cross-compatibility, but let's be honest, it works no better than Wine and it's got Apple backing it up with tons of cash.

Nobody Likes the CLI:

Really? Last I checked there were quite a few users who did.  In fact, Windows still has good old CMD.exe and Windows PowerShell (ever try to fix the BOOTMGR missing error with a GUI?), Mac OSX has a terminal (it's in there, trust me) and so does every other OS that's more obscure than Linux.  I don't much like clicking all over the place, so half the time, I don't even pick up the mouse unless I'm playing a game (I use the Awesome Window Manager, so EVERYTHING is bound to keys).  To people who don't like to type, I say this: stop lying.  You're the same person who spends hours typing up BS and other garbage on Twitter and Facebook all day, and probably writes chain mail and sends them in email all over the interwebz.  You love to type, so what does it matter if in order to fix a little hiccup you need to crack open a terminal and show someone the output of "lspci" or "cat /etc/fstab" ?  The argument against the CLI is moot.

No GUI tools for system management:

Um, "systemsettings" in KDE would like to have a word with you, as would gparted, KPartitionManager, System Monitor, Gedit, Dolphin, Nautilus, Metacity (RIP), PCManFM, Thunar, Synaptic, Magneto/Sulfur, PortHole, etc.  I'll give you a hint, the reason why Linux users default to using a terminal for critical system tasks, is because it's easier to tell a Windows user who is trying out Linux to enter in ONE command that will fix everything, than it is to guide them through clicking on a GUI.  Let's be honest, most Windows users don't even know how to adjust basic system settings in the Windows GUI that they are "comfortable" with and now you want a Linux user to guide you through a GUI that you have no concept of? Get real!

Graphics hardware support:

I touched on this a little bit already in another section, but it's worth noting again: Graphics support is getting better everyday.  I use Sabayon Linux and Arch Linux on a daily basis, I use the testing branches of each, almost daily there are updates that I test out having something to do with making 3D hardware support better. These people don't get paid to do this stuff, they are working in their spare time on these projects and the open source drivers are pretty damn good!

Now that I've berated you through all of those common points (hopefully you don't feel too beat up), let's move on to the one thing that NOBODY likes to talk about: Package Management.

If you're a Windows user, then you have no concept of this, even though you do it manually almost every day. In a nutshell, package management is installing and uninstalling software programs.  On Windows you go to some site, download a .exe (or unzip a .exe), double-click it, click "Next" until you get to a "Finish" button, go to your start menu, hover over "All Programs", find your app, click on it, and enjoy life.  Guess what, you just did in a multitude of steps what a Linux user does in 3.  In Linux it's: open terminal, enter package manager install command (equo install in Sabayon Linux), type in the name of the package/program once the install is finished.  BAM!  Done.  No muss, no fuss.  Quick and to the point.

So why is this an issue? There are A METRIC F**K-TON of Linux distros out there (mostly *buntu based, but that's for another article).  Guess what, each distro has its own version/way of managing packages.  Let's go through a small list:

Debian/*buntu based: .deb
apt-get install foo
dpkg -stuff foo

Gentoo: .tgz, .tar.gz, .tar.bz2
emerge foo

Sabayon: .tgz, .tar.gz, .tar.bz2
equo install foo _or_ emerge foo

Arch: PKGBUILD, pkg.tar.gz
pacman -S foo
makepkg -stuff foo.pkg.tar.gz

RedHat/Fedora: .rpm
yum -stuff foo

SuSE: .rpm
YaST foo
rpm -i foo
yum -stuff foo

See what I'm getting at?  Let's not forget the good old reliable: 
./configure
make
make install

All Linux distros can handle regular "make install" procedures (AKA, building from source packages).  So what's the big deal?  The big deal is this, we have all of these great distros, and all of these great tools for managing packages, but we don't have a STANDARD package manager.  Sure, each of us using Linux can install most anything we want with a few keystrokes, but what happens to a Windows user who is just trying out Linux (probably Ubuntu) and realizes that there is some program that they want but it's in another repo? Or worse, Ubuntu doesn't have a .deb for it?  They are SOL!  They are going to possibly see a how to on the web that shows them how to build that package, but then we're back at the fear of the CLI again.  They run back to Windows crying in a corner with their thumbs in their mouths faster than you can say "WTF!?!" 

Now, I don't like the average Windows user any more than they want me to describe the average Windows user in my terms (they're pretty harsh terms), but unfortunately, this is the market that we have to cater to if we expect what all of us in Linux land want: Our favorite OS having REAL support for all of the fun things that we want it to have real support for.  What we need is a standard package manager.  Unfortunately for all of us avid Gentooers out there, that means a binary distro (if you don't know what that means, it's not important enough to you for me to explain it here, just suffice it to say that there are Linux users out there who by their existence define the word "Masochist").  We need a powerful package manager (sorry apt-get) that's simple enough for the layman so that it can be easily wrapped into a GUI, but extensive enough for the power user.  We need a standard archive extension for these packages, we need actively maintained repos and branches, and we need a whole TON of packages.  If we can get all of the big distros to agree on a package management scheme, a standardized base system, and a GUI for said package manager, we will be one hell of a step closer to making life easier for those users that we really don't want to answer questions for in IRC.

Linux has made some huge strides in becoming an awesome desktop OS.  Many, many, many, many, users all over the world are using various Linux distros on a daily basis as their primary OS of choice with tons of different interfaces on even more variations of hardware, using almost limitless free software.  This is a GREAT and POWERFUL thing!  But until the community as a whole can come up with a broader standard to build off of (not just, "Linux kernel, check") we are still going to be regarded by the lesser users out there as using the "Hobby OS".  I've been using *NIX based OSes since I was 7 years old.  That's a little over 20 years.  I didn't use a Windows machine until I was forced to in High School for a computer class, and then again when my girlfriend of the time (now my wife and Arch Linux user) asked me to fix her mother's Windows 98 PC.  Since then I've used every version of Windows out there (I even went out and setup virtual machines for Windows 3.0 just to do some research) and have always stuck with Linux in the end.  That's love right there.  Ask a Windows user (the typical one) why they love Windows, they won't have an answer for you (unless they don't understand the question, at which point they'll say, 'I love firefox and facebook.')  

Windows users (the typical ones) don't "love" their OS, they use it.  They have a very impersonal relationship with their PCs.  They click on the screen and expect a certain action.  Linux users love their OS.  They carefully install it, maintain it, optimize it, customize it, dress it up in cool graphics, slap some compositing on it, cry with it when some script they wrote goes wrong, and take the utmost care of it.  We have to find a way to put that into a Windows user who thinks that they might want to try this OS that "never" get's viruses or malware.  Let's be honest with each other, not getting viruses and being a "free" OS will only get you so far.  You've got to make them love you before they'll put aside that other OS and hop in bed with what is sure to be the ride of their life, if they can install the software easily with a mouse.

/rant

2011-08-17

Really America? Really!?!

James Rainey on social media and civil unrest - latimes.com

The above referenced article, while not unique in its observations of the current failed state of our government, adds some sobering thought to the debate of "right" and "wrong".

As many of my friends and family know, I served in the United States Army as an Infantry NCO for the latter portion of my contract. I mention this here, not to bolster any pride in myself or to "show off", but to note that despite many angry words on my part, I do love at least the idea of this country and was willing to lay down my own life for it.

That said, I am ashamed of my government! Our founding fathers ran away from England for what they believed (or so our history books tell us in public education). These men and women left their homes to find something better and to leave tyrannical rule behind them. Our fathers before us Set down rules, ratified a constitution, and constructed a new government in rebellion. I want you to remember that word; "Rebellion". It's an important word, it is the reason our founding fathers did what they did so many years ago, rebellion is what this country was founded on. It is also how we will take this country back!

What our government officials only half-realize is that we WILL take back our country from them. It is only a matter of time. Currently there are several plans that are actively spoken of either in the media or in other forums. One of which is to vote out our current government slowly. This has the problem of voting in politicians from the same stock as those voted out. IE. Rich men and women who fit the current rules for "serving" in government. The second major opinion on how our country would be returned to its people is far more violent. Suffice it to say, the right to bear arms comes into play, and a full on coup is not out of the question.

We have some very basic rights at the core of all of the lawyer dribble that often confuses what our constitution actually says. We have the right to be safe in our country, the right to speak our mind civily, the right to arm ourselves and retaliate if attacked (as a state/country), the right to pursue happiness (have a job, home, assets, etc), the right to be free men and women able to vote and earn on the sweat of our own backs, and the right to remove enemies, both foreign and domestic, from within our borders. These are very simple things that all people ask for. It does not take a democracy, czar, king, emperor, prime minister, or any other major leader to provide these things, it takes PEOPLE!

Our founding fathers rebelled against the "man" of the time, that is, the British Government (in general, there are more specifics than that). They REBELLED! They FOUGHT a REVOLUTION and WON! They were ORDINARY people. There was NOTHING SPECIAL about them. They were not geniuses, they were not super-human mutants, they were not "divine", they were people who had had enough.

Our government is toying with the idea of closing down social media. Let me explain a little of what that is. Social Media includes: Text messages (IM, "Texting", IRC, and other forms of instant chat), Status based media (Twitter, Facebook, G+, identi.ca), Blogs (self-explanatory), Online news outlets (as these are typically in "Blog" format), Web Forums (again, self-explanatory), and any other online venue in which a person may voice their OPINION.

Think about that for a moment. I'm sure that there are studies out there that can give more accuracy in their assumptions, but let's just say that 80% of the US population is online, and 80% of those people use social media in some form of fashion at least once per day. Now think about how you communicate with your family daily. Cell phone? Facebook, Twitter, Google+, IM chats, IRC, and Texting? The government can shut all of those things down. If you only know how to read your email then this isn't a big deal to you, but if you convey the latest happenings at your job via a status update to those you know, or use those status updates to plan events, moves, outings, etc. Then this is a big deal.

During my time in the Infantry I learned something consistently on every mission that I was ever a part of. Communication is key. Every tactician knows that the first thing you do to your enemy is to cut off all communications before you strike. This ensures that your enemy cannot call for aid when you attack, and ensures the odds stay in your favor. I see the proposed actions of our government as a precursor to the war. They are going to cut off our communications, then our power and infrastructure, then they will attack at the base of command (major metro areas). Once the heads are chopped off, the bodies fall lifeless. Make no mistake ladies and gentlemen, we are at war. The only difference between this war and those fought on battlefields in far off places, is that this war is at home, and the government is using YOU as their weapon against YOU. Think about that the next time you go to the polls, think about it the next time you send a text to your mother or father letting them know that you won't make it for dinner, and think about that the next time you see a funny picture of a kitteh who wants cheezburgah shared by a friend over some medium listed above. Our enemy fights us from within, it is high time that we stand up for ourselves and strike back. Let me clue you in, do you think the president knows how to setup his own Outlook? No! Do you think the politicians know how to use secure communications? Nope. Do you think that our world leaders know how to do ANY of the things that you and I do on a daily basis on our computers? NO! They have "people" that do these things for them. Obama doesn't setup his own Twitter account, some aide did that for him and then showed him how to hit the "tweet" button. Our government officials fear that which they do not understand. They also know that they cannot do it on their own. What do you think would happen to a few high ranking government official twitter and Facebook accounts if the people who actually run them decided that enough was enough? What do you think would happen if the electronic security administrator at the White House decided that he didn't want to be included in the social media blackout? Do you think that it would be hard to hit a power button? Not so much. Wars are not always fought with guns, sometimes, they are fought from a remote location using nothing more than a keyboard and a mouse.

Personally, I hope "Anonymous" widens their reach and does not stop at things like Facebook who sell off our private information. I hope that they go after the heart of the problem, our government! I may not agree with everything that everyone does, but for the greater good, Anonymous are patriots. Not just for the U.S., but for the population of the world who are unable to protect themselves. A patriot does not always follow the laws set forth by their country, sometimes they go against the law FOR their country. That is what we must be willing to do. If not, our enemies have already won and we should sit in the silence that they want us to sit in.