bkkeepr blog RSS

This is the development blog for bkkeepr. You can contact us over at Get Satisfaction.



Finishing a book before starting it again.

Somebody started a book five times. Thanks to a couple of new lines of code, that won’t happen again.


Error reporting

CodeIgniter, the framework that bkkeepr is built on automatically reports errors. So when LibraryThing went down for maintenance this morning, all the books pages borked. All that was required to fix this was to catch the SimpleXML parsing error being thrown - and then turn off CodeIgniter’s error reporting (called in the first line of the root index.php file). But it took me a while to figure out that the alerts didn’t mean I’d done anything wrong - it was all LT’s fault.

(But we still love you LT!)



Yes, the bane of our online existence has come to bkkeepr. A few thoughts about ads:

  • I’m not a huge fan of them either, and I’m certainly not a fan of google ads. Inefficient advertising is nothing but clutter.
  • If bkkeepr succeeds, I’ve spent a lot of my personal time and an increasing amount of money on it. It’s a free service, with ongoing costs, so I need some form of support.
  • Targeted, well-chosen and sympathetic advertising can benefit both the site and it’s users.
  • I prefer the term sponsor: bkkeepr will not take on any advertiser, but only those relevant to our users. Each will be sympathetic to the aims of the site, and will be integrated into it as gracefully as possible.

With these thoughts in mind, I’m very pleased to introduce Little, Brown as the first official bkkeepr sponsor. The Little, Brown Group has literary roots going back to 18th Century, so makes a fine partner for bkkkepr as it makes it’s way, blinking, into the light of the world.

For Geeks: I’m serving ads (just the one so far) through OpenX, an excellent free and open-source adserver which allows campaign, banner an. Except the latest OpenX requires a couple of php settings I don’t have, so I’m using a legacy version, OpenAds 2.0.10. So it goes.


Summer Time!

British Summer Time finally comes to bkkeepr via this simple hack:

$now = time() - (60 * 60);

Will have to remember to turn the clocks back in September. Unless someone knows a better way of doing this. 


ISBNs and PHP: The last hurdle?

It is still anoshing to me that after a couple of months on this, my ISBN-handling code is *still* throwin up errors. However, with this code here I think I may finally have found the holy grail: full functioning php classes that validate and convert ISBNs correctly.

Famous last words.

Oh, and user icon updating actually works now. Not like before, when it, er, didn’t.


Where did you all come from?

From a base of eight invited users, bkkeepr now has 75 followers and about 50 active users, if anyone else is counting.

Some organic motion is mostly responsible, although bkkeepr has already graced the hallowed pages of rotorblog, Killer Startups and TwitterApps.



One of those things you don’t know until you build a web app from scratch learning PHP/MySQL as you go: DBs don’t like appostrophe’s.

Thanks to sheskali and her copy of The Moment It Clicks: Photography Secrets from One of the World’s Top Shooters, I now know to use addslashes() on any DB input. 


Reader Icons

A small thing, but bkkeepr now updates your icon every time you post a record, as I know lots of Twitter users change their avatar regularly.


ThingISBN and multiple editions

I’ve implemented ISBN grouping in the /books section of the site, using LibraryThing’s ThingISBN API class.

In simple terms, this means that in /books/ you’ll see everyone who’s reading/read/bookmarked that book, even if it’s a different edition (i.e. a different ISBN).

This throws up a couple of issues. For one, the URL, which contains the ISBN, actually refers to a range of ISBNs. Hmm.

Also, and of rather more concern to the average users, it means that the bookmarks may not refer to a particular page. I’m getting around this by including the particular edition’s ISBN in the bookmark’s metadata (example).

I think this is a workable solution, as users can still see the bookmarks that are relevant to them on their own pages.

Of more concern is the slowdown of the /books section of the site due to the additional API call to LT, but I’m going to go with it for now, pending complaints.

(It’s worth noting that thingISBN isn’t perfect either; I’ve already found missing ISBNs. However, this is a user-centric, not book-centric site, so again, I’m going with it, as user’s still get all their data correctly.) 



There is now a 404 page. It has a poem on it.

This was actually quite crucial as CodeIgniter was throwing php errors all over the place instead of 404s. Fixed now.