PocketBible for Windows Progress Update #16

ChatGPT attempts to render my Windows programming workspace based on a general description.

I told myself I’d write a progress update after the first of the year. Suddenly that’s where we’re at.

As you recall from updates 14 and 15, we had a bit of a crisis of our own creation happen toward the end of 2022 which required us to update both BookBuilder and PocketBible on every platform. We had to modify our Bible format and make sure all versions of PocketBible (with the exception of the old/current Windows versions) could read the new format.

We started with our BookBuilder and PocketBible apps for macOS, since these two share a lot of code and doing them at the same time gave us a platform on which to test our new Bible format. We held off on releasing BookBuilder in case we discovered anything we needed to fix as we rolled out the changes. We released the macOS version of PocketBible in May with updates following into June.

This allowed us to turn our attention to the Android version, which was problematic because of Google shenanigans. An initial version was released in September to address new Play Store requirements. We spent the next 6-8 weeks implementing the Bible changes and doing updates to fix various problems discovered after the release of the new version. This was our first update in 5 years for the Android app, so there were some issues.

That brought us to the Thanksgiving/Christmas season, which is our busiest time of year. There are two large tasks that I’m personally involved in because they impact code on the website β€” creating the 2024 editions of the Bronze, Silver, Gold, Platinum, and Emerald PocketBible Library collections, and implementing the end-of-year “name your price” sale. Because these tasks have to be done every year, some of the process is automated. But it still requires a bunch of my time.

Despite the distractions, progress was made on the Windows app during this time.

The app is very close to being feature-complete, at least for the standard (non-AFS) feature set. One of the next big tasks that, oddly enough, consists of a lot of unknowns is being able to build a Windows EXE suitable for distribution.

As I’ve explained before, we do all of our development and testing on macOS. We’ve done occasional debug builds for Windows, but we’ve never been able to generate a stand-alone EXE like we’ll have to do when we release the product. So even though we’re not quite there yet, I have someone looking into those issues.

This has taken us down two dark alleys. One was compatibility problems with the versions of the Electron and Vue frameworks we’re using in the app. In order to build an executable that works, I think we’re going to need to be running newer versions of those foundational tools. Electron isn’t much of an issue, but Vue has undergone breaking changes in its most recent major update. This requires that we make significant changes just to get our code to build with that version.

The second issue is code signing. Code signing is a process that is supposed to do a couple of things. First, it assures you that the software you download from our website really is from us and not some other company pretending to be us. Second, it assures you that the code hasn’t changed between the time we signed it and the time you downloaded it. This is meant to make you safer (or at least make you feel safer). But if you think about it, code signing is arguably pointless. No malware you’ve ever been a victim of is stopped by a code signing requirement. If this requirement were lifted, all the same malware would continue to work just fine.

Anyway, signing our executable and getting it to work after it is signed has been a challenge. But we’re working on it.

Meanwhile, I’ve been able to get back in my coding chair and have been porting the new Bible format to the Windows code. One unexpected benefit is that I’ve gotten to re-think the way we had ported this code from C++ to JavaScript in the first place and make some changes that will make it easier to maintain. I’ve borrowed some from the C++ (macOS and Windows) implementation and some from the Java (Android) implementation. This gives us good consistency between all platforms and will make maintenance easier in the future.

To sum up, after a detour to do a lot of work on other platforms, we’re back to work; we’re close to feature-complete (at least for the standard feature set); and we’re focusing on tasks that are necessary to move from development to beta to release.

PocketBible for Windows Progress Update #15

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. πŸ™‚


Photo by Arif Riyanto on Unsplash

PocketBible for Windows Progress Update #3

Today we want to talk about our progress so far on PocketBible for Windows. At this point in the project, it’s difficult to show everything we’ve been working on because a lot of it is “under the hood” or “behind the scenes”. It’s related to how PocketBible accesses its files, or the server, or the database where your user data is stored. These are all hard to demonstrate.

But we’re at the point where there are a few things we can demonstrate, and you can see them in the video above. I’ll also briefly describe them here for those of you who, like me, don’t like to watch videos.

We’re trying to make PocketBible more tablet and touch friendly. We’ve taken ideas from our iOS and Android apps. You’ll notice in PocketBible for Windows that the toolbar buttons are a little bigger than they might be in a typical app. This is to accommodate the touch/tablet environment.

The toolbar at the top of the screen is reconfigurable. You can drag buttons onto and off the toolbar from the Preferences screen.

The toolbar on the left side controls the features of the Study Panel. This is where we display your bookmarks, highlights, notes, search results, etc. In particular today, we demo the note editor. We can style text and paragraphs as you might expect, though your edits are not yet saved to the database. You can edit your notes in a plain-text editor if you’re comfortable working around the HTML tags that control the appearance of your notes.

