Debt Snowball calculator

We’re finally about to get started on our Debt Snowball for real, and I decided to write a program to help me calculate how long it will take. I’m making it available for free download for anyone who’s interested (GPL-licensed). This is still some pretty ugly code; it’s just the result of a few hours’ hacking. But it works nicely.

The screenshot at right shows what the output looks like, using the sample input included with the app. The program allows a decent amount of configuration (everything I needed to project our own debt snowball):

  • You give it a list of everyone you owe money to, your balance, your monthly payment, and your interest rate.
  • You can tell it you want to spend an extra X dollars every month above your minimum payments.
  • You can also give it a one-time lump sum to add to the first month’s payment (e.g., if you just got a big bonus or a tax refund — something that won’t happen every month).
  • For each bill, it shows how much you’ll pay that month (“pay”), the previous balance (“was”), the interest (“int”), and the new balance after payment and interest (“now”).
  • After a bill is paid off, it still shows up in every month’s report, and tells you how long it’s been paid off. This is for pep-talk purposes, so you see what you have done, not just what you haven’t done.

It’s not penny-perfect (it can’t be; credit-card billing cycles are nondeterministic), but it’ll paint a pretty good picture.

Features it’s still missing:

  • It won’t automatically pay the lowest balance each month, yet. It pays debts in the order you list them in the input file. (You can list them smallest to largest according to their balances today, but if one of them pays down faster than the one before it, the app won’t automatically adjust.)
  • &PBOX_R&

  • Anything I haven’t thought of yet.
  • Anything someone requests that I feel like implementing.

How to use it:

  • Install Ruby if you don’t have it already. If you’re on Windows, use the one-click Ruby installer. (Later I may make a version that doesn’t have this requirement, if there’s interest.)
  • Download and extract it somewhere.
  • Edit the bills.yaml file to tell the program how much you owe and to whom, and to set other options.
  • Open a command prompt and run debt_snowball.rb. (Run it from the command prompt, not by double-clicking in Explorer. If you run it from Explorer, the window will disappear before you can read it.)

Some notes on the bills.yaml file:

  • max_months lets you stop the simulation after, say, 6 months. The only reason this would be useful is if you want to look at the first few months of the simulation, and don’t want them scrolling off the top of the screen. If you want to run the simulation all the way through (to see how long it’ll take to pay everything off), set max_months to some really big number.
  • If it’s not obvious, the “apr” setting is your Annual Percentage Rate. Specify this as a percent, i.e., if your APR is 12%, type 12 (not 0.12).
  • The dash-on-a-line-by-itself-between-each-bill is important.

Like I said, this app is still very rough around the edges. But it does what it sets out to do, so if you want to see how long your debt snowball will take, download it and have a go. Comments, criticisms, abject horror at the state of the code, etc., are all welcome; just leave a comment here.

Of rocks and motivation

Less than a day after I posted about procrastination as a big rock, Steve posted an article about motivation thresholds. I think he answered the question I didn’t even know how to ask.

Now I just need to find the motivation to re-read his article a few more times until it starts to sink in.

One part of the article that made me laugh out loud, though, was this: “What do you find so motivating that you’d even ignore a growling stomach for hours just to stay with it?” Heh. My answer is, just about anything! Getting started is the hard part, but once I’m started on something that I find interesting, hyperfocus takes over, and time, hunger, thirst, sleep, and other human beings all cease to exist.

So now I’m curious. I had thought that getting absorbed in a task was a fairly universal trait among geeks. Steve is clearly a geek (both as a former programmer and as a relentless optimizer), yet apparently he usually notices when he gets hungry. So it’s not as universal as I had assumed.

What about you? Do you consider yourself a geek? Do you sometimes get so absorbed in things that you forget to eat?

Of time and rocks

I was so psyched about covenant groups before they started, and now we’ve been doing them for a couple months now and I haven’t blogged about them yet.

Our group has been meeting two nights a month. We start with check-in, which usually lasts through the first hour, and then there are some readings and a topic for discussion, which takes up the second hour. We’ve had some good topics (silence, experiencing the holy) and one that everyone agreed was kind of a dud (what the chalice symbol means to us).

Last night’s reading was about a time-management instructor who, as a visual aid, filled a jar with big rocks, then filled in the spaces between them with gravel, and then sand. If he’d done it the other way around — starting with the sand — the big rocks never would’ve fit. The point being, you have to schedule the most important things first, and then let the less important things fill in around them, not the other way around.

The discussion questions centered around “What are the ‘big rocks’ — the most important things, timewise — in your life?”

As usual, the topic was fairly lively. We spent about half of the second hour discussing funerals, although I have no idea how we got off on that tangent.

