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 utilizes 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
Cursor, Claude, and ChatGPT to speed up coding production.
Proficient
AWS - S3, MQTT, CloudWatch, DynamoDB, SNS, Lambda, Cognito, and API gateway
Bluetooth Low Energy (BLE)
Kotlin, Java, and Android Development
Database Technologies (SQL/RDB)
Experience
Senior iOS Engineer, Guitar Center - Westlake Village, CA 2023 - Present
Consulted with Guitar Center to build an internal iOS application that allowed store associates to sell gear. The app uses 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 used AWS APIs and custom Point of Sale (POS) data that furnished XML requests and responses.
I implemented a task-cancellation strategy at the network layer, enhanced logging with unified logging, spearheaded the creation of unit tests for testable code, and bolstered the application’s stability.
I implemented a remote notification architecture in a SwiftUI-based app that allows store associates to alert managers when an item in the cart needs attention. This code utilizes UNUserNotificationCenter, a custom UIApplicationDelegateAdaptor, and AWS SNS to communicate with Apple’s APNS.
I implemented a hardware integration with multiple TCP/IP-connected cash drawer models. This feature utilizes the Network Framework. The cash drawers broadcast UDP discovery packets on the local LAN, which the iOS app listened to. I used AsyncStream from the NWListener to gather these packets. The iOS app used the information from the UDP discovery packet to create a TCP connection and issue commands (open, close, and getlogs). The secured version used AES and a cryptographic key exchange to secure all commands.
Implemented a split-payment solution enabling associates to process transactions across Tap to Pay, cash, and multiple personal line-of-credit cards. Handled aggregation of payment data from disparate sources, including card scanning and validation of required term disclosures for line-of-credit payments.
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 inform users about new app features. I maintained and enhanced a macOS app that analyzes logs (XCGLogger) from S3 buckets to verify async behavior at runtime. I was responsible for archiving the app and managing releases in App Store Connect, distributing them via TestFlight 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. The app uses a series of APIs to deliver a personalized experience to American Family customers. The app allows users to view their policies, pay bills, contact their agents, and change profile information. It has a 4.8 rating based on 64.6K reviews on 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 communicate with 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 for adding, editing, and deleting 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 agent's latitude and longitude. AskKodiak was used to gather data for specific industries. Google Places was used to populate the company description—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 which used 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 an Objective-C plugin 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 in 2009 that predicted a baby's gender using the Chinese Gender Chart. 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 Spring.
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 let users listen to song previews. 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 its company website. The website was built in Java and used XSLT to present the site UIs across 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 in C++ with direct OLE DB calls. I worked on the UI and a 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