Recent projects for mobile devices
updated: January 2012


For the past 2+ years I have been working mostly, with some exceptions, on mobile device projects. Most of these have been for Apple's iOS (iPhone and iPad), but there were also a couple for Android and Nokia (Symbian). These projects have ranged from physics simulations to kids' games, to business networking apps, to image processing, to more involved animations and games. At present, there are at least 9 apps up at the iTunes store that I wrote entirely or worked on, and 1 at the Android marketplace. I have also worked on other projects which contributed to apps which now may or may not be up at the iTunes store under some other name. A few of these projects are shown below.

My latest project was an iPad game/book involving magic and western mythology which required multi-layer sprite animation, "on-the-fly" image and scene generation, and a multi-view "popup" activity framework that operates in all 4 pad orientations. This app is currently at iTunes for free for a limited time:

The only app vended under my own name is a free physics simulation that is very "math heavy". It is also one of the few apps that uses the standard Apple UIKit user interface widgets. Most of the work I do for clients involves the creation of a custom, non-standard, immersive user interface, where I make all the widgets. However, the Nbody app makes extensive use of the standard widgets:

The next app consists of many screens which are navigated to by custom controls. Some screens comprise personality tests (with custom slider widgets), while others present images and text information. A core feature of this app is that the content (tests and text info) is specified by extensible configuration files (provided by the client) which do not require any re-programming of the app. This is a common feature of many of my apps: the ability to extend or change the content without re-programming or interaction with the programmer. Note that this does not contravene Apple's decree against "dynamic" apps, since all the content is specified at compile-time, and the app bundle is static once installed on a device.

For this next app, I did separate iPhone, iPad, and Android apps. I think version 1.00 at iTunes was also separate apps, but since then they appear to have merged the two together, which is good, since they share much of the same code. This app makes extensive use of network communications (HTTP), location services, and access to device logs and other information. The app automatically syncs with a remote server, sends data, and responds to commands. The Android app can do all this in the background continuously, without a foreground Activity UI, although the iOS app must rely on recurring location updates in order to operate in the background. I also wrote the first version of a web server program (in PHP) which allowed multiple devices to log in and interact with a database, and multiple administrators to peruse the database and send commands to any device. The iOS app also responded to Apple Push Notifications, which could be sent from the admin website. I also did a Nokia (Symbian) prototype app, but I don't know what became of that, now that Nokia has abandoned Symbian for Windows Mobile.

The next series of apps are similar games. They all share code for multiple layers of sprite animation, allowing both movement and alteration of images, and user interaction and sounds in each layer. Various "managers" allow the creation of many random independent sprite groups (such as moving clouds and numbers). A key feature of this series of apps is that it can be extended by the client with new sets of artwork to create different games around a central theme, without re-programming. I also did an iPad version of these games, which combined the features of both. The iPad app also incorporated several new Game and Animation classes and derivatives which could be programmed and tested independently of one another, and then migrated to other apps.


For the same client, I also created an extensible interactive book app, which makes use of multiple layers of interactive animation and page transitions, sounds for controls, animations, and word reading, and is configurable and extensible by the client without reprogramming. It is currently in review.

The next two apps are fairly simple. The goal was to migrate several games that already existed at the client's website, and which were programmed in Adobe Flash (which does not run on iOS). A simple set of layered animation routines was created, and these became the basis for the more complex animations shown in the apps above. However, for these apps I did have to provide the use of a custom font (before they were supported by iOS), and all device orientations (again, before view rotation was supported by iOS), which required the creation of "on the fly" images using several coordinate transforms. Also, email composition and sending from within the app, website access, and connection to Facebook were provided.


The next app was done for a client who sells optical test equipment (but I can't tell you who!). It hasn't appeared at the iTunes store, but may be distributed as part of their custom systems. It is essentially an eye test chart, but with some interesting enhancements. It shows the standard Snellen letters and symbols, and the Lea symbols, and the "tumbling E's". However, the standard image resizing code on the iPhone did not do a good job of creating the various glyph sizes (especially at small sizes), so I wrote a stand-alone program on the Mac to create exact (down to precise 5x5 pixel images) renditions of all glyphs at different sizes by using image sampling and Gaussian interpolation (similar to what I did previously for satellite images). An additional enhancement involved creating specific images for the iPhone4's hi-res screen which went below the 20/20 optical limit. BTW: This is why Apple calls the phone4's screen "retina": because it is possible (with extra work) to create images at a resolution that is slightly finer than 20/20 at standard viewing distance (15.7").

The next example is just part of an app that does image distortions (e.g. of a photograph) by using vector fields of flow. There are many possible distortions, and many different variants of each, depending on the parameters submitted to the distortion class. The vector fields and distorted images of a few are shown below. This is similar to the "un-distortion" flow-field mapping I did for a Venus astronomical project previously.

The final example isn't a native app per se, but is a web-app specifically for the iPad (done in HTML5 using the Canvas object). This is a simple sketch app done for a medical client used for eye exams. It allows drawing lines of various widths and colors, text, and dragging several images out of "wells". It works as a "popover" on any web page, and works in all pad orientations. The drawn image can be saved as a PNG, and used by the calling page (to send to a server, etc...).


© Sky Coyote 2012