Tech - December 30, 2016

Tech at Ona: What We Built in 2016

It’s been a big year for the Ona tech team! In this post, we look at what we built in 2016. Ona platform tech in 2016 In 2016 we added more new features to the Ona platform than in the previous two years combined. Here’s a run-down of select features we added to Ona in

Read More

Tech - November 28, 2016

Python Expose Meetup is coming to the Ona Kenya office in early December

If you enjoyed the last Python Expose Meetup, then you definitely can’t miss out on the next one on 3rd December in our Nairobi office. Join James Maringa and Frankie Onuonga for a lively discussion about: Comparisons between basic Python data structures — including looking at fundamental and semantic differences, internal implementation needs, costs of operations, and memory

Read More

Tech - October 25, 2016

Signing Git Commits Using Your GPG Key

For data collection projects we contribute code to, it’s in our best interest to verify the identity of contributors linked to us. The goal is to prevent situations like this totally plausible horror story, where Mike Gerwitz discovered a back door created by his account that he didn’t remember making. We realize signing Git commits using

Read More

Tech - August 11, 2016

Thanks for Attending the Python Expose at the Python Nairobi Meetup

A special thanks to everyone who attended the Python Expose at the Python Nairobi Meetup. The 4 hour session that took place at Ona’s Nairobi office had presentations from Dickson Ukang’a, Co-founder and Director of Engineering at Ona, Vitalis Shisoka, Software Developer at Echo-Mobile and Edoardo Biraghi, Director of Software Development at BRCK. The speakers kept the crowd

Read More

Tech - April 21, 2016

Working with Data in the Unix Shell

I recently gave a talk at a data science meetup organized by the good people at iHub Research, on using Unix shell tools to work with data. It was primarily a hands-on workshop, but the slides I prepared may be useful to those who couldn’t make it. You can find the presentation embedded below.

Read More

Press - April 08, 2016

OpenSRP Nairobi technology sprint, take two!

In mid-March, Ona hosted the second OpenSRP engineering sprint, bringing engineers from around the world to Ona’s Nairobi office. Engineering partners from SID (Indonesia), mPower (Bangladesh), IHS (Pakistan), OpenMRS, ThoughtWorks and Jembi (South Africa) joined the sprint to enhance the user experience and performance of OpenSRP, an mHealth platform that empowers frontline health workers in developing countries to deliver more effective healthcare. Ona is the technology lead

Read More

Press - February 12, 2016

Writing Python Code to Decide an Election

The long awaited video from Ona’s keynote presentation at PyConZA 2014. A while back Ona was given three weeks to write the software that will tally votes in the Libyan elections and decide who wins and who loses. This is not something we could get wrong. We combined agile development with best practices in testing

Read More

Tech - February 07, 2016

Automating Style In Clojure

We do everything we can to improve code quality. Our process includes rigorous code reviews focused on getting the correct level of abstraction, modularity, and reusability. We quickly realized that nitpicking code format and line length was distracting us from our goals. It isn’t that those aspects aren’t important, but that they should be standardized

Read More

Tech - February 02, 2016

Squashing Commits with an Interactive Git Rebase

There are plenty of reasons to get familiar with and start using git’s interactive rebase. You might want to edit a commit message, delete commits, reorder commits, or edit commits. Here we will talk about using it to “squash” (as in combine, merge, or meld) multiple commits into a single commit. In our specific use case,

Read More

Tech - December 04, 2015

Clojure Destructuring Gotcha!

Given the following function definition, what would you expect to happen if you ran (hello :person nil)? (defn hello [& {:keys [person] :or {person "Rich"}}] (str "Hello, " person)) (hello) => "Hello, Rich" (hello :person "Hickey") => "Hello, Hickey" (hello :person nil) => "Hello, " I’d have expected (hello :person nil) to have the same result as calling (hello),

Read More

1 2 3 4 5