thraxil.org:

How I set up my Ubuntu Laptop

I finally got around to putting an SSD drive in my laptop this weekend. I have a nice Lenovo Thinkpad T500 that I've used for the last year and a half or so. It's pretty much just a sit on the couch and code or browse the web machine. I don't use it for anything really heavy duty or media related so I don't actually use much storage. That meant I could get away with putting a cheap 60GB SSD in it, which is more than enough storage for my needs on that machine.

First of all, yes, I think the SSD was a worthwhile improvement. For general web browsing and coding, it's not really noticeably faster. The bottleneck for web stuff is still the speed of the internet connection. Compiling is a little faster, but not by a lot. Starting applications is a little faster, but really, I tend to just leave applications open all the time so it's not saving me a lot there. Where the SSD is noticeable is booting and waking the laptop up from sleep. Waking it from sleep is now completely instantaneous. Booting takes 12 seconds to go from pushing the power button to having a usable desktop. I didn't measure it pre-SSD, but it used to be well over a minute. It's not a life changing improvement, but it does make me smile every time. If I traveled more with my laptop, I'd probably appreciate it even more.

Since switching to the SSD involved doing a completely fresh Ubuntu installation, this time around I took care to document everything I did to convert the laptop from a default Ubuntu 11.04 to how I prefer to have it set up. I thought it might be interesting to share my setup here.

I use the wonderful XMonad tiling window manager instead of Gnome or Unity. I've been using a tiling window manager of some sort since 2001 or so and I doubt I'll ever go back. Once you get over the learning curve, tiling window managers just get out of your way and feel far more efficient to use. Previously, I'd set up XMonad to work alongside Ubuntu's Gnome. So gnome-panel was running and it was a proper Gnome session, but XMonad replaced Metacity as the window manager. When Ubuntu 11.04 came out and they switched to Unity, it pretty much broke that setup. I actually gave Unity a try for a couple months since it seemed to be trying to take on some of the usability advantages of tiling window managers. It wasn't terrible, but it was far from great. When I put in the SSD, I decided to give up on the Unity experiment and just go to a full XMonad setup, using xmobar and trayer to handle the things that gnome-panel used to do for me.

I've also been taking advantage of Ubuntu One to keep my various config files synchronized between machines. I've played around with putting my config files in Git and had some experiences with that, but at the moment I'm liking the automatic synchronization approach of Ubuntu One better. I rolled my own version with lsyncd for a while, which worked fine, but since Ubuntu One comes set up by default, it seems like the easiest approach now. I'm sure you could do the same thing with Dropbox, if you prefer, but Ubuntu One has worked well enough for me that I haven't bothered looking into that. In the future, I'll probably work out some hybrid solution with Ubuntu One and git so I can have things automatically synchronized and versioned, but I'm keeping it simple for now.

First of all, once the basic Ubuntu 11.04 desktop install is complete, I install the packages I need. This is a matter of opening up a terminal and running:

$ sudo apt-get install aptitude thunderbird xmonad emacs xmobar trayer dwm-tools htop keychain chromium-browser git-core magit python-setuptools erlang-mode postgresql
$ sudo apt-get build-dep python-psycopg2

Then I log in to Ubuntu One by running

$ u1sdtool -c

It prompts me for my username/password, which I've set up before and then syncs everything I have in my account to an "Ubuntu One" directory. This takes a little while, but when it's finished, the important stuff in there are directories called 'configs' and 'emacs'. The 'emacs' directory contains all my emacs libraries. I'm not going to include any of that here since many volumes of blog posts and articles have been written about how to set up emacs. My setup has built up over many years and is very personal to my usage. In 'configs' I have:

bashrc  
emacs
gitconfig   
Xmodmap
xmobarrc  
xmonad.desktop  
xmonad.hs  
xmonad.start

These config files are the core of my configuration. They live in Ubuntu One but I symlink them out to their proper locations. It's important to note that these are just config files and don't contain anything sensitive like passwords or ssh keys. I'll go through them.

First, Xmodmap gets symlinked to ~/.Xmodmap. It has one simple, but very important purpose: erase the stupidity of most keyboards placing a useless CapsLock key in one of the most convenient spots. We simply replace it with a Control (essential for an emacs user):

keycode 66 = Control_L
clear Lock
add Control = Control_L

I set up ssh keys with:

$ ssh-keygen -t rsa

Distribute them to the machines I need to login to with

$ ssh-copy-id remote.machine

Then, so I don't have to enter my passphrase every single time I ssh somewhere, at the end of my ~/.bashrc I add:

keychain --quiet --nolock ~/.ssh/id_rsa 2>/dev/null
. ~/.keychain/${HOSTNAME}-sh

An additional step that I can't really automate, but that is still necessary for me for development is to copy the contents of my ~/.ssh/id_rsa.pub up to my github account.

My ~/.gitconfig just contains my full name and email address. It's what gets set up when you run:

$ git config --global user.name "Name"
$ git config --global user.email "email@domain.com"

That pretty much gets my terminal working the way I want. The final major section is my XMonad setup, which is a bit trickier.

/usr/share/xsessions/xmonad.desktop gives me the option of logging in to an XMonad session instead of Unity/Gnome:

[Desktop Entry]
Encoding=UTF-8
Name=XMonad
Comment=Lightweight tiling window manager
Exec=xmonad.start
Icon=xmonad.png
Type=XSession

