Pomodoro TechniqueTask management is the bane of my existence. I’m easily distracted by shiny objects, prone to flights of fancy, and generally unreliable about estimating the time required to complete a project. In this, I don’t think I’m much different from the average software developer; we tend to be overly-optimistic about how easy a job will be, forgetting how many blind alleys we wander down before finding the “easy” road to success.

Recently, though, while listening to Rob Long’s Martini Shot podcast1, I discovered a deceptively simple and surprisingly effective approach to task management: The Pomodoro Technique.

The Pomodoro Technique (named after the whimsical tomato-shaped kitchen timer with which Francesco Cirillo perfected it) boils down to a very simple strategy:

  • Make a list of the things you need to finish.
  • Set your timer for 25 minutes and do one thing–only one thing, and only that thing–until the timer rings.
  • Take a 5 minute break.
  • Repeat.
  • After four of these 25-minute sessions (the unit is called a “pomodoro”), take a 15 minute break.
  • Repeat.

Simple, but surprisingly hard to do.

Multitasking has become the standard mode for most of us in this technologically-connected, ever-accelerating world. If we’re not doing two or more things at once, we feel like we’re not getting anything done. But a great deal of new research suggests that multitasking doesn’t really make us more productive; indeed, it can make us less productive.

Humans, it turns out, don’t run multi-core processors. We’re more like the old Windows 3.1 “multitasking” model: fast at switching between tasks, but really not capable of truly doing more than one thing at a time. As a result, the multiple things that we do suffer when we switch contexts, and we end up doing several things poorly instead of one thing well.

The Pomodoro Technique is explicitly anti-multitasking. During the “pomodoro” period, you just work on your task list: no checking e-mail, taking calls, surfing the web, talking to co-workers. It’s a heads-down, fully-focused sprint to the end of the task, with a much deserved rest at the end. And for someone who’s used to “busy-ness,” it’s exhausting.

My first few days trying the technique were frustrating and tiring. I felt the oppression of the ticking clock, the twitching desire to check my e-mail once or twice just in case, and an exhausted relief at the end of a session. But then I started to internalize the “pomodoro” time unit; I found myself adapting to the rhythm quite naturally, and the time allotted to a task seemed to expand into an ample amount. Indeed, I’ve begun to feel time slow down in a surprising way: if I glance at my timer now and see that I still have five minutes left, I know that I can still get quite a bit done.

The technique also helps me be a little smarter in how I do my job. Before, when I wasn’t letting the timer set my pace, I was prone to investigate many more blind alleys. I might end up losing an entire day to one bad decision, backing out hours of effort. But knowing that I have a limited amount of time in which to finish my task, I now opt for the simpler approach. Rather than re-architect a huge chunk of code, I’ll stop and think things through, and usually find that a simple, elegant, and easily-implemented solution is available.

That five-minute break at the end is just as important as the twenty-five minutes before. It’s the time to take care of the coffee cup and the restroom, to stretch and crack knuckles and read the news, but it’s also time to switch off the task-oriented part of the brain and let the unconscious burble up a bit. If a “pomodoro” ended in frustration, with a task unfinished and more tasks piling up, I’ll often find this five-minute break from the project lets me come back refreshed and more likely to see my way out.

The Pomodoro Technique works very well in some phases of software development, and is easily incorporated into Agile and other iterative methodologies. When I have a nice collection of features to implement with clear requirements, or when I’ve got a set of bugs that the testing team has sent my way, the Pomodoro Technique excels: my tasks are clearly defined, easy to organize, and I can put my head down and get to work. And I could imagine a development team adopting the technique very effectively (especially if they use a timer in meetings: meetings that end when the buzzer goes off! There’s a concept worth implementing … ).

I’m not sure, though, that it’s as easy to apply to every technology job. I’ve had positions in the past that were much more reactive, where my daily work was largely driven by incoming requests and messages from customers and co-workers. In a culture that insists on “urgency” as a core value, the Pomodoro Technique’s managing of interruptions and “protection” of the “pomodoro” could be problematic. Of course, there are more problems than just task management in a culture like that …

I’m also unsure that it is as easy to apply in the more nebulous “design” phases of a project. There’s a good deal of exploration, guess-work, and fiddling about that goes into discovering an architecture for a reasonably-sized application. When I’m developing something from scratch, with sketchy requirements and an unfamiliar environment, it’s difficult to identify the kinds of clear-cut tasks that the Pomodoro Technique demands. And fuzzy, indeterminate tasks are exactly the kind of thing that lead one down the rabbit hole of multitasking chaos.

