Wednesday, October 31, 2007

Leopard Bites My Beta

I apologize for the lengthy delay between posts, but I've been face down in code trying to get the next release of MoneyWell finished.

MoneyWell 1.1 has just entered its beta test phase. This is the final step before a software product is released, which means everything is complete enough to have customers test it and give feedback. It's a bit of bad timing on my part, because Apple just shipped OS X 10.5 (a.k.a. Leopard) and customers found a couple of MoneyWell features that don't work right under Leopard. The fixes for these are just time consuming enough that releasing a patch isn't going to be much faster than adding them to the 1.1 release. This has added more pressure for me to resist adding one more feature and get this bad boy out the door.

If you're interested in checking it out, the MoneyWell beta was opened up to members of the No Thirst Software User Forum. Feel free to stop by the forum and join. This beta shows off some very critical new features, including: OFX/QFX import, password-protected documents, per-month spending plan amounts, and a real reconcile mode—a healthy chunk of what I had planned and pre-announced. I think these features will help more people make the choice to buy MoneyWell. It certainly won't capture everyone that looks at it though. I've found that many people expect MoneyWell to be clone of Quicken with a more Mac-like interface—it's not.

MoneyWell is not a cookie-cutter finance package. It doesn't look or act like most others and that fact alone causes some people to express disappointment with it and ask me to change the way it works. It's tempting to cave and toss in poorly designed features, but that's just not my style. I know there's no way to make everyone happy, but what I can do is trust that the design I've started with is good and certain customer suggestions will fit with that design, while others will not. Certain customers will love MoneyWell and keep it, while others will decide to use something else. It's so hard for me to say "no" and watch people walk away, but I truly believe the software I create is better because of it.

The upside to sticking to my guns and focusing on my design philosophies is that I can create user interfaces that work perfectly for my needs and, hopefully, many others will agree that it's worth learning some new workflows to improve their lives as well. A good example is the new reconcile feature. It's not all that radical, but—for me—it fixes all the complaints I had with Quicken's reconcile.

I didn't want to have to look at a subset of my transactions list in a separate window, but I wanted to easily see what transactions fit into the reconcile date range. I also wanted MoneyWell to tell me if those same transactions added up to the statement difference so I could just check them all—with one click please. Lastly, I wanted to be able to easily review previous reconciled statements.

Oddly enough, I got what I wanted. Clicking a single button switches the main transaction list into a reconcile mode that, instead of hiding transactions not in the statement date range, fades them to gray. It also uses red and blue rounded rectangles to show which transactions are reconciled and which open, respectively. Helpful graphics appear to indicate when I can reconcile the statement using one click and when I am done reconciling. It's also easy to quickly pick a previous statement from the pop-up list and review it. It's amazing: Almost like this developer could read my mind!

I've got to get back to coding, but know that MoneyWell's release schedule will continue like this: rapid releases with significant, well-designed features. Keep sending me your requests and I'll keep working to find a cool way to implement them.


P.S.: One of the great rewards of being a Mac developer is being accepted as a member of the generous developer community. Code sharing is very common and I've learned so much from other developers. One such developer is Joe Goh. He liked my graph in MoneyWell and asked if I would share my code with him. I did, he made some massive improvements, and shared right back. Check out the video of his new release of Phone Journal. You'll see a really slick rewrite of the MoneyWell graph that will surely affect future visuals in MoneyWell. Thanks Joe!

Sunday, October 21, 2007

Are You Offended by the "F" Word?

Lee Falin just posted a blog entry that's sure to stir up some controversy. He's suggesting that we can communicate better with out the use of swear words and offensive language.

I agree and I support Lee's position 100 percent. For me, this is a no-brainer. I am forced to dig deeper and stretch my vocabulary if I avoid the easy road of cursing to get a reaction. The analogy I like to use is that eating fast food is very similar to cursing. The more often we consume fast foods, the faster our health will degrade. Our palate becomes numb to fresh, healthy foods and we desire the fatty, salty menus instead. We even find ways to defend eating fast foods: "I don't have time for healthy meals."

I make no excuses: I eat at fast food places often because I'm lazy about making lunches and I don't schedule time to take better care of my body. It's a constant battle for me to eat healthier because I've damaged my own palate from constant abuse of tacos, burgers, and fries. Now I'm paying for it with tight jeans and more frequent health issues.

Language is the same. We can choose to take shortcuts with offensive language or we can work a little harder and find a richer vocabulary to express our emotions. The more we swear as a writing technique, the less we'll work to find alternatives. Cursing numbs our brains and encourages greater sloth.

This is not why I'm writing this entry though. I'm more concerned about the first comment to Lee's post. Jonathan Wight says:

While I can kind of appreciate your motive, you really lost what little sympathy I had as soon as you dismissed the argument by referring to your “higher power”. Personally I find discussion of personal beliefs and opinions in technical blogs annoying and often (as in this case) offensive.

So the "faith" word is offensive in a tech blog? You can talk about your personal motivation for writing software or creating a micro-ISV as long as you don't bring religion into the blog? That's a disturbing stance.

The only thing that keeps me focused on creating better software is my faith. I would never have been able to leave my well-paid, salaried position and head out on my own without prayer and the support of my friends at my church. This is not truly a "technical" blog like the others Lee points out, but it is a blog about what motivates my development of Mac software and the goals of my venture.

We're in serious trouble if we offended by a quote from the Bible more than a blog peppered with f-bombs. I promise, you don't have to convert to my religion just because I talk about it any more than I would feel the need to switch to your brand of energy drink or style of music that fuels your development efforts.

Now if you'll excuse me, I'm going to force myself to eat some fresh fruit.


Wednesday, October 17, 2007

Why Wouldn't You Give a Refund?

I'm amazed when I hear from people inquiring about MoneyWell that XYZ company wouldn't give them a refund. To be honest, part of me wants to keep quiet about this and not help my competition improve, but I'm not sure anything I'd say would matter anyway.

I think that some businesses feel that the customer is trying to screw them by using the software and then wanting their money back. It's a bit like the argument for stronger copy protection on software. I don't think that you can stop real software thieves, which means you're only hurting your honest customers. Unfortunately, so many people feel attacked personally when someone takes advantage of them like this. It's really not personal; some people don't feel guilt stealing software and other people legitimately need to return software because it doesn't work for them.

But what if they are getting a refund and continuing to use the software? So what? Again, some people don't feel guilty about using what they don't own, but I believe that 90 percent are honest and I'm not going to ruin their experience with my company over the 10 percent that are dishonest.

And let's face it, if you burn someone over $40, they are going to complain about how XYZ company screwed them and how your company sucks to dozens of people—or worse thousands because they posted rants on the internet—is it worth the money? Was all that bad press worth whatever you charged them for your product? Not for me.

That's why No Thirst Software offers a 60-day money back guarantee and on day 61, you're still not going to get a fight from me if you want to return one of our products. I'd rather win a customer over with great software and stellar service than quibble about contractual obligations. If you don't like our software for some reason, tell me and I'll try to improve it. If I can't make you happy that way, then simply ask for your money back. I've had some great emails from customers who were amazed and thrilled at how easy it was to get a refund from No Thirst Software and they may just tell a few friends about that. It sure beats the scary comments I read about other software companies that didn't give a refund.

So if you're a Micro-ISV and you're not making it easy for customers to get refunds, think about what you are doing to future sales for a few bucks today. And, if you happen to be one of my competitors... just keep up the good work.


Saturday, October 13, 2007

I Love Elegant Solutions!

I'm not lazy, but I can't stand to do repetitive tasks. They drive me nuts! When I first learned to program, my dad asked if there was some way to type out labels for an event he was running on that "fancy computer" at the place I worked. I said, "Sure, we have a fast 40 characters per second daisy-wheel printer!"

Now, I could have sat down, opened the Scripsit word processor on our cutting edge, TRS-80 Model I computer and just typed the 40 or 50 labels, but the thought made me cringe. It's doing the same thing over and over and over again. So, my solution was to write a program to do this mundane task.

The program took me longer to write than actually typing the labels would have taken, but I enjoyed writing the program and hated the thought of repetitive typing (this was before copy and paste so I really would have had to type each one over and over). For me, this was a more elegant solution.

Fast forward a quarter century and I had a similar problem while working with importing banking transaction into MoneyWell. Most U.S. financial institutions use the QFX/OFX file standard. These formats are better than the ancient QIF format and provide more information to MoneyWell, but both are total different and my QIF parser code is useless with them.

After reading the OFX specification (yes, of course I read all 665 pages—it was gripping prose) I thought I could use nice set of Apple routines to read these files since they looked to be in XML format (this is is arguably the most common format for transporting data between systems on the internet). Unfortunately, the older QFX format predated XML and dashed my hopes of not needing to write my own parser. It sounded mind-numbingly boring to have to do this, so I solved it by procrastinating and looking for someone else's code as a solution. Of course I didn't find any code that I liked or trusted.

I stared at the QFX files and spec until it struck me that the SGML format of these files is very close to XML, it just needed a little reformatting. How hard would it be for me to write code to do this? As it turns out, not very hard. It took about 20 lines of code. How perfect! That wasn't boring at all; instead it was a fun challenge to write a small efficient routine for this conversion and, when I was done, I had XML formatted information to feed to Apple's framework.

