Available for senior engagements · Miami, FL

Senior native Android & iOS, shipped to millions.

15+ years of native mobile engineering on Android and iOS — Kotlin, Swift, Jetpack Compose, SwiftUI, Room, SwiftData, Hilt, Combine. Mobile lead on Fortune 500 products that ship every day: Charles Schwab (1.8M+ Android installs), Ameriprise Financial, UnitedHealth Group's Level2, Carnival Cruise Line, Learn to Live, and Octane Fitness. Deep secondary specialty in BLE, IoT, firmware OTA, and embedded Android — the parts of mobile most teams hand off to a contractor.

A peek at one specialty — representative adb logcat from a Dexcom G6 BLE session I'd ship at scale. Most of the day-to-day is the broader Android & iOS work below.

$ adb logcat -v threadtime -s BLE_SCAN:V GATT:V AUTH:V CGM_READ:V FITBIT:V ANT:V chris@level2 ~/android
--------- beginning of main
01-15 14:02:17.884  3421  3421 D BLE_SCAN: startScan filters=[ServiceUuid(F8083532-849E-531C-C594-30F1F86A4EA5)]
01-15 14:02:18.131  3421  3421 I BLE_SCAN: result name="Dexcom G6" addr=F7:2B:A1:E5:11:30 rssi=-72 txPower=4
01-15 14:02:18.388  3421  3488 D GATT    : onConnectionStateChange status=GATT_SUCCESS newState=STATE_CONNECTED
01-15 14:02:18.412  3421  3488 D GATT    : requestMtu(247) → onMtuChanged mtu=185 status=GATT_SUCCESS
01-15 14:02:18.487  3421  3488 D GATT    : onServicesDiscovered svc=3 [1800, 1801, F808...4EA5]
01-15 14:02:18.551  3421  3488 I GATT    : setNotification F8083534(Control) F8083535(Auth) F8083538(Backfill)
01-15 14:02:18.703  3421  3501 D AUTH    : challenge tx=8B sn=8GA01234 → resp=8B verified=ok
01-15 14:02:18.972  3421  3501 I CGM_READ: backfill request lastSeq=0 lookback=180m
01-15 14:02:19.024  3421  3501 V CGM_READ: backfill 24/24 t=−120m mg/dL=142 trend=FALLING crc=ok
01-15 14:02:19.027  3421  3501 V CGM_READ: backfill 23/24 t=−115m mg/dL=138 trend=FALLING crc=ok
01-15 14:02:19.029  3421  3501 V CGM_READ: backfill 22/24 t=−110m mg/dL=133 trend=STABLE crc=ok
01-15 14:02:19.146  3421  3501 I CGM_READ: backfill complete records=24 persisted=Room latency=174ms
01-15 14:02:21.402  3421  3501 E GATT    : onCharacteristicRead status=133 GATT_ERROR retry=1/3 backoff=750ms
01-15 14:02:22.158  3421  3501 I GATT    : retry succeeded handle=0x0027 status=GATT_SUCCESS
01-15 14:02:24.211  3421  3502 I FITBIT  : web-sync user=u_8af2 hr_bpm=68 steps=4812 since=14m
01-15 14:02:42.218  3421  3503 I ANT     : paired Polar H10 deviceNumber=31044 hr=72 rrInterval=832ms
01-15 14:03:56.014  3421  3421 W BLE_SCAN: Dexcom rssi=-91 weak link — queueing live notifs to Room
01-15 14:07:19.642  3421  3501 V CGM_READ: live notify len=9 seq=25 mg/dL=131 trend=FALLING
01-15 14:12:19.811  3421  3501 V CGM_READ: live notify len=9 seq=26 mg/dL=126 trend=FALLING
$ 

One specialty: phones that talk to hardware.

When a project needs the mobile side to integrate with real hardware — wearables, embedded controllers, scanners, sensors — this is the kind of thing I've shipped. The rest of my work is straightforward native Android & iOS at Fortune 500 scale; see the case studies below.

  • BLE · GATT · SDK

    Dexcom CGM

    Real-time glucose streaming

    Level2 · UHG
  • BLE · SDK

    Fitbit

    Activity & step telemetry

    Level2 · UHG
  • ANT+

    ANT+ Heart Rate

    Multi-device HR pairing

    Octane Fitness
  • BLE

    Polar H7 / H10

    Chest-strap HR over GATT

    Octane Fitness
  • BLE · Firmware OTA

    Machine Controllers

    Two-way resistance, speed, calorie data

    Octane Smart Console
  • Embedded Android · NDK

    10" Smart Console

    Touchscreen on 6 commercial machine lines

    Octane Fitness
  • Vendor SDK

    Facial-Recognition Camera

    Identity verification at port

    Carnival SEA_ID
  • Vendor SDK

    Document Scanner

    Passport / ID capture

    Carnival MBARK
  • UDP · Embedded Linux

    Raspberry Pi

    Low-latency synchronized audio

    Drive Innovations
  • Android Auto

    In-Vehicle Head Unit

    Drive-in theater control

    Drive Innovations
  • Streaming APIs · TLS

    Real-Time Market Data

    Stocks · options · ETF quotes

    Charles Schwab
  • REST · SQL Server

    UPS Power Sensors

    Voltage trending, service telemetry

    DC Group D-Tech
