PyScriptures 0.2a Is Here!

So, for those of you who aren't in my immediate vicinity or who aren't on Google Talk all the time, this might well be your first exposure to my latest project. I'm calling it PyScriptures. Py because I wrote it all in Python. Scriptures because it is a program that provides the entire LDS standard works (as far as the actual scriptures are concerned, anyway).

Some History

(feel free to skip to the good stuff if you don't care about history, or skip to the downloads)

I have been working on this sort of program for a very long time. My first attempt was way back in probably 2001, using PHP. I wanted to have a way to easily read the scriptures on my computer without requiring an Internet connection. To go along with this, I wanted to be able to highlight text, mark verses, and easily navigate the scriptures. Obviously, I never quite got it right--that's why I'm still working on new versions all the time.

After a while, I learned that I would be getting a nifty Sharp Zaurus SL-5500 as a graduation present. It's a Linux-based PDA (one of the first, actually), and it's still pretty powerful considering that it's 6 years old now. Anyway, once I got that little gadget, I wanted to get the scriptures on there, too. I didn't have any of the MarkMyScriptures software that other PDA users enjoyed, because of the different operating system. Not to mention how cheap I am (I hate buying software). I ended up porting my PHP/MySQL version of the scriptures to my PDA and using it that way for a little while, but that proved to be very inefficient. The project went on hold for a while, during my time as a missionary in Romania.

When I returned home from my mission, I picked up the scriptures project again. I think my next stab was a Swing-based Java application. It worked well enough, but it never really got too far beyond, "Oh look! The scriptures!"

It was also during the time I was working on the Java version that I realized that the database I was relying upon for my scriptures was incomplete. I'm not sure what the extent of the missing information was, but I remember specifically looking up Doctrine & Covenants 77 only to find questions with no answers. The database was also not very "normalized" but that's more of a nerdy topic, so I will spare you the details. I attempted to contact the bloke in responsible for maintaining that database to let him know of the problems, but it seems like he died or something. Absolutely no response from him, and no activity on his website for two years.

After discovering the lack of complete scripture in that database, I made a promise to myself that I would make my own version of the database so I wouldn't have to stumble upon more incomplete or inaccurate scriptures. This became a reality early in May, as I wrote a program (in Python) that actually downloaded (I call it "harvesting") all of the scriptures directly from the Church's website. It took quite a bit of time to perfect, but as far as I can tell, it works great now. It puts all of the scriptures in a nice, normalized database. So far I know it works with SQLite and MySQL, but it should work just dandy with others as well.

Once I had that fresh database, I began working on a graphical interface for the scriptures. I had been tinkering with something called wxPython for a little while, but I'd never really built anything useful with it. I could never get used to laying things out after using the amazing GUI builder in NetBeans.

This past weekend I've been hacking nearly non-stop to get a nice, functional interface for my scripture program. I'm very satisfied with it, and I have to admit that it performs far better than any previous iteration of this project. There's still a lot to be done to make it work the way I want it to, but here's a brief list of features in this version 0.2a release:

Features Include:

  1. Cross-Platform Compatible: This program works exactly the same on Windows, Linux, and Mac. I've tested it on Windows XP, Vista, Ubuntu Linux, Slackware Linux, and MacOS X (leopard) and have only found minor differences that don't really matter anyway. The program itself does work though.
  2. Fast: Python does a good job at working quickly, even with my crummy code. It boasts incredible speed when retrieving and rendering the entire canon of scripture.
  3. Simple searching: You can type in a word, part of a word, or a whole phrase, and it will find any and all matches (case-insensitively) in the entire standard works.
  4. Quick Jump: Know the exact reference to the scripture you want? Type it in and you're immediately taken to that verse. I never understood why other programs don't have this feature. My implementation is not perfect, but it sure as heck didn't take much to get it where it is.
  5. Adjustable font sizes: You can easily adjust the size of the scripture text (within reasonable limits). That way you can make it easier to read if you're not sitting right in front of your computer.
  6. Easy navigation: You can quickly and easily jump to the next or previous chapter or book. I realize that this might not be very useful to a lot of people, but I love this sort of functionality.
  7. Random verse: Click one button to jump to some random verse anywhere in the scriptures. This is mostly a database deal, and it seems to prefer the Old Testament in my experience. Maybe that's just because the Old Testament probably has more verses than the rest of the volumes put together?
  8. Good memory: Prefer to have your window maximized? Don't like seeing the toolbar? The program will remember things like that, as well as the size and position of the window on your screen (if it's not maximized) and what verse you had selected immediately before closing down the program.
  9. Keyboard shortcuts: For those of us who hate to use mice, there are keyboard shortcuts to do most things in the program.

