James B. Morris
Irving, TX
***.******@******************.***
Check out my YouTube video: https://youtu.be/7DU3m2B0Rqs?si=e97NxjKVBLv9T5IJ And my website at www.fla-sw.com.
I am primarily an Android lead developer and architect with 40,000+ hours of native Android development over the last 10+ years, but I will also work as a senior developer on a team. I am an expert in Jetpack Compose and in Compose Multiplatform (CMP) development. I have recently developed an app in CMP that has a SINGLE codebase, 99% of which is written in Jetpack Compose. The app runs exactly the same on both Android and IOS mobile devices. Any modification to the 99% Compose codebase will be reflected in BOTH the Android and iOS apps. A true multiplatform mobile app. See the demo here: https://youtu.be/7DU3m2B0Rqs?si=e97NxjKVBLv9T5IJ How many mobile app developers worldwide can do what you see in that video? Very few. LinkedIn page: https://www.linkedin.com/in/james-morris-android-cybersecurity/ Please read my posts on LinkedIn.
EDUCATION
PhD, Computer Science, University of Texas at Austin BS, Electrical Engineering, University of Texas at Austin TECHNICAL SKILLS
Languages Kotlin, Java, Jetpack Compose, Kotlin Multiplatform, C++, C, JavaScript Android Technologies Jetpack, RxJava (Android Reactive), Android Voice Recognition, Android Services, Bluetooth, BLE, Material Design, Fragments, GSON, FTP, Multiple Frameworks, Automated UI Testing with Mockups, Dagger2, Timber, Coroutines, Koin
Java/Kotlin Technologies Java, J2EE, JDBC, Restful OKHttp, JavaMail, Authorize.NET API, Mercury API, Bridgepay API, RxJava, Multiple Frameworks, Automated UI Testing with Mockups
Testing Technologies Mockito, RoadRunner, Mockk (Kotlin), Espresso (Kotlin Integrated), Legacy Expresso
Web technologies HTML, HTML5, XML, JSON, JavaScript, JQuery, Node.js, AngularJS (with UI-Router), Android WebView, Bootstrap, and CSS
Data Base MySQL, PostgreSQL, DB4O (Object-Oriented Database), Android Room Bluetooth Remote Bluetooth printer/CC swiper @ Mobile POS IDE Android Studio, Eclipse
Build Tools Gradle, Maven
Scripting Languages HTML, JavaScript, jQuery, AngularJS, PHP Methodologies Agile Scrum using JIRA, MVVM
Version Controls GitHub, Subversion SVN
Operating Systems Windows, UNIX, Android, and Linux SDKs Synchrony Bank SDK and others I cannot remember PROFESSIONAL EXPERIENCE
Senior Android Developer, Walmart Labs (Sam’s Club) January 2022-Feb 2025 I have been working on the Sam’s Club e-commerce mobile app for Android mobile phones. My first project was to develop all the new software to handle the sales of liquor by mobile phone order. I did 100% of the software development on this project by myself. The alcohol can be either delivered to the customer’s house or the customer can pick up the alcohol at a Sam’s Club store. This was a particularly complex project because the alcohol laws are different in nearly every state and the app must ensure that sales do not violate city, county and state laws. For example, alcohol cannot be sold at all in some counties and cannot be sold on Sunday in other venues. This project was completed on time and was successfully rolled out to 600 Sam’s Club stores. No bugs have been reported at this time.
I have since worked on many other Walmart projects and I am a valuable member of the Android team at Walmart.
Senior Android Developer, GoDaddy, Phoenix, AZ June 2021-December 2021 In my last week on this project, my supervisor at GoDaddy sent me this message:
“Jim, I just wanted to personally reach out and thank you for all of your contributions to the project this year. We wouldn't be where we are today without you, and we will definitely miss having you around.”
Mat Cartmill, GoDaddy Corporation
This was a seven-month contract that was planned to terminate at the end of the year. I was a senior developer on the new GoDaddy payments Android mobile app, which was released to the Google Play Store in September, 2021. The app is written totally in Kotlin and uses the most advanced Kotlin and Android technology available today. This includes coroutines (although I somewhat prefer RxJava), Koin dependency injection, and a very robust and clean MVVM architecture based on Jetpack technology. I was responsible for most of the payment transaction code. I wrote a money formatter and a universal currency manager. I refactored a large part of the app to include these new modules of code. I wrote many of the unit tests for all parts of the app. A few of the best things that were said to me by GoDaddy management were that
(1) I fixed more bugs than anybody else in the final stages of the release effort.
(2) I was particularly lauded for my tendency to take ownership of projects without being told
(3) I was praised for the money formatter and currency manager as “a great improvement”
(4) I was considered a leader for more junior people and never let a problem go unsolved
(5) I was considered one of the most prolific closers of tickets Lead Android Developer/Architect, ROM Technology, Brookfield, CT Oct 2020-Oct 2022 When Florida Software was selected to do this project for ROM Technology, there were no other developers on this project. Florida Software was the first. Initially there was no existing software at all. Florida Software adapted its current Kotlin software for this project. There are at least two advantages to this approach: (1) The initial software for the app can show immediate progress in a very short period of time. In the ROM Technology case, Florida Software adapted its own Kotlin Software for the first 8 screens in one week with one person doing the work. That’s because Florida Software already has working software than can be easily adapted to just about any Android project, and (2) The usual approach to developing an app is to hire a lot of developers and QA people and then start throwing them Agile stories. This very rarely results in a superior product, because each developer creates the software that he or she is most comfortable with. Thus, If there are 8 developers on the project, code is developed using 8 different coding styles and that is almost always an unmitigated disaster. A project needs a single, capable leader that does the initial work and then requires other developers brought on to the project later to use exactly the same coding styles that were developed by the leader. Android Reverse Engineer Targeting Malicious Apps, McAfee/Google Aug 2020-February 2021 Beginning in August I started working on an Android Reverse Engineering (RE) project for McAfee/Google. In Android apps, reverse engineering is the process of understanding how the software functions internally and then reusing the information to determine if the app is potentially malicious. These are a few reasons for reverse engineering Android apps:
• Read another’s code to determine if the code is intended to be malicious or is accidentally malicious
• Find vulnerabilities in the code that can be exploited by hackers
• Search for sensitive data that is hard-coded within the software
• Malware analysis
• Modifying the functionality of an existing application Lead Android Developer/Architect, Allstate Insurance, Irving, TX Jan 2020-Aug 2020 During the time from March 2020 to the present, I have been working under contract for Allstate Insurance in Irving, TX. This is a new app, and I am the lead developer. My current project is to develop a sphere (globe) with dots on the surface. The sphere must be able to rotate in 3 dimensions and zoom in- out. I reverse-engineered the code from a C version of the globe rotation technology and ultimately created Kotlin software to do the required rotation and zooming. When a dot on the globe is tapped, the globe autorotates using Android animation to bring the tapped dot to the center of the globe. When the RecyclerView at the bottom is scrolled left or right, the globe rotates to the dot associated with the tile on which the scroll finally lands. The animation had to be done as a series of small animations, because a single animation did not render a natural-looking globe when rotated through a large angle. A screen shot of the globe is seen below.
Lead Android Developer/Architect, Green Dot Bank, Pasadena, CA Aug 2019-December 2019 I worked at Green Dot Bank to create a UX solution for a design that (to my knowledge) has never been attempted before, outside of a few gaming apps. The basic idea is to allow the user to choose a new
“theme” with the click of a single button. The figure below shows two different themes that can be switched by the user. The content is the same on each screen, but the appearance is completely different in the two themes. The implementation methodology for this technology uses Android data binding very heavily. For example, the main ViewModel for the dashboard screens has 420 data binding observables, for drawables, text color, text size, text font, margins, etc. The methodology uses an MVVM architecture, and the efficiency of MVVM was shown recently when the data models had to be significantly changed, but the ViewModels were changed only slightly and the XML files were not changed at all. This is perfect example of loose-coupling between view and data, and it is the very essence of good mobile app design. I was the team lead, I developed all of the initial infrastructure code using Android data binding and I did all the theming for the most difficult screens. I also wrote the animation for and implemented the very complex, customized bottom navigation bar. The people who worked under me used my architecture to complete their theming requirements. This app uses Kotlin and Jetpack exclusively. During the first four months of this project I put almost 1300 hours into the project, which was subject to a severely limited amount of time for completion. Senior Android Contractor, SiriusXM, Dallas Aug 2017-August 2019 During the time from August 2017 to August 2019, I worked exclusively as a Senior Android software developer for the most recent SiriusXM Android app. This app is currently available on the Google Play Store, has over 10 million+ downloads, and carries a rating of 4.3. I was a senior contributor to all parts of the app, which consists of nearly 1 million lines of code. In addition to writing several significant sections of code and fixing many bugs, I developed all of the Analytics code and Kochava code. I worked for a few months on the Amazon Fire TV app.
Android technologies used by the Sirius XM app include heavy use of the following advanced Java 8 Android features, and I am expert in all the following:
• MVVM (Model-View-ViewModel) infrastructure
• Reactive RxJava
• Android Data Binding
• Amazon Fire TV app
• Dagger2
• Kotlin extended classes, abstract classes, and interfaces
• Extensive unit testing, including JaCoCo for code coverage
• GitHub used for version control
• Adobe Analytics (and I developed 100% of the SiriusXM analytics technology in use today)
• Apptentive Customer Feedback
• Crashlytics crash reporting
• Ooyala video streaming
• XML layouts and dynamically-generated layouts
• Support for multiple tablet formats with different resolutions
• Bluetooth support and BLE support
• Agile development style using JIRA
Secure Microservices Architecture Designer, FullSecurity Corporation Aug 2015-Aug 2017 After I completed the secure payment terminal development effort prior to August 2015, I spent the next year designing a secure microservices architecture which would be resistant to data theft and damage by external hackers and data theft by malicious insiders, i.e. an unhackable computer system. After this one-year effort was concluded, I decided to focus my extensive Android experience to pursue a full-time career as a senior Android contractor. Lead/Senior Android Developer, FullSecurity Corporation Dec 2014-Aug 2015 After Mobile POS ran out of operating funds in late 2014, the investors asked me to develop an Android- based, secure-payments product that would build on and improve the Android-based Mobile POS product that had been completed. I completed the design and development effort for the Android- based, secure-payments terminal within 18 months, but it was determined that this product direction would not be able to secure funding.
Additional Android technologies used by the FullSecurity secure-payments terminal include:
• OKHttp REST by Square for payment card processing
• Enhanced support for newer tablet/phone formats with different screen widths and resolutions
• RxAndroid and RxJava
• Toolbar replaces Actionbar and new use of Navigation Drawer
• Android Themes and Android Material Design
• Java AES encryption support (plus an implementation of Diffie-Hellman Key Exchange)
• Java EMV (Chip Card) Framework support
Lead/Senior Android Developer, Mobile POS Corporation Dec 2011-Dec 2014 I was chief architect and developer at Mobile POS, where we developed (from scratch) a native-code, Android-based, mobile point-of-sales (POS) system. This system was a successful, working product with over 85,000 lines of Java code and six customers at its peak. The Mobile POS software was marketed to sit-down restaurants and eventually installed and supported at six restaurants at its peak. It is still in use today at one restaurant. The product was technically successful, but the company ran out of financing and was forced out of business. The tablet-to-tablet communication is handled by Android services (based on Apple’s Bonjour technology), which is the most complex part of the Android operating system and something that I am sure the majority of Android software developers today have never used. Senior Full-Stack Developer, Lecere Corporation 2007-Dec 2011
• Developed two sophisticated retail Point-Of-Sales (POS) systems for restaurants and other retail establishments. The systems included code to process authorization, capture, and void of credit/debit cards through the Authorize.NET payment gateway, connecting the app to most merchant service providers in North America. The second system product was a technical success and was deployed at a total of six customers for more than a year.
• Sole developer of the first POS product for Lecere, consisting of (1) a Java server and (2) a JavaScript/HTML/ CSS client. The server was written for a Windows Server OS. It consisted of about 35,000 lines of Java. The client ran in four different browsers: IE, Chrome, Firefox, and Safari. The client code was about 15,000 lines of JavaScript, HTML, and CSS.
• Led a team of three developing a second POS product for Lecere, consisting of (1) a Ruby on Rails server and (2) a JavaScript/HTML/CSS client. The server ran on Engine Yard (Phusion Passenger) Ruby on Rails software at Amazon Web Services. The software consisted of about 35,000 lines of Ruby and JavaScript/HTML/CSS and was all functional, with seven satisfied customers using this software for over a year.
Full Stack technologies used by the Lecere web-services POS system include:
• HTML
• JavaScript
• RxJava
• C++
• CSS
• Ruby on Rails on server side
• Engine Yard (Phusion Passenger) Ruby on Rails Amazon Web Services
• Bluetooth support for printers and credit cards
• HTTP support for receipt printers
• REST
• JSON
• Agile and MVP development style