Hi, I'm Udani πŸ‘‹

I build to learn.
I learn to build better.

I'm a senior mobile engineer who builds native iOS and Android products β€” mostly Swift and SwiftUI, with solid ground in Kotlin and Jetpack Compose. I like learning a platform by building with it, and sharing what I find along the way.

  • iOS & Swift
  • Android & Kotlin
  • AR / Spatial
  • AI / ML

The journey

How the engineering interests evolved, one chapter at a time

What I'm exploring now

EXPLORENow

Apple Intelligence & App Intents

Currently exploring on-device intelligence through Apple Intelligence and App Intents, alongside deeper AI-assisted engineering workflows.

Teaching & sharing

SHARE11/2025

Visiting Lecturer, Colombo International Campus

Delivering undergraduate modules in Programming and Software Engineering, and guiding students on project implementation, design patterns, and career readiness.

Swift Concurrency / AI-assisted development

EXPLOREOngoing Β· approximate

Swift Concurrency + AI-assisted workflows

Leaned on Swift Concurrency and Xcode Instruments for responsive UI, and integrated Cursor and Claude Code into the development lifecycle for scaffolding, test generation, and refactoring β€” without losing architectural discipline.

Technical leadership

WORKOngoing Β· approximate

Senior Software Engineer / Lead Mobile Engineer

Lead mobile technical decisions across projects β€” architecture patterns, development standards, and code review β€” while mentoring 10+ junior developers.

AR / ML / spatial experiences

EXPLOREOngoing Β· approximate

ARKit visualization & Core ML tagging

Wrapped ARKit in UIViewRepresentable to bring AR furniture visualization into SwiftUI, and used Core ML + Vision to auto-tag and categorize screenshots by content.

Modern Swift / SwiftUI / architecture

LEARNOngoing Β· approximate

Combine-driven MVVM

Adopted Combine for network handling under MVVM, debounced search-and-suggest inputs, and merged multiple publishers with Zip and CombineLatest2 for realtime field validation.

Exploring Apple technologies

EXPLOREOngoing Β· approximate

CloudKit private and public containers

Synced user photos into a private CloudKit container, and built a separate CloudKit-backed library to keep sensitive configuration out of the main app bundle.

EXPLOREOngoing Β· approximate

CoreBluetooth for IoT peripherals

Used Bluetooth 5.0 Low Energy over CoreBluetooth for local, low-latency communication with connected hardware β€” the backbone of RITA's sensor network.

EXPLOREOngoing Β· approximate

Core Data ⇄ JSON synchronization

Built mechanisms to convert Core Data entities into JSON and back, handling nested relationships and keeping local storage and server state in sync without hurting app performance.

Building real products

BUILD2018 β€” ongoing Β· approximate

Architected 20+ native iOS and Android applications

Across delivery and logistics, fintech, IoT, ride-hailing, travel, news, retail, and internal enterprise tools β€” making the architecture, modularity, performance, and platform calls for each one.

Becoming a professional engineer

WORK03/2018

Joined Fixel Digital as a Software Engineer

Started at Fixel Digital (Pvt) Ltd, working across native iOS and Android application development β€” the beginning of 8+ years in mobile engineering.

LEARN2017–2018

BEng Software Engineering, First Class Honours

Completed a Bachelor of Engineering in Software Engineering at London Metropolitan University with First Class Honours.

Where it started

LEARN2015

Higher National Diploma in Software Engineering

Started the HND in Software Engineering at ESOFT Metro Campus, graduating with a Merit in 2017. This is where the fundamentals were laid.

Selected work

A few products that show different sides of the job

Twenty-plus native apps later, these are the ones that best show the range β€” on-device ML, IoT over Bluetooth, two-sided marketplaces, fintech security, and a video player that had to be stricter than usual.

Casser screenshot

Casser

iOS

Photo & screenshot management, organized by what's actually in the image

  • Core ML
  • Vision
  • CloudKit
  • Core Data