The non-technical summary is that I thought I had to deal with many different versions of files to import transactions into MoneyWell, but through a little thought (and a huge aversion to boring work), I was able to consolidate these into one file type. MoneyWell now reads all popular variations of U.S. bank files. It feels good to have found an elegant solution!

I may even release version 1.1 early with a limited set of this new functionality since it is working so well already. We'll see how well the testing goes.


P.S.: Due to popular demand, No Thirst Software now has a user forum. Check out our support page for more information.

Monday, October 08, 2007

Video Killed the Manual Star

The title is a play on an old video from The Buggles. I guess I'm showing my age to say this, but I remember being in college and seeing this video when MTV first signed on. It's a long, long, long time ago when MTV actually played videos. Don't get me started.

Anyway, that's not the topic of this entry. The topic is about using videos to educate customers. I love Apple's video's showing off the iPhone features and I wanted to do videos to show off MoneyWell (Debt Quencher could probably use a couple too, but it is much less complicated to use and needs them less). Then I read "RTFM is so over" by Bob Walsh and I knew I needed to do it now. Bob's article reminded me that SnapzProX makes it easy so I had no excuses.

He even had a follow-up article about posting your videos to YouTube. What a cool idea! Use Google's bandwidth and maybe get some viral marketing out of it. This pushed me to get it done. Actually, this pushed me to talk to Judy about it and she pushed me to get it done.

Recording the video was drop dead simple, but I found that I needed to write a script first (because I kept screwing it up). This also made it easier for my wife to do the voiceover for the video while I ran MoneyWell. It's really nice to have someone in-house who has worked as a voiceover artist.

When I posted our MoneyWell video to YouTube, the results were less than stellar. The problem is that YouTube shrinks the video dimensions down so much that it's hard to see the text. This is fine if you're zoomed into a small area of your program or you don't have to show fine details, but we couldn't do that with MoneyWell. I tried the SnapzProX function that pans the screen with the cursor, but even with the smooth pan on, Judy said that it still made her dizzy and sick to her stomach. This made me want to play it back a few more times just to drive her crazy, but I didn't... I only played it once more.

So, I ended up leaving the video on YouTube, but I'm hosting a better resolution version on my own server. We'll see how heavy this becomes on bandwidth and if I need to change anything in the future. I definitely want to get more of these videos posted. I agree with Bob that people don't like reading manuals and step-by-step web tutorials can be hard to follow. We live in a great time of simple recording tools and high bandwidth. Praise God for broadband!


Saturday, October 06, 2007

Perfect Fit Software

After a few days of solid pushing, I've given birth to Debt Quencher version 1.2. This is an update I've been wanting to ship since last month, but MoneyWell consumed all my time. It's a good thing I didn't ship it before MoneyWell, because I ended up using much of the cool new MoneyWell code for Debt Quencher.

Debt Quencher is in some ways a perfect application. No, it doesn't do everything that users have requested, but it does what it does in a very direct and simple manner that makes it friendly to use. I love applications that do what they are supposed to and don't make you climb over a clumsy interface overloaded with half-baked features.

One such "perfect" application is Coda from Panic. It certainly doesn't have all the web design tools of Dreamweaver, but it made my life so much easier yesterday because it just works so cleanly. The interface is pristine and well thought out. The features are ideal for hand-coding web sites—something that I never thought I'd enjoy as much as I do. After using Coda, I have no desire to subject myself to any other web tool. I don't know if I could have updated both the Debt Quencher help file and the web site in half a day if it weren't for Coda. Its $79 cost is also in my price range (actually I paid $69 because I already owned Transmit 3).

Another "perfect" application is MarsEdit from Red Sweater Software, which I'm using to write this blog entry. It too is priced right at just under $30 and fits a singular task wonderfully. I didn't even know I needed this application. What's wrong with editing blogs with a browser? It works just fine, right? It does, but MarsEdit makes it better. It took reading about several bloggers who depend on MarsEdit in order to get me to try it. Now I can't imagine having to deal with the clunky browser-based editors. Just because you can do something without buying the right tool for the job, doesn't mean you should subject yourself to that torture.

It's like the time that this guy rated Debt Quencher poorly on MacUpdate because he said he could do the same calculations in a spreadsheet. Sure, you could do that, but the results aren't close to being equal. First, you'd have to know how to calculate credit card interest, then create some fancy equations to evaluate the best method, plus format the worksheet nicely so it all is there on one page, and in the end you don't even have the nice reporting. Why bother? Debt Quencher is $15. I just spent more than that feeding Chipotle burritos to my two boys.

