Archive for May, 2009

First App Submission

I just submitted AppMobi’s first product to the App Store.

We were looking for a fairly simple app to use as a learning experience. After toying with a few ideas, we ended up settling on a puzzle game that my son and I initially wrote during “take your kid to work day.” What started as a simple slide puzzle grew a number of features including tile spinning, image importing, picture taking, and more. Here’s the description from the app store:

SpinSlide is an enhanced iPhone version of the little plastic “15 sliding tiles” puzzle. The object of the game is to get the tiles in 1-15 order by sliding them, using the one open tile space.

But SpinSlide adds a whole new dimension to the simple “15″ puzzle …

Unlike the classic game, SpinSlide pieces also rotate when shuffled. Finding their correct orientation is easy when the tiles are numbered, but SpinSlide lets you create challenging picture puzzles from our provided library, from your camera roll, and even by taking a photo.

To start, choose a puzzle, then shake your iPhone or Touch to jumble the pieces. Simply move the tiles with your finger. You can move a row of tiles by sliding the end tile.

To rotate a tile, tap and hold on the tile and it will “zoom” under your finger. Rotate your finger clockwise or counterclockwise and the tile will rotate as well. Let go and the tile will drop back into the puzzle. You can also rotate the piece after it zooms by touching the screen with another finger and moving the finger the way you want it to rotate.

Since most games are played during limited spare time, SpinSlide lets you determine how hard you want the puzzle to be. A simple numbered puzzle takes 3-5 minutes to solve, and one of our un-numbered hard puzzles can take as long as 20 minutes for the skilled player.

There are a ton of “me-too” slider puzzle games in the App Store, some priced higher than SpinSlide. SpinSlide brings the sliding tile puzzle to a whole new level with features like spinning tiles, built-in puzzles from easy to extremely hard, and the ability to use your own photos and drawings for puzzles. You’ll find SpinSlide to be an app that you enjoy playing over and over again whenever you have a few minutes to entertain yourself with a brain exercising puzzle.

And some screenshots:
Typical Gameplay Solved Number Puzzle Solved Custom Photo Puzzle These numbers can be hidden Options screen

Now it’s just a matter of waiting for Apple approval of both the SpinSlide application and AppMobi’s contracts. We’ll see which comes through first.

Tags:

Installing AdHoc Applications on the iPhone

If you’ve received an AdHoc iPhone application (a file with a .app extension) and associated provisioning file (a file with a .mobileprovision extension), follow these simple steps to install it on your iPhone.

  1. Connect your iPhone or iPod Touch to a computer with iTunes installed.
  2. Launch iTunes and switch to the Applications section of the Library
    iTunes Library Application Section
  3. If this is your first install of an app
    1. Save the provisioning file to your desktop…
      Saved Provisioning File on Desktop
    2. and drag it into iTunes
      Dragging the provisioning file into iTunes Library
  4. Save the application to your desktop…
    App saved on Desktop
  5. and drag it into iTunes
    Dragging the app into the iTunes Library
  6. Select your to your iPhone or iPod in the Device section in the left column of iTunes; then go to the Applications tab.
    iTunes Device Applications Tab
  7. Make sure you’ve either selected “All Applications” or that the checkbox next to the new app is selected.

  8. Click “Sync”
  9. Enjoy!

Tags: ,

A Not Entirely Accurate History of Programming Languages

James Iry has posted A Brief, Incomplete, and Mostly Wrong History of Programming Languages, a hilarious look at the development of programming languages over the years.

Some of my favorites:

On C:

“1972 - Dennis Ritchie invents a powerful gun that shoots both forward and backward simultaneously. Not satisfied with the number of deaths and permanent maimings from that invention he invents C and Unix.”
~ James Iry A Brief, Incomplete, and Mostly Wrong History of Programming Languages

On Objective-C:

“1986 - Brad Cox and Tom Love create Objective-C, announcing "this language has all the memory safety of C combined with all the blazing speed of Smalltalk." Modern historians suspect the two were dyslexic.”
~ James Iry A Brief, Incomplete, and Mostly Wrong History of Programming Languages

On LiveScript/JavaScript/ECMAScript:

“1995 - Brendan Eich reads up on every mistake ever made in designing a programming language, invents a few more, and creates... JavaScript”
~ James Iry A Brief, Incomplete, and Mostly Wrong History of Programming Languages

Visit his blog to read more.

Detecting Memory Leaks in the iPhone Simulator

Selecting executable in XCode
There are a number of useful debug flags for the iPhone that can be set in the environment. To access these settings, select your executable from the Groups & Files pane in XCode, then press ?I or select Get Info from the context menu.

Go to the Arguments tab and add the following entries into the “Variables to be set in the environment” box:

  • NSAutoreleaseFreedObjectCheckEnabled
  • NSDebugEnabled
  • NSZombieEnabled

Set the value for all each to YES.

Your settings should now look like:

Executable arguments settings

You may also want to set NSHangOnUncaughtException=YES. Additional useful debugging tips can be found in this thread.

Edit: CocoaDev has additional NSZombieEnabled tips, and notes that you may not want to leave this enabled all the time, especially if your application churns through a lot of objects, as the memory never gets freed. The fact that your code is running on a desktop or laptop system instead of the phone helps a lot here, so this is probably a lot less of a concern than for a desktop application. They also provide instructions for setting these flags in your .gdbinit using:

set env NSAutoreleaseFreedObjectCheckEnabled=YES
set env NSDebugEnabled=YES
set env NSZombieEnabled=YES

Tags: