A long-weekend trip with extended family demanded that we temporarily upgrade our vehicle to a minivan, so I rented a Dodge Grand Caravan on Thursday to take me, Oliver, Catherine and her parents to Halifax and back.

Pulling out of the Avis lot on University Avenue I was surprised to realize that this was the first time I’d been behind the wheel of a minivan, ever.

Indeed it was the first time I’d driven a Dodge of any sort since the days of learning to drive on a Dodge Dart in the 1970s. It only took a few minutes, fortunately, to recapture the muscle memory (wipers on the left, lights on the dash, and so on). It was like putting on an old pair of shoes. Albeit an old pair of shoes upgraded with myriad cup holders, “stow and go” seats, and Bluetooth audio. Even though the Grand Caravan felt impossibly big (2-1/2 feet longer than my Jetta), it turns out that it’s about the same length as the 1974 Dart. So I figured that out too.

The room certainly came in handy: we comfortably accommodated 5 people and had a seat to spare and room for lots of luggage. I moved a double-sized futon before we headed out and I could have easily carried 9 more with the seats stowed. It’s easy to see why the minivan format is preferred by families who need to move around a lot of bodies and stuff.

We pulled into Halifax on Thursday night in a driving rainstorm and found our way to the Atlantica Hotel (née Holiday Inn Select; $73/night on Hotwire). The hotel was perfectly fine: clean, central, comfortable, flawless wifi, and a servicable restaurant. The only weaknesses were the parking (and that only because the basement parking garage, while perfectly fine for a Fiat 500, was hard to navigate in the behemoth) and a gaggle of hyperactive kids that joined us on the 8th floor on Saturday night and decided not to sleep. But we worked around that, and everything worked out just fine.

Otherwise in Halifax:

  • BOOMburger and the Orange Lunchbox have nothing to fear from Relish (opening in Charlottetown soon): I had dinner there by myself on Thursday night (after addressing a server issue while the rest of the clan ate elsewhere) and found the burger tasteless, over-priced and the concept pompous (staff were super-helpful and friendly, but that couldn’t save the meal).
  • I’ve decided that my favourite place for coffee in Halifax is Just Us!: I had an excellent macchiato two days in a row, once at their Barrington shop and the next day at their massive Sankt Oberholz-like Spring Garden Road outlet. The coffee was great, as were the staff and the vibe.
  • Catherine and I saw Midnight’s Children at The Oxford on Friday night, a wonderful old full-sized theatre (the last of its kind in the Maritimes?). The movie wasn’t life-changing, but it was a nice night out. We tried to have a quick bite to eat across the street at Wasabi House but they were slammed to the point where no eye contact was made after standing at the front door for 10 minutes, so we recoiled to King of Donair across the street for a (horrible) slice of pizza. We ended up the night at Jane’s on the Common where we had “I’ve got better things to do with my time” service, Catherine had excellent duck and I had bland and disappointing puttanesca.
  • The museum at Pier 21 was as interesting as ever (we’d been there when Oliver was younger, but this was our first visit back in a decade).
  • The new Halifax Farmer’s Market continues to strike me as soulless, unimaginative eco-architecture. But we did have some fine alcohol-free ginger wine samples, and a nice lunch at Selwood Green.
  • Meanwhile, the rival Historic Farmer’s Market has all the soul, but, alas, a shrinking collection of vendors. Fortunately two of those vendors are Costas Halavrezos’s “The Spiceman,” selling a dizzying array of spices from around the world with wit and wisdom, and Big Life Whole Foods, which made me a stand-up spelt pancake covered in blueberries for breakfast. 
  • The library at NSCAD has an impressive collection of books on typography, design and letterpress printing; I spent a pleasant hour there while Catherine and Oliver were at the Discovery Centre. Around the corner I picked up a packet of ink knives for $2, and some disposable fountain pens, from the NSCAD Art Supply Store, which is a pleasant place to shop for arty things.
  • We had supper on Saturday night at Athens Restaurant on Quinpool Road. Generally good service, and a passable though not particularly inspiring menu of Greek food.
  • There’s an Apple Store at Halifax Shopping Centre. Nothing to write home about, design-wise; otherwise like any Apple Store in any upscale mall anywhere. Still, handy.

