E-Book: App Design help for design-averse developers from Afriapps

Cover Afriapps developer Andrew Mugoya is back at it again with a new book offering some designing help to app developers. Titled  “Help! I am a developer with no clue about design”, the book aims to help developers integrate minimal design elements to make their apps acceptable not only to the Afriapps app store but also potentially the Android Market. Mugoya draws from his experience running Afriapps and having to reject badly design apps to offer tips that will ” will not turn developers into killer designers, but they will hopefully ensure users are not turned away from apps/sites due to woeful designs”. In combination with my previous post about website design tips for the African market, it’s a general consensus that in African software development, design if very often given the last place whereas it is a crucial element in making a product successful when well exploited. I would definitely encourage developers to read and learn from both sources in order to better their product and make them more competitive.

You can download the book here.


Website design rules for the African market

Will Mutua at Afrinnovator writes an interesting article on how to design websites for the African market and supports it with some facts on the ground. Looking at the examples of the most successful websites in Kenya and Nigeria, Will comes down with the following nuggets when it comes to designing for the African market:

  • First to market:
    Bottom line: If you are offering a great service, and customers catch on and engage with your service, it is unlikely that they’ll jump ship when someone else comes by who’s offering exactly what you are offering with a better looking skin on it.
  • User Experience Design trumps Graphic Design:
    You may not want to hold up the product because of the graphic design side of things but user experience is everything. If you’re going to spend time on design, spend as much of it as you can on getting aspects of user experience and user interaction just right.
  • Mobile Web Rules in Africa Design Specifically for it:
    […]It would be wise to invest in creating a custom site for mobile, or making your website mobile friendly. As far as web design for mobile goes, the cardinal principle is to minimize. Minimize on the number of graphics you have, minimize on the number of actions a user needs to do or number of pages it takes to accomplish a task.

Great advice very in tune with my own experience so far. Read the whole article here and you should also be a frequent reader of the Afrinnovator website.


Time localization in CakePHP

It turns out localization is not such an obvious task. I am currently trying to localize my Nouchi.Mobi app built with CakePHP and although CakePHP i18n console shell is helpful in created POT files, there still remains the question of translating time strings in French when using for example the CakePHP timeAgoInWords() or the PHP strftime() functions . I found a good tutorial on getting it set up in your environment here. Luckily I develop on Linux so i was able to find the LC_TIME files and import them in my application. Another tip i found out was also running the i18n shell task on your CAKE_CORE folder. It will create a POT file for your views, and your helpers as well which will give you access to some of the hard coded strings like month and day of the week values.


Kenyan startup Mocality Vs Google

It’s kind of interesting, and not frequent to have a mini-scandal going in the African technology scene and the latest one involves Mocality, a Kenyan mobile business directory startup and contractors/employees (???) of Google Africa that used Mocality’s client call list and misrepresented themselves as working with Mocality in order to in fact, steal customers away from them. According to Mashable:

Nelson Mattos, Google’s vice president for product and engineering for Europe and emerging markets, stated on his Google+ account: “We were mortified to learn that a team of people working on a Google project improperly used Mocality’s data and misrepresented our relationship with Mocality to encourage customers to create new websites.” […] Mocality employees decided to do some investigative work, setting up dummy numbers, and found out that employees from Google’s GKBO were calling prospective customers and current Mocality customers, identifying themselves as GKBO employees partnered up with Mocality.

Shady salespeople using shadier tactics to meet to sales quota, but the interesting twist to this story came from give-it-to-you-raw Kenyan technology journalist Robert Alai who posted an article titled “Mocality Should not Play Victim, they Also Scrape Data and Fake Listings” that you should definitely read where he accuses Mocality of being “guilty by association” of fraud i.e scraping other sites listing and posting fake data. Alai also argues that the publicity will most certainly save Mocality from certain bankruptcy. He accuses Mocality and other local players of various ethical breaches that in the end reinforce to end users the idea that the internet is not trustworthy and is counter productive to the growth of their business models. The vitriol in the comments indicated to me that he touched a nerve somehow so I highly encourage you to give it a read and read the comments as well.

CakePHP Facebook Plugin: API Error Description: The specified URL is not owned by the application.

During the development of Nouchi.Mobi where i use this quite useful Facebook plugin (get it, it’s the best!), i ran into an issue trying to authenticate my localhost server against my Facebook app settings. I’vre created a virtual host entry in Apache pointing to my local project folder, edited my /etc/hosts file with a new “indexdot.dev” entry  but i could not add that url  to the Facebook app App Domain settings. The qualified domain name for my app in the Facebook settings was nouchi.mobi, and trying to login from my local app I would get this message;

API Error Code: 191
API Error Description: The specified URL is not owned by the application.
Error Message: redirect_uri is not owned by the application.

The solution was quite simple actually,  thanks to this post, I added local.nouchi.mobi to my /etc/hosts file, created a virtual host entry in Apache pointing to my application folder and finally, added local.nouchi.mobi as a additional domain entry in my App Domain settings in Facebook and voila!


Git Merge/Git Difftool: Compare a file between two different branches

Moving from Subversion to Git can be hard and i ran into an issue trying to resolve conflicts in a file that was different in the two branches I work on. Since I am working on a Mac, with OSX Lion, i found these two articles to be quite useful:

How to setup Git to use Diffmerge to setup DiffMerge as your Git difftool, for Mac OSX you actually need to set the path to DiffMerge like this:

prompt = NO
[difftool “diffmerge”]
cmd = ~/Applications/DiffMerge.app/Contents/MacOS/DiffMerge “$LOCAL” “$REMOTE” # For DiffMerge

Using DiffMerge as your Git visual merge and diff tool provided some good examples on how to use the command git difftool

# diff the local file.m against the checked-in version
git difftool file.m

# diff the local file.m against the version in some-feature-branch
git difftool some-feature-branch file.m

# diff the file.m from the Build-54 tag to the Build-55 tag
git difftool Build-54..Build-55 file.m

This helped me resolve my issues, DiffMerge is an impressive tool, especially the three way merge, and I heavily recommend it.

Here is a more complete tutorial on merging in DiffMerge.