Logging in runs /usr/local/bin/xmonad.start, which sets up the xmobar panel, various utilities, and finally kicks off XMonad itself:

  1. #!/bin/bash
  2. xrdb -merge .Xresources
  3. trayer --edge top --align right --SetDockType true --SetPartialStrut true --expand true --width 15 --height 12 --transparent true --tint 0x000000 &
  4. gnome-screensaver
  5. gnome-settings-daemon
  6. if [ -x /usr/bin/gnome-power-manager ] ; then
  7.    sleep 1
  8.    gnome-power-manager&
  9. fi
  10. if [ -x /usr/bin/nm-applet ] ; then
  11.    nm-applet --sm-disable &
  12. fi
  13. exec xmonad

Xmobar gets its configuration from .xmobarrc:

Config { font = "-misc-fixed-*-*-*-*-13-*-*-*-*-*-*-*"
       , bgColor = "black"
       , fgColor = "grey"
       , position = TopW L 85
       , commands = [ Run Network "wlan0" ["-L","0","-H","32","--normal","green","--high","red"] 10
                    , Run Cpu ["-L","15","-H","50","--normal","green","--high","red"] 10
                    , Run Memory ["-t","Mem: %"] 10
                    , Run Swap [] 10
                    , Run Date "%a %b %_d %Y %H:%M:%S" "date" 10
                    , Run StdinReader
                    ]
       , sepChar = "%"
       , alignSep = "}{"
       , template = "%StdinReader% }{ %cpu% | %memory% * %swap% | %wlan0% | %date%"
       }

And XMonad itself is configured with a Haskell program in ~/.xmonad/xmonad.hs:

import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import XMonad.Util.EZConfig(additionalKeys)
import System.IO

myManageHook = composeAll
    [ className =? "Gimp"      --> doFloat
    , className =? "Vncviewer" --> doFloat
    ]

main = do
    xmproc <- spawnPipe "xmobar"
    xmonad $ defaultConfig
        { manageHook = manageDocks <+> myManageHook -- make sure to include myManageHook definition from above
                        <+> manageHook defaultConfig
        , layoutHook = avoidStruts  $  layoutHook defaultConfig
        , logHook = dynamicLogWithPP $ xmobarPP
                        { ppOutput = hPutStrLn xmproc
                        , ppTitle = xmobarColor "green" "" . shorten 50
                        }
        , modMask = mod4Mask     -- Rebind Mod to the Windows key
        , terminal = "xterm -r"

        } `additionalKeys`
        [ ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s")
        , ((0, xK_Print), spawn "scrot")
        , ((mod4Mask, xK_p), sendMessage NextLayout)
        , ((mod4Mask, xK_space), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"")
        ]

It's a pretty minimal setup (I have a more complicated one I use on my desktops with dual-monitor setups). It switches the default mod key to the otherwise unused "Windows" key on the keyboard. It sets my default terminal to xterm with reverse video set (I prefer white text on black background for eye fatigue reasons). It also switches the default keybindings of Mod+Space and Mod+p, which is a personal preference.

That's pretty much it. From there I can do everything I need to do on my laptop.

TAGS: linux ubuntu

A Boggling Return to C

My first real programming class, back in high school, was taught in C. I found it difficult and I remember spending the whole year thinking that I really had no aptitude for programming. I think I got an OK grade in the end, but I felt like I was really struggling compared to the other students in the class. It wasn't until a year or two later, taking CS classes in college and finding them easy, that I figured a few things out. First, that C programming class was incredibly intensive. By the end of the school year, I'd implemented, from scratch, a 3D wireframe graphics engine. Second, I felt like I was struggling compared to my friends in the class, because my friends were complete prodigies who had already been coding in other languages for years.

I haven't really coded in C for the last decade though. Aside from a couple classes that happened to involve a bit of C as an aside, college CS classes were getting on the Java bandwagon and by the time I graduated, I'd discovered Perl as a great language to just get stuff done. Since then it's just been Perl, Python, and JavaScript with excursions into other high-level functional languages for fun (ML, Haskell, Lisp, Erlang, etc).

Recently, I had the urge to get back to my roots and relearn C. I'm not sure exactly why. I think I've just had a few too many moments lately where I've felt like software I was using or working on was slower and more bloated feeling than it ought to be. I know writing in C won't automatically fix that, but I've had the urge to write small, efficient programs. To make my own data structures and libraries where every clock cycle and byte of memory used are essential to the problem being solved.

Any time I try to learn a new language, I like to start with a toy program or two. Something simple enough to get my head around, but meaty enough to not be completely trivial.

For my first little toy project this time, I've dusted of my copy of K&R and written a program that, given a Boggle board, will solve it, finding all the english words that appear.

I implemented this before in Python about a year ago for fun. You can see that program here.

The C version is functional but will probably make more experienced C programmers cringe. C syntax is pretty straightforward and not hard to pick back up, but I've got very little experience with the standard libraries available and I'm still re-familiarizing myself with the idioms of developing in that language.

I also took a fundamentally different approach this time, since I've had a year of background thinking on the most efficient way to do this.

Both versions rely on the standard unix 'words' file (/usr/share/dict/words on most Linux boxen) as a master dictionary. They also both expect a board to be defined in a textfile in a very basic manner, eg:

tntb
gdar
elte
sish

I'm not going to go over the rules of Boggle, since you can google it.

The approach I used in Python was to first come up with a reduced alphabet consisting only of the letters that actually show up on the board. In the example case above: abdegilnrst. Then I go through each line of the words file, skipping it if there's an apostrophe, a capital letter (no proper nouns in Boggle), or any letters in the word do not appear in the restricted alphabet. The ones that are left are potentially findable words. Then I do a fairly straightforward search at each position of the board, going neighbor to neighbor to see if that word appears. Then at the end, I take all the words that were found and sort them by length.

