Dependency injection with Kotlin using the Koin library


Dependency injection: Kotlin it with koin


Many experienced Java Developers are familiar with Dagger, some may have used libraries like Guice, Weld or the Context Dependency Injection (CDI) available in the Spring framework for managing dependencies in their apps. With the adoption of Kotlin you may be wondering which tool/library to use for dependency injection in your next app. Whereas you can use Dagger (for all Dagger lovers out there) in a Kotlin app, thanks to the 100% Kotlin interoperability with Java, there are a couple of Kotlin libraries designed specifically for this. Our focus here will be exploring the Kotline dependency injection library Koin, but another library that’s worth mentioning is KODEIN.

 Continue reading Dependency injection with Kotlin using the Koin library...

How to Build a Slack Bot for Reporting Standups


After joining Ona as a Software Engineering Intern, I was tasked to compile and post standups for all the members of the project we were working on. At first it was a great experience, and even better we could alternate shifts with another intern. However, as time went by the task was too repetitive and had lots of back and forth reminding team members to send their standups. I met another colleague from another team who had the same issue and had thought of building a bot that would compile standups for various teams and individuals. After some hours of reading and re-reading the Slack API documentation we realized we could make the idea a reality. We decided to build a Slack app using Node.js. This would save us from doing mundane compiling tasks and create a better experience for everyone involved… a.k.a laziness for the win :p. Since the app is pretty huge I will split the tutorial into various posts.

In this tutorial, we’ll be building a Slack app called autostandup that provides functionality to submit standups. Our app will allow users to submit their standups by invoking a slash command on Slack, which will fire up a dialog/form to submit their standups and send a confirmation message to the user once the standup is persisted to the database.

 Continue reading How to Build a Slack Bot for Reporting Standups...

A Dive into The World of Data at Ona


It’s been an engaging and enlightening week. I came into the Ona offices certain that the internship would demand from me nothing short of diligence and strong work ethics. But I did not expect that to be the case from my first day. I expected a day of orientation, but that lasted for an hour. I had a brief introduction to my coworkers and the next thing I was shown my workstation and given a laptop.

From my short observation, it was evident that the accolades Ona has received this year, from being selected as one of TIME magazine’s Top 50 Most Genius Companies as well as being the 2018 Gavi pacesetters for Ona’s OpenSRP app did not land at their doorstep by mere chance. It was a Monday morning and everyone was deeply engrossed in their work. I was inspired by just seeing how immersed my coworkers were in their work, be it out of passion or assiduity. The work environment here is fast-paced, yet the culture and atmosphere is relaxed. In my opinion this allows the employees to be themselves and get into their individual element. This in turn, allows the team to be collectively productive.

 Continue reading A Dive into The World of Data at Ona...

My Journey in Functional Programming at Ona


Day one

If someone told me last year I would be doing a different programming language in 2019, I would have shrugged it off. I had no prior experience with Functional Programming before I joined Ona. Yes! You heard me right, this was a completely new concept to me coming from an Object Oriented Programming background. A little history about my programming journey: I began with Ruby on Rails, a Ruby web application framework, before learning the language itself. A little bit odd, but it did spark my interest.

Clojure Lambda

My first day at Ona began with an introduction to two engineers on the Zebra team, Mark Ekisa and John Mwashuma. Zebra is the front-end piece to Ona Data, a data management platform used for real time data collection and analysis written in Clojure and ClojureScript. Just in case you get confused like I did — it’s just a random name they gave themselves!

 Continue reading My Journey in Functional Programming at Ona...

Ona featured on the Code Louder Podcast


Just posted yesterday, checkout our podcast interview with Code Louder.

In this episode, we talk with Dickson Ukang’a, co-founder and head of engineering at Ona, at their office in Nairobi. Ona is building a platform for smart data collection and analysis to enable governments and development organizations to make data-driven decisions. We discuss working with geographic data, how to build effective partnerships, the importance of testing, and technology leadership in Kenya.