"I'm Not Convinced We Know Anything"

Book Review: Digital Kenya — Bitange Ndemo & Tim Weiss

Book Review: Digital Kenya — Bitange Ndemo & Tim Weiss

This is a must read for anyone curious about the evolution of the ICT scene in Kenya. It beautifully highlights the nuances of the Kenyan “techpreneurship” space. The book has a number of different contributors with diverse expertise from policy to business, tech and government.

While quit a lot has changed in the industry since it was written a few years ago, and some of the success examples might have already failed and faded, it still packs invaluable information.
I was mostly impressed by how what is now obvious and indispensable like MPESA and the fiber optic cable were highly contested by even well-intentioned people in the beginning. But then again hindsight is 20/20.

It’s clear that Silicon Savannah might have been overly romanticized, but it’s new territory and it’s a learning process. There’s a high failure rate of startups in Kenya, and little to show in terms of profitable ventures but we can’t dismiss the sector and say it’s not going to work. What needs to happen is to appreciate the uniqueness of our problems and develop solutions that work with the local context without borrowing too much from the other silicon valley.

4 Ways Safaricom Can Improve Their MPESA Daraja APIs

Safaricom last year launched their much lauded new APIs that were aimed at making integrations faster and exposing additional endpoints to enable businesses to do more with MPESA services. I’ve interacted quit a bit with it and I can bet my Facebook data on its impact.

Getting started involved just signing up and filling some riff raff data and in a few minutes you could be running test in the sandbox environment. Of course paybill applications is different issue but the API integration is not the dragged out process it used to be with monstrous MS Word documentations and unfriendly XMLs.

It’s almost all sunshine and rainbows, but not quite. Here is a couple of things I think would greatly add to this progress:

  1. Retrieve Transactions: There should be a way for users to retrieve C2B and B2C transactions and filter by by date among other parameters. At the moment the only way to access historical records is by manually going to the MPESA portal and viewing/downloading CSVs.
  2. Retry Callbacks: What happens when a C2B or B2C callback doesn’t get to you? At the moment, apparently nothing. A simple retry mechanism when the third party is not available or hasn’t properly acknowledged a callback would go a long in ensuring business complete their transactions in time.
  3. Name Verification: It would be great to be able to the name under which a phone number is registered. This could be particularly helpful for doing B2C transactions where you want to confirm that you are paying the right person before the completing the transaction.
  4. Other minor comments are possible use of better chat support channels. What is there at the moment doesn’t live up to Daraja’s standards. Connection timeouts mean starting all over again, entering your info, query and probably getting a random support person. There’s no chat history. Something like Slack or Intercom would work very well, and ensure everyone’s happiness for many more chat support sessions to come.

Otherwise, Daraja is an amazing set of APIs and among the best APIs in the FinTech space that I’ve worked with.

Easing The Pain Of Mobile Money Transactions

Despite the little conveniences it offers, I bet many will agree that a wallet is not the most pleasant thing to carry around. And using physical cash isn’t any more fitting. So when I joined Beyonic at the start of last year, I was inspired to rid myself of the wallet completely and use mobile money as much as possible.

Now in the developed world where credit cards are the order of the day this wouldn’t seem like a compelling experiment. However things are a lot different here in Kenya, with the country being every journalist’s and researcher’s go-to mobile money case study. And in the meantime a growing number of developing countries are with mixed results easing out of the paper money economy.

Nearly 60% of Kenyans use MPESA, transacting over Sh15Bn daily. More and more businesses are adopting Lipa Na MPESA, a service that allow customers to use the service to pay for goods and services. You can drive through a petrol station for example and use your phone to pay. Or dine at a restaurant without worrying how much physical cash you have in your pocket.

However, integration for businesses is still a tedious process for business. Customers are also in pain because the payment procedure is a 4 step process that requires you to memorize a bunch of numbers to complete the payment as @kiriuk discusses here. The many times I’ve been the anxious guy holding up a line at Nakumatt :) One can only act oblivious to the angry stares and dial away.