The problem
People end up with hundreds of screenshots and no way to find the one they need β€” a receipt, a website link, a travel booking β€” without scrolling through everything.
My role
Built the on-device intelligence layer and the sync layer: tagging, categorization, and getting that data reliably on and off the device.
The interesting part
Combining Core ML and Vision to read content out of an image β€” not just store it β€” so the app can generate tags like "work," "travel," or "documents" automatically.
Engineering / under the hood
Core ML pre-trained models and custom classifiers detect objects, scenes, and patterns in each screenshot; Vision processes the image data. Photos sync to a private CloudKit container, with a separate CloudKit-backed library isolating sensitive configuration from the main app. Core Data entities are transformed to and from JSON to keep local storage and the server in sync, including nested relationships.
Challenges
Mapping complex, nested Core Data relationships onto JSON without losing data integrity, and keeping sync fast enough that it never feels like it's blocking the UI. Scaling CloudKit usage and holding to its encryption and security requirements as the user base grew.
What I learned
Smart tagging is only as good as the sync underneath it β€” the ML model can be perfect and the app will still feel broken if data doesn't move reliably between device and cloud.
RITA screenshot

RITA

iOS

A plant-care companion that talks to real sensors over Bluetooth

  • CoreBluetooth
  • IoT
  • SwiftUI
The problem
Most IoT devices lean on Wi-Fi for everything, but local, low-latency communication with nearby sensors needed a lighter-weight protocol.
My role
Built the device pairing flow and the Bluetooth communication layer between the app and RITA's hardware sensors.
The interesting part
Onboarding a physical device entirely inside a mobile app β€” start the device, connect to Wi-Fi, then discover and pair individual sensors (droplet valves, soil moisture, light and rain detection) one by one.
Engineering / under the hood
CoreBluetooth handles transmitting and receiving signals over Bluetooth 5.0 Low Energy between the app and each connected sensor, favored over Wi-Fi for local, low-power communication with the hardware.
Challenges
Keeping the pairing experience simple when the underlying process β€” discovering peripherals, negotiating connections, handling sensors that fail to connect β€” is inherently unpredictable.
What I learned
Designing for hardware means designing for failure states first: a sensor that says "Not Connected" needs to feel like a normal part of the flow, not an error screen.
Drive Me Home screenshot

Drive Me Home

iOS & Android

A two-sided ride app pairing riders with sober drivers, built for both ends of the trip

  • Maps & Location
  • Real-time trip tracking
  • SwiftUI

Some detail below is inferred from screenshots only β€” marked placeholders are ready for Udani to fill in.

The problem
Riders need a safe way home when they can't drive themselves, and drivers need a clear, trustworthy way to see trips, earnings, and their route in one place.
My role
Worked across both apps in the pair β€” the rider-facing booking and safety experience, and the driver-facing trip and earnings dashboard.
The interesting part
Designing two apps that share a domain model but serve opposite jobs: one is about confidence and safety in a vulnerable moment, the other is about clarity and trust in day-to-day earnings.
Engineering / under the hood
Live trip state (matching, driver en route, in progress, completed) drives the UI on both sides, with map-based tracking, a package of in-trip safety tools (SOS, live trip sharing, masked calling) on the rider app, and a weekly earnings breakdown with trip-level detail on the driver app.
Challenges
Placeholder β€” exact technical decisions behind the real-time matching and trip-tracking layer weren't part of the material reviewed for this site. Udani: happy to fill this in with the real architecture.
What I learned
Placeholder β€” add the key engineering takeaway from this project.
VOLA screenshot

VOLA

iOS & Android

Financed phones, secured with mobile device management

  • KYC / identity verification
  • MDM
  • Fintech

Some detail below is inferred from screenshots only β€” marked placeholders are ready for Udani to fill in.

The problem
Financing a phone purchase means the lender needs real collateral protection without the borrower losing full use of the device once it's paid off.
My role
Placeholder β€” Udani to confirm exact scope of work on VOLA for this write-up.
The interesting part
The device itself is the collateral: MDM keeps the phone secured and auto-locks it if a payment is missed, then releases automatically once the loan is repaid.
Engineering / under the hood
The flow runs from device selection and provisional valuation, through NIC photo and video KYC verification, to a repayment schedule with per-installment status and an MDM-backed device security screen.
Challenges
Placeholder β€” exact technical decisions weren't part of the material reviewed for this site.
What I learned
Placeholder β€” add the key engineering takeaway from this project.
Litro Home Delivery screenshot

