“This is a courtesy call…”

The Issue at Hand

First of all, my apologies for neglecting this blog over the past few months.  But there’s nothing like a “courtesy call” recorded eons ago and played back as soon as some schmuck (namely, me) answers the phone at 6:30pm on a weeknight to help me remember that I have a wonderful medium through which my frustration can be channeled.  Blagging seems to relieve stress.  I am already feeling better knowing that I am about to download all of my thoughts from my brain to the world at large.  Picture one of those bank drive-through cylinders.  Thoughts tucked safely inside?  Check.  Cylinder securely fastened shut?  Check.  I’m pushing the button so that my thoughts will be sucked up and fly out to the masses via these tangled up tubes Senator Ted Stevens (R-Alaska) loves so well.

Me:  “Hello?”

Phone:  “…static scratchiness…more static scratchiness…

Me:  (thinking to myself…) I-should-hang-up-but-I’m-curious-but-I-hate-that-I-am-curious-because-I-know-from-the-pause-that-it’s-going-to-be-a…

Phone:  “This is a courtesy call from PIC.  Unfortunately, you have just missed our customer service representative.  If you would like to speak with us, please call 8014841107.”  “…more static scratchiness…”

Me:  Click.  “Damn it!”

Sam:  (without looking up as he types away on his computer…) “What’s wrong?”

Me:  “….telemarketers!

Sam:  (continues typing…) “Ah.”

The Problem

Ah.  Well, if that doesn’t make me feel worse, what could?  Like it’s no big deal.  But it also makes me mad because I know he’s right.  It’s really not a huge deal.  There are more important things to be upset about–I had just seen a Save the Children commercial so I knew it was true–and yet the selfish, time-miser American streak in me can’t get past this call.  Why not?  Why am I so peeved?  Thanks to the intertubes, I can tell you all why.

1.  Answering the phone only to hear a recording is a HUGE annoyance.  It’s rude.  As if the caller’s time is so valuable that they cannot be bothered to SPEAK when the someone at the number THEY DIALED picks up the phone and says, innocently (and almost benevolently, I might add), “Hello?”

I even included that hopeful rise in my voice at the end of the word, as though I was expecting a positively magical outcome to my greeting.  Instead, I met only with static indifference followed by a recording.  If you’re going to cold-call people, at least have the decency to put a LIVE PERSON on the other end of the line.  It’s as if my time is as insignificant as Rosie O’Donnell’s new variety show.  Ouch.

Well…on the other hand, perhaps my time is that insignificant.  They wasted all of what…20 seconds?  Perhaps I am being unreasonable.  After all, I am the one wasting more of my time blathering on this blag.  I can just hear that recorded voice asking me in its infuriatingly monotone calmness, “Who has the last laugh now?”   Still, I’m an inquiring mind, and you know what that means.

2.  Curiosity killed the cat.  May I not meet the same ill fate as the fabled feline who inspired that saying, because I want to know what PIC is and why it is calling me.  I think I want to know this because it didn’t tell me.  What is it hiding?  (I will not use pronouns such as “they” or “them” to describe PIC because it contacted me via a recorded voice, like KITT on Knight Rider, which, however ardently we wish otherwise, is not a person, but rather a genius computer “it” with bitchin’ A.I. and an attitude problem.  Moving on…)

We do not have caller ID, so I decided to employ my handy-dandy librarian skills.  Thank you, www.whocalled.us.  Turns out PIC is an acronym.  I wasn’t sure at first because the recorded voice didn’t spell it out, so it sounded like the word “pick,” as in “ice pick” (with which I would love to destroy the obsolete voice recorder used to tape that uninformative message) or “pick its nose” (which PIC can do, along with kissing my…well, you get the picture).    The culprit is none other than Public Interest Communications, a telemarketing firm based in Salt Lake City that serves non profit and tax exempt organizations.  That information also answered another question that was forming in my mind…

3.  No wonder the DNC List (which we are on) does not apply to it!  Oh well.  At least I know how to stick it to PIC.  I will just boycott all of the organizations that deign to do business with it.  There’s just one problem…

