October 2016 - May 2018 (1 year, 7 months)

Software Developer (Android)

Involved in developing versions 2 and 3 of an Android app for a TV show.

Technologies used: Java, Android Framework, RxJava, SugarORM

Nothing extraordinary. Just finished the tasks assigned to me.

But this time, because I already have a better understanding of polymorphism (and its use), and the SOLID principles, and other things related to software design, I tried to use these knowledge in my coding.

  1. I learned how to work on a Java platform.

    Before this job, I only knew how to do real world apps using .NET.

    Doing Android made me more confident that I can also do work on other platforms. (Big thanks to my employer for giving me this job even though I had almost no experience with Android development.)

  2. Even though we were using RxJava in our project, which others say makes dealing with threading much easier, there was a time where I had to deal with what they call a race condition with this threads thing while working on version 2 of the app.

    It was hard. The bug was intermittent. It was hard to find, [partly because that part of the project uses RxJava in a wrong way(?) After I few weeks/months working on the project I discovered that when using RxJava, methods must return Observables all the way up from the data source to the presentation layer, to avoid memory leaks and so that they can be easily composed.

    But I'm not 100% sure if the wrong way of using RxJava is truly the reason for that bug. Perhaps it was just my ignorance on how to deal with threads. Luckily, that feature was removed during the development of version 3 of the app. Yehey!

    I still have to learn more about this threads thing.