Open Source

I host my open-source projects on GitHub. Most publicly hosted projects result from scratching my own itch or projects with specific learning goals. This page lists the projects that I believe are worth mentioning 🙂

• Tumbleweed—Grok large Kotlin and Java classes

Role Creator

Languages Kotlin, JavaScript, HTML, CSS

alt Tumbleweed

Background Tumbleweed can help understand large Kotlin and Java classes by parsing the bytecode and creating a visualization. The tool aims to help developers understand the underlying domain by building a vocabulary from types and tokenized members. In addition to the vocabulary, it visualizes relationships between class members and the call graphs between functions.

Link https://github.com/redgreenio/tumbleweed

• Maestro—UI testing for mobile apps

Role Contributor

Language Kotlin

Background Maestro is an open-source UI testing tool from Mobile.dev. It is the easiest way to automate UI testing for your mobile apps. I contributed to the app in the following ways.

  • Add support for setting location on iOS devices.
  • Add support for taking screenshots.
  • Migrate tests from JUnit 4 to JUnit 5.
  • Refactor portions of the code and eliminate code smells such as long conditionals and primitive obsessions.

Link https://github.com/mobile-dev-inc/maestro

• Cardbox

Role Creator

Language Kotlin

Background jQAssistant is a fantastic tool that lets developers query and analyze the software structure of huge codebases. The amount of information one can query via the IDE is limited, but jQAssistant can go beyond these limitations. However, working with Android artifacts (APK/AAB/AAR) is not supported. Therefore, we capture the compiled .class files and use them for analytics. Cardbox automates this process and creates JAR files for use with jQAssistant. Use cases include but are not limited to—planning technical debt, legacy code work, understanding software architecture, planning KMM migration, etc.,

Link https://github.com/redgreenio/cardbox

• ApprovalTests.Java—Assertions for legacy software

Role Contributor

Language Java

Background As I started working with larger clients, dealing with legacy code became inevitable. I was looking into tools and techniques that could make my life easier while working with these codebases. One day, I came across Emily Bache's tweet about approval testing and how it makes it so much easier to bring legacy codebases under test. Eventually, ApprovalTests became a part of my testing strategy when dealing with legacy code as well as building features.

I now mob program with Llewellyn Falco (creator) and Lars Eckart (maintainer) ever since the 10.3.0 release.

Link https://github.com/Approvals/ApprovalTests.Java

• ApprovalTests—IntelliJ Plugin

Role Creator

Language Kotlin

Background ApprovalTests have become a part of my testing strategy while designing new systems and working with legacy code. While using ApprovalTests without tooling, developers have to work with approved and received files manually. It is also helpful to have a visual indication to identify approval tests from other kinds of tests. This plugin solves both problems. However, this is only a start, and the end goal is to make working with ApprovalTests easier.

The plugin is still in development and has support for Kotlin. We will add Java support after the first public release.

Link https://github.com/Approvals/ApprovalTests.plugins.intellij

• Rune—CLI for conventional commits

Role Creator

Language JavaScript

Link https://github.com/redgreenio/rune-cli

• Fluid—A scaffolding tool like Yeoman

Role Creator

Language Kotlin

Link https://github.com/redgreenio/fluid

• Simple

Role Contributor

Language Kotlin

Link https://github.com/simpledotorg/simple-android

• Versioning TDD Kata

Role Creator

Language Kotlin, Java

Link https://github.com/ragunathjawahar/versioning-tdd-kata

• Keylines—Material grids for UI development

Role Creator

Language Java

alt keylines

Link https://github.com/ragunathjawahar/keylines

• Android Saripaar

Role Creator

Language Java

Link https://github.com/ragunathjawahar/android-saripaar

• One Way

Role Creator

Language Kotlin

Link https://github.com/ragunathjawahar/OneWay

• Liberate

Role Creator

Language Ruby

Link https://github.com/ragunathjawahar/liberate

• Adapter Kit

Role Creator

Language Java

Link https://github.com/ragunathjawahar/adapter-kit

• Bench Press

Role Creator

Language Kotlin

Link https://github.com/ragunathjawahar/bench-press