Archive for January, 2008
« Previous Entries Next Entries »
January 8th, 2008
So Long, Raincoast Books
UPDATE: Here is the official press release.
Raincoast Books, one of Canada’s best (and greenest) publishers, announced yesterday that they are departing from the publishing business. The full story is at CBC.
Best known for publishing the Canadian editions of the Harry Potter series (the only books they will continue to publish), they were a home to a number of authors including George Bowering, Roy Miki, Nick Bantock, and Bill Gaston. Nice people + nice books = Raincoast will be missed.
January 8th, 2008
Congratulations Grace!
Each of the writers submitted short fiction to qualify for the award, named for the late Kingston, Ont.-based author Bronwen Wallace, who was a mentor for many young writers.
The finalists are:
* Marjorie Celona, 27, of Victoria, for Othello. She has a degree in creative writing from the University of Victoria and is studying at the Iowa Writers’ Workshop.
* Ben Lof, 29, of Edmonton, for When in the Field with Her at His Back. He has a master’s degree from the University of Alberta.
* Grace O’Connell, 23, of Toronto, for The Bottlenecks. She has been published in Strong Words 2 and Lichen Arts & Letters Preview.
My very good, and ultimate “girl advice”, friend Grace has been nominated for this year’s “Bronwen Wallace Award for Emerging Writers”. She saved me from a intestinally-impaired girl in a CanLit class at Queen’s University, and for that I am eternally grateful.
January 7th, 2008
Bon Iver – Skinny Love (Guitar Chords)

