Dear Blurb: You own a nifty domain name. Please use it.

A suggestion for the kind folks at Blurb.com: While I don’t at all mind that you send me e-mail containing useful product and service updates, I’d prefer that they not be littered with blatant, undecipherable URLs for some crappy 1990’s-era click tracking service.  In fact, it would be wise to include the Blurb.com URL at least once in the message–even if you insist on stuffing it in a disclaimer at the bottom.

The good news is that this went out on a Friday night.  So, there’s an above-average chance that recipients were either drunk or not paying attention, and actually clicked through to view the intended message.

Better luck next time.

INTRODUCING BLURB BOOKSMART 2.5

Blurb BookSmart® 2.5 is available for download, and includes
many new features that give you even more control in the
customization of your book layouts; how images are accessed,
viewed, and filtered; integrated help options within BookSmart;
and increased stability of the application itself. You can
grab it here:

http://links.mkt2330.com/ctt?kn=4&m=4247623&r=NDg1MTIwMjIyNgS2&b=2&j=MTM4NjY2MDYyS0&mt=1&rt=0.

We also wanted to make sure you’re aware of our new flat-rate
shipping option, which significantly reduces the shipping
costs when you order between 1 to 5 books – using U.S. Ground
or International Economy options – as follows:

- US: 1 to 5 books = $6.99
- Canada: 1 to 5 books = $7.99 (USD)
- Europe: 1 to 5 books = 5.99 Euro
- UK: 1 to 5 books = £3.99
- Rest of world: 1 to 5 books = varies per order

Get all the details on the Blurb Blog:

http://links.mkt2330.com/ctt?kn=5&m=4247623&r=NDg1MTIwMjIyNgS2&b=2&j=MTM4NjY2MDYyS0&mt=1&rt=0

Happy Bookmaking,
The Blurberati

——————————

You are receiving this service-related notification consistent
with the Terms and Conditions of Blurb, Inc. If you would like
to receive more information regarding new products and
services of Blurb, please opt-in to receive those notifications.

Subscriptions - http://links.mkt2330.com/ctt?kn=2&m=4247623&r=NDg1MTIwMjIyNgS2&b=2&j=MTM4NjY2MDYyS0&mt=1&rt=0

Blurb - http://links.mkt2330.com/ctt?kn=7&m=4247623&r=NDg1MTIwMjIyNgS2&b=2&j=MTM4NjY2MDYyS0&mt=1&rt=0
Privacy Policy - http://links.mkt2330.com/ctt?kn=3&m=4247623&r=NDg1MTIwMjIyNgS2&b=2&j=MTM4NjY2MDYyS0&mt=1&rt=0

Blurb, Inc., 580 California Street, Suite 300, San Francisco, CA 94104
© 2009 Blurb. All Rights Reserved.

If you wish to unsubscribe from this mailing,
please click to unsubscribe.

http://links.mkt2330.com/servlet/OneClickOptOutServlet?m=4247623&r=NDg1MTIwMjIyNgS2&b=0&j=MTM4NjY2MDYyS0&mt=1&rt=0

View this email in your web browser.

http://links.mkt2330.com/ctt?kn=1&m=4247623&r=NDg1MTIwMjIyNgS2&b=2&j=MTM4NjY2MDYyS0&mt=1&rt=0

Share This

Errors importing iCal data (iCalendar) into Google Calendar

While attempting to import iCal export (.ics) files into Google Calendar, I’ve encountered the following errors:

  • Failed to import events: Unable to process your iCal/CSV file. (Google, Bing)
  • HTTP/1.1 403 Google Calendar doesn’t support storing of “To Do” (VTODO) components (Google, Bing)

It appears as though Google Calendar is choking on both the VTODO and VALARM stanzas within the export file.

VTODO data is easy to remove, as it will appear near the end of the export file.  Find the first instance of “BEGIN:VTODO,” and remove all data beginning with that line and ending with the final “END:VTODO” instance (take care not to delete the “END:VCALENDAR” line, as it will invalidate the export).

VALARM data is problematic, as it is nested within each VEVENT stanza.  Depending on the size of the export file, it could easily contain hundreds or thousands of these.

The fast and dirty solution is to remove these elements from the iCal export file, and then import the “clean” version into Google Calendar.  Note that imported events in the target Google Calendar will no longer contain alarms–these events will need to be updated manually, if desired.

Following is a simple Python script that will remove these stanzas and produce a new file that should import properly.  After downloading, be sure to edit the INFILE variable at a minimum.

Head on over to Code for the latest version (iCal-to-GCal).

It’s worth noting that this script can be used to quickly remove data from any file that contains similarly-formatted information.  Just update the TAGS list accordingly.

UPDATE01: Wondering whether the integration of Tasks into Google Calendar will alleviate the VTODO handling issue?

Share This

E-mail items to Instapaper

I use Instapaper every day, as a means of saving off pages that I come across but don’t have the time to read/evaluate immediately.  And when I’m working on a computer this is all well and good–the Instapaper bookmarklet allows me to save pages quickly and move on.

The problem arises when I’m viewing content on my mobile phone, as the concept of a bookmarklet in any mobile browser that I’ve had the pleasure of using does not exist.  To make matters worse, I’m one of the five or six people on Earth who does not own an iPhone.  So, the surely-pleasant Instapaper apps are dead to me.

For some time, I’ve been using the “Send this Page” functionality built in to my mobile browser to e-mail pages to a mailbox for further processing.  Some simple mailbox rules and a short list of known source addresses make this a viable solution.  Unfortunately, viable is never good enough.

To scratch this itch, I’ve thrown together a small collection of scripts that will:

  1. Retrieve messages from an IMAP mailbox (this needn’t be a dedicated inbox–a specific folder, Gmail label, etc. will suffice).
  2. Validate senders using a whitelist.
  3. Extract things that look and smell like URLs from message bodies (should handle crappy HTML messages, too).
  4. Submit URLs to Instapaper.

Surprisingly, it works (for me).  Requires Python 2.5+ (haven’t tested with 3.X, but should work), and an IMAP-enabled mailbox of some sort.

Head on over to Code for the latest version (IPMailer).

Share This

Breakwater Inn Sunset

Sunset as seen from the Breakwater Inn, Hatteras, NC.

Sunset at the Breakwater Inn

Share This