The other trap that I find myself trying to avoid is biting off less than I can chew. Given the time constraints, and the focus on completing a task (or set of clearly-defined tasks) before moving on, I sometimes defer larger jobs that might span multiple “pomodoros.” I feel a bit like a member of a millenarian cult, unsure if I start darning my socks because the Lord might return while I’m in the middle of it.

All in all, though, I’ve found it to be a productive technique. By turning off the multitasking trap and setting boundaries around my work, I’ve managed to become far more productive in a few weeks than I would have expected. I only hope that no one notices and starts to expect it to continue …

I should note a few of the tools I’ve found useful in exploring the Pomodoro Technique:

  • Task list worksheets (and a free download of the book) are available at the official Pomodoro Technique website; I use the paper worksheets and a pen rather than any fancy-schmancy technology, though there are quite a few programs based on the method (even an iPhone app or two if that’s your thing).
  • A simple timer program, Egg Timer Plus 3.12, from Sardine Software. Though available in a free version, I recommend spending the $5 to get the license: I created three pre-set timers (25, 5, and 15 minutes), and set different sounds to go off at the end of each. It was about the same price as a real egg timer, and less likely to get lost.
  • This whimsical introductory slideshare from Staffan Nöteberg makes the case for the technique, and offers a good thumbnail sketch of its methods.

All in all, a pretty cheap investment for some very good initial returns.

1I highly recommend the Martini Shot podcast to anyone who works in a technical or creative role. Mr. Long is a veteran sitcom writer who made his mark with “Cheers”; his brief spots are largely about the plight of Hollywood writers, which may seem a far cry from the life of the code monkey but is actually quite applicable. Sitcom writers get “notes,” we get bug reports; they have producers, we have project managers; they produce their work in lonely seclusion only to face the ignorant and capricious criticism of the suits in the corner office, and we … well, we do the same thing. Almost every week I find some little nugget of wisdom and insight that, if it doesn’t improve my work, at least gives me a wry and knowing chuckle.

Tags: , , , , , , , , , , ,

FeedlyGoogle Reader has been the core of my on-line news reading life for a couple of years now. It’s a great tool for keeping up with a whole range of news sources that use RSS: I organize my feeds into categories (News, Literature, Bicycling, etc.), skim the lists of news articles from any computer since it’s all stored in “the cloud,” and use the “star” feature to keep a list of things that deserve more than a cursory read.

Google ReaderFor all its back end power, though, Google Reader’s interface is a tad utilitarian. (It’s the sort of interface I would probably have designed myself–as my project manager says of my current work (the UI has, thankfully, been handed over to a more competent designer), “it takes a mother to love it.”) The design owes much to the e-mail model, with folders for each topic and a bold unread count. You can see at a glance what new articles are available in each category, and expand the folder to see what’s available for each feed in that category. Articles are listed in the right pane in chronological order, though you can choose to sort by “magic,” which uses an algorithm that takes personal habits in sharing/starring and article popularity into account.

The problem with this interface, at least for me, is that it invokes a sort of anxiety when I see large numbers in the unread count. It’s very much like an e-mail interface, and I dread a full e-mail inbox. I’ve occasionally sat up far later than I should browsing Google Reader articles in an attempt to get the count down to zero.

I recently discovered Feedly, a web site and browser plug-in alternative to Google Reader, via Adria Richards (whose “But You’re a Girl” site has been in my Minneapolis-area feeds category since she broke the story of the Norm Coleman campaign’s shoddy computer security practices, though she should really be in my technology category). For a couple weeks now I’ve been using Feedly as my primary RSS reader, and I’ve been very pleased with it.

Feedly is built on the Google Reader backbone; it uses your Google Reader subscriptions in generating its pages. It also adds some content of its own–Twitter feeds, YouTube links, Amazon shilling associate links–and organizes content into attractive and easy-to-read layouts. You can choose different layouts–a “magazine” layout with featured articles at the top, picture and video grids, or more utilitarian summaries–for each category or feed, allowing you to customize your reading to fit your content.

