HactoberFest Challenge: Completed
Tags: hacktoberfest, android, opensource
Published: 2018-10-30 19:12:00

## Thanks

- Thanks to DigitalOcean, Github, Twilio for organizing the #HacktoberFest event
- Thanks to *Beautus S Gumede* for the repo {% github sduduzog/slim-launcher %}
- Thanks to Dev.to community, as there was never a day without a post on **#hactoberfest**. It helped as encouragement and sort of reminder.

My original plan was to submit PRs for documentation for some repositories. However, then I moved to repositories related to Android since I can contribute some of my skills. As I was looking for a repo, I came across this [post](https://dev.to/sduduzog/how-to-write-tests-for-an-android-app-3041), and the repo became my choice for HactoberFest Challenge.

### Why I chose the repo

- First, it's an Android App at early stages. It provided an opportunity to add features while exercising my android skills.
- I am working on a feature at work based on the idea from the app. So it's only fair, I give back something.
- The app is written in Kotlin, which helped me to understand and practice writing code in Kotlin. At my work, We are still in the early phases of moving from Java to Kotlin (less than 5% progress).
- Finally, It felt good to answer in a more practical way for the question asked in the post.

### What did I learn from this

- A bit more of Kotlin, how simpler to do few things compared to java.
- Espresso UI Testing: We are planning to add Espresso UI testing at work, and it helped me practice a bit.
- Continuous Integration and how to integrate [CircleCI](https://circleci.com) for Android apps. I have tried **CircleCI** before, so it didn't take much time to do for the second time. However, I paid a bit more close attention to configuration details this time and learned a couple of new tricks.
- I came to know about [Codacy](https://www.codacy.com) through a senior colleague, and find it very useful in analyzing the code quality when practicing with this app.
- Codacy provides code analysis through different static code analysis tools like PMD, CheckStyle. As I was fixing the warnings provided by Codacy, I sometimes need to refer to Java/Kotlin docs to make the fixes. I learned a bit more on Kotlin [reified type params](https://kotlinlang.org/docs/reference/inline-functions.html#reified-type-parameters).
- I have never used, 'git squash' before; I usually create multiple smaller commits, but when I submit the PR, I tried git squash to squash all smaller commits into one.

### List of references as I was working on PRs

- [Testing DB from Android Developer](https://developer.android.com/training/data-storage/room/testing-db)
- [ProAndroidDev Article on Testing Android Architecture Compoennt: Room](https://proandroiddev.com/testing-the-un-testable-and-beyond-with-android-architecture-components-part-1-testing-room-4d97dec0f451)
- [CircleCI Integration](https://circleci.com/docs/2.0/language-android/)
- [ProAndroidDev Article on CircleCI Integration](https://proandroiddev.com/circleci-with-android-continuous-integration-3ecd98f92bd)
- [Espresso UI Testing](https://developer.android.com/training/testing/espresso/)

### HactoberFest Plan

```md
- [x] Submit PRs for slimlauncher and get 'hacktober' t-shirt
  - [x] PR-1: Initialize Testing Framework
  - [x] PR-2: CircleCI integration
  - [x] PR-3: UI Testing using Espresso Framework
  - [x] PR-4: Improve Code Quality using Codacy
  - [x] PR-5: ~~Firebase Test lab~~ Grid Layout for listing apps
  - Bonus: Fix Readme
    - Add Screenshots
    - Add Build status
        [![CircleCI](https://circleci.com/gh/subbramanil/slim-launcher.svg?style=svg)](https://circleci.com/gh/subbramanil/slim-launcher)

- [x] Add comments in [original post](https://dev.to/sduduzog/how-to-write-tests-for-an-android-app-3041)
- [x] Write a post on sharing the HactoberFest experience and Thank the community
```

### What my plan from now on

It was the first time I have contributed to the community through Github. Through the experience, I enjoyed the learning process and the satisfaction when the changes you proposed gets merged.

I am going to watch out to the posts by **Ben** on *Who's looking for open source contributors?* and contribute at least once a month.