Bookcase thoughts

My current area of play with Bookcase is changing the way the books are grouped. I’d like to show them grouped by author, and them change to genre, for example. I decided to cache a list of pointers to the book objects for each group. This became a bit tricky. My collection object holds a QDict, where the keys are the name of the attributes which may be used to group the books. The entry, though, is another QDict, where the keys are the values of the groups.

Now, I want to keep a list of pointers to the books which fall under this category, so I use a QPtrList of Books. So the variable becomes QDict<QDict<QPtrList<Book>>>. Typedefs made this look a bit clearer, but wow…

On top of that, since when a Book is modified or added, the QDict must be updated, I needed a way for the Book to know which lists it was in. The only implementation I could think of was the brute-force way of adding a QPtrList<QPtrList<Book>> to each Book. Then I go through and delete the Book from each QPtrList and so on…it feels monstrously inefficient, but it seems to work.

Bookcase 0.3 released

Bookcase is my little app for tracking my book collection. It’s a pretty simple program, but it keeps track of title, author, and 24 other properties for each book. I used an XML data file format, and printing uses an XSLT file for formatting, so I’m rather proud of all that. KDE makes all that pretty easy.

It has automatic ISBN validation, which I’m rather proud of as well. Multiple authors are supported, and automatic formatting of the author’s name is done.

What I still need to add is searching within the collection, and automatic lookup of book properties via the Internet though Amazon or isbn.nu.

UT2003 for Linux

I had ordered Unreal® Tournament 2003 from Tux Games a while back, and received it this weekend. The Linux installer is included on the 3rd disc, although if you didn’t read that online, I don’t know how you would know that from the packaging. But it’s a super game. Granted I have a good graphics card (NVidia Geforce200)…and I’m really excited because the audio works! I could never get Quake3 to work because of the stupid mmap audio problem. Evidently, UT2003 uses OpenAl which seems to recognize whether I’m using artsd, or alsa, or whatever, and it just works. Woo-hoo! Off to DeathMatch…

Some Assembly Required

Boundless Websize has a recent article about Christian college students and many of the reasons which they give for not regularly attending a local church. The article goes on to state that Christian take church membership far too casually, and does a pretty decent job of backing that claim up. More folks of my generation should do a little reflection for the role and purpose which church attendance and membership plays.

Churches should teach all of their members that membership is not a flippant decision, but a commitment to serve Christ through the ministry of a specific local church…Christians are expected to live their lives in the faith, and the biblical way to do that is within the context of a local church. If we don’t, both our faith and our witness suffers.

California Voting

I was bored this morning and my “read these” stack of books was low, so I took the California Voter Information Guide with me on the bus to work. There are 7 propositions included among the political party candidates and statements. Some of the numbers are incredible.

Proposition 46 is a $2.1 billion bond for housing and emergency shelters. Proposition 47 is a $13.05 billion bond for public education facilities. Just the fact that the support argument uses more SENTENCES IN ALL CAPS than your average AOL user turns me off, not to mention the added state debt. It appears that the same person wrote the argument and rebuttal for Proposition 49 as well.

As for the political parties, did you know that the Democratic Party stands for the eradication of hate crimes? Shew, I’m glad someone is standing up against crime. The Libertarians make it plain that Self-defense is a right – not a political favor, while the Reform Party promises to stay out of religion, your bedroom, and social issues.