Profile

I am an Android developer with 10 years of experience in the connected vehicle space. I have worked in most parts of the Android stack, from Jetpack Compose UIs, to AOSP, and underlying system services.

I thrive in environments where I am challenged to deliver high quality software alongside curious and driven teammates who care for their craft.

I indulge my craft by trying new approaches in side-projects, proof of concepts, and I bring the experience of what worked and what didn’t to the teams I work on. I’ve presented at developer meetups and conferences, and during the pandemic, I completed an epic project to reengineer my car’s infotainment system from scratch that touched upon every engineering skill I’ve learned.

I’m excited when I can take something I learned, share it with others, and use it to make pragmatic software designs that collapse complex requirements into straightforward ones.

Skills

Android

Kotlin, Kotlin Flow, Jetpack Compose, KotlinPoet, RxJava2, Dagger2, Gradle, MockK, Mockito, Robolectric

Databases

SQL, MS-SQL, Oracle PL/SQL, MongoDB

Embedded

C++17, GoogleMock/GoogleTest, CMake, QNX

Web

Django, Django-TastyPie

Tools

Git, JIRA/Confluence, IntelliJ, CLion, Balsamiq, LaTeX, Figma

Soft Skills

  • Mobile application design & architecture
  • Requirements gathering
  • Process analysis and documentation
  • Writing and presenting Lunch & Learns, Conference Talks
  • Authoring technical training materials
  • Scrum process, release planning

Work Experience

Ford Motor Company

September 2023 - Present

Software Engineer, Safety Graphics

Immersed myself head-first into the world of regulated automotive safety software and worked my way back towards Android to become a truly “full-stack” developer.

I learned the theory and practise of automotive safety software engineering by studying the ISO-26262 functional safety requirement(s) elicitation and review processes through formal coursework. I applied this knowledge by contributing to Software Safety Requirements review cycles held by Functional Safety Engineers. I helped review and revise Technical Safety Requirements.

I learned C++ for this role and wrote the UI logic for the ASIL-B-rated touch screen safe Headlight Switch that was part of the canceled FNV4 infotainment platform. This logic was written in C++ on QNX, and I became familiar, through coursework and practical experience, with QNX APIs such as Resource Managers, and IPC messaging (Send, Receive, Pulse messages).

As part of this, I became familiar with the Autosar Adaptive environment that Ford was adopting for this platform. In contrast to the previous IVI platform I worked on, FNV4’s High-Level Design (HLD) review process made extensive use of MagicDraw and SysML. I learned SysML modelling through coursework and applied it when designing the Airbag Cutoff Switch (Passenger Airbag disable).

These ASIL-Rated “Safe Buttons” require coordination between the Android view heirarchy, through inter-OS IPC to show and hide overlaid buttons super-imposed by the QNX hypervisor. When these buttons are visible, touch events are relayed from the i2c touch controllers, bypassing Android, and going into the QNX touch UI logic.

I wrote the much of the UI logic in C++ for the cancelled FNV4 headlight switch. I wrote the Android-side of the ACS switch integration, which used similar QNX safe UI logic.

After the cancellation of FNV4, I took the lessons learned from the whole Android-QNX integration from the QNX side, as well as the Android side, and set to work on streamlining the integration to:

  • reduce inter-team dependencies for code review, deployment, design
  • increase reliablity and test coverage
  • provide SDKs for other Android apps on the platform to consume to integrate with functional safety.

Ford Motor Company

October 2020 - September 2023

Senior Android Developer, Domain Architect

In this role, I was the domain architect and lead developer for part of the new infotainment system that Ford launched for the 2024 Lincoln Nautilus. This system features a 48-inch panoramic display, a touch-screen centre stack, and tight integrations between the Android Automotive OS system and a hypervisor.

  • I was the domain architect for the right-Pano Information On Demand (IOD) widgets. (Trip computer, Fuel Economy, Clock, TPMS). I was also the domain architect for the Centre-Stack Panoramic Display configurator application.

  • At the very beginning of the IVI project I wrote prototypes and cross-trained Android best practises to other team-mates who had an Unreal Engine and C++ backgrounds.

  • When the Nautilus project was started, my work was used as a foundation for the new system. I provided the technical design and architecture guidance to a team of ten developers.

    • Wrote prototypes and Proof of Concepts
    • Introduced Jetpack Compose to Ford Motor Company. Our team was the second team in all of Ford to adopt Compose in production.
    • 1:1 mentored and helped all of the developers with code questions, design ideas, and unit testing help.
    • Prepared a 1 hour lunch and learn on Jetpack Compose Scaffold Layouts in mid-2021, when documentation on Compose was scarce.
    • Assisted my manager in becoming acquainted with the inter-team dependencies on vehicle services and signalling. I empowered him with information and design intent so he could advocate for our team’s needs when we needed services from the “rest of the car”
  • I helped perform technical interviews as an Android Subject Matter Expert for two engineering supervisors. My input led to the hiring of three very strong developers.

  • I worked with the Design Studio team to provide feasibilty input and brainstorm interaction modes.

  • I built two libraries (SignalService and AutoRebindingServiceClient) that automated the repetitive IPC tasks that our team’s projects faced. SignalService provides a Kotlin DSL for marshalling and unmarshalling nested Bundles into a Message. On the producer side, it provides an easy way for developers to specify a URI scheme for multiple endpoints of streaming data from a bound service connection. On the consumer side, it automates setting up a Kotlin Flow that can be wired into a repository or ViewModel architecture.

