Recent projects for web and mobile devices
Updated: March 2015
For the past 5 years I have been working mostly, with some exceptions, on mobile device and web 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 15 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 most recent web app was for online map creation. An automated process was
developed for converting Adobe Illustrator files (exported as SVG) to pure
framework (on the client) which manages the creation, drawing, and editing of
lines, polylines, paths, rects, circles, text, and other interactive graphical
elements within an HTML Canvas. Maps can be scrolled and zoomed, and different
features (water, land masses, countries, cities, various geographic elements,
then be extracted as PNG files and up/down-loaded to/from the remote server as
image files and saved on the user’s local machine.
My most recent device app was an extensible interactive book app (not an iBook), 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. Actually, the coding for this
app was done a year or so ago, but it was only recently that the client completed the
artwork and submitted it to Apple. There are currently two titles (separate apps) that share the
same code, but have different content. Many others are possible.
Before that I did, mostly for fun, my own simple math "toolkit" for creating data, performing
calculations, and displaying plots, etc... using a "box and wire" approach to layout. You can
see more at the SCToolkit for the iPad page.
My next recent client project was an iPad timeline constructor app for a repeat client
who makes other educational and historical products. Although somewhat simple
in the first version, this app allows you to create a linear timeline anywhere
from 1 billion BC to 1 billion AD, and to populate it with events that span one
or more days within that timeline. Each event can have a range of dates, an
imported image, and a text description that appears in a content pop-up view.
Thumbnail images of events are shown attached to the timeline, and they can be
moved or resized by dragging, while the timeline can be zoomed and scrolled to
show detail. Images can be imported from the image library or the pasteboard
(e.g. from Safari). Large images can be resized on import. The entire
timeline can be exported as a series of tiled images at the current zoom
factor, plus the text and images for each event, either to the image library,
as email attachments, or to folders on the device that can be copied to a
computer via iTunes. The app design is based on an animated "folder" theme,
with music and button sounds. I did versions v1.0, v2.0, and v3.0. Currently at iTunes:
My previous project was an iPhone app for a group of local Colorado-based
businesses that is similar to a programmable never-ending discount coupon book,
and a remote (web-based) content-management system for automatically adding,
editing, and removing content (text and images) from all apps that contact an
update server at regular intervals. The app has information about several
businesses compiled in at deployment time, but can extend and modify that
content indefinitely by syncing with the server (via HTTP). Information on the
server can be curated by the client in an easy and secure way from an
(i.e. Ajax) to contact PHP programs on the server in the background. I wrote
all PHP code for the servers. Currently at iTunes.
The project before that was a simple and cute iPad educational "game" that lets you
take a picture of yourself, or someone else, and then places that photo behind a
graphic of a historical figure, showing only your face. You can align the photo
by dragging and zooming, and can save the composite to the device. Then you
take a little quiz about the historical figure. You can email the composite
image and quiz, or post it to your Facebook wall. This app is currently at
iTunes. I also did the version 2.0 development for the client:
The client had this to say: "Great news! KQ TimeTraveler was approved late on Monday and the first day we had 150 sales. We also received 25 comments and 36 ratings - 4 stars!"
Before that 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
using the content from this game were also created:
Another app under my own name is a free physics simulation that is very
"math heavy" like the pad app. It is also one of the few apps that uses the standard Apple
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 (and the client supplies the art). However, the Nbody app makes extensive use of the standard
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.
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
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...).