We headed back to the Island on Sunday morning, making the trip in a quick 4 hours. 

Garth Taylor made his annual phone call to me tonight to alert me that he’ll be back at the Charlottetown Farmers’ Market this Saturday. Given that Garth was threatening to retire 4 years ago, this makes for the slowest retirement ever. Stop by and welcome him back.

One more small contribution to the public understanding of the release of names of companies that received PNP investment: use this tool to search for specific companies.

Quickly assembled thanks to the very capable and flexible DataTables plug-in for jQuery.

Using open source tools to spread open source data: that’s what it’s all about.

Update: I’ve now got three searches in place:

  1. Search the PNP list released by the Province
  2. Search the PNP list merged with the 2008 OpenCorporations.org data — remembering that this is old data, this search allows you to search the “description of business”, and can be helpful in identifying numbered companies.
  3. Search the PNP list merged with the 2008 OpenCorporations.org data, with shareholders and officers — again remembering that this is 2008 shareholder and officer data, and that the shareholders and officers involved in November 2008 may not have been shareholders and officers when the PNP investment was received, this search allows a “people search” of PNP companies by officer (president, shareholder, etc.).

I don’t have strong opinions about the propriety of the PNP program.

I do, however, have strong opinions about what it means for a government to “release data.”

The Province of PEIcomplied” with a court order to release the names of companies that received investment under the Provincial Nominee Program by releasing a PDF file on its website.

PDF, while certainly readable on a variety of digital devices, is not “open data” in any real sense.

To solve that issue, I ran the PDF file through pdftotext and then stripped out the page headers with a text editor using regular expressions.

The result is pnp.txt, a simple ASCII text file with the 1,354 company names from the PDF.

Update: I’ve merged the PNP data with the 2008 OpenCorporations.org data and 933 matches (69% of the PNP companies); you can download this as pnp_plus.csv (comma-delimited ASCII) or pnp_plus.xml (XML). Or search with this tool.

Update: I’ve merged the PNP data with the 2008 OpenCorporations.org data and included the shareholders and officers of the company, getting 2708 matches. Use with caution, as this data is 4 years old now, and shareholders and officers listed were not necessarily in place when PNP investment was received. Download this as pnp_people.csv (comma-delimited ASCII). Or search with this tool.

Some experimenting, over the course of the last week, with a business card for Youngfolk & The Kettle Black. I’ve settled on the bottom-right as the design I’ll print (these are all rough proofs pulled with a stamp pad), with the ampersand underprinted in red and everything else in black. I was rather wedded to the “upside down Y” idea for a long time, but as soon as I overlaid the larger ampersand, and filled up some of that volume in the middle, a righways-Y suddenly became a lot more appealing (and, as it happens, a hat-tip to the erstwhile former occupant of 98 Water Street, Café Ampersand).

Youngfolk and The Kettle Black Cards

Actual conversation en route to school this morning:

“I got an email from your teacher last night. She said you had a good day yesterday.”

“She’s a Newfie.”

“Oh, from Newwfoundland. From what town?”

“Why?”

“There are a lot of towns in Newfoundland with funny names. Like Bay Bulls.”

“Oh, like the fish translator.”

“The fish translator?”

“Yes, on the Internet, the fish translator?”

“Oh, you mean Babelfish?”

“Yes, Bay Bulls Fish.”

I needed to send $1500 CAD from Canada to Ukraine, and so did some research over the weekend as to the various ways of doing so. Here’s what I found.

Method Fee Result in USD Exchange Rate Effective Cost
Western Union $46 $1462.50 0.975 $83.50
Moneygram $74 $1467.00 0.978 $107.00
Ria $20 $1453.95 0.9693 $66.05

(For comparison, the Bank of Canada exchange for USD at noon today was 0.9965; I received a rate of 0.9787 on an unrelated deposit at Metro Credit Union today).

Other options suggested were a bank wire transfer (I was quoted $35 plus undetermined “intermedia transfer bank” fees, with no ability to tell what the net deposit would be), PayPal (good for many things, but doesn’t currently supported payout to Ukrainian bank accounts) as well as the online services Currency Online and HiFX (possibilities, but it’s not clear to me how you get money in to their systems if they don’t have a local presence; if by wire transfer, it might end up being more expensive because of the local wire transfer fee).