4.  PIC represents the likes of Amnesty International, the World Wildlife Fund, and the Rails-to-Trails Conservancy among others.  Damn it again!  I was all ready to forever withhold my support from every one of the stupid, ridiculous organizations who would hire morons like PIC to fundraise for them…until I found out that I agree with and believe in the missions/visions of several nonprofits on PIC’s list of clients.  This new discovery complicated things entirely too much.  Did one of these once-trusted organizations share my contact information with PIC?

5.  I did some further research to find out, and I think it’s doubtful.  PIC offers very specific fundraising services based on donor lists, etc.  Here I want to clarify:  it doesn’t bother me when I receive calls directly from nonprofits I have given to in the past.  I like to talk to staff members and find out what’s new, and if memory serves they have never asked for more money over the phone…emails and mass mailings take care of that task.  But I would not like receiving a call asking me to donate more money to a nonprofit I’ve supported in the past from someone who does not even work there.

Why not?  First, because I don’t think it’s ethical for nonprofits to share donor lists with PIC no matter what assurance PIC gives as to privacy standards, etc.  Who says it would not sell the list in the future, and how would anyone be the wiser if it did?  Second, because if I have any questions about that nonprofit’s programs and services, a telemarketer can’t answer them!  What a waste of time–again!  And third, because most of my money would not be going to that nonprofit–it would be going to PIC.  I will make a direct donation online or by mail before I will ever respond to a phone solicitation.  For these reasons, I will have to rethink any financial support that goes to PIC’s clientele because I feel that they are unwisely using some or all of their donor funds by hiring PIC.  Period.

I have a hunch that in addition to these specific, more personalized donor call list services, PIC also sends out mass recorded calls to loads of people with listed phone numbers across the country just to see if they can get someone to call them back and donate money to any one of their clients.  My recorded call was so general that I am convinced it was a shot in the dark, and through online forums I have found that many others have been unwilling targets of PIC’s general telemarketing recording.  I, of course, took the bait.  I gave them a website hit, and I called the number back and asked them to remove me from their solicitation list (which, to my knowledge, they have done).  I have not received any calls since Wednesday of last week.  I’m going to think positive.  🙂

A Solution for When You Really Have to Go

Don’t worry, I’m not going to try to sell you DetrolLA or Vesicare.  I’m going to share one idea for what you can do when you are targeted by telemarketers and you really have to get off the phone.  It’s easy enough to simply hang up on telemarketers, but somehow I find that I have to be polite.  I say things like, “I’m sorry, but I’m just not interested…” but that never seems to help.  Usually, they continue speaking at you rather than to you.  Typically, they barely stop for breath because any pause on their part might give the person on the other end of the line a chance to say no, hang up, or tell them off.  Inevitably, it takes about four to six polite refusals before they will give up.  And these days, saying, “We are on the Do Not Call List, so…” shuts them up fairly quickly.  But because nonprofits are exempt from this list, PIC and companies like it will continue to call us on behalf of organizations like the Indiana Troopers Association (by the way, for the ITA specifically, hired telemarketers typically get the majority–as in around 80%–of the hard-earned moolah you donate as a result of their phone calls).  And for those of you out there who, like me, find it difficult to deal with these calls, I have found a solution for us all.

Going, Going, Gone.

If you visit sorrygottago.com, you will find lots of great recordings that you can use on telemarketers while they are trying to give you the big, long, breathless product pitch they are being paid to read to anyone who will listen.  Convincing them to give up is difficult, but what if your cockatoo was going crazy, you were about to board a helicopter, your carriage just arrived, you just walked into a huge surprise party thrown in your honor, you are busy rolling strikes at your bowling league, you were in the middle of escaping from a fire in your building, or your home became the new HQ of the National Bubblewrap Corporation?

I didn’t listen to every recording on sorrygottago.com, but from what I can tell none of the options are obscene or inappropriate.  Still, when I think of telemarketers as human beings (and they are, after all, just trying to make a living), I would have to rule out some of the “gotta go” methods on this website.  Most recordings are fine (a herd of cows invading your home is anything but rude), but a few (the I’m listening choice comes to mind) are just mean.  Depending on which methods you choose, you might be able to hang up on your telemarketers without hurting their feelings and without feeling guilty.  And if they have been SGG’d before, you might even convince them to hang up on you!   Either way, you’re golden.

