iPhoto Subscriptions with Gallery2

We use Gallery2 to store and share photos of our son, dog, family, etc. While many people use free sites like Flickr, paid sites like .Mac and SmugMug, I like to have my own site that I can control and customize. Some of these sites offer prettier albums, comments, etc., I don’t like giving up control. One of the cool features of iPhoto that is probably underutilized is the Subscribe to Photo Feed option. In the past, I’ve tried to set this up with Gallery, but have failed. My wife wanted to setup her mother’s computer to get updated pictures of her son, so I gave it another shot in configuring Gallery2. Turns out, it is quite easy. Just choose Configure RSS Feeds for the album, change a couple of switches as shown in the picture below and then copy/paste the resulting URL into iPhoto.

RSS Image

One slight note with this; the feed only contains items that are marked as New or Updated. New or Updated is determined by the date. By default, items are considered new if they were uploaded in the last 7 days. I tried to set this up for my sister’s site as my parents really liked seeing the pictures in iPhoto and for some reason it didn’t work. Turns out the newest pictures my sister has are over a month old. So, change the New Items option in Site Admin to 30 or 60 days if you don’t update your gallery too often.

Garmin is too cool

I’m subscribed to Garmin’s blog and saw that they have a “garage” where you can customize the car icon on your GPS unit. While this seems like a gimmick, it shows that Garmin has a little sense of fun and forward thinking in developing their GPS units. In addition, Garmin has new “tours” if you will, that you can purchase which you load on the unit and has points of interests and directions. I’m not sure that the tours are up my alley, but being able to add this is just another cool feature of the Garmin units.

With all the free publicity I’ve given Garmin with my Forerunner 305 review, the least they can do is send me a nüvi 360 🙂 My review (which I wrote over 1.5 years ago) still gets about 3000 hits a month!

Screwed by Bank of America

Today I reviewed my Bank of America mortgage statement to make sure that my payments were being applied correctly; I pay half of my mortgage twice a month on the premise that I’d cut time off my loan. Well, turns out that Bank of America’s automatic payment program deducts the payments twice a month, but only applies them once a month. I found the original documents and found the fine print that this is how it works. Why on earth would anyone agree to this if it didn’t apply the payments twice a month? I feel like such a moron for not catching this earlier. Now I have to go see if I can get it changed so that my payments are applied twice a month or change it back to one payment a month so that bank doesn’t get the float. While this seems quite deceptive to me, I agreed to the terms and that just makes me stupid for doing it.

Uggh. Yesterday I was going to write about the sub prime mortgage market where I think that borrowers should take some of the blame for the problems, but now the tables are turned on me. I’m a well educated consumer and knew about paying twice a month would cut years off my loan and I still got “taken”. All the fine print in mortgages screws over everyone including informed consumers.

If you have mortgage horror stories, please post a comment.

Roomba isn’t saving us time

I hate to say it, but the Roomba isn’t saving us time. I love the Roomba and Scooba, but the promise of time savings just isn’t there. How can that be you ask? It is quite simple; my wife and I hate vacuuming and the cleaning crew we had wasn’t doing a good job, so the house wasn’t getting vacuumed regularly. While our house is usually “in order”, we had dog hair all over the place and the carpets didn’t get vacuumed as often as they should.

So now that the Roomba is handling the floors, our carpets look better, there is less dog hair on the tile and our house looks better, but it still isn’t saving us time!

Lovely Core Data Issue; is it a bug or a feature?

I’ve had a few users report that they lost all their data when upgrading to the latest ReceiptWallet or DocumentWallet. This really concerns me as I don’t like data loss (who does?). The latest version of both programs switched to using an SQLite database when users were running under Leopard as it is much faster. At the same time, I changed my object model as I was including lots of models that I didn’t use (damn Apple sample code included all models in all frameworks). So the changes weren’t minor, bug I did my testing and things were working fine. It was in beta for awhile and I had no reports of issues.

Today I decided to revisit the issue and try to solve the problem once and for all. In order to determine when object model I’m using, I add a model version to the metadata which gets written out to the database. I had code like this when I was setting up the data, at the end of the conversion.

[self generateMetadata]

if (managedObjectContext != nil && [managedObjectContext hasChanges])
{	
	[managedObjectContext commitEditing];
	[managedObjectContext save:&error];
}

That should be fine as I don’t want to save if there aren’t any changes and there has been a report that saving when there aren’t changes can cause data loss under Leopard. My code should be nice and fine. Well, here’s the rub. When I do the upgrade, I modify the metadata (in generateMetadata) and if there are no changes (like when the app initially starts), the data file doesn’t get saved. So the next time the app is launched, it thinks it is using the old data model, attempts to do an upgrade, hoses all the data, and continues. If the user modified something prior to quitting the app, all is fine.

