Friday, August 28, 2009

iPhone Friday - August 28, 2009

Happy Friday! To break up the fun of the Popular American Names wallpapers (entry: 1, 2), I am continuing with an installment of the study in vector blends. Enjoy.

Thursday, August 27, 2009

Xcode Subversion 1.5 Support

Apple added support for Subversion 1.5 into Xcode 3.1.1 back in September. This wasn't a big deal for us at the time (we were happy using Subversion 1.4 clients with our antiquated Subversion 1.2 server running on our old Xserve), but we knew we eventually wanted to get both client and server migrated up to a newer version. Well, rather than spend precious time upgrading our Subversion server (and later migrating it when the old Xserve is retired), we decided to move our version control to the "cloud" and pay someone else to worry about that. After looking around, we chose CVSDude. Dumping and uploading our repository to their system was pretty easy and the move leapfrogged us from Subversion 1.2 to 1.6.

Once the new Subversion repository was up and running, we used svn switch to point our existing working copies at the new repository:
svn switch --relocate \
    https://old.ablepear.repo/ \
    https://new.cvsdude.repo/
One potential gotcha is that Xcode sometimes seems to change the repository URL by inserting the username, so if you checked out https://old.ablepear.repo/, Xcode sometimes changes it to https://joeschmoe@old.ablepear.repo/. I'm not sure what the deal is with this, but a quick svn info will tell you what the current URL is for the working copy.

But the real fun began when I tried updating my Subversion client to 1.5. Subversion is actually fairly painless to build from source on a Mac, but I decided to go with precompiled binaries anyway. I don't have either MacPorts or Fink installed, so I downloaded the Subversion 1.5 installer from CollabNet. It's a standard Mac installer and it ran without a hitch, but it left me scratching my head -- after running, I opened a new terminal window and svn --version still showed me on 1.4.4. Poking around, I discovered that the CollabNet installer puts the Subversion binaries in /opt/subversion.

Well, no problem, I added /opt/subversion/bin to my development paths file in /etc/paths.d and voila! svn --version now shows 1.5.7.

After doing a svn up successfully on one of my Xcode project working copies from the terminal, I opened it in Xcode and tried to to SCM | Update Entire Project, which failed miserably -- Xcode complained that it's Subversion libraries were too old to work with the working copy. Subversion changed its working copy format between 1.4 and 1.5, and the new 1.5 svn command automatically upgrades any working copy it touches.

After some furious googling, I found out that Xcode's Subversion plug-in expects to find the Subversion libraries in /usr/lib, but CollabNet's installer puts them in /opt/subversion/lib. I still had my old 1.4 Subversion commands and libraries in /usr/bin and /usr/lib respectively. There's various schemes and scripts for copying or symlinking the Subversion 1.5 binaries into the correct places in /usr: Duane Fields' blog, the Lemon Team blog and Apple's Mailing Lists archive are representative.

Well, rather than patch something that was kinda broken, I decided to "use the Source, Luke!" and downloaded the Subversion 1.5.7 source tarballs from Tigris.org. (Be sure to get both the source tarball and the dependencies tarball.)

Once you have the tarballs, building and installing is fairly easy but will take fifteen minutes or so. Unpack both tarballs in the same directory. If you unpack them from the Finder, you should have two directories: "subversion-1.5.7" and "subversion-1.5.7 2". (If you do it from the terminal, they should both unpack into the same directory). One of the directories will contain the dependencies: apr and apr-util (Apache Portable Runtime), neon and serf (HTTP clients) and zlib (compression). Move these directories into the main Subversion source directory and delete the other one.

The INSTALL file in the Subversion directory doesn't make it clear that you need to run the included autogen.sh script to create your configure script. Once you've created configure, run configure --help to see all the build options. Now you can follow the standard Unix configure/make/make install build process.

A couple of gotchas: Subversion is configured to install into /usr/local by default, but to work with Xcode, we need to change that to /usr instead. Also, Neon, the default HTTP client, doesn't build SSL support by default. And since most Mac users don't have their EDITOR environment variable set, it's handy to set the default editor path.

Putting this all together, the Subversion build process looks like this:
cd subversion-1.5.7
./autogen.sh
./configure \
    --prefix=/usr \
    --with_editor=/usr/bin/nano \
    --with-ssl
make clean
make
sudo make install
Tip for TextMate users: create a symlink to the mate command
ln -s /usr/local/bin/mate /usr/local/bin/mate_wait
then change /usr/bin/nano to /usr/local/bin/mate_wait in the script above. (More about the mate command on the TextMate Blog.)

Tip for TextWrangler users: change /usr/bin/nano to /usr/bin/edit.)

Now Xcode is happy with my working copies. So when is Subversion 1.6 going to be supported?

Monday, August 24, 2009

Apple Answers FCC's Questions Regarding App Store/Approval Process

Friday, August 21, 2009, Apple release a statement answering an inquire from the Wireless Telecommunications Bureau requesting information regarding Apple's App Store and it's application approval process.
Apple’s goal is to provide our customers with the best possible user experience. We have been able to do this by designing the hardware and software in our products to work together seamlessly. The iPhone is a great example of this. It has established a new standard for what a mobile device can be—an integrated device with a phone, a full web browser, HTML email, an iPod, and more, all delivered with Apple’s revolutionary multi-touch user interface.