That's a really rough, fairly brute-force approach. I won't apologize. That's kind of how I like to do things in Python. It probably took me an hour to write that code and it runs fast enough that I could use it to cheat and get really high scores on online Boggle games (start a new game, quickly type the board into a text file, run the Python script, which took a couple seconds, then spend the next minute or two typing in the words it found, starting with the longest, highest scoring ones first). Basically a total success as far as I'm concerned. Python absolute excels for this approach to problem solving where programmer-time matters a lot and there's a certain performance threshold of "good enough" that, once you reach, you don't gain by exceeding. With Python and a couple basic built-in data structures like lists and hash tables, there are few problems you can't tackle by just taking a very straightforward approach and adding a few quick filters to reduce the search-space drastically. Sophistication is possible, but rarely necessary.

But C is different to me. I feel like since C usually requires more lines of code and more care to get a program working but offers far more control and efficiency, it requires a different approach. It's worth taking the time to get it right to begin with and avoid wasting cycles and memory.

I've had a few ideas in my head lately for things that I want to build that I think will actually form a nice foundation for other work. Things that would really benefit from being small, fast, efficient and "right" from the ground up. This is what's got me interested in getting back into C.

Back to Boggle.

The C version takes a completely different approach, that I thought up recently and seems elegant. It's based on a Prefix Tree, or "Trie" data structure.

What I do is first go through the words file (again throwing away words that have apostrophes or capital letters) and building a Trie out of it. The result is a Trie structure representing every word in the english language. Checking to see if some word exists is O(n) where n is the number of letters in the word, and further will always be very small in this application. Next, we go through each position on the board as a starting point and then go through all the possible word paths from that point, checking against the master word Trie.

Now, the nice thing about using the Trie instead of just a plain hash table lookup or binary search or something, is that in addition to being able to tell if a given word exists, we can also find out whether there are any words that start with a given prefix just as quickly. That means that as we check every possible path through the board, we can eliminate subpaths very quickly when the Trie tells us that there can't possibly be any valid words that start with that prefix. Eg, starting at the 't' in the upper left corner of the example board and looking at all the paths that can originate from there, we can pretty much instantly eliminate them all since there are no words in the english language that start with 'tn', 'tg', or 'td'. This is the sort of reasoning that a human mind can do quickly, and a Trie is how we can get a computer to be about as clever in this case. This rapid pruning of the search space pays dividends quickly.

The code obviously isn't perfect. I've actually completely ignored the case of 'Qu', which Boggle puts as a single tile. It wouldn't be hard to make my code handle that one, but I left it out as it wouldn't fundamentally change the approach; it just adds a bit of extra complexity that would make it less clear.

