Featured post

The Yoruba tone marking web application - My first completed pet project

Last night represents a major milestone in my life. Right now, I feel like a new father, and rightfully so. At the start of every year sin...

25 March 2017

Hafiz Adewuyi

The worst purchase decision I made in 2016 or in my life

After work yesterday, I was hanging out with Victor, my friend who is one of the few people who encourage me to keep blogging. At some point, he suggested that I build a mobile app version of the Yoruba tone marking tool. So, after telling him I was no good at building mobile apps (despite my numerous false-starts of learning it), I went further to reveal how I had invested $19 into an online Android programming course in January. The kicker? The last time I visited the course was the same boring Sunday afternoon when I purchased it. I bought the course, watched the first 12-minute video via the online classroom with the intention of returning the next day. It is now almost two months since then, but that next day is yet to show up.  

Victor mocked me lightly, mentioning how I could have gotten those same videos for free on YouTube and saying in Yoruba, how those "sharp guys" have nabbed me. Victor is an Igbo boy but if we're both placed side-by-side to speak Yoruba, he would thrash me in terms of accentuation. He went on to share his thoughts on how if he's financially motivated enough, he would consider joining those sharp guys by hiring a brilliant software developer and setting up an online coaching offering. "I would just put up a page with videos copied from somewhere else and state that I'm available for consultation within the hours of 11 a.m. and 2 p.m. every Saturday", he said.

Since I had shared my stupid decision to buy this Android course and I survived his mockery, it occurred to me, later on, to share a similar goof (but on a much larger scale) with him. I told him to promise not to mock me if I shared this mighty goof with him or else, I might be the next to jump into the lagoon out of the stigma. Once I said this, he told me he would rather I didn't share it because he wouldn't want my blood to be on his neck :D

At that point, the intention to share my big goof left my mind for a while. But I guess my subconscious dwelt on it, because not too long after, I resolved to share it. I wanted to face my fear which had made me keep it to myself until now, head on. The fear of being called a buffoon, or worse still, to be seen as someone who cannot improve their life to save their life.

Now that leads us to the Koko of this story. Enjoy laughing at me for the rest of this piece. It's your lucky day!

I PAID $299 dollars for an online course!!!

That was in one of the -ember months of 2016. And the very first time I revisited the course after the purchase was two weeks ago (March 2017) when I was feeling a little motivated. I completed what was more or less the introduction of the course over a course of three nights (probably at 5% progress now). And since then, I've not gone back to it. I want my money back!

The title of the course is How to Market yourself as a Software developer (H2MYSD). I can remember like it was yesterday how enthusiastic and ecstatic I was just before I purchased the course. I was absolutely sure this was what I needed to change my story from "developer who is always frustrated from being underpaid" to "Nigerian rockstar millionaire developer". At least, that's what the course promised.

What spurred me on to take the final step in this investment were the two following things:
  • The author promises a 100% money back guarantee if I am not satisfied with the course, but on the conditions that I must have gone through the course, applied the principles therein and have evidence that it did not work for me, within a year of the purchase date (I still have time)
  • I was sure that motivation to complete the course would not be a problem as is often the case when I try to learn new stuff via free MOOC platforms. For one, I needed to change my life as a matter of urgency. Secondly, I thought it was beyond my bounds of laziness to shell out so much money for a course and then fail to get the best of it through dutiful study and application
Alas. Over the next following months, I got to learn more about myself; about the truly boundless nature of my laziness. The only reminders I had of the H2MYSD course were the calls I received from my younger sister, each time the monthly $99 debit hit her GTB Naira MasterCard which I had used to make the initial payment.

I want to insert a wise lesson to end this article. But there's none. Except that I should not buy any other online course until I exhaust my current decaying 'stash'.

My friend Victor is a nice guy. He truly did not want me to jump into the lagoon on my way from Victoria Island back home through the Third Mainland bridge to Yaba that night. So he regaled me with the story of how he had paid about 50000 Naira for an offline CCNA training a few years ago and failed to actually engage with the training until it was over. Now, he regrets the fact that he lost that opportunity because he can imagine a parallel universe where he has better career opportunities from taking advantage of his investment in the CCNA course.

Have you got a similar goof to share? Use the comments section below. Thanks for reading. 


Please, don't share. My next employer must not see this. After all, my CV says I'm a fast and self-motivated learner.
Read More

19 March 2017

Hafiz Adewuyi

My successful US non-immigrant (DS-160) visa interview in Lagos Nigeria


  • I had Eba and Egusi for breakfast
  • The DS-160 interview took place at the US consulate (embassy) at 2, Walter Carrington, Victoria Island, Lagos
  • I forgot my International passport (of all things) at home and had to travel back from Victoria Island to Yaba to get it. Luckily I found out early enough to be able to make that trip in good time. I think I was just too relaxed about the whole thing, and thank goodness it was not a Monday morning #lagosTraffic
  • I was turned back at the US consulate check-in point because I did not have the following documents:
    • GTBank VISA fee payment receipt print-out
    • Visa interview appointment confirmation print-out
  • I was given a one-hour window to go back and get all of my missing documentation
  • Cumulative time spent on check-in and actually getting interviewed was about ten minutes only. No queues at all
  • Actual interview took less than 5 minutes. A few questions which were basically just fact-checking what I had filled in the application
  • The only required documents are as follows. Don't let any tout on the way to the consulate tell you otherwise (and they will try really hard):
    • Your International Passport (no need for photocopies, even though you can make a couple to boost your confidence)
    • Your visa fee payment receipt print-out from GTB
    • Your DS-160 visa application confirmation print-out
    • A print-out of your visa interview appointment confirmation
    • One copy of standard passport photograph (click to see US visa passport photo specifications). I paid 1500 for only 4 copies of this somewhere in V.I. because I did not want any stories and someone had referred them. In the end, none of the passport photographs was withheld after the interview. I went home with all of them. It's just for sighting. But hey, make sure you have a few copies.
  • In the end, you go back home with all of the documents, except your International passport, which will (hopefully) be withheld for the affixment of the visa
  • Drop all electronic devices at home/office. Go with your clothing and the required documents ONLY. If you can't avoid having electronics e.g. your phone, the security people outside the consulate can 'help' you hold it for the duration of your interview
  • I produced one litre of sweat to drench my TM shirt walking back and forth Kofo Abayomi and Walter Carrington under the hot Wednesday morning Lagos sun. When I finally returned to my office, my soul thanked the inventor of air-conditioning as usual
