Portfolio

MTN Zukuka

Channel: USSD

Status: Closed, Feb ’15

The product, open to 10-million subscribers awarded 3 minutes to any MTN number between 5:00AM and 8:00AM on weekdays.

Challenge: Scale. The product had over 6 million users and since its main window of use was 3 hours ( 5 to 8 AM), the number of requests to the system during that time went through the roof. Sidney, Alex & I came up with two main ways to handle the traffic bursts – asynchronous processing & serving some requests on another system.

MTN 1-4-1

Channel(s): USSD and SMS

Status: Migrated, March ’13

MTN 1-4-1 is a loyalty programme. It awards subscribers points for using the telecommunication network; the subscribers can then use those points to purchase voice or SMS. The product’s special to me because it’s in building and supporting it that I first learned about profiling code, database design & system administration. Scale challenges. A history of working with frameworks & CMSs had kept a lot of this good stuff away from me.

Challenges: Scale. At migrating it to another system (the migration had nothing to do with product performance), it supported over 4 million subscribers. I was a one-man team at the time. I did caching, code profiling, re-designed the Db (partitioned, better index usage, etc), optimized the server ( changed ulimits, etc) and spent a number of nights awake. All done, it worked beautifully. And I slept more.

SMS Broadcasts

Channel: SMS

Status: Active

Nothing fancy here; the application receives a message and broadcasts it to a list of users. The interesting part is…

Challenge: Using Kannel to send long messages ( text messages that contain more than 160 characters). The messages needed to appear on the receiver’s handset as one message. Fixing this required a much deeper dive into the SMPP protocol (the language SMS servers generally speak to each other with) to eventually get it to work correctly; at the time, Kannel documentation everywhere on this particular issue was sparse.

ULK Facebook Loyalty Programme

The product allowed urbanlegendkampala.com to track and reward certain behaviour on the site. This served two main purposes; Get an idea of who the most loyal (and engaged) readers were (and reward them) and also, encourage certain behaviour on the site (sharing, commenting, etc).

Challenges: At the time of development, the Facebook PHP API had quite a number of bugs. After quite a few battles, switched to the JS API and that worked well. The app involved some custom actions ( like in addition to ‘liking’ an article, you could say ‘hug’ the author ), all using the Facebook API. Getting those custom actions approved at that time involved a bit of back and forth with Facebook (and considerable waiting).

ULK Chrome extension

ULK Android app

The app displays articles from the urbanlegendkampala.com website. It basically processes the feed and stores the articles for offline access. When it was published in the app store, it was the first custom company app from Uganda and generally among the only apps from Uganda. That’s such a long time ago, action bars had only just been added to Android and the Android compat library didn’t even have them yet (actionbbarsherlock ruled!). The majority of devices in our market at the time didn’t support the action bar.

Challenges: Documentation was quite sparse; I filled several gaps by trial and error. Also, I didn’t want thumbnails ( or any image re-sizing ) to be done on the handset so I made changes to the site (and its feed) to have that done server-side. Creating thumbnails from images not hosted on your site (the majority of the site’s images) was a challenge, especially since this was in the wake of timthumb security breaches.

I’ve never updated the app since *hangs head in shame* I want to re-write a lot of it but I don’t think I’ll ever get that time. Totally open to new hands on deck.

Kanzu Support Desk

Under Kanzu Code, built a WordPress plugin for customer care. It is a simple, personal and powerful help desk solution that takes your customer support to the next level by allowing you to manage your customer conversations from various channels (Twitter, Facebook, Email, Web support Form) in a single place. The core plugin’s freely available in the WordPress Plugin Repository