Now, I’m sorry, but I gotta go…my favorite show is on!

Posted in Miscellaneous | Tagged , | Comments Off on “This is a courtesy call…”

Suckretariat

A few weeks ago I participated in the Indianapolis Adventure Race – a combination of trail running, orienteering, canoeing, and mountain biking with an emphasis on teamwork.  It was an incredible experience, and I’m definitely hooked on the sport.  Here are some lessons learned:

1. Picking the right team is everything. Physical fitness is important, but it’s way more important to have positive people who laugh a lot.  Things will go wrong, and you need people who think that it’s kind of funny when they do.  People who would pick a team name like “Suckretariat” are probably a safe bet.  We passed a lot of teams out there who were cussing and fighting…and we couldn’t help but laugh at that, too.

2. Take a careful look at what is provided in the registration packet. The night before the race the organizers held a “prologue event”: 45 minutes of orienteering through the woods in the dark in order to determine starting positions for the real race in the morning.  For Team Suckretariat, the experience went a little something like this:

Race Organizers: On your mark, get set, go!  Tear open those envelopes!

Team Suckretariat: Envelopes?!  What envelopes?  Where did all the other teams get those envelopes?  Go ask the organizers […runs up to the organizers and back…] Oh, great, they were in the registration packet…I think I left it in the tent!

3. Brighter headlamps are worth every penny. All three of us had small, cheap LED headlamps, and we all three felt like we were stumbling around the woods with tiny fields of vision looking for the control points during the prologue event.  Luckily, our strategy was to Tank the Prologue.

4. Tank the Prologue. Our goals during the prologue event were 1) to not break a leg running around the woods in the dark with our weak and tiny headlamps — Jeff’s headlamp was not only tiny, but also quite pink — 2) figure out how this “orienteering thing” actually works 3) make it back on time.  The organizers repeatedly emphasized that no matter how many control points picked up on the course, anyone who made it back within the 45 mins would automatically start ahead of anyone who didn’t.  It was pretty clear from the pre-prologue Q&A that this point was not sinking in for many of our fellow competitors…and we ended up starting ahead of 15 or so teams even though we only completed a little more than more than half of the orienteering course.  We’ll probably try a little harder on future prologue events, but we stand by this strategy and heartily recommend it to other AR noobs.

5. Secure your maps to your body. Our canoe capsized within the first 20 minutes of the race.  Yes, it was embarrassing.  A great many teams capsized at one time or another, though…kind of comes with the territory of jumping in and out of a canoe in the dark to swim under logs, push the canoe over logs, and lighten the load to run ‘er through the shallows, I guess.  Of course, our capsize came at a point where the river was clear, the water was calm, and there was absolutely no reason to flip…c’est la vie.  Far worse than the embarrassment, however, was the realization another 30 minutes into the race that our waterproof map case containing all of the maps and instructions for the day had fallen out of my camelbak pack during the capsize and was nowhere to be found…It was a dark moment for Team Suckretariat as we paddled along for a while thinking that the day was pretty much over.  Thankfully we found another team’s dropped clue sheet at the first canoeing stop, and some race volunteers radioed ahead to the race director to get us more maps at the end of the paddle.  We were disqualified, but that didn’t matter too much as we were really just in it to finish the race and have some fun…disaster averted, but next time the maps will be tethered to me.

6. Eat and drink often and early. I was amazed at how much my body required over the course of 7 hours.  I ended up getting pretty dehydrated and feeling sick after the race despite the fact that I drank over 4L of water/gatorade and only used the loo once during the race.  I think next time I’ll drink more an hour or two before the race, and I’ll make sure I keep drinking during the canoeing.

6. Hold your line and don’t be intimidated by the AR-jocks. A lot of adventure racers are nice and pretty funny, but we ran into a few who thought they were hardcore.  How hardcore can you be when you’re neck-in-neck with a team named Suckretariat who tanked the prologue and started in 41st position?  We were running across a huge open field and a team of studs were convening on the same point as us.  Apparently, they thought that they had some kind of open-field-right-of-way or something and started yelling at us. “This is my line!  I have this line!  You have to yield!”  We gave them some big grins and a few choice words accented by hand gestures.  We held the line.

