Marketing in Action #

I happened to glance at the back of the DVD cover for my copy of Trainspotting and was very amused to read the following:

The motion picture sensation that wowed critics and audiences nationwide, Trainspotting delivers a wild mix of rebellious action and wicked humor! It's the story of four friends as they try to make it in the world on their own terms...and who end up planning the ultimate scam! Powered by an outstanding cast of rising young stars (including Emma's Ewan McGregor) and a high-energy soundtrack, Trainspotting is spectacular, groundbreaking entertainment.

Compare this to the much more accurate (if somewhat pretentious) plot summary from IMDB:

A wild, freeform, Rabelaisian trip through the darkest recesses of Edinburgh low-life, focusing on Mark Renton and his attempt to give up his heroin habit, and how the latter affects his relationship with family and friends: Sean Connery wannabe Sick Boy, dimbulb Spud, psycho Begbie, 14-year-old girlfriend Diane, and clean-cut athlete Tommy, who's never touched drugs but can't help being curious about them...

Autosaving Form Data #

Due to my penchant for beta browsers and/or clumsy fingers, I have on more than one occasion lost text I had been laboring over in a form. Given that the modus operandi of most blogging and wiki applications is for the user to dump his/her thoughts in a <textarea>, this is presumably getting more and more common. The usual solution to this is to do all input in a more capable application or, at the very least, to periodically do a select-all-copy on your text. Unfortunately this is all rather tedious and clumsy. OmniWeb is the only browser that attempts to do something about this, but I happen to use Firefox most of the day, thus this doesn't help.

A Firefox extension would be one way to approach this, but I believe I have come up with a more browser-agnostic solution. Simply drag these two bookmarklets to your toolbar:

Autosave and Load

Clicking the first favelet will save all form data in the currently visible page (and continue to do so automatically every 30 seconds). Conversely, the second one will restore saved data for the current page.

It sounds perfect, and it almost is. The primary caveat is that cookies are used for storage, therefore we are limited to ~4K. If you're going to be writing your NaNoWriMo opus in a <textarea>, you may need to look elsewhere. One would think that segmenting the form data into 4K chunks would work, but unfortunately most web servers (Apache included) refuse to accept Set-Cookie headers longer than 4K, even if they are made up of multiple cookies. Solutions to this (beside the obvious workaround of not using cookies to begin with) are welcome.

"Autosave" must be invoked at least once per editing session, which is also not quite ideal. If you are able to edit the HTML behind that page's form, you can insert the following snippet into its source and have autosaving happen at loading time:

<script type="text/javascript">PAS_mode='save'</script>
<script src="http://persistent.info/autosave/favelet.js" type="text/javascript"></script>

This is a hosted favelet, and thus should automatically update itself if/when I find bugs (or work around the cookie length issue). This also means that it will not work in Safari (as of version 1.2). Mozilla and MSIE behave well, though getting it to operate in both took some work. For example, both browser change JavaScript behavior based on DOCTYPE and/or MIME type. Fun stuff.

Transitioning to del.icio.us #

I've noticed that I'm not really an early adopter, even though I think of myself as one. The most I can aspire to is that I'm aware of (trendy) things pretty soon after they're introduced, but using them is another matter altogether. For example, I was aware of RSS in its initial My Netscape incarnation, but I didn't start using it (via an aggregator) until mid 2002. Similarly, fancy (and clever) JavaScript-based UIs have been possible for a while, but I only really got into it this year (early experimentation notwithstanding). It took me a year to finally see the light with Bloglines. Movable Type? A year and a half. The list goes on.

As further proof of my laggardnesses, only recently (i.e. today) did I make the switch to del.icio.us, the social bookmarking site that all the cool kids are using. My previous solution to this problem was a "To-do" folder in my bookmark toolbar, to which I would add items and (much more rarely) visit and/or delete them. del.icio.us may not change that behavioral pattern, but at least now I can ignore my "oh, this is interesting" links while safely knowing that they are all tagged and ready for searching at some later date. And to be safe, it all gets backed up nightly.

