• Why is currency programming so hard?

    One of the most requested ReceiptWallet features was to be able to handle receipts in multiple currencies. OK, simple enough I thought as I could just treat all values as strings so that they have a currency symbol in them. The problem was that I had to verify that the currency symbol was valid and format the value so it is appropriate to that currency, for example, the Japanese Yen doesn't have decimals in the number. My first pass that this was pretty decent, handled dollars, Euros, Yen and a bunch of other currencies. Turns out this wasn't a complete implementation. In order to build my list of currencies, I used what are called locales on Mac OS X to get the currency associated with a locale. Problem is that some currencies aren't associated with a locale, such as Swiss Francs (I have no idea why). So I had to find a way to get a list of currencies and do some formatting magic. I think that I managed to do this, but I just don't understand why it was so hard. Is it inconceivable that people would want to use multiple currencies on one machine? If it was easy, everyone would have this type of code in their programs!

  • Support didn't treat me like an idiot

    I noticed that my internet connection was slow, so I rebooted my cable modem and the modem didn't come back online, so I called Time Warner Cable Business Class (I have a business account). The guy I spoke with didn't have me do all the stupid stuff like reboot my computer, turn around 3 times, blame the computer, etc. He tested the cable modem and found (after it came back online) that there was high packet loss ( > 60%). While the problem hasn't been resolved, I'm confident that it will be soon. Time Warner has always been pretty responsive, especially on a business account; one time they wanted to come out a few hours after I called to replace the cable modem (I was actually out of town), but then called me back a few times to give me status and the problem ended up being something they could solve on the headend.

  • Overlooking the obvious

    In my latest program, ReceiptWallet, you can create and delete receipts. While I was developing it, I always hit the Delete key to remove receipts as I'm pretty keyboard centric and don't like using the mouse if I can help it. The Delete menu item is always dimmed and I have received a number of messages asking how to delete receipts. I can't believe I forgot to hook up the menu item for Delete. Stupid me. So in the next version, I hooked up the menu item and added a big Delete icon on the toolbar.

  • Stupid users

    Up until my latest product, I typically wrote software that was a bit complex and not easy to setup. This is due to my slightly over active brain trying to solve a problem in what may not be the easiest way. So when I sold software, I could understand when people couldn't set it up and wanted a refund (I didn't like it, of course), so I put verbiage into my store that required people to confirm that the software was working before purchasing so I didn't have to deal with refunds. I thought that my latest product was different because my parents have been using it without problems (they're pretty smart, but sometimes have issues with computers), but a user today proved me wrong. Not only did the user not read my no return policy (uhhh, that's why there is a demo), the user never contacted me for support and his problems were quite minor with one being he couldn't delete a receipt (hit the delete key, more on this in another post) and he couldn't put receipts in collections; the mechanism for doing this is the same as iTunes and iPhoto and I don't hear people complaining about them. I gave the user back his money (minus the processing fee) as frankly, I didn't want to deal with him. For a product that is pretty easy to use and has a demo, I shouldn't have to deal with stupid users.