Anthology

By anders pearson 07 Aug 2009

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

By anders pearson 21 Jul 2009

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+

By anders pearson 21 Jul 2009

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

By anders pearson 17 Jul 2009

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

By anders pearson 16 Jul 2009

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

By anders pearson 16 Jul 2009

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

By anders pearson 15 Jul 2009

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.

Django Deployment with virtualenv and pip

By anders pearson 12 Jun 2009

A while back, I detailed how I went about deploying TurboGears apps with workingenv and supervisord. That’s still the basic approach that I’m using for the TG apps that I still maintain and keep running. Lately though, I’ve been doing more of my work with Django and the landscape of Python deployment tools has changed significantly enough that I thought it was about time I explained how (and why) I’m deploying things these days.

Motivations

I still have the same basic needs. I write a lot of small applications that get deployed on one server and I don’t want to spend all my time doing the upgrade dance when a new version of a library comes out. If I’ve got a bunch of apps written with Django 0.97 that are running and I want to deploy another app on the same server that’s written against Django 1.0, I don’t want to have to upgrade all my old ones (since there were some non backwards compatible changes introduced). Similarly, I don’t want the presence of my old legacy apps preventing me from being able to use the latest versions of libraries for my new apps. Generally, this means that the approach of installing libraries into the global site-packages just does not work for me.

I should also mention that while the approach detailed in my old post uses workingenv’s “–requirements” flag to give it a list of URLs of packages to install, I actually moved away from that quite a while ago instead opting to bundle all the needed eggs in a directory right alongside the application’s code so the entire deployment process could be done without relying on the network. I just had too many problems with either PyPI or the TG website being unavailable at the wrong time and breaking my deployments. It also meant that I couldn’t bootstrap a new environment if I was on a laptop without network access.

What’s New?

My old post explained in some depth how I got around that problem for the TurboGears apps I was deploying by using workingenv to isolate each application’s libraries in a way that I could just bundle the libraries needed for each along with the application and not have to worry about what else was on the system.

Things are slightly different now with Django for a couple reasons.

First, mod_wsgi has matured and, for my purposes, seems to be the best way to deploy Django applications. That means I’m back to Apache and don’t need the whole setup with lighttpd proxying back to individual application web server processes each being monitored and controlled by supervisord.

Second, the Django community as a whole seems to have not bought into setuptools and eggs as the preferred distribution method and have stuck with distutils instead. My old approach relied on having all the required libraries bundled as eggs. With TurboGears, that was rarely an issue since TG was completely tied to setuptools. But with Django, I find that more often than not, the library I want to use isn’t available as an egg, so I ended up having to download the source tarball and manually build an egg for each library. That got tedious after a while. Ideally, a new approach would allow me bundle both eggs and source tarballs. Failing that, source tarballs currently seem to be the path of least resistance in a Django ecosystem.

Finally, workingenv has been all but deprecated in favor of virtualenv (and/or the combination of virtualenv and pip depending on what set of workingenv features one is replacing). Virtualenv has a number of advantages over workingenv that I won’t bother enumerating here. Pip is also an important new player in town. Conveniently, pip happens to use source tarballs instead of eggs.

The Current Approach

I’m just going to dive into it.

In each project, I have a ‘requirements’ directory. That, in turn, has a ‘src’ directory in which I’ve dumped source tarballs for every library that the project requires. That includes Django itself, database drivers, everything.

Also in ‘requirements’ are ‘libs.txt’ and ‘apps.txt’ text files. Those are just lists of the contents of the ‘src’ directory since pip currently isn’t (yet) smart enough to figure out the order that it needs to install things when you just give it a directory full of tarballs. I separate them into ‘libs’ and ‘apps’ just for convenience. ‘libs’ are plain python libraries and ‘apps’ are full-fledged django apps.

At the top level of the project, there is a ‘bootstrap.py’ file with the following contents:

:::python
#!/usr/bin/env python
import os
import sys
import subprocess
import shutil

pwd = os.path.dirname(__file__)
vedir = os.path.join(pwd,"ve")

if os.path.exists(vedir):
    shutil.rmtree(vedir)

subprocess.call([os.path.join(pwd,"pip.py"),"install",
                 "-E",os.path.join(pwd,"ve"),
                 "--enable-site-packages",
                 "--requirement",os.path.join(pwd,"requirements/apps.txt")])

That just looks for a directory named ‘ve’, blows it away if it’s there, then runs a command that basically works out to

$ pip.py install -E ve --enable-site-packages --requirement requirements/apps.txt

