Product Fails – Online banking Email Alerts

For some time I have been both impressed and baffled by the effectiveness of transaction alerts in the banking sector.

To put things in perspective, I would be looking specifically at email transaction alerts from some of our banks. SMS alerts are good but most times provide just about enough information to tell you that there was a credit or debit transaction on your account.

Overall, and I’m not being biased to favour any one bank, but I think Guaranty Trust bank provides the fastest email services for transaction alerts in Nigeria. This is purely based on my experience and not on a general consensus or extensive research.

On the other hand, considering the speed at which Diamond bank is able to send SMS alerts for transactions, I wondered why their emails were coming in almost 24 hours after the transactions were made. In one occasion the same emails came in multiple times the same day, given the impression of multiple transactions.

In order to better understand what was going on at Diamond bank with their email alert system, I examined the email headers that I received with my transaction alerts.

So here’s what I found out.

  1. The emails are created and dispatched right on time at the exact moment the transaction is recorded in their ERP application.
  2. Next, another server mbankerpro-ho ( processes the emails and hands them over to the next server in line which is
  3. Now this server ( seems to be the bottleneck in the system as it takes a lot of time (over 6 hours) to transfer the emails to the edge server that is responsible for sending out the emails to the world. From the headers this server appears to be running a version of Microsoft SMTP server with id 8.3.348.2.
  4. The emails are finally dispatched by the edge transport server ( which does a good job of dispatching emails in record time to the final recipients – you and I, the account holders.

With this I think there is a need in this bank and probably in some others for an upgrade to their internal email processing system. It appears that the queue is somehow being processed very slowly or probably being processed in an ad-hoc method.

Also, it is important to note that the edge server does not have a valid SPF record which makes it a candidate for spoofing and fraudulent emails. I wouldn’t go heavy on the absence of DKIM records for signing these emails but this one is also good to have.


Product Market Fit Cycle

Found some interesting talks on startup growth and scaling.
So you’ve been thinking about creating a minimum viable product (MVP); have you thought about the minimum viable segment (MVS) of the market you are going to sell to?

Starting today, my approach changes. If I could start tonight what would I create that would get the customer to do something right away?

Find the full gist on Michael J Skok here.

Running a Daemon (self restarting) Process in Ubuntu – the easy way

I recently had to think about changing my cron jobs that run every 2 minutes to something more reliable.

Basically, running a cron job every other minute has the disadvantage of restarting the script from the beginning even when the previous instance is still running. Say for example you have a script that needs to check if there are new records in a database table. You run that script every minute to “poll” the database, edit the records and move them to a new table.

What happens if you run the script at 2:00am and it doesn’t stop, then your cron runs again at 2:02am while the first one is still running? You will get two copies of the data in the database table.

This could easily corrupt your data and lead to duplicate results as seen above.Now this is where daemons and queue managers come in handy.

In this scenario I decided it was time for me to take the gauntlet of doing something different with queued jobs. While I’m still implementing this I thought it would be useful to keep a reference to the article that helped me make that decision. Find a piece of it below. Source link at the bottom.


Writing an upstart script

Turns out, writing your own upstart scripts is way easier than building init.d files based on the /etc/skeleton file.

Ok so here’s how it looks like; You should store the script in /etc/init/yourprogram.conf, create one for each Node program you write.

description "node.js server"
author      "kvz -"

# used to be: start on startup
# until we found some mounts weren't ready yet while booting:
start on started mountall
stop on shutdown

# Automatically Respawn:
respawn limit 99 5

    # Not sure why $HOME is needed, but we found that it is:
    export HOME="/root"

    exec /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1
end script

post-start script
   # Optionally put a script here that will notifiy you node has (re)started
   # /root/bin/ "node.js has started!"
end script

Wow how easy was that? Told you, upstart scripts are childsplay. In fact they’re so compact, you may find yourself changing almost every line cause they contain specifics to our environment.


Node can do a lot of stuff. Or break it if you’re not careful. So you may want to run it as a user with limited privileges. We decided to go conventional and chose www-data.

We found the easiest way was to prepend the Node executable with a sudo like this:

exec sudo -u www-data /usr/local/bin/node

Don’t forget to change your export HOME accordingly.

Restarting your Node.js daemon

This is so ridiculously easy..

$ start yourprogram
$ stop yourprogram

And yes, Node will already:

  • automatically start at boottime
  • log to /var/log/node.log

..that’s been defined inside our upstart script.


But wait, start and stop are just shortcuts. Who’s really behind the wheel here, is initctl. You can play around with the command to see what other possibilities there are:

$ initctl help
$ initctl status yourprogram
$ initctl reload yourprogram
$ initctl start yourprogram # yes, this is the same start
# etc

Update from October 30th, 2012

The basic idea has not changed since 2009, but we did add some tricks to our upstart script. Here’s what we now use in production at

# cat /etc/init/transloaditapi2.conf

description " node.js API 2"
author      "kvz"

stop on shutdown
respawn limit 20 5

# Max open files are @ 1024 by default. Bit few.
limit nofile 32768 32768

  set -e
  mkfifo /tmp/api2-log-fifo
  ( logger -t api2 </tmp/api2-log-fifo & )
  exec >/tmp/api2-log-fifo
  rm /tmp/api2-log-fifo
  exec sudo -u www-data MASTERKEY=`cat /transloadit/keys/masterkey` /transloadit/bin/server 2>&1
end script

post-start script
   /transloadit/bin/ 'API2 Just started'
end script

Starting & stopping your daemon:

Usually, the suggested method for starting and stopping daemon process is to use the system’s “service” command. So here we would use:

sudo service transloaditapi2 start
sudo service transloaditapi2 stop

Check if your daemon is running:

sudo service transloaditapi2 status


List of Online GSM Recharge Portals

I recently had a strong urge to start one of these things called online recharge card platforms. I know this wouldn’t take me more than a week of work to set this up.

Pruning and fine-tuning user features based on the requests as they come. Earlier last year I had made inquiries about the volume of sales one of these sites was making. Needless to say, I was looking to build a clone of their service based on the figures I was looking forward to from their sales trend (if I could find one).

Keyword research, search volume analysis, and a couple other techniques revealed that this was a market that’s still very underdeveloped. So what would it take to start this business?

Looking to operate the way these people do, entering scratch cards into an online portal just wasn’t going to cut it for me. Then I read this article by Ken Idialu who had done some pretty decent work trying to set up a recharge card exchange for cash business; where he gave some interesting insights into the process and challenges that led him to abandon the idea.

After much speculation, I decided it was time to take stock on the number of startups that have survived the dungeon of Nigeria’s online marketplace for recharge cards.

So here is a list that shows providers of mobile phone recharge services in Nigeria in no particular order.

  1. TopUp Nigeria
  2. Pin Reload
  3. Airtimeng
  4. Top Up Genie
  5. Mobile Recharge
  6. E-Topup
  7. VT Pass
  8. Easy 2 Voice
  9. Recharge Nigeria
  10. My Paga

If you’re on this list you might need a visit to the drawing board to fix your platform’s user experience and SEO. Or maybe I missed you … In that case feel free to write me and I’ll review your service. If it’s good enough I’ll include it.

Hot! Missing Key Feature in Nigeria’s e-Banking Portals

Hello GT Bank,
I have seen the recent updates you have made to your online banking portal. That’s a good change.
I also saw your review here and it’s a good way to go.

Nice work on the UI by the way. I also like the service that allows you to disable your hardware token (although I might never use that feature).

In addition to this, I would like to ask for one more update to your e-banking portal; Could you add a service to allow customers DISABLE STOLEN ATM CARDS?

Presently, it takes too long to reach out to the bank to complete a report of a stolen or lost ATM card.
We could do with a simple implementation of this using your e-banking portal.
And if it’s not too much work, you could create a simple API that allows people to disable their cards or freeze the account by SMS.

I still very much believe in your speed and quality as pace setters, so I’m counting on you to nail this one.

Some of the annoyances and goodies of Windows 8.1

I just saw a small typing window to put this post together and publish it.

Really, these are just a few of the things I’ve noticed. I had come to accept that there’s no way to change some of these things by complaining. But alas, these things keep staring me in the face everyday of my life as I have to use this device. I see why the Mac boys are making proselytes.

The annoyances and some of the niceties in Windows 8 /8.1, here are my thoughts.

  1. There’s nothing really new about the file browser (explorer.exe). They even made it worse such that you have to click inside the file area after clicking a link on the left sidebar menu before you can scroll the list of files and folders on the right.
  2. Awful networking control menus – and I really mean this one. Windows 8.1 is the very worst I’ve seen since modern windows history when it comes to the GUI tools for networking. After looking for ways to view the connection settings and delete some obsolete WiFi network profiles (out of range) from the list, I found a Microsoft article with details for how to do this using – wait for it… the command line; that is the only way to do it. That does it for me when it comes to relying on the default sharing features and network security of windows.
  3. Earphone / speaker switching. Maybe it’s just my PC, but I had to uninstall and reinstall the audio drivers for my laptop over and over to fully understand why the Audio kept playing through the speaker even after connecting a headset.

Now unto some of the good parts.

  1. A default PDF reader with the skinniest of features – super quick.
  2. Default app to view, and re-size videos while navigating; talk of video editing on the fly.
  3. Sticky notes; this one I use in conjunction with Onenote.

For windows XP hard-cores, the UI might seem a little overkill for simple activities like locating your files. But there’s always the windows key + E option to bring up the file explorer.

There are a few more annoyances and goodies that you could add to the list, but don’t just take my word for it; You probably want to try it out. If you look over your shoulder to the person sitting next to you, you are more than likely to find someone entirely deep in the 8th window.

50 Free Courses in the Technology Section of Udemy

Here’s a nice list of free IT courses on
You can check out my short list of sites providing reliable online education here


Below are a list of 50 free courses in the technology section of Udemy. I had to comb through 87 pages to find this. I teach the little I have learned in my 10 years of programming on my training blog Truston Teaches Tech.


View original post