Posted in Fitness | Tagged , , , , , , | 3 Comments

How to rip audiobooks to iTunes

Shannon and I are audiobook fiends. We listen to them when we’re driving, lifting weights, working on the house, doing laundry, mowing the lawn, or doing just about any activity that doesn’t require intense mental focus. They provide true multi-tasking, effectively turning our brains into dual core processors (whoa! …geeking out again…I’ll try to keep that in check). Back when I worked in an office and had to sit in freeway traffic for an hour or two every day on the way to and from work audiobooks cured my road rage. “Sure, feel free to cut me off; I’m reading a good book!  What do I care?”

The public libraries are chock full of fantastic audiobooks on CD, but getting them into iTunes in a usable format is not super-intuitive. Here’s a step-by-step guide to help you out…learned and tweaked over the last 3 years of my audiobook ripping experience. This is going to seem like a lot of work at first, but it becomes second-nature and you’ll eventually be able to do it all very quickly. You’ll even be able to handle those 47 disc James Michener and George R.R. Martin books with ease.

1. Insert the first disc.  iTunes will get the book titles and track names for you from the tubez, but there’s a good chance that they’ll be mis-spelled or not quite configured the way you want them. You don’t care about the track names, but you will want the book titles to be correct.
2. Select the all of the tracks and ctrl-click (right-click) –> Get Info.
3. Fill out the info dialog with the following:
Artist: the author’s name
Album: the book title — delete any disc info such as “disc 1” or “1 of 6”
Composer: the reader’s name
Genre: Books and Spoken
Remember Position: Yes
Skip when shuffling: Yes
Disc Numbers: make sure that the disc numbers are correct

4. Click OK to dismiss the info dialog. With the tracks all still selected click Advanced–>Join CD Tracks. This rips the whole disc into iTunes as a single track. Yes, this is what you want. Audiobooks will remember your playback position automatically, so there’s no reason to get more fine-grained than per disc.
5. Bring up the iTunes Preferences dialog and go to the Advanced tab. Then click the Importing sub-tab.
Update for iTunes 8: The Importing dialog is now accessed on the General tab of the preferences dialog by clicking the “Import Settings…” button.
6. Change the Setting dropdown to “Custom…” and fill out the dialog that pops up as follows:

7. Whether you use error correction is up to you. It takes longer to rip with error correction turned on, but it can help smooth out scratched CDs. Your Importing preferences should now look like this:

8. Click OK to dismiss the prefs dialog, then click the “Import CD” button in the bottom right.

9. The track for first disc should now be showing up under Music in your iTunes library. At this point, I like to change the name of the track to include a disc number. So for the example I’ve been using so far, I changed the track name from “Predictably Irrational” to “Predictably Irrational 01/06”.

10. Repeat Steps 1-9 for each disc in the book.
11. Now we need to change the file extensions so that the book will show up under the Audiobooks menu instead of the Music menu. Select one of the tracks and ctrl-click–>Show In Finder (or “Show In Windows Explorer for non-Mac peeps).
12. Delete the audiobook from iTunes, but make sure to keep the files — DO NOT select “Move to Trash”!

13. Go to the Finder (or Windows Explorer) window that you opened on Step 11. You should see all of the files for your audiobook there. They all end with the files extension “.m4a”.
14. Change the file extensions to “.m4b” (Soon I will write a little unix shell script to do this for you automatically and will post it here, but for now you’ve got to do them one at a time.)
15. Back in iTunes, go to File–>Add to Library…
16. Select the folder containing your m4b files (probably iTunes–>iTunes Music–>author name–>book_title) and click Open.
17. That’s it. The audiobook should now show up under Audiobooks in iTunes and be ready to copy to your iPod.

One more tip: During playback on your iPod, if you just select a track and play it the iPod will stop playback when it reaches the end of that track. However, if you start playback on the track before the one that you want to listen to and skip forward, then the iPod will continue on to the next track each time it finishes a track.