I ended up doing the tranfers at The Cash Store, a storefront on University Avenue that is otherwise in the business of cheque cashing and payday loans, and thus a storefront I had, until this point, seen as shady and best avoided. As it turns out, the friendly and helpful clerk there was able to process my request quickly, and while there was some stumbling on the (vast number of) data entry fields on their transfer system, I was assured that should I return to transfer again, my information is all on file it it should be point-and-click-ish.

I welcome suggestions of other solutions to the problem.

My friends at Youngfolk & The Kettle Black on Water Street in Charlottetown have opened a new branch on Victoria Row in the space formerly occupied by Poffertjes.

The new space is tiny and there’s just room for a counter along the wall, with no place to sit. It’s a stand-up or take-out place, and it’s as close as you’re going to come to the feeling of ordering coffee at a bar in Italy in this province (and the coffee is, it must be said, very, very good).

I’ve been for coffee twice now, and both times I’ve observed that, despite (or perhaps because of) the confined stand-up-only space, there’s a social aspect to the new branch that’s unique in the city: personable co-owner Adam Young has confirmed that people stay “400% longer here than in the other place,” and, in my experience, there are conversations between customers that you would see neither at Youngfolk Mark I nor, indeed, at Tim Hortons or Starbucks or any other coffee place in town. 

Whether it’s the forced proximity, or the need to stand, or some sort of social kevorka in the air, strangers seem comfortable with starting a conversation with each other while leaning against the wall enjoying coffee.

With its proximity to the Legislative Assembly, which starts sitting again next week, my great hope is that Youngfolk Mark II becomes a hotbed of political thought and debate, meted out over espressos while winding down after Question Period. I’ll buy the first round, Hon. Premier.

We’ve been using Trac as a ticketing system to manage the work of our web team at Yankee Publishing for five years now — ticket #1, “Correct long-range weather banner,” was created November 7, 2007. We’re now up to almost 6000 tickets in the system and the degree to which Trac has improved our workflow, communications and ability to look back in history is hard to overstate: it’s been a truly transformative tool.

Screen shot of emailing a ticket to Trac The Resulting Ticket in Trac

That all said, there’s always remained a level of “ticket friction” with our use of Trac: it’s really rather easy to open up a web browser, fill out a new ticket form, and create a ticket, but it still requires, well, opening up a web browser and filling out a new ticket form.

I’ve always wished we had the ability to use email to create tickets in Trac, but there’s always been a piece or two missing from our ability to do this; last week, though, I figured out a simple way to do this by knitting together Postmark (a system we use for sending transactional outbound email) to handle the incoming email, with email2trac, an extension to Trac that handles all the nasty email-parsing bits.

Here’s how I did it.

Install email2trac

Installing email2trac is easy. On the server where we run Trac itself, I did this:

wget ftp://ftp.sara.nl/pub/outgoing/email2trac.tar.gz
gunzip email2trac.tar.gz
tar -xvf email2trac.tar
cd email2trac-2.6.2/
./configure
make
make install

The result is /usr/local/bin/email2trac with configuration then done via the /usr/local/etc/email2trac.conf file, which in our case looks like this:

[DEFAULT]
project: /web/trac
debug: 1
black_list: MAILER-DAEMON@
drop_spam : 1
drop_alternative_html_version: 1
email_quote: >
html2text_cmd:
ignore_trac_user_settings: 0
inline_properties: 1
reply_all : 0
spam_level: 5
strip_quotes: 0
strip_signature: 0
ticket_update: 1
ticket_update_by_subject: 1
umask: 022
verbatim_format: 0

There’s good documentation for all of the various options — in most cases the defaults were fine for our setup.

Create the Inbound Hook

While Postmark Inbound helpfully parses email into JSON, email2trac actually needs the original email, or a reasonable facsimile of it, to parse into a Trac ticket, so our web hook needs to take the JSON from Postmark and reconstitute an email message.