One enhancement I could possibly make would be to do the same filtering step I did in the Python version, coming up with the restricted alphabet of only letters that appear on the board first and skipping any words in the english dictionary that have any letters besides those. That would make the Trie construction step faster and the resulting, smaller Trie would use less memory and be faster to search. But building the Trie of the entire dictionary already only takes 82 milliseconds on my laptop (the second part of the program, walking all the subpaths through the board and checking for matches takes about 20 milliseconds for a 5x5 board. By way of comparison, the Python program takes 1.5 seconds to run, so that's about a 10X speedup).

The other enhancement which I might do once I've thought about it a bit more is to serialize a built Trie to a file on disk that could be read in quickly and completely skip the step of building the same Trie every time the program is run.

Writing the C version took me a few evenings, with a lot of stupid mistakes and sidetracks, but it was fun. I like looking at the code and knowing that any inefficiency in it is because I didn't design it well enough, not because I'm using a massive library or framework that has a thousand features that I don't actually need for this particular problem.

Gear Review: 2000 Parker Fly Stealth

2000 Parker Fly Stealth

Ever since running across a thread in the Parker Guitar forums showing off a rare "Stealth" model last spring, I knew I had to have one. Fewer than one hundred were made and that was back in 2000, so I expected a long search and to have to pay through the nose. This August though, my search ended much sooner than I had thought and for a lot less money than I would have thought and I acquired my most lusted after guitar.

My previously reviewed NiteFly-M totally sold me on Parker Guitars. Nothing else plays like them. As I said, pretty much the only downside I could come up with was that it's just not made to easily take thick strings and tune down low as I like to do for playing metal. The floating bridge is very delicately balanced and designed for .009's or .010's. I suspect this is one of the main reasons Parkers aren't particularly well known among guitarists in the heavier genres.

The Stealth appears to have been a brief attempt by Parker to break into metal. It's a Parker Fly Deluxe but with a few changes. First, and probably most importantly, it has a fixed bridge. That makes it more stable, helps sustain, and makes it easier to set up for heavier strings. That was the main feature that I wanted (needed?) from a Parker.

Next, the body and neck are both basswood. Regular Parker Fly Deluxes have a poplar body and basswood neck. Switching to basswood makes the Stealth a little lighter (4.5lbs) and gives it a thicker tone with more bass response.

The frets are the extra large size that Parker normally only uses on the NiteFlys. Extra jumbo frets are a standard feature on metal oriented guitars.

They also added the clever Sperzel "D" Thing tuner to the guitar. The "D" Thing lets you drop the low E string down a step to D accurately with a quick flip of a switch. Very handy if you play switch back and forth between standard and drop tunings (actually not my thing, but it doesn't hurt).

The finish on the guitar is also unique. It's a textured grey and black splotchy sort of thing. Kind of like a high tech granite. It's mildly glossy but with the texture and pattern, it just never looks dirty or dusty.

Otherwise, it's the standard set of Parker Fly Deluxe features. Carbon-fiber reinforcement, glass-epoxy carbon-fiber fretboard, stainless steel frets, Sperzel locking tuners, custom DiMarzio pickups (Flys have such thin bodies that normal pickup routes would go clean through, so DiMarzio has to make custom thinner ones for them), piezo pickup in the bridge, stereo output, and the most amazing thin contoured body and neck seemlessly joined. Seriously, I describe it as like playing a razor blade:

Razor Blade

Pretty much the first thing I did when I got it was to take a deep breath and put some Elixir .012 strings on it and tune it to C standard. In the past, I've had to file the nut slots on my Schecter to take strings that thick, so I was a bit nervous that I'd have to do the same to the Parker (marring an otherwise pristine condition guitar). Thankfully, the .012's went on perfectly. .012's in C standard just about exactly match the overall string tension of .010's in E standard, which the guitar had originally been set up with, so I didn't even need to adjust the truss rod. Intonation only required the tiniest tweaks and it was done.

The result has been just as amazing as I'd hoped. I now have a guitar with the unmatched playability of a Parker that has serious amounts of brutal, low end crunch. The DiMarzio's, which have such a cutting sound in the NiteFly stay cutting in the Stealth, but gain a bit of force with the thick strings and basswood body. Those smooth stainless steel frets and that unbelievably thin neck make playing it just totally effortless.

It's a shame that Parker didn't manage to win over the metal players and apparently gave up for a while (although one of their recent models is an Adam Dutkiewicz (of Killswitch Engage) signature model, so I guess they're trying again).

Anthology

I guess it's about time I announced it here.

Abstract Comics: The Anthology

Some of my work (about 6 pieces) has been featured in Abstract Comics: The Anthology, published by Fantagraphics and meticulously edited by Andrei Molotiu. It's been released and is available for purchase at most comic book stores. Amazon has it for preorder (hopefully they'll start shipping soon too). You can see a preview on the Fantagraphics site.

The book itself is absolutely gorgeous. It will make your coffee table the coolest coffee table around. As happy as I've been with lulu.com for my self-publishing, the Anthology is a reminder of what a serious, professional printer can do, especially with a designer like Jacob Covey working on it. It's a total treat to see my work packaged up in such a snazzy bundle.

I also can't begin to describe how cool it is to me to see my work published in the same book and discussed in the same sentence as the other contributors, like R. Crumb, Henrik Rehr, J.R. Williams, Gary Panter, and Patrick McDonnell (Moebius was also originally to be included in the Anthology but that never quite came to pass).

To go along with the Anthology, Andrei has set up an Abstract Comics Blog where most of the contributors have been posting their more recent work, and there will be a show, "Silent Pictures", at the James Gallery in NYC from September 1st to October 11th. It's a joint show featuring Art Spiegelman's collection of 1930s German "wordless comics" plus (nearly) all of the pieces featured in the Anthology.

If you want to see more of my abstract comics beyond what's in the Anthology, see my gallery on myopica.org. I should also point out that my self-published books are now all available on amazon.

Gear Review: 2005 Schecter C-1 XXX

Schecter C-1 XXX

The last of my guitars (for now) is a Schecter C-1 XXX. I believe it's a 2005 model.

I got it on eBay on a whim with a really lowball bid. After having my C-7+ for a while and being really impressed with the quality, I kept
watching other Schecter guitars go by.

The C-1 XXX is some kind of "special edition" guitar that Schecter produced to sell exclusively at Guitar Center. It has mother of pearl "stripper" inlays on the fretboard. Honestly, I find that embarrassingly tacky. I'm not crazy about the "vector" inlays on my C-7+ either. When it comes down to it, I think I really prefer fretboards with no inlays at all. Parker style.

The cheesy inlays though are about the only visual flaw the guitar has though. Mine is pretty beat up and scratched, but that can be charming in its own way.

I think it's not true neck-through; just a very smooth, well-disguised set-neck heel. Either way, sustain is great and upper fret access is about as good as it gets. Mahogany body with maple top and maple neck with rosewood fingerboard. TonePro bridge and string through body, Grover tuners, and it came with Duncan Design pickups (basically 6-string versions of the same pickups that are in my C-7+). Again, absolutely solid, sturdy construction.

Those stock pickups though had the same issue as in the C-7+. Decent sounding but just not aggressive enough for metal. So I made this guitar a project and installed some EMG Hz pickups in it. I also filed the nut slots a bit wider to accommodate some beefy strings so I could tune down to C.

The result was an absolute beast of a metal guitar. Those EMG Hz pickups were exactly what it needed to give it serious bite. Very high output but with excellent note articulation. Crisp, but powerful.

Now, if there were just a way to make those inlays invisible, I wouldn't feel quite so embarrassed about posting pictures of it on the internet.

Gear Review: 1999(ish) Schecter C-7+

Schecter C-7+

This is the prettiest guitar I own. That flame maple top looks so good in person; a photo really can't capture the translucency and depth.

I think my first exposure to 7-string guitars was reading about Trey Azagthoth of Morbid Angel and Steve Vai playing them in the early 90s. They were hard to find, expensive, and had a very exotic reputation. The extended range let you get down into detuned death metal territory but still keep the high end for solos. Of course, you had to be some kind of virtuoso to justify needing that range. Then Korn came along and the next thing you knew, 7-strings were everywhere. All the manufacturers had cheap ones to cash in on the trend and all the kids had drop tuned 7-strings and were all playing the same palm-muted one-finger power chord riffs. Eventually the nu-metal backlash kicked in and 7-strings became uncool by association.

Finally, in recent years, I feel like some sort of synthesis has been reached in the 7-string dialectic and they've found a proper place in the world. Playing one doesn't immediately mark you as a shredder or as a nu-metal wanker.

Anyway, I've wanted a 7-string for many years so I started looking around for a good one last fall. I was originally drawn to the Ibanez Xiphos 7-string (my roommate has a 6-string Xiphos and it's a solid axe) then was tempted away by the Schecter C-7 Blackjack ATX. I was watching eBay waiting for one of those to come up at a good price and this older C-7+ came along and I ended up getting it for a total steal.

Interestingly, the Blackjack had made it to the top of my list after seeing Jesu play live a couple times and being absolutely blown away by Justin Broadrick's guitar tone. He's been a hero of mine since his Godflesh days anyway. I did a bit of research and found that he was playing an older C-7+ and had very recently upgraded it with Seymour Duncan Blackout pickups. The Blackjack appeared to be the closest equivalent among Schecter's current lineup and was getting excellent reviews on its own.

So I ended up getting an even closer match to Broadrick's guitar than I'd planned. As far as I can tell from pictures, like this one, the C-7+ I have is the exact same model to within a year or so of production. Same headstock, set neck joint, and "vector" fretboard inlays. I haven't been able to nail down the exact date on mine, but I'm fairly sure that combination makes it somewhere in the 1999 to 2000 range.

Construction-wise, I'd describe the C-7+ as being pretty similar to a what you'd get if you made a 7-string Les Paul with a 25.5 scale neck and strat shaped body. Like a LP, it's got mahogany body and neck, maple top, rosewood fretboard, set neck, a fat neck, and a fixed bridge. It weighs a ton and feels solid and indestructible. Action is good but not as low as my Parker (what is?). The fat neck makes it extra beefy feeling so it's not really as shred oriented as a thin Ibanez 7-string wizard neck. All in all, the construction of the guitar is just excellent.

The tone is very dark and warm. The pickups, which are "Duncan designed" (meaning they are Seymour Duncan pickups but assembled by lower production cost factories in Asia), are relatively low output. Not bad sounding, but they don't scream. That fat, warm Jesu sort of sound is right up their alley, but they don't have enough bite to work for death metal. They just get muddy sounding instead of mean and growly. It really needs a warm clean sound or a smooth distortion to sound its best (and it does sound good when you stick to that territory).

I can see why Broadrick switched out the pickups and I'm thinking of doing the same (although I'd end up paying as much or more for a pair of Blackouts than I paid for the guitar itself so I haven't been able to justify it yet).

Playing a 7-string has been a fun experience if not exactly what I was expecting. I have pretty big hands so the wider neck isn't that much of an issue for me. Adapting hasn't been too hard because I tend to stick to single note and two or three note chords which are easily re-located to the lower string. A 7-string is problematic if you play a lot of larger chord shapes since that's just one more string you have to figure out how to finger.

I like this guitar a lot but I have to admit that I'm still tempted by the Blackjack. The Blackjack seems to really take the C-7+ and turn it into a better metal guitar. It extends the scale to a 26.5 inch baritone scale to keep the tension on the low B string under control (or let you tune even lower). The Blackout pickups and a snappier ebony fretboard should tighten the tone up and make it work better for aggressive styles. The smoother neck joint makes for even better upper fret access.

Gear Review: 2008 Parker NiteFly M

Parker NiteFly-M

This is the most expensive, and probably most interesting guitar I own.

Parker guitars are a completely different species than anything else out there. To really understand what I mean by that, I highly recommend reading this long interview with Ken Parker that goes into great depth on the design philosophy behind Parker guitars.

The NiteFly-M is only a mid-level Parker but it's still head and shoulders above almost every offering from every other guitar company in many ways.

Let's start at the top of the headstock and go down. First, notice the headstock shape which is very narrow and minimalist. In part, that's simply a reflection of Parker's overall minimalist approach to design. Rather than something frilly and fancy, they just took off as much wood as they could get away with to keep the weight down. It also turns out that the resonance of the neck is affected (mostly bogged down) by mass on the end, so stripping out as much from the headstock as they could actually helps the sustain and tone.

The tuners are Sperzel locking tuners. Instead of wrapping the string around the post, it clamps down on it and you clip off all the excess string. That makes it super fast to change strings, keeps it clean looking, and is incredibly stable.

The neck itself is mahogany with a carbon-fiber glass epoxy shell and fretboard. As Ken Parker points out in the interview, making the neck that way with a sort of "exoskeleton" makes it substantially stronger and livelier than an equivalent neck made of just wood would be. It also happens to be very comfortable to play. Smooth as glass but it somehow stays cool to the touch, keeping your hands from sweating. The exoskeleton seals the wood away from the elements too so it doesn't expand or contract with humidity changes as much as other guitar necks do. Combined with the locking tuners and a well-balanced bridge, the Parker just never goes out of tune. It's like magic. I can take it out of the case after weeks of crazy weather and start playing without even bothering to check if it's still in tune, because it just always is.

The frets are stainless steel. That means that they are perfectly rounded for perfect intonation and never wear down and need to be re-leveled. Why don't other companies use stainless steel frets instead of the soft nickel-silver that always wears down over the years? Mostly because of the way traditional guitars are assembled. Normally, you cut the slots for frets on a guitar's neck and then cut fret wire to length and hammer it in, then level it and crown it to get it just right. Fret wire is in a sort of T shape with a tang that goes into the slot and a rounded part which is what sticks up as the fret. Extruding the metal into that T shape with the narrow tang requires a soft enough metal to pass through rollers. Stainless steel just can't be abused that way. Parker uses fret wire with a D profile. No tang. Instead of cutting slots and hammering it in, it's precisely glued into place onto a perfectly smooth fretboard.

The fretboard has yet another trick up its sleeve. If you look closely at any guitar, you may notice that the strings are farther apart from each other at the bridge than they are at the nut and are arranged in a slightly rounded formation (the middle ones are higher up than the outer ones). Fretboards are generally also slightly rounded (different players may prefer a different "radius") to match. The problem is that the rounding of the fretboard is, for ease of manufacturing, uniform for the length of the neck. It's like a section of the surface of a cylinder. Since the strings are farther apart at the bridge though, the surface they are on is really a section of a gently sloping cone. That means that the positions of the frets as you go up the neck are actually slightly off from where they should be. A good luthier or guitar tech will correct for that when they level and crown the frets so that even though the fretboard itself is cylindrical, the tops of the frets are on that conical surface and intonation is correct. That doesn't happen on commercial, mass produced guitars though and most guitarists just put up with the intonation never actually being quite right. Parker just makes their fretboards conical to begin with so the frets end up perfectly intonated right from the beginning. This is one of the main reasons that once you get used to playing a Parker, it's hard to go back to a regular guitar.

The neck-body joint is a half rounded bolt-on joint. I have a strong preference these days for neck-through and set-neck guitars. Bolt-ons aren't necessarily worse, but with cheaper guitars in particular, there's a lot more room for manufacturing error with bolt-ons so I'd usually rather avoid them. A bolt-on neck can be done well though as long as the company takes the proper amount of care assembling it. Parker's half-rounded joint is very stable and their manufacturing quality is, as usual, impeccable so this is one bolt-on neck that I'm OK with.

The body is mahogany with a nice, natural, satin finish. It does a nice job of darkening the tone of the guitar a bit to compensate for how bright those stainless steel frets would otherwise make it sound. I think the shape of the body is beautiful but I know a lot of people disagree. It's probably the biggest factor in keeping Parker's from being more widely played. Too many guitarists see it, think it's weird looking, and never get any further than that.

The DiMarzio pickups sound good. Tight but rich and smooth. It can sound razor sharp. It doesn't get too much into low-end. I can get good thrash, death metal, and black metal sort of sounds out of the Parker, but I don't think it would ever work very well for ultra-doomy, low, sludge or drone metal sort of sounds (Sunn O))) should stick with their Les Pauls). The pickups can be coil-split too. I'm not crazy about single coil sounds in general and a split humbucker never quite sounds the same anyway, so I don't have much use for that feature.

