Whetstone is a simple application for helping you to regularly memorise verses of scripture. It’s a project born out of personal need, but hopefully useful for some other people.
This is the first ever version – it’s very much alpha quality, with bits missing and probably a bunch of errors. And the GUI is a bit ugly too. But the open source mantra is “release early, release often”.
If you’re interested in helping out, contact me at mrben -at- jedimoose -dot- org
UPDATED 2009-10-20
Version 0.0.2 is here! Changes from 0.0.1:
- Quiz tab now has quizzes (only the 2 multiple choices ones at the moment)
- You can now use any installed Bible translation
- You can save preferences for translation and default planner
- Some bugfixes in the planners (note that the v0.0.1 database will work, but you’ll lose the last date in any planner)
Download version 0.0.2 from here.
If you’re upgrading from 0.0.1, you can copy the database file (.pymv_db) into the new folder, and it should work fine.
The README file looks like this:
================ Whetstone ==================
1. Introduction
2. Dependencies
3. Installation / Running
4. Upgrading from 0.0.1
5. Notes
6. Comments / FAQ=============================================
1. Introduction
Whetstone is a simple tool to help you consistently memorise passages of scripture, through a regular plan of verses to learn, and gradually removing parts of the verse over time to help you memorise. We provide you with an initial 100 verses for you to memorise, as well as an interface for adding/deleting verses, and a planner to help you customise your own learning plan.
=============================================
2. Dependencies
Whetstone was developed on Ubuntu Jaunty, and all dependencies are available from the standard repositories.
Most distributions will come preinstalled with:
– Python (2.4 or later should work)
– PyGTK (2.14.1)In addition, you will require:
– pysqlite2
– diathekeDiatheke is a command-line front-end to the SWORD Project (http://www.crosswire.org/sword/). You will need to have a Bible translation installed too. If you prefer, you can install one of the other graphical frontends for Sword to help install the modules – Xiphos (Gtk-based) and BibleTime (Qt-based) are both good.
=============================================
3. Installation
Assuming you have installed all the dependencies (see (2) ), you should simply be able to unzip whetstone and run it with python:
$ tar zxvf whetstone-0.0.2.tar.gz
whetstone-0.0.2/
whetstone-0.0.2/whetstone.py
whetstone-0.0.2/whetstone.glade
whetstone-0.0.2/verses.csv
whetstone-0.0.2/LICENSE
whetstone-0.0.2/README
$ cd whetstone-0.0.2
~/whetstone-0.0.2 $ python whetstone.pyOn first run, whetstone will create a blank database for you, and fill it with the memory verses contained in verses.csv, which may take a few seconds. This is a one-time operation.
=============================================4. Upgrading from 0.0.1
Follow the installation instructions in (3) but you can copy your database over into the new directory:
$ cd whetstone-0.0.2
~/whetstone-0.0.2 $ cp /path/to/whetstone-0.0.1/.pymv_db .This will retain all your additional verses and planners, although your planners will each lose their last date.
=============================================
5. Notes
Whetstone 0.0.2 is still very much in alpha quality – it’s rough around the edges! Here’s a few things to note:
1. The quiz page is now up and running, but only for Multiple Choice Quizzes (Guess verse from reference and guess reference from verse)
2. The menu’s aren’t fully functional – Edit -> Properties and Help -> About work, but nothing else yet.
3. You can now choose which Bible translation you want, based on your installed SWORD modules.
4. You’ll get tonnes of feedback (and errors) in the command window
5. In the Verse editor, double-click on a verse in the left pane to load in the right
6. You can’t delete categories
7. In the planner section, you can open up the “manage planners”, double-click on the planner name, and then double click on calendar dates to see the verses for those dates
8. If you were running 0.0.1, your database will still work, but your planners will lose the last date in the plan
=============================================
6. Comments / FAQ
Q. Have you tried $other_software (BibleMemorizer, Crosswire Flashcards, e-sword, etc, etc)
A. I tried everything I could lay my hands on which was open source and ran on Linux. Nothing matched what I was really looking for, which was a tool to manage learning scripture via a calendar, with a tool to help you learn by gradually removing parts of the verse (just like I remembered from Sunday School
). The closest match was BibleMemorizer, but it only does full verse quizzing, and no real learning aids.
Q. Are you porting Whetstone to Windows?
A. Yes. Whetstone is about 99% platform independent. The 1% is down to locating and running the diatheke software to pull verses. However, unlike Linux most Windows platforms don’t come with Python and PyGTK pre-installed. I will be putting together a Windows version using py2exe in the near future.
Q. Why scripture memorisation?
A. I was listening to a talk where the speaker (Steve Ford – I’m looking at you here) was using training for sport as an analogy for our Christian walk. One of the things he was talking about was whether or not our training schedule matched our expected (hoped) outcome in ministry. If you want to win the olympics, you don’t sit on your sofa eating pies! And so I developed a basic “training schedule” for my week, and one of the things I thought it would be good to do is to memorise some scripture passages. And, being a good geek, I then spent hours creating a tool to do something, rather than doing it
![]()
Q. Where did the 100 verses come from?
A. I found them online at http://www.mentoring-disciples.org/Best100.html – I have no affiliation with this site, no do I agree or disagree with any other content posted there. I may consider including other sets at a later date – I was particularly interested in a challenge to learn 1 verse from every chapter in the New Testament at http://www.scripturememorychallenge.org/
Q. Whetstone?
A. I was short on ideas, sorry. PyMemoryVerse didn’t really cut it. I thought I would play on the analogy of the Bible being the Sword of the Spirit (Ephesians 6) and imply that memorisation is like sharpening that sword, thus Whetstone.
Q. Need help/questions/answers/comments?
A. You can contact me at mrben -at- jedimoose -dot- org. If there is sufficient demand, I may put Whetstone onto Launchpad to utilise their bug tracking and forums and stuff.
Pingback: JediMoose » Code Release!
Thanks for the work you have done. I have been using Biblememorizer and e-sword scripture memory tool for quite a while. It sounds like what you are doing has a few things in common with the scripture memory tool in e-sword, with the improvement of controling the learning style more. That’s great, as I really want one in Linux. I have not been able to get it to work, and I think it is because I cannot get pysqlite2. It does not seem to be in the repositories (Jaunty 64). I would like to keep testing.
OK. I found pysqlite here:
http://oss.itsystementwicklung.de/trac/pysqlite/wiki/PysqlitePackages
I have tried:
‘/home/colin/e-Sword/whetstone-0.0.1/whetstone.py’
Located diatheke at /usr/bin/diatheke
(whetstone.py:27518): libglade-WARNING **: could not find glade file ‘whetstone.glade’
Traceback (most recent call last):
File “/home/colin/e-Sword/whetstone-0.0.1/whetstone.py”, line 834, in
app = guiClient()
File “/home/colin/e-Sword/whetstone-0.0.1/whetstone.py”, line 258, in __init__
self.wTree = gtk.glade.XML(self.gladefile)
RuntimeError: could not create GladeXML object
However, the whetstone.glade file is there. As shown by:
ls /home/colin/e-Sword/whetstone-0.0.1
LICENSE README verses.csv whetstone.glade whetstone.py
Not sure how to get it to find the wheatstone.glade file.
Hi col – try running it from the whetstone directory.
~ $ cd whetstone-0.0.1
~/whetstone-0.0.1 $ python whetstone.py
I think that’s the problem (which is bad coding practice if it is, sorry)
Thanks Ben. Now it works.
It looks good. I can add verses by double clicking on them. I assume the calendar thing will take over when it is all operational right?
The preconfigured verses is great for having a list of verses to memorise. However, it is also good to revise verses which have been learned. Also, I often choose verses outside from a standard list. To solve this I see that I can collect verses from outside the list by typing the reference, and clicking on get from sword. I was not sure how to them make this my list of verses to be memorised.
BTW, would you prefer comments here or in the Ubuntu forums?
The calendar thing is up and running – if you click on the “Learn Verse” tab it will offer to create a planner for you, and you can select which categories of verses to learn, and how often you want a new one. Each day the verse will show less words, to help you learn it. You can use the slider to move between different levels of “deterioration” or you can double-click on a day on the calendar to view what the verse would look like on that day.
If you want to have your own set of verses for learning, probably the simplest thing to do is to add them all into a new category – get the verse and type in a new category name (on the first one) and then add the rest in. You can then choose this category when you create a planner.
I’ll take comments here or in the ubuntu forums, I’m not fussy
Looks good! I tested it out, and looks to be a promising application. Good thinking to pull from the crosswire repos, that is a good help.
Shane
Thanks for your great work on this Mr Ben. However I am still having problems getting it to do what I thought it would do.
When on learn quiz, I cannot work out how to edit nor delete a planner. Is a planner supposed to allow more than one verse? It would be good if it could; or is the idea for a different planner to be used for each verse?
In the quiz section, I can choose a quiz type, and then choose a planner, and then all verses, but when I choose Launch planner quiz, nothing happens. Similarly, if I choose a category, and then choose Launch category quiz, nothing happens.
So, I am not sure what I am doing wrong.
A planner can (and should) contain multiple verses. When you create a planner, you choose the category/categories you want in the planner, the date you want it to start, and the frequency. When it is loaded, the verse shown in the display is the verse you should be learning today. If you want to see the other verses, you double-click on the dates in the calendar. Verses will be shown with less words each day between verses, to help you learn. You can see what it will look like either by using the slider, or clicking on a day in the future.
Your quiz problem sounds like a bug. Can you send me any output from the console window that you’re running from? Also, indicate which categories you are choosing. I’ll see if I can replicate (and resolve).
Oh. And at the moment you can’t edit or delete a planner. That’s planned for a future release
If you want to delete stuff, either delete your whole database (.pymv_db in the whetstone directory), or install sqlitebrowser and point it at the file to delete stuff, if your confident enough.
I think the problems I was having with the learn Verse tab and the planners was because my data base was corrupted (I had copied it over from version 0.01). So I removed the data base to allow it to be re-created. It seemed to work quite fine now, or at least I can now see how you intended it to work. My preference would be to have verses from different categories that I would check, but I guess I would just make a new category to do that. So all that is now good.
However, the problem with the Quiz section still occurs. The error message for both planner quiz and category quiz are shown following. I hope it is helpful for you. Thanks again for your great work – not enough people take scripture memorization seriously enough.
Xlib: extension “RANDR” missing on display “:0.0″.
Located diatheke at /usr/bin/diatheke
DB Already Exists
Page changed to page number 2
Traceback (most recent call last):
File “whetstone.py”, line 1084, in OnQuizLaunch
self.OnMultiQuiz(type=quiz_type, verselist = verselist)
File “whetstone.py”, line 1096, in OnMultiQuiz
temp = self.db.get_verse(verse)
File “whetstone.py”, line 215, in get_verse
self.cur.execute(“SELECT verseref, versetext FROM verses WHERE refno=”+str(verseid))
pysqlite2.dbapi2.OperationalError: no such column: END
Traceback (most recent call last):
File “whetstone.py”, line 1084, in OnQuizLaunch
self.OnMultiQuiz(type=quiz_type, verselist = verselist)
File “whetstone.py”, line 1096, in OnMultiQuiz
temp = self.db.get_verse(verse)
File “whetstone.py”, line 215, in get_verse
self.cur.execute(“SELECT verseref, versetext FROM verses WHERE refno=”+str(verseid))
pysqlite2.dbapi2.OperationalError: no such column: END
Traceback (most recent call last):
File “whetstone.py”, line 1084, in OnQuizLaunch
self.OnMultiQuiz(type=quiz_type, verselist = verselist)
File “whetstone.py”, line 1096, in OnMultiQuiz
temp = self.db.get_verse(verse)
File “whetstone.py”, line 215, in get_verse
self.cur.execute(“SELECT verseref, versetext FROM verses WHERE refno=”+str(verseid))
pysqlite2.dbapi2.OperationalError: no such column: END
Traceback (most recent call last):
File “whetstone.py”, line 1084, in OnQuizLaunch
self.OnMultiQuiz(type=quiz_type, verselist = verselist)
File “whetstone.py”, line 1107, in OnMultiQuiz
tempa.append(item)
UnboundLocalError: local variable ‘tempa’ referenced before assignment
Oh yeah, one other issue I should mention is that when I created a new category, I would sometimes get a blank verse that contained copyright info etc. like this:
Diatheke command-line SWORD frontend Version 4.2.1
Copyright 1999-2005 by the CrossWire Bible Society
http://www.crosswire.org/sword/diatheke/
usage:
diatheke [-s search_type] [-r search_range]
[-o option_filters] [-m maximum_verses] [-f output_format]
[-e output_encoding] [-t script] [-v variant#(-1=all|0|1)]
[-l locale]
If is “system” you may use these system keys: “modulelist”,
“modulelistnames”, and “localelist”.
Valid search_type values are: regex, multiword, and phrase(def).
Valid option_filters values are: n (Strong’s numbers),
f (Footnotes), m (Morphology), h (Section Headings),
c (Cantillation), v (Hebrew Vowels), a (Greek Accents), p (Arabic Vowels)
l (Lemmas), s (Scripture Crossrefs), r (Arabic Shaping,
b (Bi-Directional Reordering), x (Red Words of Christ)
Maximum verses may be any integer value
Valid output_format values are: GBF, ThML, RTF, HTML, OSIS, CGI, and plain (def)
Valid output_encoding values are: Latin1, UTF8 (def), UTF16, HTML, and RTF
Valid locale values depend on installed locales. en is default.
The query_key must be the last argument because all following
arguments are added to the key.
Example usage:
diatheke -b KJV -o fmnx -k Jn 3:16
diatheke -b WHNU -t Latin -o mn -k Mt 24
Hmm – the quiz thing looks like to be a bug – I’ll get onto this ASAP. With the category thing, are you entering a verse at the same time as typing in a new category? It looks like you might be leaving it blank, which is producing an error from Diatheke. I’ll put in a check for this.