In other words, telling pip to install all the packages specified in requirements/apps.txt (which in turn has a reference to libs.txt) into a new virtualenv directory called ‘ve’. The only real reason that’s done in Python is to easily make it self-aware of it’s location so the script can be run from any directory and it will figure out how to put the ‘ve’ directory in the right place. Bash makes that harder than it ought to be.

I also include a copy of pip.py in the top level project directory so pip doesn’t even have to be globally installed on a system to bootstrap. (I think I can also drop virtualenv.py in there too but I already have that installed on every system I admin so I haven’t bothered yet).

All together now

I actually have all of this set up in a Paster template (along with a whole bunch of other customizations) so instead of the usual

$ django-admin.py startproject foo

I run

$ paster create --template=mydjangotemplate foo

and I get a stock Django project directory plus the requirements directory full of source tarballs and the bootstrap.py. The copy of ‘manage.py’ that my paster template drops in there has the ‘#!/usr/bin/env python’ line replaced with ‘#!ve/bin/python’. So the next couple steps for me to bring up a running dev server look like:

$ cd foo
$ chmod +x bootstrap.py manage.py # paster templates don't let you set permissions
$ ./bootstrap.py                  # installs all my requirements into 've'
$ createdb foo                    # i pretty much always use postgresql and my custom settings.py are configured for it
$ ./manage.py runserver

I’d like to stress that that happens on a system that has Paste and virtualenv installed but does not need to have Django, psycopg2, or any of the other libraries that are used installed. They are included in the template and get installed into the virtualenv for that one project.

I check everything except the ‘ve’ directory into version control (usually git these days). That includes all the source tarballs. It’s a bit wasteful of disk space and bandwidth but I haven’t found that it’s that much overhead in practice.

When I deploy to production (via our automated system at work), the project is checked out of version control, rsync’ed to the production server then

$ ssh productionserver /path/to/myapp/bootstrap.py

is run and everything gets installed into a virtualenv on the production server. Other applications on the same server are unaffected. My mod_wsgi configs point to ‘/path/to/myapp/ve/lib/python2.5/site-packages’ and so on (they are autogenerated by my paste template as well).

I plan on going into more detail on the paste template magic I use in the future, but that should give you a bit of a sense for why I like it so much.

A couple fine points

A few caveats:

  • I have this working on Ubuntu 9.04 but it requires a couple tweaks since Python 2.6 is the default on that system. Figuring out how to do that is left as an exercise for the reader.
  • I don’t use that many libraries that have C extensions (and thus require time-consuming compilation steps). Pretty much just psycopg2 and PIL. psycopg2 is small enough that compiling it is very quick so I just put the source tarball in requirements like usual. PIL is big though and I don’t want to have to wait for it to compile every time I deploy an app to production. That one’s stable enough and is easily installed with Ubuntu’s package manager that it’s become my one exception and I just install it globally and it hasn’t been a problem. (this is why pip gets the ‘–enable-site-packages’ flag to pull that in)
  • pip doesn’t yet do a very good job of figuring out dependencies. If you don’t have the order just right in the requirements files, it will try to download dependencies off PyPI even if they’re sitting right there. It’s taken me a bit of trial and error to get it right.

Eg

If you want to see a real, working example of a project that uses this, check out the requirements directory and bootstrap.py from one of my projects.

Review: Django 1.0 Template Development

By anders pearson 13 May 2009

I don’t usually do book reviews here, but Packt Publishing was nice enough to send me a review copy of Scott Newman’s Django 1.0 Template Development a while back and I haven’t otherwise had much in the way of ideas for posts lately, so here goes.

Over the years, I’ve used probably a dozen different templating languages in a couple different languages, rolled my own, and contributed bugfixes to a few others. I remember years back when it seemed like everyone was writing Perl CGI programs that generated HTML with a million print statements and people looked at you funny if you suggested that a templating language might simplify things for them. Thankfully, as of 2009, the web development community seems to be on board with the basic idea of separating code from markup and all the advantages that that approach entails.

Of all those templating languages that I’ve played with over the years, Django’s is currently my favorite. That’s not to say it doesn’t have its flaws. I don’t think there’s such thing as a perfect templating language; they have to balance too many things and will never be everything to everyone. Django seems to have come closer to the sweet spot than anything else I’ve used though. It’s powerful enough that you rarely need to work around it but simple enough that once you learn the basics, you rarely have to look anything up. The syntax is remarkably clear and compact, and somehow, it’s still really, really fast.

Any book on Django templates faces an uphill battle to prove its worth. Django’s template language is a very simple syntax and has some of the best online documentation out there. I was certainly skeptical at first that there was really any room for a book on such a narrow and already covered topic.