Posted in Miscellaneous | Tagged , , , , | Comments Off on How to rip audiobooks to iTunes

New Low Price for Identity Theft

Our neighborhood, Irvington, is wonderful and we love it.  But the truth is, outside of our cozy little block of historic two-bedroom bungalows, the east side of Indy is littered with payday loan stores.  These are only outnumbered by gas stations, pawn shops, and rent-to-own furniture stores.  Every day, I drive by a cash advance store, and this morning I noticed something quite phenomenal for sale.  Identity theft!  For only $9.95, you too can be the proud owner (purchaser?) of identity theft!  Don’t believe me?  Check it out:

Check out the second window from the left. Boo-ya!

Boy, was I excited to see this!  Like everyone else, I am pretty scared of identity theft.  The news anchors are always tipping us off to clever new scams designed to pull the wool over the unsavvy consumer’s eyes, and I probably receive about 2 emails per week warning me against predators trying to steal my identity.  And as if the online opportunities for thieves are not enough, less technically advanced criminals are now just breaking into homes.  Instead of looking for jewelry in the bedroom or expensive lawn equipment in the garage, they now look for computers and documents.  My neighbors suffered a burglary a few months ago.  The perps swiped a new laptop, birth certificates, passports, social security cards, and of course credit card and bank statements!  Not good.

So you can imagine my surprise when I realized that for the low price of $9.95, I can…well, I can actually buy…identity theft!  There’s no better way to protect yourself from something scary than to just buy it outright!  I mean, when big corporations are afraid of another organization’s success in the same field, the solution is obvious to the CEO, CFO, COO, and of course the board of directors.  To get rid of the competition, just buy them out!  Merger is a six-letter word, but necessarily a dirty one…as long as you are at the top of the food chain, of course.  Middle managers break out in a cold sweat after hearing the word “merger” whispered at the company picnic, but shareholders are on the phone to Miles, their real estate broker, seeking a posh house in the Hamptons to celebrate the inevitable growth of their already pregnant investment portfolios.

Yes, buying something makes it yours.  And when it’s yours, it’s not scary anymore.  If you owned the mafia, they would have to do what you told them.  Guido would be at your beck-and-call.  And Guido isn’t that scary anymore when he’s picking up your dry cleaning and driving to the post office to drop off all of those mysterious packages you’re always sending to “the boys” in Chicago, NYC, and Miami. 

I debated whether it would be wise for me to tell the world about this amazing opportunity to purchase–and be master of–identity theft.  I mean, if you all go out and buy it first, where does that leave me?  But, geography is on my side.  There are two people who might actually read this blog post, and unfortunately for them, I live closer to the store. Iron-clad identity is only a purchase away. Don’t hate me because I beat you to the punch, ya’ll!

Posted in Uncategorized | 1 Comment

Bruce and Beautiful @ the Y

Date: August 21, 2008
Time: 6:50 am
Setting: YMCA.  Shannon climbs onto the treadmill for another hateful, grueling 30 minutes of her life.  Next to her is an older man keeping up a steady pace on his treadmill.  Every now and then, a bead of sweat drips off of his nose and splashes on to the base of the machine.  He looks down and doesn’t speak for a few minutes…but then he does speak to another older gentleman sitting quietly on a nearby crunch machine.  The place is full of over-60’s this early in the morning.

Older man to his buddy: This lady next to me is burning up her machine, and I don’t even know what her name is!  Yeah, she’s over there makin’ me look real bad, and I don’t even know her name!

Shannon (panting):  I’m Shannon.  And you are?

Older man: Bruce.  Good to meet ya!  Are you doing fat burner, level 14?

The man on the crunch machine snorts loudly.  Bruce looks at him accusingly and continues.

Bruce: I’m right, aren’t I?  Fat burner–I can hear the machine getting louder and louder, then more quiet.  That’s the fat burner, isn’t it!?

Shannon: You’re right. (He really was!) You?

Bruce: Level 9, constant.  This here’s Fred, but everybody calls him Beautiful (gestures to his buddy on the crunch machine).