FeedlyReading content through Feedly is easy and enjoyable. The headlines are rendered as links; clicking on a link opens a modal window within the page that displays the item’s summary content (including embedded media, which can be played within the page if the embedding technology supports it); the window is dismissed with a “minimize” link. Feedly offers “Cover”, “Digest”, and “Latest” views that show the most recent content (using an algorithm that utilzes Google Reader’s “magic” to surface personalized features), and presents a view of each of your categories; customization options let you modify the layout, colors, and optional components (Twitter, Amazon, Flickr, and others). There’s even a “Feedly mini” option, which provides a floating toolbar on other browser pages that surfaces related content from Feedly, and provides tools for sharing pages on Twitter, Facebook, and Google Reader.

Best of all, the Feedly layout reduces that anxiety of a giant list of unread articles. It still provides you with a count of unread articles, overall and by category or feed, but it’s not as prominent as in Google Reader. Instead, the layout is geared toward bringing the most recent articles to the top, along with articles that are ranked high in the “magic” algorithm, so the most interesting and useful pieces are the most visible. I currently have some 3,000 unread articles in my collection of RSS feeds, but I’m not bothered at all by it because the information that I see on the page is so much more compelling.

FeedlyThe only drawback to that I can see to the Feedly service is that it’s delivered as a browser plugin. It’s available for Firefox, and in a limited fashion for Safari and Chrome, but not for Internet Explorer or Opera. Because it’s a plugin, it’s less “cloud-friendly” than Google Reader alone: I can’t access my Feedly page at a public terminal, for example, though I am able to use it seamlessly across the three computers (Ubuntu Notebook, Windows 7 laptop, and Windows XP laptop) that I use most often. In those rare cases where I do have to use a non-Firefox browser on a system I don’t control, Google Reader continues to be my choice for reading the news.

Tags: , , , , , ,

Spam–the junk message type, not the tasty luncheon meat from Hormel (pan fried and served on rice, it really can’t be beat…)–is a significant annoyance on all the “Web 2.0″ services, but nowhere more so than on Twitter. Twitter meets all the criteria for an easy spam target:

  • Low barriers to entry: scores of free accounts can be easily and automatically created through the Twitter API
  • Large audience: some 19.2 million users in October 2009, according to ComScore
  • A pervasive culture of implied trust and promiscuous sharing

If spam were a viral infection vector, Twitter would be an over-crowded, fetid swamp where not nearly enough people wash their hands.

The Stop Twitter Spam site maintains a list of tools for combating spam, and also a list of feature proposals (many of which have been implemented) that could help mitigate the problem. And while these are all good tools and useful suggestions, they’re not a panacea: the Twitter spam werewolf is impervious to silver bullets, because the open nature of the service makes spamming so cheap and easy.

Short of increasing the barriers to entry, limiting the ease of communication, or restricting the number of messages that can be sent–all things that would cripple Twitter in its current incarnation–there’s not much that can be done in a centralized fashion to solve the problem. Instead, the cost of fighting the spam lands largely on the non-spamming users. And there’s where the battle will ultimately be won or lost.

Our best weapon against Twitter spam (and other Internet spam sources) is healthy suspicion, just short of paranoia. It’s far too easy to be lulled by the fluid back-and-forth of Twitter communication into forgetting to ask, “Did this person wash their hands? What nasty germs might be lurking behind that URL?” We need to be vigilant about Twitter spam, which can come in direct messages, @replies, or follows, in order to block its spread; since much of the spam comes from accounts hijacked through “phishing” scams, making sure our own accounts are clean is a good defense against infection.

