Start downloading books now!
Launch ShelfServer
E-Book reader for iPhone & iPod Touch


December 5th, 2009

This isn’t really BookShelf related, but I figured I’d mention it and give props to my favorite continuous integration build tool.

BookShelf and ShelfServer’s builds have moved from running on Hudson to QuickBuild.  I gave Hudson an honest try, but the object-oriented approach to configuration management in QuickBuild is something I just don’t want to live without.  Considering I maintain separate distribution paths for beta/release and for full/LT, having to duplicate all of the build settings for each configuration was getting old… 

QuickBuild allows you to define common elements of a build at a top-level configuration.  Each separate release (Full_Release, Full_Beta, LT_Release, etc.) has its own sub-configuration which only overrides the bare minimum that differs between the releases.  For most of my builds, that means only one or two variables.  Everything else — source control settings, build scripts, paths, environment variables, etc. is all shared among the multiple configurations.  The end result is that going “live” requires minimal configuration changes from what’s been tested for weeks or months at a time in the Beta configurations.  Fewer variables means fewer bugs, usually….

I’ve used QuickBuild 1.x at $DAY_JOB for a few years now, and it’s served us VERY well.  The new community license option for QuickBuild 2.x made using it for BookShelf much more attractive.  The fact that this will also serve as a good introduction to 2.x for when I finally get around to migrating our server at work doesn’t hurt matters either.

If you’re in need of a build server for a small project, I’d definitely recommend taking a look at QuickBuild.  While there are no shortage of free/opensource tools to choose from, if you have any kind of multi-tiered release to worry about, QuickBuild makes life quite a bit simpler. 

And of course QuickBuild is great for large projects as well — it builds dozens of projects for us at work.  More complicated setups would likely exceed the community license’s limitations pretty quickly.  Even so, the enterprise license is very reasonably priced considering how much time QuickBuild has saved me.  You also get source access with the enterprise license which has been handy for making some enhancements we needed in the StarTeam revision control bindings.  Support has been excellent and extremely responsive.  They’re one of the few vendors I work with (only two others come to mind) that I actually look forward to working with support.

Comparing QuickBuild 2.0 to the 1.2.x series I’ve been using for the last year or so reveals some really nice new features and improvements.  I’m definitely liking the new interface so far.  It feels like the settings inheritance that QB 1.x had is finally “finished” in 2.0 with the ability to set just about everything at a higher level of the configuration.  I love some of the new visual feed back of overrides like where build steps appear faded out in a sub-configuration if they’re defined at a higher level.

The auto-refresh on build progress is very nice.  QB 1.x provided a simple running/pass/fail indication on the summary screen, but 2.x shows step-by-step how the build is progressing.  It’s a big time saver to be able to see at a glance from the summary screen how far a build has gone without needing to drill down into the textual log files.

While I’m not yet really taking advantage of them for BookShelf, I’m looking forward to using the build statistics support for the various test & code quality tools at work.  We currently use JUnit, Cobertura, PMD, FindBugs, and Checkstyle.  I’m definitely psyched to see support for all of those tools built into QuickBuild.

Likewise, while the grid support for distributing builds doesn’t really help me for BookShelf, but it will be convenient to be able to scale builds across multiple servers at work rather than needing a single monster buildbox to host everything. 

So, yeah….  That came out sounding a lot more like a paid endorsement than I’d intended, but still QuickBuild rocks. And no, they’re not paying me for this. =)

In other news, the next release of BookShelf is *just* about ready to go out the door to Apple.  This release updates the FeedBooks protocol support to work with recent FB server changes and also has a number of performance and user interface improvements.  I’ve got one more minor bug to fix, and then off it goes.  Maybe tomorrow if all goes well.

Paul Graham on the AppStore (Apple’s Mistake)

November 22nd, 2009

Paul perfectly covers the bases and pretty much describes my feelings to a tee.

Apple’s Mistake

My experience with the AppStore has definitely tarnished my opinion of Apple.  Before working on the iPhone, I could (and frequently did) with no reservations whatsoever rave about how wonderful Apple was and how great they treated their developers.

While my iPhone development has been (in my consideration) highly successful (thank you, loyal users, one and all!) there have definitely been days I wonder why I spend a third or more of my life lately working on BookShelf.  The money’s nice, no doubt (again, thanks!), and I’m currently typing this from my new home, the down payment on which was paid entirely from AppStore proceeds.