We have a lot of the features related to display books implemented. There’s no “navigation” features yet, but you can scroll through them and see both text and images.

We’ve been doing a lot of work on the Library functions. This is how you download and open books. You can view a list of books installed on the device or books that you own (your Cloud Library account). You can view the lists in a “gallery” format or in a “list” format.

Clicking on a book in the Cloud Library causes it to be downloaded. Clicking on books in your Device Library opens them. You’ll see a progress indicator as you download books, and you can select multiple books to download them all at the same time.

You can choose to see only Bibles, only dictionaries, only commentaries, etc. You can also search for a book by typing a portion of its name in the search field.

There are a limited number of display format preferences implemented. You can currently choose a font, font size, line spacing, and some other options. You can choose from one of several color schemes, including a “dark mode” scheme, and you can create a custom color scheme by choosing colors for each of a couple dozen different elements of the display.

There’s more going on behind the scenes that are hard to demonstrate, and there a lot of things visible on the screen that are really just placeholders. Anything you see on the screen currently could change at any point before release.

About Our Development Tool Set β€” Electron

I’ve been talking about our innovative, new development environment since before we started coding on the project. I want to explain that in more detail at this point. If you’re not interested in the technical side of what we do, you can probably just jump to the end at this point. πŸ™‚

We’re using a tool called Electron to develop the Windows version of PocketBible. Electron is a framework for creating native applications using Web technologies like JavaScript, HTML, and CSS. It combines node.js (a JavaScript run-time environment) and the Chromium engine (the guts of the Chrome browser built into the app). This allows us to write our code in JavaScript and create our user interface using HTML and CSS just like we would on a website. It wouldn’t be incorrect to describe this as a website running on an embedded Web server inside a Windows executable.

A lot of programs you are already familiar with are implemented using Electron, like VS Code, Facebook Messenger, WhatsApp, Twitch, and Microsoft Teams. We’re encouraged by the fact that Microsoft seems to be committed to this tool set.

This lets us leverage what we know about website design as we design the user interface and write the app.

We can actually use the Chrome developer tools just like you would in your browser to debug the app. We can explore the user interface, set breakpoints in our code, and examine the values of variables β€” all using tools we’re familiar with from Web development.

Using Electron allows us to use our Macs for Windows development. The video above was shot on a Mac. That’s why you don’t see a menu bar in the app β€” on a Mac the menu for the active app is displayed at the top of the screen, not in the app’s window. Being able to run the app on a Mac is a real benefit to us since we’re 100% Mac OS here. We use it for Android, iOS, and Mac development. When necessary, we have Windows running on our Macs under Parallels so that we can use Windows apps. But we try to avoid it as much as we can. πŸ™‚

So that’s where things stand as of early February. You can post questions below or send them to [email protected] and they’ll make sure I see them and can respond.


Brief demo of multiple panes. See comments below.

PocketBible for Windows Progress Update #2

More Rewards Distributed

The 2021 editions of the PocketBible Library Collections are being released coincident with this status update. If your reward package included the Bronze, Silver, Gold or Platinum Library, you’ll find those books are now in your account. The special Diamond Edition for those at the higher contribution levels has also been distributed, though of course it’s not available to the public. You can download any new books from these collections using the Cloud Library feature in PocketBible.

Note that the 2021 editions contain some Bibles that are not compatible with the current Windows versions of PocketBible, particularly The Passion Translation, World English Bible with Strong’s Numbers, and the Spanish Nueva Biblia de las AmΓ©ricas. These will work in PocketBible on other platforms.

Note further that the collections include the very recently released 2020 edition of the New American Standard Bible. The publisher has said we can continue to offer the 1995 edition, but we need to refer to it as “NASB1995” and call the new version “NASB”. Since the Windows versions can’t be updated to use the new abbreviation for the 1995 edition of the NASB, you will end up with two Bibles both called NASB. In the Windows Desktop version you could potentially have 4 tabs labelled NASB, NASB, NASEC, and NASEC (the latter two being the NASB with Strong’s Numbers). You’ll find if you hover over the tab you’ll be able to see which one it is. In other places where you’re choosing from two versions with the same abbreviation, you’ll see that “1995” or “2020” has been added to the title so you can tell which one each is.

Diamond Edition Contents

Because the 2021 Diamond Edition is not available to the public, there’s not an easy way to see what it contains. This collection, which was offered as a reward for those who contributed $720 or more to the project, contains everything in the 2021 Platinum Edition plus:

A Hebrew Word for the Day
Ancient Christian Commentary Series
Bible Reader’s Companion
Bible Teacher’s Commentary
Dake Study Bible Notes
Ephesians: Reformed Expository Commentary
Gospel Transformation Bible Notes
Greek New Testament Collection
Knowing the Bible Series
Maclaren’s Expositions of Holy Scriptures
Preaching the Word Series
Systematic Theology Study Bible Notes
The Good and Beautiful Community
The Good and Beautiful God
The Good and Beautiful Life
The Sermon Notebook
Understanding the Bible Series

The total value of all these books sold separately is over $4000. Thank you again for your support!

Progress Update

Work continues on two fronts: Implementing features related to what we call “user data management” (notes, highlights, bookmarks, and daily reading progress), and translating the code at the core of PocketBible that reads and acts on PocketBible books and Bibles.

We’ve completed much of the nuts and bolts of user data management and have begun to work on user interface issues related to those features. For example, neither the Windows Store nor the Windows Desktop version of PocketBible allows you to set bookmarks on more than one verse at a time. (To be fair, neither does the Mac OS version.) But the iOS version recognizes that you have multiple verses selected and assumes you want to set or clear bookmarks on all (or at least some) of those verses. We prefer this behavior and want to introduce it in the new Windows version.

This is what we meant when we said that we would draw on our experience with the Mac OS and iOS versions when writing the new Windows version. Not that we were going to duplicate either one, but that we would allow what we’ve learned while experimenting with different ideas on those platforms to influence how we re-imagine the Windows version.

I’ve said before that we’d be building the new version using a different programming language, application framework, and toolset. So porting the shared portions of the code β€” functionality like being able to read and operate on our Laridian book (LBK) files β€” is mostly a “translation” task. This is not entirely true, as certain concepts are very different between the two languages, as are the syntax, idioms, and data types.

To give you an idea of the size of this task, I counted this morning (automatically, not by hand) the number of lines in the shared C++ code and it came to 457,326 lines. That’s about 8000 pages if you were to print it out. All of that code has to be read line-by-line, translated (taking into account changes made to other parts of the code during translation), and tested.

We continue to make progress in this area, though I believe we’re only about 10% to 20% through it. For example, the program is now able to detect the books you have installed and allow you to select from among them β€” though once you open a book, you’re not able to read text from it. The text we see on the screen is simulated β€” biblical lorem ipsum so to speak. I’m working on that portion of the code right now.

PocketBible for Windows Progress Update #1

As you know, our crowd-funding campaign for PocketBible for Windows ended on September 15 so we’re about one month into the project. While I can’t demonstrate much for you at this point, I do want to fill you in on our progress and answer a few questions.

Over the last couple of years we’ve experimented with a number of programming languages, frameworks, and development tools to try to discover the best way forward for PocketBible for Windows. In the process, we’ve explored some proof-of-concept ideas, some of which will find their way into the finished product.

For example, we needed to be able to display and interact with books with complex layouts, like The NIV with Goodrick-Kohlenberger Numbers and our parsed interlinear Greek New Testaments. You would think that displaying formatted text would be trivial these days, given that it’s 2020 and even Web browser technology from the last century can do it fairly well. PocketBible for Android, iOS, and Mac OS uses HTML rendering built into those platforms that does a very good job. Unfortunately, the similar functionality built into Windows is significantly less capable. So as we explored alternative tool sets for implementing PocketBible for Windows, this is one of the areas we focused on. Our ability to successfully render these complex layouts during our experiments in the summer of 2019 is what led us to settle on our current solution. (We’ll have more to say about that in a future update).

Now that we’ve demonstrated that we can display and interact with the text, we need to be able to extract the text of a book or Bible from our Laridian Book (LBK) file format. The code that does that is fairly extensive and complicated and needs to be translated from its current implementation and thoroughly tested. We’re currently working on that task.

A major area of progress is what we call “user data management”, which is keeping track of your notes, highlights, bookmarks, and daily reading progress. In particular, we wanted to tackle synchronization of that data with Laridian Cloud. This would force us to fully implement the ability to read and write the data from and to the database, and would also require us to solve communication with our cloud-based sync provider β€” both of which are complex tasks that introduce risk into the schedule. Overcoming those challenges and dealing with that risk during the early part of the project avoids the possibility of unexpected delays right before our ship date, when it is least-practical and most-expensive to deal with it.

As of today, even though the PocketBible app for Windows doesn’t allow you to view or edit notes, it can sync its local notes database with the server. You can’t even see any verses, let alone select one to highlight, but you can correctly sync highlights to and from the cloud. This means we’re able to populate the local database from a customer account, make manual changes using a database editor tool, then request that the program sync again. The app accurately identifies what has changed and syncs those changes to the server. At the same time, it receives and records any modifications or new records sent to it from the server. That means that, at least internally, everything is working. There’s just no user interface to it yet. Sounds weird, but it’s very normal for a software project to be completely working but with no way to see that it’s doing so. That will come later.