My own guidelines in assessing followers, links, and other Twitter content include:

  • The follower/following ratio and number of tweets: now a part of the “new follower” notification, this is the easiest way to catch the spambots. Though Twitter tends to be asymmetrical, with most users following more people than follow them, a ratio that is too heavily weighted toward following–say, following 20 people for every one that follows them–is a clear indication that something is amiss. If that account is also not doing much tweeting–one or two messages, especially about making your teeth whiter or earning $325.42 a day or finding love in all the wrong places–then you’ve almost certainly been targeted by a spambot. Use the “Report as Spam” button to block the account and move the issue up the chain, and then get on with your life.
  • The profile picture: If the account is using the default bird icon, they may be a spambot, or they may just be someone who hasn’t updated their profile yet. If the account is using a picture of a hot babe, shown from chin to bellybutton, then the odds are approaching certainty that this account is up to no good. If the account has the hot-babe profile and tweets links to weight loss miracles, the odds need not be calculated; “Report as Spam” and proceed.
  • Grammar and content: Spambots don’t do so well on standardized tests of written communication. If the tweet has a lot of misspellings and webby abbreviations, the related link is suspect. If the message is “LOL u gots to c thisss” then it’s certainly spam. Don’t click.
  • Context and consistency: Know the people you follow, and who follow you. If you’re following someone because of their pithy observations about Romanian poetry, or their scathing reviews of trends in script-based computer language design, and they suddenly send you a link to a Cialis offer, something is likely amiss. Out of courtesy, let them know, so they can take steps to resolve the problem; if they continue to send spam, then they’re either not taking the problem seriously, not being careful about their account, or have gone over to the Dark Side; unfollow at least, block if you must, report if you suspect a permanent hijacking.
  • Look before you link: The 140-character limit of tweets is a great enabler of scary links. With the average URL length coming in at 34 characters (at least according to Kelvin Tan’s calculations), and with many news and blog sites’ URLs even longer, there’s been a proliferation of URL shortening services. Alas, it’s far too easy for malicious content to hide behind a generic shortened URL. (And this assumes that the shortener itself isn’t compromised in some way; the security implications of third-party URL shortening are really quite scary…) LongURL (available as a web site service, Firefox plugin, Greasemonkey script, or jQuery plugin), expandurl (web site and API), and ExpandMyURL (web site and bookmarklet) help by letting you preview the original URL before loading its content into your browser. If you’re not using one of these services, or a similar tool for previewing shortened URLs, you’re putting yourself and others at risk.
  • Don’t be part of the problem: Keep your own account from passing spam around, or giving the impression of spamminess. Don’t give out your Twitter credentials to any service that you don’t completely trust; shorten URLs only when truly necessary; provide context for your links (”Great discussion of Hegelian epistemology” rather than “U shd c this,” though you’ll probably need to use that URL shortener after all); be as trustworthy and consistent in your tweeting as you strive to be in the physical world.
  • Follow smart people: I don’t get a lot of spammy or suspicious junk on Twitter, largely because I’m careful to filter for quality up front. It’s not hard to spot the garbage when so much of the content is high quality, and smart people are less likely (I hope) to be drawn into a phishing scam, or will at least do something about it if their accounts are compromised. Be ruthless about unfollowing accounts that are frequently hijacked; it may seem cruel, but quarantine can be a useful tool in fighting virtual diseases too.

It’s a shame that the cost of combating Twitter spam falls back on the users, but that’s the paradox of the free and open model that makes Twitter so valuable to begin with. As in a free society, where we occasionally trade comfort and security for liberty, keeping Twitter from being overrun with spam is one of the responsibilities of its users.

Tags: , , , , ,

DiigoAs I noted earlier, some ongoing problems with the Diigo Firefox add-on and general annoyance at the graffiti public annotations feature prompted me to switch my transient bookmarking to Delicious. Some great support from the Diigo team resolved the add-on problem, at least for now, so I may be giving the service a second chance.

If you’re having the problem I was having with the Diigo add-on–a missing “Add to a List” menu option when bookmarking a page–these steps may save you some grief:

  1. Right click on the firefox toolbar area
  2. Click Customize…
  3. Click Restore default set.
  4. Sign out of Diigo and sign-in again

You may have to repeat these steps; I had to do it twice for the change to stick. But it’s a lot easier than the earlier troubleshooting steps, which involved creating a fresh Firefox profile and adding, one at a time, the dozen or so add-ins I use to see if there were conflicts with the Diigo toolbar.

Note that this does not, as I had feared it might, reset your Firefox to its default settings. But it’s not a bad idea to back up your Firefox settings, especially if you’ve made a lot of tweaks; take a look at the MozBackup tool for a nice and easy way to do this.

I’ve turned off the public annotations–from the Diigo button, choose “Show all annotations” and toggle to “Don’t show annotation”–to banish the yellow sticky notes left on Google, Wikipedia, and other sites by a handful of vandals. For the next few days I’ll be alternating between Diigo and Delicious before making a final decision on which service I’ll stick with long term.

A big thanks again to the Diigo support team; their prompt assistance certainly helps their service in my weighing of options. There’s no overestimating the value of solid technical support, whether a problem is big or small.

