Wednesday, April 21, 2010

Devotion feature details (0.9)

One of the most requested feature is the ability to display Devotion (in Indonesian it is called "Renungan" or sometimes bahan saat teduh). So many people requested that so I was very much encouraged to add this feature.

This feature is different from other features, in that this requires external support in order to make this work. We need a live web server to handle the request of devotional material, because the material itself changes every day, we cannot store it onto the program.

I decided to support two devotional material, which is Renungan Harian (Indonesian version of Our Daily Bread of RBC Ministries), and Santapan Harian (literally: daily nourishment, of Pancar Pijar Alkitab).

They can be summarized as follows according to my experience:
  • Renungan Harian is focused on showing how to relate daily events with the Scriptures. The Scripture passage is selected in order to give some message about the daily events.
  • Santapan Harian is focused on giving exposition of every chapter on the Bible, sequentially with jumps every few weeks. After exposition, the implications to our daily life is given.
Both can suit readers, although I think the latter is for later stages of Christian spirituality growth.

Like the links above indicate, they are provided by my favorite website. I afraid that if there are more and more users use the Bible app, will suffer. So I made some kind of proxy cache in my server at

Santapan Harian devotion material
The verse address that is displayed on top of the devotion is clickable to directly jump to the verse.

How if there is no Internet connection when one wants to read the devotion? Every time a material is downloaded, it is checked, whether it is valid or not (because only has materials until a specific date in the future), then if it is, will be stored into the local database. When the devotion screen is opened, materials up to 14 days to the future will be downloaded and stored.

When I read the feedbacks, there are many users that are happy with this, and also quite a number users who had problems... however it's because the proxy cache server is not storing the materials with the correct encoding to the cache database, and it is fixed now!

Version 0.9 features Section Headings and Devotion

I feel that something is still missing before I can say that the Bible app has a version number of 1.0. What is missing? The iPhone app that har made has section headings for the verses (Indonesian: Judul Perikop).

So I ask him how to get those data. He said that he got that from a Mac program that shows section headings on Indonesian Bible, and he was able to extract the files as HTML files. However I found some typos in the section headings, in fact I saw several times in a while, so I thought I needed to copy them from my physical Bible book.

Turned out that has the section headings all listed together! I'm so thankful to, they have a very comprehensive resources for Bible especially for Indonesian bible study. I need to create a parser that converts the verse addresses mentioned in the page to the internal addressing used in the app. For example,
Judul: Manusia dan taman Eden
   Perikop: Kej 2:8-25 (TB)
is converted to: title="Manusia dan taman Eden" address=0x000208 (where 0x00 is the book number (0 is Genesis), 0x02 is chapter number, and 0x08 is verse number).

The problem is on the inserting of the section headings into the verse texts. I need a big concentration to write the code to insert them correctly without impacting performance too much. At the end I used two files for the section headings, one is the index where everything will be loaded into memory, and another contains all the texts of the headings.

Section headings shown

Even better, there are parallels, which indicate similar or same stories in different part of the Bible. One example,
Judul: Silsilah Yesus Kristus
   Perikop: Mat 1:1-17 (TB)
        Paralel: Luk 3:23-38 (TB)
which means the texts in Matthew 1:1-17 is essentially the same story as what is told in Luke 3:23-38. I want to make the parallels appear as links that can be clicked to go directly to the verse.

The parallels are shown, it is clickable to jump directly to the verse
Some fine tuning was applied for the verse address parser to recognize dash sign (which is, if "Mat 26:47-56" is clicked, it will be recognized as "Mat 26:47").

So 0.9 was released (0.9.1 was shortly after released to fix a strange bug), and I am very happy with this, since most of the Bible app don't have section headings and parallels. I hope this app is useful for you, to study God's Word better.