// Streams glucose notifications from a Dexcom CGM over GATT.
suspend fun streamGlucose(device: BluetoothDevice) = callbackFlow {
    val gatt = device.connectGatt(ctx, false, object : BluetoothGattCallback() {
        override fun onServicesDiscovered(g: BluetoothGatt, status: Int) {
            val cgm = g.getService(CGM_SERVICE) ?: return
            val measurement = cgm.getCharacteristic(CGM_MEASUREMENT)
            g.setCharacteristicNotification(measurement, true)
        }

        override fun onCharacteristicChanged(
            g: BluetoothGatt,
            c: BluetoothGattCharacteristic
        ) {
            trySend(GlucoseReading.parse(c.value))
        }
    })

    gatt.discoverServices()
    awaitClose { gatt.close() }
}
// Core Bluetooth — subscribe to the CGM measurement characteristic.
extension CGMSession: CBPeripheralDelegate {

    func peripheral(_ peripheral: CBPeripheral,
                    didDiscoverServices error: Error?) {
        peripheral.services?
            .first { $0.uuid == .cgmService }
            .map { peripheral.discoverCharacteristics([.measurement], for: $0) }
    }

    func peripheral(_ peripheral: CBPeripheral,
                    didUpdateValueFor characteristic: CBCharacteristic,
                    error: Error?) {
        guard let data = characteristic.value else { return }
        stream.send(GlucoseReading(data: data))
    }
}

01 — Career

Fifteen years. Ten companies. One discipline.

Leadership and hands-on shipping across healthcare, fitness IoT, Fortune 500 fintech, maritime, and embedded Android. Highlighted rows powered production BLE / hardware integrations.

  1. Director
    INDUS Innovation Labs
    Leadership
  2. Acting CTO
    Neuroregenesis
    CTO · AI
  3. Senior Android Developer (Lead)
    Carnival Cruise Line
    Maritime · Offline-First
  4. Senior Android Developer
    Drive Innovations
    Android Auto · IoT
  5. Lead Mobile App Developer
    Learn to Live
    Behavioral Health
  6. Senior Android Developer
    Sleep Number Corporation
    Retail
  7. Mobile Lead Developer
    UnitedHealth Group R&D
    Healthcare · BLE
  8. Android Development Lead
    Octane Fitness
    Embedded · BLE · CES
  9. Android & iOS Freelancer
    Cerberus General — Schwab · Ameriprise · DC Group
    Fintech · Full-Stack
  10. Web Developer · Consultant
    Now Data Inc. · Independent
    Early career

02 — Case studies

Specs of shipped products.

Each card below is a production product — live on the App Store, Google Play, or commercial embedded hardware.

01

Level2

UnitedHealth Group R&D

Years
2017 — 2020
Role
Mobile Lead · Android & iOS
Hardware
Dexcom CGM · Fitbit
Scale
230K+ members · 27 states
  • Level2 app dashboard showing real-time glucose and activity data
  • Level2 app glucose trend chart from Dexcom CGM integration
  • Level2 app member coaching screen

Problem

UnitedHealth Group needed to stream real-time biometric data from medical-grade wearables to 230K+ Type 2 diabetes patients — with zero data loss, even when connectivity disappeared.

Solution

Architected BLE + SDK-level integrations with Dexcom CGM and Fitbit from scratch. Built offline-capable pipelines so glucose readings were buffered, deduplicated, and re-synced to the clinical coaching backend.

Result

Level2 became UHG's flagship billion-dollar digital health initiative. 73% of eligible participants achieved clinically meaningful A1C improvement — average 1.4 point reduction.

02

Octane Fitness Smart Console

Octane Fitness (acquired by TRUE Fitness)

Years
2014 — 2017
Role
Android Lead
Hardware
Embedded 10" console · BLE · ANT+ · Polar
Scale
$500M+ equipment sales · CES-featured
  • Octane Fitness Smart Console home screen
  • Octane Fitness Smart Console workout metrics via BLE
  • CROSS CiRCUIT video coaching on Smart Console
  • Octane Fitness embedded console running Android

Problem

A 10" embedded Android touchscreen on six commercial machine lines (XT-One, ZR8000, Lateral X, XR6000, XT3700, XT4700) needed to control fitness hardware in real time, deliver firmware updates, and stream media — under daily gym load. The existing Angular hybrid stack could not keep up.

Solution

Migrated to fully native Android (Kotlin/Java + NDK). Authored BLE libraries from scratch for real-time two-way machine control — calories, distance, speed, resistance, heart rate. Built the OTA firmware pipeline, ANT+/Polar HR support, CROSS CiRCUIT video coaching, and Wi-Fi/Ethernet networking.

