SpendThrift 3 has gone beta.
a little later than expected, but still a lot of progress in 3 months. there are still some rough edges that need to be smoothed out, but all in all, i'm pretty pleased with it. it's a great deal more sophisticated than the previous version. the user interaction aspects are considerably more complicated, too, and are probably going to be the chief instigator for any shortcomings i find.
anyway, if you use a mac, and are bored, and want to help, sit down and play. anyone who submits a bug gets their name in the about box, and a free copy of the final version*. and my undying gratitude. woo!
the hope is to root out any showstopper bugs before releasing it fully into the wild, and spend some time on the spit & polish from here on out. oh, and by the way, if there are any volunteers to help localize things into different languages, that, too, would be greatly appreciated. i can do french, but italian, german, spanish, and any others would also be appreciated. especally italian. i'm big in italy. no, really.
*it's freeware. sorry.
 
one of the interesting things about doing a ground-up redesign of spendthrift is that i get the opportunity to reflect on the three years of its existence and the numerous poor decisions i made in its construction. it's bittersweet, because i obviously did a few things right, since thousands of people have used it, and my usual self-deprecating nature aside, a lot of them probably still do.
it had been nearly a year since i'd done serious work on it, up until recently, when i threw myself headlong back into writing version 3. i came back from work in the evenings and had other things that occupied my attention, including just plain being fried from work and wanting to fire as few synapses as possible. lately, though, work's been slower and i've needed a distraction. it was enormously gratifying to pick up working on the program again and remember almost everything about objective-c and cocoa; i refer to the documentation less and less each time i start writing again. not to put too fine a point on it, but it makes me feel smart, which is nice, since most days i do not.
but that last statement is somewhat funny, considering part of what makes me feel smart is fixing all the things that i did in a time where i was not so clever. it's interesting to list out all the things to do (i have a bulleted list of features and requirements that i try to stick to; it's possible that work designing a medical device has rubbed off on me some) and look at what has been done and what hasn't, and how i've approached it. fairly large chunks of functionality were left until late in the game (i.e. this weekend), because, well, i'd been putting them off. the way i work is to attack something difficult, like saving files, or whatever, and then coast for a while, fiddling with the preferences, or the about box, or some other nonsense.
and difficult usually means that it was a pain in the arse for me the first time around. and if it was difficult for me two years ago, it probably also meant i had made some really reprehensible decisions that i was either already working around, or now have to undo. in most cases, the size of the code decreases greatly, and i recoil in horror at what i did and pat myself on the back for coming up with a better way. in other cases, i did something that affects the file format, which i change only as a last resort, largely because forward-compatibility handling is so difficult.
for instance, today in the scheduled-transaction handling system, i found that i'd represented the last date a transaction was handled in a completely asinine way that made it impossible to compare in a meaningful way, and impossible to really complete the functionality that i implemented two years ago (since i never use these myself, i didn't realize how lacking it really was). so not only do i have to come up with a new way to do it, i have to find a graceful way to fix old mistakes with as little inconvenience to the user as possible. so while i am pleased with myself for having fixed it, it was dumb of me to put myself in that position in the first place.
and that brings up a more delicate point, which is the responsibility i assume in releasing a program like this. i've heard from a little over a dozen users who've had the program crash on saving and corrupt their account file. i hate that i couldn't do anything about it. i can't obtain their files due to the nature of the data, so all i get is crash logs and console output. i test out my files on my system, do every goofy thing i can think of, and i never saw it happen. i use spendthrift nearly every day, and haven't ever run into it. but i feel for these people; they trusted me to some extent and i let them down, and it hurts me personally, but this is the major reason that i give away a reasonably complex and fully-featured software as 'postcardware'. if they paid me for it, there is always the possibility of a problem that i just don't know enough to fix, and a certain warrant of usefulness of the software is implied, one that i may not be able to fulfill.
this time, of course, the design of the software is significantly streamlined (the size of the code is noticeably reduced, as i said), and there are fewer places for things to go wrong. and i'll need to be more patient and thorough with testing. hopefully i'll earn and keep the trust of new users, and win back the trust of old users who may have had trouble. and maybe get some postcards from some new and interesting places.
a coworker of mine once referred to days that, for whatever reason, wind up being slightly less than productive, as 'featureless'. more than just an artful way to indicate that time passed with nothing to show for it, it evokes, to mcad drivers, the thought of a day where you don't commit any kind of change to your part, presumably despite considerable effort.
the former can be said so often these days, even if the more specific description doesn't apply.
yeah, this is a solidworks rant.
you can't not create any features in solidworks, especially when you're building complicated surfaces. it takes three to five features to even get a useful curve sometimes. it's not just that pro/engineer does it better, does it cleaner, and does it quicker, it's more that it's fighting you every step of the way. every bad thing that pro/engineer does (and it does plenty), solidworks does more, and worse. sketches with use-edge entities or intersection curves (xsec edges) fall apart, sometimes as soon as you finish the sketch (yeah, i'm serious. click the tacky green check button and blam, it's already failed). but certainly when you go back and make a change. modify a dimension, even slightly. sketches fall apart, trimmed features flip-flop the side to be kept, offsets swap sides, all spontaneously, and with no understandable causality at all. it's beyond infuriating. what's worse is that solidworks is slow. the ui is slow on a small part, it devours memory, and when you're talking about a model with 733 features, weighing in at 160MB, it takes nearly two minutes to save the file. which must be done frequently, because there are days when it crashes roughly on the hour. the crashing, though, i'll give it a pass on, 'cause it's probably the computer's fault, not the software.
but the end result is no less maddening. it's a poor craftsman indeed who blames his tools, guilty as charged, but at the same time, if you're bumping up against something with such dramatic shortcomings all day, you can't help but feel that there's a better way, to say, this is broken and needs to be fixed. but there's no time for that.
suppress rant.
While i had intended to get this out the door a couple of weeks ago, assorted things like the red sox striving for the impossible and getting a job distracted me from the task at hand. Version 915a got a lot of user feedback, and a lot of ideas for new things to add, not all of which i was able to do, but hopefully the new features here will be reasonably useful to people. My free time will be a little constrained for a while, but hopefully this will suffice for a while; hopefully there aren't any serious bugs that come up.
Without further ado, the new features:
- First and foremost, there's the new Frequent Transactions tool. Since many of us spend money in the same places over and over again, but not necessarily on any kind of schedule, there was a gap in the functionality that made that somewhat repetitive. No longer, for now there's a handy palette of frequently-used transactions available, so that almost-daily coffee at Dunkin' Donuts isn't such a pain to enter every time.

