I recently purchased an Apple Vision Pro. I’ll eventually have some thoughts about this platform and its potential for Bible software, but right now I want to talk about that boring little brick you plug your iOS device into when you charge it.
I’ve owned an iPhone since the day it was introduced, an iPad since its launch date, too, and now a Vision Pro 1.0. Just like many of you, I have drawers and computer bags full of those little USB power supply bricks and a variety of the bigger ones that come with MacBooks. I figured out a long time ago that I can plug any device with a USB charger into any USB power supply even if it’s intended for a different device. So I charge my iPhone and Watch with my MacBook charger and have been known to plug my MacBook into an iPad charger just for grins.
When I got the Vision Pro, I saw someone on YouTube put a meter inline with the charging cable and note that it would draw up to 60 watts when connected to his MacBook power supply, even though it ships with a 30 W power supply.
I have just a little bit of experience with electronics, having learned Ohm’s Law for my ham radio license 50 years ago (!) and having built a number of transceivers and other electronic gizmos. I’ve been assuming that all these devices needed 5V at some number of amps — 1.5 A for iPhones and 2.1 A for iPads and many more amps for my MacBook. They are all interchangeable, so they must all use the same voltage, right? Maybe just limit the current?
Wrong.
Turns out these little power supply bricks are smart. They talk to your device and negotiate a voltage the device can use and the current limit the supply might have at that voltage. Between your device and the power supply, they work out the optimum arrangement for operating your device and charging the battery. Voltage ranges from about 5V to about 20V and current is adjusted so as not to exceed the limits of either the power supply or the device.
I guess they’ve been doing this since about 2012. Who knew? Not me.
On Friday, October 6, 2023 we uploaded version 4.16.0 to the App Store. Apple approved the new version the next day.
This version was released primarily to make PocketBible for iOS compatible with our latest changes to our Bible format. These changes allow us to include data with each Bible that tell PocketBible how Bibles should interact with each other. This data used to be included in PocketBible itself, but that meant that we often had to update PocketBible on all platforms simply to release a new Bible. These changes will help us avoid having to do that.
In addition, several new features, enhancements, and bug fixes were added:
NEW FEATURES
Added a “direct keyboard entry” go-to-verse style to better support hardware keyboards on iPad.
Added press-and-hold link previews for most types of links in the note viewer.
Added ability to link to document fragments in notes. (Use plain text editor to add id= attribute to a tag; link with href=”#id” syntax.)
ENHANCEMENTS
Do a better job of managing the toolbox size when using a hardware keyboard attached to an iPad.
Support more types of link previews in book and Bible text. Change the way they are displayed to take up no more of the screen than required.
Accommodate more types of links being pasted into notes from PocketBible books and Bibles.
Added VoiceOver labels and hints to many more buttons.
Slight visual changes to the shape and borders of book panes to provide better definition when panes are displayed in tiles.
Added the version numbers of the Bible reference data in a Bible to its “About This Book” screen.
Users Guide is automatically re-installed on request if accidentally deleted.
BUG FIXES
Changes in the way the iOS speech synthesizer handles empty strings passed to it would cause PocketBible to sometimes repeat a verse or paragraph when reading it.
Duplicate notes could be created while changing the name of a Journal note. (AFS)
Links to websites in notes could fail if the URL contained spaces.
Text in alert dialogs was difficult to read when using a light color scheme while the device is in dark mode or a dark color scheme while in light mode.
Book, chapter, or verse numbers could get truncated in the “spinner” go-to-verse style.
The “spinner” style go-to-verse dialog wasn’t being displayed the first time it was invoked after having been selected in Settings.
The app could crash when a shortcut key was used to open the “today” menu on an iPad with a hardware keyboard.
Long-press on a toolbar button in landscape mode on an iPhone activated the wrong button.
Long press on go-to button to see list of recent verses would not display correctly if the active book was not a Bible.
Selecting a recent search caused the search to be performed but the results were immediately dismissed.
Login/Create Account screens now have dark background when dark color scheme is active.
Note on Account Deletion
Apple initially rejected this version of the app because it doesn’t provide a way for users to delete their account. This is a new requirement and we knew about it but didn’t realize it had taken effect. Apple was gracious enough to approve the app, but we’ll have to add account deletion in the next update.
The reason we don’t currently have this in any of our apps is because it is “dangerous”. Consider that account deletion will do the following:
Your entire account is removed from the server, including your transaction history. As a result, PocketBible is affected on all platforms even though you’re doing the removal from an iOS device. You won’t be able to download books or have access to Advanced Feature Set features on Android, macOS, or Windows when you delete the account. This cannot be undone.
All of your notes, highlights, bookmarks, and devotional reading progress are permanently removed from the server and from your device. This cannot be undone.
All books, Bibles, and AFS features are removed from your device except those that came bundled with the app.
Since your account and transaction history is deleted, no refunds can be issued for products purchased in the last 30 days that would otherwise be eligible for refund.
All settings and user preferences are removed from the device. All search and navigation history is removed. The app will restart and will believe you are running it for the first time.
Even though we plan to give you more than one opportunity to cancel the deletion sequence, once you confirm it twice, we will proceed and it can’t be undone.
We’ve always made account deletion something we do by request to tech support. If we see that a user has a lot of books or a not of notes/highlights/bookmarks, we’ll give them the opportunity to change their mind before automatically continuing. We’re sure we’ll have more than one unhappy user as a result of this Apple requirement.
Fun fact: PocketBible allows you to view your Cloud Library download account even if you refuse to log in. That’s because a few years back there was a reviewer at Apple who could not figure out the difference between “shop for Bibles and books” and “access your download account”. He told us the user has to be able to shop without logging in, then he showed us the error message he gets when he select “access your download account”. We pointed out how to get to the built-in store but he wouldn’t budge. So when you go to the Cloud Library screen without logging in, we give you the opportunity to log in, but if you choose not to, we show you an empty list. That made the Apple guy happy and they approved the app. 🙂
Sometimes the things we think are obvious to the outside world aren’t.
In our last update, we explained in detail a problem we had encountered in the way that we encode Bibles for use in PocketBible. The TL;DR version is that we found it necessary to update every version of PocketBible, plus update the BookBuilder app, in order to accommodate necessary changes to the way we deliver Bibles.
As you know, PocketBible runs on four platforms: iOS, macOS, Android, and Windows. One of our points of pride is that PocketBible is a native app on each of those platforms. That is, we didn’t use a special tool that might allow us to create one app and run it on all platforms — we created separate apps for each. So when something like this comes up, we have to update PocketBible on all 4 platforms, and in this case, we also had to update our BookBuilder app.
We have a very small team of developers. We don’t have people assigned full time to each platform. So to work on one we pretty much have to stop work on others. That has meant that while we’ve been focusing on Windows, we haven’t been able to do much/anything on other platforms. It also means that if we need to work on iOS, macOS, or Android, we aren’t able to do much on Windows.
We kind of thought you guys all understood that, so we’ve been keeping you updated on our progress on the other platforms with the understanding that we would get back to Windows when these were done. Turns out that wasn’t clear. Hopefully now it is. Here’s where we stand on each of the other platforms with respect to this Bible format update.
BookBuilder and PocketBible for macOS
Because BookBuilder needed to be updated (of course) due to the Bible encoding changes, and because BookBuilder and PocketBible for macOS share so much code, we tackled both of these together. We did all the necessary changes to BookBuilder, then tested the output in PocketBible on the Mac.
While we were in the code, we did some necessary bug fixes and a few enhancements. We released PocketBible 1.4.2 on June 7, 2023 and it’s been pretty stable.
We did not release a new version of BookBuilder to the public because it’s possible we’ll discover problems related to the new format while working on all the PocketBible releases, and we’ll want to go back and make changes.
PocketBible for iOS
Version 4.16.0 went to a small group of beta testers about a month ago. Problems have been minimal and I anticipate we’ll approve it for the App Store soon. It incorporates the new Bible encoding changes and has a small number of improvements and quite a few little bug fixes.
PocketBible for Android
Android has been a challenge for a variety of reasons. Google changed the rules on us and required that we rebuild the app with the latest version of their tools for basically no reason. The app was working fine, but after telling us we had until August to upload a new version to Google Play, they decided to invalidate the app in May. This fell right in the middle of what we were working on for the other platforms. We opted to continue on our original plan of updating the Android app by the end of August. In the meantime, Android users were given instructions to side-load the app from our website and that worked fine.
PocketBible for Android has not been updated since 2018 and the changes required to get it compatible with the latest OS have been challenging. We released a build with minimal new features on August 29th and updates to fix some bugs on September 2 and 7. We anticipate at least one more small release to fix some additional issues; probably two more.
Once we get Android up to speed with Google’s new requirements, we’ll need some time to do the Bible encoding changes. This will involve porting a lot of code from the macOS/iOS apps and making sure it works. The Android app handles Bibles slightly differently from the other apps, so it’s not just a line-for-line translation from one language to the other, but rather it’s a concept-by-concept implementation using methods consistent with the way Android does things.
I’d like to tell you how long I think that’s going to take but I know I’ll just be wrong. Shouldn’t be too long, though.
PocketBible for Windows
Remember PocketBible for Windows? This is an article about PocketBible for Windows.
Once we get back to the Windows app I want to do a couple of things. First, I obviously need to port the Bible encoding changes from macOS/iOS into Windows. The JavaScript code in the Windows version follows the way the C++ code in macOS/iOS works pretty closely, so this should be easier than doing it in Android and Java. Second, while we’ve been working on getting the program finished, new versions of both Electron and VueJS have been released. We should refactor the app to use the new code so we’re not starting out already in need of an update.
We’re actually fairly close to having at least the standard features of the Windows app finished once we’re able to get back to it. There are some Advanced Feature Set features that haven’t been touched yet (Autostudy comes to mind).
Moving Forward with the “Native Apps on All Platforms” Plan in 2024
I want to take advantage of the fact that we’ve had to do recent re-releases of PocketBible on every platform and make it a goal to do some kind of small update to PocketBible on each platform every year. It’s easier to keep up with frequent, small changes than to have to absorb a massive number of changes to how to build and release apps when you do it every 4-5 years.
So that’s the status of PocketBible for Windows, told in terms of everything else that’s going on here. Anytime you see a blog article about any of the other platforms, count it as progress on the Windows app. 🙂
Today Apple approved PocketBible 4.14.1 for distribution through the App Store. This version coincides with the release of iOS 14, and while it doesn’t necessarily take advantage of every new feature of this latest version of iOS, it should work better than the previous version did.
iOS 14 adds a number of new features that may or may not make sense for PocketBible to take advantage of, such as widgets and app clips. Because PocketBible needs to continue to work with older versions of iOS (we go back to iOS 12 with this release), it’s not always practical to implement the very latest new features. And we never know what’s going to survive until iOS 15 and what will be dropped. So don’t expect a PocketBible complication for WatchOS or a PocketBible widget for iPhone.
Here’s what’s new in PocketBible 4.14.1:
FEATURES
Saved/named layouts on iPad. (AFS)
If you subscribe to the Advanced Feature Set, you’ll be able to save the current screen layout, which includes the number and position of open panes/tabs, the list of books open in each pane/tab, the position of each of those books, your navigation (back/forward) history, your recent searches, and your recently visited Bible verses (the latter itself being a new feature; see below).
Keyboard shortcut keys (customizable with AFS)
If you have an iPad Pro with an external keyboard, there are now key combinations that can be used to activate frequently used features like searching and navigating to a Bible verse. A list of these keyboard shortcuts can be viewed by pressing and holding the ⌘ (Command) key (this is true for any iOS app, not just PocketBible).
If you subscribe to the Advanced Feature Set, you can customize these commands. You’ll do that by selecting the function (such as “open a book”) then just press the key combination you want to use for that function.
Trackpad and mouse support in book panes
If you have an iPad Pro with an external mouse or keyboard with trackpad, you’ll find that 2-finger trackpad and scroll-wheel scrolling work better in PocketBible’s book panes than they did before.
New long-press functions of back, forward, search, and go-to toolbar buttons
Pressing and holding on the Back button will display the portion of your navigation history that is “behind” you. You can jump back more than one location by selecting an item from this list. If you have gone back at least one step on this list, a long-press on the Forward button will show you the locations that are “ahead” of you.
You’ve always been able to access a list of recent searches by selecting that option from the Search form. Now you can press and hold on the toolbar Search button to see that list.
A frequently requested feature was a modification of Back that would allow you to see a list of recently visited Bible verses so you could quickly jump back to a passage you had been reading. You can now access this list with a long press on the Go To button while a Bible is active.
Sync to current verse
PocketBible has long had the ability to keep all your Bibles and commentaries sync’ed up to the verse you are viewing in the active pane. That’s not always what you want to do, however. But when that feature is turned off, there wasn’t a way to easily sync your other Bibles and commentaries to the verse you’re reading. Now there are two.
When the automatic sync between Bibles and commentaries is turned off, you can choose Sync All to … from the PocketBible menu to cause all Bibles and commentaries to go to the topmost verse in the active pane (assuming the active pane is displaying a Bible).
You can also select a verse via pressing and holding, and choose the Sync button from the Selection tool bar. In that case, your other Bibles and commentaries will sync to the first selected verse.
ENHANCEMENTS
Customizable sorting of list of open books
When viewing the list of open books in the Library window, you can choose the Editbutton to drag the books into the order in which you’d prefer to see them. This is a frequently suggested feature that turned out to be a lot easier to implement than we feared, though it has an important caveat.
That is, the order of the books in each pane is saved as a part of recording your navigation history. So if you change the order of books in a pane, then use Back to go back to a time before you re-ordered the books, the order will revert to its earlier state. Going Forward will restore the new order.
In addition, the order of open books is saved when you save a layout using the new Saved Layouts feature on the iPad. So if you change the order of the books in one layout, it will not affect the order of the books in the same pane in another layout.
And more…
Choosing a range of verses for searching requires fewer button presses. Once you’ve selected a range you’re taken right back to the main Search window.
Autostudy Word and Autostudy Verse will start the study when Enter is pressed in input field (Advanced Feature Set subscription required for Autostudy).
Long-press link preview now works on the asterisks that mark footnotes in books and Bibles.
FIXES
The correct background color was not being chosen for certain menus.
After closing the current book using Close this Book on the Library screen, the wrong book was marked as being active.
The program was not checking your AFS subscription expiration date often enough, which kept the subscription active well passed its expiration until you performed a particular action that caused it to be checked. The program now checks the expiration date on launch and at convenient intervals while you’re using the program. There is a grace period to allow you time to renew and activate the renewed subscription.
I have used the devotional features of PocketBible off and on over the last 20 years in my personal Bible reading. This year I’m using our free Old Testament in a Year and New Testament in a Year reading plans simultaneously to create a custom plan that will give me readings from both the Old and New Testaments each day.
One of the challenges of this approach is that I have to open the Old Testament plan, select the link to the passage, read the passage in the Bible (which may or may not default to the version I want to read from, depending on what else I’ve been doing in PocketBible since I last did my reading), then open the New Testament plan, select the link for the day’s reading, then read the New Testament passage from my preferred Bible. That’s a lot of jumping around just to read 3-4 chapters.
I’m going to take a slightly different approach to it to make the viewing of the text more pleasant and to make it easier to simply read the OT and NT passages without any jumping back and forth between the two devotionals and my Bible. I’ll have two-click access to each day’s text in my desired Bible regardless of what Bibles are open or active in PocketBible at the time. To accomplish this, I’m taking advantage of the “Autostudy Today” feature of the Advanced Feature Set.
Autostudy Today lets you collect the Bible passages and devotional passages you want to read for the day in an HTML or PDF file that can be viewed either within PocketBible or externally. It also lets you customize the styles that are used in the Autostudy output according to your preferences. Most people don’t bother with this, but I’m not most people. 🙂
If you don’t already own the Advanced Feature Set, it can be purchased as a subscription for $9.99/year. This particular feature is only available in the iOS, Android, and Mac OS versions of PocketBible. I’ll be using the Mac OS version to read from and to demonstrate these features, but the iOS and Android versions are similar.
To make it easier to do this every day, I right-click on the toolbar, choose Customize Toolbar, then drag the Today Study button onto the toolbar. That will give me one-touch access to my reading each day.
On the Autostudy Today screen I can select which books to include in the Autostudy report each day. Since the particular devotional book I’m using is just a reading plan and doesn’t itself contain any text I need to read, I’m going to un-check the Devotionals checkbox and make sure Bibles is checked.
Then I click on Devotionals (not the checkbox, but on the word “Devotionals” so that it is selected. This causes a list of all my installed devotionals to be displayed on the right. I choose the None button under that list to deselect all the devotionals, then find my Old Testament in 1 Year and New Testament in 1 Year reading plans and select their check boxes to include them in the Autostudy output.
Since I want my Old Testament reading to come first each day, I drag the Old Testement in 1 Year plan up above the New Testament in 1 Year plan. It doesn’t matter if there are other books in between, since they won’t be included. I just want to make sure the OT comes before the NT.
Now I select Bibles from the list on the left, causing my list of installed Bibles to be displayed on the right. Again I choose None to deselect all Bibles, then find the Bible I want to read from and select its checkbox. I’ll be reading from the Christian Standard Bible this year, so I select that one.
At this point I can test my output by selecting View. I’ll get the scheduled readings for whatever day happened to be selected on the calendar. The output looks just as I would expect, but I’m not entirely happy with it. I’m going to make a few changes to enhance the appearance of the text.
Back on the Autostudy Today screen, I have an option to edit the “style sheet” for the Autostudy report. Don’t be embarrassed if this looks intimidating. Most people don’t know anything about editing Cascading Style Sheets. At the same time, don’t be afraid to try this at home. You can always reset it to defaults and start over if you mess something up.
The style sheet controls how every element of the Autostudy report is formatted. I want to make a number of changes to what my text looks like:
Change the color of the Bible reference headings above each passage, and put them on a line of their own above the text instead of inline with the text.
Add some additional leading between the lines of text.
Make adjustments to how poetry is displayed.
Suppress verse numbers in the Bible text.
To change the color of the Bible reference headings, I need to locate the line that looks like this:
This line controls the Bible reference headings. By default, the text in a div element appears on its own line. PocketBible overrides this behavior by including display:inline in the style definition for Bible references. So I want to delete display:inline and the semicolon that follows it. I also delete float:left and the semicolon that follows that.
I’m not fond of the light shade of blue that PocketBible uses for Bible reference headings, so I change color:00c to color:008. This is a slightly darker shade of blue. I could instead change it to color:000 (or remove the color:00c attribute entirely) to make it black.
Next, I want to add some additional space between the lines (sometimes referred to as line leading). This is done by editing the entry that looks like this:
p {margin:0px 0px 0.5em 0px}
CSS style sheets use the line-height attribute to control line leading. A value of 100% is supposed to be “normal height”, and back in 2003 when I wrote my own HTML rendering engine, I made it work that way. But because the programmers who created the Web are not as smart as I, you actually need to set it to about 120% to get natural spacing for most fonts. I want a little extra space, so I’m going to set it to 150% by changing this line to read as follows:
p {margin:0px 0px 0.5em 0px; line-height:150%}
The p element is used for normal paragraphs in the Bible text. We also have poetry sections, for which PocketBible (arguably incorrectly) uses the blockquote tag to create extra margin on the left and right. There is no style specified for the blockquote tag in the default Autostudy style sheet (don’t ask me why; I don’t have an answer), so we just add the following line anywhere in the style sheet. I added it below the line for the p element, above.
This tightens up the line spacing a little bit in the poetry sections, and indents it a little more than normal paragraphs (about the width of one character).
Finally, we want to suppress verse numbers in the text. I happen to know that PocketBible uses the sup and small tags to superscript the verse numbers. Adding the following line to the CSS file (I added it below blockquote) causes superscripted text to be ignored:
sup {display:none}
That’s it! Once I save my changes to the CSS I’m ready to view the output.
All I need to do each day is choose the Today Study button from the toolbar, then press View to view my text for the day. I like to choose Print, then PDF, then Open in Preview to get a full-screen, PDF view of the text to read.
When I’m done reading, I mark today’s reading as complete in each of the OT and NT devotional books in PocketBible.
Today I’ve been working on a new feature for PocketBible for iOS and one thing led to another, and, well, I ended up implementing a feature I didn’t know I was working on, and didn’t realize how much of it was already sitting there, waiting to be exposed to the user.
So the new feature I thought I was working on is the ability to “rename” your highlight colors. That is, you’ll be able to assign a topic to each color. Then when you highlight a verse, instead of seeing a list containing “Khaki”, “Cornflower Blue” and “Hot Pink”, you’ll see “Salvation”, “God’s Love” and “Prophecy”. We’ve been wanting to implement this for a long time. While we were upgrading our cloud synchronization protocol over the last few months, I added the ability to sync highlight color names with the server and we took advantage of that in PocketBible for Windows Phone and Windows Store. The plan has always been to roll that into other platforms as we have the opportunity.
While looking through the code that shows you your list of highlight colors (which I’ll have to modify to show you your user-defined names for those colors) I stumbled into a bit of code that Jeff wrote years ago but then “commented out”. (If we have code that we’d like to retain for reference purposes but don’t want to actually have the computer execute, we turn the code into a “comment” so it will be ignored by the compiler but still be there if we want to see it.)
Those of you who have been with us for a while know that Jeff was my programming partner for 27 years before his death from cancer in May 2012. It’s been a bittersweet year as I’ve had to deal with his passing while surrounded and immersed every day in code that he wrote. I keep running into little things that remind me of him, make me want to give him a call to talk about a problem, or give me a chuckle. So it’s always interesting when I run into a piece of code like this.
What this particular piece of code did was add three additional highlighting styles to the list of colors you can highlight with. These are “underline”, “strikeout”, and “underline+strikeout”. Those look like this, this, and this, respectively.
Now, why would you ever want to strike out a verse? That’s a good question and takes me back fifteen years to the days of the Palm operating system when cameras were cameras, phones were phones, and “portable digital assistants” were all the rage. In those days, color displays were luxuries that cost money, size, weight, and battery life. So most of those devices had monochromatic screens.
On color screens, we could highlight a verse with a background color. But what could we do on these black and white screens? Since our text was coded in HTML, and since HTML offered simple styles like bold, italics, underline, and strikeout, we decided to use those. We ended up not using bold and italics because they could cause the text to re-wrap when they were applied, and in those days of wimpy processors, it just took too long and was disturbing to see. That left us with underline and strikeout, so that’s what we used.
As time has gone on, we’ve gotten to where we don’t even include these underline and strikeout highlighting styles in our programs. They’re not in PocketBible for iOS, and we weren’t planning on implementing them in PocketBible for Android. Unfortunately, some of you who were around back then and have sync’ed your highlights from your Palm PDA to PocketBible for Windows to our server and to PocketBible for iPhone expect to see those underlines. So we have to at least be able to display them if they exist, but we don’t let you create them (because we don’t want to proliferate a bad idea).
What I discovered today was Jeff’s original code for being able to create underline, strikeout, and underline+strikeout highlights in PocketBible for iOS. His comment said he had taken them out because the display engine (my code) didn’t support them. Sometime between then and now I implemented those highlight styles but we just never went back into Jeff’s code and turned those choices on.
On a whim, I enabled those lines of code and what do you know — they worked! That put me in the awkward position of trying to decide whether or not to leave them in. I never liked the idea of striking verses from the Bible, and even once you get over that, it makes the text hard to read.
About then it was time for dinner and I set the laptop aside to meet my wife and get something to eat. On the way there it occurred to me that we now have some better styling options that we had back in 1998. New versions of HTML with CSS support dotted and dashed underlines.
When I got home I spent about 30 minutes and implemented the styles you see here. These new styles replace the old styles rather than adding to them. So where you had strikeouts, you’ll have dotted underlines. And where you had strikeout+underline, you’ll have dashed underlines. I think this is a nice way of making your legacy data from your Palm days more usable and it gives you three more highlighting styles to use in PocketBible for iOS. (If you’re having trouble making out the dots and dashes, click on the screen shot to see the original size image.)
One of the cool things about this is that the underlying data storage and cloud synchronization already supports it. We’re not changing the data we save, but rather the interpretation of the data. So nothing changes in any of the other platforms nor on the server.
What I think is special about this — even though it’s not a life-changing feature — is that Jeff left it behind and it only took a little extra work to make it useful. And I like that all the infrastructure both for storing the new highlight styles and displaying them was already there.
Tomorrow I’ll get back to work on naming your highlight colors. But this was a nice little one or two hour detour to give us an unexpected new feature in PocketBible.