class Resume: CurriculumVitae {
val skills: Map<String, List<String>> = mapOf(
// Languages & Frameworks:
"Languages" to listOf(
"Kotlin",
"Java",
"Jetpack Compose",
"Coroutines"
),
// Android Technologies:
"Frameworks" to listOf(
"Android SDK",
"MVVM",
"Room",
"Retrofit",
"Dagger/Hilt"
),
// Tools & Technologies:
"Tools" to listOf(
"Git",
"Firebase",
"CI/CD",
"Jira",
"Agile/Scrum",
"Docker"
)
}
fun getWorkExperience(): List<Job> {
val tangerpay = Job(
title = "Senior Mobile Engineer",
company = "Tangerpay (Brisbane, Australia)",
startDate = "Oct 2024",
endDate = "Jun 2025",
description = getJobDescription() {
"Kiosk app Jetpack Compose conversions and feature upgrades"
"Credit card reader SDK integration and device management"
"Payments UX/UI, portal administration, and customer support"
}
)
val stellarElements = Job(
title = "Senior Mobile Engineer",
company = "Stellar Elements (Amdocs) (Australia)",
startDate = "Jun 2023",
endDate = "Present",
description = getJobDescription() {
"Google: Android Studio-Bot evaluation testing using prompts and code"
"Westpac: refactored iPhone-only app to universal iPhone + iPad"
"UI redesign, performance improvements, and multi-screen support"
}
)
val roam = Job(
title = "Senior Mobile Software Engineer",
company = "Roam (later Stellar Elements) (Sydney, Australia)",
startDate = "Oct 2020",
endDate = "Jun 2023",
description = getJobDescription() {
"Flexi-Group: Android + iOS development across multiple BNPL apps"
"Delivered humm Cards, humm (white-label), humm90, Airpoints Plus, Qantas Pay"
"CBA: Vonto business analytics app for small businesses"
}
)
val miroma = Job(
title = "Software Engineer",
company = "Miroma Project Factory (Sydney, Australia)",
startDate = "Aug 2019",
endDate = "Sep 2020",
description = getJobDescription() {
"Down Syndrome Australia: Xamarin .NET Android/iOS hybrid app"
"SleepFix by Philips: native Android app in Kotlin"
"Moov Music: C++ PC video server with Android Java native client"
"Subaru sales displays: native iPad app in Swift"
}
)
val dialog = Job(
title = "Full Stack Software Development Consultant",
company = "Dialog Information Technology (Sydney, Australia)",
startDate = "Mar 2018",
endDate = "Aug 2019",
description = getJobDescription() {
"RMS: multiple Java apps (Spring Boot, REST, JSP, JSF, Struts, Hibernate)"
"Android Play Store deployments, DevOps upkeep (Jenkins, Sonar)"
"BOSN and Rider: TypeScript + Java, Angular, Ionic"
"Automation scripts: Python, bash, batch, Docker (Red Hat)"
}
)
val cartrack = Job(
title = "Senior Android Developer",
company = "Cartrack (Johannesburg, South Africa)",
startDate = "Sep 2017",
endDate = "Feb 2018",
description = getJobDescription() {
"Cartrack Android app: Java/Kotlin with REST integrations"
"Track Pack internal app: RxJava, data binding, mapping, REST"
}
)
val britehouse = Job(
title = "Senior Android Developer (Consultant)",
company = "Britehouse (Johannesburg, South Africa)",
startDate = "Jul 2013",
endDate = "Jul 2017",
description = getJobDescription() {
"Konica Minolta internal maintenance Android app (Java, SAP)"
"Standard Bank Android app (Java, REST)"
}
)
val zazoo = Job(
title = "J2ME, Symbian, Blackberry, Android Developer",
company = "ZAZOO Limited (Johannesburg, South Africa)",
startDate = "Jan 2004",
endDate = "Jul 2013",
description = getJobDescription() {
"Built mobile apps and games across Java ME, Blackberry, Symbian, and Android"
"Examples: VCPay, MarkitShare, Fedhealth, Polo GT DateDrive, Club 21, Pirate's Pearls"
"Multiple networked games using TCP/HTTP, plus BLE serial work"
}
)
return ListOf(
tangerpay,
stellarElements,
roam,
miroma,
dialog,
cartrack,
britehouse,
zazoo
)
}
fun getEducation(): List<Education> {
val ctiDiploma = Education(
degree = "Diploma, Information Systems (Internet Development)",
institution = "CTI Education Group",
startDate = "2004",
endDate = "2005"
)
return ListOf(ctiDiploma)
}
fun getProjects(): List<Project> {
val personalProjects = Project(
name = "Personal Projects (2003 - Present)",
description = getProjectDescription() {
"Onnx and CoreML model conversions; Flux and Stable Diffusion; LLM training experiments"
"LibGDX anagram game engine (Kotlin, TDD); maze generator/solver (Java)"
"Word games tooling and scripts (Python); speed reader, Wear timer, reddit client (Android)"
"Rewriting an old J2ME game to Android (Kotlin); various UI components and widgets"
},
technologies = listOf("Kotlin", "Java", "Python", "LibGDX", "CoreML/ONNX")
)
return ListOf(personalProjects)
}
fun getCertifications(): List<String> {
return listOf(
"Kotlin for Java Developers (Coursera) - EP3JEY4S8MJY",
"SwiftUI Essential Training (2019) - LinkedIn",
"iOS 15 Development Essential Training - LinkedIn",
"Swift 5 Essential Training - LinkedIn"
)
}
}