Tags: , ,

I’ve been using the social bookmarking site Diigo for a little less than a year now, ever since it acquired Furl, a service I’d used for a couple years. Though Diigo has many “social” features, I used it primarily to gather transient links and feed information to Twitter via RSS.

Recently, though, some “upgrades” to the Diigo Firefox toolbar have made my use of the service a little less than easy. The “Add to List” feature, which I use to categorize links for different RSS feeds, stopped working, and try as I might (I’m not intimidated by fiddling with the Firefox about:config settings or otherwise monkeying with obtuseness) I couldn’t get it back.

The best workaround I found was to use the bookmarklet instead of the plugin, which opens an Ajax toolbar on the page you’re bookmarking. It worked well on most sites, but broke on Flickr, one of my primary sources for the We Like It Here feed.

On top of that, the Diigo “sticky notes” that are visible when the plugin is enabled were annoying me to no end. “Sticky notes” allow Diigo users to place a comment about a web site, and are displayed behind a little yellow icon. Not surprisingly, most of these “notes” add little if any value to the page; though perhaps not as inane as the chatter on YouTube, most are of a “Kilroy was here” variety. And unlike Google’s similar Sidewiki project, which demurely hides itself behind a sidebar button, Diigo notes are stuck to the page itself, a form of Web 2.0 vandalism. And though they could be turned off or selectively toned down through the plugin settings, I’m bothered by them on principle.

I poked around a bit on some of the other “social bookmarking” services, looking for something that would meet my pretty limited requirements:

  1. Bare-bones URL bookmarking, available over the web
  2. The ability to categorize bookmarks
  3. The ability to publish categorized bookmarks as separate RSS feeds
  4. Easy browser integration, either through a bookmarklet or a browser plugin
  5. Functional across all, or at least most, web sites

And I ended up, a little to my surprise, at one of the older players in this sandbox, Delicious (formerly the less sonorous but more Web 2.0-y “del.icio.us”).

I like the spartan interface, the simple black-white-blue color scheme, and the snappy responsiveness of the site itself (though, honestly, I’m not likely to visit it that often). The Firefox plugin is a bit busy–it added three buttons and a whole ribbon of things to the top of the browser–but I may be able to tame it with configuration. And I like the simple, straightforward bookmarking and tagging.

I also like that each tag can generate an RSS feed. Since the Furl migration, I’ve been using Yahoo! Pipes as a hedge against a day exactly like this one; I’ve created a series of pipes to generate RSS from my bookmark sources, and added these feeds to my various publishing tools rather than the original feeds themselves. I was able to update my pipes, adding the Delicious feeds, and hey presto! migration was achieved.

And, even better, I don’t see any of the annoying “social” tools that I’m not particularly interested in. I already use Facebook to keep in touch with some friends and neighbors, and Twitter for sharing information with far-flung and like-minded people; I don’t see the value in turning every web page into a potential “look at me!” exercise.

The modern web is inherently social, and in many ways that’s its greatest shortcoming. Perhaps I’m just a crusty curmudgeon, but I do firmly believe that “none of us is as dumb as all of us”: making the channels of communication ever more open does not help to improve the quality of that communication. The Diigo “sticky note” feature proves as much.

This exercise also helped me to sort out the ways I use “bookmarking” on the web: the relatively simple concept of storing and organizing URLs has a lot of implementations, of which I use several.

For the more permanent bookmarks–the sites I visit regularly (Google Reader, e-mail, banking, etc.)–browser bookmarks make the most sense. They’re integrated into the browser address bar (at least in Firefox), always available, and easy to organize. I use the Xmarks plugin to synchronize these links across desktop, netbook, and work browsers.

Sometimes I need to bookmark something that requires more in-depth reading at a later date (a great New York Review of Books article that demands some thought, or a technical document on XML configuration to solve a work problem), but that doesn’t merit a permanent bookmark. I’ve found Instapaper to be a good place for these kinds of bookmarks; it has a nice, unobtrusive bookmarklet for quickly storing things for later perusal.

And finally, there are the transient bookmarks, the trail of items that have caught my eye but may not be worth saving for long. It’s helpful to have a common place to store these links, and a way to go back over the history to find things, but they don’t need to be available all the time. Furl served this niche nicely, as did Diigo for a while; Delicious, I hope, will serve it for some time as well.