MoneyWell's a bit trickier to keep right-sized. There are plenty of features that go along with managing your finances and I can think of a good argument for including 80% of them. So the trick here is to make MoneyWell feel like these other applications, but give it more depth. Conceptually, this isn't a problem for me. In my head, I have most everything worked out; but then again, in my head I'm still a 22-year old developer than can eat a whole pizza without gaining a pound. In reality, the burrito I inhaled last evening probably will keep me from donning my favorite jeans comfortably and if I'm 22, then Ronald Reagan just won his second term as president.

There are plenty of other applications that are perfect for tasks like LicenseKeeper and even larger apps like the iWork suite, but my point is that we need to be picky about our software choices. Demand tighter, more focused applications. Don't put up with feature bloat! Find software that is a perfect fit for your task.

Speaking of bloat and perfect fit, I really need to jog or something. Seriously, the pants are way too tight after spending months sitting in front of this computer writing code. Maybe my next project should be a program to manage my eating and exercise. Hmmm... maybe after a few more releases of MoneyWell.


Tuesday, October 02, 2007

It's All About Balance

Running a successful micro-ISV (a small independent software vendor) business is all about balance. I have to be very careful about not getting trapped in any one activity too long.

For example, I am working very hard to build a reputation as a responsive software company, so tech support emails are high on my list each day. I try to cycle in time to answer questions during my breaks from coding or design work. But I don't want to be stupid and answer the same question over and over again, so I have been building tutorials for MoneyWell. But I can't spend too much time immersed in these because there is code to write.

And, there are two products now for No Thirst Software, so I have to balance out my coding time between MoneyWell and Debt Quencher. The latter is the primary target for code right now because I owe those customers an update. There are some bug fixes, a few small features, and a revised look to match MoneyWell a bit more. On the right is a sneak peek at the new icon I designed for Debt Quencher.

Now I'm no graphic artist (as many of my developer pals remind me... often... sometimes too often) but I'm not organized enough to outsource this process yet (you have to know what to ask for) and the company isn't producing enough cash flow to warrant hiring a person to spend quality time with me to dig ideas out of the scrambled egg, gray-matter that passes for my brain.

Oooo... cash flow! That's a huge balancing act. My company (finally) paid the bills last month, but that's no reason to get cocky and think that this will be the monthly norm from here on out. There was a lot of marketing splash last month with MoneyWell because of its top billing on Apple's downloads website. I don't have that prime real estate anymore so I have to assume that I will need to start building a war chest for the dry months. This company was inspired by the design of Delicious Monster, shortly after I finished listening to Wil Shipley's now famous WWDC speech, and it has very little overhead, but there are still operational costs because this is not a part-time business. No Thirst Software is my only job and I have no desire to update my resume at this point. That's why I have designed it to go the distance and weather any storm the computer market can throw at it; short of Apple going belly up, but let's not even think about that. <shudder>

Where was I? Oh yeah, balancing the multi-tasking. Many micro-ISVs are one or two people in size so many hats are worn every day. We have to manage marketing, track sales, handle returns (which are a huge opportunity to build future relationships), update your website, keep the books current (get a CPA for this or you'll hurt yourself worse than a razor blade taste tester), take care of support issues, and maybe even write some software.

This last item is obviously the trickiest, but not for the reason you may think. It's easy to write software—millions of people do it all the time. It's harder to write great software and harder still to write great software that has a future. For software to be sustainable, it has to solve a problem in a market space with a significant number of consumers and have a good balance between features and interface. Why is the iPhone so revolutionary and successful? Not because of its feature list (just ask Nokia), but because of the interface used to expose its features. When I design software, I think of the task that needs to get done, prototype an interface, and then spend the rest of the time trying to remove as much of that interface as possible. It's almost as hard as getting my teenage boys to clean their computer desks (almost).

In addition to working on new releases, I have to balance the effort spent on feature releases and patches. When a bug crops up in the wild and the tech support emails start piling up, an urgent patch may be necessary. This derails a feature release for a bit, but the only alternative is to write bug-free software and I don't think that's possible given the complexity of operating systems these days. It's just best to plan time in your release schedule for a patch or two after the initial delivery and be fast with coding, testing, and shipping updates.

And, finally, this business balancing act comes third in my life. I was taught by a sales trainer, in one of my first jobs selling table appointments (china, crystal, tableware, and cookware), to always put faith and family before finance. He said, "My sales team can't be miserable in their personal lives and then come to work and be successful. Go home and spend time with your family." Coming from a guy that could sell carpeting to a tap dancer, I thought that was pretty generous advice and so I've held onto it—tightly.

I know I have my balance correct when I feel like I've fit a week's worth of activities between sunrise and sundown and yet I'm not exhausted. Man, I love those kind of days!