At this point, you're free to confidently walk away because the rest of the article is more or less a rant. Don't say I didn't warn you.


Scheduling my interview

Last Monday, I finally got information that the long-anticipated US trip would come up in April 2017 and that I should go ahead to schedule my visa interview. I had concluded my DS-160 B1 non-immigrant visa application since September 2016 because the trip was meant to be in October 2016. However, the trip was postponed till 2017 due to logistics reasons. 

I quickly rallied around and got all the information I needed to schedule an interview. The simple procedure is as follows:
  • Pay your visa fee at any GTBank branch. This took me less than ten minutes. Very quick service at the Adeola Odeku branch of GTBank
  • Next day or four hours after paying (depending on how early you paid), proceed to the US visa interview portal to schedule your interview. Very seamless process.  Towards the end of the process, you will have to enter the receipt number on the GTBank fee payment printout
The earliest date available for interviewing was on Wednesday of the next week. I picked 10 a.m. for my appointment. Thank goodness I picked 10 a.m. God surely had my back here. At the end of the process, a copy of the appointment confirmation was sent to my email. I noticed a number (138) was in bracket beside my time slot and I was wondering if that number indicated the order in which I would be attended to. It turns out the number was not referenced at all on the interview date. But I think that might be because we interviewees were very few at the consulate that day.

US Visa Lagos embassy interview appointment details
US Visa Lagos consulate (embassy) interview appointment details

Forgetting my international passport at home

When I realised this about three hours to the interview on my office seat, even I asked myself: "Of all things"? Fortunately, I realised early enough to make a return trip between work and home and still have some time left.

It took me less than a thirty-minute drive to get back home. The first thing I did was to bring out the passport from my file and put it in my bag. No devil would make me forget this thing again. Then I took off my office clothes and settled to a morsel of Eba and Egusi with goat meat since I apparently still had enough time on my hands. Life is good and ain't no US visa interview gonna ruin it. To be honest, I was actually waiting for the morning rush-hour traffic to subside. So what better thing to do than to kick back and relax with a plate of Eba and goat meat Egusi soup.

By the time I was ready to leave again, it was almost 9 a.m. From my Google maps, I could still see a few patches of dense traffic here and there. And I didn't want to risk being stuck in traffic when all I had was an hour to get from Yaba to V.I. So, I ordered an Uber which arrived a few minutes after 9.

By 9:30, I was back at the office. I rushed in, picked out the documents I needed from my bag and headed out for the consulate which is a ten-minute trek away from my office. Yes, I trekked.

I did not bring my GTBank visa fee payment receipt and appointment confirmation print-out

On my way to the visa interview, one of the 'business men' on the road mentioned the need for these documents it but I ignored. I had followed the instruction on my DS-160 application to the letter. The instruction said to come along with the following documents:
  • DS-160 application confirmation
  • International passport
Well, I also took my passport photographs, because of course, I didn't pay 1500 naira to get 4 passport photos for nothing.

I finally realised I was in trouble when the consulate attendant came out (just before ushering us in), to announce that we should put the following documents inside our passports:
  • GTB visa fee payment receipt
  • DS-160 application confirmation
  • Visa interview appointment confirmation
  • One passport photograph
I had only two of four documents and I knew I was done for. But I kept my cool and did not say anything. I walked in through the gates and security check with the rest of the people who seemed to have all the requirements. 

When I got to the table with the check-in attendants (whom at first glance, I thought were actually the interviewers), I presented my documents to one of them. He soon found out the deficiency in my papers and when he asked, I explained that I didn't come with them because I followed the DS-160 instructions. 

US visa DS-160 Lagos interview; documents to bring
US visa DS-160 Lagos interview; documents to bring

I had hoped I would be able to get away with not having those documents since:
  • I would not have been able to schedule an appointment in the first place if I had not paid my visa fee, or don't they trust their systems?
  • My name would not be on the appointments list if I had not booked an appointment in the first place. Like duh! You just want to 'konk' the person who invented some protocols, because I can understand these ones were just doing their job. 
Another reason I can think of for these apparently unnecessary document checks is the bad reputation that Nigerians have for being fraudulent.

Anyway, the attendant and US Lagos visa consulate authorities were graceful enough to grant me one hour to sort myself out. My appointment was at 10 a.m., so I got a slip which advised me to be back by 11 a.m. with all the missing documents. 

Fortunately, the documents were all in my bag at my office at Kofo Abayomi. The journey back was not easy, though. I had to trek the 10-minute distance between the US consulate and my office once again. Of course, there were cabs all around, with the drivers inviting me in. But come on, I had already spent 2000 Naira on an Uber to work that day. That alone is more than my daily allowance. 

Avoid falling victim to the touts on the way to the Lagos US consulate

On my first trip to the US consulate, I saw my colleague returning from his own interview which was two hours earlier. The only thing he told me was this: "Please, ignore all those boys on the road o"! As a result, I made sure to pay deaf ears to their warnings on my first trip to the US consulate general.

