Sunday, July 25, 2010

Benefiting From Your Credit Card

Credit card debt is a huge problem for millions of Americans. Some put the blame for this on the credit card companies and their "deceptive business practices." I would certainly agree that the credit card companies do some pretty shady stuff and should be better regulated but I more strongly believe in personal responsibility. It wasn't the credit card company that made you buy that flat screen TV now was it?

I know about this all too well because starting in college and for a few years after graduation I carried far too much debt. It all began when I charged my first major purchase for $2300. It was a Dell computer with a 233 MHz processor and a 3.2GB hard drive (worse specs than my current cell phone). I spent years paying off that thing. Back then the only attribute of a credit card that I was (properly) concerned with was interest rate.

I am happy to report that I have long ago paid these cards off and now use them for convenience purposes only.

If you have no debt and pay your cards off each month than, contrary to most people, you are in an excellent position to really benefit from credit cards. There are hundreds if not thousands of different cards out there with a wide range of benefits. Choosing the right one depends on matching up your personal spending habits (e.g. do you buy mostly gas & groceries?) with cards that reward those habits with what you want (e.g. travel discounts?).

Over the last few weeks I decided to finally investigate a good rewards card for myself. After quite a bit of research I ultimately decided to go with the American Express Blue Cash card. Below are some of the benefits of the card and reasons I choose it.

  • Earn cash back
    • It has a very simple cash back reward program. Many rewards cards are "point" based which require you to redeem the points at specific locations. With this card you just earn straight up cash back at rates of between .5% and 5% depending on the type of purchase and how much you use the card.
    • The reward is given as an automatic cash credit to your account once a year. Other cards I found make you jump through hoops (call and request) the reward or issue you gift cards instead of cash.
    • NOTE: You can earn these cash back rewards by paying your recurring bills (gym membership, phone bills, etc..) with American Express Automatic Bill Pay.
  • No annual fee
    • Many other cash back cards (and many other AMEX cards) have an annual fee but this one does not.
  • Purchase Protection on your purchases
    • Covers theft or damage (whether by accident or vandalism) of your purchases for up 90 days.
    • NOTE: Pays up to $1000 per incident with a $50,000 maximum per calendar year.
  • Extended warranty on your purchases
    • Extends the length of the original manufacturer's warranty on purchases by up to one additional year. So no need to buy one year extended warranties from places like BestBuy.
    • NOTE: Pays up to $10,000 per item with a $50,000 maximum per calendar year.
  • Return protection on your purchases
    • If a store won't take an item back within 90 days of purchase AMEX will refund you the full purchase price.
    • NOTE: Pays up to $300 per item with a $1000 maximum per calendar year.
  • Car rental insurance
  • Roadside assistance
  • Global assist hotline
    • Provides 24/7 emergency medical, legal, and financial assistance, and more, when you're more than 100 miles away from home.

It is very important to realize though that these cards usually have a much higher interest rate than you could otherwise get so if you don't pay them off in full each month the benefits you may earn will be completely outweighed by the interest rate payments you make. So don't bother with these cards until you can pay them off in full each month.

P.S. I want to thank American Express for sponsoring my blog this week. Just kidding. I did all this research and figured I'd share what I found with everyone.

Saturday, July 17, 2010

Managing Multiple Installations of Xcode

If you are developing for the iPhone you will quickly discover the need to support multiple installations of Xcode. The most common case is when you want to install the latest "beta" SDK to try out the hot new features while maintaining the latest "official" SDK for production purposes.

Supporting side by side installations is relatively simple but may not be immediately obvious if you haven't done it before. Several screens into the Xcode installation wizard, on the "Installation Type" page, there is a subtle drop down dialog for Location that lets you choose where to install. The default is /Developer but you can change it to what ever you like.

Many developers choose to always install the latest official release in the default location /Developer and the latest beta release in something such as /DeveloperBeta. Each time a new version is put out they upgrade the appropriate one.

I started out doing it this way but occasionally found it limiting to not have the older SDKs:

  1. Can't rebuild an old release of your product that was made with an old SDK
  2. Can't test using an old version of the simulator
  3. Can't compare differences in behavior between older SDKs / simulators
  4. Apple may release a broken SDK or you may not realize the consequences of upgrading the SDK. That may result in you needing to spend time uninstalling the new and reinstalling the old.
Starting tonight I'm trying out a new installation scheme. I'm now installing each new version (whether it is release or beta) to /iSDKs/[version_number]/ and simply ignoring the default /Developer location.

One point worth noting is that it turns out not all of the developer tools get placed in the location you choose! The fine print of the installer says that "System Tools" and "Unix Development" can only be installed once and are always installed to /Developer and the boot volume.

One important implication of this is that when you uninstall the version at /Developer you may also remove the single installations of "System Tools" and "Unix Development" which could cause problems with your other installations or build scripts. This is exactly what I did tonight and immediately discovered that version control in the other Xcode installs broke because it couldn't find cvs.

The main take away from this is that if you go down this route the order you install / uninstall can be important. I recommend:
  1. uninstall your current installations first (especially the one at /Developer)
  2. install each version one at a time proceeding from the oldest to the newest
P.S. The way to uninstall an XCode install is:
sudo [xcode-install-dir]/Library/uninstall-devtools --mode=all

UPDATE:
If you use macports you will need to update the "developer_dir" setting in macports.conf (usually /opt/local/etc/macports/macports.conf) to point to the version it should use. I set it to /DeveloperCurrent and created a symlink there to point to the most recent release version.

Thursday, July 8, 2010

Remove Interface Builder from the iPhone Project Templates

I find it frustrating that the XCode iPhone project templates are set up to use Interface Builder. Here are the steps to remove Interface Builder from the project templates:

  • Create a project using a template
  • Delete the .xib files from the project
  • In the .plist file, delete the "Main nib file base name*" properties
  • In main.m, pass the name of your Application Delegate class to the UIApplicationMain() function as the forth argument
  • Remove the IBOutlet keywords on the properties
  • Update application:didFinishLaunchingWithOptions: to create / initialize the application window

Wednesday, July 7, 2010

Bluetooth Not Available on Macbook Pro

This week Bluetooth stopped working on my MacBook Pro. Clicking on the Bluetooth icon revealed the message "Bluetooth Not Available". Resetting the System Management Controller (SMC) did the trick.

How you do this depends on your model. The instructions for mine, a MacBook Pro (Mid 2009), are as follows:

  1. Shut down the computer.
  2. Plug in the MagSafe power adapter to a power source, connecting it to the Mac if its not already connected.
  3. On the built-in keyboard, press the (left side) Shift-Control-Option keys and the power button at the same time.
  4. Release all the keys and the power button at the same time.
  5. Press the power button to turn on the computer. Note: The LED on the MagSafe power adapter does not change states or temporarily turn-off when you reset the SMC.