It’s been a long six weeks since we released Beta 1 of our native version of PocketBible for iPhone. At the time I said we were expecting the beta period to be short. Needless to say I was wrong.
A Wrench in the Works
Two major things happened to really slow us down. First, we have been really struggling to get adequate performance out of our code to allow you to be able to smoothly scroll through the Bible like you would a Web page in Safari on the iPhone. Safari has the advantage of being able to render the entire page. Once that is done, scrolling around on it — even zooming in and out — is pretty easy with the features of the iPhone OS. In our case, however, we can’t render the entire Bible while you wait. We have to load it into memory in pieces. Unfortunately, computers can only do one thing at once and while it was busy loading the next chunk of text it needed to display, the scrolling would get clunky. It wouldn’t keep up with your finger motions.
We actually got to the point where it was working pretty well. We were loading text in a separate thread and drawing during otherwise idle times (say, while the graphics processor was busy animating the motion of the text). But then we installed the OS 3 SDK and things fell apart.
We couldn’t afford to take the time to figure out how and why the new version was causing us problems. Suffice to say that the particular functionality we were taking advantage of was rewritten for version 3, and in so doing the handling of touch events changed in ways that may not be significant to some applications but were significant to us.
As a simple example, when you’re tracking a touch event, the system can send you a “cancel” message. This means the phone is ringing or some other event has happened and your program needs to stop what it’s doing and let something more important take over. Well, with version 3 we’d be happily tracking a touch event and suddenly we’d get a “cancel” message. It seems the system was watching the touch events and had decided that the touches weren’t doing anything it cared about, so it told us to cancel our handling of those events. We could’ve ignored the “cancel” message (knowing it was just the OS trying to take over touch handling) but since the “cancel” message also means “really — the phone is ringing — you need to stop right now” we couldn’t afford to make that assumption.
Anyway, the end result was we threw out about six months worth of work and in about a day I coded a replacement that doesn’t depend on a lot of fancy background threads, idle-time drawing, or system touch event handling. The new user interface is simple, practical, and best of all — it’s done.
As if That Wasn’t Enough…
So as we’re recovering from that crisis, the 3GS is released. Now, when you’re developing for the iPhone there are some strict procedures you have to follow to install your program on your phone. Apple wants to make sure all program distribution happens through the App Store, so they limit how many devices you can install your app on outside the App Store. Every time we distribute a beta version (or even one of our own builds we do internally and install on our own phones) we have to identify exactly which phones it will run on. Apple lets us install on no more than 100 devices outside the App Store.
To manage this, developers maintain a list of “unique device ID’s” (UDIDs) in their account on the Apple Web site. Each phone as a UDID that uniquely identifies it. We ask all of our beta testers for their UDIDs and enter those at the Apple site. When we distribute a new build we request a certificate from Apple that contains all the UDIDs we want the program to run on.
So as I was saying, the 3GS was released. Jeff bought one for us to test with. A bunch of our beta testers bought them. So anticipating the release of Beta 2, I started collecting all these new UDIDs so I could update our account on the Apple site and create the new distribution certificate with everyone’s new UDID in it. I got about half way through entering them and the site told me I couldn’t enter any more. It said I had already used my 100 devices.
I only had 82 devices in my list. Turns out when you change someone’s UDID it counts as a new device. I had added 85 devices, deleted 3, and made 15 changes. When you delete a device you don’t get its “slot” back, so from Apple’s perspective the total was 100.
After several email, support forum, and telephone conversations with Apple and other developers, we concluded that we were out of luck. We had to wait until our annual program renewed on July 12. At that time, Apple said our device count would reset. We could delete all our devices and start over. But once we started adding devices, we were stuck with those for a year.
One thing that meant is that we couldn’t have 82 beta testers. We needed to cut the list dramatically. I wanted to get down around 40 testers. That would allow us to add some people over the next year and have room for device upgrades. We should be able to struggle through until Apple figures out that its developers aren’t trying to rip it off; we’re just trying to test our software.
So last week we sent out an email “firing” about half our testers. It wasn’t pleasant, but we had to do it. I think we have a pretty good group left. I can tell they’re good because I disagree with them most of the time. It’s good to be challenged to look at things a new way, and these folks are definitely keeping us honest.
Beta 2 Features
There are some notable features in Beta 2 that the testers will be looking at over the next week or two. These include:
- Easily navigate to the next/previous page, chapter, or verse using simple taps and gestures.
- Rotate between open books and Bibles with a tap or a swipe.
- Hide all controls including the system status bar for full-screen reading, while having instant access to all the controls with a tap.
- Search for words, phrases, and combinations of words using Boolean logic. Limit searches to any passage, book of the Bible, or range of books. Limit searches to only verses you’ve highlighted in a particular color or bookmarked in a particular category.
- Add books from your Laridian account. Purchase books at our Web site and download them directly into PocketBible. Remove books as needed to free up memory (just download and install them any time you need them again).
- Select from any installed font and font sizes from 8 to 72 points.
- Lots of customization options, and many more features….
There will be at least one more beta version before we submit PocketBible to the App Store. We’ll post an article like this one when Beta 3 is released, and another article when we send PocketBible to the App Store.
Once submitted, it will take a while for Apple to approve it. They might send it back and ask us to make changes. There’s no way of knowing how long that process will take. Sometimes it takes just a few days or a couple weeks. Other times it takes six months by the time you make all the changes they want and submit version after version for review. We don’t anticipate it will take that long but we have no way of knowing.
Any Bibles or books you buy today for any platform will be accessible from PocketBible for iPhone.