Money notwithstanding, I have trouble summoning the same rave reviews that once so freely came for Apple and their development ecosystem.  Often is the time where during lunch at $DAY_JOB, I find myself ranting about some recent roadblock.  My co-workers (mostly Linux & a few Windows heads) occasionally call me on it.  I still have the Apple fanboi gene that makes me want to backpedal and make apologies; but they’re hollow, and lately I don’t even bother.  Apple’s second biggest strength to me was always how well put together the development environment was and how easy it was to build compelling apps using it.  (The biggest strength was of course the well-integrated, JustWorks™ platform they provide.)

Working within the restrictions of the AppStore is outright frustrating, and nobody benefits from it.  Crap apps still infest the AppStore. Several high-profile security related issues in less-than-legit apps have hit the media and even the courts lately.  I spend inordinate amounts of time tip-toeing around functionality that I *know* the phone has (Apple’s apps do it, and class-dump tells me so), but I can’t touch them because it’s “undocumented.”  And worst of all, buggy, outdated versions of BookShelf sit in the AppStore for weeks or months at a time, in part because the review process takes so long, and in part because I find myself rolling one development cycle into another without even bothering to submit since it’s such a pain.  I’m honestly not prepared to run branched development while waiting for an approval, but neither can I sit on my hands and do nothing for the month it typically takes to get BookShelf approved.  I’ve had cycles where the app was rejected, and I end up just ignoring it and continuing on for the next cycle since I’m already too far in to unroll my changes.  Yes, I should learn not to fear branching, but still…

Paul sums up nicely the change in attitude towards Apple describing his feelings on buying the latest iMac recently:

I felt the way I’d feel buying something made in a country with a
bad human rights record. That was new. In the past when I bought
things from Apple it was an unalloyed pleasure. Oh boy! They make
such great stuff. This time it felt like a Faustian bargain. They
make such great stuff, but they’re such assholes. Do I really want
to support this company?

The last few weeks have seen several high profile developers call “I quit!” over various AppStore frustrations.  Now don’t worry, because I’m not quite ready to throw my towel on the pile yet.  Still, the platform can only suffer when hugely talented, highly dedicated, long-time Mac developers decide that Apple’s phone is just too much trouble to work with. 

There’ss no shortage of good, easy to implement suggestions out there that could fix many of the AppStore’s problems.  One of my personal favorites is the idea of building a “reputation” with a series of good releases and simplifying or omitting entirely the approval process for those apps, subject to strong sanctions for abusing that trust.  BookShelf’s been in the store since day one, and as far as I know, it hasn’t ruined anyone’s phone…

Moving Day!

October 31st, 2009

Just a heads up for anyone trying to contact me…  We’re moving house next week, so I’ll be a bit slower than usual responding to email & forum posts & such.  My desktop Mac’s already packed, so I’m down to iPhone and scrounged WiFi for my trust old MacBook Pro.

Actual move is planned for Thursday, so with any luck by this time next week I’ll be semi-functional again.

Presenting at Tech Valley Code Camp

October 31st, 2009

If anyone’s in the Albany, NY area (or will be next week), I’ll be giving a talk about iPhone development at the Tech Valley Code Camp on November 7th at the SUNY Albany campus.

Drop by if you can and say Hi!  Room & time are still TBD, but keep an eye on the TVCC website for more info.

Slowness & Crashes in 2.1

September 14th, 2009

I’ve noticed a few reviews mentioning poor scrolling & page turning speed in 2.1.  The performance differences from 2.0 are caused completely by the new auto-hyphenation feature included in 2.1.  

If you’re unhappy with the performance in 2.1, please try setting the Hyphenation option to “(Disabled)” in BookShelf’s global settings (accessed from the file listing, rather than inside a book).  You should see increased performance when scrolling, faster startup when restoring page position, and possibly also increased stability on certain books.

I’m considering removing hyphenation completely from the next build as it’s proven to cause more problems than good (IMHO).  I’m definitely interested in opinions on that, though.  Is there anyone out there who completely loves auto-hyphenation and would be heart broken if it was removed?  At the very least, I’m going to make the new out-of-box default to disable hyphenation as it was definitely the cause for some of the upgrade crashes seen in 2.1-take-one.

Input, as always is appreciated, though I’d GREATLY appreciate it if any prospective reviewers might post on the forums or drop me an email with their problems before reviewing.  Often enough, I have a quick fix available, and if not, I’m always trying to improve BookShelf based on user input.  

