English


Tomorrow will see the world’s first commercial 4G mobile network here in Stockholm. In the beginning, it is expected that speeds will be around 50MBps and grow  to around 80MBps. TELIA is currently the only operator offering it ( http://www.telia.se/4g )

With 4G, users will be able to watch live HD videos using their mobile broadband.

In my view, less connected countries like those in Sub-Saharan Africa might gain by investing in 4G wireless networks instead of spending their limited resources on outdated wired networks that come with other challenges especially when trying to expand them.

By building 4th Generation networks, African countries would be able to combine services like TV, Phone and Internet and all this using an easy to deploy wireless system. Being a new technology makes it expensive but I sure am that, with time, it will become affordable.

After googling around for a plug-in to help me authenticate PHPBB3 forums against an already existing web application and finding none, I decided to write my own. I modelled it to auth_db and auth_apache and named it auth_dbext as short for authentication using DB from external source (external to PHPBB Database).

I am sharing it with others who might have a similar need and of course any improvements are welcome.

I have not implement some optional parts (see http://wiki.phpbb.com/Authentication_plugins for more info)

The login code is in the function (The full source code is at auth_dbext.phps)

[code lang="php"]
/**
* Login function
*/
function login_dbext(&$username, &$password)
{
global $db;

// do not allow empty password
if (!$password)
{
return array(
'status' => LOGIN_ERROR_PASSWORD,
'error_msg' => 'NO_PASSWORD_SUPPLIED',
'user_row' => array('user_id' => ANONYMOUS),
);
}

if (!$username)
{
return array(
'status' => LOGIN_ERROR_USERNAME,
'error_msg' => 'LOGIN_ERROR_USERNAME',
'user_row' => array('user_id' => ANONYMOUS),
);
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Note: on my systems, I include these following lines from an external file that is not web-accessible
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
$db_host = "localhost"; // Here goes the MySQL server address, hostname or IP
$db_user = "username"; // Here goes the MySQL user allowed to read the table below (GRANT SELECT ON ....)
$db_password = "passwd"; // Here should go the password associated with the above user
$db_database = "dbName"; // Here goes the Database containing the table below
$db_table = "tblUsers"; // Here will goes the table list users allowed to login into PHPBB
////////////////////////////////////////////////////////////////////////////////////////////////////////////
$col_username = "username";
$col_password = "password";
$hashMethod = "sha1"; // Can be one of: md5, sha1, plain
// In case you choose to use a non-standard hashing function, be
// sure to change below where the $hashedPassword variable is created

$objMySqli = new mysqli($db_host, $db_user, $db_password, $db_database);

/* check connection */
if (mysqli_connect_errno())
{
return array(
'status' => LOGIN_ERROR_EXTERNAL_AUTH ,
'error_msg' => 'LOGIN_ERROR_EXTERNAL_AUTH ',
'user_row' => array('user_id' => ANONYMOUS),
);
}

// Check the User/Password
if($hashMethod == 'sha1')
{
$hashedPassword = sha1($password);
} elseif($hashMethod == 'md5') {
$hashedPassword = md5($password);
} else {
$hashedPassword = $password;
}
$sql =
"SELECT 11 as ID
FROM " . $db_table . "
WHERE
" . $col_username . " = '" . mysqli_real_escape_string($username) . "' AND
" . $col_password . " = '" . mysqli_real_escape_string($hashedPassword) . "'
";

if ( $result = $objMySqli->query($sql) )
{
if ( $result->num_rows <= 0 )
{
return array(
'status' => LOGIN_ERROR_USERNAME,
'error_msg' => 'LOGIN_ERROR_USERNAME',
'user_row' => array('user_id' => ANONYMOUS),
);
}

$sql = 'SELECT user_id, username, user_password, user_passchg, user_email, user_type
FROM ' . USERS_TABLE . "
WHERE username = '" . $db->sql_escape($username) . "'";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

if ($row)
{
// User inactive...
if ($row['user_type'] == USER_INACTIVE || $row['user_type'] == USER_IGNORE)
{
return array(
'status' => LOGIN_ERROR_ACTIVE,
'error_msg' => 'ACTIVE_ERROR',
'user_row' => $row,
);
}

// Successful login...
return array(
'status' => LOGIN_SUCCESS,
'error_msg' => false,
'user_row' => $row,
);
}

// this is the user's first login so create an empty profile
return array(
'status' => LOGIN_SUCCESS_CREATE_PROFILE,
'error_msg' => false,
'user_row' => user_row_dbext($username, sha1($password)),
);
} else {
// TODO: Handle this situation
}

// Not logged in using the external DB
return array(
'status' => LOGIN_ERROR_EXTERNAL_AUTH,
'error_msg' => 'LOGIN_ERROR_EXTERNAL_AUTH',
'user_row' => array('user_id' => ANONYMOUS),
);
}
[/code]

To use this plugin, copy it to the directory /includes/auth/ (the file should be /includes/auth/auth_dbext.php ) in your PHPBB3 install location.  This file can be downloaded at auth_dbext.php (ZIP) or view a highlighted source file at auth_dbext.phps

After reading the 2007 ITU report on ICT Development Index, I simply realize how deep the coma of Sub-saharan Africa is. When are we going to wake up???

Nordic countries, as in many other great things, come first with Sweden taking the number-one-sit. Out of 154, Rwanda comes at an unacceptable place of 143 (falling back from 136 [year 2002] even though the index improved). It has taken the Ugandan sit which improved its rank by 3 positions. Maybe the new Ugandan Minister for Development will help improve the index even better (On a side note, when I heard the news about the Ugandan President’s wife becoming a Government Minister, I thought it was a joke but by re-checking the calendar, it was not yet April 1st).

This is not about Ranks. But these numbers should awaken people and remind us that there are other important things than Genocide and mass-killing each other.

Almost all the shameful ranks are occupied by Black-inhabited countries. Behind Rwanda comes such countries as Tanzania, Mali, DR Congo, Chad and Niger. There is probably something wrong with us and until we have unearthed it, we will continue to lag far behind.

I read a few days ago that the SEACOM fibre was landing on the shores of Kenya. Let me hope that it will not only increase bandwidth for the East African region, but also interest in the use of ICTs. But, I believe that without local content, the backbones will dry up quickly and the local population will never see the benefit of having invested so much money into it.

Image by New Times of Methane extraction platform on lake KIVU

The New Times of Rwanda has a very interesting news article informing us that finally the methane gas from Lake Kivu has produced electricity. I say finally because the first time I heard about this gas was when I was still doing my primary school. At the time a teacher told us that it was a terrible gas that sucks in those who approach it and kill them making it even impossible to recover their bodies because nobody would venture to go down in the lake to bring them back.

Now, that gas is no longer a killer-only monster but has been a useful ingredient to the production of electricity: my congratulations to the team that made this dream come true. They made history.

Like the skinny kid with a funny name , I will say Yes We Can.

I hope the full scale production will not take as many years as it took since I heard about the existence of this gas. I am sure this might be a great export product.

With my need to exchange data between a ASP.NET and PHP web applications, I decided to use JSON. The .NET team did a good job by integrating JSON de/serialization into the language (NET 3.5) but they decided not to follow JSON specifications for some good reasons. Serializing an object that has a DateTime property will insert a string that won’t be understood by json_decode of PHP.

On the site of JSON, there is no such thing as a date type.  I have taken the ISO 8601 path which is my preferred date format (MySQL and Swedish Locale standard)

Consider the following class:

[code lang="C#"]
[DataContract]
public class Person
{
[DataMember]
public DateTime DateOfBirth { set; get; }
[DataMember]
public string Names { set; get; }
}
[/code]

By Serializing it you will get something like

[code]

{"DateOfBirth" : "\/Date(1210408872000+0200)\/", "Names" : "Kavuna ka Lyaziga"}

[/code]

That Date is not defined as a JSON type. In case your JSON will be used directly by JavaScript or .NET (C#, VB) you will not need to write extra codes.

This should be a lesson to all African leaders whose ideas are hardly known. We are in the digital age.

President of Iran, Mahmoud Ahmadinejad

Ahmadinejad, the President of Iran has a blog that he (himself) updates. He uses 15 minutes every week on it (reading or posting). It is accessible at http://www.ahmadinejad.ir/
I remember some months ago when the Blog of the Swedish Minister of Foreign Affairs (and former prime minister) caused controversy. This was mainly due to journalists who don’t know if the ideas on the Minister’s blog should be taken as views of his Ministry or not.
Also, the prosecutor launched an inquiry into whether the Minister breached the law when some hate comments passed several days on his blog. This was about Anti-Palestian comments posted by some visitors (readers) of the blog. Under Swedish law, such comments should be removed by the blog maintainer.

Let me hope that African leaders in general, and Rwanda, my country, in particular will in the near future set up blogs where they post regularly and let us “Baturage” post comments, suggestions and questions. That way, they will make sure that they have something interesting to blog about. And those who pass months without any post will have given a clear idea of how well they sleep at work.

I hope this guy gets enough funding to spread his products all over Africa. Yes, only home-made items will increase the bargaining power of African countries.

[code]Mubarak Muhammad Abdullahi, a 24-year-old physics undergraduate in northern Nigeria, takes old cars and motorbikes to pieces in the back yard at home and builds his own helicopters from the parts.

"It took me eight months to build this one," he said, sweat pouring from his forehead as he filled the radiator of the banana yellow four-seater which he now parks in the grounds of his university.

The chopper, which has flown briefly on six occasions, is made from scrap aluminium that Abdullahi bought with the money he makes from computer and mobile phone repairs, and a donation from his father, who teaches at Kano's Bayero university.

It is powered by a second-hand 133 horsepower Honda Civic car engine and kitted out with seats from an old Toyota saloon car. Its other parts come from the carcass of a Boeing 747 which crashed near Kano some years ago.[/code]

I am sure those neo-cons will start saying negative things like “no one will be allowed to use something made locally” , “we need to have it certified by European engineers” and other “empty words” that are common from African politicians. They should help him reach good levels of reliability instead of discouraging him at the beginning.

And those who gain (mostly through bribes) by importing will make sure that those corrupt politicians halt this guy.

http://afp.google.com/article/ALeqM5hV0rzEDq7TWnlm7tMmr2zeQmiRig
http://news.yahoo.com/s/afp/20071021/od_afp/nigeriahelicopteroffbeat

RwandaTel, the Rwanda government owned telecoms company is to be sold again. This time, not to a “virtual” american company, but to LAP Green Network, a Libyan based (or rooted) company.

It’s true that I am not a big fan of selling strategic companies to non-rwandans, but I will congratulate LAP Green Network for this new expansion. I also hope that it will treat Rwandans as brothers and sisters and thus bring them more development and funds.

By the way, I have tried to locate websites that are owned by this company without success. I will continue and possibly post what I find here.

Another serious incident involving a Murokore pastor (EDIT: original link seems dead: try here). Religion has been used to oppress people for so long. Religion has been used to explain why the colonization of Africa was necessary. Religion has been used to advance the beauty of Apartheid. Religion has been used to enslave black africans and force them into a life that still has negative effects until today. And religion is still used to extort poor Africans. When will this end? Maybe not tomorrow, maybe never.

No wonder why there are so many pastors and fighting each other (even though they say or are said to use the same book in their preaching). No wonder why they are born everywhere everyday in the great lakes region. They get too much money.

News from Rwanda and Uganda alone are shocking. One day is a pastor who defiled young students who are to go to school in order to put the holy spirit in her body, another day is a pastor who uses electro-shocks to prove that he is in direct contact with the holy spirit, a new day comes with a pastor who impregnated a girl younger than his own daughters, another day is a pastor from South Africa trying to fool us by proving the innocence of the rapist pastor without even waiting for the trial to conclude … the list is long.

/2007/07/08/bakrindimwe-bavastu-mwakire-umwuka-wera/

It’s good news Mobile phone companies are scrapping Roaming charges. I even wonder if they had many customers paying roaming fees as most people I have seen had SIM cards for every country they visit. As cars moved to the left when crossing the Gatuna (Katuna in ruganda) border, phones users switched their SIM cards.

I remember that the MTN Uganda SIM card received signal up to around 5 kilometers inside Rwanda (from the Gatuna border) but the MTN Rwanda signal was not strong enough to be used after crossing the border.

Let’s hope other business institutions such as Banks will follow the example set by MTN. And the Internet providers should realize the benefits of interconnection without waiting for EASSY and/or other super-regional initiatives that may end up dying before their birth certificate is signed.

By the way, when will Ugandans start driving on the RIGHT ? (Should I say the right side not the wrong one? ;) )

Next Page »