Ona Beta: New Features Roundup


On our quest to allow anyone to collect, understand, and use data for humanitarian purposes, we’ve been introducing new features on Ona Beta for months. We’ve rebuilt the service from the ground up with new code and a new look, added features for collaboration and improved data management, and built a support team to help our users when they run into problems. Here’s a summary of what’s new in Ona Beta.

 Continue reading Ona Beta: New Features Roundup...

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 to the individual libraries.


Hatti is set of Om components for viewing structured data in tables, charts and — if it’s geocoded — maps. Hatti is a ClojureScript library built using Om, a ClojureScript interface to Facebook’s React. This example connects Hatti to an Ona dataset storing information on stolen Nepalese art. This snippet of code handles most of the functionality:

 (let [data-chan (raw-get (ona-urls/data-url "data" dataset-id))
       form-chan (http/get (ona-urls/formjson-url dataset-id))
       info-chan (http/get (ona-urls/data-url "forms" dataset-id))
       data (-> (<! data-chan) :body json->cljs)
       form (-> (<! form-chan) :body flatten-form)
       info (-> (<! info-chan) :body)]
   (shared/update-app-data! shared/app-state data :rerank? true)
   (shared/transact-app-state! shared/app-state [:dataset-info] (fn [_] info))
   (integrate-attachments! shared/app-state form)
   (om/root views/tabbed-dataview
            {:target (. js/document (getElementById "map"))
             :shared {:flat-form form
                      :map-config {:mapbox-tiles mapbox-tiles}}
             :opts {:chart-get chart-getter}})))

You can see the complete code here. We use Hatti as the data visualization library in the new version of Ona, but it will work with any dataset and schema in a compatible format.


Milia is a Clojure and ClojureScript client for the Ona API. Milia uses the clj-http and cljs-http libraries to make both server-side and client-side requests to an Ona compatible application server. Milia is built using the specifications in the Ona API and will work with any server that is compatible with the Ona API.

Currently all API endpoints are accessible using Clojure, however only the dataset endpoints are available in ClojureScript. As of this writing we are using cljx, but we plan to transition to Reader Conditionals after Clojure 1.7 is released.

Zebra Lite

Zebra Lite is a light-weight version of Ona, that aims to replicate the core features necessary for a mobile data collection and analysis tool: a login/account, form listing, and a data view. It is built using Milia to fetch data from Ona (or any Ona compatible API) and Hatti to display data. It is written in both Clojure using the ring HTTP library and the Compojure routing library, as well as in ClojureScript using Om and Secretary.

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!

uptime stats

 Continue reading Making Ona reliable and resilient...

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


Schools in Dakar

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 to contribute data back whenever possible, but surely couldn’t we be using OSM to do more?

The problem for me with OSM is that is always seemed a bit “flat”. I knew the data in OSM is incredibly rich. I could clearly see a neighboring school on a map, for example, but I just didn’t fully grasp how to access it’s underlying properties. Key features remained “baked” into the map. Discovering OSM Overpass and finally understanding OSM as a result, completely changes everything for me.

 Continue reading Open Street Map as a global "check-in" service...

KLL Humanitarian Quake Map now available as basemap in Ona


data image Source: Remembering the Lost - Map of Stolen Sculptures from Nepal

The Nepal earthquake has shown how important open map data from Open Street Maps (OSM) can be in a humanitarian crisis of this magnitude.

Our friends at Kathmandu Living Labs and MapBox worked together to develop a print friendly map that highlights key infrastructure, critical after an earthquake, like water points and schools. The ability to build tailored maps, that highlights key data for a specific function, is one of things about OSM combined with tools like Mapbox that really excites us. This map is an early, but important, example of that.

KLL has been working to make these maps avaiable to first responders like the Canadian Forces DART to aid in their rescue efforts.

We’re proud to make the KLL Humanitarian Quake map available as a default basemap option in Ona. If you are a group in Nepal, helping with the response, and are thinking about using Ona please let us know how we can help.