However, on my second trip (after I went back to the office to get the missing documents), my immunity to their prodding was understandably lower. Also, there was this guy who was really persistent and kept on warning me about all the things I was missing for over thirty seconds. Of course, since I'd already been to the consulate once, I knew it was unlikely that I was still missing anything which the check-in attendant did not already tell me about. Nevertheless, I decided to grant the guy audience for all his trouble under the hot sun.

I handed him my documents. He looked through them and the first thing he said was I needed to staple them together, then staple two passport photographs to the documents. He went ahead to staple the documents and I handed him a 100 Naira note in exchange for my neatly stapled documents. Alas, that would not be enough as this crafty guy was bent on milking me further.

Next thing was that I was missing a photocopy of the data page of my international passport. Can you imagine? At this point, my immunity to bullshit kicked back into full gear and I just told him, "I'm already late". To try to persuade me, he said it would take only two minutes but I wasn't having it. He dropped off my back after another ten seconds of following me, trying to convince me that I needed to make that photocopy.

You won't guess the first thing the check-in attendant at the consulate did when I handed him my stapled documents. He ripped them apart, while I stood there, just smiling to myself. Anyway, when I was giving the 100 Naira to the tout, I already told myself it was charity. Needless to say, no one at the consulate asked for the data page of my international passport.

Back at the office after my interview,  one colleague told me that photocopies cost 1000 Naira per copy around the consulate. He also told me that the first time he ever went for a US visa interview at the Walter Carrington consulate, the touts had made him spend almost 20,000 Naira on unnecessary photocopies (and services) for him and his family.

The takeaway? These touts are there to make a livelihood out of the scarcity of complete information on visa interview requirements. I don't want others to suffer the same fate as my colleague did in their hands and that's the major reason I'm writing this article.

I've mentioned it earlier but to reiterate, all the documents which I needed for the DS-160 interview are as follows:
  • My International Passport (no need for photocopies, even though you can make a couple to boost your confidence)
  • My visa fee payment receipt print-out from GTB
  • My DS-160 visa application confirmation print-out
  • A print-out of my visa interview appointment confirmation

Required documentation for US visa interview Lagos consulate
Required documentation for US visa interview Lagos consulate

It is more or less all the documents that have to do with your entire application process (pretty logical, innit). I would say it doesn't hurt though to have a few photocopies of your international passport data page at hand. Who knows if there's a scenario where they might ask for that or if they might start asking for it in the future.

DISCLAIMER: Note that my US travel is for business purposes only. I understand that some additional supporting documents might be required in other scenarios.

The US visa interview proper

There was hardly anyone waiting at the check-in point when I got back to the US consulate the second time. After being scanned thoroughly by the security to be devoid of any electronics, I approached an attendant and handed him all of my documents. Once he confirmed all ok, he directed me to another set of security men who then led me out and into the building on the other side of the road as the check-in centre.

In this building, I underwent another couple of security checks, even to the point of having to remove my belt, before I finally reached the interview room. The interview room is a square hall with the interviewers behind glassed-off stalls which surround the large open space in the centre. The open space in the centre is organised using an array of queue stands.

As I made my way through the queue stands, one interviewee caught my attention. He was an old man who was apparently seeking a visa to visit his family member abroad. It appeared as though, the interviewer was grilling him on questions to determine how truly cordial the relationship between him and his prospective host in the US is.

Before getting to the senior white lady who actually interviewed me, I went through two other consulate staff. The first one (a black lady) took my passport and posted something behind it. The next person (a black man) scanned the sticker behind my passport and recorded my fingerprints using an electronic scanner.

The interview proper which came next was pretty short and went very well. I answered most of the questions without any difficulty and without mincing words. The reason for my travel is simple enough anyway. There was almost a glitch, though, but thank God things did not escalate and I was able to explain myself.

When the interviewer asked me how long my stay in the US was going to be, I said 1 to 2 weeks. Her brows quickly furrowed as she looked intently at me from behind the glass separating us. She told me I had to be specific; it's either one week or two weeks. I really can't remember what I said in response, but after I answered, she asked why I had said "one to two weeks" earlier. I just told her it was a mistake and that the stay duration was not at the top of my mind when she first asked me.

After the interview, I thought a better explanation (which is actually the truth) would have been as follows. "The actual reason I'm travelling to the US would engage me for a full week. But then, one would need to have settled in for one or two days before going about the actual business which brought one to the US. Hence, my mentioning two weeks to cater for the arrival and departure schedules".

Honestly, I was scared that things were going to go south from the point of this mistake because the woman appeared to be upset. Thankfully, I scaled through. The last words which she spoke to me were, "I have issued your visa. You can pick it up from your elected delivery centre in another four days".

Happy frogs from MemeSuper
Read More

11 March 2017

Hafiz Adewuyi

GTBank 737 USSD simple banking's recently introduced PIN authentication is misleading

From inception, the sole means of authenticating your transactions on GTBank's USSD banking (popularly known as Bank 737 or Simple banking) has been the last 4-digits of your debit card number (PAN). Over time, this has gotten a lot of criticism from security analysts as well as security savvy customers, on the basis that the 'PIN' was not a private number which by worldwide standards, is expected to live solely in the owner's memory.

Well, many years after, the almighty GTBank finally decided to respond to these concerns this February. A few weeks back, GTBank introduced actual PIN authentication to their 737. The publicity for the new feature reads:
"Simple Banking just got more SECURE. You now require a 4-digit PIN to complete your 737 transactions"
Read on to find out why I highlighted "require" in the above phrase.
Read More

7 March 2017

Hafiz Adewuyi

A chance encounter with the Stutern twins at the Palms Lekki

Good morning! It's Monday Tuesday, and if there's one thing I would like to tell you, it would be that last weekend was awesome for several reasons, one of which is the subject of this post.