It’s also worth noting that even though neither of the current versions of PocketBible for Windows (Windows Desktop or Windows Store versions) support Journal notes or renaming highlight colors (features of the Advanced Feature Set in PocketBible for iOS, Android, and Mac OS), the new version already supports those features. Or rather, the underlying support is there; there’s just no user interface to invoke it.

Until next time, thank you so much for your financial support, prayers, and words of encouragement for this project. We welcome your feedback and suggestions.

Frequently Asked Questions

What will be the effect of the Windows project on work being done on other platforms?

According to comments on a recent customer survey we did, some of you have expressed concern that our attention to the Windows project will take away from work on other platforms. I want to reassure you this is not the case. In fact, the very purpose of the crowd-funding campaign was to allow us to add staff for the Windows project in order to minimize the impact on other platforms. You may not realize it, but you’ve already seen the results β€” we shipped a new version of PocketBible for iOS coincident with the release of iOS 14, which introduced a number of major new features for PocketBible on that platform, all while work on PocketBible for Windows continued unabated.

When will I get my rewards?

When you get your rewards depends on what type of rewards you are entitled to.

Physical Rewards: Three contributors were entitled to some special rewards (a 1903 KJV New Testament and two framed, first-edition KJV pages from 1611). These were mailed within a week of the end of the fund-raising campaign.

2021 PocketBible Library Collections: Contributors at the $60, $120, $240, and $360 levels will get the 2021 Bronze, Silver, Gold, and Platinum Edition PocketBible Library collections, respectively, when those products are released near the end of the year.

Special Diamond-Level Library Collections: Contributors at levels $720 and above will get the special collection we’re putting together just for those contributors. It will be released either at the same time as the regular 2021 Bronze, Silver, Gold, and Platinum collections are released, or shortly thereafter. We’re aiming for having all of the collections distributed by the end of the year.

Advanced Feature Set Subscriptions: Some contribution levels included multiple years of either the AFS for the new Windows app or for all platforms. Those will be distributed when the new app ships. We haven’t announced a specific ship date but are aiming for late summer, 2021. Obviously, those who are entitled to a mention in the in-app credits will see that when the app ships.

Wait… Isn’t that a Mac in the picture?

Yup.

We Reached Our Goal!

Thanks to the kindness of 492 of our closest friends, we were able to reach our goal of raising $50,000 for the development of an all-new version of PocketBible for Windows! The final total came to exactly $53,000.

If you contributed to the project, you’ll get an email from us letting you know how we’re going to keep you updated on our progress. We’ll publish updates here on the blog. Some will be public like this one; others will be for supporters only.

To get things started, I met yesterday with the outside developer responsible mainly for user experience to bring him up to speed. And since the beginning of the crowd-funding campaign I’ve been working with another in-house developer to bring her up to speed on the development tools and the initial tasks we need to work on.

Even though we already have two different Windows versions of PocketBible, this version is going to be implemented a whole new way (more about that later). So we have to treat it as if we’re doing it for a whole new platform. When we launch into PocketBible for a new platform, I like to tackle the hard things first. That is, I try to identify what is going to be a challenge for us and do some prototyping or proof-of-concept tests to make sure we’re going to be able to solve those problems before they become hinderances to the schedule.

What that means is that we’re going to start kind of in the middle of the project, focusing on the note editor and user data synchronization, because those seem to always present problems on every platform. We’ve already done some experimenting with simply displaying and scrolling through text, as that’s another problem area. We’ve actually written and thrown away a few different attempts at some of those problems already.

This approach creates interesting paradoxes. We’ll be able to sync your notes, highlights, bookmarks, and daily reading progress to and from the server before the program can create or display a note, highlight a verse, or set or go to a bookmark. We’ll be able to scroll through Bible text before we can choose and open a Bible to read. But such is the world of software development, especially with a mature product like PocketBible. Even though the new version of PocketBible for Windows doesn’t exist, PocketBible itself exists both as an abstract concept and in several concrete implementations β€” not just the existing Android, iOS, and Mac OS apps, but our soon-to-be extinct Windows apps and our already-extinct Windows Mobile Smartphone, Pocket PC, Handheld PC, Palm-size PC, webOS, Blackberry, Palm OS, and browser-based versions. So this new Windows version already exists in our heads. Starting in the middle or at the end or the beginning is all the same to us. πŸ™‚

Photo by Danielle MacInnes on Unsplash