• Using Xcode Server for Builds

    At last year's WWDC, Apple introduced Xcode Server for doing continuous integration. Lots of people have tried to use it with mixed results. Recently after dealing with our build server for work (we use Jenkins), I decided to give Xcode server a try for one of my projects.

    I was hesitant at first to use OS X Server (which includes Xcode Server) as I've had poor results with it in the past. It intrigued me often that I decided to install server and see where it went. OS X server install was a breeze and so was setting up Xcode Server.

    I created a "Bot" from Xcode on my development machine and saw that it failed when the server tried to build it. No problem, I searched the Internet and all the results said to add the repository from the server instead of when creating the bot. Perfect, I did that and then the build succeeded. Yeah! I also added my Team to Xcode server so it could pull down provisioning profiles and create a certificate to build.

    I checked the log and found 2 problems. First, I have a run script build phase that puts the version number in the Settings.bundle that failed and second, it was being signed using the wrong mobile provisioning profile.

    I decided to tackle the second problem first. Through my searches, I found that I needed to put the mobile provisioning profile (an AdHoc one) in /Library/Server/Xcode/Data/ProvisioningProfiles. No problem. Next I also found that I needed to put the certificate and private key for the profile in the System keychain as the Xcode Server runs under _teamserver which doesn't have its own keychain. I did that as well and found the problem didn't go away. I started thinking about it and found that sometimes Xcode ignores the Automatic Distribution Code Signing Setting. So, I removed my Team and deleted all the other mobile provisioning profiles. Bingo, now my app was building and being signed correctly.

    Next step was to figure out my build phase. After dumping the environment variables, I found that in order to put files in the .app after the build, I had to set my script phase to be:

    shortversionnumber=`/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" ${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}`
    bundleversionnumber=`/usr/libexec/PlistBuddy -c "print CFBundleVersion" ${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}`
    shortversionnumber=`echo $shortversionnumber '('$bundleversionnumber')'`
  • The downside of parking meters

    San Diego is in the process of replacing regular parking meters with ones that are called multi-space meters. These are ones that give you a ticket that you place on your dash. I thought that these were neat as I could just pay with a credit card as I usually don't have change around. My wife, however, pointed out the problem with these is that the minimum is 1 hour on the meter which costs $1.25. I didn't think much of it until I had to pick something up today and found a meter with some time left on it; I dropped a quarter in it (I do have some quarters in my car) and got another 12 minutes which was plenty of time for my errand.

    It turns out that the pay and display meters do take change and apparently you can put less than $1.25 in them. So the lesson is that I still need to have quarters in my car for times that I think I'll be at a meter less than an hour; otherwise, paying by credit card is quite convenient. Now if the city could just get with the game and figure out some micropayment strategy with lower transaction fees, maybe they could reduce the minimum amount to go cashless.

  • Simple fix to "This accessory is not compatible with the iPhone" with mophie cases

    I've been using mophie battery cases for a few years now when I travel as the iPhone doesn't seem to last all day when I use it extensively. Granted the iPhone 5 has gotten better, but I typically use GPS to track my run/walk if I'm in San Francisco for WWDC or somewhere else. Every now and again when I'd charge my case, I'd get the message "This accessory is not compatible with the iPhone". mophie's FAQ gives some lame answer on how to fix this problem.

    Recently I bought the charging dock for my juice pack and was getting this message every time my phone got to 100% charge and then overnight my phone would start to drain. After a bit of searching, I found a reference to charging cables on Apple's support site. While this wasn't my problem as the dock has an integrated cable, it got me thinking. My dock was plugged into a USB hub instead of directly into the wall or my Thunderbolt display. I switched the dock to plug into the Thunderbolt display and bingo, the problem went away. This tells me that the current supplied by the hub (it's an unpowered hub as I don't want to plug in the power supply) isn't enough to keep the iPhone/mophie case happy.

    Such a simple fix for a problem. Maybe mophie can update their FAQ with this information and save others from returning their products or contacting support.

  • Review: Dyson DC44 - An expensive vacuum that really sucks

    When we were picking what to put in our house, we decided to go with an engineered hardwood floor as it would look nice and wouldn't trap allergens like the carpets we had in the past did. We had a Shark vacuum that we brought to our new house and found that we were using it a few times a week because one thing that you don't realize with a dog is just how much it can shed! Our dark hardwood was constantly covered with dog hair (he's a light colored dog), so it started driving me crazy. The corded Shark sucked up a lot of hair, but the cord didn't make it convenient to use.

    One day when I went to Costco (it is now my job to goto Costco as we're literally 2 minutes away from one and my wife hates going), I was browsing the aisles and saw the Dyson DC44. It was quite expensive, but I was willing to give it a try. When I got home, I told my wife that if we didn't like it or thought it wasn't worth the cost, it would go back. The Dyson's main selling point for me was that it was cordless; while there was another cordless on display at Costco, the Dyson looked more powerful.

    I hung up the charger in the garage (this is absolutely key to using it as it makes it very convenient to grab). My son loved it and wanted to vacuum. We started vacuuming about every other day as there was tons of dog hair. Was the amount we were vacuumming just because it was a novelty to use a cordless vacuum or would we keep it up? Our house isn't that big (just over 1600 square feet), so vacuuming the entire house can basically be done on one charge (it gets about 20 minutes on a charge). About a month after I bought it, I knew it was a keeper as my wife offered our Shark to her parents. Yeah!

    Now that we're 4 months into having it, I still vacuum a few times a week and sometimes just grab it when I see a large clump of hair around (we can never completely eliminate the hair). It's easy to use, but a little on the heavy side for my son. The canister is far too small for having a dog as I have to empty it 3-4 times when I do the entire house; it is adequate for quick cleanups, but a pain for the full cleaning.

    Pros

    • It is easy to use.
    • Cordless makes it very convenient.
    • Charging base is well designed and makes it easy to grab the vacuum out of it.
    • Has enough power to pick up dog hair.
    • Lots of attachments; we tend to use the attachment that spins like a vacuum and a pointed one.
    • Battery is big enough for our use; using it on carpets or a bigger house, it would be too small.

    Cons

    • Charger cord is too short. The base has to be mounted very close to the outlet which won't work for everyone and barely works for us.
    • The canister for the debris is too small for a family with a pet.
    • Very expensive.

    Summary

    So far, this is proving to be a good investment. We are vacuuming regularly and don't just put it off to a bi-weekly task like we've done in the past. I believe that this will help us live in a cleaner house (not sure how clean a house can be with a dog in it). I would like to see it have a larger canister to hold debris and a larger battery wouldn't be bad, either.

    Overall, I have no regrets about buying this. Without this vacuum, I imagine that we'd have dog hair around all the time and make our house look dirty. Cordless vacuums have come a long way and I'm not sure I'd go back to a corded one even if it offered me more power. The cost is the biggest hurdle in me recommending this product to others, but if you have some spare change, this is well worth a look.