![]() |
I led a team to rewrite a warehouse management app (mobe3 Live) using Swift, SwiftUI, and the latest iOS frameworks. Priorities were fault tolerant, customizable, reliable, and secure. The UI code in Swift communicated with cross platform javascript for the business logic to allow for easy updating. Featured indoor mapping (using IMDF) of warehouses for spatial awareness, native Core Bluetooth control of BLE devices, AR display, heatmap, and tracking movements with CoreMotion. Networking was done with REST and Sockets, and data was formatted in JSON. I accomplished this by reverse engineering the existing Xamarin-based app written in C#, and created a text-to-view translator to expedite the process. I also replaced a third party heatmap library and wrote my own high performance class. |
![]() |
Fitness Metrics SDK I worked on an SDK in Swift which connects to fitness equipment via bluetooth. During an activity, the SDK calculates and produces metrics like GPS location and altitude, speed, power, cadence, peaks and averages, stress scores, etc. The software is fault tolerant when data sources disconnect or produce erroneous values, and activities can be resumed after an unexpected interruption. Resulting data files are uploaded to a backend server. I created a driver using Core Bluetooth to support new devices. |
![]() |
TrueCoach is a SaaS for personal trainers to support remote clients. Key features included an instant messaging component with full multimedia support, delivery of videos to clients, and client feedback back to coaches. As the lead iOS developer, I worked on adding new features to the mobile app, fixed bugs, refactored code, provided assistance to the customer support team, and managed beta testing and releases to over 100K users. Key features I added include offline operation, HealthKit integration, and an Apple Watch companion app. I provided architectural and technical guidance to the mobile team, including supervising development of a new android app. |
![]() |
Lemur is a cross platform product that makes it easy to set up a custom GIS (Geographical Information systems) mapping solution for your enterprise. Easily use a configuration file to create an online or offline mobile app to display your geospatial data and business data on detailed maps with multiple layers. Critigen provided a framework so other developers could simply plug in a sophisticated map view into their own enterprise apps, and also provided a demo app which showcased the features of the SDK. This app uses REST services to retrieve a configuration file (possibly 1000's of lines of JSON), then downloads the required map data and caches everything for offline use if needed. A login is required which provides access to select data sets, and all locally stored data is encrypted. The Esri iOS SDK is used to display the maps and data points. This app was architected to use any other mapping solution such as Google or Apple Maps in the future. A "Views Manager" made it easy to specify custom screens and controls generically so they worked across multiple platforms while still maintaining native look-and-feel. A built-in grammar engine (parser + interpreter) allowed business data to be handled in a variety of ways according to realtime values. I was the sole iOS developer and architect on this project. I needed to catch up to and then stay in sync with windows and server side changes. On the Windows side, third party libraries were used for JSON parsing, encryption, ZIP compression, and the grammar engine, but direct replacements did not exist for iOS. In most cases I developed native implementations myself which did not rely on third party code. The grammar engine was particularly challenging. The SDK was developed in Swift, with an Objective C interface to access iOS encryption services (this required a deep dive in to cryptography for me). As the core SDK was packaged in to a framework, that imposed some coding restrictions you don't see in a regular app. Over time I built a battery of unit tests and included hooks to expedite debugging and test, both for myself to use during development and to help the QA testers. I created a logging library which supported multiple priority levels, color coded plain text files using unicode, and a max file size limit which disposed of the oldest logs. Some customer data sets were quite complex, with over 100 map layers. Performance was always a concern which required judicious use of background threads and the ability to cancel long operations. A file download manager was developed to allow both automatic file updates and on-demand updates of critical files depending on network connections. The Lemur team was fully remote, work from home. Development of the iOS product required interfacing with the Windows and server teams, as well as marketing and QA. I sometimes needed to communicate directly with customers to provide tech support, often in far away time zones. I also needed to get familiar with the Windows .NET code written in C# to duplicate functionality. At times, I was even brought in to write new code on the windows side. |
![]() |
Business VOIP Phone App
This app presented a standard telephone interface with voice mail capability, using a properietary network-based VOIP for communication. I was a contractor on the iOS team tasked to develop the SIP (session initiation protocol) portion, as well as some UI work. The app was primarily Swift, but I needed to interface to an Objective C library and create a Swift interface for it. |
![]() |
WiFi Connected Appliance This app allowed the user to control a water heater which was connected via WiFi. You could change the temperature, recirculate water for instant-on warm water at the faucet, and collect diagnostics information for troubleshooting and maintenace of the appliance. This IoT (Internet of Things) project required fail-safe operation, heavy security and authentication, and fault-tolerance if connectivity failed. The challenging part of this project was interfacing with multiple teams based in multiple countries. Good communication was key. I was the sole iOS developer and I worked in step with the Android developer, and other teams included a server team, firmware team, hardware manufacturer, and IoT firmware team. No parts of this product was really complete when the app development was going on, so things were in a constant state of flux. I worked closely with the firmware engineer to debug the programming interface, and fortunately I have had experience with doing this in the past. This app was written in Objective C. |
![]() |
VictorOps DevOps Tool This app was a tool used by on-call DevOps teams to communicate and troubleshoot server problems in real time. This app would alert users, schedule on-call teams, provide full chat, and included a contact database. I inherited a working iOS app written in Objective C and was responsible for adding new features, updating the app to use best-practices and new language features, and fixing bugs. I managed all the releases to the public, which occured monthly, and made sure we never brought down any customers who were doing mission-critical work. A socket connection was maintained while using the app to reduce latency of real time updates and chats. Data was cached for offline usage to review history. Push notifications were used heavily to alert users, and I implemented custom payload notifications, and built a Today widget. |
![]() |
Training Manager This Swift app is used to track all training records and certifications of a fire department. This was my own design and was tweaked after a lengthy TestFlight beta test period using agile methodology. Easy and fast data entry was a priority, as well as maintaining data integrity at all times as these records are vital. My app replaced a much more expensive commercial product in the pilot department, and saved them 100+ hours of labor each year. Reporting is very robust, allowing filtering on multiple criteria and instant generation of a variety of reports. Data can be exported to any connected source using the standard Document Browser interface. Google Firebase is used for cloud-based data storage and authentication of users, and shares personnel data with another app (Incident Manager). The app had to function in areas with spotty internet coverage. The app updates in real time with multiple concurrent users making changes. Authentication and log in supports different access levels, and an audit procedure was implemented with record signing. Reports can be shared via the usual methods including AirDrop and AirPrint. |
![]() |
911 Locations
This app uses GPS tracking to provide situational awareness for emergency responders. This app was my own design and is used during 911 incidents. Nearby locations, such as hydrants, locked gates, and special hazards, can be viewed in a list or on a map. The app operates in the background and provides real time alerts. This app, written in Swift, features a variety of iOS technologies: in-app purchasing, Apple maps, GPS, address auto-complete, forward and reverse geocoding, photo album access, URL schemes, input accessory views, push notifications, file import using Document Browser, and even comes with a Messages App Extension. GPS tracking in the background was fine tuned to work well in a moving vehicle while conserving battery usage and avoiding repeat notification of nearby data points. Photo import will recognize photos encoded with a latitue/longitude and use those coordinates. The Messages App Extension is used to reformat 911-related text messages, launuch th emain app and initiate map tracking, and open Apple Maps for driving directions. The app was upgraded to support both Apple Maps and import of a GIS mapping database. GIS maps are rendered with the Esri mobile SDK, and map layers can be imported and hidden/shown. Custom map layers can be created and blended with built-in layers. The map can auto zoom to the current location or 911 destination, and provides a tool to measure actual distance with a ruler. |
![]() |
Baseball Pocket Coach
This was written many years ago when I was a little league baseball coach. It has proven to be so popular that I have upgraded it several times to keep it current. Originally written in Objective C, I have added Swift code to it and even extended Obj C classes with Swift extensions. This app makes heavy use of Core Data and I have updated the schema several times. |
![]() |
This app is used by countless professional and amateur athletes and coaches to track and analyze workouts. Multiple statistics such as pace, calaories, distance, etc. are tracked and results are recorded and displayed in graphical reports. As a consultant I was brought in to fix critical bugs in a very large existing code base produced offshore. With 100K+ active users, this was a top priority and needed to be completed quickly without introducing new bugs. The XCode workspace was quite complex with many targets and third party libraries, and the Objective C code base had to be understood and debugged in a matter of days without access to the original development team. |
![]() |
Blockbuster Video The Blockbuster Video iPhone app went through various incernations and was handled by different development teams. For a 3 month period, I led a team of iOS developers to rewrite the app from scratch to use an alternate video server platform and new UI redesign. We met our objective to demonstrate a working prototype, and then I was reassigned to fix bugs in the Android version. We worked closely with Samsung to get that app preinstalled in a new phone model that was beging introduced. Throughout this process I collaborated with Blockbuster and Samsung teams based in other time zones. |
![]() |
Wildland Toolkit was my first iOS app published in 2008. It was ported from my own Palm Pilot app which dated way back to 1999 and was featured in a Denver TV News feature story. This app does some very math-heavy calculations to predict wildland fire behavior (intensity, flame length, rate of spread, etc.) and those calculations are written in C++. As the app got updated over the years, it is now a hybrid of C++, Objective C, and Swift, and SwiftUI code. It also does some GPS tracking, and contains an embedded PDF document with app bookmarks that open specific pages. Since 2008, I have sold a dozen or more apps at any given time under the Peakview Software banner. Click the link above to them all on the app store. |
![]() |
EMT Academy I created a family of training apps for emergency responders: EMTs, Paramedics, Firefighters. I've rewritten the code recently in pure SwiftUI and SwiftData, and added CloudKit to show the difficulty of each question based on other users results. |
![]() |
DM Copilot As a learning exercise, I created an app for role playing gamers to facilitate game sessions. This was my first app to use an auto renewing subscription model. The app can make searches to a public API to bring in game content. |