homeaboutarchives + tagsshopmembership!
aboutarchivesshopmembership!
aboutarchivesmembers!

The Accidental Shop

posted by Jason Kottke   Jun 29, 2017

Accidental Store

If kottke.org ran a store, what would that look like? (Like this, but hold that thought for a second.)

Lots of things on kottke.org happen by accident. When I started writing here in 1998, it wasn’t supposed to be a blog. An offhand comment by a friend led me to turn a hobby into a job that I’m still doing 12 years later. A lunch conversation last summer with someone I’d never met before saved the site from financial ruin. kottke.org was never supposed to host fan sites for Wes Anderson and Jane Jacobs or vertical blogs about sports, politics, and climate change.

kottke.org was also never supposed to be a store. But as the years piled on, so did the links to all sorts of interesting books, movies, music, and other products that people could buy. I’ve collected many of those products into The Accidental Shop. The shop contains over 2000 items from 19+ years of posts. You can dip into it by filtering by the most recent items mentioned on the site, my top picks, and with a random selection of items. The default view is a weighted combination of recent, top picks, and random which tries to achieve a blend of recency, serendipity, and relevance. Clicking on the item image will take you to the Amazon page for that product. Most of the items are accompanied by a link to the most recent kottke.org post mentioning that item, so the shop also functions as an alternate way of browsing through the kottke.org’s extensive archive.

This is very much a first version of the shop. Right now, all of the items are from Amazon (if you buy something via the shop, I get a small affiliate fee), but I will be adding non-Amazon items to the shop in the near future — stuff like Tattly, 20x200 prints, pastrami from Katz’s, and kottke.org memberships. I will also be adding a localization feature so readers in Canada and the UK will see links to their respective Amazon stores.

So that’s The Accidental Shop. As always, let me know what you think via email or on Twitter.

P.S. Thanks to kottke.org members for their help with The Accidental Shop. I shared an in-progress version with them on my members-only mailing list a couple of months ago and received lots of great feedback and encouragement. If you’d like to help out on future projects or just lurk on the newsletter, become a member today.

Update: How about a little behind-the-scenes info? I’ve been doing web design since 1995, and I’ve always wanted to design and build an online store but never had the chance. So this was pretty fun. To build the shop’s catalog, I went through and scraped all ~25,000 posts I’ve done over the past 19 years, looking for product links to Amazon. The script found almost 2300 distinct items and put them into a database, noting the dates of the initial & most recent mentions and the # of mentions for each item. Then I used Amazon’s Product Advertising API to retrieve all sorts of information about each item, including title, type (book, eBook, kitchen, DVD, etc.), price, image, and the creator (a book’s author, a movie’s director).

Once that was done, I built the shop interface with an admin function for rating each item on a scale of 1 to 4 (or 0, which excludes the item from the public shop altogether). I used the admin interface to rate every single item in the database — it only took a few hours while watching reruns of ST:TNG on Netflix. Then I wrote a script to assign a “score” to each item based on: my rating, how recently it was mentioned, the frequency of mentions, and a couple other factors. The highest scoring items are an eerily accurate reflection of what I am interested in and what I talk about on the site. FYI, the current highest scoring items: Infinite Jest, The Death and Life of Great American Cities, the Kindle Paperwhite, The Victorian Internet, the Harry Potter books, 1491, and The Making of the Atomic Bomb, all of which I’ve mentioned on the site 10+ times.

The layout is pure CSS…I’m using the column feature to create a quick & dirty Pinterest-style layout. Each of the store filters (recent, top picks, random) is randomized to give you a slightly different product assortment with each page refresh. The scoring and rating system, combined with the semi-randomized output, makes for a lively and ever-changing store interface without me having to constantly pick which items go where in the layout. A high-maintenance, just-so layout that’s updated daily would undoubtedly work better — but probably not way better and as a one-person operation, I don’t have that kind of time anyway. This is pretty much the approach I use for all my projects: do the most I can with the least possible effort. Make it appear complex but work simply. As Milton Glaser said: “Just enough is more.”