So, it looks like people launched the app, let it do the update and then immediately quit it. Ouch.

My modified code is:

	BOOL metadataChanged = [self generateMetadata];
	if (managedObjectContext != nil && ([managedObjectContext hasChanges] || metadataChanged))
	{	
		if ([managedObjectContext hasChanges])
		{
			[managedObjectContext commitEditing];
		}
		[managedObjectContext save:&error];
	}

where generateMetadata returns true if the metadata is different than what already exists.

This brings up another question. Why did I restrict this to Leopard. Well, I was having problems in Tiger where the data got hosed. In my testing this evening, the problem was the above issue. I guess I changed something in the app during Leopard testing which caused the metadata to be written out, but didn’t change anything under Tiger. OK, so now Tiger users get the benefit of the SQLite database format.

Of course, the users that had this problem said that they installed the update and their data was gone. What they didn’t say is that they quit the program right after the update without changing anything. Well, I don’t expect people to take this much notice to what they are doing, but it would have helped track this down faster.

The good news about this mess is that during testing I saw how this could be an issue and made a backup of the old database called ReceiptWallet.receiptwallet.old or DocumentWallet.documentwallet.old. This is in addition to the daily backups I automatically make of the database (up to 5 copies).

New rate structure

I’ve been thinking about a new rate structure for clients. It would go something like this:

Amount of NoticeRate
4 monthsStandard
2 monthsStandard rate + 10%
1 monthStandard rate + 25%
1 weekStandard rate + 50%
1 dayStandard rate + 100%
< 1 dayStandard rate + 200%

Is push email really useful?

The holy grail of email seems to be push email where you instantly get your new email as it arrives. For years which my NotifyMail program, I basically had this as well on my desktop, but not on mobile devices. With IMAP idle, NotifyMail is obsolete for the desktop, but push email still seems the rage on handheld devices as everyone wants to be like RIM with the BlackBerry. I didn’t think much of this until last week when I saw someone say that the iPhone can’t be an enterprise device because it doesn’t have push email and you can only have it check email automatically every 15 minutes. To that, I respond, so what? Is email all that important that I have to get messages instantly? Of course not, if something is all that important, people can get me with SMS, IM, or can you believe it, the phone. Why does everyone think that push email (and for that matter constant connectivity) is the only way to work? I think that this causes too much stress and is not needed.

I’m sure people will argue with me that they must be in touch all the time and have to get email anywhere and everywhere, but I’d prefer not to have my life run by a little box.

Bluetooth in VMWare Fusion

Yesterday I wanted to update the firmware in my Parrot EasyDrive Bluetooth carkit. Seems simple enough to do it using VMWare Fusion. I started up Fusion, chose the option to connect the “Bluetooth USB device” and found that Windows didn’t have the driver. Crap, I remember having to do something with BootCamp to get the drivers, but I couldn’t recall. Now that BootCamp wasn’t a download (it is part of Leopard), I started poking around at the BootCamp Assistant and got no where. I searched online and couldn’t find an answer. Finally, I found a reference to inserting the Leopard DVD while in Windows. I tried this and when I did, the BootCamp driver installer came up and installed my drivers. Perfect; why couldn’t VMWare say something about this on their website?

Oh that brings me to something else, on the Mac, AutoPlaying of a data CD/DVD has been disabled for years, but it seems that Windows still has this on by default (I run Windows XP). Has Microsoft not learned from all the viruses and malware available for Windows? Are they taking that ease of use over security? While I understand there are tradeoffs, I think this is a poor one to make.

TV without violence?

My wife and I realized awhile ago that most of the shows we were watching/recording on TiVo had to do with crime/murder such as CSI: Miami, NCIS, Without a Trace, etc. While the shows are quite engaging, they are violent. I wasn’t sleeping well and my wife suggested that our TV viewing habits could be the cause. So, we decided to change our makeup of shows to shows without violence. Unfortunately we picked a real crappy time to do this because of the writer’s strike. We’ve started watching “chick” shows are there simply aren’t that many comedies and other good shows on TV. While the “chick” shows (i.e. Grey’s Anatomy aren’t my cup of tea, I am sleeping much better. We’ve thrown a few of the crime shows into the mix, although not as often, and I’m still sleeping well.

I’m not sure why we were so attracted to violent shows, but our choice of shows is changing which is a good thing because as our son grows up (and we determine how much TV he’ll be allowed to watch), we don’t want him watching violent shows.

Indie Software Developers

For years, I’ve seen references to “indie” (independent) software developers, but never considered myself one. I’ve never had to rely on sales of my own software as I’ve been an independent contractor without my own products (that brought in any significant amount of income) for almost five years. However, this past year, ReceiptWallet has started to change that; I’m not about to give up my day job, but in an exchange with another developer today, he referred to both of us as “indie” developers. I guess I am an independent developer.