After spending my formative years playing a crappy strat copy, I have a bit of a residual dislike for floating bridges. I just don't trust them to stay in position well enough. Even locking trems have disappointed me (and make string changes a nightmare). Parker's floating bridge is about the only one that I'd trust now. You can set the parker bridge to 'fixed', 'floating', or 'down-only' via a set screw in the back. When I got it, it came set to 'floating'. My plan was to play around a bit with the floating bridge since I hadn't used one in years and then set it to 'fixed' and forget about it. To my surprise, even in 'floating' mode, it's proven so stable that I just haven't had the need to lock it down.

The bridge also has an integrated Fishman Piezo pickup system. It is nothing short of amazing. Running it into a good full-range amplifier, it's easily mistaken for an amplified acoustic guitar of the bright and jangly sounding variety. The output jack in the guitar is stereo and allows you to send the piezo output to a separate amp from the magnetic pickups (or you can blend them together into a mono signal). The tone control on the guitar doesn't affect the piezo signal, but you'd probably want to mess with that mostly offboard anyway.

The action on this guitar is ridiculously low and fast. The precision manufacturing of the Parker necks lets it get all the way down without any problems. If you like low action a Parker will go as low as you want. It came from the factory strung with 9's. I usually prefer thicker strings, but when I played the Parker I decided to just keep it set up exactly as it came. Maybe 10's would be even better, but as it is, I can't imagine the feel being improved upon. It's almost a drawback of the guitar. Normally I like to tinker with my guitars (read the previous review of my fretless for the extreme example) and that's part of the fun for me. With the Parker, I feel like every aspect of it is so perfectly balanced and adjusted to micro-tolerances that any change I could make to it could only make it worse so I leave it alone and pristine. It stays in standard E tuning with thin strings despite my usual preference for thicker strings and detuning because I'm afraid that if I changed it, I'd never get the action back to this state of perfection. Reading the Parker forums, I actually get the impression that that's just not my imagination. Other people have reported that changing to different gauge strings on Parkers can be a very tricky operation.