Litro Home Delivery

iOS & Android

LP gas ordering and delivery, from dealer selection to doorstep

  • REST APIs
  • Order management
  • MVVM

Some detail below is inferred from screenshots only β€” marked placeholders are ready for Udani to fill in.

The problem
Ordering a gas cylinder for home delivery needed to be as simple as reordering something you buy every month β€” pick a product, confirm an address, pay, done.
My role
Placeholder β€” Udani to confirm exact scope of work on this app for this write-up.
The interesting part
A consumer commerce flow layered on top of a real-world dealer and delivery network, including repeat ordering from past dealers.
Engineering / under the hood
Product selection, cart and delivery-charge calculation, cash or card-on-delivery payment, and order history with one-tap reordering, all backed by REST APIs.
Challenges
Placeholder β€” exact technical decisions weren't part of the material reviewed for this site.
What I learned
Placeholder β€” add the key engineering takeaway from this project.
Redeema screenshot

Redeema

iOS & Android

A rewards app where watching an ad properly is the whole product

  • AVFoundation
  • AVKit
  • Custom video player
The problem
The app rewards users with credits for watching video ads, which only works if the app can be sure the ad was actually watched, not skipped.
My role
Built the custom video player that the entire reward mechanic depends on.
The interesting part
A standard AVKit player lets people skip or scrub past the content β€” so watching properly had to be enforced at the player level, not just trusted.
Engineering / under the hood
AVFoundation and AVKit were integrated to play the ads, with a bespoke player layered on top that captures current playtime and disables tap-to-pause for the duration of the ad.
Challenges
Getting AVFoundation and AVKit to work together cleanly while adding non-standard playback restrictions that fight the frameworks' default behavior.
What I learned
Sometimes the interesting engineering problem isn't the feature itself, it's taking away the interactions a framework gives you for free.

Archive

Daily Mirror screenshot

Daily Mirror

iOS & Android

News app with breaking news, sections, and offline-friendly reading

Litro Manager screenshot

Litro Manager

iOS & Android

Internal dealer management for order status and dispatch

Moose Fans screenshot

Moose Fans

iOS & Android

Companion app for cricket fans β€” polls, predictor, leaderboard, merch

Ava screenshot

Ava

iOS & Android

Premium car rental booking, from search to payment

CINC screenshot

CINC

iOS

Internal company hub for news, polls, and daily mini-games

Visit Uva screenshot

Visit Uva

iOS & Android

Travel companion for Uva Province β€” hotels, safety tips, maps

Gateway College App screenshot

Gateway College App

iOS & Android

Parent-facing school app for attendance, reports, and notices

HidAd screenshot

HidAd

iOS & Android

Classifieds marketplace with category browsing and search

VHM Express screenshot

VHM Express

iOS & Android

Parcel delivery tracking with a full package journey timeline

Mixology screenshot

Mixology

iOS & Android

Cocktail recipe explorer with tags, favourites, and search

Lean and Fit screenshot

Lean and Fit

iOS & Android

Food and supplement ordering with nutrition breakdowns

HelloDo screenshot

HelloDo

iOS

Task manager with custom categories and calendar views

LeafWire screenshot

LeafWire

iOS

Community forum with feeds, reactions, and comments

Tour Gossips screenshot

Tour Gossips

iOS & Android

Travel deals app with filters and hotel offers

My Leaves screenshot

My Leaves

iOS

Internal employee leave request and approval app

Linguistic screenshot

Linguistic

iOS

Online learning app with classes, notes, and offline mode

Experiments

Things I built just to find out

Not every build ships to the App Store. Some of it is just a way of asking a platform β€œhow does this actually work” and getting a real answer.

AR furniture visualization

Placed furniture in a real room using ARKit, wrapped in a UIKit view so it could live inside a SwiftUI screen, with delegate methods standing in for native touch interactivity.

  • ARKit
  • SwiftUI
  • UIViewRepresentable