The PHP script I created to do this is quite simple: it uses the Mail_Mime PEAR package to take values from the JSON-encoded message we get from Postmark and create a new MIME-encoded email that can then be passed to email2trac: it takes the JSON as input, writes out a MIME-encoded file as output, and then sends this to email2trac. It handles attachments (it base64 decodes them into local filesystem files and then adds them back as MIME attachments).

This PHP script becomes the “Inbound Hook” for Postmark. So if I call the script create-trac-ticket.php, and put it online at, say, https://example.com/trac/create-trac-ticket.php, then that’s what I paste into Postmark as the “Inbound Hook.”

Set up Postmark Inbound

Setting up Postmark Inbound is easy: under the “Credentials” tab of a Postmark server, you’ll find an email address that looks like somethingsomething@inbound.postmarkapp.com (where somethingsomething is a long hex value). That’s the email address you’ll send email to when you want to create a Trac ticket.

On the “Settings” tab of your Postmark server you then set up an “Inbound Hook” which is a URL where you want to direct the JSON-encoded version of any incoming email to. Just paste in the URL for the PHP script you created to do this.

Set up an Email Alias

I didn’t want to have team members required to remember a complicated somethingsomething@inbound.postmarkapp.com address to send ticket to — I wanted something simple, like ticket@example.com. So I added a user to our Google Apps account with a simple email and forwarded its email to the more complex somethingsomething@inbound.postmarkapp.com email address. There’s a need to confirm forwarding addresses when this is done; fortunately Postmark provides a way to inspect all incoming email, so you just need to look under the “Incoming” tab of your Postmark server for the Google confirmation email.

Setting Ticket Options

Once all the pieces are in place, creating tickets is easy: you just send email to the address you created, with the ticket’s title in the Subject, the ticket’s description in the body of the email. The email2trac script is smart enough to assign you as the ticket’s “reporter” as long as you email from the same address you’ve connected to your Trac account. You can also include macros in the body of the email to affect the setting of different ticket options. For example, if I add:

@owner: billg
@priority: blocked
@severity: Critical
@cc: hankj,floj
@datedue: 11/20/2012

Then the resulting Trac ticket will have its owner, priority, severity, cc and datedue fields set appropriately.

Using up an Email Signature

I went one step further toward frictionlessness and set up a Mail.app signature like this:

@owner: peter
@priority: sprint
@severity: Normal

When I’m creating a ticket, I just select this signature and change the options as needed.

Why this is Great

This is a great improvement to our Trac system because it allows not only for less friction when creating tickets — it’s really easy, for example, to grab a screen shot with Skitch and create a ticket with it — but also because it allows any system that has the ability to send or manipulate email to become a Trac ticket generator. We can, for example, build alerts into our Nagios system that will result in Trac tickets being created when systems fail. Or build local scripts with AppleScript to make ticket creation even more frictionless. We’ve only begun to scratch the surface of what’s possible over the last week, and already we’re considerably more productive.

The news has just come in over the wire that the Homburg, err, Holman Grand Hotel has gone bust and will close on Monday.

For those wishing a refresher course on how we started down this road, I invite you to read How did Charlottetown end up with a new hotel covered in beige aluminum siding? for the blow-by-blow from the initial announcment of the hotel in 2007 up to its completion and opening last year.

Surely the implosion of this “did anyone every actually think this was a good idea?” colossus should allow us to move on to a post-Homburg era here in Charlottetown. 

Let’s finish the job: close the crazy tunnel under Grafton Street, reinstate the name “Main Stage” on the Confederation Centre of the Arts theatre (what is “Homburg Theatre” now other than a reminder of our propensity to fall in thrall to the grand delusions of impresarios), and make a point of thinking twice before doing anything like this again.

About This Blog

Photo of Peter RukavinaI am . I am a writer, letterpress printer, and a curious person.

To learn more about me, read my /nowlook at my bio, listen to audio I’ve posted, read presentations and speeches I’ve written, or get in touch (peter@rukavina.net is the quickest way). 

I have been writing here since May 1999: you can explore the 25+ years of blog posts in the archive.

You can subscribe to an RSS feed of posts, an RSS feed of comments, or a podcast RSS feed that just contains audio posts. You can also receive a daily digests of posts by email.

Search