...and I'll code if I want to, code if I want to...

July 17th 1988:

I don't like to put too much stock into birthdays, but they are fun. I especially like that mine is in the summer, so it's as far away from Christmas and New Years which helps to get good gifts. It's also about midway through the year which makes it a perfect time for Mid-Year's resolutions and to refresh New Year's Resolutions. Without sounding like a yoga instructor, it's a great time to reflect and realign. For example, I started my "43 Things" on my birthday in 2007.


My summer project was to learn the Ruby programming language and the Ruby on Rails framework.
I started by reading Programming Ruby: The Pragmatic Programmer's Guide (aka "The Pickaxe" after its book cover). Rubyists either hate or love this book. I just loved its price: the 1.8 (2001) version is provided free online by the publishers under the Open Publication License.

From there I went to Half.com, a sub-site of eBay for books, music, and movies. I found an amazing deal on O'Reilly Ruby books. 

That's (30 worth of Ruby books for {0! (after shipping)

Right now I'm halfway through The Ruby Programming Language (aka "The hummingbird book").


The ruby books were a great deal, but my real gift to myself is a new solid state drive for my Thinkpad X200s

Ever since I started fully respecting copyright and intellectual property (New Year's Resolution) the amount of disk space I need has dropped by order of magnitude. Now that I use GNU/Linux more than Windows it's dropped even more. Nearly every distro of Linux can sit comfortably within 4 GB and Windows 7 needs 16 GB. I also have a 1TB external hard drive where all my programs, iso
files, and backups go and where my music would go if I had any.

Getting a SSD with around 128GB of space would have been nice but hopefully I won't need it and I really didn't want to spend that much.

I'm having it shipped back home and will pick it up next week when I'm in town.

Mid-Year's Resolution: Stop Distro-hopping
Today I just burned by 50th Linux disc (the first being Ubuntu 7.04). In an attempt to reduce the amount of different distributions I try and never actually use, I'm only going to use Debian and first derivatives of Debian (e.g. CrunchBang, Sidux, Ubuntu. but not Linux Mint, Peppermint, etc.). This cuts out a significant portion of distributions (Fedora/CentOS, Mandriva, Gentoo, Slackware, Arch) but leaves the most stable and most popular ones.

Along those lines I've been using CrunchBang Linux and am in love. The most recent version (10alpha2 "Statler)  is based on Debian Testing "Squeeze" with their own custom package source, drivers, codecs, and customizations. It comes in Openbox and XFCE versions, making it very light-weight and versatile. I'm using the Openbox version and it's awesome, freaking awesome. It's so fast, usable, and even as an alpha it's more stable than any other
distro I've used. It already boots and shutdowns in seconds, I can't imagine how fast it will be running from my new SSD.

I know I promised a post about MW2. It will happen. Maybe.

Happy Hacking!


Ubuntu 10.04 "Mac-style" Buttons Justified

"OOOOH New long-term support Ubuntu!" Download...burn...install...then...

The brown is gone: YAY!
Replaced it with purple: Cool, I guess all the other colors have been taken.
And moved the minimize, maximize, close buttons to the left: WOAH, wait a minute...

This is where the Mac-Fanboys cry copycat! ("Leopard" "Lynx") and the Mac-Fanboy-Haters pull their hair out.

I've discovered an explanation and a solution, all in one program:

Ubuntu Tweak

What is it? It's AWESOME.
Everything that involves tweaking your system to just how you want it becomes centered in one simple location. These are just a few of my favorite things it does:

  • Application Center: Shows the top downloaded programs from the Software Center
  • Package Cleaner: Wash behind your ears after you update your kernel
  • Login Settings: Change the login wallpaper and even the Ubuntu icon
  • Computer Details: hostname, kernel version, GNOME version, CPU, memory, etc.
  • Security Related: This is what I would use to make a linux kiosk
But for the purpose of this post, I'm going to focus on Compiz Settings and Window Manager Settings.

Change from left to right

To change the buttons from left to right, the screenshot below should explain:


Why to keep buttons on the left
I realized the benefit to having the close, minimize, maximize buttons on the left when I used Compiz Settings to set corners of my screen to do show my desktop, show all open windows, and show all workspaces. 
More screenshots!

Compiz Settings

"Expose" for Linux

Linux had workspaces before Spaces were cool
Having the window buttons in the top left, along with the Main Menu, allows for the other three corners of the screen to be used for these cool effects. When I changed the buttons to be on the right, nearly every time I went to close a window, whatever effect was assigned to that corner would turn on. After doing this a few times, I realized this is a practical reason for having Mac-style buttons. 

Next Blog...Modern Warfare 2!
So two blogs about pretty Lucid Lynx is enough. I plan on my next blog being about Call of Duty: Modern Warfare 2. Here's a phone-camera-quality preview:

I was going for a nuke and was just one kill away.

EDIT (2010/07/05 11:59): Now all links open in new windows and comments show below posts. Thanks Nick.

Happy Hacking!


Ubuntu 10.04 LTS x86_64 "Lucid Lynx" Review

I finally finished this semester this morning with an Art Appreciation final. Now that I'm completely free to do whatever, I decided to get a real blog entry in here.

I've had a tumultuous experience with GNU/Linux. I first tried it out on my Macbook (first gen, Intel Core Duo) with Ubuntu 7.04. After nothing worked, and being a general newbie, I didn't mess with it again until the end of last year. I was taking System Programming (essentially Unix I) and was enjoying learning the Unix system. I soon got tired of SSH'ing into our ancient Solaris 9 machines and decided to try GNU/Linux all over again.

Cue obligatory xkcd comic:

Without going into too much detail about how I downloaded and tried more distributions in a month than any person should ever in their life, I'll give the following things I got out of it:
  • Ubuntu 9.04: almost too easy (apt-get hold-my-hand), hate the brown
  • Fedora 11: nice...if bluetooth worked
  • openSUSE 11: (see Fedora)
  • Debian 5.0.3: ...I need how many discs?
  • Slackware 13: Just when I thought I had reached Unix Nirvana, I tried connected to our university's WPA2 network. I still have nightmares.
I learned a lot from the experience, but thankfully I ran out of blank DVDs before I got to other distros or this never would have ended. There was also a $30 Windows 7 Pro offer for anyone with an @*.edu email that I jumped on.  Even though I took Operating Systems this spring semester (essentially Unix II), I stuck with SSH and lived in Windows-bliss.

Now the open-source itch got stirred up again and I decided to give GNU/Linux another go.

(The actual review begins here)

Ubuntu. The beginner's distro. The most popular desktop-oriented distro. Somehow these two traits are its boon among newbies and bane among seasoned users. I usually avoided Ubuntu for the more "advanced" versions of Linux, but I also wanted key hardware to work "out of the box" (i.e. wireless, external monitor, bluetooth mouse, most hotkeys).

When I saw that 10.04 LTS (long-term support) was released, I decided to throw these old opinions out and give it another shot.

I'm glad I did.

My system:
  • Lenovo Thinkpad X200s
  • Intel Core 2 Duo L9400 1.86 GHz
  • 4GB DDR3 RAM
  • 160GB 5400RPM (this would be the biggest bottleneck)
The Core 2 Duo and 4GB RAM is why I use the 64-bit version; using a 64-bit version of Linux has never affected anything but Flash installation.

First Impressions

I got tired of wasting discs so I decided to use UNetbootin and just put the iso on a 1GB flash drive that's lasted me forever. UNetbootin is so easy to use, it can even download the iso for you if you haven't already.
I recommend it even more because booting to the LiveCD from a flash drive is the fastest I've ever seen anything boot. Ubuntu has been working on speeding up their boot time and it shows.

Now, let's put it out there: Mac OS X. It's no secret that Mac and Windows have been going back and forth copying GUI features. It's also no secret that Linux has taken heavy cues from Windows as well. With Ubuntu 10.04, Linux is beginning to look toward the Big Cats for inspiration.  This is nothing new, and I'm not criticizing it. In fact, I like it. Not because it looks like Mac and I'm some huge fanboy, but because it works. Besides, the single biggest change is moving the minimize, maximize, and close buttons to the top left. Big deal.

The second thing you'll notice is...no more brown! Oh god how I hated the brown. The eggplant purple takes a little while to get used to, but I'm glad to see that Ubuntu is trying new things out. Even if it's just choosing purple over brown or blue, it shows a willingness to try things out to find out what users really like (remember users? the reason we write all this software in the first place).

I highly anticipate the new look will be heavily contested and will likely not last until the next release, but as long as the LTS lasts, I think this will be my UI of choice.

Initial Setup

I specifically got the Thinkpad X200s because it was the smallest screen (12.1") with 1440x900 resolution. I have good eyes (thanks to contacts) and so I try to make every pixel on my screen count. I also spend a lot of time of my computer so keyboard shortcuts are a lifesaver, or at least a time-saver.

These two things are why I choose GNOME over KDE. Smaller icons, smaller panels, easy customizable keyboard shortcuts all speak to me.

I won't go into boring details but here's how my desktop looks (click to enlarge):

Did I mention I like minimalism?
I got the wallpaper from InterfaceLIFT because I think the dark sky, and purple-orange sunset are perfect for Ubuntu's new color scheme.

A few final words on setting up:
  • Use Adobe Flash, not swfdec or gnash. They just don't work consistently enough.
  • Watch out for runaway processes. I had some vnc process that made my cpu run so hot it brought back memories of my Macbook.

Developers, Developers, Developers...

sudo apt-get install build-essentials
^ That command took too long to find, but there it is for you

I also have begun learning to develop for the Android platform. However, all the tutorials on setting up Ubuntu for Android development are outdated (i.e. 9.04) so expect a short blog very soon on setting that up. Once I do, I'll link here.


Why does the Clock panel always crash when I add a first location?

Ok so GIMP isn't default anymore, so what? sudo apt-get install gimp
Besides, 99% of the time, all I want to do is crop a picture. I like F-Spot

 Skype doesn't like the new GUI (or vice-versa) by default:

Go to Options > General > Choose Style: GTK+
and now...


Now Ubuntu is up against some heavy contenders (Snow Leopard and Windows 7), it's obviously following the old adages of "adapt or die" and "good artists copy, great artists steal." Users may dislike the latter, but operating systems that don't pick up on what's working get left behind.

I've tried going all-in with Linux before with Slackware and Fedora, but neither lasted more than a week. This just may be the first that will last longer, but only time will tell.

For a more extensive (better) review, please check out Ars Technica.

Happy Hacking!


"Abstract" and Introduction

In (mock) accordance with the IEEE written format, I will begin with an abstract:

This blog will contain entries regarding computer science, electrical engineering, and video games from the perspective of an undergraduate senior with a year left of college and way too much time on his hands. The desire to begin this blog was spurred by the enjoyment of other topical blogs, particularly my partner's. My intention at the moment is to simply write consistently.

Enough tounge-in-cheek...I've been meaning to begin a blog for quite some time. Naturally, all the typical excuses for not starting a project came up: no goal, no spare time, no audience. Eventually the answers to each of those came to me.

"No goal." As I thought about my "goal" I decided to write about what I know and enjoy: my majors and video games. By day I'm an undergraduate senior at Texas Tech University dual-majoring in electrical engineering and computer science. By night, I'm practically obsessed with Call of Duty: Modern Warfare 2. In short, I spend an inordinate amount of time looking at LCD screens. Based on this, I decided on not writing about Keynesian economics and about what I do (and love to do) every day.

My secondary goal is to actually keep this blog up. I have a Da Vinci-inspired habit of not completing projects. In fact, there are a couple of single-entry blogs I've started before. Hopefully this won't be a repeat performance.

"No free time." How often do we all use this excuse for something we just really would rather not do? It should really be "I don't want to make free time for it." I can find hours throughout the week to play CoD; hopefully I'll do the same for writing about it. Also, as I should only have a year left of undergrad left, with only about 9 hours of classes each semester, there should be plenty of free time. I would love to just take 18 hours and be done, but our lovely computer science class scheduling prevents this (which I will post/rant about at some point).

"No audience." I'm not the only person with these interests. Unlike cross-stitching, the people with these interests are the ones most likely to discover my blog online. Only as I make more entries and see where it goes will I get regular readers.

Enough hand-waving, here are a few concrete things I intend to talk about:

  • GNU/Linux
    • e.g.  Making the switch or Putting CS to use
  • Small & medium-size hardware projects
    • Everyone loves Arduino. I'm also looking into getting an Android phone.
  • Call of Duty and Halo
    • I'm looking into getting a capture card to make montage and commentary videos.
    • Halo Reach Beta! aka Spam RAGs Beta! (RAG=random-a** grenade) 

Happy Hacking!