Flip-flopping is the sign of intelligence

Some candidates in the current presidential race (and prior races) have been accused of flip-flopping their positions on various topics. The media and other candidates make this out to be a bad thing.

We make lots of decisions every day; some good, some bad. We also take up positions on various topics all the time. All of our decisions and positions are based on the information available at the time of the decision. If we gain more information or the information turns out to be false, our decisions and positions may change. Anyone that periodically re-evaluates these is, to me, an intelligent person and if he/she changes a position or reverses a decision, it shows that he/she is unafraid to admit that the original decision or position may not have been correct.

While I don’t regret many decisions I’ve made nor do my positions on topics usually change, sometimes they do. If I were to run for political office, I might be called a flip-flopper and my reply would be “Thank you”!

(I don’t endorse ANY candidate and as a non-partisan voter who didn’t pick either the Democratic or American Independent parties primary ballot, I didn’t vote for any candidate in the primaries; yes, I already sent in my ballot.)

Crappy coding bites me again

I write a lot of code for ReceiptWallet as well as my day job doing contract work, so it goes without saying that I write some good code and some bad code. I like to think that I mostly write good code with a low bug count. I’ve been getting some really odd crash reports with ReceiptWallet and no one has actually sent a description of how they managed to crash it. I took a look today based on some guesses I had about how a customer was using the product and managed to track down the crash to one line of code; granted the crashes didn’t point to the line of code and were all across the board, but when I commented out the line, the funky behavior stopped. Turns out it was a really stupid bug; I use Cocoa Bindings in ReceiptWallet which saves code and is, in general, pretty neat. Basically in the UI, I specify that a particular field is bound to a variable. Then in the code, I set the variable. The trick is that the variable has to be set using Key Value Coding (KVC) such as:

[self setValue:[sender stringValue] forKey:@"variableName];

However, I found in my code a line that looked like this:

variableName = [sender stringValue];

When I first looked at it and started thinking about it, I thought I hadn’t retained the value and that the results were undefined when it exited the function, but after thinking about it all day, I realized my mistake, changed the code and presto, the crash was gone. What really threw me were crash reports like:

Thread 0 Crashed:
0   libobjc.A.dylib               	0x94cc56e8 objc_msgSend + 24
1   com.apple.Foundation          	0x95f4a180 -[NSComparisonPredicate evaluateWithObject:substitutionVariables:] + 240
2   com.apple.Foundation          	0x95f4a081 -[NSPredicate evaluateWithObject:] + 49
3   com.apple.CoreData            	0x90c4520a -[NSManagedObjectContext executeFetchRequest:error:] + 2266

and

Thread 0 Crashed:
0   libobjc.A.dylib               	0x94cc56e8 objc_msgSend + 24
1   com.apple.AppKit              	0x936c3732 -[NSApplication run] + 892
2   com.apple.AppKit              	0x936909ba NSApplicationMain + 574

Now I can sleep better knowing that I fixed a long standing bug that may have solved a number of crashes that I couldn’t explain.

Wire cleanup

Like any computer geek, I have a ton of stuff on my desk which leads to a ton of wires. Periodically, I attempt to figure out what to do with them. When I got my new desk, I put some wire runs under my desk to help with the clutter. That lasted a little bit, but I kept adding more stuff and it became a mess again. This week, I added another wire run, got some velcro ties and switched out a surge suppressor to one with 12 outlets! (I call it my vampire surge suppressor as I turn it off at night so that all the stuff that sucks power when not on won’t suck power.) I seem to have a lot of power bricks on cords, but not many of the large transformers that seem to block outlets. This is handy as I come shove them up in the wire racks.

Here are some after pictures (I didn’t take before pictures, but trust me, it was more of a mess!):

Wires Under Desk - 1Wires Under Desk - 2

Tech reporter who doesn’t know tech

There are a few tech reporters that are well known and well respected in the industry. David Pogue and Walt Mosberg to name the most famous. Both men write pretty good reviews and seem to be right on the money with what they say. So much so that their reviews can greatly influence a product’s success in some circles. Today I read a review by Jonathan Blum about the Navigon 2100 and can’t understand how he gave it a positive review. (I’ve seen a few other positive reviews of it and my conclusions below apply to all of them.) One of the following explains the review:

  1. He never actually used the device (it looks great on paper). I used one for about 5 minutes and was disgusted by it.
  2. He has very low standards for GPS devices (my old Garmin iQue 3600 performed better than this)
  3. He has never used a competing product from Garmin or TomTom

You might be saying that these are serious acquisitions, but has anyone actually used one of these devices? It is slow, cumbersome, and lacks decent points of interest.

Am I writing this because I’m a fan of Garmin having written positively about them in the past? No, I’m writing this because if you want a decent GPS unit, don’t get the Navigon!

(Generally I like Garmin, but my biggest criticisms of the company are a) their dizzying array of similar units (they’re competing against themselves and driving people away because consumers have no idea which one to choose) and b) their units are quite expensive.)

Disclaimer: I own stock in Garmin, but have no inside information about the company, don’t know anyone at the company, and they don’t pay me to write this stuff.