There's still more fun stuff to come, but I had to get something out the door. I spent most of today just trying to get the program to behave well on other platforms (mostly Windows), because I develop on Linux. If you're interested in trying out what I have now, feel free to download whatever suits you best:


Windows Installer (32-bit) (9.0MB)

Debian Linux (including Ubuntu) (2.9MB)

Launch pyscriptures after installing and it should work.

MacOS X (11.3MB)

Man... Gotta love the size differences.


This program requires Python 2.4+, pysqlite2 (or sqlite3 if you have Python 2.5), and wxPython 2.8+. These may be different, but that's what I used to develop with, so I know it works with them. The Windows installer should include everything you need to get started, as should the Mac installer.

Note: The .dmg is very, very shabby right now. I plan on making it prettier as time goes on, but this _is_ an alpha release, after all. You can't expect too much.

I should stop here. Enjoy!

20 Things You Won't Like About Windows Vista

Ported From Blogger

The following post was ported from my old blogger account.

20 Things You Won't Like About Windows Vista

I happened upon this article whilst glancing through my daily Slashdot update. From what I was able to read so far, I agree 100% with this bloke who wrote the article.

I had the opportunity to play with a Vista beta a couple of months ago, and I was pretty impressed by certain aspects of the new OS, but in the end, I went back to my Linux. One thing, for example, was the new hardware rating system that's integrated into Vista. It's an excellent idea--Windows will rate your system to give you some rating on an arbitrary PC standards scale from 1 to 10. The higher the rating, the better your computer is. Armed with this rating, a PC user can then go to a store to purchase a new piece of software. They can compare their PC's rating with the requirements of the application and be a happy camper when the program actually runs when they get home. Absolutely wonderful concept. The problem is this: my laptop was rated at a 2.0, if I remember correctly. Here are the related specs on my laptop (HP Pavilion dv8000 series):

  • Processor: AMD Turion 64 ML-40 (2.20Ghz)
  • RAM: 1.1GB DDR PC2700
  • Video: ATI Radeon Xpress 200M (128MB dedicated RAM, along with 128MB shared RAM)

Now, to put things into perspective, I have done a few benchmarks with my laptop up against my computer at work. Please note that these benchmarks are very limited in scope and are mostly for my personal satisfaction. My computer at work is a HyperThreaded Pentium 4 at 3.4Ghz with 1GB of RAM. As to the flavor of RAM, I'm not sure what to say, but I'd imagine that it runs at least 400Mhz compared to my 333Mhz. On several occasions, I've booted up both systems simultaneously. They both booted up Windows XP SP2, though my laptop has Home and the one at work has Professional. After logging in and letting everything settle down for a minute or two, I started up the NetBeans IDE in which I spend oh so much of my time. My laptop had the IDE up and ready to use (classpaths scanned and everything) 50 seconds before my work machine was to the same point. And this all happened before I upgraded from 512MB of RAM to 1GB in my laptop. I haven't tested since that upgrade.

So if my laptop, which beats out a HyperThreaded Pentium 4 running at 3.4Ghz with a gig of RAM in certain uncontrolled conditions, is rated as a 2 on the scale, what does that say for my 3-year-old desktop? How would that fare with Vista installed? I'm not really prepared to drop another grand or so on a new computer to meet Microsoft's anticipated hardware requirements once Vista is released, which is one reason I'm glad I love Linux.