All that in 6.5lbs.

Is there anything not perfect about this guitar? Of course.

As I just pointed out, it's not an ideal guitar for putting thick strings on and tuning way down low. I don't think it would play as well and it wouldn't sound right without also changing the pickups.

The back edge of the top horn also has a tendency to really dig into your rib cage when you play sitting down. At least it's a light enough guitar and well balanced enough that it's otherwise comfortable.

My main problem with the NiteFly-M is that it makes me really, really want one of the high end Parker Flys. This was the nicest one I could afford when I got it (I'm also more fond of the look of the satin finish than what's available on the others) and it's spoiled me on other guitars. But the higher end models are lighter (down to 4lbs!) and have that sexy, carved set neck that makes me wish I had a lot more money in my guitar budget. Parkers aren't cheap, so this may have started an expensive addiction for me.

Gear Review: fretless Epiphone G300

fretless G300

My friend was selling his guitar cheap. He'd bought it years ago planning on learning to play and never really gotten around to it. I picked it up for next to nothing as a spare to keep around.

It's not a high quality guitar. It has cheap parts and the construction is shoddy. An SG with a bolt-on neck? That's just wrong.

It's not all bad. The pickups are actually surprisingly aggressive and decent sounding.

By far its biggest problem though was the fret work. After many hours trying to get it intonated, I still couldn't get it set up properly. The neck was straight but the frets were uneven and no amount of saddle sliding was going to fix that. The lowest I could get the action without it fretting out after a lot of work was still what I would call "very high".