Result

The Smart Console shipped across gyms, YMCAs, universities, hotels, and military facilities worldwide — powering $500M+ in equipment sales. Featured at CES; still the flagship console in production today.

03

Schwab Mobile

Charles Schwab (Fortune 500)

Years
2012 — 2018
Role
Lead Mobile Developer · Android & iOS
Domain
Real-time trading · Banking
Scale
1.8M+ Android installs
  • Charles Schwab mobile app trade ticket
  • Charles Schwab interactive charting with indicators
  • Charles Schwab account dashboard

Problem

Millions of retail investors and banking clients needed the full desktop trading experience on mobile — real-time stocks, ETFs, options with live market data, mobile check deposit, Zelle, and bank-grade auth. Latency and trust were non-negotiable.

Solution

Built the full trade ticket (market / limit / stop / stop-limit), streaming quote engine, interactive charts with technical indicators, account dashboard consolidating internal + external accounts, and the banking stack: camera-based check deposit, Zelle, bill pay. Biometric login and encrypted transport throughout.

Result

1.8M+ Android installs. Live App Store and Google Play product serving millions of clients at a firm managing trillions in assets.

04

Ameriprise Financial

Ameriprise Financial (Fortune 500 · rank 289)

Years
2012 — 2018
Role
Lead iOS Developer
Domain
Wealth management · Advisor collab
Scale
~$12B annual revenue firm
  • Ameriprise Financial iOS account dashboard
  • Ameriprise Total View external account aggregation
  • Ameriprise secure document collaboration

Problem

A wealth-management app for a client base ranging from everyday investors to high-net-worth clients. Required secure advisor collaboration, e-document signing, strict financial-compliance data handling, and a UX simple enough for non-technical users.

Solution

Native iOS build: account dashboard across cash, investments, credit, and insurance; Total View external account aggregation; financial goal tracking; secure advisor document collaboration; Message Center; bill pay; check deposit; e-signing. Full SSL, session management with auto-logout, encrypted storage.

Result

Live on the App Store, actively maintained. Core client touchpoint for a Fortune 500 firm with ~$12B annual revenue and 12K+ employees.

05

Carnival Shipboard Apps

Carnival Cruise Line — world's largest cruise company

Years
2024 — 2025
Role
Senior Android Lead · Team of 5
Hardware
Facial-recognition camera · Document scanner
Scale
20+ ships · millions of passengers / year

Problem

Three mission-critical Android apps — SEA_ID, MBARK, EZ Board — had to process thousands of passengers daily on unstable ship networks. A dropped Wi-Fi signal during boarding could not be allowed to stop the line.

Solution

Led a distributed team of 4 Android engineers + 1 QA. Architected offline-first data sync so all three apps fully functioned without connectivity. Integrated facial-recognition cameras and document-scanning hardware via vendor SDKs for automated identity verification.

Result

Deployed across 20+ ships carrying millions of passengers annually. Zero-failure boarding; core of Carnival's shipboard operations infrastructure.

06

Learn to Live

Learn to Live — behavioral health CBT

Years
2021 — 2022
Role
Lead Mobile App Developer
Domain
HIPAA-aware PHI · Remote team
Scope
Native Android + iOS from scratch
  • Learn to Live CBT app home screen
  • Learn to Live CBT app therapy module

Problem

A web-only CBT platform for depression, anxiety, insomnia, and substance use had to extend to native mobile for employer, health-plan, and university partnerships. No mobile coding standards, no CI/CD, and a fully-remote team.

Solution

Built both apps from scratch. Biometric authentication for daily engagement, deep linking from email / push into specific therapy modules, and session management for PHI. Stood up Azure CI/CD and coding standards for the remote team.

Result

Shipped to the App Store and Google Play. Nationwide rollout across employer, health-plan, and university channels.

07

DC Group D-Tech

DC Group — UPS critical-power maintenance

Years
2012 — 2018
Role
Full-Stack Lead
Surface
Customer + Technician Android · C# APIs · SQL Server · Maps web
Scope
US · Canada · Europe
  • DC Group D-Tech PowerTools platform hero graphic
  • DC Group D-Tech customer dashboard showing UPS equipment status
  • DC Group Google Maps Account Manager web app

Problem

DC Group needed one platform tying together UPS customers, field technicians, and account managers. Customers wanted 10-year maintenance budgeting; technicians wanted on-site report upload; managers wanted map-based site oversight.

Solution

Owned the whole stack: customer + technician Android apps, C# ASP.NET web-service APIs, SQL Server database, and a Google Maps Account Manager web app. Equipment dashboards, maintenance planning, voltage trending, and real-time sync across all three user types.

Result

Deployed across DC Group's enterprise customer base, contributing to a 98% customer satisfaction rate. Core of the PowerTools Suite today.

03 — Contact

Let's build something real.

Open to senior Android / iOS / BLE-IoT roles, CTO-level product ownership, and focused consulting engagements.