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

Tech - August 21, 2015

Nairobi Functional Programming Meetup 3

On Wednesday, we had the pleasure of hosting the third Nairobi Functional Programming Meetup, with Larry Weya giving a brief introduction to Erlang & Elixir, and sharing his experience using the platform as part of the team behind eCitizen. In what is emerging as a pattern, the post-talk conversations were as illuminating as the talk itself. We’re planning a hands-on workshop for

Read More

Resources - June 02, 2015

Introducing three open source libraries for working with Ona and data

We are proud to announce preview releases for three Clojure/ClojureScript open source software libraries: Hatti, Milia, and Zebra Lite. We are actively working on and improving these libraries for use in our own software and by others. In alphabetical order the contributors to these libraries are geoffreymuchai, pld, prabhasp, royrutto, ukanga, and wilo99. We will followup on this post with additional tutorials and introductions

Read More

Work - May 30, 2015

Making Ona reliable and resilient

Last year, we experienced a few small periods of downtime. We made changes to bring this up to 99.8% API uptime in 2015. However, the remaining 0.2% bothered our engineering team, so after additional work, we recently hit a rewarding milestone: 30+ days of 100% uptime on our API and front-end site! The first big

Read More

Work - May 16, 2015

Open Street Map as a global "check-in" service

Getting more out of Open Street Maps? At Ona, we’ve always been big fans Open Street Maps (OSM). What’s always bugged me is I felt (like many groups), we’ve failed to fully understand and leverage the incredible wealth of data that OSM represents. Sure, our basemaps are powered with OSM data. And yes, we encourage partners

Read More

Tech - April 21, 2015

Ona at the Nairobi Functional Programming Meetup

 Okal Otieno and Roy Rutto from Ona were the featured presenters at the inaugural Nairobi Functional Programming meetup. The meetup was conceived by Okal and Roy to “discuss the core concepts of functional programming, why use it, and experiences using it.” The iHub UX Lab graciously hosted.  Okal started off by explaining how functional thinking can

Read More

Tech - August 15, 2014

Pallet Multiuser Configuration

The last time we talked about Pallet we described using a pallet.clj file in concert with Leiningen to bring up remote servers, configure web applications, and deploy new version of web applications. We glossed over the details required for sharing deploys amongst a group of developers, i.e. allowing multiple developers to deploy to the same web server. These details were obviously

Read More

1 2 3 4 5