Unsurprisingly, then, the book’s section on the basics of the syntax is pretty short and to the point. More space is then spent just providing a reference section for the built in tags and filters. I certainly can see the usefulness of that. Sometimes the searchable online docs are what you need, and sometimes it’s handy to have paper. The book’s explanations of these built-ins aren’t substantially different from the online docs, but do tend to go into a little more detail on specifics.

The meat of the book is really in the sections covering everything in Django that’s around the templates and interacts with them. This turns out to be practically everything in Django (except maybe the ORM). The overview of how URLs are mapped to views, which load data into contexts that can be modified by Context Processors, process the contexts with templates, and return responses which might be further modified by middleware is probably not going to be very exciting to a programmer with much Django experience but I could see it being useful for someone new to Django or to, eg, a designer who’s only touching the templates but ought to understand how they fit into the whole system.

Template loading and inheritance are covered in pretty good depth. Those are topics that tend to get glossed over but are actually of key importance to understanding how to structure large Django projects to allow for a great deal of flexibility and power. I find Django’s approach to template inheritance very intuitive (if not quite as powerful as ZPT’s) so I didn’t need too much help getting up to speed with it, but I could see how it might be unfamiliar territory if you’ve only worked with ‘include’ style template systems and the book’s explanation of how to think about structuring your templates is probably just what’s needed. The template loaders that are included with Django are covered in detail and it does a good job explaining why they each exist.

A great opportunity was missed though as there’s no discussion of creating your own template loaders. I’ve implemented a template loader that would pull templates out of the database before and I can say from experience that documentation on writing your own template loaders is sorely lacking. It ultimately wasn’t very hard to do, but I remember having to actually dive down into Django’s source code to figure out how to do it (I recommend reading Django’s source code though; it’s remarkably clear compared to other frameworks I’ve had to do similar digging in).

The chapter on writing your own custom template tags and filters is probably the most important chapter in the book. Django’s template syntax is purposefully simple so one of the most common complaints I see is that it ends up pushing a lot of “display” logic into the views. This is almost always easily overcome in a nicely reusable and modular fashion with a custom tag or filter. The problem is that Django’s documentation on how to do that is hard to find and very intimidating. It’s there and adequate as a reference, but it’s very easy for someone to get pretty far with Django without knowing that custom tags and filters are an option at all, or just thinking that they’re too complicated to bother with. The reality is that they’re pretty straightforward to implement once you’ve seen a good explanation of how they work, which this book finally provides.

There are also chapters on pagination, customizing the admin look and feel, and internationalization. Pagination, I think is covered pretty well in the online Django docs and isn’t very complicated so I feel like that chapter is mostly filler. Customizing the admin interface is pretty straightforward and the chapter is superfluous if you’ve really understood the earlier chapters on template loading and inheritance since it’s just a direct application of that. But I can see it being a useful example since the admin app is so widely used and customizing it is something of a Django rite of passage. Maybe if the earlier chapters didn’t sink in, that would help pull it together. Internationalization, admittedly, I’ve just barely ever had to deal with so I tend to skip over that.

I’d be happier if the book got more into django.forms or really even discussed them at all. Designers who are working with django templates are bound to run across forms and have to deal with them. Eg, there’s discussion of customizing the django admin interface, but in reality that almost always also includes tweaking the forms and not just the templates and CSS.

I think what I’m getting at is that while the book works well for a programmer looking to get deeper into everything in and around Django templates, I think it ends up being much less useful for someone more on the design end of the spectrum than I’d hoped. In other words, if I’m working on a Django project with a designer who’s doing the HTML and CSS and doesn’t know much programming beyond that, I had been hoping that I could hand them the Django Template Development book and it would serve their needs. Maybe that isn’t what the author intended, but it’s what I’d hoped for when I saw the title. But without a discussion of forms or aspects of the model that someone working on a template would probably encounter (eg, if they saw “{% if author.page_set.count %}” in a template, they ought to know something about how that relates to foreign keys, the _set convention, and querysets, at least to recognize the common pattern in use), I’m not sure it’s going to provide them with anything more than a printout of Django’s online template syntax and built-ins docs would.

Myopica 2008

By anders pearson 18 Dec 2008

Another year, another book of my drawings and paintings.

Here it is: Myopica 2008

As usual, it’s public domain, sold at cost (but lulu.com did raise their prices this year) with a free PDF download available if you don’t want paper. I also have a gallery set up if you find that more convenient to browse than the PDF.