The Budgeteeer
This is a basic budgeting program that keeps track of “sub-accounts” that you allocate a percentage of your income to.
So you can deposit and withdraw from each sub-account with no bearing on the other sub-accounts. The program has files that it stores information about for each transaction logged (in a custom format). Another feature that I very much like is being able to deposit into the whole account and the program will split it among the sub-accounts according to percentages that I specify. So every couple of weeks on payday, I will input the amount for my paycheck, the budgeteeer will prompt me to find out if I want to subtract before depositing (i.e. taxes), and then it will prompt me for where to deposit the amount to. If I choose the whole account (which I always do for paychecks), then it will deposit the appropriate amount into each sub-account. And from there I have a running total of all of my sub-accounts. This is useful for things like keeping track of a tithe or free spending money.
Anyways, I basically wrote this last summer (while interviewing for jobs) to
- Learn Python
- Not be bored
- Have a useful application for budgeting
It works decently as-is I think. I’ve been using it since I wrote it. It took me about a week or so working on it a couple of hours a day. That seems like a lot of work. Anyways it’s basically a GUI for some fairly simple mathematics.
Anyways I actually recently picked this program back up because every time that I upgrade my system, the Python settings will be changed. I thought about it also, and I think that this program can be done much better. It’s too hard-coded as is. In any case I am looking to make it more standardized (XML for saving data perhaps?), more object-oriented, and more customizable (number and names of sub-accounts). Stay tuned.
I’m looking to get it into a workable state where I could offer it to be downloaded. As it is right now, it’s too specific to me and my machine. That is both poor in terms of programming as well as well as poor in terms of usability for other people. So I want to remedy that!
[2007-04-30]
Figured out that I can use winfo_screenwidth() (and winfo_screenheight()) in order to get the screen’s width and height in measurements that I can use to calculate the size of buttons.
I played around with using a placement mechanism that consisted of a grid, but I found that it did not allow me enough flexibility in creating the buttons that I wanted.
[2007-08-13]
I started to think about this a bit recently again. It is still in a usable state but is not useful in distribution. Somethings that have crossed my mind are:
- Use SQLite for the backend instead of the customized file format currently being used.
Benefits:- Python modules already exist for its use
- New fairly well-known technology to learn and use
- MUCH cleaner data access in code using Python module functions versus hard-coded parsing
- Allow easier installation (deprecates current folder structure).
- Need to create a logon (and logoff?) ability so that there does not need to be command line arguments. This will allow for easier portability and use.
- Need to really nail down the customization of amount and names of sub-accounts. The GUI part of this step is in a much better state already.
- Thinking that it might be a good idea to split up whole account deposits into either percentage OR static values. This is how other applications work and it could be easy to do. Goes along the lines of the envelope budgeting method.
Should definitely look into some of these (especially SQLite since that will open up the application’s horizon of possibility).
[...] 21 May, 2007 Geek Money ProgrammingWell I suppose that there aren’t too many original ideas out there. Nevertheless, when I happened upon a piece of software called Budget while I was reading through my feed reader this morning, I had to take a second look. Why? Well because I wrote (and am in current development of) The Budgeteer! [...]
[...] key on the keypad to the same functions as the normal enter button. It was annoying me while using The Budgeteeer because I couldn’t figure out what the name of the button to bind was. That has thankfully [...]
[...] this is a superb idea, and I will try to stick with it as much as I can. I’ve been working on The Budgeteeer (although that’s not what this post is really about), and I’ve been using this [...]