Anyway, as other people talked, I mulled over the question, in light of what I actually do with my time (like play video games, read books of comic strips, and surf the Web). I finally said that I don’t really know what my “big rocks” are. There are a lot of things I’m really enthusiastic about in the abstract, but lose steam when it comes time to spend time on them. I was really excited about covenant groups, and now I haven’t even blogged about them. I think OWL is really important, and was happy to agree to help teach it, but I always seem to put off looking at the next week’s lesson or researching the question-box questions until the last minute. I really want to see our church offer Financial Peace University, but when it comes to doing the legwork to build support in the congregation, I just don’t follow through. I procrastinate a great deal, and seldom make time for the stuff I actually feel is important and that I want to give my energy to.

And Gene asked me a question that really startled me. He said, “So, is procrastination one of your ‘big rocks’?”

Medical acronyms and slang

I just ran across this page of medical slang. It’s a hoot. (As long as you don’t mind a slightly morbid bent.)

Warning: it is not politically correct. Not by a long shot.

A few highlights:

  • Brothel Sprouts – Genital warts
  • Chrome Induced Ischaemia – patient that develops inexplicable chest pains when arrested and handcuffed
  • DRT – Dead Right There (patient dead at scene of accident)
  • DRTTTT – Dead Right There, There, There and There (patient dead and in multiple parts at scene of accident)
  • Faecal Encephalopathy – Sh*t for brains
  • LFTWM – Looking for 3 Wise Men (applied to young pregnant females who deny having had intercourse)
  • Mushroom syndrome – suffered by lowly medics who are kept in the dark and have crap piled on them
  • Parentectomy – removing parents as an effective cure for a child’s problems
  • TSS – Toxic Sock Syndrome (often related to homeless)

New bullpen, with pictures

After some renovation and some new PCs, our development department moved into our new bullpen area a couple of weeks ago. It’s something like two or three times the size of the room we’d been in for the past year, and it’s very nearly designed to our specifications. Late last week, they finished installing what is perhaps the coolest feature of the bullpen: the Acres and Acres of Whiteboard (photos below).

(Let me apologize in advance for the quality of the photos, as I’m an amateur photographer using a clearance digital camera. But the new bullpen is just so cool that I had to post pictures.)

The bullpen is a fairly large, sorta-kinda-L-shaped area. The QA staff have desks off to one side of the sorta-L, and there are tables and leftover cubicle furniture on the other leg.

In the middle of the room are the two pods, where we coders spend most of our time. Here’s a photo of one of the pods:

Each pod has four pair-stations, each of which has one computer (yes, and two monitors). Note the low walls between each pair station, to (sort of) divide the stations, while still being low enough that we can talk to the pair next to us when we have a question. (The walls also hold the desktops up, but that’s such a small thing.)

There are two programmer pods in the room, with a fair bit of space around and between them. That gives us eight computers for nine coders, which is plenty when we’re all pair-programming. But the extra computers are great when people are checking their e-mail around lunchtime, or when one of the monitors is going bad. And it leaves the department some growing room, which is good since we’re hiring.

Along the far wall there’s some more table space and some overhead bins. Our continuous-build machines currently live along that back wall; our new testing-lab PCs will go there as well.

This is a close-up of a single pair station. Note the ergonomic split keyboard (unfortunately, not all the stations have these, as not all of our programmers like them), the few random papers, the foam balls to throw at people who get into overly-loud discussions, the mug of company-provided hot chocolate, and the box of Curiously Strong Mints.

This is one of (and the more impressive of) our walls-fulla-whiteboards. All our whiteboards are five feet high (just take a minute to think about how big that is). This wall has two 16-foot-wide whiteboards side-by-side; the other whiteboard wall has a single 12-footer. In all, that means we have two hundred and ten square feet of whiteboardy goodness. That’s 0.0048 acres of whiteboard space.

And the best part is, not only is it all whiteboard, it’s all magnetic. Foil-backed whiteboards, so you can write on ’em, and you can also stick stuff to ’em with magnets. We use our twelve-foot whiteboard (not shown) for our current-iteration story cards; we stick the cards up with magnets, and then whoever’s working on a card will write their names next to it on the whiteboard. Pretty sweet.

(Sam already posted an action shot of our new whiteboards.)

We use one of the sixteen-foot whiteboards for our release plan (one column for each week between now and our next release). The magnets come in very handy here, as our customers add cards and move others around as they go, based on an ever-improving (we all hope) understanding of what needs to go into the release.

And last but not least, this is what happens when the customers don’t put enough hours into an iteration in the release plan…