Photo credit: Count Me Out.
Tuning
I’ve done this in an open G C tuning: G C C G C C. I tried a number of different tunings (E A D F# B B + capo I was a favourite), and this is the one I think works best. On the record, he’s tuned just slightly below pitch, but it’s easy to figure out if you listen to the ringing top notes (they’re both C) and tune backwards from there.
Since it’s such an open tuning, you can be as sloppy as you need/want to be. If you’re having trouble making the chords, you can omit everything but the notes on the low E (fattest) string.
[UPDATE]: I’ve added a way to play it in regular tuning.
[UPDATE #2]: I’ve noticed a lot of people ending up here searching for “how to tune G C C G C C”. Don’t be scared about breaking your strings and do the following:
- E: up three steps to G
- A: up three steps to C
- D: down two steps to C
- G: keep as is
- B: up one step to C
- e: down four steps to C
Chords
Bon Iver
Skinny Love
Tuning: G C C G C C
*Note: on the record, he's tuned a bit down. Since the top two strings are the same, it's best just to tune based on them.
Am: 204000 -or- 200000
C: 507000 -or- 000000
D: 707000 -or- 700000
C/B: 407000 -or- 400000
- or -
Tuning: E A D G B e (standard)
*Note: This is only an interpretation for standard tuning. Chords are labeled to coincide with the way I named the open-tuned version.
Am: x0201x
C: x3201x
D: x5403x
C/B: x2x01x
Here are a couple of the riffs he uses throughout the song. Since it's in an open tuning, you can let the other strings ring out:
C|-------------------|-------0---------|
C|-------------------|-7-9-7---7-9-7-5-|
G|-7-9-7-5---7-9-7-5-|-----------------|
C|-------------------|-----------------|
C|-------------------|-----------------|
G|-------------------|-----------------|
Intro:
Am C
Am C
A C
D Am C
Verse:
Am C
Come on skinny love just last the year
Am C
Pour a little salt we were never here
Am C
My, my, my, my, my, my, my, my
D Am C
Staring at the sink of blood and crushed veneer
Am C
I tell my love to wreck it all
Am C
Cut out all the ropes and let me fall
Am C
My, my, my, my, my, my, my, my
D Am
Right in the moment this order's tall
Chorus:
C
I told you to be patient
C/B Am
I told you to be fine
C
I told you to be balanced
C/B Am
I told you to be kind
C
In the morning I'll be with you
C/B Am
But it will be a different "kind"
C
I'll be holding all the tickets
C/B Am
And you'll be owning all the fines
Verse:
Am C
Come on skinny love what happened here
Am C
Suckle on the hope in lite brassiere
Am C
My, my, my, my, my, my, my, my
D Am
Sullen load is full; so slow on the split
C
Chorus:
C
I told you to be patient
C/B Am
I told you to be fine
C
I told you to be balanced
C/B Am
I told you to be kind
C
Now all your love is wasted?
C/B Am
Then who the hell was I?
C
Now I'm breaking at the britches
C/B Am
And at the end of all your lines
Bridge:
C
Who will love you?
C/B Am
Who will fight?
C C/B Am
Who will fall far behind?
Outro:
Am C
Am C
Am C
D Am C
Tabbed by Matthew Gruman, matthewgruman.com
Lyrics: http://www.lyricsandsongs.com/song/877591.html
Music Video
January 7th, 2008
Beirut – Nantes (Ukulele/Guitar Chords)

Photo credit: other songs, it could be. To emulate the organ sound, I flick my fingers downward, individually, after hitting a root note with my thumb. Does that make sense? It sounds like “boom, da da da da da, da da” over and over again.
Chords
Beirut
Nantes
For ukelele tuned a 1/2 step up (G# C# F A#)
Dm: 2210
C: 0003
F: 2010
To play on guitar, capo VI:
Dm(Am): x02210
C(G): 320003
F(C): x32010
Intro:
Dm C F F x2
Verse:
Dm C F
Well it's been a long time, long time now
Dm C F
since I've seen you smile.
Dm C F
And I'll gamble away my fright.
Dm C F
And I'll gamble away my time.
Dm C F
And in a year, a year or so
Dm C F
this will slip into the sea
Dm C F
Well, it's been a long time, long time now
Dm C F
since I've seen you smile
Dm C F F x4
Chorus:
Dm C F
Nobody raise their voices
Dm C F
Just another night in Nantes
Dm C F
Nobody raise your voices
Dm C F
Just another night in Nantes
Bridge:
Dm C F F x2
Verse:
Dm C F
Well it's been a long time, long time now
Dm C F
since I've seen you smile.
Dm C F
And I'll gamble away my fright.
Dm C F
And I'll gamble away my time.
Dm C F
And in a year, a year or so
Dm C F
this will slip into the sea
Dm C F
Well, it's been a long time, long time now
Dm C F
since I've seen you smile
Outro:
Dm C F F x4
Tabbed by Matthew Gruman, matthewgruman.com
Lyrics from: http://www.sweetslyrics.com/523261.Beirut%20-%20Nantes.html
Note for Guitarists
The “low” string on a ukulele is higher than the next two subsequent strings. So, while the strings go G C E A, the relative pitches (1 being low, 4 being high) are 3 1 2 4. To replicate the sound, you would have to replace your D string with something much thinner (i.e. whatever you use for your high E) and tune it up an octave.
Music Video
January 7th, 2008
Beirut – Elephant Gun (Ukulele/Guitar Chords) Update
My tab for Beirut’s Elephant Gun has been added to the Ultimate Guitar Archive. This is great because the other ones aren’t exactly “complete” or “accurate”.
I always get a kick out of how instantly the archive eradicates my Google rank. Searches that formerly brought people directly here now go to Ultimate Guitar instead.
January 7th, 2008
Random Post Widget
I added a “Random Post” widget to the sidebar today. I spent a couple minutes at the WordPress Widgets site, but I couldn’t find anything I liked so I made my own in PHP that is stupidly simple.
I defined the randomPost() function in wp-includes/functions.php because I knew it was being included already. You can put it anywhere, or just dump the code directly onto your page.
Random Post Code
function randomPost() {
<div class="side-sec pages">
<h3>Random Post</h3>
<?php
// Get ID, Title, Post, and Date from WordPress DB
$query = "SELECT ID, post_title, post_content, post_date FROM wp_posts WHERE post_type='post' ORDER BY RAND() LIMIT 1";
$result = mysql_query($query);
// Use $row for grabbed content
$row = mysql_fetch_array($result);
// Take only the first 150 characters and get rid of HTML from post
$content = substr(strip_tags($row[2]), 0, 150);
// Display using relative dates
echo '<p><a href="?p='.$row[0].'">'.$row[1].'</a> '.lastfm_relative($row[3]).'</p>
<p>'.$content.' [...]</p>';
?>
</div>
}
Since I already use the Last.fm for WordPress plugin, I used their relative time function: lastfm_relative(). If you don’t have/want that plugin, here is the code for the function.
Relative Time Function
function lastfm_relative($time) {
$time_orig = strtotime($time);
$diff = $just = time()-$time_orig;
$months = floor($diff/2592000);
$diff -= $months*2419200;
$weeks = floor($diff/604800);
$diff -= $weeks*604800;
$days = floor($diff/86400);
$diff -= $days*86400;
$hours = floor($diff/3600);
$diff -= $hours*3600;
$minutes = floor($diff/60);
$diff -= $minutes*60;
$seconds = $diff;
// Variables defined
if ($just<=0) {
return 'Just Now!';
} else {
if ($months>0) {
// over a month old, just show date (yyyy/mm/dd format)
return 'on '.date('Y/m/d', $time_orig);
} else {
if ($weeks>0) {
// weeks and days
$relative_date .= ($relative_date?', ':'').$weeks.' '.__('week').($weeks>1?'s':'');
$relative_date .= $days>0?($relative_date?', ':'').$days.' '.__('day').($days>1?'s':''):'';
} elseif ($days>0) {
// days and hours
$relative_date .= ($relative_date?', ':'').$days.' '.__('day').($days>1?'s':'');
$relative_date .= $hours>0?($relative_date?', ':'').$hours.' '.__('hour').($hours>1?'s':''):'';
} elseif ($hours>0) {
// hours and minutes
$relative_date .= ($relative_date?', ':'').$hours.' '.__('hour').($hours>1?'s':'');
$relative_date .= $minutes>0?($relative_date?', ':'').$minutes.' '.__('minute').($minutes>1?'s':''):'';
} elseif ($minutes>0) {
// minutes only
$relative_date .= ($relative_date?', ':'').$minutes.' '.__('minute').($minutes>1?'s':'');
} else {
// seconds only
$relative_date .= ($relative_date?', ':'').$seconds.' '.__('second').($seconds>1?'s':'');
}
}
}
// show relative date and add proper verbiage
return $relative_date.' ago';
}
And that’s it. The relative time function is by far the most complex part of this whole operation. There’s no validation or verification — it assumes that there are posts ready to be grabbed, that your database is accessible, etc. You can see it working on the right side of this page.
January 5th, 2008
In Defense of Horizontal CSS
Over the past couple of months, I’ve read a number of articles about formatting CSS. To my surprise, there’s actually a large debate about horizontal VS vertical formatting. Vertical formatting, like I’m used to, looks like this:
abbr, acronym {
border-bottom: 1px dotted #666;
cursor: help;
font-style: normal;
}
Horizontal formatting rewrites that same rule as:
abbr, acronym {border-bottom: 1px dotted #666; cursor: help; font-style: normal;}
At first glance, individual properties are much easier to parse vertically; and this is true when it comes to small style sheets.
Huge Style Sheet
Some people separate their CSS into separate sheets: one for structure, one for fonts, etc. I got in the habit of using tab-styling/comments in my CSS and prefer not to make it modular; this works great for the average CSS. With large sites that have a large number of styles however, it starts to get a bit ridiculous. I’m a neurotic adjuster and constantly access and change my CSS throughout the development of a site. And, while I like to think I’m well-organized/structured, I also have the habit of throwing random styles in random places and forgetting about proper tabbing until it’s too late. Leaves me with a mess of a CSS that needs lots of time to work with, and too much maintenance.
I’ve been working on a database entry system that’s going to be used by a lot of different students, so static appearance and usability are incredibly important. My CSS was approaching 1000 lines and I just couldn’t deal with it anymore, so I tried converting it to a horizontal format. It was one of those shave-off-all-your-hair moments (“why did you close the program Matthew! You can’t even Undo anymore! We’re all doomed!”) But then I looked at the length: ~150 lines.
Alphabetization
That first day I started working with the horizontal sheet was the day I stopped doing things vertically. The amount of time I’m able to save by quickly scanning is incredible. While I thought declarations would be difficult to parse, they’ve actually given me a good reason to keep them alphabetical — and this makes ALL the difference.
We usually see alphabetization in list form, but it’s surprisingly easy when it’s in-line, too. Just choose a random place in the string and scan left and right; there’s the property you were looking for. Another benefit of alphabetization is portability: anyone taking over from you will have an easier time understanding your work.
Think of it like putting your alarm clock on the other side of your bedroom. You know logically you should get up when it goes off (alphabetize), but sometimes it’s just not going to work out if you’re close enough to hit snooze (vertical CSS).
Hooray for Horizontal
I’m about to start work on renovating the first major website I ever made with CSS. I kid you not, it’s ~2000 lines long and is probably responsible for the deaths of a million helpless children. You can bet that the first thing I’m doing is a reformat.