Enter Beyonic

Beyonic is FinTech company that allows you to go mobile across your business operations and digitize your payment workflow. As a businesses you can make and receive payments in different networks across multiple African countries.

One of the obvious problems we solve is the frustration customers go through with making payments. So that instead of going through multiple screens to make a payment you simply give the cashier your phone number and you get a popup on your phone where you only enter your PIN and the payment is complete. This doesn’t require any technical expertise to get started, but businesses can also make use of the straightforward Beyonic APIs to integrate with the various services.

Electronic payments even in our developing world (thanks to the success of mobile innovations) have become an integral part of our lifestyle. It’s therefore imperative to always improve the user experience.

If you still need inspiration to let go of your own wallet here’s a little nudge: studies have shown wallets might be responsible for your back pains.

Smartwatches Aren’t What They Used To Be

I remember literally twisting my mums arm to get me my first watch when I was about 6 years old. It was a Japanese ‘Asahi’ digital watch that cost KSH 50(less than a dollar – even at those times). Coincidentally, ‘Asahi’ in my mother-tongue translates to ‘I beg you’. But that’s the last watch she ever bought me because the next day after she did, it was not a timepiece anymore but different pieces of plastic and metal that could no longer tell time. Also I didn’t find little people inside that I imagined were responsible for turning the hands of time.

Flash forward over 2 decades later when I set my eyes on the first smartwatch masterpiece. My pupils dilated, my heart skipped a beat et cetera at the sight of the first pictures of the Gear S2.

My idea of a smartwatch has drastically changed ever since I got my hands on the S2 Classic  since I got the S2 Classic on my hands a couple of months ago, but I must say I’m still in love.To be fair though, anyone that knows me knows I love watches.

However, my initial hope that I would be letting go of mobile phones in favor of smartwatches and potentially other wearables remains a dream. Despite the fact that I physically use my phone much less now I’ve come to learn that the watch will  – for the foreseeable future – be just a proxy to the mobile phone. I’ve learnt a few more things as well:

It’s Still A Watch, Aesthetics Matter
The Gear S2 is Samsung’s second generation smartwatch on the Gear S series. It was released in October 2015 and has been touted by many as the best smartwatch currently in the market. It comes in two flavors: there is the Gear S2 sport that has a silicon wristband and the Gear S2 classic that sports a leather one. They both come in 3G and non-3G versions. The former is a little bulkier because of the inbuilt speaker and SIM card.

Apparently, real life is a little different from old school sci-fi films where bulky wrist gadgets look cool. A watch is still a fashion accessory and any tech feature that brings that out differently has to be reconsidered. I think why Gear S2 wins is because it capitalizes on this so successfully: it manages to pack awesome functionality inside a very thoughtful, minimal design.

What Apps?
Samsung Gear S2 runs on Tizen – not Android – boooo! There aren’t as many applications on the Gear store as there are for Android Wear. This is one of the things that initially got to me. I assumed we had all telepathically agreed everything should run on Android from now on. I had my Android Studio fired up ready to start building apps when I realized I would have to use Tizen SDK instead. I actually might have gone for something different if I had know this beforehand. But now, from experience, I’m glad Samsung managed to sneak this little info past me.

I downloaded all the nice Gear apps I came across and also decided out to start out building some of my own. However what I realized over time is that I barely used the apps I installed.

All the games I had downloaded I played two times max just to find out what that would be like. I also got a few news apps that I imagined would come in handy and that I would be using every now and then.

In reality the only time I interact with them is when a notification pops up, which I end prefer to ‘Show on phone’ anyway.