One of my former co-workers recently sent me Joey deVilla’s article about netbooks and the “zone of suck.” This article makes a good case for why netbooks–those wee computers that are smaller than a breadbox but larger than a McDonald’s apple “pie”–are in a middle zone that is a solution looking for a problem. They’re more portable than a laptop, but less portable than a smart phone; they’re more powerful than a smart phone, but puny compared even to a low-end laptop. In other words, why bother?

And if we’re putting the average netbook (like my Dell mini) up against laptops and smart phones, I think that argument is dead on. But that’s not a game, I would argue, that the netbook should be playing; let the laptop be the portable power platform, and the smart phone be the ubiquitous pocket rocket. For me, the netbook has the potential to be a Kindle-killer.

I’m not a great partisan of the e-book; 16th century technology is fine, thank you, for most of my reading needs, at least when it comes to reading for pleasure. But I can see the value of the e-book in some situations:

  • Out-of-print, public-domain books available through sources like Project Gutenberg
  • “Long tail” books that have a small niche appeal that makes print publication prohibitively expensive
  • “Soft” books with volatile content, like technical manuals or current affairs studies
  • “Disposable” books–”beach reads”–that leave only lingering traces in the reader, and so should leave fewer on the shelves

I could also imagine loading up a thumb drive with vacation reading before a trip. My usual modus operandi is to pack a few books for the road, but inevitably it turns out that one or more of the books I’ve brought along isn’t worth carrying, and I often run out of material at the end of the trip and am at the mercy of the airport newsstand (the horror! If I’ve missed The New Yorker or The Atlantic summer fiction special, I have to choose between The Economist and People).

Most netbooks have pre-installed, or can very easily run, an e-book program capable of reading most standard file formats. FBReader, for example, comes with the Ubuntu Netbook Remix, which in addition to reading things like plucker and orb files, also has the handy feature of letting you turn the display 90 degrees so you can read the screen like a page.

At $359, Amazon’s Kindle is a price-point match for the netbook as an e-book reader. And with its slim profile, “electronic ink” interface, and cool-kid factor, the Kindle tromps the netbook as a dedicated e-reader. But the netbook has a few advantages over the Kindle:

  • You don’t have to pay Amazon to subscribe to blogs or read the news.
  • You can do more than read e-books on it. Though the keyboard is cramped, you can do some light typing (like this blog post), work with web applications, and read your e-mail.
  • You’re not bound by the Amazon monoculture. Let it not be forgotten, the Kindle and the DRM-laden format it supports are proprietary creatures of Amazon; the formats supported by e-reader software are open and accessible to any publishing and distribution service.

There are a couple of things that would greatly improve the netbook’s utility in the e-reader space: improvements in design, and improvements in ecology.

The design of most netbooks, for example, is derived from their laptop progenitors; the result is a screen and keyboard that are very much in the “zone of suck,” simply too small to be all they could be without sacrificing portability. As an e-reader device, the screen should be bigger, and the keyboard somehow less obtrusive (folding against the back of the screen for easier handheld reading? sliding out from the screen? virtually popping up on screen?). Clever people, no doubt, are working this out.

To really play against the Kindle, though, netbooks would need to have an infrastructure to support them as an e-book platform. The Kindle, of course, has Amazon, which relentlessly leverages its search and delivery system to make buying and downloading e-books seamless. For the open platform e-book reader, things are much looser: Gutenberg and other services, a few publishers like O’Reilly, and some public libraries make e-book acquisition easy enough, but highly decentralized. What the e-book environment really needs, if it’s going to be a viable platform outside Amazon’s control, is a clearinghouse (or competing clearinghouses) of titles, covering a broad range of topics and easily searched and browsed. No doubt some nascent clearinghouse or consortium (I can’t help but think of the IndieBound model for bookshops) is out there already, just waiting to rise out of the digital morass.

Tags: , , , , , ,

I’ve received some great feedback from people who have tried BookLinker (big thanks to Jane, Tempest, and Althea!), and I’ve made a few changes and fixes. These are available in the version of the plugin on this site; tomorrow I’ll finalize testing and get them into the WordPress.org plugin repository for wider release.

