~** years’ Mobile App /Android Development experience.
Mobile Apps Published plus custom development of proprietary internal modules, libraries, and applications.
Experienced in Material Design: Well-rounded knowledge of the Material Design specifications and experience programming with Material Design Views Widgets and design patterns.
Comprehensive experience in front and back end as well as database and web services.
Good understanding of RESTful client and server.
Have worked on cloud with Azure and Google.
Proficient with Eclipse and Android Studio IDEs.
Design, develop, implement successful large-scale mobile projects from client requirements to completion.
Enjoy planning, designing, and implementing successful mobile projects from requirements to publication.
Accustomed to working with versioning tools like Git, GitHub, SVN, SourceTree, BitBucket, and Tower.
Good knowledge of programming methodologies like Agile SCRUM and Waterfall.
Adept at using external libraries like Picasso, Retrofit, Sugar, GreenDAO and more.
Great communicator, I enjoy working in teams.
Self-motivated, I enjoy a good challenge and thrive under pressure.
I consider myself a good mentor and I enjoy mentoring junior members of the team.
I am a firm believer in testing: test early, thoroughly, and continuously. The sooner bugs are found the better.
Have worked with push notifications and with as well as internal notifications for Android and wear products.
Well versed in asynchronous programming; successful use of Java’s Thread class as well as Android’s AsyncTask class.
Experience with network programming and consuming third party APIs, guiding the integration into dozens of APIs successfully with highly performant/critical integrations.
Experience working on-site and off-site teams and management of remote teams.
Fluent in Android SDK/NDK and device driver development.
Experience developing highly efficient Java code and view layouts and the ability to diagnose performance bottlenecks.
Performed Espresso, JUnit, Mockito and simulated design patterns to test and develop applications.
Hands-on experience developing stable, reliable and backward compatible mobile applications.
Capacity to identify problems and provide alternative solutions.
Dynamic, competitive, and proactive self-learner who learns and adapts easily to new technologies such as Smart Watches, Chromecast, and Smart TV devices.
Implements best practices and security whenever possible.
Experienced in software development life cycle working with Android.
Skilled use of Threading, Fragments, Implicit and Explicit Intents in Android development.
Experience with apps with networked data from content management systems.
Application of the Pillars of Object Orientated Programming and Android development best practices.
Experienced working with tablets, phones, smart TVs and more recently Android Smart Watches.
Advocate for coding best practices based on Object Oriented Principles.
Generating QR codes using the native Google Vision frameworks or a third-party library like ZXing.
Extensive experience in user interface (UI/UX) using wire framing tools such as Balsamiq Mockups
Full-stack developer cable of designing, developing and publishing scalable and high-performance Android applications working on both front-end and back-end development.
Fast and accurate coding using several IDE's including Android Studio, Eclipse, JCreator, NetBeans etc.
Web Services: RESTful, JSON, Volley, Retrofit, AsyncTask
Web Servers: Apache, Tomcat, GlassFish
Cordova, PhoneGap, Xamarin
(native to Android)
3rd Party APIs
Open Weather API
Open Movies DB
Dagger 1, Dagger 2, Butter Knife, Android Annotations
IDEs: Eclipse, Android Studio, NetBeans, JCreator
Methodologies: Agile, Waterfall, Test-Driven Development, Continuous Integration, pair Programming, Xtreme Programming, Scrum
Project Management Tools KanBan, JIRA, Slack, Confluence, Basecamp
Retrofit, Picasso, GSON, Twitter Fabric, Google Maps API, Google Location Services, Google Sign in, Sugar, OkHttp, Butter Knife, Firebase Analytics, Google AdMob, Parse, Facebook API, LeakCanary, Universal Image Downloader, Volley, SQLCipher, Glide, Espresso, SQLite, ORMLite, iText, Firebug, Bolts, Firebase Crashlytics, Otto. C standard Library
MPL and MECL libraries.
open source libraries,
REST, SOAP, JSON, GSON, XML
RESTful web service integration
RESTful web services
SQL Server, MySQL, SQLite, NoSQL, Firebase, Parse
Version Control Software: Git, GitHub, SVN, SourceTree, Bit Bucket, Tower
ZRTP media encryption
Architecture & Design Patterns
MVC, MVP, MVVM,
Clean, Decorator, Façade, Visitor, Proxy, Reactive, Modular, Command, Observer, etc.
MVC, MVP, MVVM, Singleton, Builder, Factory, Façade,Command,Observer
ART, Dalvik, Memory Mapping, leak Canary, Android Profiler
Three20, Sparrow, Java Development Kit (JDK), .NET, Android SDK, Fabric,
Android SDK, Firebase, Reactive-X
Issue Tools &Tracking
Firebase Cloud Messaging
Bluetooth Low Energy
Sr. Android Developer Centific (rebranded from Pactera EDGE)
Redmond, WA since Oct’ 2022
Lighthouse Mobile – Internal App
The Lighthouse application is an application for capturing images of retail shelves, running ML inferencing on them, and displaying to the user a list of suggested actions like replacing missing items or swapping misplaced ones. Features include:
a) A scrollable map screen to aid the user in navigating the store
b) A robust camera, featuring both single and burst capture modes. Until it was moved to the server, the Mobile app was also responsible for stitching together captured images into one single panoramic image using OpenCV.
c) User can view planogram compliance data
Project Summary: I was brought on to build an application for planogram compliance from scratch, as well as mentor a junior developer. As the only dedicated Mobile Developer, it was also part of my duties to be an effective representative for the platform in conversations with UX and business. Most of my time was spent/wasted trying to figure out how to improve image quality for photos taken at a walking pace. Professional photographers don’t use smartphones for a reason.
Built an application from scratch following MVVM/Clean architecture patterns
Mentored a junior developer in both Android development and general Agile practices.
Built out a robust camera application using Jetpack CameraX
Sent images to the backend for machine learning analysis using Retrofit and coroutines.
Created a low-level image stitcher using OpenCV and Android NDK to ensure optimal performance.
Responsible for maintaining the project’s Azure Devops code repository, implemented a build pipeline, so apks could be shared with business stakeholders.
Added AR product recognition to camera using ONNXruntime and YOLO model.
Worked to ensure image quality during a walking speed capture.
Added support for push notifications through Firebase Cloud Message and later Azure Notification Hub. Responsible for the project’s Firebase console.
Implemented dependency injection using Hilt.
Ensured app was adequately unit tested.
Since there were no QA testers, took on responsibility of testing and ensuring quality of both the mobile application and its backend services
Responsible for delivering mobile and end-to-end demos at the end of every sprint.
Kotlin, MVVM, Clean Architecture patterns, Azure Devops, Agile SCRUM, Recyclerview, Glide, Hilt, Jetpack Navigation component, Jetpack CameraX, Retrofit 2, Moshi, OkHttp3, Coroutines, Firebase Cloud Messaging, OpenCV, Android NDK, Junit, MockK
Lead Android Developer Genesis NGN
Seattle, WA Nov ’21 - Sep ’22
The Hertz app is an all-in-one Android car rental application, leading the user through the reservation booking process, managing any upcoming reservations, as well as offering a Check-In process that lets you skip the counter entirely when picking up your vehicle.
Hertz Car Rental: https://play.google.com/store/apps/details?id=com.hertz.android.digital&hl=en_US&gl=US
I was onboarded to assist with a redesign of the application reservation flow. I contributed to the full mobile application development lifecycle from planning, requirement gathering, development, testing and launching on Google play store for beta testing.
Worked with a team of 7 Android Developers undertaking key Agile-Scrum methodology, with 2-week sprints
Mentored junior Android developers and conducted peer reviews to ensure code quality while collaborating with cross-functional teams on a “Danger” implementation and associated set of rules to speed up/automate the peer review process
Cooperated with services teams on requirements/models and rendered leadership to help them keep pace with the project
Designed technical implementation details and used JIRA and Confluence for project tools
Implemented the mobile app using Android Studio IDE
App primarily uses MVVM architecture, with newer code taking on more of an MVI focus
App is compatible with Android 8.0 and up
Legacy code in Java, with all new code in Kotlin
Wrote a class to generate ITF barcodes using ZXing
Replaced legacy databinding implementations with ViewBinding (or Compose, when possible) equivalents
Pushed for standardization of UI to Material Design standards, including following the rules of 4s/8s and the establishment of a typography scale
Resolved several application crashing bugs and ANRs that were present in the production version of Android app.
Migrated some legacy service calls away from using RxJava to Coroutines
Added Firebase Dynamic Linking to the project, updated the handling of preexisting deeplink code accordingly
Migrated legacy reservation classes to use Jetpack Navigation
Wrote Viewmodels and usecases for the Select Location portion of the Reservation redesign
Created several Jetpack Compose components for a UI library meant to be used cross-brand
Overhauled error handling across reservation flow
Ensured all new code was up to modern Android design standards and adequately unit tested
Worked on the addition of Hilt for dependency injection
Technologies: Android Studio, Kotlin, Coroutines, RxJava, Java, Retrofit, Viewbindings, Mockito, Danger, PowerMock, Git, SourceTree, JIRA, Material Design, OkHttp, Hilt, GSON, Glide, Google Maps, Lottie, Crashlytics, Dynatrace, Firebase Dynamic Links, Espresso, Jetpack Navigation, ZXing, Jetpack Work Manager, Jetpack Compose, MockK, Jetpack Datastore
Lead Android Developer Ally Financial
Charlotte, NC July 2019 – Oct 2021
This Ally Financial app for Android can handle both banking and investments. The app provides all standard banking features such as ATM and branch locator, account access, balances and transfers. You can also do investment market research with informative charts and analysis, place trades and monitor investment performance.
Ally Mobile: https://play.google.com/store/apps/details?id=com.ally.MobileBanking&hl=en_US
I was brought on to help with investment, and trading of stocks and options, and market research features. Among my major contributions are consolidation of bank-side transfers and investment-side transfers to the same service endpoint and with similar functional workflow. The wildly different middleware setups and data requirements make this a major accomplishment. I also overhauled a great deal of the badly out-of-date legacy code on the Invest portion of the application to fit with the team’s design standards.
Worked on a team of 3 iOS developers, 2 Android developers, and 3 quality assurance engineers.
Development teams were organized using Agile Scrum methodology used, with 2-week sprints and JIRA and Confluence for project tools.
Mentored junior Android developers and conducted peer reviews to ensure code quality.
Implemented the mobile app using Android Studio IDE.
The Android app is structured using MVP architecture and was designed to be compatible with Android versions 5.0 and up.
Legacy code in Java, with all new code to be in Kotlin.
Refactored layouts across investment portion of app to have flatter view hierarchies, resulting in improved performance.
Standardized dimensions and styling across the investment portion of app to be Material Design compliant.
Resolved several application crashing bugs and ANRs that were present in production version of Android app.
Improved accessibility-related sticking points across the investment portion of Android application.
Created module to display CFRA and Morningstar market research using ConstraintLayout.
Provided demo presentations of the Android app to the Chief Digital Officer.
Refactored multiple older classes from Java to Kotlin.
Participated in a large project to bring the investment-side and bank-side closer together, including using the same endpoints.
Overhauled the bank-side transfers code to use Retrofit with RxJava instead of HttpURLConnection.
Wrote unit tests for legacy classes that lacked them.
Wrote unit and instrumentation tests using JUnit, Mockito, and Espresso.
Refactored several bank-side transfer classes to be MVP patterned and easier to work with.
Assisted in modularization of investment portion of Android app.
Worked with market experts to fix logic errors for purchasing stocks and options and introduced some quality of life changes for traders.
Provided leadership to services teams to help them keep pace with the project.
Collaborated on coachmark Fragment to show users new features.
Worked with market experts to fix logic errors for purchasing stocks and options and introduced some quality-of-life changes for traders.
Implemented a feature to allow traders to easily search for/filter through ETFs that matched a variety of criteria.
Worked with other teams on a generic ExoPlayer Activity as an alternative to using the Brightcove framework.
Pushed mobile team to use Moshi as an alternative for GSON and led the migration efforts.
Refactored a large chunk of the investment code to handle options positions more efficiently.
Converted Invest code away from using findViewByID/Butterknife/Kotlin synthetics to using Android ViewBinding
Implemented Android Bluetooth and Location Connectivity components.
Collaborated with other teams on a Danger implementation and associated set of rules to speed up/automate some of the peer review process.
Created a POC and associated ADR document for Jetpack Navigation.
Technologies: Android Studio, Kotlin, Java, Retrofit, Dagger 2, Butter Knife, RxJava, MPAndroidCharts, Mockito, Power Mockito, Git, Bitbucket, SourceTree, Agile Scrum, MVP architecture, HttpURLConnection, ConstraintLayout, Espresso, Junit, Android Bluetooth, ExoPlayer.
Lead Android Developer FedEx Services
Atlanta, GA August 2018 – July 2019
The FedEx PnD is used by FedEx freight drivers to assign trucks and trailer, and worklists for pick-ups and deliveries. Android app is part of a FedEx modernization initiative, to upgrade from Intermec CN70s, a Windows-based device (“ brick”) to a more modern, lightweight Android-based device. The new application features barcode scanning, RFID tag association, and manages overages/shortages. The Android app also provides helpful features for drivers: flashlight, text messenger with preset messages, and Airwatch kiosk mode enhancements, and Bluetooth Vector device interface with GPS and tracking.
FedEx PnD (Pick-up & Delivery): Proprietary Internal Android App
CoreFramework: A proprietary Android library
The MessageBroke: Proprietary Internal Android application using AIDL
I was brought onto this project a year into development to aid the team in adding some new features, primarily in relation to the telephone features. I also added significant value through research and proposals resulting in improvements to the existing codebase. My biggest achievement was pushing for the application to use analytics to give both development and management greater visibility into application crashes. Implementing and monitoring the analytics was my responsibility. After a certain point, I also became the designated expert for the MessageBroker application mentioned above, and was responsible for researching defects, fixing said defects, and implementing a couple of new features wanted by the architecture team.
Worked on Vector device Bluetooth interface to provide periodic status updates to aid in customer/dispatch visibility using GPS and tractor engine data from the Vector
Implemented Push Messaging to update the driver on worklist and notifications using MessageBroker
Worked with secondary application called the MessageBroker, which monitors the device for changes in connectivity and notifies the backend what is the best way to reach a given device (SMS, Direct IP using sockets, or Firebase Messaging)
Refactored legacy Java code to Kotlin while working on app performance and optimization
Software development, turning ideas into code with java and kotlin, effectively using each language to its advantage
The MessageBroker receives any messages using the aforementioned methods and routes them to the destination app.
Helped maintain the MessageBroker using AIDL
Worked in Android 6.0 developed in Android Studio 3.0 IDE, designed exclusively for use by the Panasonic FZ-N1, using MVP architecture throughout the application
Instrumental in improving the Android app’s telephone features
Responsible for both research/proposals and implementation, and for managing existing codebase
Acted as team mentor as the FedEx team was fairly new to Android, and helped orient, train and manage offshore developers
My biggest achievement was the implementation of analytics to provide greater visibility into application crashes
SME for the MessageBroker application, responsible for researching and resolving defects, and implementing a couple of new features for the architecture team
Implemented and ran testing with AppDynamics analytics to analyze the battery/data footprint
Advised the team on CI/CD techniques, namely pair programming and test-driven-development (TDD)
Trained and mentored the FedEx development team in instrumented/UI testing using Espresso
Ensured all new code written was free of “code smells” using Sonarqube
Updated the application to use Mockito and handled all changes to preexisting unit test cases
Ensured that all new code I wrote was intelligently and comprehensively unit tested
Refactored several application components, and wrote proposals for refactoring for a few others
Frequently demonstrated new features and layouts to the business partners
Created a tutorial/information/quality of life Activity from scratch to support a feature that was confusing for users. Said Activity had varied behavior based on context/Intent passed to it
Fixed a great number of defects/bugs using both AppDynamics and logs pulled from the devices using Airwatch MDM
Cleaned up Log4 logging in both PnD and a helper library to be both more responsive to changes in logging level and easier on device memory
Used the Android Architecture Components with MVVM and Kotlin to cut down on boilerplate code
Worked on a number of Telephony related features, which resolved user issues inherent in the technology
Moved application away from using AsyncTask except when appropriate
Aided in making changes to the app’s Gradle to accommodate for Jenkins CI pipeline changes
The development team consisted of 3 Android developers, 1 web services developer, 1 hybrid, and 4-5 offshore developers
Used Hewlett Packard’s Agile Manager for assigning tasks and backlog management
Optimized an ANR-prone broadcast receiver to offload its work onto an IntentService
Helped other developers thoroughly test their code before it passed to QA, team has one of the lowest defect rates in the company
Participated in managing CoreFramework, an Android library designed to handle interfacing with the Vector, a non-standard Bluetooth device, and barcode scanning using Panasonic’s firmware
Assisted FedEx SMEs in conducting peer code reviews
Overhauled the PnD Settings sub-application to use SharedPreferences
Worked to teach and mentor a team new to Android development and a weak off-shore team, and successfully improved team performance and knowledge of Android development and best practices
Technologies: Android SDK, Android NDK, Android Studio, Java, Gitlab, AppDynamics (analytics), Sonarqube, AirWatch MDM, Jacoco, Junit, Mockito, Espresso, Robolectric, Log4j, SQLCipher, GSON, Retrofit 2, OkHTTP 3, EventBus, Simple XML, Firebase Messaging, the Panasonic ToughPad API, AIDL, MVP design pattern
Lead Android Developer SunTrust Mobile
Atlanta, GA March 2016 – August 2018
The SunTrust Mobile Android app is optimized for Android and is specifically designed to provide quick and secure access to accounts. Users can make payments, transfers, and deposits; view account balances and account activity, and search for ATM / branch locations. The app can integrate with external accounts for payments and transfers, and users can manage credit cards and view FICO scores.
SunTrust Mobile: https://play.google.com/store/apps/details?id=com.suntrust.mobilebanking
Documented all changes made to the app, improvements, fixes and new features, back-end and front-end development.
Participated in the full mobile software development life cycle.
Conducted SCRUM meetings and acted as liaison with the upper management to make everything work faster by removing all blocking situations the team was facing
Added the Parcelable interface to pass custom objects between components via Intents.
Used Espresso for instrumentation testing using Assertions, Matchers and Actions.
Worked with LRU Cache to increase the performance of ListView scrolling.
Updated the look and feel following Material Design guidelines, and implemented several Fragments for the UI.
Ensured excellent form factor integration by creating multi-panel activities with Fragments.
Improved the layout rendering by saving and optimizing the view hierarchy in all the resources.
Supervised the creation of the unit, integration and stress test cases with JUnit, Espresso, and MonkeyRunner.
Actively worked with the back-end team to improve the RESTful API to include new features.
Developed compound views to present information to the user depending on its preferences.
Managed private Git code repositories with SourceTree.
Implemented a WebView control to reuse some legacy web application functionality within the native app.
Implemented Google Analytics and Firebase for various analytics.
Utilized the Android Studio IDE to develop and code the application in Java.
Contributed value to a cross-functional engineering teams (back-end development, front-end development, UI/UX designers, QA, Product Management, etc.).
Led a team of three Android developers, one hybrid developer, and one back-end developer and one front-end developer.
Conducted frequent code review activities with the members of the development team.
Facilitated requirement gathering sessions and wrote the high level and detail design for the Android application.
Managed the authorization with the backend services using certificate pinning.
Configured Git repositories on private Git server for the Android development team.
Configured the continuous integration process with a Jenkins instance hosted on a private server.
Constructed prototypes of the User Interface integrating the latest Material Design guidelines.
Documented the progress of the daily stand-ups and Scrum meetings with JIRA, Confluence and Slack.
Established communication with back-end server to consume Restful API using core Android classes.
Implemented the use of handlers and threads on several tasks which improved the application performance.
Managed team and optimized workflow with balanced task assignments and knowing the skills and aptitudes of my team.
MVP pattern, SQLite, SQLCipher, Keychain, Glide, Google Maps API, Scrum, v7 Support Libraries, WebView, Agile/Scrum, SourceTree, Git, Java, Android Studio, UI/UX, database, Certificate pinning, Material Design, Expresso, Monkey Runner, Junit, Firebase, Flurry, Git, JIRA, Confluence, Slack, ListView, Fragments, Jenkins, Continuous Integration, Encryption, Security, RESTful API
Lead Android Developer CarMax
Richmond, VA February 2015 – March 2016
This car shopping app lets users search from a large inventory of cars across the United States. Advanced search filters allow search by make, model, years, price, features, MPG, price, location and more. Superior app performance with great handling of photos.
Ford Mobile: https://play.google.com/store/apps/details?id=com.carmax.carmax&hl=en_US
Data caching done with an SQLite local database encrypted for enhanced security using SQLCipher
RESTful client implemented using Retrofit and GSON for serialization.
Maps done through Google Maps using v2 API and Google Localization Services.
Images loaded asynchronously resized and cached using the Google Glide Library
UI/UX for maximum brand recognition, simplicity of use and intuitiveness
The project was managed with an Agile SCRUM methodology. I assisted and at times took over the position of SCRUM Master
Implemented the menu using the support v7 Navigation Drawer with multiple options
Constructed a layout following Material Design Guidelines and using various views and layouts, coordinator layout, image views, text views, etc.
Participated in architecture, design, implementation and launch.
Proposed a front-end architecture using the MVP Model design pattern.
Implemented Android Support Library for backwards compatibility.
Used Google Cloud Messaging for push notification and user set alerts of inventory changes.
Used Jenkins continuous integration and Espresso for automated testing.
Acted as direct interface with client and participate in overall development activities including requirements elaboration, design, and coding.
Performed peer reviews on colleague’s code to ensure consistent standards.
Used SharedPreferences to provide consistency with key-value pairs.
Provided the app with functionality that enables location awareness with Google Play Services
Used Localytics to find issues, get stats and improve performance.
Mentored junior developer on best practices for coding.
Added Retrofit to consume RESTful web services to parse realtime-data and new items.
Consumed web services to display user history on the user interface.
Led Android development and worked closely with cross-functional teams of web development and remote contractors encompassing a variety of Android specialties.
Established the coding standards to be used in the Android development.
Crashlytics used for testing and various Fabric tool employed.
Used Google ZXing for scanning car stickers.
Dagger 2 and Butter Knife used for dependency injection and decoupling.
MVP pattern, SQLite, SQLCipher, Facebook and YouTube APIs, Glide, Google Maps API, Scrum, REST, Android Support Library, Google Cloud Messaging, Firebase, Google GSON, Okio, Crashlytics, Retrofit, Fabric, Butter Knife, greenrobot EventBus, CommonsWare Android Components (CWAC), LeakCanary
Senior Android Developer Disney/Disney Junior
Burbank, CA April 2014 - January 2015
Kids can watch their favorite Disney Junior shows or live TV* - all with the Disney Junior app. Full episodes of favorite TV shows anytime. Also includes silly shorts, cool clips, and new music video, and live TV. Select games and TV episodes in Spanish. This app uses your camera feature to let you send and upload photos. Favorites section for keeping track of favorite content.
Disney Junior: https://play.google.com/store/apps/details?id=com.movile.disneyjuniorplay_latam_an&hl=en_CA&gl=US
The application was written natively with the Android SDK, and it support devices starting from KitKat.
Used Android Studio as the IDE since it includes all the tools needed to develop, test and deploy the application.
Used Lazy Loading to improve performance over heavy visual content.
Used Intents & Intent Filters to initiate activities and pass information between activities and fragments.
Created Compound views for a more attractive and efficient design.
Implemented Google location services to support use by Spanish audience.
Used MediaPlayer with VideoView to stream and render live streaming media and streaming media.
Used Fragments for easier navigation & re-usability of UI components.
Implemented Android Support Library for backward