I thought I would use the cute little keypad to reply messages but no. It’s like a little goat. Nice to look at, but you know are never getting one because you can tell reality from wishful thinking.
This is not to say watch apps are useless. Far from it. The Gear S2 comes with awesome and very useful built-in apps. The S-Health app is brilliant. You can use it to track your activity and it nudges you whenever you are inactive for too long. I no longer sit for 12 hours straight writing code. I now go for 30 minute walks everyday at 6pm. At least so that that little gadget won’t tell me I’m lazy.

Notifications, Notifications, Notifications
Calendar apps are awesome for quick glances at your daily schedules synchronized with your phone’s account of course. Weather app is cool, alarm clock etc. The biggest win though is notifications.
No longer shall we be startled by that buzz from our phones during that awkward but important meeting. Or that vibration that won’t quit. The Gear S2 has a very gentle mostly inaudible vibration. And with a quick look at the watch’s screen you can go through the notifications and even send preset replies. Or type if you are old school like that.



The truth is except for a few utility apps, most applications are best served through a counterpart phone app. I’m no longer crazy about building a watch app and instead to focus on phone apps that integrate well with it. So you have for example WhatsApp messages that have a reply button, Twitter follow notifications that you can follow back and such. “You Uber has arrived” notification etc.

Out with the old…
While my idea of what a smartwatch is has changed (I’m still hoping for cool IoT integrations, and maybe a teleportation button) there’s no going back at this point. I tried one of my old watches for a day last week and it felt the same as switching from a science fiction movie to a Hallmark drama.

The fact that I wasn’t getting notifications for my new emails or getting news headlines from the Guardian just bugged me.

Also I could no longer tell how fast my heart was beating or how many steps I had made that day.

The horror!

And I had to take my phone out of my pocket just to change the music? I couldn’t take it anymore. So 2014!

Dear Nairobi Taxis, You’re Fighting Uber All Wrong

Early yesterday rushing from a Java, Chiromo Lane meeting I noticed from about a minute of looking around that there were no taxis in sight. Just then I remembered I have Uber on my phone. Despite having used it a few times my friendship with my taxi guys means it’s still a mental battle deciding what to go for when.

However it was the best choice in this case. I fire up the app and boom, half a dozen Ubers floating around. Half a minute later I was on my way.oprah

They call it the on-demand economy: getting what you want, when you want it. And thanks to mobile and communication technology advances, and new businesses like Uber it’s a reality now more than ever before.

You Want it When? Now! Silly!

As humans we have a constant need to get whatever we want as soon as possible. You don’t want the cab guy you called arriving after you’ve decided you are not going out after all. Uber and other similar services like Lyft and EasyTaxi ensure that you can always get a cab when you need one in the cities they operate.

Then there’s Yum that delivers food to your doorstep from restaurants of your choice. There’s TaskRabbit that allows you to get freelancers that would do pretty much any of your chores. There’s Airbnb because hotels are overrated. And then there’s Tinder that… uhm… eer…

My point is we are at a time where technology is revolutionizing service delivery in a way never seen before. And this is not going to stop anytime soon. There’s going to be much more tech based disruption in every industry that exists. Even the “uber-successful” Uber will have to keep innovating to stay at the top.

Uber only launched in Kenya a year ago. At the time they only offered card payment. But they found out there are not as many active card users in Nairobi as the western countries they operated in. They immediately enabled cash payments and now every normal taxi user can access it. That probably happened in a shorter span of time than it for taxi associations to realize the market was being significantly disrupted.

It’s Inevitable Mr. Anderson

Yesterday I came across a Business Daily article on Twitter titled “Nairobi taxi drivers launch own battle against Uber“.

[spoilers ahead]

What I expected was to read about a great new local innovation that would help traditional Nairobi taxis offer more competitive services. That perhaps they had launched an app based on the Uber hail-a-cab model. But no. Instead it’s about harassment of Uber drivers and an attempt to get the government to regulate Uber out of Nairobi.

It’s a no-brainer that that Uber still needs some fine-tuning by regulators especially with driver vetting. And there’s been tons of demands in different cities for that to happen. However literally fighting it won’t work. Whether Uber gets banned or not people who already enjoy it will have become accustomed to a more convenient way to get around. They will jump on the next thing that sounds nearly as good.