I don’t always see reviews, largely because reading about problems I’m powerless to help is just plain depressing.  Drop me an email, and I’ll do my best to help.  If you just write a review, I have no way to tell you that there might just be a quick switch to flip and make BookShelf work the way you expect.  Granted, I don’t always get to every email as fast as I’d like.  If I’ve ignored you, my apologies, please feel free to dis me in a review.  In that case, I deserve it.  Alas, being a one-man operation, there’s only so many hours, and some email do fall through the cracks.  Mea culpa

(Cross-posted to forums)

WordPress be gone!

September 7th, 2009

Minor detour to migrate to Movable Type…  I’m still not sure I like their Open Source attitude, but their security track record certainly beats WordPress into the ground. 

WP’s reaction to latest worm attack on their software kind of finished me off on the platform.  (“What?  You didn’t update the day after we released a new version?  Oops!  Hope you don’t get hacked!”)…  WordPress updates are a protracted pain in the neck, in part because their auto-updater seems not to work on the local files but only via FTP and because they’ve evidently never heard of SCP.  I can’t even remember the last server I built that had an FTP server on it….

For the record, neither this site nor my personal site were in fact hacked, but given that I was able to migrate all content to Movable Type in about the same time a WordPress update typically takes me to install, I’ll call it a step forward.

Even setting up the themes was relatively painless once I got the hang of their templating system.

In BookShelf related news, it’s been a fairly productive long weekend.  I’ve got image support in PDF’s mostly working and LIT support looking relatively stable.  I also managed to get BookShelf working more or less under the 3.0 SDK, but it’s crashing like mad for some reason.  Some posts I’ve read online suggest that it may be the fault of the 3.0 SDK and that a future build may fix it.  I can’t see any possible way I’ll have another update ready before Apple releases 3.1, so hopefully everything will just fall into place.


August 26th, 2009

2.1.2198 just hit the AppStore.  A million thanks to Apple for rushing this one through for me!!!

This should fix the crashing issue with the original 2.1 release.  The change to this version will make BookShelf not reload the previously read file after a crash.  Anyone who’s currently stuck in a crash loop should apply the update & launch BookShelf.  It will probably crash or lock up *one* more time.  Force-quit*  BookShelf if necessary, and thereafter you should be fine.

Sorry again for the bumpy ride on this one!

* If you need to force-quit in case BookShelf hangs instead of crashing, do the following:

For 2.x devices, hold the Home button until the app disappears.

For 3.x devices, hold the Power button until the Slide to Turn Off screen appears, then release the Power button and hold the Home button until the app disappears & the home screen reappears.

Issues with 2.1 update

August 26th, 2009

I’m still not sure what’s going on with this update to BookShelf,
but some users have run into issues after upgrading from the AppStore.
I have an update in with Apple which they’ve agreed to expedite (not
sure what that means in terms of approval time) which prevents the
constant lockup issue by not trying to re-open the previously read book
after a crash. I’m still in the dark as to what’s causing the crash at
this point.

In the mean time, the only work around I can offer is to delete
BookShelf from your phone and reinstall it (for free of course) from
the AppStore. You will of course need to re-download all your books,
but the stuck/crashing issue won’t reoccur.

Sorry for the horrible upgrade experience on this version. I wish I
could have found this issue before release, but I have a hunch that it
has something to do with how the AppStore upgrade process works. None
of my beta testers ran into it because beta versions are installed
manually through iTunes and never come over the AppStore. At least
that’s my best guess…

If you can afford to wait a day or two, the update with the fix may
be out quickly, but of course there’s no way to predict AppStore
approval times.

Sorry about this one, folks!

2.1 available in AppStore

August 23rd, 2009

It dropped Saturday evening.  Enjoy!

BookShelf 2.1 submitted

July 28th, 2009

Version 2.1 has been submitted to Apple.  Now we wait to see whether the Vatsyayana Curse will hit me this time, having dodged it twice before.

The new feature list in 2.1 is fairly extensive.  Top on the list are:

  • Searching
  • Dictionary support
  • Customizable color themes
  • Copy & Paste
  • Parental Controls
  • Table of Contents (not just a link in the document)

And of course the usual handful of stability & performance improvements.

With any luck, 2.1 should arrive for updating in the next couple of weeks.

Copyright © 2008-2009 Zachary Bedell. All rights reserved.