AutoRebindingServiceClient provides a way for developers to simply and reliably bind to a service, and abstract all failure events such as Disconnect, BindingDied, Reconnect, etc. It has hooks for developers to provide exponential back-off and retry characteristics without requiring deep knowledge of RxJava or Kotlin Flow patterns. This library centralized the code and tests for error-prone ServiceConnection lifecycle handling, enabling the team to wire together components more quickly.

Ford Motor Company

October 2020 - October 2021

Android Contractor

Contract-to-hire position for the above role. I was converted to a full-time employee at 11 months.

Trimble Transportation

September 2018 - September 2020

Software Engineer

Android developer for in-vehicle telematics tablets. I worked on new app development for end-users, B2B app development and integrations, as well as Device Admin and Device Policy Controller APIs, and Samsung KNOX SDK integrations.

  • Delivered Out-of-Truck lone-worker safety application. Guided a team of 4 through design decisions, experimentation with new Android Architecture components, and best practises. As part of the team, I also cross-trained an embedded C developer Android development practises and design patterns, leading to an additional effective project contributor.

  • Designed and implemented large-scale tablet imaging & setup process to automate field tablet setup and software installation as part of a warehouse supply chain.

  • Organized and led the team during the last stages of the tablet imaging process project by identifying outstanding Product Backlog Items, and collaborating with the team to place the PBIs on a Gantt chart (updated every day in daily standup) so that we could confidently deliver in our narrow deadline.

  • Learned best practises with Android Room and Navigation Jetpack architecture components.

  • Occasionally completed C development tasks for an embedded in-truck on-board computer with engine management peripherals.

Drivewyze

May 2016 - September 2018

Software Developer

Android developer.

  • Exposed to design evolution of building and scaling a connected truck application with remote code-update and diagnostic capabilities.

  • Overhauled flagship Google Play Store Android app to:
    • Use an internal common C++ business logic layer
    • Integrate with partner application
    • Have a brand-new UI
    • Adopt Clean Architecture code design
    • Increase test coverage
  • Successful releases and partner integrations greatly increased the Total Addressable Market for the Android app.

  • Learned RxJava2, Dagger2, Mockito, Robolectric, Clean Architecture patterns.

  • Production experience using Android Geo-location APIs: usage, initialization, and device-specific pitfalls.

  • Consolidated 3 separate development streams, reducing un-needed maintenance complexity.

  • Worked closely with partner companies to fine-tune and achieve technical requirements.

Computronix

May 2015 - August 2015

Summer Student

  • Designed & implemented billing system enhancements.

  • Learned Oracle PL/SQL, wrote stored procedures in a large database application.

Certifications

Professional Engineer
August 2023
Professional Engineers Ontario (PEO)
Associate Android Developer
May 2018 - Expires May 2021
Google Developers
Google Cloud Platform Fundamentals, Core infrastructure
March 2019
Coursera -- Google Developers
Industrial IoT on Google Cloud Platform
January 2019
Coursera -- Google Developers
Algorithms on Graphs
July 2018
Coursera -- UC San Diego & Higher School of Economics (NRU)
Data Structures
April 2018
Coursera -- UC San Diego & Higher School of Economics (NRU)
Algorithmic Toolbox
October 2017
Coursera -- UC San Diego & Higher School of Economics (NRU)

Conference Presentations

I wrote and presented two workshops at a conference for university students. Each workshop was 75 minutes in length and detailed the theory and practise of building web-enabled Android applications. The workshop focused on an example “Todo List” application.

Introduction to Android App Development & RxJava
Stefan Martynkiw
Startup Edmonton Student Developer Conference 2018
Introduction to Android App Development
Stefan Martynkiw
Startup Edmonton Student Developer Conference 2017

Volunteerism

FIRST Lego League

2012 - 2018
Technical Judge

Mentored and evaluated elementary and middle school students participating in Lego Mindstorms robotics design competitions.

Awards

Eleven Prize -- Eleven Engineering Inc.

2016
Best ECE Capstone Design Project

Hobby Projects

BMW e39-Rpi Navigation Computer (2020 - 2025) -

I built a navigation computer for my BMW e39 consisting of a:

  • Jetpack Compose Multiplatform HMI I wrote from scratch
  • firmware I wrote for a Raspberry Pi Pico RP2040
  • PCB I designed myself and hand-assembled with more than 500 solder joints.

The project drew upon all of my experiences in my career and education. I used it to experiment with Jetpack Compose while I brought “the things that worked out the best” to Ford when I introduced Compose there.

I learned C++ on this project so that I would be prepared for writing C++ code on QNX for the Functional Safety team at Ford.

The completion of the project and associated documentation scratched the “I want to build a computer” itch that I have had since I first stumbled onto http://oldcomputers.net/ as a teenager.

BMW E39 Navigation Retrofit Project (2019 - 2020) -

The first iteration of retrofitting the BMW factory navigation to my BMW e39. I built middleware on a Raspberry Pi to get the steering wheel buttons to change the audio track on a Bluetooth-connected telephone.

Fast Math (2014) -

At a 24-hour Hackathon in early 2014, I worked with Stephen Just and Jacob Ortt to re-create the elementary school fun of Mad Minutes. The idea was that you are presented with quickly solveable Calculus problems, and for every problem solved, you get an “award” in the form of an XKCD-style comic.

Qasper (2013) -

Qasper was my very first Android app that I wrote in University. In a team of six, we built a multi-threaded Question/Answer application similar to Stack Overflow.

Hand-built Z80 Computer (2015) -

I bread-boarded a Z80 microcomputer.

Arduino EEPROM Programmer (2015) -

While building the Z80 microcomputer, I built an EEPROM programmer.

BMW DIS Interfacing (2013) -

I worked with the BMW DIS software to interface with my early 90s BMW. Using an RS232 to ADS cable, I was able to communicate with the car’s engine management unit.