So the guitar sounded decent if you stuck to the low frets and didn't mind really having to fight to get the strings down, but wasn't good for much else.

Soon after I got it, my roommate decided that he wanted to switch from playing bass and really learn to play guitar, so I lent him the epiphone and he dutifully learned his chords and scales on it. The high action arguably helped make sure he learned to play cleanly. Eventually though, he got a decent guitar of his own and the Epiphone went back to just taking up space in my room.

Around that time, I discovered the strange but fascinating world of fretless guitars and a seed of an idea was formed in my head.

It's not all that difficult to do a crude defretting of a guitar. Basically, you get a soldering iron and some end clippers and one by one you heat the frets with the soldering iron to melt the glue that holds them in and then work them out with the end clippers. When they're all out, you fill the fret slots in with epoxy, let it dry, then carefully sand it down (with a radiused sanding block) till it's flat. You also need to lower the action significantly which involves sanding the nut down. I actually ran into a wall of how low I could get the action when I got the bridge lowered all the way. To get it any lower, I'd need to find and install some kind of new bridge that can go lower than a stock tune-o-matic.

It was easy and fun. I documented the whole process on flickr. On the recommendation of what seems to be the consensus of the fretless guitar community, I strung it with flatwound 11's and dropped the tuning down a step to D. Apparently, without the frets to protect it, a rosewood fingerboard would quickly get chewed up by roundwound strings.

The result of the transformation is impressive. It has less sustain than it did with frets (ebows and sustainiac systems are popular tools for compensating in the fretless world). The combination of the flatwound strings and the damping effect of the fret point being flesh instead of metal makes it much darker, mellower, and softer sounding than it was. Luckily though, the pickups were incredibly bright and aggressive sounding to start with so the result is actually very nicely balanced (though no longer aggressive enough sounding for serious metal crunching).

With the low action, thick flatwound strings, and low tuning, it's quite pleasant to play now. Well, there's the whole "fretless" thing that takes some getting used to I guess. It's really a different world. It doesn't take long to retrain your hands to basically find their way around for playing single notes. It does force you to get more precise though since you have to fret it exactly at the right spot with no margin for error. Chords are a different matter. Some basics like two finger power chords translate pretty well and you just have to get used to bringing your fingers together as you move up the neck. Other chords, particularly ones that involve two notes at the same fret on adjacent strings, are pretty much impossible. When you play those chords on a fretted guitar, your fingers can be staggered a little and the fret keeps it sounding right. On the fretless, when your fingers don't have room to be perfectly vertically aligned, you just can't get those two notes to work together. The result is that while I wouldn't say the fretless is much harder to play than a regular guitar, it's true that you absolutely can't take the songs and patterns you learned on a regular guitar and immediately translate them to the fretless. You kind of have to go back to the beginning and come up with new material and figure out new patterns. I haven't even really gotten into experimenting with just intonation and microtones yet (I need a better tuner). All in all, I think playing the fretless has really helped me improve my playing. My ear is better, I've had to get more precise and tight with my left hand, and it's forced some additional creativity out of me.

This modification really turned a nearly worthless guitar into something really interesting, fun, and educational. If you have a "disposable" spare guitar laying around and a fretless guitar sounds at all interesting to you, I recommend giving it a shot.

It's still not a great guitar though. After a few months of temperature and humidity variations, the epoxy that I filled the fret slots with now sticks out just slightly. Not enough to fret the strings, but enough that the neck doesn't feel totally smooth under my fingers. So I need to re-sand it to get it smooth again. I can see why more serious fretless player tend to just replace the entire fretboard with a smooth block (and usually something harder than rosewood like ebony or even brass, aluminum, or glass).

Gear Review: 2000 Ibanez IC300BK Iceman

IC-300

I bought this guitar new in early 2000, so it might be a 1999 model, but it's somewhere in that area at least.

The IC300BK was one of the lower end Icemen that Ibanez has put out over the years (but not as low as the ICX120 that they put out later that made me want to cry).

The Iceman shape is one that you will either love or hate on first sight. Conveniently though, whether someone loves or hates the sound of the guitar generally correlates with how they feel about the appearance. So it's actually a useful discriminating factor. If you think it's ugly, you probably wouldn't be well served by this guitar anyway.

As you might guess, I find the pointiness and strange curves pleasing to the eye. I think when I got it I was generally unaware of the long history of Paul Stanley (of Kiss) with this guitar. I knew it as the guitar I'd seen Al Jourgensen (of Ministry) and J. Yuenger (of White Zombie) playing. More importantly, after picking one up and playing it in a music store, I knew it as the guitar with the most comfortable neck I'd ever played.

The IC300BK is a dead simple guitar, feature-wise. Black basswood body with cream trim, Maple bolt-on neck, Rosewood fretboard with cream binding, 25.5 inch scale, 22 frets, fixed, tune-o-matic bridge, two Ibanez humbuckers (AH-1 and AH-2), 3-way switch, one volume, and one tone knob. Nothing fancy about it aside from the shape. That wasn't what I was necessarily looking for when I bought it, but I was still a college student and didn't have a lot of money so I just got the cheapest "metal" guitar that I could find that felt comfortable.

