Reflections and Projections

Documentation Editor

I've had various offers in the past for help with the documentation, and I'm sad to say those have all fallen through. However, someone has contacted me, and he seems VERY keen to help out with the documentation.

One of the things I have been wanting to do is to extract the documentation from the site, and be able to work on it "offline" as it were. To this end, I extracted the documentation in XML format, and I'm writing a little editor that will be able to parse the XML and allow you to edit the pages of the documentation using a WYSIWYG HTML editor (currently it can do all of that, it just can't save).

So, if you're still interested in helping out with the documentation, you think you can spare an hour a week perhaps, then please contact me, and I'll give you stuff to do!

The all-new Theme Gallery has been launched!

I've just launched the new Theme Gallery, here on You can upload themes exported from, and upload them to the site for others to download.

To upload a new theme, simply click on the "Theme" item of the "Create content" submenu, in your account menu.

The new theme gallery is in place of the Theme Gallery page in the menu on the left.

Help Wanted: Technical Support Consultant

I was just chatting this evening to our head of support, David, about how he was holding up on the support side of things, and he mentioned to me that he's not getting much time these days to attend to the support issues coming in. David is at college, studying up a storm, which doesn't lend itself to copious amounts of free time.

So, if you're interested, and you can spend about half an hour 3 times a week, just checking up on the support requests, I know David would appreciate the help. Please get in contact with him, his contact details are on the Contact Us page.

The all-new Bible CSV Importer

Well, I had to make some adjustments to the CSV Bible Importer because of the new format of the Bibles, and it was starting to get a little crowded, so I ended up creating a whole new wizard. This new wizard adds some new things, only found in the new format Bibles, such as a full version name, copyright information (required when you display the verses) and a permission field as well. More on that when RC6 is released.

In terms of the state of development, we've gotten about half way through our task list for RC6. Derek has been tied up at work, but he reckons that he should be getting more free time in the near future, and he hopes to spend some of that time on I've been getting time to work on since we got back from honeymoon, but I'm wondering how long that will last. Hopefully long enough for us to get 1.0 out the door.

Just a side note about contacting us, I've been getting a number of e-mails recently with feature requests, bug reports and support queries. I don't have the time to go through all of those and then still develop Please use the correct channels for all those items. The Contact Us page has all the details of who to contact for what.

Reworking the Bibles, part 2: Speeding things up.

Since I've been redoing the Bibles, I've been selecting ridiculously large ranges of verses to test out my other code, and I've been getting fed up with how long it took to fetch all the verses in order to display them.

Let me explain a bit of the process first. When you do a search for verses, it doesn't actually fetch the verses at that time. It just runs through the database and sees how many verses there are, and then shows that to you. Only when you use the "Preview," "Go Live!" or "Add to order of service" does actually fetch the text of the verses.

So what would happen is that I would select about 8 chapters' worth of verses, which amounts to about 150 to 200 verses, and when I clicked on "Preview" it would take anything from 30 seconds to more than a minute to fetch those verses. Nope, that's not satisfactory for me, I decided. So this evening I sat down and decided to rewrite the code completely.

The rewritten code is definitely more complicated than the old code, but now instead of fetching each and every verse by itself, my code writes a bit of a crazy SQL query, which then fetches all the verses at once. A much more elegant solution, and MUCH faster. It now takes less than 5 seconds to fetch those 150 to 200 verses.

Unfortunately most of you will probably not notice much of a difference. I think most passages are only a few verses long... usually no longer than about 20 verses, so the performance gain will not be significant. However, it should be far faster now for the minority who like to read 300 verses in a go .

Reworking the Bibles

We've run into a couple of unforseen problems with the Bibles. Some translations use different names for some books. Some translations are not english, and so ALL their books have "different" names! So I'm rewriting how the Bibles work. We used to have an abbreviations file which we'd use when you're doing a Bible search using a book's abbreviation, and then the full search version of the Bibles page used to use that abbreviations file for it's lookup list.

So now we're making the Bibles self-contained. Each Bible file will contain it's own abbreviation table, and instead of doing a text lookup on the name of the book in the verses table, we'll get the id of the book from the abbreviation table (which has become a fully-fledged book table) and use that for the lookup.

So, for those interested, here are the create statements (SQLite) for the tables in the new format Bible files:

CREATE TABLE testament (
    name VARCHAR(30) NOT NULL

   testament_id INTEGER NOT NULL DEFAULT 1,
   name VARCHAR(30) NOT NULL,
   abbreviation VARCHAR(5)

   text BLOB

What's great about this new format is that if you are Spanish, you can have all the names of the books in Spanish! So not only do you get in Spanish (through the Language interface) but you can also have the Bible in Spanish.

Ok, let me get back to IRC channel

I have created an channel on the freenode IRC servers. So fire up your IRC client (you can use ChatZilla with Firefox on any platform, or something like Konversation for Linux) and join me (who_da_fly) on being put through it's paces

I'm back from honeymoon, and feeling relaxed and refreshed. I was pleased to see all the bug reports and related requests when I got back. Thanks to you folks, is being put through it's paces and refined into an almost bug-free piece of software.

So I just wanted to say thanks to all those folks who have been rigorously testing to see that it meets their requirements and operates without problems. Without you folks we wouldn't be able to put out such a fine piece of software (if I might say so myself).

Please continue to test, and send us bug reports (if we don't have them already), Derek and I would like to kill as many bugs as possible in RC5, probably have an RC6 to make sure we have no more bugs left, and then release the final version.

Release Candidate 5 released

Hi All. Release Candidate 5 has now been released. Due to the nature of some of the issues/problems raised in RC4, we felt that we should add an additional RC version before going to a full V1.0. This was mainly due to a lot of rewriting of code to sort out some of the 'little quirks'.

The main issues corrected were:

  • A theme import/export problem (involving the delete option)

  • In the Bible verse 'Verse' layout mode, verses are not split across slides

  • A Bible verse bug seen in imported Bibles was fixed

  • A bug in the deleting of songs was fixed

  • Auto Open Last OOS feature was fixed

  • Missing last slide character bug was fixed

For all you Vista users out there, the missing DLL (d3drm.dll) that was causing issues, will now be installed if you are running on Vista. It has also been confirmed that Powerpoint in Office 2007 is compatible with

With any luck, this will now be the last release before V1.0.

God bless, Derek.

The Roadmap

A couple of people have been confused, and rightly so, about's roadmap of development. There have been some interesting developments, so here's an updated roadmap.

The Situation So Far

Firstly, we will be releasing the final version of 1.0 in late October most probably (I'll be on honeymoon for the first 2 weeks of October).

Secondly, we had some wild and crazy ideas about versions and things, which we've had to scale down. Initially we had 3 versions: version 1.x would be Windows-only, continuing the current branch of development; version 2.x would still be Windows-only, but with a revamped interior and a different database engine; then version 3.x would be the new cross-platform, C++ version.

Recently, however, I have come to my senses, and decided to scrap the proposed 2.x branch, because there is no viable need for it. All the grand ideas we have for 2.x could quite easily be implemented in version 1.x. So now we have 1.x as Windows-only, and 2.x (the old 3.x) as the new, cross-platform, C++ version.

And then lastly, since we don't have any full-time developers, only part-time enthusiasts, we cannot have any fixed release dates. Derek and I have tried to do our best, and have had partial success. A deadline gives us a nice goal to aim for, but if we don't make it, we're not worrying.

Looking forward to version 1.2

The next version of will be version 1.2. Where's 1.1 you ask? Well, that's the development version. Odd numbered versions are development versions, and even numbered versions are stable releases.

The first thing we are going to do is a massive code cleanup. Tim originally wrote this code before he'd gone to college and learned all those impressive coding techniques, and thus we've got a bit of a mess on our hands. So while there won't be any visible changes, there will be a number of "structural" changes to make it easier to develop and maintain

After the code cleanup, we're gonna start looking at implementing a number of the most prominent features. One feature we're going to have a go at implementing is integration with That has probably been our number 1 feature request. Another feature we'd like to implement is text-over-video.

What we will most probably do is create a feature vote topic in the forums, where you vote for which feature you'd most like to see in That way we can "democratically" select which features to include in the next version of I must stress that not all features will make it. As much as we'd like to include all, we don't have the time to do that. It comes down to a "features versus working product" debate, and I always sway toward the "working product" side.

There are also various features that I would like to include as well. One of them is extra options for songs, like verse display order and support for guitar chords (although I'm not sure if we'll actually include the latter just yet).

The Roadmap

  1. End of October: Release version 1.0

  2. End of January 2008: Finish code cleanup.

  3. End of May 2008: integration, song enhancements, display enhancements.

  4. End of June 2008: 1.2 beta 1

Of course in the mean time, if there are any small bugs to 1.0, we will fix them and release 1.0.x.

Let me just issue my disclaimer again. These dates are basically sucked out of my thumb. I don't know how long they will take, and I don't know how busy us developers will be. I'm hoping that we can stick to these proposed dates, and perhaps even be able to finish some items before these dates.


I hope this manages to clear up confusion about versions, and also gives you an indication of where we're going with

Note: I don't know where the C++ port is in terms of progress, I'm not in charge of that part of the project. You'd need to speak to Tim directly. You can get hold of him via his e-mail address, tim [at]