It’s not them, it’s you

A business doesn’t own its customers. Customers like businesses make choices in their best interests. If they are walking away it means something has to change, probably the business model or the product. And losing customers in itself should be considered by any business as very important feedback.

I first saw Nokia on a TV commercial in 1994, in between the 6 hour CNN morning runs on Kenyan TV back in the day – you know, like a normal 7 year old. My first phone was a Nokia. That was in 2005. For that entire time mobile phone was nearly synonymous with Nokia. At least for me, and I’m sure for most other people. But then they smartphones started becoming popular and Nokia dragged their feet at changing. When they did it was too late. Most 7 year olds today have used a mobile phone or at least seen one. Ask them what Nokia is.

How to Fight Change

You don’t fight change.

You change. Adapt. Innovate.

What experience constantly teaches us is that If you stand still long enough, life will knock you down.


“There’s no chance that the iPhone is going to get any significant market share. No chance.” – Steve Ballmer, Microsoft CEO, 2007

Django Auth Module

Django Auth is a simple app for user authentication with Django.

It does the following: login/logout, register, email + SMS confirmations with Twilio


The repository is available here : https://github.com/nickhargreaves/django_auth

Quick start
  1. Add “django_auth” to your INSTALLED_APPS setting like this::INSTALLED_APPS = (


  2. Include the django_auth URLconf in your project urls.py like this::url(r'^django_auth/', include('django_auth.urls')),
  3. Install Twiliopip install twilio
  4. Add Twilio to your requirements.txt file
  5. Go to your settings.py and add your Twilio credentials at the bottom of the file
    # Twillio settings
  6. Go to your projects main urls.py and add this to your URLurl(r'^django_auth/', include('django_auth.urls')),
  7. Run python manage.py migrate to create the django_auth models.
  8. Start the development server and visit

You can try out the demo here https://hidden-reef-1355.herokuapp.com/

A Flat WordPress Admin Theme

As part of a bigger project I’m working on that requires a customized WordPress admin page, I thought I would start off by making this plugin. It transforms your WordPress admin to a flat, modern looking dashboard.

It also comes with a customized WordPress login screen that allows you to use your own logo. The theme is based on Design Modo’s Flat UI Kit, which I fancy a lot.

I would love it if people would contribute to this project. To do so just go to the Github page here. Otherwise if you only want to use the theme on your WordPress instance you can install it directly form the WordPress plugins repository.


The Missing Link in Kenya’s Open Data Story


It’s slightly over two years since the government of Kenya launched the Kenya Open Data portal; a move that was hailed around the globe and seen by many as a path towards transparency in a corruption ridden government. Kenya became the second, after Morocco, in Africa to open up government data and one of the first few countries in the developing world to do so. Well, today the portal has less than 3000 datasets with the latest one uploaded on December 12th 2012 – 8 months ago. Most of the data is from 2007-2011. There’s hardly any interaction on the portal anymore in terms of dataset suggestions and creation of visualizations. Only 12 apps are listed under community apps and the mainstream media seems to have moved on, as it does when a story becomes stale. When the portal was launched, what was envisioned by most was better provision and access of services and accountability of government departments. Yet 2 years after the ribbon was cut and the champagne bottled popped we seem to be stuck at the beginning. What went wrong?

India has just launched Data Portal India , my original fears that it might go the same path as Kenya’s are waning given the many things they are doing differently. For example they have an app development competition. This will definitely increase it’s engagement with the community, and is a good way to get the word out there and will see a lot of community created innovations that make the data useful. The Indian portal already has 6 apps created by the government around the data. This is more than enough incentive for independent developers and civil society organisations to do the same. Kenya’s government on the other hand just released data and told developers to go forth and make apps. If the government makes apps it deems useful it will be able to consume the data better. And as my colleague Muchiri said to me earlier “when the government is consuming the data they will have an interest in making sure the data is clean and fresh”.

Any correct data has the potential be useful in the right context. However, the more recent the data, the  better. One of the most common complaints developers raised from the very beginning of the launch of the portal was how old the data was. Some is so old it’s obsolete. For example, most of the data uses Kenya’s older even though Kenya doesn’t have districts anymore. School codes for example have changed over the years – I remember how much this was frustrating as a Code4Kenya developer. The problem it seems is that the government didn’t have a stable framework in place for continuity beyond the launch. So the portal is becoming less useful by the day and developers have to look for the data themselves from government departments and other organisations. There’s nothing more frustrating in Kenya than getting a government employee to do something they are not clearly mandated to do. Ask anyCode4Kenya fellow. Open Data is a pretty new concept and beyond the suspicions the government workers will have when you ask for the data, there’s also the fact that they haven’t been properly trained on it. Sunlight Foundation recently released Open Data Policy Guidelines 2.0 and a recommendation that might work for this situation is having all government data open by default and an oversight authority to help with guidance and implementation.

Something else that the Sunlight Foundation points out that I find extremely important as a developer is having unique identifiers for entities. When we were building FindMySchool and StarHealth, one of the biggest challenges we had was that there was no consistent unique identities for the schools and hospitals respectively. Like I pointed out earlier school codes have been changing and names for schools and hospitals are usually recorded differently by different people in different government departments with infinite permutations. So even if one can come across different data sets from different sources that can potentially lengthen the narrative, there’s no programmatic way to accurately reconcile them.

So what is the missing link? Clearly the  whole program needs to refreshed, with less hype and more work, and this time with policy guidelines in place that are strictly followed. Launching the portal should have been more than just Kenya wanting to be the new cool kid on the block, rather a push towards a transparent government that people can trust and for the government to give people better access to public services and amenities. So it has to be properly thought out and needs to be sustainable and active.

Of Product Development

Over the past two weeks I’ve been lost in code working all day sometimes up to 6AM in the morning. It’s been a while since I’ve been in the zone – that state where you have a concept in your mind and you can’t help yourself focus all your mental energy into seeing it through. And nothing can distract you, even when you are not it you think about it.

One important thing I learned a few months ago in my time as a Code4Kenya developer is that it’s not enough to create a product with cool features. Programmers are usually trying to push their products further and further extending the features, updating it to current technologies and basically trying to make it awesome. Something we often forget however is to focus on usability. Instead of making it more readily usable to the end user we push for the ‘wow’ factor. Unfortunately that only impresses our programmer buddies but the targeted user will only be impressed if it makes their lives easier. But if they have to get a user manual to make use of the product they develop cold feet probably look for alternative even with less ‘wow’ as long they do what they want in a way that makes practical sense to them.

I was reminded of this yesterday when I was doing a write up of the product for a business plan and I realized that some of the wow features that kept me up all night are actually very petty and I can’t even write them as part of the product description no matter how cool it sounds in my programmer head.

In the end you want to be able to describe what your product does in a very simple sentence. Also you want to make sure it does it do what it claims to do. And it does it well. Is it bugged, or smooth? Is it tested in different environments? Therefore you must spend less time coding and more time planning, testing and debugging. Start small with a basic version of the product that is stable and has a clean and easily understandable UI(user interface).

It’s very easy to push debugging and UI clean up to the end after chasing the ‘wow’ features. But if the product gets out there with bugs that could have been avoided it might end very underwhelming considering the amount of work that had been put in even if the bugs are fixed later. Thing is when you introduce a new solution to the market, people are skeptic. They subconsciously wonder if it actually makes sense, especially if the solution is introducing a new way of doing things. Trust me even the tech savvy people are very conservative deep down. That’s how Google Buzz failed and people recoiled back to their Facebook dens.

In a nutshell, keep it simple, make it stable, ensure it actually works!