Why I sometimes really hate linux-y stuff

I’m one of those people always on the fence when it comes to open source software.  Sure, the idea is great, but when it comes to using it… well, I’m often disappointed.

Case in point: I’m trying to install GnuCash on my mac(s).  There are installations that are easy, but they come relatively limited, particularly in terms of file formats.  GnuCash can support nice database systems like mysql or postgres rather than just the original XML format.  I want that capability.  So, I try to compile the code required to add that support.  No joy.  Grrr.  So, I decided to go with the MacPorts install…  hours ago… I’m still waiting for all of the compiles of dependencies.  The process so far has stopped 3 times on failures.  It’s rather ridiculous.  I’m sure someone would say “If you just used linux it wouldn’t be a problem”.  Sure, you’re likely to be successful installing and probably more quickly on linux, but I don’t like linux very much.  I’ll use it when I have to.

So, when I complain about linux, I’ll have to remember to add the whole issue of dependencies.  I usually gripe about things like UI, which most people see right away.  However, the dependencies issue turns me off very quickly.   Let’s face it, the dependencies issue won’t go away.  You could argue that’s the linux philosophy, but I suspect it’s really the Gnu OSS licensing making this stuff crazy.  Let’s face it, open source software really isn’t free.  Most OSS software  comes with restrictions.  I’m often willing to abide by these restrictions as a user because I really don’t have to think about them.  However, if I understand the licensing (and I freely admit I don’t understand the licensing that well) there is a strong disincentive to compile  and distribute the software, statically linked to it’s dependencies, as one big app.  Thus, you’re stuck with installing dependencies that might or might not be compatible with the application you’re really trying to build.  So, part of the cost of OSS is dealing with these kinds of issues.

Despite this complaining, the cost of OSS (and it’s more than just dependencies) is sometimes worth it.  Some OSS software I use often are QuantumGIS and Zotero (I probably use far more than that, particularly in terms of libraries).  I’m hoping that GnuCash fits in this category of being “worth it”.


What I’m hoping with GnuCash is that I have sort of an in-house common financial record system.  Right now, I use GnuCash for my business accounting, but I’m wanting to shift away from Quicken for our personal work.  We have a really old version of Quicken and I can’t justify in my mind the cost of upgrading, particularly since it doesn’t do the job the way I need to use it.  In particular, it seems unsafe to use a Quicken file across a network connection.  That always scares me with Quicken.  My hope is that getting GnuCash working with Postgres or Mysql that sort of thing would be safer.   I understand it’s still not safe for two people to use at the same time, but that’s okay.  I want a safer and robust approach that my wife might be willing to use.


ah finally, it’s done.


Bah, humbug.  All that work for nothing.  Apparently, my installed version of Postgres is incompatible with libdbi.  Geez!

Behind on accounting: Speeding it up with python and sqlite

Well, as usual, I’m behind on last years accounting and tax time is rapidly approaching.  I finally sat down and at least sorted my receipts saved from last year.  Now I’m faced with the horrible data entry phase.

Now, I was able to download all the transaction records from the bank.  That’s all well and good, but it doesn’t have any of the information I really require except the amounts.  Even the payees are primarily transaction number that are barely readable.

As usual, I decided to see what’s out there and available to help with taking a QIF file and make it useful.  I found one or two things for the Mac, but they were pricey for what they do.  However, I suddenly remembered that last year I made a solution to do exactly what I needed (How could I have forgotten??).

If you poke around the net, you can find a python script to read and write QIF files (thanks to whoever wrote that!).   Thus, that is part one of the solution, the ability to read and write QIF files.

Part 2 of the solution is SQLite.  Sqlite is a great low-overhead SQL database system.  Works great with python.  In sqlite, then you can build a list of expected transaction information.  My table is fairly simple:

Name: the name of the transaction as I’d like it to appear

qifname: the partial name of the transaction as it appears in my QIF file.  For example, Netflix appears as “WWW.NETFLI”

Category: the optional assignment of a category if it’s fairly consistent.

Part 3 is a custom python script that incorporates the QIF read and writes, checks the database for each transaction against the SQLite database for the qifname, if it’s found, replaces the transaction name with name and addes the category when present.

Simple, free, and powerful.  Hours of work saved.