On Saturday morning, I decided to stop by Shoprite at the Palms shopping mall, Lekki before heading to the office (no I don't work on weekends). Just as I made to leave the parking lot for the mall, I noticed the Stutern twins heading in my direction and towards the mall. I was trying to remove my debit card from my bag which I was going to leave behind in the car. I recognized them from the days when I used to visit CCHub regularly. But somehow, I managed to decide that I was not gonna say hello, just to avoid any social awkwardness. 

Hafiz and the Stutern twins, Taiwo and Kehinde
From L-R: Kehinde, Hafiz, a family of photobombing smileys and Taiwo

Alas! My evil anti-social plans would not survive the bigheartedness of the Stutern twins. As soon as they were within earshot of me, they stopped. Then one of them said something along the lines of, "it seems like I know you from somewhere". He was straining to remember where it was that he knew me from but I quickly came to the rescue. I told him of the days when I used to frequent ccHub, Yaba and how I have known them since their early days of starting Stutern. 

He was clearly surprised that I knew them in association with Stutern. So, I aptly went on to increase the surprise factor by mentioning how I knew about their partnership with Jobberman, as well as the recently launched JobPalava, a job review site for Nigerian employees. When I mentioned how cool I thought it was that they came up with JobPalava within a few weeks from when the idea was born on Twitter, I was told that one of them works on the back-end while the other does front-end development. The twins were beaming with smiles at this point. And I myself was grinning like a teenage groupie who ran into her number one pop-star crush.

We soon ran out out of small talk fodder and it was time to part ways. But just before we did, one twin gracefully asked for my name and what I do. I hope it didn't show in the way I said, "I work at ** check LinkedIn **; I'm a programmer there" that I'm not that excited about or proud of my work. Anyway, I think his response was: "wow, that's great", and he said it in a way that left me with no doubt about his sincerity.

Minutes later, as I walked into Shoprite, it occurred to me that writing about this encounter was a good blogging idea for the weekend. And in that instant, I regretted having not asked for a photo with the Stutern twins. I prayed in my heart that by a stroke of luck, I would run into them again before leaving the mall. Apparently, God was listening because as I walked towards the checkout aisle after buying mostly things that were not on my imaginary shopping list, I saw the Stutern twins standing side-by-side just ahead, with their backs at me. Yippee!

I walked quietly towards them and being the weirdo that I am, I stopped just behind them without as much as a sound to announce my presence. The twins were discussing with a friend whose birthday I later discovered was on that day. After like 7 seconds of being in stealth mode, perhaps due to some gesture from their friend who could see me all along, one twin finally turned around and blew my cover.

Without much ado, I told them of how seeing them again that day was a dream come true. The birthday girl was quickly recruited to be our photographer, even though she was meant to be the celeb of the day. I gave her my phone to take the pics but after a few seconds of trying to adjust for quality, she quickly found out how shitty the phone camera is. Thankfully, she announced this in the most polite way possible to the three men standing behind the camera with picture-perfect smiles. I agreed.

Fortunately, Kehinde quickly came to the rescue and offered to have the photos taken with his phone instead. Click, click, click and that was it. I was glad that I now had the most essential ingredient for a blog post about a random encounter with these admirable creators of Stutern. Now, there was no excuse for not writing it. Bitter-sweet stuff. 

Just before we finally parted ways, Kehinde collected my number so he could send me the pictures on Whatsapp. About thirty minutes later, when I had settled in the office, I picked up my phone and was happy to see that the pictures (3 or 4 of them) had been delivered to my phone. I thanked him for the pictures and used the opportunity to ask:  "is this Taiwo or Kehinde"? And the fact that Kehinde answered that question, dear reader, is the only reason why instead of 'Kehinde' in all the places where it occurs in this article, we don't have: "the twin in the grey polo".

Thanks for reading!
Read More

2 March 2017

Hafiz Adewuyi

Cardless and Cashless in a Victoria Island Lagos supermarket

Good morning!

On most weekdays, I have an early breakfast which is usually finalised with a very milky cup of Nescafe breakfast (milk+coffee+sugar) plus extra milk. Today is a weekday. And just as I started to feel the pangs, I remembered that I had used my last sachet of Nescafe breakfast two days ago.

A sachet of Nescafe breakfast
A sachet of Nescafe breakfast

I promptly headed down the office staircase with the intention of buying enough sachets to last a couple of weeks from the petty shop on the street. But a few steps to getting there, cheapskate remembered that a sachet of Nescafe from the shop had cost me 100 Naira yesterday. Cheapskate also remembered that I had purchased the string which just ran out at only 60 Naira per sachet from Hubmart, VI in February. Of course, cheapskate considers 40 Naira a significant difference when you're talking about a dozen items.

I quickly decided to head to Hubmart supermarket on Adeola Odeku. It's just a three-minute Keke Marwa ride away from my office. I got a Keke quickly and was at Hubmart in no time. I walked in and as usual, upon being visually bombarded with all the things that money can buy, I instantly forgot why I was there. After some five painful seconds of racking my brain, I regained my bearing and walked quickly towards the tea/beverages aisle.

I was happy to see that they had my Nescafe breakfast sachets in stock. I checked the price and voila; it was still 60 Naira per sachet! At this point, I remembered that I had only 520 Naira in my pocket, which I'd only realised when it was time to pay for the Keke. Having also left my ATM debit card back at the office, I was full of regret because it was the first day of a month; a perfect time to buy this and that.

I did some quick math and selected 7 sachets of Nescafe breakfast (100 Naira for return fare). In the time from aisle to counter, I found myself (for once) deeply empathising with recently established FinTech companies whose cause is to "fix payments in Nigeria". My thoughts: "I have money to pay (in my bank account), you have goods to sell that I want. Why should there be anything on earth standing in the way of converting that combo into a successful transaction"? Hubmart, like most retail businesses in Nigeria, accepts only cash and card (via POS) payments in-store.

I'm not the type to start non-routine discussions with strangers. So, when during checkout, I initiated a discussion with the cashier about alternative payments options, I realised I was deeply pained by this artificial limit on my spending power. Unable to say much as to why there were no additional payment options, she promptly advised me to discuss with her supervisor, pointing behind me to where he (the supervisor) was seated.

Of course, I took the offer. As soon as checkout was done, I made for the little glassed-off room at the corner of the store just behind the checkout aisle where the manager was seated, interacting with his colleagues. I greeted him cheerily even as he stood up to meet me. I made sure I was extra smiley and enthusiastic in my greeting, so he would be relaxed and not think I was here to fight him (as is usually the case when Nigerians ask to see the Manager in Nigeria). I went straight to the point, explaining to him my dilemma and inquiring into whether they were considering adding more payment options.

To my delight, he was empathetic. He let me know that they had been approached by a couple of solution providers seeking to help them out. He mentioned GTB 737 and a solution where you pay by tapping with your phone (PayAttitude I guess). He also told me why those solutions had not been adopted by their business. "While we understand the need to have multiple solutions, we've not found a way to integrate those solutions to our inventory management system to ensure that reconciliation does not become more painful as a result", he said. "Good enough", I replied, then bade him farewell before I made for the exit.

Now I wonder how a simple solution like NIBSS mCash which does not even print receipts at the moment is going to cater to a business with this kind of non-trivial concern. Of course, there's always a way. Someone just has to be ready to do the work to find it and tow it to the end.
Read More

25 February 2017

Hafiz Adewuyi

The Yoruba tone marking web application - My first completed pet project

Last night represents a major milestone in my life. Right now, I feel like a new father, and rightfully so.

At the start of every year since 2015 (two years after I started programming professionally), it has been a resolution to make something useful on my time and just put it out there on the internet. I felt (and still feel) indebted to the world every day, because a lot of things that make life easy for me were created from the sweat of strangers who owe me nothing. Well. It did not happen in 2015, neither did it happen in 2016. Not like I did not have ideas, not like I did not start work on some ideas a couple of times. I did. But largely due to a lack of skill in following through on challenging personal goals, I did not as much as get close to completing anything. Constant awareness of this ineffectiveness of mine is something I have had to live with every day for years on end; a major source of unhappiness.

About three weeks ago, I was writing an article (probably for this blog) and at some point, I included a Yoruba sentence in the article. The perfectionist in me wanted to tone mark that sentence, so I quickly searched Google to see if there was a simple web app which I could use to achieve this. After about ten minutes of permutating "add intonation/tone marks to Yoruba text" in my search queries, I gave up. In all the searching, the closest I saw to a solution for my problem was this online Yoruba keyboard which I could not figure out how to use to achieve my purpose. The only other option was to download a Yoruba keyboard to my PC. Of course, I thought that would be an overkill since I am not a regular creator of written Yoruba content. I gave up and left my Yoruba sentence without tone marks.

The seed to create a solution for people who need to add ami ohun (tone marks) occasionally was sown in my heart that day. I was sure that if I needed it, then there was certainly hundreds of other people out there who find themselves in a similar place each day. I did not act immediately, no. It would take something else to finally spur me on to making the first move to water that seed.

Ami ohun image; tone marked using Yoruba tone marking tool
Àmì Ohùn image; tone marking courtesy of Yoruba tone-marking tool 

Last week, as part of a practical interview for a prospective programming job, I was required to build a simple web application in a few hours. Granted, it was a basic task for someone who has been programming for as long as I have. But given the time constraint and the fact that 50% of the work (front-end web development) is not something I get to do regularly at my current job, it was quite challenging. It took me three hours to complete the task due to a couple of hitches encountered; meanwhile, I had guesstimated two hours as being the worst case scenario ETA.

In the end, it happened that I did a good job, even though time taken was a bit on the high side. I could tell that the reviewer also thought I did fine (probably not great) since while he had a few negative things to say after reviewing the other applicant's work, he simply looked through mine, saw that it worked, asked me a few questions and moved on with his life.

I left the interview centre feeling quite fulfilled with myself. Mostly because I had solved one Javascript/HTML (front-end web development) challenge at the dying minute. The challenge was quite simple but solving it was the difference between pass and fail for me. My confidence in myself soared and before the end of that day, I made up my mind to work on the Yoruba tone marking idea. This way, I could kill two birds with one stone: exercise my fledgling front-end development muscles while at the same time creating something useful which is something I practically live for.

I know the dangers of procrastination. So that Friday night before leaving the office for home, I spent about one-hour thinking about my intended solution. At the end of the day, I had a pretty clear picture of what work lay ahead of me and the weekend was looking pretty exciting for me. I hacked at it all Sunday long and by Monday, I had completed a large portion of the application logic (backend). The backend of the Yoruba tone marker is a .NET Web API application with one simple controller.

Basic algorithm for Yoruba tone marking web application | Screenshot from my OneNote

On Tuesday, I completed the application backend and told a couple of friends (Benjamin and Sadiq) that I was working on something that I intend to complete before end-of-week. My motivation was something between seeking third-party approval and also, creating some accountability for myself. I - like most other people - want to know that what we're doing makes sense and one easy way to do this was to sound it off of my friends.

On each day of the week which ends today (Saturday 25th February 2017), I made sure to spend a few hours gaining traction on the front-end work. I believe that I lack the talent for front-end web development and design in general, so it took some willpower for me to dive into it. I reduced my inertia by sketching a wireframe on paper of what the Yoruba tone marker page would look like. Also, I did not have to think about theming. I just duplicated an HTML file in the Start Bootstrap admin template which I had used for the job interview from last week and modified it to achieve my desired layout.

By the start of Thursday, I had made major traction and so excited was I that I spent the entire day working on my pet project (please, don't tell my boss). By the end of the day, I was pretty much done. All front-end functionality (facilitated by Bootstrap and Angular JS 1) was in place with the only outstandings being finishing work.

At this point, a lot of my initial excitement about the idea had faded away and I was sure that no one was going to use this thing except me. On Wednesday, I sent an email to the curator of The Yoruba Blog in a bid to get an idea of how useful this tool was going to be in their content creation process. I'm yet to get a response up till now, even after sending my first tweet since probably 2014 at them as a reminder on Thursday. I hope the curator is alive and well.

Nonetheless, I tapped into all the stuff I've read that encourages me to be prolific and not a perfectionist and promised myself to put the Yoruba tone marker online by Friday; come rain come shine. Again, this urgency was due to my experience with numerous previous endeavours which failed because I lost focus for a few days and never got to regroup on.

Be prolific; courtesy of an infographic (How to diversify your life) created by James Altucher
Be prolific; courtesy of an infographic (How to diversify your life) created by James Altucher

True to my word, I made the Friday deadline at the last minute!

Announcing the Yoruba tone marking web application to my friends
Announcing the Yoruba tone marking web application to my friend, Benjamin

As soon as I uploaded the Yoruba tone marking web application to Somee: a shared hosting platform for .NET applications (http://www.somee.com) for free, I did basic tests to ensure that all was fine. Then I sent out the link to Benjamin and Sadiq, the only two people who knew I was working on the app. I wonder how similar the joy I felt on sending out that link is to what new fathers feel when announcing the safe delivery of their new-born child to friends and family. It had been long since I had felt that way. Simply happy with myself and with renewed confidence in my power to make for myself, the kind of life that I want.

The reward for good work is even more work

As my old colleagues at Appzone would often say: "the reward for good work is, even more, work". For once, I agree with them. Having been impressed with the neurochemical flood from this achievement, my brain has been focused since last night up till now on finding a new way to make it happen again before long. Talk about achievement addiction. I want to work on something useful; not just exciting and challenging but which I am sure will get used by at least, one random stranger out there every day.

Allow me to plug here, what I consider to be one of my most successful creations so far. It's a blog post on shipping prices in Nigeria which singularly attracts over 70% of the traffic to this blog. It made its way (naturally) to the top of Google's search results for that focus phrase and adds some value to the lives of several tens of people who read it every single day. I think if not for it and a few other outlier posts, I would since have abandoned this blog. Merely coming back every day to look at the previous day's page views on my blogger dashboard inspires me to create more things that are of value.

Does Wiza Think daily pageviews - Shipping cost and Prices in Nigeria is the most popular post on the blog
Does Wiza Think daily pageviews - Shipping cost and Prices in Nigeria is the most popular post on the blog

To conclude, I hope that the Yoruba tone marking tool (my first baby) would be worth all the time I spent creating it to someone out there every day, just like my shipping article and hopefully better. I will extend it with tracking features before the end of next week so I can get a good sense of how useful it is after a few weeks. Also, I have several ideas on how to make the tool even more useful to its target audience but I intend to delay further work until I talk to someone who spends a large part of their time creating Yoruba content (remember I want to make something useful). Already, it is in the top Google results for Yoruba tone marker, so it's fine on discoverability. Also, since no one else would blow its trumpet, let me inform you that this tool is one in a million. From my research, there is no other free tool in the world that helps you tone mark pre-typed Yoruba text. Thank you, thank you.

On to the next one (I don't know what this would be yet)! I hope to get an idea which is simple enough and challenging enough and potentially useful enough before the end of next week. To digress, I seem to have learned to cut myself a bit of slack. I figure it's all part of growing up and knowing that the way to succeed is not by giving myself unrealistic deadlines to achieve goals.

Anyway, I hope I was able to inspire you to be creative by sharing this story. You can check out the Yoruba tone marker here if you have not done so already. What do you think about it? Come back here to say something nice **smiles**
Read More

2 February 2017

Hafiz Adewuyi

USSD Assistant (Nigeria) App Review

If there is one Nigerian application which I've downloaded this year and I think deserves to make the builder some good returns, then it would be the USSD Assistant app on the Android Play store.


At lunch time yesterday, I had just downed my hefty meal of rice, beans, meat, plantain and chicken and it was time to pay up. For the past couple of weeks, I've been using mCash (NIBSS' new USSD payment product which is meant to serve as an alternative to POS and targeted at micro business owners)  to pay for lunch at the office canteen. The bank where I work happens to be one of the front-runners of the new payment scheme. So in order to put their money where their mouth is, the internal product managers got all the food vendors at the company canteen to set up merchant codes on NIBSS mCash.

As I picked up my phone to pay with mCash, I winced mentally as I remembered the length of the short code which I had to type to make a simple payment. Not only that, I also had to turn in my seat and squint at the poster on the wall to get the 7-digit merchant code. The format of the shortcode is: *402*Merchant-Code*Amount#. In yesterday's case, the code I was to dial was *402*77000567*800#. At this point, it occurred to me to check my Android Play store for an application where I could store my frequently used USSD codes. I was sure this is a problem that a reasonable amount of Nigerians face, given the recent proliferation of USSD applications in the country's financial industry.

I opened the Play store and searched for "USSD code Nigeria". The first six results were non-Nigerian applications and from the names, none of the results seemed to be what I was looking for. However, upon scrolling down a little, I found what turned out to be the perfect match for my problem. The name of the app "USSD Assistant (Nigeria)" invited me to click it and take a closer look into what it has on offer. As I finished reading the app details, a smile of contentment appeared on my face. This was exactly what I was looking for!

On the one hand, I was glad that a solution actually existed for my current problem. However, I  was not so happy that my hopes to launch my Android development practice with this idea were now laid to rest. Now, I have to look elsewhere for a real problem that is best solved with an Android app.

I went ahead to download and install the app and after exploring it for a few minutes, I was so impressed that I gave the app a rating of 4 out of 5 on the app store.

USSD assistant Nigeria Android Play store review
My Android Play store review of the USSD assistant Nigeria application


  • auto-detects your device MSISDN and network
  • comes preloaded with the most useful USSD codes on your mobile network (airtime recharge, airtime balance, airtime transfer and so on)
  • comes preloaded with the USSD recharge code of all the Nigerian banks with USSD banking

USSD Assistant (Nigeria) Android app homepage
USSD Assistant (Nigeria) Android app homepage

  • allows you add, edit and categorize as many (named) USSD codes as you want
  • has a simple UI; except for the network website home page which I consider unnecessary. Perhaps, it's just that I'm not in the target demographic for this pesky feature


  • should allow you specify placeholders in your USSD short code. This would improve the flexibility of the app. Currently, if tomorrow, I want to pay a different amount than I did on mCash yesterday, I would need to create a completely different code
  • should remove the constantly displayed ad on the homepage of the application (who am I kidding). Meanwhile, is Jiji.ng the only Nigerian organization advertising with Google Adwords these days? They are all over the videos on YouTube and now, here they are all over this application
  • should come preloaded with other useful default menus like bank transfer which will contain the USSD funds transfer codes of Nigerian banks


However useful it might be, the USSD assistant Nigeria app happens to have less than 100 downloads. As of today, it has been on the store for over three months. On noticing this, I remembered a post I read on Radar's Techcabal that through analysis, explained how difficult it is to make a mobile app which solves a problem local to Nigeria, commercially viable. I also noticed that the only other review on the app before I wrote mine today was from the developer's relative (they share a last name).

In any case, i think it's great that the developer took the effort to solve that problem. In the worst case, he would not earn any money from it but he would always be able to point to it as an item in his portfolio and use it to get rewarding opportunities in the future. In the best case, he would get sponsorship or investment from a company or organisation interested in the success of this tool. Win-win if you ask me. I want to be like Azeez Olaniran (the developer of the USSD assistant Nigeria Android app).
Read More

19 January 2017

Hafiz Adewuyi

Queuing into the new year at Genesis Deluxe Cinemas popcorn shop

On the Friday before last New year's eve, I decided to drive all the way from Yaba to GDC at the Palms, Lekki, just to go see a movie. My hope was that by going that far away and for a slightly more expensive cinema than nearby Ozone, I would be able to boycott the razz crowd that often characterises the former. How wrong I was!

The Palms Shopping Mall, Lekki

Right from the parking lot, it was obvious that I had made a silly decision. It had been ages since I last went to the cinemas on a Friday night, so I didn't really know what to expect. My thoughts were that since it was a working day, the cinemas would not be highly populated. I failed to factor in the realities that apart from the fact that it was a Friday night when people like to let their hair down, it was also the holiday season and a lot of companies were on break.

Lucky enough, I did not have to drive a full-circle around the park before I located a parking spot which was barely enough to fit my car. I entered the mall to find that the number of people on the cinema floor was representative of the congestion in the car park. Everyone had come to see "The Wedding Party", Nigeria's highest grossing movie of 2016. Fortunately, that was not the movie I had in mind.

I proceeded to join the ticket queue which was about 15 persons long. On the bright side, it was moving pretty fast, all thanks to no one but the curt male attendant. From the look of things, he did not have a moment to spare empathising with anyone for anything. The items below nicely sum up his behavioural scripts for his duties that night:

  • collect money and give tickets to those people who have cash and the movie they want to see is available
  • redirect the ones who don't have cash matter-of-factly to the ATM's downstairs since as they can see, the POS is not working
  • tell those who want to see exhausted movies matter-of-factly that they have to wait another hour or so for the next showing

I can honestly empathise with the guy, though. He was the only one serving the massive "Wedding Party" crowd, so he literally had no time to spare on niceties.

I happened to fall into the POS group as a cashless guy now. My former employer CEO did well to inspire in me, a conviction that a cashless society is a good thing for the economy; that all the monies hidden in soak-away holes and overhead Geepee tanks are partly responsible for the poverty in the country. That if only everyone was kind enough to put the money in a bank instead of a ghana-must-go bag under their beds, then the world would have enough money going around for the most important things.

So, I had to walk all the way down to get my last 2000 Naira from the ATM. So sad was my situation, I did not even have any money left to get a soft drink after paying for the movie which happened to be exactly 2000 Naira. At least, I was going to get free popcorn, and that would be good compensation for the trouble, or so I thought. 

I was way ahead of the time for my movie, so after buying my movie ticket, I went to kill time by roaming idly through the aisles of Shoprite. About ten minutes to movie time, I returned to the cinema floor.

I walked from one end of the humongous movie snack queue  - which I met on arrival - to the other, just to be sure it was actually one contiguous queue. The queue was about 40-person long and I'm not even exaggerating. I had my aha moment when a look at the popcorn stand revealed that only one of the 3 popcorn machines at the snack shop was working. Grrrr!!! That's exactly how my internals felt at this point.

To cope with frustrating situations like this one, the usual go-to for my brain is to go into problem-solving mode. You can imagine the kind of ridiculous business ideas my brain processes every day; there's a business idea in every corner you look when your country sucks this much. So I more or less just ask myself, "ok, what do we do about this now"? In a few seconds, I got the perfect idea for the management of the cinemas. 
"All they had to do to win in the battle of the cinemas was to up their customer care game by dedicating a couple of their staff to help movie-goers get stuff from the shop into the cinema halls. This way, no one has to lose part of their hard-earned fun time in the name of free popcorn which I never stop wishing would be without that inedible shaft at the bottom. Simple enough, innit"?
Please, snap me back and out of my daydream. In real life, I ended up going into the movie about 15 minutes late, and that was only because the cinema projector was turned on over 10 minutes after the scheduled movie time and they did not skip the ads o. At the end of the day, all I can tell myself is, "life is not a daydream brother. If you can't open your own cinema, then you can as well go and hug transformer".

Revisiting that day now, I find it poignant that despite the fact that the management of the cinemas extended no gestures of empathy for the plight of the movie-goers who had to queue for over half an hour for a free box of popcorn plus the ones who were paying for their stuff o, nobody threw a tantrum the entire time I was in the queue. Everyone was civil and polite. It's like we Nigerians "ti gba kamu", as my (Yoruba) people would say. We're resigned to our ill fate and we just can't be bothered to ask for more. 

"After all, everyone is just 'managing' in this recession, so where do you want the more to come from"?

So, the man who triggered me and thousands of other people to go on this 500-words-a-day-challenge (or a bot that acts on his behalf) sends me daily emails which contain prompts of what I should write about each today. Today is the first time that I will be following it simply because I think I have good enough content that matches the prompt.
Read More

18 January 2017

Hafiz Adewuyi

500 words a day check-in

Trust me, I wrote 500 words yesterday. It might have been here and there but I actually did. And I created a post on my other blog, even though a large portion of it was lifted out of a draft I did like two months ago.

Today, I created about six different drafts on this blog. By created, I mean I wrote the title and listed out the key points I wanted to make in each post. Most of them were created around midday when my mind was contending with an avalanche of thoughts so violent that I could hardly focus on work. And I know there's the chance that I will add a few more tomorrow. Unfortunately, as my bosses always say, "we don't need effort, we need results"!

Anyway, it happens that I did not get around to fleshing out any of the drafts. I managed to come up with another topic just before showing up at my daily writing 'desk'. While working on this topic, I got distracted and soon found myself creating my first post on TechCabal's Radar (a Nigerian forum for techies). While creating that post, I was very excited. Post-creation, I also feel very fulfilled. The life of my dreams is one in which every task I have to complete energises me in this way.

The marked difference between that writing and the one which I was having so much difficulty completing this morning is that I'm looking forward to the response to the former. Perhaps, this is one experience I should keep close to heart when shortlisting ideas for my blog.

One thing I am happy about these days is that I have also been journaling every day. I must mention that a major reason for this improvement is the email reminders I've been getting daily - for the past few days - from my online journal of what I wrote one year ago. I was serious with my journaling around this time last year, so now I am reaping the fruits. Things seem to be looking up in this writing department after all. Hopefully, I am not counting my chicks too early.

What do you think?
Read More

16 January 2017

Hafiz Adewuyi

Recommitting to the 500-words-a-day challenge

In case you missed it, on the first day of this year, I committed myself to a 31-day writing challenge. Each day, for the next 30 days, I was to write at least, 500 words and post it on my blog. I managed to maintain the streak for the first six days. However, as is usual for most new endeavours that I undertake, I started to waiver in my commitment on day 7 or 8, I missed one day out of laziness, telling myself that I would make up for it the next day. 

But from that day on, it progressively became easier to just procrastinate the writing and end up not doing it at all. Now, it's been over a week since I last completed any post. Yes, I have several drafts lying all over the place, but the point of this whole challenge is to put something out every day.  

I am not happy about this development at all. And I'm definitely not waiting around for the start of another year or even another month before I make another go at carving my writing through the stones of practice. Today, I start counting from 1 again. 

Below is a list of some of the top things - apart from sheer laziness - that I would say have prevented me from maintaining my streak on the 500-words-a-day challenge:

Writing in other places I keep an online journal and I get to write in that almost every day. I also have another blog that commands my attention almost as equally as this blog does. And sometimes, I find that I am much more interested in writing on a topic which while appropriate for the other blog, would not be for this one here. I would cut myself some slack here and work with the ruleset below going forward:
  • You have to post on at least, one blog per day, even if you have filled in your journal entry. This is because your writing for yourself is different from your writing for others. And this whole challenge is about honing your "writing for others" skills
  • You are allowed to write for others on any blog or platform, so long as it is published and the cumulative words across all daily published blog posts number up to 500
  • It is mandatory that you report your daily progress with the challenge on this blog when the actual post for the day is on another blog
Lack of focus/analysis paralysis Each time I decide to go on an internally motivated endeavour like writing, studying, working on a pet project and so on, I have to fight a battle of why this one is the most important thing I should be doing with my free time versus the other ones. Sometimes, even after I move past stage 1 of the battle and decide that I want to write, I still struggle to decide which one of the three articles which I currently have in mind would be most worth my while and that of my audience. Which one would be too short and which one would be too long and take too much of my time (which I don't want). The usual unfortunate end result of all this struggle is that I end up crashing under the feeling of being overwhelmed and end up going to read other people's stuff (like 10 ways to determine what to do with your time) or doing something else random online. 

Why is it so much easier to consume than to produce?


too many open browser tabs
Too many open browser tabs
When I'm writing for my blog, I like to write within the blogger editor. That means I'm writing in a highly tempting environment which is the 50 other tabs I've got open on my browser. Each time I hit a snag in my writing, it's very easy to jump out of the blogger editor and go check whether I have a new mail. Next thing you know, I've spent the next hour watching cat videos on YouTube

DISCLAIMER: I don't watch cat videos! Plus this is today's post. Phew!
Read More