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