Shannon: Hi, Beautiful.

All the other old men in the area giggle, and Beautiful turns an adorable shade of red.

Beautiful: Well, he’s Bruce, so everybody calls him Bruce the Moose!

More laughter from the elderlies. The other older women in the room giggle especially loudly.  I start to think that maybe Bruce the Moose and Beautiful are some of the “cool kids.”

Bruce the Moose (looks over at me appraisingly): So, you run marathons, don’t ya?  You look like you’re runnin’ marathons.

Shannon: No, no, not me.  I am thinking about trying to do the Mini next year, but I have never run more than 6 miles at one time.  Are you a runner, Bruce the Moose?

Beautiful laughs and shakes his head back and forth.  Bruce grins from ear to ear.

Bruce the Moose: Used to be.  I’m too old now–it’s tough on the joints, ya know.  That’s why I do the stairmaster.  Keeps me fit without stressin’ my knees and ankles. (Gives me another sidelong glance.) So, you about 30?

Shannon: Yep, that’s right. (Again, dead on. This guy is good!)

Bruce: I see you got a ring on–you married?

Shannon: Sure am.  My husband comes here a lot, too–his name is Sam.  You’ve probably seen him around.

Beautiful: Don’t ask him his age, honey!  He could be your great-grandpa!  You might fall off the machine after you hear it!

More giggles from the peanut gallery.

Bruce the Moose: It’s Lisa, right?

Shannon: No, it’s Shannon.

Bruce the Moose: Right, Shannon.  Shannon.  I’ll remember that.  It’s Irish.  I’ll remember that.

I am unable to speak for a while, and Bruce the Moose hears my labored breathing and takes pity on me with his silence.  When my workout is over, I clean off my machine.

Shannon: Well, Bruce, it was really nice to meet you.  Are you almost done?  You’ve been going for a long time!

Bruce the Moose: Yeah, just a few more minutes here. I do five miles every other day.  Keeps me spry.

A couple gray-haired ladies in the room look at him with affection.  Another lady walks by–probably about 40.

Bruce the Moose (to the 40-year-old): Hi, young lady.

40-Year-Old: Hi, Bruce.

Bruce the Moose (to me):  It’s Michelle, right?

Shannon: Nope, it’s Shannon.  Irish, remember?

Bruce: Yeah, okay–Shannon.  I’ll remember that.

Shannon: Okay, Bruce.  Have a good day–I’ll see you later.

The 40-year-old lady hops on a treadmill and starts laughing and shaking her head at Bruce.  Beautiful joins in.

Bruce the Moose: What?  What’s so funny?!

40-Year-Old: It’s been 5 years and you still don’t get my name right, Bruce!  I don’t think you’ll be remembering hers anytime soon.

Beautiful is laughing like crazy now, as are the rest of the elderlies.  Bruce quiets the peanut gallery with a hand, shushing them like a classroom of second-graders.  He looks at me confidently.

Bruce the Moose: Bye, Rachel!

Everyone else: (raucous laughter)

Shannon: Bye, Bruce.

Posted in Miscellaneous | 2 Comments

Subversion pre-commit hook for Redmine

Close on the heels of my last post, here’s a little pre-commit script to help integrate Redmine issues with svn commits. The basic idea is that you can’t commit code to the repository without referencing a Redmine ticket. I searched the tubez for quite a while looking for something else like this. I found this forum post, but it had a bunch of shell syntax that didn’t work for me on Dreamhost.

I hereby disclaim that this was a quick hack for me and understand that there is probably a better way to do this. If, however, you’re not passionate about this sort of thing and just want something that works, it’ll do.

I’ve actually got 2 scripts for ya:
The SVN Hook
Copy and paste this first one into a file named ‘pre-commit’ (no file extension), and drop it into the hooks directory of your svn installation. This script will be called automatically by svn whenever someone tries to commit. All it really does is pass the submitted comment string on to our ruby script, featured below.


#!/bin/bash

REPOS="$1" 
TXN="$2" 

SVNLOOK=/usr/bin/svnlook

# change to the current working directory
cd `dirname $0`