The fixes and changes are:

  1. Fixed a problem generating the native (rel=’BookLinker’) links; these now work as advertised.
  2. Added a switch to let you turn the book cover in the popup on or off; when installed/activated, the switch is on by default, but if you’re upgrading in place you’ll have to turn the switch on in the BookLinker settings, or deactivate/reactivate the plugin.
  3. Added options for additional styling on the book title and author text in the popup; you can enter your own CSS here, and it will override the CSS in the plugin files. (This would be the preferred approach over changing the CSS in booklinker.css directly, so as to maintain forward compatibility.)

I have another issue I’m trying to work out which affects some themes and not others. It appears to be related to CSS positioning: if a theme uses a lot of position:absolute styles, odd things can happen in spacing and location of elements, particularly sidebar elements. The two elements that make up the BookLinker HTML–the shield and bookLinkerCollection DIVs–are absolutely-positioned to do the nifty modal window thing; I’m looking into alternatives and workarounds for those situations where adding these elements causes other things to break.

As always, thanks very much people who’ve tried it out (75 downloads to date from the Plugin Directory); feedback, especially of the bug-and-feature kind, is greatly appreciated!

I’ve added the BookLinker plugin to the WordPress.org Plugin Repository, and submitted it to a couple of other plugin directories as well. (If any WordPress veterans know any good places to publicize plugins, do let me know!)

The WordPress repository provides a Subversion project for the plugin source, which is a nice feature; it also builds the download file for the user and unpacks the readme.txt into a nice web page, and helps people keep up to date with the latest versions. I’ll be keeping both the WordPress.org site and this one current with the latest plugin releases.

I’ve heard of a couple of theme-related issues, which I’m tracking down; if you gave BookLinker a try before today (May 26, 2009), please download the latest version from WordPress or this site (link here), as there have been some changes. WordPress.org should help keep fixes distributed to users. And I have a couple ideas for new features and spinoff projects; if you’ve got a clever idea for this plugin, or if you’re using it in an interesting way, I’d love to know about it!

Tags: , ,

The Open Library JSON API includes an image URL in the book details. The images are lower resolution than the LibraryThing images, but a low-res image is better than none. So in cases where the book’s image is not available from LibraryThing, the BookLinker plugin will use the Open Library image if one is available.

You’re still required to supply a LibraryThing API key if you want the high-res images; but if you don’t supply the API key, you’ll still get a book cover if one is available from Open Library. The “No Image” placeholder will show only if Open Library can’t supply one.

The latency in the Open Library service is significantly higher than the LibraryThing latency; this could be due to how I’m parsing the JSON, or it could be on the service side. So there may some delay in getting the author, title, and book cover to appear in the popup (no more than a couple seconds).

That, and a little tweak to the CSS for displaying the title and author, and I’m calling it ready for testing. You can get the plugin here if you want to try it out in your own WordPress site; otherwise, it should be available in the main WordPress plugin repositories some time next week.

Let me know what you think of this plugin; leave enhancement requests and bug discoveries in the comments on the BookLinker posts or page, or drop me a line. If you have a bug to report, the more information you can provide the better: WordPress version (I’m using 2.7), browser version (so far, I’ve only tested in the current Firefox), operating system (currently working on Windows XP and Ubuntu Jaunty Jackalope), and original URL of the book link you’re using. Bugs are much more fun to squash if I can make them appear on my screen.

Tags: , , , , , ,

Just a couple more updates on the bookLinker WordPress plugin:

  1. Title and author information is now displayed in the popup. The plugin uses the Open Library API, which returns a nice JSON bundle of data. Note that the information is incomplete: not all books are cataloged, and not all cataloged books have title and author information. But it’s an open project, so if you have an interest in helping to make the data more comprehensive, you can visit the site to learn how.
  2. Open Library and GoodReads links are supported now. They can be turned on and off in the plugin settings, just like the other links (IndieBound, Powell’s, Amazon, LibraryThing, and WorldCat).
  3. You can specify your own colors for the popup background and text, and also for the shield layer that comes up between the popup and the main text.

No doubt there are other little adjustments that can make this plugin more useful without adding bloat; feel free to suggest changes or configurations you’d like to see. I plan on giving it a thorough test over the next couple days, both from the admin side and across major browsers, and then submit it to the main WordPress plugin repositories by early next week. Until then, feel free to download it from the BookLinker page and play around with it.

And now it’s time to go do some non-technical reading before bed.

Tags: , , , , , ,

« Older entries