I think I made a decent choice though. Nine years later and now owning quite a few "better" guitars, I still get plenty of use out of my Iceman.

I mostly play loud, angry, metal. The Iceman has served well as my basic workhorse. It can be pressed into playing blues or jazz or whatever else, but it's really happiest playing north of "hard rock" on the heavy spectrum. I like to keep it happy.

The pickups are high output and stay sharp and defined with a lot of distortion. Pinch harmonics are easy. I like to throw thick strings on my guitars and tune down (the Iceman currently has 12's and is tuned down to C). It handles it well (although I actually still haven't gotten intonation on the 6th string quite right; the saddle is cranked all the way over and it's still just barely off; I'm afraid that I'd need to move to a custom string gauge to fix it and it's close enough and I'm lazy enough that I won't bother). Action is medium. Well suited to heavy rhythm playing. I can't get it very low without buzzing so it's not a shredder's guitar (that's fine with me).

This guitar does have a few annoyances though. First, it's big and heavy. Seriously. It doesn't fit in a regular guitar case or bag because it's just too long and the horn sticks out in the wrong place. It needs either a bass or one of the "extreme" guitar cases or bags. Carrying this guitar around in a bass case has almost ripped my arm from my shoulder a few times. The weight gets to you if you play it for more than an hour or so. The strap holders are terribly positioned and make it top heavy. So if you're playing it standing up, you have to support the neck with your left hand or it nose-dives. Finally, the tuners are not very good. They feel loose and the guitar slides out of tune pretty quickly when you put it away (not as bad as the cheap strat copy I had before it though that would be out of tune within minutes).

These days I wouldn't pay the price I paid back in 2000 (around $600, I think) for a guitar with the features and quality of this one. But I've gotten so much use and enjoyment out of this one that I still feel like it was a good investment.

Gear Review: 1979 Alvarez Yairi DY-55

Alvarez DY-55

Taking a short break from posting about code stuff, I thought I'd dip into one of my other hobbies. I've been playing guitar since I was about 15 and, while I'm certainly no Yngwie Malmsteen, it's stayed a pretty constant part of my life and is a major source of relaxation and amusement for me. I'm also a major gearhead. Building effects pedals in high school from internet schematics and modifying them to do horrible things was one of the things that led me to want to study Electrical Engineering in college, which in turn landed me in computers. So I thought I'd start a little series of reviews of the guitars and guitar gear that I've accumulated over the years.

I'm going to go through my guitars in roughly chronological order, starting with my beloved Alvarez Yairi DY-55.

The very first guitar that I owned was a crappy Epiphone stratocaster copy that my parents helped me buy on my 16th birthday after I'd spent months learning the basics on my dad's acoustic guitar. I spent the rest of the summer mowing lawns and doing odd jobs to pay back what I owed them for the guitar and a little 10W practice amp. I loved the Epi and it served me well, but I shudder now to think back on how awful it must have sounded to anyone in range. I didn't understand anything about intonation, or how to deal with the floating bridge in it, so to me it seemed to be constantly "out of tune" and I wondered why I could never quite get my riffs to sound like what I heard on the CD. A bridge saddle had a burr and my low E and A strings would constantly break. I didn't have the cash to keep buying new strings so I'd scavenge old cast-off bronze-wound acoustic strings from my dad's guitar case and keep playing.

The Alvarez was my high school graduation gift from my parents. I ditched the Epiphone as soon as I could get a better electric guitar, but the Alvarez I've never had any desire to get rid of.

My dad picked it out. He plays a 1950's Gibson 12-string that he strings up with 6 strings because he likes the neck extra wide and fat. To him, the neck on the Alvarez must have felt pretty thin, but it's actually pretty substantial by anyone else's standards.

I have less to say about this guitar than my electrics because there are less "moving parts" from a gearhead perspective, but I really can't say enough good about it. It plays absolutely beautifully and has a rich, full sound to match. It's brighter sounding than my dad's Gibson, but much deeper sounding than any Ovations or Taylors I've played. With the strings kept clean and fresh, I'd compare its sound to a nice Martin. Even if you let the strings get old and a bit tarnished, it just gets a nice mellow, soft tone. The only thing negative thing I could possibly say about the sound of this guitar is that it's pretty quiet. Any other acoustic playing next to it will drown it out, so you wouldn't want to use it live and unamplified if it needed to compete to be heard. I pretty much stick to playing alone in my apartment so it's perfect for me. I spend a lot of time trolling eBay looking for good deals on electric guitars to add to my collection, but owning the DY-55, I've not felt the need to even look at other acoustics.

Construction is rock solid. It stays in tune perfectly, the intonation is flawless, and the action is comfortable with no buzzing. It still looks as good as the day I got it in 1996. I actually had no idea that it was a 1979 model until just a couple years ago when I found out how to determine the year from the serial number. Based on the condition it was in, I'd always assumed that it was only a few years old at the most when my parents got it for me.

The reviews on Harmony Central seem to pretty much agree with me, with others rating it as sounding as good or better than much more expensive Martins. The DY-55 will never be an expensive, sought-after guitar despite the excellent quality, because it's both not rare enough to get collector attention, and not well known enough to have a reputation as the great guitar that it is. Other players who are lucky enough to have stumbled onto one (and probably paid peanuts for it) seem to realize what a gem it is and aren't about to give it up. I'm certainly not.