Here are a few projects I’ve worked on:

  • Team lead on firmware for a sleep-tracking smart bed called Beautyrest Sleeptracker. For that project, I helped choose a chipset, designed the architecture for the firmware, and lead a small group of engineers in development of the firmware for the device, and for two attached sensor devices. I worked closely with a server team, so that the web-enabled device could exchange data and settings, and with the mobile app team so that it could also be controlled and configured from iOS and Android apps. The main technologies involved were C++, Sqlite, Linux, and lighthttpd.

    Here is the newest version of the product. The original version was built in to an adjustable bed.

  • MotionX Dice. I lead the development of the very popular MotionX Dice app. Shortly after the launch of the iPhone, MotionX Dice was one of the very first available apps. Users could roll various dice, and even create and share their own custom made dice using images from their phone. It was written in a combination of Objective-C and C++.

    Users could create and share their own custom dice. Rolling used motion controls and a very realistic physics engine.

  • MotionX Drive. In the years just after the iPhone launched, before both Google and Apple delivered their highly popular and free turn-by-turn navigation apps, I was one of four engineers who developed the wildly successful MotionX Drive iOS app in Objective-C and Objective-C++. On this project, I worked a great deal with the maps, retrieving and managing tile data from the cloud, and rendering those tiles both in 2D using CoreGraphics, and 3D using OpenGL. I also worked on integrating speech synthesis, handling user subscriptions, UI / Views, and other parts of the product. I also worked on the Android version in Java, bringing up the IDE and debugger for the team, and implementing the map screen which used JNI and OpenGL.

    A very cool and wildly successful app. Until Apple and Google made theirs available for free.

  • MotionX Fly. Fly was a pretty sweet iOS game with motion controls in which you flew your plane through a campaign made of a series of obstacle courses, trying to fly perfectly through the center of hoops, tag balloons worth points, and avoid floating mines. It also included a level editor, so that you could make your own levels and share them with friends. Sadly, this project was canceled just before it was finished.
  • “ScottyRF”, a fitness tracking wrist band outfitted with a small LED screen. On this project I wrote a graphics driver based on the spec for the LED controller chip. Additionally, I wrote a simulator that ran on the Mac desktop, so that we could develop on the desktop and reduce the need to deploy and debug on the actual hardware. I also wrote a tool which would take screens defined in XML and generate optimized C code and data, so that our screens could be defined in XML and then just linked into the executable to be burned on to the ROM in a very space efficient way.
  • “Sleep Lamp”, a sleep tracking lamp that uses passive infrared sensors on your nightstand to track your sleep. I was brought on to this project about a month before they were going to demo it, and the lead engineer at the time was spinning his wheels. I became the new lead engineer and I scrapped the demo device, it made no sense to develop a separate device just for demo, and instead quickly developed the firmware for the real device, and included a demo mode that could be entered by holding certain buttons. It was developed in C on an Arm Cortex M0 microcontroller.

    Here you can see me at the computer, working on the lamp (seen next to my right hand) along with my coworkers, who were keen on what progress we had made!

  • Unself, an iOS app written in Swift that allowed coordination, tracking, and management of volunteer work, primarily for students. I was responsible for many of the views in the app, the data for which was queried from a Realm database locally on the device, and then synced to a server running PostgreSQL with RESTful services implemented in Go.
  • “Trainer” (alias) an iOS app that allows trainers and physical therapists to create detailed workout and weight-training plans and then assign those plans to clients, and receive updates and graphs of the progress of those plans, as well as chat with clients and answer questions about the plans. I implemented many sections of the app, including the workout flow itself, which walks clients through exercises, showing them how many to do, at what weight, for how long, etc, and automatically progressing until the workout is finished. Workout results were then recorded in the local database, to be synced to the server database using RESTful APIs. I also implemented the graphing views using CoreGraphics, allowing clients and trainers to view progress on reps and weights as their training program went on.
  • The “MCL” Media Communications Library. The MCL was a layer of embedded C++ code that was designed so that phone manufacturers such as Samsung, Sanyo and others (In the days before smart phones) could download, send, and display media messages which included pictures, animations, etc. It was designed to be as time and memory efficient as possible, for an era in which phones were decidedly *not* the miniature supercomputers in your pocket that they are today. The MCL operated based on hierarchical state machines which used co-operative multitasking to carry out work.

    A demonstration of viewing a photo on a phone in an era before smart phones. Our company (LightSurf) pioneered this technology.