Looking at 2016

1. Opportunity to think more (Desirable Difficulty)

Malcolm Gladwell in his book “David & Goliath” talks about the concept of desirable difficulties. The conclusion was that we tend to think and excel more when faced with more difficult challenges. In the research Malcolm referenced, students that were given Cognitive Reflection Test (CRT) performed better when the tests were made more difficult just by how it was presented. Sample tests in the book include:

A bat and a ball costs $1.10 in total, The bat costs $1.00 more than the ball. How much does the ball costs.

If it takes 5 machines 5 minutes to make 100 widgets, how long would it take 100 machines to make 100 widgets?

It was observed that students scored 1.9/3 in these types of tests. However, making the test questions harder to read on paper, e.g reduce the font size, change text colour to grey, presenting it in italics etc…results in students scoring as much as 2.45/3. In other words, making it more difficult to read made them think more about the problem rather than solving them on impulse which increased the chances of error.

Hopefully with the impending difficulties that might face the Nigerian economy in 2016, Nigerians will think more, get creative on how to live or run businesses with limited resources.

2. Services business will grow (as against product-only business)

You’ve probably heard before about the “Lack of maintenance culture”.

Because we have had so much money in the past, product businesses prospered more than service business. (Sorry no data to support this, just my gut). We typically have a culture of throwing money at every problem in this part of the world. Your infrastructure isn’t delivery value? time to replace it with another one. In the private sector possibly because of lack of skilled people, in government circles, this results in huge contracts to purchase another rather than fix/service existing ones.

Hopefully in 2016, with limited cash flowing around, falling oil prices, maybe our attitude will begin to change from throwing money at every problem to thinking through them. I see opportunities for cost cutting that’d force people to service/fix rather than purchase new at all times. And this is where local service companies can come in. Just think of that services that can benefit from a smarter engineer rather than a shiny new tool. This is an over simplification of the problem, but you can relate it across services.

3. More opportunities for local software companies to enter the door (at least)

Foreign software Licenses are one of the major things medium to large businesses spend IT money on. From Operating Systems to Databases and to CRMs. Off course this isn’t a bad thing especially since these are well known products used all over the world. And who wants to use another OS outside of the entrenched ones to run production systems anyway.

However, I am of the opinion that there are opportunities for local software alternatives in the area of business tools and applications, workflow, business process, automation etc to a lot of foreign ones. 2016 is another opportunity to try again to push these local alternatives to enterprise customers since some could do as much and are actually better and cheaper.

4. Local training (As against travelling out) for all kind of stuff will boom

There is a lot of Foreign Exchange that go into IT training budgets. We travel to all sorts of countries to get trained on technology from India, US, UK, Canada and UAE to name a few. I see some of these trips reducing because you know “cutting cost”. This is an opportunity for local training centres to up their game in 2016 and beyond. Flying in a trainer? that’ll work too.

The training terrain is much more difficult now though, with all the online courses one could take, an offline instructor had better be very good.

5. Payments. I see people like Verve making gains..

I’m sure MasterCard and Visa are holding strategy meetings on how they can work around the restrictions on Naira denominated cards use abroad. Well as I once said about doing business in Nigeria, the policies and rules can change any time.

This would bring up opportunities for local players. The Verves of this country. I’m sure they’d figure this out, but there are a lot opportunities in Nigerian Payments scene in 2016. B2B, P2P…

6. The ‘Replicate yourself’ challenge

Ok, so this is something I am passionate about and will hopefully do in 2016. We’ve been talking a lot about building skilled manpower in software development. Apart from Andela that has a startup around this problem, I haven’t seen lots of other companies or people actually take action or do stuff. We still need more developers from this part of the world and we need them young and hungry.

So I want to challenge any good software developer worth her/his onions in Nigeria to dare to replicate themselves into 100 teenagers in 1 year, in 2016. Thats a big one.

Off course for a good developer that has spent years mastering her craft, its a difficult one, but then its starts from allowing these teens to watch you do stuff, give them books that have helped you, share concepts with them, encourage and mentor them. In a year, they might not be a perfect replica of you, but you get the idea.

Tweet at me (@edwardpopoola) if you are a teenager or you know one that wants to intern/learn and is interested in programming/software development (Victoria Island Axis, Free office space, free Internet, maybe a free pocket money .You can never tell)

USSD 101 part 2

Brief Overview of  Traffic within the Core Network

In the previous post, Part 1 of this series, we were able to breakdown the USSD MMI code.  Taking this further, we will look at how the Mobile Network handles our request.

Between your Mobile phone and the Telecom operator’s USSD Gateway, there are numerous components, including the radio and BTS, BSC , HLR and the MSC. However, because this isn’t a core telecom’s tutorial, we are going to mention only the MSC, HLR and the VLR.

The Mobile Switching Centre (MSC) is the main switching equipment of the GSM network.  The MSC handles the routing of VOICE and SMS traffic within the network. The MSC sets up end-to-end connection for call set up and tear down.


End to End USSD Handlers

Nodes within the core network are able to understand and route USSD request because they have in built USSD handlers. These handlers have the capability of routing USSD traffic to the appropriate destination.

USSD Handlers in Core network elements

As you can see, the request originates from the USSD Handler within the Mobile Phone and it is immediately handled by the USSD Handler within the network node. The node that handles the USSD request is determined by the type of USSD service code.

According to the GSM0290 standard,  there are  two types of service codes: VPLMN and HPLMN service codes;

HPLMN service codes always routes the USSD string to the HLR while VPLMN service codes routes the string to the MSC/VLR.



Core Network Traffic Routing



Nodes within the Core network communicate via a Signalling System called SS7.  And to handle routing of these SS7 traffic, we have routers called Signalling Transfer Points (STPs), which are meant to route the SS7 traffic among these numerous signalling nodes.

As you can see in the diagram, the USSD Gateway or any other node is likely to connect to the core network nodes via the STP network. To enable the USSD GW communicate with an STP, a dedicated Signalling Appliance/Server is usually provided with the USSD GW.

How does the STP network know which node to route traffic too? It turns out each of the nodes in an SS7 network have what we call Point Codes.  This is similar to IP Addresses within an IP network.

As such, every signalling message, will have originating Point code (OPC) and Destination Point Code (DPC).

USSD Traffic Routing

To provide USSD services, the Core network team will typically provision a USSD service code and map it to the appropriate USSD Gateway point code. Once the USSD code has been provisioned,  subscribers are then able to dial the USSD code to access a service.

When the core network receives a USSD request from the subscriber, it is forwarded to the appropriate USSD Gateway configured for that USSD service code.

SS7/MAP Traffic

Like IP, the SS7 protocol is made up of stacks (Application, Network, Data Link and Physical layers). At the SS7 application layer is the MAP protocol which is used to access services on the Core network nodes.  The MAP protocol is used to carry  USSD traffic among these nodes.

MAP traffic is hence exchanged between the Core network (STP/HLR) and the USSD Gateway.  The MAP traffic coming from the network to the USSD Gateway can be seen in real time by taking a PCAP trace on the USSD Gateway.

USSD Services

The USSD Gateway receives every USSD request (those not directed at any other network node). The USSD GW can serve this request and respond appropriately to the subscriber through the core Network.

Figure  4 below shows a USSD GW responding to all USSD requests directly. In this scenario, all interactions terminate on the USSD GW.

USSD Traffic

Fig 4. USSD Traffic

In Figure 5 below however, the USSD GW is capable of forwarding requests to 3rd party applications. Typically, this is the case for 3rd parties that want control over the response to the users.

In this scenario, the USSD GW could initiate web services call for every request coming from the Users. On the other hand, 3rd party applications can maintain socket/smpp connection to the USSD GW to receive requests coming from the users.

USSD Traffic to 3rd party Application Server

Fig 5. USSD Traffic to 3rd party Application Server

As seen in Fig 5, the most common interface for 3rd party servers to interact with the USSD GW is through the SMPP protocol. However, more capable USSD Gateways have added custom interfaces that range from XML over TCP socket to HTTP web service interfaces.

USSD Sessions

The USSD GW is capable of maintaining a two-way back and forth communication with the subscriber.  This is made possible by the fact that the USSD GW and the core network creates and maintains a dialog/session for every USSD request.

To be continued…


USSD 101

There is an uptake in USSD services  in Nigeria and I thought to share my knowledge in the area. My hope is that, Nigerian developers can take advantage of USSD to build simple services that can be accessible by all phones.

This post is targeted at the absolute beginner with no Telcom experience.

What is USSD?

USSD is Unstructured Supplementary Services Data. It is a Telecoms standard that allow subscribers to communicate with Telecom operator nodes for services beyond basic voice calls.

In other words, its a medium to access additional services on the Operator network asides VOICE and SMS.

You already use USSD everyday

These days you can access mobile money services through your phone by dialling a USSD code e.g *894#, *909# etc….

To check your balance you can also dial *556#  on the MTN Network, *123# on Airtel, *232# on Glo etc. Dialling these codes connect you to USSD services configured on these USSD codes.

The USSD Gateway

The USSD protocol is well understood within GSM. Almost all the nodes within the GSM network have a USSD handler that understands USSD. For example, the MSC, HLR, VLR etc all have an internal USSD handler.

However, most operators have a dedicated equipment/server called the USSD Gateway (USSD GW) or USSD Centre. It is the USSD GW that allows them to handle USSD requests.

As we will see later, while a USSD GW can respond to user requests directly, It has the capability of forwarding on those requests to other applications that can respond to those requests.

Simple USSD Architecture

Simple USSD Architecture.

Figure 1: Simple USSD Architecture

Going by the architecture diagram in Figure 1, you can see a high level diagram of what happens when you dial the USSD code. Your request goes through the operator network and the request is processed by the USSD GW or an Application server on the other end.

The application server processes your request and sends the response back to the USSD Gateway, which in turn sends it to your phone. These steps are as follows:

1. User dials the  Code *e.g *777#
2. Phone Connects to the available Cell/Base Station/MSC
3. MSC forwards the request to the appropriate HLR/STP
4. STP/HLR sends the request to the USSD Gateway
5. USSD processes the request and respond OR sends the request to the Application Server
6. Application Server processes the request and sends back the response to the USSD GW through all the nodes and user gets the response.

Now lets take each of these steps and analyse a little further.

1. The Man-Machine Interface (MMI) Code

In telecoms, the full sequence of code you dial to access a USSD service is called the MMI code/string. The Operator Network/USSD Gateway typically expects MMI code composed according to a particular format.

Once the MMI code is in the right format, the Operator network will be able to determine the type of action the subscriber has requested and also the appropriate USSD nodes to send the request to (Based on Point Codes).

According to the 3GPP TS 22.030, the format for the MMI code is


AI is Action Indicator:
SC is Service Code
SI is Supplementary Information:  

The asterisk * within the MMI code is used to concatenate additional supplementary information(SI). The hash ‘#’ character is used to indicate the end of the MMI code.

It is also possible to have more than one Supplementary Information (SI) provided within an MMI Code. The Additional SI will be separated by an asterisks. As such, the MMI code  AI*SC*SI*SI*SI# is also valid.

Let’s explain each of the fields.

Action indicator(AI): 

Action indicator could be any of the following:

Activation/Registration – (MMI code starts with *)
Deactivation – (MMI code starts with #)
Interrogation – (MMI code starts with *#)
Registration – (MMI code starts with **)
Erasure – (MMI code starts with ##)

The action you want to perform through the USSD will determine the action indicator you will specify in the MMI Code.

Service Code(SC): The service code is composed of 2 or 3 digits between 00 and 999. The SC uniquely identifies a particular supplementary service. The SC codes are either reserved,  manufacturer defined or  assigned by the network operator. In figure 1 above, the 777 service code has assigned by the operator.

Supplementary Information(SI)

This is used to provide additional information required by a particular service. Within the MMI code, you can include additional information for the service being requested. (For developers, think of this as additional parameters/arguments to go with the service code.)

Example  MMI code:s

Example 1: *#06# – View your mobile phone IMEI number

A breakdown of the MMI code *#06# is as follows:

Action Indicator (Interrogation) = *#
Service Code = 06
Supplementary Information = None

Example 2: *999#

Lets say this code is provisioned for a service on the operator network that allows us to perform balance enquiry and to also recharge our phones.

1. *999#  – check balance

A breakdown of the MMI code is as follows:

Action Indication (Activation) = *
Service Code = 999
Supplementary Information = None

2. *999*1234566789# – Reload account with scratch card number

A breakdown of the MMI code is as follows:

Action Indication (Activation) = *
Service Code = 999
Supplementary Information = 1234566789

From the above, we provided Supplementary information which could be a series of numbers gotten from a scratch recharge card.

Categories of MMI Code

Not all MMI Codes are used for USSD services.  There are 3 categories of MMI Code:

1. MMI code for Supplementary Services(SS)

Supplementary Services are used to query and set certain service parameters  directly on mobile devices.  With supplementary services, you can instruct your phone to take specific actions.  When initiated, actions are performed only on your mobile phone and does not go to the operator network. Example of Supplementary services include Calling Barring and Call Forwarding – *21*[phone number]#

2. Manufacturer defined MMI Codes

These are MMI codes specific to different mobile phones.  A common MMI code is the *#06# that is used to view the IMEI number of a mobile phone.

3. MMI Code for USSD services

All MMI codes that are not recognised by the mobile phone as being in either 1 or 2 above are forwarded to the mobile Operator network. These codes are provisioned by the Operator network and configured for specific services.

How does the mobile phone know what to do?

Mobile phones are capable of interpreting USSD MMI codes.

This is made possible by the fact that, all mobile phone operating systems have a USSD Handler in built that allows the mobile phone to send and receive USSD messages sent by the Mobile Network.

Whenever a user dials an MMI Code,  the dialled code is parsed by the mobile phone Operating System.  Any MMI code that is not device specific or that is not for supplementary services are sent to the operator network.

The USSD handler uses the MMI code/string to invoke a USSD session with the mobile network.

For android developers, this is a link to the PhoneUtils class of the Android OS that has the USSD Handler source code


In the next post of this series, we will learn what happens after the user dials the MMI code and the requests gets to the Operator network and subsequently the USSD Gateway.

Part 2 >>>>


Public cloud in Nigeria, why Open Technology matters.

I recently heard about a Nigerian company shutting down its public cloud services business.  Apparently riding on the wave of cloud, the company built a public cloud infrastructure and quickly tried to leverage on its Data Centre experience in colocating services. However, after a brief stint, the revenues just did not add up. They had to layoff folks.

Rackspace is out of the selling commodity compute business as well, at least in the scale of AWS and Google. They still provide managed cloud services though. It is becoming very apparent that you need more than cash in the bank to pull off a successful cloud business. Lots of cash is needed but it isn’t enough.

How could you make money in the cloud business even as the price of compute keeps falling. One of the cheapest things to spin off today is a server on the Internet. Google too recently crashed their prices. What is enabling Google and Amazon to crash their prices aggressively and still stay in business (even in the face of massive loss)? What is the competitive advantage they have that the other public clouds do not have?

The answer might lie in their huge investments in R&D. Apparently, there is more than meets the eye when building scalable computing infrastructures. According to this analysis, which I strongly agree with, companies like Amazon and Google have invested (and still investing) a huge amount of cash in R&D. Their research team are pushing the boundaries of technology to look for better ways to provide compute and storage services over the internet?

If the differentiation is in R&D investment, how can local companies compete effectively in building public clouds within their country (to take advantage of the challenge of data privacy and compliance and security)?

Why local firms will never be able to beat an Amazon.

It is a given that very few Tech companies aspiring to build public clouds in Nigeria or elsewhere can invest in R&D as much as Google and Amazon. These companies have research and development teams across the world. Places like India, China and Isreal have become target spots for these Tech giants to build research teams. It is safe to conclude that, on that level, local firms will never be able to compete with Google and Amazon.

These companies are known to fund research in the top academic institutions in the world. This has become the norm rather than the exception. While at Stanford, the Google boys were said to have worked at the research Lab Microsoft donated to Stanford. Companies like MIT, CalTech all have research programs being funded by these tech giants. In Nigeria, there is not a single Tech company that sponsor any form of research in the Universities. All these schools have computer science programs but not a single one of them do any notable research.
The low hanging fruit option

If local Tech firms that want to build public clouds cannot invest in R&D, what can they do?

The low hanging fruit option for these companies is to partner with the foreign Tech firms with the R&D budgets. Computer Warehouse Group (CWG) is currently offering such a service. They have partnered with IBM to build public clouds in the country. In other words the same model of running an un-inspiring tech business in Nigeria since forever. Bring a partner that will do the work, share the profit. This way, the local firm never worry about innovation. They never have to worry about research. They just resell. Their success ultimately is dependent on the success of the OEM.

Mainone is also currently recruiting cloud engineers, I guess for their public cloud practise too

This OEM-partner-resale model has a faster go-to-market period. The challenge to profitability of this model however lies in software licensing. Cloud isn’t just another virtual machine accessible over the network, its about control, self service, metering and on demand scalability of compute, storage and networking. You need a cloud operating system/platform to be able to sew together these three. Combine heavy licensing of this cloud software with the existing infrastructure challenge of Power and Internet, then you begin to have a rethink about your cloud business.

A much smarter approach.

Going Open

For local tech firms with some cash to invest in building a public cloud practise, I’d think it’d makes sense for them to look into in any of the open cloud initiatives that exist today rather than leaning towards proprietary cloud vendors/OEMs.

Apart from their huge investments in research, companies like Facebook, Google and AWS have been able to build scalable and highly available infrastructures by leveraging on Open standard technologies and open source software. Without leaning towards any particular vendor, these companies can easily adopt the best of open software available.

Some cloud operating systems available today include OpenStack, Eucalyptus, Cloudstack. While we can argue about the maturity of some of these projects, they already power many public clouds in production today.

Adopting an open technology cloud approach will enable these companies to build a lasting practise. They will grow into the cloud, building human capacity along the way. This allows them to solve the problem of skilled manpower down the road.

Another advantage of this approach is to start up the cloud business lean and agile. If the concern of enterprises today is about data security, privacy and compliance in the cloud, tomorrow these concerns could actually pale when compared with the other advantages realisable from moving to a major public cloud (outside the country).

Staring lean and open allows these tech firms to respond to competition from AWS and other major public cloud players. If I’m not bugged down by a 5-year commitment to a proprietary cloud OS license, I can change my mind when the facts change. With vendor lock in, I don’t have that much flexibility.

Taking Research Seriously

it is important to note that R&D is still one of the differentiating factors for innovative companies.

Research is important for any company that wants to create any innovative solution or sustain the culture of creating “new things”.  I wonder if Nigerian companies invest any amount of money in research. No matter how small.

The fact that research is not our strong focus explains why cutting edge technologies seldom originate from African tech companies. We rather reproduce what works.  Innovation is what will enable local companies to be able to survive stiff competition.

The Tech industry, like any other industry  in Nigeria needs to engage and challenge Nigerian Universities to start to think again. Our CSC departments have become places to learn about computer history and about how they were using punch cards for data input…Please. During my undergrad program, a lecturer was actually working on grid computing for his PhD without as little as a 2 node-cluster in the entire university.  The private sector can do a lot here to encourage research.