Gadget Drool Day

Yesterday I was in drooling all over my desk at some tech rumors and product announcements. First up was Garmin’s announcement of the Forerunner 405. While I don’t plan on running another marathon, I do plan on running to keep in shape. It’s hard to justify purchasing it, but since it can work as a normal watch, maybe I need a new watch!

Second up on my list is the rumor that Apple will have a dockable laptop based on a patent application that was recently granted. Unfortunately the patent was filed a year and a half ago, so it coming to light now could be a mere coincidence. Apple patents everything, so who knows if this will become a product. I’m crossing my fingers that it will be, and I’ll jump at purchasing it if it comes to be. Right now my MacBook Pro has 7 cables coming out of it that I have to unplug every time I want to move it which is a pain.

While not really a gadget or technology, LEGO released new sets for 2008 including Indiana Jones based sets (which don’t really fit into my collection, but they’re cool). They also have new City sets which will fit in perfectly in my collection. The problem is, plastic LEGOs aren’t cheap!

I’ll start saving my pennies now to buy all my gadgets.

Navigating with printed directions

Last night I had to pick up something for my wife. Unfortunately it wasn’t going to fit in her car which has built-in navigation, so I had to take my car. As I gave my Garmin iQue 3600 to my father and haven’t replaced it, I had to print out directions and follow printed directions. It seemed so archaic to have to do this, but I didn’t have a choice. I guess I’ll have to wait for a new car to have navigation again as I still can’t justify getting a portable GPS unit for the little driving I do in my car to places I’ve never been.

Watched my first movie rental on TiVo!

Awhile back, Amazon Unbox came to TiVo. I thought this was great as my wife and I are a bit too lazy to goto the store and rent a movie (even more so now that we have an 8 month old son). Well, nothing ever came of it as we never rented a movie. The other night, when there was nothing on TV because of the writer’s strike, I mentioned it again to my wife and she checked out Amazon, saw that Ocean’s Thirteen was available for rent for $0.99, so we set it up and started the download. It was quick and easy! Last night we got around to watching the movie and must say that the experience renting the movie was excellent. I think our threshold is probably $3.99 for movie rentals. The problem with Unbox is that the selection isn’t all that great for rentals. Maybe I’m just picky, but not a whole lot jumped out at me.

The rumors are circulating that Apple will have a rental setup for the iTunes Music Store soon which would be cool as we could watch stuff from our AppleTV. However, it will require an upgrade to the AppleTV’s software which will knock out my Squeezebox hack on it. We’ll just have to wait and see.

Flexible spending reimbursement is as easy as pie

Every year we have to fill out the paperwork to get our money back from my wife’s flexible spending plan. I don’t ask much of her in terms of accounting, so this has always been her task. She had to copy all the receipts and assemble them from a big mess of receipts. Well, this year, thanks to ReceiptWallet, that was different. I simply selected my “Medical” collection, selected all, hit print, and then filled out the paperwork. It took maybe 15 minutes to fill out and fax in the paperwork. A week later, we received a check for the full amount we requested with no problems. This paid for my copy of ReceiptWallet, just in the time it saved me to do this 🙂

Bug in Gmail’s SMTP Server or bug in Apple Mail?

Today I tried to send a zip file to a client (I’m using Google for Domains so I use their SMTP and IMAP server) and was unable to do so through Mail.app. It got part way through the transfer and said it couldn’t send it. After a bit of trial and error, I discovered the problem. I use Hazel to automatically move files and set the color of items so I know what is new. When I created the zip archive, Hazel automatically colored it. I reset the Finder label and presto, the file went through.

VMWare Fusion saves the day

While I was working on a ReceiptWallet issue, I needed an older data file, one that was in XML format and created from an older ReceiptWallet version. I have recent backups of all my data, but don’t generally keep an archive of the data as the amount of storage space to keep regular archives is enormous and I’ve only thought about using archives once or twice in the last 10 years. I thought I was hosed, until I realized I had backups from my server before I retired it. Problem was that my server backup drive were formatted as ext3 (Linux format) and couldn’t be read on the Mac without installing some extra stuff that might not even work on Leopard and could make my system unstable. So I looked for an alternative. I downloaded a CentOS virtual appliance from VMWare’s Appliance Marketplace, ran it under VMWare, plugged in my backup drive, in VMWare, connected the USB drive, mounted the drive, found my backup, tar/gzipped the directory and then FTPd the archive back to my Mac. It sounds complicated, but the most time consuming part was downloading the 691 MB archive of the virtual application. The rest was just a few simple UNIX commands.

While Fusion worked great in this scenario, it isn’t working with the Slide/Negative Scanner I just bought. I bought it to transfer some of my old negatives into digital format even though it got mixed reviews. With the lifetime guarantee that Hammacher Schlemmer offers, I couldn’t go wrong if it didn’t work or the quality was awful. Maybe VMWare will be able to address this issue with the next release; I suspect that the device is trying to pump too much data through USB or is doing something non-standard with USB.