Here's how to spam people correctly

I've noticed a particular trend with a lot of startup companies in Nigeria - they start out by buying or obtaining an email list and then subscribe them automatically to their blasted email lists - all that talk about growth hacking and shit. Not that I'm faulting trying to obtain an email list but here's one approach that I reckon is more polite. Start by asking for permission to be included in your mailing list and respect people's decision not to subscribe. Here's one example of how an email like that could look.

Hey there,

Men often have a difficult time dress properly for all sorts of occasions; "What colour of tie do I wear to that function." "What pair of socks go with these pants." You get the idea. My mission is to help them by providing information about what to wear and for what occasion, how to combine pieces of clothing so they match and are pleasing and other fashion-related tips.

Because I got your email from a paid email list, I'm going to ask that you take an additional step to sign up for my newsletter. Don't worry if you're not interested, you will not hear from me again (I respect you that much). If on the other hand, you're not interested because you do not relate, why not do your clueless male (and female) friends a favour by sharing this email with them?

Thanks for your time and have a lovely day.

Now how's that for an introductory email?

Page weight matters, even on mobile

I just read Chris Zacharias' blog post on Page Weight Matters, where he described his attempts of creating a Youtube Lite version (called Feather) and what his results were like. Just in case you don't have enough time to read it (even though I really suggest you do), he aimed at reading a video watch page to under 100kb and the biggest boost in traffic came from places like Southeast Asia, South America and Africa.

His post summarizes my thoughts on how web applications should be built for Africa, more especially the mobile web. In most parts of Nigeria, you would be very lucky to get a 3G connection and in my experience, surfing the web when you're out of 3G coverage can be a real pain in the butt. Why's this so? Besides the very high latencies you start to experience when you're dropped to 2.5G or 2G connections, bandwidth is highly limited. With some mobile web pages measuring up to 1MB in size, you cannot begin to imagine how long it will take for that page to be loaded. It takes an extremely large amount of patience to wait almost indefinitely for a web page to load and except the user has almost nothing to do and is just waiting for the bus to reach their destination, we would lose our users very fast. When we complain about low web usage on the continent, this is one of the reasons.

Here are a couple of tips on things you could do to keep your web pages as lean and fast as possible:

  • Choose light javascript frameworks - If all you need to do is a little AJAX and DOM manipulation, then use Zepto instead of jQuery.

  • If the browser supports it, use server-side compression - This cannot be overstated. Even if you're unable to implement any of the other tips listed here, at the very least use this one.

  • Allow for proper caching of assets - The proper use of the Expires and Last-Modified headers give information to the browser on how long they are allowed to cache certain assets and encourage reuse. You should at least cache your js and css files since those ones change infrequently.

  • Try and keep your web pages as small as possible - If you're designing for mobile, recognize that it's better to have 10 smaller pages that load quickly than 1 page that takes a really long time to load. The ability for your user to move quickly through your web app or site will provide more user satisfaction than if they had one really large page providing every bit of information.

  • Recognize that size isn't everything - You can have a web page that is 1KB in size but takes 30s to generate; a 30KB web page that loads in 1s is way better. Speed matters and you should aim for 100ms or less. If your site is experiencing a lot of hits, the performance will degrade and you don't want your site slowing to a crawl.

  • Reduce the number of HTTP requests - Recognize that HTTP requests are expensive; latencies are not consistent. A resource may take 1s to load at one time and 10s another time. This has nothing to do with available bandwidth but network congestion and with every additional request the user's web browser has to make to fully load the page, the more pronounced the effect. Concatenate your javascript and css files to reduce the number of requests.

  • Defer your javascript loading - Most developers will place their external javascript script tags within the header section of the web page, except it is absolutely necessary that the javascript load before the web page is fully loaded, you should instead, place this just before the closing body tag.

There are many more tips to making your web pages load as quickly as possible, one of the best guides out there is the Best Practices for Speeding Up Your Web Site.

GTBank MobileMoney: How not to build a mobile app

Dipo just hinted me about GTB's Mobile Money service. Initially I thought: "Isn't it the same thing as the MTN Mobile Money service?" It turned out that this is an entirely different service. I'm not going to even go in the direction of wondering why they were creating a parallel mobile money service.

I was pleased to see this wasn't a USSD or SMS-based service and grabbed the app for Android as published on the same service description page.


My first thoughts, "nice looking app". The registration process was quick and painless. I was activated and was using the app in no time. Until things started going south. First, I started wondering, how do I get money onto this service? There are no instructions on how to do that. I even remembered seeing GTB Mobile Money on Quickteller and tried using that option and I kept getting the error:

[70013]: Unrecognised customer information supplied: Service: GTMobileMoney, Wallet number (080XXX): 080********

For me that's a catastrophic fail! How do you release a product to the market that doesn't work? That's not the end of it. Then I tried some of the options on the screen. Airtime doesn't work, Bills Payment doesn't work, Mobile Banking doesn't work; why are they even on that screen? All you need to put there are the features that work. It's totally unprofessional for a user to click on a feature and get: "Feature not yet available. Will be available soon." What does that mean? I'll rather that I know that all I can do is Send Money and pay merchants. This isn't the way you build a mobile app.

Amazon S3: A looming disruption for the web hosting business

For a while now, Amazon S3 has been allowing users to serve static content off the service. What that means is that if your website didn't require any programming or a need to serve dynamic content, you could have your website hosted on Amazon S3.

I was wondering what this meant for existing web hosting companies. I did some math and realised that the most expensive option on Amazon S3 will come down to about ₦326.40 per annum for 1GB of storage. I do not know of any web hosting providers with an offering that is not northwards of at least 400% of this amount. I know a lot goes into web hosting: system administration, technical support, customer support... But then 400%? I think there's a bit of a chance of some kind of disruption in this space especially for the market of customers who don't really need a dynamic website.

What are your thoughts?

Why overlook SMS?

If I asked you to build an application for Africans, that if it goes viral, can get 1 to 10 million users in a week, what platform will you choose?

There's been a lot of discussion amongst the African tech elite about replicating an Instagram-style success in Africa. I think the platform that has the potential for this scale of success is SMS. Africa doesn't have the web culture, necessary for the large kind of traction startups like Instagram enjoy in the West - just yet. She will, but not yet. In the mean time SMS is being over looked as "low tech" yet millions of text messages are sent and received throughout Africa on a daily basis.

It's high time developers stopped ignoring this platform and started innovating using it.