"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.


Humanity Through A Window

Looks into a small road,
View slightly blocked by the steel grids,
Security is important,
Protection from ourselves,
Self created prisons,
Prisons we come home to.

Two friends,
In track suits,
Plugged into “Made in China” tech,
Deep into “Made in America” music,
Silently speaking to avatars,

Blindly past each other
Past caricatures and slippery identities
An old black man guided by his walking stick,
An indian girl licking her ice cream
a withering rose,
a moment,

Hidden from the rest,
Just a little bit of face,
Eyes tucked behind sunglasses,

Humanity through a window,

The Lonely Universe


f574ed0584884d7f6a0d873cf6f6b2d0 She floats in a dark sea alone,
Perhaps thriving in an infinite ocean of clones.

Waiting to be seen in full,
Beyond the energy and matter.

To be appreciated and understood,
Even the dark matter.

She’s a poem in Blake’s wit,
But none to be moved by it.

A concerto in Beethoven’s genius,
That lands on no ears.

She’s the original Mona Lisa,
But no eyes to comprehend her.

Surrounded by the curse of eternity and infinity,
The curse of being all there is.

Accompanied only her self-awareness,
Entirely alone and forever unknown.