Given my recent progress, expect me to use Flickr in about six months.

"We'll make it up on volume" #

I've heard of the razor-and-blades business model, and obviously some companies have gone beyond that (see wireless carriers giving away free cellphones). However, leave it to the razor industry to take things to the next level, physical product spam!

Free Quattro Razor Sample

This showed up (unsolicited) in my mailbox. I suppose it achieved its purpose, since I was compelled to try it. However, I think I'm sticking with my Mach 3. Nice try.

DIY Large Panorama Prints #

Panorama Print Photo

Although the hacks on this site have mostly focused on software, they do occasionally have a real world component. For example, I've always had a fascination with panoramic photos. Unfortunately, while it's been getting easier and easier to make your own, getting them printed is still a hassle. Ofoto allows you to order 20 x 30 prints for $23 a pop, but even that is not big enough when you consider the elongated aspect ratio of most panoramas.

However, if one is a bit more creative with the framing, large scale prints can still be achieved. For example, IKEA sells some square, 20 x 20 frames that would be a perfect fit for the above Ofoto prints. The color does not interest us since we only wish to take advantage of the entire surface area; what does matter is that the frames come with a glass plate that can be used to sandwich the photo and some nearly-invisible clips to hold everything together. The fact that they are $10 each doesn't hurt either.

Panorama

In my particular case, I wanted to use a panorama I had made at Niagara falls. The original was made up of five 6 megapixel photos taken with my Digital Rebel and stitched together with Canon's surprisingly decent bundled software. The panorama was split into four square sections, padding was added to let each piece have a 2 x 3 aspect ratio and then the prints were ordered (Ofoto currently has a 25% discount promotion, thus making the high cost easier to swallow). When doing such large prints, having a high resolution file matters - in this case I started with a 7000 x 1750 image. Another image aspect relevant at this size is the noise level, so shooting with a digital SLR (or another camera with a large sensor) on a low ISO setting like 100 is key.

Cutting up the prints and attaching them is not rocket science, but I did notice that the measurements that IKEA gives for the frames (50 x 50 cm or 19 ¾ " x 19 ¾ ") are not absolutely precise, and so my prints ended up being slightly smaller than the frame area. Being a bit more generous (e.g. using the full 20 inch height of the print) may be a good idea. The end result is much more satisfying than pre-made prints I have ordered, both from a scale perspective as well as a personalization one.

Automatically Generated Blogroll from Bloglines #

I previously described how I automatically generate my blogroll by exporting NetNewsWire's subscriptions (with the hierarchy intact), generating a snippet of HTML and then embedding it into a MovableType template that's rebuilt automatically (I haven't upgraded to 3.1 yet, thus its support for dynamic pages won't help me). In the meantime, circumstances have changed (I don't use the same computer throughout the day, or even the same platform), which have compelled me to switch to the equally great Bloglines as my aggregator. As a result, I now needed a new way to share my subscriptions.

Thoughtfully enough, Bloglines does provide a way to generate a blogroll, but it has a couple of limitations. The generated HTML is a bit clumsy, not using <ul> or <li> tags for what is clearly a list of data, and also being a bit too verbose by applying a blogrollitem class to every single item — perhaps I have drunk the semantic markup Kool Aid too deeply. But more importantly, the list only includes the website URLs for the sites, and makes no references to their feeds. A better solution is to use the Bloglines Sync API since the OPML file it exports has both the folder hierarchy and the feed URLs. I initially considered just writing an XSLT to turn the OPML into the HTML that I needed, but in the end the WebService::Bloglines Perl module turned out to be more convenient.

The net result is bloglinesBlogroll.pl, a simple script that does all of the above. It is invoked every night via a cron job, and its output is visible in the Daily Reads section of the sidebar.

Squatters of the world, unite! #