While the release in its entirety is an interesting read there are some main points that are brought up by the FCC, specifically of the six questions posed to Apple most concern the Google Voice application and the relationship between Apple and AT&T.  The last couple of questions deal with the application review process.

One thing that I also noticed what close to the bottom of the statement:
Apple generally spends most of the review period making sure that the applications function properly, and working with developers to fix quality issues and software bugs in applications. We receive about 8,500 new applications and updates every week, and roughly 20% of them are not approved as originally submitted. In little more than a year, we have reviewed more than 200,000 applications and updates.

This is interesting as in the beginning of the statement it reads:
... Most rejections are based on bugs found in the applications. When there is an issue, we try to provide the developer with helpful feedback so they can modify the application in order for us to approve it. 95% of applications are approved within 14 days of their submission.
The one thing that I also took away was that since it's [App Store] launch a little over a year ago, there are more than 65,000 apps for the iPhone and there have been more than 1.5 billion downloads.

Friday, August 21, 2009

iPhone Friday - August 21, 2009

Happy Friday!  Today's set of wallpapers for the iPhone and iPod touch (and I believe the PrĂ© has the same 320x480 resolution - Shhhhhhh!) - are the second installment of the popular american names collection.

Thursday, August 20, 2009

The Android Opportunity

John Gruber writes in his Daring Fireball blog:
They [disgruntled iPhone owners] don’t want to downgrade from the iPhone. They want to upgrade from the iPhone.
Read more about The Android Opportunity and Android Opportunity Addenda

Wednesday, August 19, 2009

Invaluable iPhone debugging help in the Xcode Organizer

Debugging is never much fun. Fortunately, most of the time you can run your program when it's attached to the debugger and get a detailed view into what's going on. Even when the debugger isn't able to give you a good window into the problem, the iPhone SDK provides the uber-handy NSLog() function to do good old fashioned printf()-style debugging.

Sometimes you need to test your code on a real device that's detached from your development system because you're testing out in the field or you're working with the External Accessory Framework and you need use the 30 pin connector to talk to the accessory. Fortunately the Xcode Organizer provides you with some help here.
You've no doubt used the Summary tab to set up your development devices. There's a few more goodies here you might not have noticed (I hadn't until recently). The Crash Logs tab, while not as informative as the debugger, can at least show you the call stack at the time your app crashes, along with method names, file names and line numbers.
The crash log information can be a bit overwhelming if you're not used to it, but it's worth spending a few minutes looking closely at it if you're trying to diagnose a crash.

The Console tab can be just as confusing at first, but shows you not only the NSLog() output from your app but handy system messages as well.
The Console seems to only store a couple of hundred log messages, so don't go crazy with NSLog(), but it can be incredibly handy in narrowing down or confirming the cause of a crash when your device is not connected to Xcode.

Sunday, August 16, 2009

Announcing Hi Ka Flash - Japanese Kana Flashcards

Now available in the App Store, Hi Ka Flash is designed to accelerate your learning of the basic Japanese kana (hiragana and Katakana) using flashcards, quizzes and audio recordings.

Unlike other applications that have you work with either hiragana or katakana, Hi Ka Flash helps you to learn both kana and their romaji at the same time. Using this process you'll find you can distinguish the different characters with greater ease and efficiency.

Hi Ka Flash incorporates both male and female native Japanese speakers pronouncing each of the kana for you. Reading, listening and repeating each kana help reinforce memorizing the characters.

Great for kids, students or anyone learning Japanese. Drop us a line and let us know your experiences and thought on Hi Ka Flash - we look forward to hearing from you!

Click here to see our complete list of apps.

Friday, August 14, 2009

iPhone Friday - August 14, 2009

Happy Friday!  Today's iPhone and iPod touch wallpapers are by request and the first of a collection featuring popular english names.  Cheers

Friday, August 7, 2009

iPhone Friday - August 7, 2009

Hello and happy Friday!  Today's wallpapers is from a study in vector blends.  The monochromatic pallet is a nice and calming blue color with pops of cyan for energy. Enjoy.







Click on the image for the full-size image.  (Touch and hold on the image to save it - iPhone/iPod touch.)

Tuesday, August 4, 2009

The Definitive Guide to iPhone App Market Sizing

Jonathan Wegener sizing up the iPhone application market in his recent blog post, subtitled "So You Think You’ve Got a Million Dollar App Idea". Some interesting numbers from his post:
  • Only 75% of users actually download apps [Pinch Media]
    • The most frequently downloaded free apps reach approximately 30% of devices [comScore]
    • The most frequently downloaded paid apps reach approximately 3% of devices [My calculations - explained later]

Monday, August 3, 2009

Announcing Fridgemags

Don and I are happy to say that Fridgemags is now available for sale in the iTunes App Store.

Fridgemags is a refrigerator in your pocket complete with magnets. Starting with the ABC's and a few extra vowels and consonants you can spell messages and save them to your photo's to email to friends.

With Fridgemags young children can interact with their ABC's and are instantly engaged with and audible, visual and tactile experience. 

We hope you have as much fun playing with Fridgemags as Don and I had making it!  And we'd be happy to hear from you - just drop us a line or send us a picture.  Cheers!

Click here to see our complete list of apps.