You are here

A New Project

I've begun work on an iOS App that will take the best parts of personal finance software for the PC and make it possible to use exclusively in the mobile world.

I've been messing around with a lot of personal projects. These have ranged from hardware futzing with Arduino and soldering irons, learning new technologies like those surrounding HTML5, jQuery and CSS, and many others. Over time, I have spent some effort as well with OS X and iOS development. Just recently I learned parts of IOKit and CoreFoundation to try and talk to the USB port of my WiFi scale. I have tried to discover with breadth that which I have not been able to do so far with imagination; inspiration. I think after taking several segue ways, I believe I've found a project that is fitting to my talents and will be rewarding both financially and professionally.

Okay, this is not a revolutionary idea. After all, if I look at the App Store now I can find dozens of personal finance apps. Some of them are pretty good, too. I haven't used all of them, so I really don't know who is trying to rule this space.

Here is what I do know. I've been using various different personal finance tools for the better part of a decade. Some of them have been good, but lacking in some key areas. Some have been terrible. One, GnuCash, has been the tool I've come back to every single time. I have years and years of accurate, accessible financial data in GnuCash and I can use it to create detailed, useful reports about my family's finances.

I plan on continuing to use GnuCash for the foreseeable future. However, there are shortcomings with it that I find are less and less excusable. I am also a very forgiving person when it comes to how a piece of software behaves. I have the ability to troubleshoot problems in an application that exceed the average user, so I while some people may have thrown their hands up in the face of seemingly crippling bugs, I have shrugged it off in the name of open source being what it is. GnuCash is an ambitious project that works fantastically well if you're using Linux, less well if you're using OS X, and completely impossible if you're using iOS.

I can clarify that last statement a little as well. It is and will be impossible to use GnuCash on iOS for a number of reasons. The greatest of these is the admission of the project's owners that they have absolutely no plans to do it, but also because of the licensing in place to distribute it. GnuCash is released under the Gnu Public License, and much of the code that it uses is released under the GPL as well. Unless they decided to release the iOS version under another license (and sacrifice a lot of 3rd party libraries), distribution via the App Store is not legal. There are also technical hurdles. GnuCash is written in a combination of C/C++, Scheme and Python. The C/C++ is transportable to the iOS layer, but all of the libraries it uses (GTK+, etc) would need to be stripped out and replaced. For those reasons, I feel like a from-scratch approach is justified.

I've already begun work under a working title of "The Books," and I have a first working version that basically allows me to create and delete books. My proof of concept is to get to the point where I have the ability to create and delete books, create and delete transactions, get a running balance per book, get a current balance per book and to verify that all books sum to zero. The first version uses Core Data to store the Book entities, and right now they just have a name property.

I've managed to get the following things working fairly well:

  • Core Data (with NSFetchedResultsController driving my view updates)
  • UITableViewController with support for swipe deletion
  • Modal dialog for adding a new Book

I'll most likely start pushing the code onto GitHub for those interested.