Auto-tagging screenshots by content

Used Core ML classifiers and Vision to recognize objects and scenes in an image and generate tags like "documents" or "travel" automatically.

  • Core ML
  • Vision

Talking to sensors over Bluetooth LE

Paired a phone with IoT hardware β€” soil moisture, light, rain detection β€” over Bluetooth 5.0 Low Energy instead of leaning on Wi-Fi.

  • CoreBluetooth
  • IoT

Realtime form validation with Combine

Merged password and confirm-password fields with Zip and CombineLatest2 so validation state updates the moment either field changes, no submit button required.

  • Combine
  • SwiftUI

A video player that can't be skipped

Built a custom player on AVFoundation and AVKit that tracks exact playtime and disables tap-to-pause, so a reward mechanic can trust that an ad was actually watched.

  • AVFoundation
  • AVKit

Core Data ⇄ JSON, both directions

Built the mapping layer that turns Core Data entities into JSON for the server and back again, including nested relationships, without losing sync performance.

  • Core Data
  • JSON

A CloudKit library of its own

Split CloudKit access into a separate private library so sensitive configuration stays isolated from the main app target.

  • CloudKit

Getting app data onto the home screen

Researched WidgetKit's supported types and built a data-fetching layer so a widget could show real, current app content β€” not a static mock.

  • WidgetKit
  • SwiftUI

In-app purchases that feel invisible

Wired up StoreKit for premium unlocks, aiming for a purchase flow that's fast and doesn't make the user think about the transaction.

  • StoreKit

Turning coordinates into places people recognize

Used geocoding, reverse geocoding, and region monitoring to convert raw location data into addresses and proximity alerts, tuned to go easy on battery.

  • CoreLocation
  • Maps

Letting an agent scaffold the boring parts

Folded Cursor and Claude Code into the daily workflow for feature scaffolding, unit test generation, and refactoring β€” with architecture review still done by hand.

  • Cursor
  • Claude Code
  • Xcode Coding Intelligence

Tech ecosystem

What I reach for, and when

Apple

  • Swift
  • SwiftUI
  • UIKit
  • Swift Concurrency
  • SwiftData
  • Core Data
  • Combine
  • App Intents
  • ARKit
  • RealityKit
  • Core ML
  • Apple Intelligence

Android

  • Kotlin
  • Jetpack Compose
  • Android SDK
  • Coroutines
  • XML Views
  • Retrofit

Engineering

  • MVVM
  • Clean Architecture
  • Dependency Injection
  • Modularization
  • Swift Package Manager
  • RESTful APIs
  • Performance Optimization
  • Memory Management

Testing & delivery

  • Xcode Instruments
  • XCTest
  • Swift Testing
  • Git
  • CI/CD
  • Xcode Cloud
  • Fastlane
  • App Store
  • Google Play

AI-assisted development

  • Cursor
  • Claude Code
  • Xcode Coding Intelligence

About

Mobile engineering, taught by building it

I've spent eight-plus years building native apps at Fixel Digital β€” over twenty of them, across delivery, fintech, IoT, travel, and more. What keeps it interesting is the same thing that got me into it: taking a new framework apart to see how it actually works, whether that's an AR furniture prototype, an on-device ML experiment, or a production app.

I care about the parts of engineering that don't show up in a screenshot β€” architecture that holds up under change, interfaces that feel responsive, and code a teammate can pick up without a walkthrough. And I like passing that on: lecturing, mentoring, and reviewing code with the engineers I work alongside.

I build

Native iOS and Android products, end to end β€” architecture decisions, the interface, and the release.

I teach

Undergraduate Programming and Software Engineering modules at Colombo International Campus.

I share

Code reviews and architectural workshops with the junior engineers I mentor at Fixel Digital.

I explore

Whatever Apple ships next β€” this year that's Apple Intelligence and App Intents.

Talks & writing

No talks listed yet β€” this space is ready to go the moment there’s one to add. In the meantime, find occasional writing on Medium.

Let's build something meaningful together.

Open to conversations about mobile engineering, architecture, or bringing on-device intelligence into a product.