Resume

I am a passionate problem solver, and I enjoy a challenge. I’m interested in opportunities to create iOS software solutions for businesses that can utilize my programming and technical skills. I have 30 years of experience writing code and designing software for businesses. Recently, I have been working on an iOS app that utilized SwiftUI, async/await and Combine to communicate with an IoT device. I’m interested in using my skills to create software that enhances customers’ lives.

 

Technical Skills

Expert

  • Swift, Objective-C, XCode and iOS development

  • SwitUI, Combine and Modern Concurrency (async/await)

  • Mobile security

  • Server side - Swift, Java, C# and VB.NET

  • RESTful API - JSON and XML

Highly Skilled

  • C++ and C

  • Git/GitHub, GitLab, BitBucket

  • CI CD and Unit Testing

  • Agile/Scrum

  • Jira and Confluence

Proficient

  • AWS - S3, MQTT, Cognito, and API gateway

  • Bluetooth Low Energy (BLE)

  • Kotlin, Java, and Android Development

  • Database Technologies (SQL/RDB)

  • ChatGPT and LLMs

 

Experience

Senior iOS Engineer, Guitar Center - Westlake Village, CA 2023 - Present

I consulted with Guitar Center to build an internal iOS application that allowed store associates to sell gear. The app used SwiftUI, MVVM, and async/await to perform its tasks. The app utilized tap-to-pay (TTP) and barcode scanning to make the customer experience effortless. The app utilized AWS APIs and custom Point of Sale (POS) data that furnished XML requests and responses.

I implemented a task cancellation strategy in the network layer. I also improved the logging by implementing unified logging. I led the tasks to create unit tests for testable code and to harden the app's stability.

Mobile Lead Developer, Bryte - Los Altos, CA - 2022 to 2023

I worked with a small team of mobile, embedded, and cloud engineers worldwide to create a revolutionary IoT device (Bryte Balance Smart Bed). The iOS app is written in SwiftUI, Combine, and Swift’s Modern Concurrency (async/await). It uses Bluetooth Low Energy (BLE) and MQTT to talk to the Bryte Balance Smart Bed.

The app utilizes AWS for APIs, Cognito for identity, and S3 file storage. I helped develop the Quick Firmness feature in the app, which allowed users to change the bed’s firmness. I also helped develop the new feature announcements system to tell users about new features in the app. I maintained and enhanced a macOS app that analyzes logs (XCGLogger) from S3 buckets to verify async behavior at run time. I was responsible for archiving the app and working in App Store Connect to distribute releases via Test Flight and the App Store.

iOS Lead Developer, American Family Insurance - Madison, WI 2015 - 2022

I led a team of 5 developers to build the My Amfam iOS application. The application is written in Swift. We are currently using Swift 5.5. The app uses a series of APIs to give American Family customers a personalized experience. The app allows users to view their policies, pay bills, contact their agents, and change profile information. It has a 4.8 rating with 64.6K reviews in the app store.

The app follows the MVC-N pattern. We use a factory pattern to map JSON into our model objects. We also utilize the Codable protocol to serialize JSON into some of our model objects. The network layer uses closures and protocols/delegates to talk to the controllers. Some controllers use MVVM to handle complicated UI layouts. I’m excited to start implementing async/await in portions of the app.

Our team is in the process of incorporating SwiftUI and more reactive patterns into a mainly UIKit-based app. We recently shipped the payment portion of the app using SwiftUI and the MVVM pattern to allow customers to pay their bills. We used this same pattern to create an auto-payment feature that allows our customers to set up auto-pay. The payment methods feature uses SwiftUI and Combine to combine and secure multiple API calls to add, edit, and delete payment methods.

I created our first SwiftUI/MVVM/Combine app (CL Prospect). It was an internal app for the Commercial Lines (CL) department. The app utilized three APIs (Core Location, AskKodiak, and Google Places) to allow our agents to sell independently. Core Location was used to retrieve the latitude and longitude of the agent. AskKodiak was used to gather data for specific industries. Google Places was used to fill in the description for the company—the MVVM pattern was used to architect the app. The reactive nature of SwiftUI and Combine enables the app to update dynamically and feed the agent data based on their location.

President, Calkins Computer Consulting (C3) - Madison, WI 2001 - 2015

I started C3 in April 2001. My main client has been American Family Insurance for 13 years.

I was responsible for multiple iOS applications (internal and external)—all of the iOS applications utilized backend services for data via JSON or REST XML. The external facing application was upgraded to iOS 8, modified to use ARC, updated to the new Core Location API, and given some additional functionality that interacted with Passbook.

One of the internal iOS apps included an iPad app that consumed enterprise data via Java services with a JSON interface. The other internal app was written in PhoneGap/Backbone for iOS and Android. It allowed the field force to upload photos for a given insurance policy. I wrote a plugin in Objective-C that detects Amfam's VPN by sending ICMP packets to an internal address. The backbone view accesses this plugin and displays messages to the user.

I created an iOS application that predicts the gender of a baby using the Chinese Gender Chart in 2009. The app uses a UINavigationController, multiple UIViewControllers, multi-threading, XML parsing, and animation to entertain the user. The iOS 8 version of this app uses a transition View Controller to engage the user. I’m also developing an iOS/Mac application to aggregate a child’s Facebook, Twitter, and Instagram information into a personalized Baby eBook.

I maintained and modified Java-based web services that return worker information to internal consumers. This service aggregates data from LDAP, DB2, Oracle, and other web services. I was responsible for numerous Java/JBoss applications that utilized the MVC pattern and implemented EJBs, JSP/Struts, and Springs.

I created and maintained multiple data exchange processes that utilized PGP/FTP. The processing was written in Perl. My last data exchange process used XML serialization in MS.NET. It exported and imported data into a model object based on an XSD.

Software Consultant, New Resources Madison, WI 2000 - 2001

Designed and implemented an Internet website for CUNA Mutual. The site allowed clients to customize different information widgets on their web pages.

Gathered requirements, designed and implemented a human resources intranet site for American Family Insurance. The website had a role-based UI (employees, managers, and officers) and utilized worker data stored in PeopleSoft. The website was modified to implement Amfam’s Pay for Performance (PFP) strategy.

Software Consultant, Technium Chicago, IL 1998 - 2000

I consulted with Tunes.com to implement web pages on the Rolling Stone Magazine website. I implemented several web pages that allowed users to listen to previews of songs. Users could search and create lists of their favorite songs. The site was based on ASP/IIS with stored procedures written in SQL Server.

I consulted with General Electric Financial Assurance (GEFA) to create an intranet site that allowed users to search for worker contact information. The website was based on ASP and retrieved data from Oracle using stored procedures.

I consulted with Coregis Insurance Company to create their company website. The website was based on Java and used XSLTs to present the site UIs to different browsers. I wrote the XSLTs for the site.

Senior Software Developer, FRx Software Denver, CO 1995 - 1998

FRx Software wrote accounting reporting software packaged with enterprise accounting software packages (Oracle Financials, PeopleSoft Financials, and Lawson). The UI was written in VB, and the data access layer was written in C++ with direct calls to OLE DB. I worked on the UI and portion of the data access layer.

Education

University of Denver - Master of Science, Computer Information Systems, 1994 - 1996

University of Wisconsin - Madison - BS, Philosophy, 1987 - 1993