Tan Jun Rong

Android Programmer who likes writing blogs, reading, coffee, snowboarding.
@_junrong
Tan Jun Rong avatar

Recent Posts

  • First Taste of Android Jetpack Compose

    Let’s get a first taste of the Android Jetpack Compose Library that will be replacing the current Android View as the new UI toolkit.

    Published on
  • Android: Reactive View Part III - Rx Subjects

    This post is the 3rd part of the series of blog posts I'm writing about making Android view layer Reactive. Android Reactive View Part I Android Reactive View Part II Android: Reactive View Part III - Rx Subjects ← This Post Is Here! In Pa...

    Published on
  • Android: Reactive View Part II

    Overview This is the 2nd post of the 3 part blog posts: Android: Reactive View Part I Android: Reactive View Part II ← This Post Is Here! Android: Reactive View Part III. A simple example is compared between reactive and non-reactive view...

    Published on
  • Android: Reactive View Part I

    This post is the 1st part of the series of blog posts I'm writing about making Android view layer Reactive. Android Reactive View Part I ← This Post Is Here! Android Reactive View Part II Android: Reactive View Part III. RxJava is not onl...

    Published on
  • Twist As Your Workplace Communication Tool?

    I have been using Slack for a few years as the team communication tool at work. I loved it so much when I was introduced to it, but after using it for a longer time, I noticed some shortcomings. In my previous job, I worked in a company of a few h...

    Published on
  • Android - Saving secrets with buildSrc

    Api keys and secrets In almost all Android projects, we need to save a few API keys or secret client ids. The straight forward way would have been committing directly into the repo. While this makes the project the easiest to setup. It's is not a ...

    Published on
  • Android Tips: Code Generation with Live Template

    For a long time I didn't know that Android Studio provides the feature to generate code. After knowing about this, I've been spamming only the logd generation for Log.d(TAG, "message"), but I never tried to configure my own Live Template. Recently...

    Published on
  • Android - MVP Increases Testability

    Testing MVP with mockk MVP/MVVM/MVI/Redux. Ouch... It's really hard to keep up! Recently there are many discussions about architectures for Android development. I have trouble trying to keep up myself. 😨💦 However, I don't think it's importa...

    Published on
  • Implementing BiDirectional ViewPager by overriding onInterceptTouchEvent & onTouchEvent

    BiDirectional ViewPager Android provides us with many widgets for the UI, but sometimes we need a particular behaviour that cannot be achieved by the provided ones. That is when we need to extend the existing one and make a custom view. Today I ne...

    Published on
  • Logo Design Tips by A Complete Beginner

    I am a programmer at my day job, but I've always been interested to learn how to draw and design. Even in my programming world, I tend to pick up tasks that are related to UI or UX. Now that we're building Bloggie and all of us are programmers, w...

    Published on
  • PART 1 - Understanding the Paging Library, PagedList

    Background Almost every application that is used to show some sort of data needs to have pagination functionality. Previously, I used to implement my pagination by manually calculating the page number. The problem by doing this is having to copy t...

    Published on
  • The making of AccordionView using ConstraintLayout

    What is Accordion View? Accordion View is a view that consists of a series of titles, and when you click on a specific title, the detailed description will be expanded. What makes it special is that the expanded view will close itself once another...

    Published on
  • Introduction to ConstraintSet

    Constraint Layout ConstraintLayout has been around for a while now. There are a couple of ways to define constraints for ConstraintLayout: using xml using layout editor in Android Studio using the code to define programmatically So far I'...

    Published on
  • Dagger 2 for Android, Part III ー The @Qualifier and @Named Annotation

    Discuss about how to use the @Qualifier and @Named annotation in Dagger 2.

    Published on
  • Dagger 2 for Android, Part II ー The Basic Usage

    This article is about the basic usage of Dagger 2 library for Android development. I will discuss the usage of basic Dager 2 annotations: @Inject, @Module, Provides and @Component. This is part of my Dagger 2 blog series: Dagger 2 for Android,...

    Published on
  • Dagger 2 for Android, Part I ー What is Dependency Injection?

    If you're doing Android development, you might have came across the Dagger 2 library, which is used for Dependency Injection. Many Android developers find it useful, but this is a library with a steep learning curve similar to RxJava. I myself str...

    Published on
  • Revamp of Bloggie's Markdown Editor

    In Bloggie or any other blog platform, the content is the meat of the platform. In order to make great content, the Editor plays a big role. Therefore, we have been paying a lot of attention to improving the Editor than other parts since the begin...

    Published on
  • Building Bloggie ー Summary #3

    Since we started building bloggie, we decided to make it a point to write a summary every month. It serves as a reality check for ourselves as it gives a good visualization of what we've accomplished so far. 2 months have passed since the last tim...

    Published on
  • I wrote 2 useful extensions in Kotlin

    Kotlin programming language has been gaining popularity since it first appeared in 2011. After it gained enough momentum and mature enough as a language, it was recognized as the official language for Android development in May 2017. The usage ha...

    Published on
  • Functions & Lambdas in Kotlin

    While coding at work today, I discover a few ways for referencing methods in Kotlin. In Kotlin, we can declare and pass lambda like any normal type objects into methods. Then they can be executed by calling methodName.invoke() or directly using m...

    Published on
  • Why building bloggie.io?

    It all begins when I tried to start my own technical blog. A few months back, I gave a presentation at work about Android Tips (I'm an Android Engineer). My team mates loved it, they ask me if I can share it on a blog or somewhere, they want to re...

    Published on
  • Learning to draw on a weekend

    I made Android program for a living, but I'm always amazed by how well people can draw. I'm currently working for a company making Recipe app. They think cooking can connect people, and make people happy. I think drawing can do the same too. A dul...

    Published on
  • Month #2: Summary

    It's January now, and Tokyo is sooooo cold this month (ok, maybe it's only soooo cold to me, I'm from a Tropical country =P). Well, at least the cat thinks it's cold too... (photo taken from a restaurant in the ski resort) We've both went on ...

    Published on
  • Month #1 Summary

    Programmer's blogging platform If you are a programmer, like myself, a big part of your work is to program of course! Another big portion of it would be having meeting, random coffee break, pasting cat memes in Slack. ಠ_ಠ Another big task is har...

    Published on
  • How to use Kotlin's 'it also let apply run'

    Kotlin is being officially used in Android development, and every Android developers are probably busy picking up Kotlin. That includes me. I stumbled upon these few magical methods during my Kotlin journey: They are magical because they can p...

    Published on