It’s no secret that one of the greatest software design principles when extending functionality is to consider using plugins (where possible)*

I will keep this post short and avoid repetition, if you don’t know what a plugin system is then now would be a good time to find out from here. Now that is out of the way, let us create a small use-case that we need a solution for.

Problem statement

Given a broad category of devices that share similar functionality and a communication interface with indecent protocols, in this case let’s call them inverters (for a solar system). These inverters…

androix.startup is a new addition to the Jetpack suite of libraries. Read more about it here

Koin is a pragmatic lightweight dependency injection framework for Kotlin developers. Written in pure Kotlin using functional resolution only: no proxy, no code generation, no reflection!


I’m sure you’ve read a lot about writing good code using best practises like first five object-oriented design(OOD) by Uncle Bob, if you haven’t now would be a good time to quickly touch up on the top S.O.L.I.D: The First 5 Principles of Object Oriented Design as we will make some references to some of these principles.

Problem Statement


Additional quick find and replace for anyone who works under any linux env or has wsl. In your root project directory run:

find . -name "*.kt" -type f -exec sed -i "s/import kotlinx.parcelize.Parcelize/g" {} \;

More info about "find"

Maxwell Mapako

Freelancer and open source developer, growing my skills one byte a time :)

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store