Sara Lizarraga
Sr. Android Developer
Phone: 513-***-****
Email: *********.********@*******.***
Technical Profile
•9+ years of experience in Android using Kotlin and Java
•8 published apps in the Google Play Store
Kotlin MVVM MVP MVI JetPack Compose MotionLayout Java NDK Material Design Zeplin TDD BDD Mockito Espresso ReLinker MixPanel Google Home Google Assitance API Play Services Retrofit SQLIte FSM BLE WiFi Protocols ExoPlayer AppDynamics Robolectric AWS JetPack VOD Bluetooth BLE OAuth Encyption Dependency Injection Reactive Programming Waterfall AsyncTask Loaders CircleCI JetPack Slices ContentProviders EventBus MonkeyRunner Slack Kanban Trello JIRA Confluence RxAndroid Agile Scrum XP Push Notifications Patterns Instruments tests RESTful Web Service GIT GitLab SVN Jenkins MVC SOLID OOP Design Unit Testing Multithread Jira OAUTH2 ZXing Java C/C++/C# SQL HTML XML Social media integration Google Play Services Photoshop 3D Secure Firebase SDK IoT MLKit Jenkins GitFlow Calabash Maps Compose Bitrise ARCore React TypeScript Figma
Work Experience
Project # 1
Fifth Third Bank Sep 2021 – Now Cincinnati, OH
Sr. Android Developer
App Description: Banking application to access your accounts, deposit checks, view recent transactions, pay bills, transfer money, and find ATMs and branches
Store: https://play.google.com/store/apps/details?id=com.clairmail.fth
How did I add value:
•Work on existing multi module project with Clean Code architecture and code on presentation layer using Google MVVM implementation, independently code new rewards feature module, feature-based modules, core modules, product flavors and payment module
•Work on check balance and view transactions screen, deposit page auto-refresh, user stories with latest Jetpack components, Kotlin multiplatform and material design views
•For ‘Set up, edit and delete direct debits’ screen build reactive UI, custom components, input field state handling, and automatic state updates using Compose
•Make use of MLKit barcode scanning API for credit card scanning
•For ‘Check balance and View transactions’ screen used Accessibility Test Framework like Google App scanner, implement Magnification gestures, TalkBack and text-to-speech accessibility API
•Incorporate Jetpack Crypto, SQLCipher to encrypt Room, SafetyNet Attestation API and SafetyNet reCAPTCHA API to protect app from malicious traffic in security module for ‘Budgeting Tool’ and ‘Instant trasfer’ user stories
•Use Checker Framework, SonarQube, ktlint, KDoc, kotlin-offical for check code convention, concurrency errors, possible vulnerabilities, code duplications, equality tests, and run-time errors
•Automate publishing app to the Google Play Store with GitHub Actions and Fastlane by creating lanes, create workflow file release.yml in GitHub/workflows directory and Keystore (.jks) file with Google play configuration
•Made app adaptable to new Android Q for account Alerts and set notification preferences
•Incorporate Splunk MINT SDK to collect crash, performance, usage data and send it to Cloud servers
•Perform migration to StateFlow with MutableStateFlow for the track prices with crypto watchlist
•Implement Card Payments API to merchants to process credit card transactions using the REST protocol and Authorization API with 3D Secure 1.0.2 authentication data
•Pair program on React components, Redux for Greenfield application for 2 sprints to code Android login component
Project # 2
Overstock.com Aug 2020 – Aug 2021 Midvale, Utah
Remote Sr. Android Developer
App Description: Overstock is a easy home savings app
Store: https://play.google.com/store/apps/details?id=com.overstock
How did I add value:
•Work on Javascript WebViews and Xamarin components migration
•Work on app from scratch by implementing MVI Reactive Architecture Pattern with design system components to perform Unidirectional and Circular Data Flow
Some of the user facing features I worked on included the product list module, the classic onboarding screen, the GDPR screen and the GUI for the podcast player
•Contribute in production release deployment, certifying release features, monitoring production logs and fixing production issues on demand
• Implement LiveData Architecture component builder to combine Kotlin coroutines with LiveData Coroutines Asynchronous Flow to implement async sequence, or stream, of values
•Provide design support for over 20 API calls from varying servers while working with server-side engineers adapt them for new features using Kotlin Coroutine scopes with Android KTX
•Write the offshore team's unit testing template while instilling the new shift into TDD by working with the Kohl's library of base Android components to push unit testing as a priority with MVVM
•Reverse engineered Blue Bird and Server C# code to understand and replicate application we were migrating
•Research and work on Zebra PS20 a new Android-based mobile barcode scanner used by shoppers and store associates to scan and pay for items
•Build feature to gather customer's in-store location while delivering special offers and other assistance using RxJava, Koin dependency injection and Google play services
•Perform code quality checks using tools like SonarQube, SonarLint, ktlint, Checkstyle and PMD and deobfuscate a stacktrace using a mapping file
•Provide feedback on code reviews to onboarding developers along with pointers on the right direction when a blocker arose during the implementation of the features
•Write algorithms in C++ to sync financial details, spending history and set notification preferences and call JNI to provide a communication mechanism
•Refactor old Dagger 2 implementation Hilt DI, inject WorkManger with Dagger-Hilt, remove ViewModelFactory implementation to replace with HILT ViewModelInject
Project # 3
HealthTap Apr 2019 – May 2020 SunnyVale, CA
Remote Sr. Android Developer
App Description: A telehealth app where you choose & keep one primary care doctor you love to get ongoing care Store: https://play.google.com/store/apps/details?id=com.healthtap.userhtexpress
How did I add value:
•Perform React Native migration of components to native components
•Refactor a lot of legacy codebase written in Java MVC to Kotlin MVVM architecture, WorkManager API for background task, material design for UI
•Code the Add search into screen for App inviting through contacts feature from scratch, fix critical bugs relating to incorrect date display, deeplink issue, Consultation List screen UI / API integration and UI adjustment on file uploader
•Test coroutines calls, leverage Dependency Injection and fake or mock to make code highly testable using Mockk and TDD techniques to configure user stories in different product flavours in MVVM + clean architecture
•Code to enable remote check deposit and verify a customer's identity using Mitek MiSnap SDK to capture ID documents like passports, id cards to
•Involved in continuous service improvement with proactive monitoring of app store reviews, AppCenter crashes (Firebase Crashlytics and Analytics), SDK updates and bug search
•Fixed the performance issue on one of the specific legacy screens which was not following any sort of architecture while almost all of the dependency libraries were completely outdated
•Code main safety for network and database calls as well as orchestrating multiple async operations to regular suspend functions from inside a Shared Flow API
•Triggered a build process and generates a cross platform file which can then be used by the web and android development team using Bitrise CI, SonarQube, Lint, Espresso, Kotlin, Azure DevOps, Confluence, Unit Test
•Wrote Kotlin code in business module to account for accessibility services like TalkBack (focusability, content descriptions, accessibility delegates)
•Liaised with external clients to enhance app security with GDPR policy
• Implement frameworks (Android, XML), MVVM application design, and complex, reactive touch-based UI, Retrofit, RestFul, RxJava, Room, Data Binding, Dependency Injection (Dagger) and Android Architecture Components
Project # 4
WarnerMedia Global Digital Services, LLC Apr 2019 – Mar 2019 New York City, NY
Mid-level Android Developer
App Description: HBO Max is a premium streaming app that combines all of HBO with even more must-see TV shows, blockbuster movies, and exclusive Max Originals.
Store: https://play.google.com/store/apps/details?id=com.hbo.hbonow
How did I add value:
•Work on integrating external SDK for video processing, HLS streaming protocols and fix errors in Exoplayer video rendering
•Integrate push notifications using OneSignal SDK to control the information user wish to be alerted toTest own code at unit and module level with the aim of exceeding the quality level using Mockk, JUnit and Espresso testing tools
•Change and manage workflows, triggers using Bitrise, step library configurations for different app variants with BitBucket as VCS, JIRA ticketing, Gitflow and Bamboo tool
•Integrate CleverTap App Analytics to generate reports of Uncover user trends, visualize retention, track behaviors, conversion funnels to profile data and uninstall tracking
•Automate regression geolocation (testing the app from various geographical locations) and fixed flaky tests
•Built the essential web services to handle the content data retrieval, rendering and streaming video, decoding, and playback using Swagger, Retrofit, Firebase, Charles proxy and GraphQL capabilities
•Synchronized data between Android device and web servers, implement automated execution and integrate account management and authentication into data transfer
•Architect the app using Data binding library to include observable data objects, customize generated binding classes and support two-way data binding
•Create Credit SOAP API service to Invoke the Create Credit Request
•Implement a Redirection Flow asynchronous process to diverted to a third-party platform to finalize a payment using 3D Secure (3DS) authentication and Pay by Link (PBL)
•Work side by side of the IOS team to make the application behave as similar as possible in both versions
•Design/develop app using both API/SDK and business embedded logic to achieve desired functionality
•Collaborate with full-stack engineering team and a product manager to define, design, and ship new features
Project # 5
Spotify AB Feb 2017 – Mar 2018 Sunnyvale, CA
Android Developer and SDK Coder
App Description: Music application to play millions of songs, albums and original podcasts for free.
Store: https://play.google.com/store/apps/details?id=com.spotify.music
How did I add value:
•The app uses some shared JS between iOS, Android, and the Web environments to allow the users to share a similar reader experience on all platforms. The rest of it is a mixture of native code and interaction with the JS engines and shared C (for iOS and Android) to mimic the behavior of each mobile platform and appear the same.
•Code to make all the JS work together with the native code an Event Bus system is used to get responses from the WebViews and act on them in the native
•Made a persistent banner that presented itself on startup if there was a notification from the server to present or hide otherwise. Updated multiple views where it was needed to be displayed
•Added a concept navigation feature to the reading portion of the assignments. This was a list generated from the JS that was processed when the reader was launched. It started with a constant bar that stayed above the toolbar when it was present and had arrows when activated to navigate forward and backward. When clicking on it, it opened a RecyclerView in a BottomSheetDialog that presented the user with a complete list of the available concepts and scroll to the approximate location (spine item) they were in the book. Selecting one of the items would scroll the main reading experience to the location on the main screen and close the BottomSheet. Had to “glue” in the native C code that allowed the CFIs to be compared in the ePub format
•Implemented media credits into the probes to display below the images and audio media when they were available in the response
•Had to update the Swagger libs to gain access to the credits field to display
•Gave direction about using the “api” instead of “implementation” in the dependencies to allow them to be transitive in the libraries
•Add an additional tab to the main UI of the BottomNavigation, created a RecyclerView for it with a new API that was being implemented, created empty view for when there was no data and a view that allows displays what is being sent
•Add additional RecyclerView in fragment after that to display the list of assets that were contained to begin launching the experience
•Provide guidance on coroutine builders, why to avoid runBlocking{} outside of tests and how to use LiveData to post back even if in another dispatcher
•Move the MathJax webserver into the common library to share and added a Music server based on NanoHttp to serve JS into the WebViews
•Migrate serialization from Gson to Moshi
Project # 6
Tile Inc. Apr 2016 – Jan 2017 San Mateo, CA
Native Android Programmer
App Description: Tile by Life360 helps you keep track of your things. Find misplaced things nearby and far away. Store: https://play.google.com/store/search?q=com.thetileapp.tile HYPERLINK "https://play.google.com/store/search?q=com.thetileapp.tile&c=apps"& HYPERLINK "https://play.google.com/store/search?q=com.thetileapp.tile&c=apps"c=apps
How did I add value:
•Independently work on GATT protocol, code Bluetooth BLE services to scan devices and communicate attributes between them using EventBus library
•Use functional interfaces, SOLID principles and code common modules to create accounts and set passwords, add or remove accounts and read Google service configuration
•Implemente Koin dependency injection to create and inject network models, view model modules and analytics modules
•Work on wearable module to include SwipeDismissFrameLayout, WearableRecyclerView and BoxInsetLayout and to display TrackR product informatio
•Write code to construct Model to represent the data and business logic, expose its data through observables to be decoupled completely from ViewModel in MVVM architecture
•Replace old legacy Java code with Kotlin coroutines, extension functions, delegate properties, null safety checks and higher order functions
•Use Jibestream’s proximity service to create situational awareness and send real time targeted messages to users based on destinations and nearby assets
•Enhance the experience using Jibestream sdk to configure indoor mapping and location, Floor selector and navigator feature
•Use RxKotlin in conjunction with RxAndroid, RxBinding libraries to make app multithreaded and perform asynchronous operations
•Ensure task execution, add work constraints like network availability and periodically sync application data with a server using WorkMananger API
•Use Reactive Streams API to govern exchange of Json data, compose streams of data, handle complex threading and implement back-pressure
•Add support for Dynamic Delivery by including a base module, organizing code and resources for configuration APKs
Project # 7
Cronometer Software Inc. Jun 2014 – Mar 2016 Revelstoke, Canada
Remote Android Developer
App Description: A food and calorie tracker app that makes it easy to track your diet and exercise habits.
Store: https://play.google.com/store/apps/details?id=com.cronometer.android.gold
How did I add value:
•Work on Greenfield application
•Use ORMLite for persisting Java objects to SQL databases for offline mode features
•Optimize app to use Sensors API to provide access to raw sensor data streams from sensors available on the Android device
•Use History API to provide access to the fitness history and perform bulk operations, like inserting, deleting, and reading fitness data
•Improve Android Keystore program to store cryptographic keys in a container and protect key material from unauthorized use
•Solely resolve camera, external storage dangerous level permissions introduced in Marshmallow version
•Measure usage trends, uncovered issues, and analysed behaviours using Crittercism sdk
•Use Volley network library to perform RPC-type operations used to populate a UI, such as fetching a page of search results as structured data to view card list
•Deploy beta version of the app, which helped to identify bugs, user experience issues, and functionality problems
•Write unit tests for mobile code and debugged critical application issues such as crashes, memory leaks, and concurrency problems
•Handle various technical aspects like coding of modules using the given design specifications, debugging and fixing the defects as well as analysing its root cause
•Responsible for developing the user login screens and design the Context menus based on the Android Menu Navigation, Tabbed Navigation control and Action Bar Control
EDUCATION
Bachelor’s Degree in Digital Systems & Robotic Engineering
Instituto Tecnológico y de Estudios 'Superiores Monterrey, Mexico City