Mathew Gibel
Email: ***********@*****.***
Phone: 651-***-****
Skills
Kotlin Android JetPack Google Maps API Loaders RxJava Job Scheduler Content Providers AsyncTask Material Design Recycler View Firebase Google Analytics Push Notifications TDD RoboGuice Junit ButterKnife Dagger Mockito Reactive Programming WorkManager BLE Wi-Fi Socket Fabric Firebase Timber RxKotlin Okio Jenkins Gerrit Multithreading Services Content Providers Leak Canary Okhttp JetPack Koin SonarCube Profilers UrbanAirship Flow API Multithreading Leak Canary RESTful web services Bitbucket GitHub Gitlab Test Automation Mockito Espresso Dependency Injection
Work History
Sr. Android Developer
Target, From: May 2019 - Present
Location Minneapolis, Minnesota
https://play.google.com/store/apps/details?id=com.target.ui
Description:
Now the Target app can help you have a more rewarding Target run. Introducing Target Circle, which gives you access to hundreds of deals, a birthday gift and the chance to support your community.
Plan your next Target run by checking out Target Circle offers, the Weekly Ad and item availability all in one place. Then streamline your run with store maps and aisle locations, scan item barcodes for prices, reviews and available deals.
Team:
Agile phase environment with 6 Android Developers and 8 iOS Developers working with 2 weeks of Sprint and a 1 week of Retrospective.
Contributions:
Implemented Android Jetpack Architecture Component Room Database to keep data of your shopping list and resume the purchase flow later.
Created Kotlin Extension functions along with Coroutines to efficiently implement search patterns and provide best result solutions accordingly with previous search patterns.
Participated in several scrum cycles to identify best search patterns for the item finder feature.
Created MyTarget widget with new branding effort following closely material design and constructing Pending Intents and Synthetic BackStack when opening the main app.
Created Room DB implementation to keep track of multiple user configuration options and have a cache backup data.
Created custom views and canvas implementation to calculate positions within a touch screen to make zoom possible in product details.
Collaborated with backend developers to debug several endpoints including Loyalty Program and provide in-app solutions for regular customers.
Created several fragments and handled synthetic BackStack across several application flows.
Identify runtime permissions issue in newest Android SDK versions and elaborated retry get permissions flow for critical user experience.
Implemented Certificate pinning to protect sensitive data between client and server.
Built Maps Views along with Location Manager permissions to create FindMyStore features and easily identify store details near by the user location.
Worked in a refactoring effort to migrate Java base code to Kotlin functional programming.
Collaborated in ContinueShopping feature to activate geofencing near a Store and check previous saved list of items to resume the shopping in-store.
Implemented Material Design components like Search View Navigation, Card View, Recycler View and Bottom Navigation components.
Followed TDD methodology to produce a stable and testable code base applying the Red-Green-Refactor pattern.
Enforced code coverage across the entire application with 85% of code coverage.
Utilized tools like jaCoCo, CheckStyle and Coveralls.io.
Using Android Size Analyzer tool to easily identify size optimizations in the app bundle project.
Worked closely with UI designers to re-engineer image size converting images from PNG extension file to WebP extension file.
Implemented layout qualifiers and extension functions to review SDK level and apply the correct layout accordingly to device level.
Converted the data model, api communication service layer and view UI layer to Kotlin programming language and JetPack library.
UI/UX testing using Mockito and UI Automator, programmatic design and custom views.
Created Firebase push notifications to handle messages to audient and announce special discounts and specifics deals.
Sr. Android Developer
Instacart, From: Feb 2018 - May 2019
Location San Francisco, CA
https://play.google.com/store/apps/details?id=com.instacart.client
Description:
Shop groceries online & get fresh produce delivered directly to your door in as little as 1 hour with same day delivery. This is grocery shopping made easy - plus, your first grocery delivery is free!Instacart delivers fresh food, drinks, including alcohol, and other groceries with same day delivery all across the U.S. Just download the app to see what local grocery stores are available in your zipcode.Prefer to curbside pick-up? Order groceries online and pick up at your local store. 100% Contactless. Your grocery shopping order will be eagerly waiting for you when you arrive.
Team:
Working in a cross-platform environment handling 3 weeks of Sprint cycle and collaborating with 3 Android Developers and 2 iOS Developers.
Contributions:
Implemented Observable pattern in the form of RxJava library and implemented chain operators to streamline consumption.
Created Schedulers pattern to diverse observation in a different worker thread to make the application fast and stable.
Implemented RxAndroid Schedulers to handle concurrency inside of the project.
Made use of Design Patterns on the developed functionality and in charge of refactoring boilerplate or bad smelling code.
Implementing functional programming in the form of scope functions to better handle null cases and make the code more stable.
Created Prove of Concept or Coroutines scope to substituted Observable implementation.
Implemented Room Database tables to replace SqliteOpenHelper implementation.
Created routines to migrate previous tables in SqliteOpenHelper to new Room Database implementation.
Helped in the implementation of Android Pay system to incorporate multiple options to fulfill payment.
Implemented CardView Material Design has a custom view to reuse layouts in list of view components like RecyclerView.
Implemented SearchView component to easily find items and favorite store places.
Refactored MVP design pattern to MVVM design pattern to include Lifecycle aware components for the ViewModel and data containers LiveData.
Created Custom CalendarView with daily view to connecte Room entry and select delivery time to users.
Connected Firebase push notifications system to send special deals and target users for discounts.
Implemented CardIO mobile payment system to enhance credit card snapshot and provide options to fulfill payment.
Mentored Junior Developers to fulfill goals and have a constant development growth.
Created logins, embedded tweets using the Twitter API.
Dagger 2 was implemented for Dependency Injection.
Simplified the usage of threading by implementing RxJava for most of our asynchronous processes.
Automated payment integration using Google Wallet and PayPal API.
Senior Android Developer
Strava Inc., From: May 2017 – Feb 2018
Location:San Francisco, CA
https://play.google.com/store/apps/details?id=com.strava
Description:
Track your fitness with Strava activity tracker. Record routes map your favorite bike trail or run & analyze your training with all the stats – for free!
Marathon training or simply love going for a bike ride? Turn your phone into a sophisticated cycle or running tracker with Strava. Try out a new trail with Strava distance tracker and mile counter or even track running speed. Join millions of active people and reach your goals!
Contribution:
Collaborated with a cross-platform team composed of 12 developers, developed in a Agile methodology and having Bitbucket as its main repository and for CI/CD a pipeline integration of Jenkins.
Transition the application from old material design to new JetPack components using slices, navigation, paging, layout, Animation and transitions.
Design new features and perform migration from Java into Kotlin language with coroutines, multi-platform support, extension functions and null safety checks.
Use Android Plot graph library to display distance, pace, speed, elevation gained, and calories burned in pie chart and bar-charts.
Replace volley library with RxKotlin, retrofit library to make asynchronous API calls to get user-profile and monthly stats data in custom view.
Implement Koin dependency injection to create and inject network models, view model modules and analytics modules.
Write TDD test cases for new features using Mockito2, DaggerInject and RxTestScheduler.
Architect and code user story from scratch using new Architecture components using LiveData, ViewModel and Room database.
Bug fix critical issues relating to Android Wear modules and notifications.
Work on Strava Bluetooth BLE SDK to design modules to pair with Bluetooth devices and transmit large bytes of attributes.
Include Google Play billing service to buy subscriptions, digital contents and unlock advanced features.
Pair-program to develop the feature, write TDD test cases and write algorithms for Strava distance tracker and mile counter.
Schedule and manage large downloads in background with auto retry support using WorkManagerAPI and replace intent services implementation.
Configure Firebase console to create personalized messages and write frontend code handle these messages along with notification channels feature.
Lead android programmer
The Washington Post, From: May 2016 - May 2017
Washington, D.C
Description:
A series of apps for news publishing companies. The apps present the user with news articles as well as special sections characteristic to each app such as weather, traffic, restaurants, maps, etc. This app keeps you informed with award-winning national and international news coverage—along with striking photography and informative graphics that bring stories to life. Breaking news and important updates keep you in the loop throughout the day. https://play.google.com/store/apps/details?id=com.washingtonpost.rainbow
https://play.google.com/store/apps/details?id=com.theglobeandmail.headliner
https://play.google.com/store/apps/details?id=com.apptivateme.next.la
Team:
Working in a cross-platform environment handling 2 weeks of Sprint cycle and one week of retrospective worked with 5 Android Developers and 4 iOS Developers.
Contributions:
Created a module using Kotlin to enable the addition of a weather section which included location selector, using Google Places API. as well as a fallback implementation using a partner provided API. The fallback was intended to kick in whenever the Google Places API could fail, for example: in the case of surpassing the querying quota
Implemented a “Debug panel” options in a Settings fragment allowing for using debugging functionalities such as: switching the articles loading endpoint between sandbox and production environments, dynamically changing font sizes for different headers
Worked under SCRUM framework, using weekly sprint and part of a six-person team for Android, parallel to a similar size team working on the iOS version
Modified existing Java code to update image downloads for comics section in order to switch from a “bundle” system to json queries
Implemented Mather SDK and Ensighten SDK to automatically track app launches, page views, clicks and gain valuable insights
Implemented Material design to new activities/dialogs to keep the applications up to date with common android practices
Contributed with language localization using string resources Wrote scripts to aid in code generation/gather strings for translations
Created base for a news app using proprietary base code and libraries
Participated in periodic pull request peer reviews
Converted Java code using Map SDK to convert it from an app specific implementation to an independent module that could be used with other apps from our platform
Worked on large Code base which used a mix of Java, RxJava, Architectural components, volley, retrofit, Firebase and Kotlin
MID ANDROID DEVELOPER
Fifth Third Mobile Banking, From: May 2015 - May 2016
Columbus, OH
https://play.google.com/store/apps/details?id=com.clairmail.fth
Description:
Securely access your accounts, deposit checks2, view recent transactions, pay bills, transfer money1, and find ATMs and branches. With Now Balance® and the Now Balance® widget you can check your balances without logging in.
Contributions:
Worked with an internal QA team on system, performance, and acceptance testing, and Identification of issues during the test cycles.
Developed test cases using jUnit, Mockito, and tested the UI using Espresso.
Detected new improvement opportunities by replacing Volley with Glide and Retrofit, and RxJava.
Worked with NineOldAndroids library to include rotation, translation, alpha, and scale animation.
Retrofitted four legacy list views to the new RecyclerView / CardView combination, obtaining all the performance benefits.
Worked in Android Studio and developed Unit Test and Stress test cases with JUnit.
Participated in peer code review, daily Scrums, and Sprint planning meetings.
Assisted in managing the sprint priorities, task assignments and backlog, and the code repository.
Followed Agile/Scrum methods and processes and made recommendations on frameworks and technologies.
Created Material Design layouts with different animations optimized for User Experience.
Designed Widgets to keep track of tasks and reporting object completed updating your stats.
Implemented several Dagger Components and Modules to clearly achieve separation of concerns.
Introduced Parcelables for object transfers within activities.
Stored data in SQLite and with a Content Provider security layer.
Implemented the cipher method for the storage of sensitive data such as passwords within the Android application.
Added extra functionality by enabling the push notifications feature using Urban Airship.
Worked in MVP architecture and various design patterns (Singleton, Proxy, Observer, Façade).
Consumed REST API to display user history on the user interface using Retrofit 2 and GSON.
Implemented dependency injection natively in Java for object references.
Followed the Test-Driven Development (TDD) approach while developing the app.
Native Android Programmer
Bandsintown, From: Aug 2014 – May 2015
New York, NY
https://play.google.com/store/apps/details?id=com.bandsintown
Contributions:
Work on the welcome screen for new users showcasing the basic usage and setup of the application.
Implement authentication support with the remote server using a Bound Service and an authenticator component.
Integrate RecyclerViewSnap library to snap recycler views in 4 directions and create the same behavior as in, e.g., the Google Play app.
Migrate from Dagger1 to Dagger2 to remove runtime graph composition and reflection in the codebase.
Integrate Lottie library to parse Adobe After Effects animations exported as json and render them natively.
Perform integration of the PayPal Wallet App to support direct credit card payments, single payment and future payments.
Refactor and remove MixPanel sdk for codebase to replace with Firebase sdk to send concert push notifications for favorite artists on tour.
Work closely with network and backend teams to consolidate API calls using Volley library, create proper documentation for parameters and retrieve format objects.
Implement multiple ORMs to serve as the model layer: Sugar, GreenDAO and ORMLite.
Transition the application to a 'Material-design ready' state using RecyclerViews, CardViews, CoordinatorLayouts, Floating Action Buttons, customized Toolbars and DrawerLayouts.
Use SQLCipher technologies to improve the security of the data transactions and implement certificate pinning using Retrofit, okhttp libraries.
Setup multiple flavors defined to generate multiple APKs with a shared code-base.
Work on the feature that allows a user to search for the nearby cities using a SearchView Widget and a searchable fragment.
Resolve background processing limit issue using foreground services and implement notification channels.
Use YouTube Android Player API to incorporate videos to showcase upcoming events for advanced customers.
Implement Sliding Menu library to provide a fluid swiping from left to right and right to left.
Work on QR Code reader library to read barcodes to scan tickets.
Jr Android Developer
Anishu, Inc., From: Aug 2013 - Aug 2014
Location: CUPERTINO, CA
https://play.google.com/store/apps/details?id=com.anishu.homebudget.full
Contributions:
Independently develop the feature ‘Create/Edit/Delete expenses and recurring expenses’ with MVP, Dagger, Espresso, okhttp libraries.
Integrated UrbanAirship library and write code to handle push notifications to view Bill reminders.
Used Android content providers for implementing features like sending Emails, sharing using Facebook, Email, Twitter, SMS, etc., from the app and designed suitable GUI for these applications.
Included AWS Mobile Hub User Sign-in feature before the car booking process is completed.
SetUp Http Communication using Volley networking library and load receipts photo.
Saved the recent search using Realm Database library and replaced old SQLIte database.
Enhanced Runtime Permissions to approve security permissions on a case-by-case basis at run time.
Upgraded to Google Play services SDK to access a range of APIs for building ads, collecting analytics, authenticating users and integrating maps.
Collaborated with the implementation of Facebook Login to the App using the Facebook android SDK
Implemented JUnit framework to test the Presenters in MVP design pattern along with check data load and view not null check.
Role and Responsibilities:
Identify and contribute to the adoption of technologies, tools and industry’s best practices for Mobile Application development.
Facilitate on-time client deliveries as per requirements.
Proactively identifying, suggesting and assisting in the delivery of improvements.
Participate in the drafting of the technical documentation of the project.
Education
Bachelor of Arts, Computer Science, East Carolina University, Greenville, NC