Jamie's Blog

Ruby developer. CTO. Swimmer. Always trying to write more

BalanceTracker: Introduction

I previously used an Excel spreadsheet to budget my quarterly student stipend and ensure that rent was paid, known expenses were accounted for and Visa cards paid off. This worked reasonably well but marriage and moving back to Ireland has made the personal finances a little more complicated: We each get paid at different times of the month, there are a lot more bills and we’re trying to live beyond just survival. This means that my little spreadsheet isn’t as useful as it used to be.

Years ago I’d tried to use Microsoft Money but no UK/Irish banks support automated transaction downloading so I’d spend 2-3 hours a month inputting the transaction data, correcting it and fudging it to make the balances match. Then I’d spend some time trying to categorise things so I could track my spending in certain areas. It turned out that most of the time I was just getting cash out of the ATM. And I when I started my PhD, I couldn’t even make Money understand that I was only paid quarterly – so I’d apparently spend 2 out of 3 months in serious poverty. Personal finance applications like Money are designed by accountants, for accountants or for non-accountants trying to be accountants or who need to communicate with real accountants. They’re just not designed for real usage.

Like a good software developer, I decided that this problem needed some programming and the idea was simple: keep it simple. All I need to answer is a few basic question:

  • Can I pay the known expenses this month (Rent, loans, etc)?
  • Given my current rate of spending, will my account ever go below zero, and when?
  • Given my current rate of saving, when will I have X amount?
Instead of entering, tracking and tagging transactions all I need to enter is the account balance at a particular time. If my balance was €2000 a week ago and is now €1000 but that included €750 in rent, I know that my untracked spending is running at ~€250/week and, unless I get paid, I’ll hit zero in about 4 weeks. This is the basics of financial survival.

About two months ago I started coding the application as a C# WinForms application using lots of nice looking GUI controls, an embedded Firebird database and some base ADO.NET statements (yuk!). Development slowed but the need didn’t, so last week I started looking at Ruby on Rails. You see, I’ve recently noticed that the applications myself and Hilary need are all online: Gmail, Google Calandar, Remember The Milk, etc. On Wednesday I asked Hilary if she could give me 1 week of “us” time to work on a RoR implementation so that we’d have a functional version which we could start using. I’d might tinker with it, and possibly open it up to public use, but it gave me a defined slot of time to get things done and Hilary knew she wasn’t losing me indefinitely.

By Day 3 I had: the database tables written, Rails scaffolding providing the basic CRUD forms, user authentication working, accounts associated with particular users and balances with particular accounts. I also had some basic charts working with Ziya and account overviews provided by Sparklines.

Unfortunately my block of time idea didn’t really work out. It’s Tuesday night and I haven’t worked on it since Friday night. There’s a lot more to do, including most of the date manipulation and recurring events etc, but so far I’m pretty happy (although my eyes are aching from computer-ing morning, noon and night). It might have been easier with Python/Django (since I’m already familiar with Python) but I felt that was more info/tutorials around about Ruby on Rails (and learning yet another language can’t hurt).