Using it is easy--all you have to do to add something to the palette is drag it there. To use it, drag it into the account (the date and check number are automatically reset). And if you're wondering why i keep saying the word 'drag', yes, it means that you can drag and drop transactions now.
- The other big thing is an export to the iCal calendar format. This allows a chronological record of your transactions to be reconciled with other events, such as business trips or the holidays. Both normal and recurring transactions can be exported.

- Slightly less interesting, but useful is a new Preference for putting the account balance in the title bar; this is not exciting when you're looking at the window, but it does let you check it at a glance when it's minimized in the Dock, something i find useful, and since i'm the one writing the 'code', i have a lot of influence with myself.
- By request, Recurring Transactions can now add deposits, too. Formerly, it was assumed that they'd always be debits, but now, deposits can be done too--just make sure that the Description field begins with 'Deposit', for instance 'Deposit for winning first prize in the llama show'.
- Much much more... Okay, a few more obscure things that were requests, miscellaneous bug fixes, less memory leaking, i think.
So there you go, loyal users; hope it's useful for you.
Downloads:
VersionTracker
Apple Mac OS X Downloads
read me file
since the release of SpendThrift 915a, new users seem to have been coming out of the woodwork, and that's rather exciting. as this is the first really useful piece of software i've ever created, it's something of a new experience, too. i guess that those of you who've just keyed in all your account info don't really want to hear that you're relying on the work of a neophyte (this is why there's an export function).
so, anyway, i've been getting a lot of feature suggestions over the past week (thanks!), and that's going to inform what i do with it from here. this whole thing started for my own use, but it already does everything i need--so now i can work on what other people need. the overwhelming majority of the requests focus on ease-of-use, and more to the point, efficiency of use. the paltry enhancements in the last version hopefully helped that cause a little, but hopefully there will be some more progress in the future. the idea is to make it easier and faster to use, so that it's harder and harder to fall out of the habit of using it, which is about the only easy thing to do with things like quicken. anyway, i don't want to make promises, yet, since all this relies on my less-than-elite skills. but between that, and trying to make it not crash in 10.2.x, i've got plenty to work on.
anyway, the other reason i was writing this was that i noticed that a lot of the emails are coming from overseas, and i'm sure it must be somewhat off-putting to use a program with a big green american dollar sign on it (even if it does have goofy little wings). so, as a result, now there's some new icons available: the pound symbol for the UK, and the euro symbol as well. both with goofy little wings. enjoy!
spendthrift alternate icons (32k). just copy & paste onto the existing application. you'll need to remove it from and re-add it to the dock to get it to update there.
![]()
After leaving it alone for a little while, i've made a couple fixes and enhancements to my humble personal-finance tool, based on user feedback (and yeah, there are users that aren't me, smartass). Nothing too exciting, but hopefully it will run smoother and better, with fewer glitches.
I fixed some of the screwiness that would occur if text was highlighted when adding and deleting records. That shouldn't happen anymore. Also, the category auto-completion no longer breaks when adding a new category. Also, I added some more colors for the graphs and charts so that they won't crap out with too many categories. The ones at the end of the list are kinda ugly, though, just so you know.
As for new stuff, there isn't too much. The big one is a little tweak that creates a new preference for highlighting a cell to edit immediately after creating a new transaction. This makes it a lot easier to enter a bunch of records at a time. Less exciting is that there's now some hotkeys for creating and deleting transactions.
So there you go. As for the future? Well, i'm not bored of it yet, so there may be more stuff to come. What, i don't know. There have been some requests that would necessitate a change to the file format, which i'm open to, but i'll have to think hard about it. Thanks for the feedback thus far, and by all means keep it up.
Downloads:
SpendThrift 915a (VersionTracker)
SpendThrift 915a (Apple's OSX download page)
read me file
Source code: available on request
Never one to leave well enough alone, i bring news of yet another revision of my humble personal-finance tool. While not as extensive as the last update, SpendThrift 719a comes with some useful new functionality as well as bug fixes and significantly improved spit and polish (i hope). Personally, i eat my own dogfood, and use it to keep track of my finances, and my own observations have driven the improvements and bug fixes.
The major new functionality here is the Line Graph tool, which i find terribly amusing. In case you were wondering, the preponderance of graphs and charts is somewhat inspired by SimCity. Apart from that, though, i think i'm running out of things to add. Feel free to submit any suggestions, but otherwise, barring any horrifying bugs, i think i'm going to give it a rest for a while and concentrate on finding a job or something. Oh, and for Jaguar users, you're probably better off using something else. It doesn't crash on startup anymore in Jaguar, but it also doesn't exactly work great. Or look good. Don't hold it against me too much; it's hard for me to find a machine to test on. But it's great in Panther, honest...
Screenshot:

Line Graph tool. [click for overall screenshot]
Downloads:
SpendThrift 719a (VersionTracker)
read me file
Source code: i'm not going to bother putting it up, but suffice it to say that if anyone has interest in it, they're welcome to it.
![]()
updated, 20 june 2004: i fixed the issue that causes it to crash on startup in os x 10.2.x jaguar, and also fixed it so it pays attention to system settings for the currency symbol. new version is 619a, but disk image has same name, same link below.
Hot on the heels of the landmark release of SpendThrift 528a comes the most widely-anticipated release of the summer. No, not From Justin To Kelly 2: Kelly's Revenge, but the long-awaited SpendThrift 614a. What new horror has two further weeks of 'work' on the 'product' brought? New functionality, including:
+ Pie Charts
+ Importing of tab-delimited text
+ Auto-completion and menu boxes for Category cells
+ New and exciting Preference checkboxes!
+ A cooler-looking icon
+ An actual scheme for the version numbers!
Furthermore, most of the initial bugs have been resolved, and replaced with newer and more exciting ones!
In all seriousness, though, for users of the initial release, this is a must-have upgrade, in that it completes the functionality initially intended for the program. The source code is still not available yet, but i'm working on making it less embarrassing and hideous. If anybody's using this, by all means feel free to let me know if there's anything broken, or if there's anything that you'd like added.
Downloads:
SpendThrift 614a (versiontracker)
Source code coming soon.
Read Me
![]()
After considerable work, i have decided that it's time to let loose my latest creation. Much time has passed since my last project, and i've learned a lot more about programming in Cocoa since then (listens for sighs of relief).
SpendThrift is a personal finance tool, designed for simple day-to-day use, but incorporating a number of useful features that one might ordinarily need more expensive stuff for.
Incidentally, sometime when i was about halfway through this project, i saw an article in Macworld that went over many such programs. It's important to point out that any similarities between this and those are utterly coincidental, as any look at the source code will make abundantly clear. Here i was, patting myself on the back for working on software that Apple themselves hadn't already made unnecessary, but i obviously underestimated the extent to which others had.
All that said, i think that SpendThrift in its initial incarnation has a lot to offer:
- Tracking of day-to-day expenses
- User-defined, dynamically updating categorization
- View by category
- Easy roll-back view to earlier dates in account history
- Scheduled transactions
- Interest scheduling
- Bar Graph views
- Report generation
- Export to spreadsheet
So, try it out. You might like it, and at worst, hey, it exports to Excel. Nothing lost, right?
Downloads:
SpendThrift 528a: SpendThrift, version 28 May 2004
Source Code: Source code in Project Builder format (available soon when it's less embarrassing)
Read Me: Read Me file
Questions, suggestions, comments, compliments, or complaints are abundantly welcome. Tell me how much it sucks. Email me.
outPost is a Cocoa-based NCL toolpath postprocessor for ANSI standard CL (cutter location) files. This is my first real programming project since CS 1 in college, and is considerably beyond that. If anyone finds it useful, that will be very exciting, but otherwise, it's strictly for my own amusement. The fact that i am amused by such things might perhaps be considered a little disturbing, however.
DISCLAIMER:Though i am currently employed by PTC, and though this program was designed with Pro/ENGINEER-generated CL data in mind, it does not use any inside knowledge of PTC's products. Neither is it based in any way on the inner workings of Intercim's GPOST software, which i also work with extensively. if i were copying something from either source, trust me, this wouldn't suck so much. In fact, there are many ways (excluding the ways in which this program doesn't yet work) in which it works very differently. It's designed around Pro/ENGINEER CL data, to produce standard G-Code output, both formats of which are very much common knowledge. So there. Short version: please don't sue me.
As of the latest version, outPost works reliably and predictably, and generates decent-looking G-code. Which is not to say i recommend using it for production (not without some serious vetting of the G-code), but it can generate code with support for most major functions of 3-axis work. Just be sure you know what you're doing before you use it.

Version 1214 is now available, with no new features yet, but a thoroughly redefined, and considerably more logical interface. The function of editing the postprocessor configuration (the document) has been made distinct from the function of using the postprocessor. Everything happens faster. The input and output are now in text views instead of oversized fields. The interface has been updated to not look hideous in Panther. Check the readme for more details.
Downloads:
outPost version 1214 zip file
Source code as a ProjectBuilder project
Read Me file.
i expect to have more time to work on this in the coming months. Look for syntax highlighting in the output, better support for TRANS/ROTATE output, informative help files, and other stuff in the future. The source is presently a nightmare, since there's a ton of stuff that is half-implemented, or implemented and not working, and therefore commented out.
Questions? Comments? Flames? Email me