# svnlook at the comments being submitted with the commit request
COMMENTS=$($SVNLOOK log -t "$TXN" "$REPOS")

# Holla out to a little ruby pre-commit script.  if it fails, exit with a return
#    code of 1, which means that errors occurred
/usr/bin/env ruby pre-commit.rb "$COMMENTS" || exit 1

A Ruby pre-commit script (pre-commit.rb)
Copy the following code and paste it into a file named ‘pre-commit.rb’. Drop the file into your svn/hooks directory alongside the pre-commit script created above.


#!/usr/bin/env ruby

comments = ARGV[0]

if /[a-zA-Z0-9]/ !~ comments
  raise "You must include a comment with your commit."
end

if /refs|fixes|closes\s#([0-9]+)/ !~ comments
  raise "You must reference a Redmine issue in your commit comments (e.g. 'refs #1234')."
end

issue_number = comments[/#([0-9]+)/][/([0-9]+)/]

# Change the username, password, hostname, and dbname in the following line
#    to match your settings
command_line_output = `/usr/bin/mysql -N -u your_mysql_username -pyour_password \
    -h mysql.yourhostname.com your_redmine_dbname -e \
    "SELECT COUNT(*) FROM issues I INNER JOIN issue_statuses S \
    ON S.id = I.status_id WHERE S.is_closed = 0 AND I.id = #{issue_number};"`

redmine_issue_open = command_line_output[0,1]
if '0' == redmine_issue_open
  raise "Issue ##{issue_number} is not in an open state."
end

Whew! That’s 2 techie posts in a row! I’ll try to come up with something more fun for everyone next time.

Posted in Software Development | Tagged , , , , | 8 Comments

Migrating from Trac to Redmine (on Dreamhost)

I recently switched a couple of side projects I had hosted with Dreamhost from Trac to Redmine.  The process was surprisingly easy.

Even though the actual migration was easy, it took me a long time (almost longer than my patience would tolerate) to find the command that would do the import of wiki data, tickets, milestones, etc. In an effort to pull another soul out of the time suck that is ‘googling for a quick how-to’, here’s a quick how-to:

I use Dreamhost, but these commands should be adaptable to any hosting environment with an ssh terminal.


$cd your.redmine.subdomain
$rake redmine:migrate_from_trac RAILS_ENV="production"

Trac directory []: /home/.orchid/path/to/your/trac_site
Trac database adapter (sqlite, sqlite3, mysql, postgresql) [sqlite]: mysql
Trac database host [localhost]: mysql.your_hostname.com
Trac database port [3306]:
Trac database name []: trac_db
Trac database schema [public]:
Trac database username []: trac_db_username
Trac database password []: trac_db_password
Trac database encoding [UTF-8]: latin1
Target project identifier []: redmine-project-id

This project already exists in your Redmine database.
Are you sure you want to append data to this project ? [Y/n] y

Migrating components....
Migrating milestones..
Migrating custom fields
Migrating tickets........
Migrating wiki........................

Components:      4/4
Milestones:      2/2
Tickets:         8/8
Ticket files:    0/0
Custom values:   0/0
Wiki edits:      24/24
Wiki files:      1/1

The import works pretty well. The only big thing I noticed missing so far is “reply-formatted” text in the wiki page:


 > wiki text that begins with a greater-than sign to indicate e-mail
 > replies did not get imported.

Hope it’s helpful!

Posted in Software Development | Tagged , , , , , | Comments Off on Migrating from Trac to Redmine (on Dreamhost)

The Beginning

Welcome to our blog.

We’re interested in all sorts of things, so we’ll probably post about all sorts of things. You can bet there will be a good deal about software development, but we’ll also post about travel, nature, literature, writing, home improvement, music, and life. We’ll try our best to be entertaining and save the everyday dull stuff for Twitter and/or Facebook.

Posted in Miscellaneous | Comments Off on The Beginning

SHANNON BLOOMQUIST
librarian, writer/editor, floundering guitarist, breakfast addict

SAM BLOOMQUIST
mobile software developer, dog owner, hiker, adventure racer, enemy of bureaucracy
Follow sam2themax on Twitter Subscribe to this blog