Three Tips for Great Web Design

Our friends over at Best Web Design have recently posted a new article outlining three helpful tips to keep in mind whenever someone is creating a website.

It is really useful knowing the things that will make a user want to stay on a website.For if a website is poorly designed, with the user’s interests not in mind, then it is unlikely that that website will succeed. There are hundreds of thousands of new websites launched every single year, and the vast majority of them do not last long. These tips should help the website’s you make, endure.

So without any further adieu, I heartily recommend you take a read of this Web Design Tips article.

How much does Microsoft profit every second?

You have likely heard the big numbers about how much Microsoft earns in profit a year, but have you ever wondered what that equates to in regards to ‘per second’? Various numbers have been flung around, ranging from $10 to $300,000. But what actually is the truth?

During the past quarter (October - December 10), Microsoft has earned a staggering US$6.63 billion in profit, and US$19.95 billion in revenue. Let’s see what this equates to.

In one…

  • Day, Microsoft profits: $73,666,667
  • Hour, Microsoft profits: $3,069,444
  • Minute, Microsoft profits: $51,157
  • Second, Microsoft profits: $853
  • Remember, that is profit. Now I’d call that a lot.

Content-Management Systems, Explained

You may have heard the phrase “Content-Management System” bounced around on the net quite a bit and maybe you came away confused as to what it really is. Maybe instead you have simply heard the acronym for it, ‘CMS’ and that left you even more confused. Well thankfully, this article here will give you a brief overview of this important way of managing websites.

The most basic type of website on the Internet is the one that is completely static – that means that the content of the site is not changeable unless the author manually edits each page’s HTML. Now this can be very time consuming, especially if there are hundreds of pages on the website. Now just there is some bit of information that needs to be changed on each one of those pages. For example, if a copyright tag is at the bottom of every page featuring the year it currently is, with a static website the owner would have to manually edit each page every year to update it to the latest year. That’s a whole lot of work if you ask me.

Another problem with simply a static website is that it is only editable on a computer that has an FTP program. So if someone wanted to change some of the content of their site via a friend’s computer, they would have to download the software first. And if someone wanted to edit the content of their site via a public computer, downloading software would not be possible, and so thus editing the website couldn’t happen.

So this is where Content Management Systems come into play. Instead of having to manually edit the HTML of each page on your website, a CMS makes this process a whole lot easier by allowing you to change the site’s content through your web browser. A CMS is programmed in a server-side language (such as PHP) and so thus it runs on the web server. The benefits of this are that it enables the site owner to access the CMS from anywhere and simply through their browser. It therefore makes a website editable even on public computers.

The way that a website (that has a CMS attached) works is by being connected to a database. So generally, instead of the CMS changing the HTML files of the pages, it instead modifies the content on the pages by changing the data that is being stored in a database. So therefore, the pages of the website are not simply sourcing from their own respective HTML files, but also from the database.

You may be asking at this point: Then couldn’t anyone change the content of my site? No, for the Content Management System is always protected by a password, ensuring that only the site owner has access to it. Content Management Systems do vary greatly from each other, and so when someone says ‘Content Management System’ they could simply be referring to a blogging system, while others could be referring to a system that say generates graphs on the website basing them on data inputted by another server…and everything in between.

So in a day of rapid-change, if your website is one that needs to be regularly updated, go for a Content Management System. In the long run, it will definitely save you time and therefore money.

Five Tips to Improve your Site Design

Have you ever wondered what makes those particular websites stand out as being great? Great websites usually in turn become popular. But what is it that makes them so great? Often it has lots to do with the website design. If a site has very poor site design, it will not be a joy for the user to visit and so therefore the website will be stuck in the cold dark realms of isolation where GoogleBot remains the only visitor.

What I am going to give you in this article is five tips on how to turn your not-so-good website into something great - into something memorable to the user, causing them to return to the site.

1. Site load times - There is nothing worse than visiting a website and it taking a long time to load. The average online user is not very patient and so if the site does not produce what they want quickly, they will hit the back button. What is too long you ask? If a site takes more than 4 seconds to load then it is in severe need of improvement. Studies have shown that if a site does not load before that time, the majority of users will have hit the back button by then.

2. Avoid using Flash - This second tip will actually have significant impact on your site’s load time. Using Flash will almost always make your site take longer to load and so the simple solution is to always avoid it. Having small areas of the site you may say is fine; however, that does not stop the problem of browser compatibility. Not every user will have flash installed, and so even though you may have something that looks great in Flash, if only a selection of your users can view it, it is pointless.

3. Ensure easy Site Navigation - Most times if a user is interested in your site, they will not just stay on the homepage; they’ll want to view other content on your site. For example, if a user is at a business website and they want to find the business’ contact details page but cannot due to poor site navigation, that business will have lost a sale. Make sure you have a clear menu system that presents itself in a logical manner, rather than just having a whole lot of links all around the page.

4. Control the use of Colours - Everyone hates plain and boring black and white websites. People love colour and so it is important for a site to have a least some colour on it. But there is an extreme that some people have gone and that is to have too many colours. Instead of the colours of the site complementing the content, often it can distract from it. Avoid that ditch.

5. Maintain Text Readability - In your endeavour to make the site colourful, a thought may have popped in your mind to change the colour of the body text too. Avoid giving into those urges. Why? Because text readability is of critical importance on a webpage, for otherwise the site is useless to the user if they cannot read it. Black text on a white background has always been and always will be the easiest combination for readability. Aim for that and you’ll be on the right track.

The Benefits of a Professional in Respect to Web Design

We have all heard those ambitious claims from people who are not experienced in web design that they are about to create a website. Now that is a noble aim, depending on the site that is. So the person buys or downloads a WYSIWYG editor like Frontpage or Dreamweaver and then sets out to make the site. The interface looks similar to Microsoft Word and so they they make the site as if it is a Word document. Soon, what was originally a noble endeavour has turned into a website disaster. And everyone knows it. Yet often, since the individual knew that he made it himself, he is proud of it and so publishes it.

Bad Design Example:
Bad Website Design - Example

Now what is the problem with that? Well it’s a problem depending on if the website is for a business or it is simply a personal site which basically only the creator will visit. If it is for a business, then there is a major problem. If a business’ website is poorly designed, people will not want to visit it. If they do stumble upon it, it will be seconds before they have clicked ‘Back’ on their browser. The website visitors won’t want to refer the site to their friends and thus, the business does not gain any business by having a website.

Examples of bad designs includes those sites that have flashing text everywhere, or ones that have a fluorescent colour as the background making the text unreadable. Or the other extreme is that the site is completely too boring, with simply a whole chunk of text on a white background with no colours on the site at all. This are only some examples of bad site design practices.

Businesses should have websites. But the crucial thing is that the Business’ website must be well-designed. This means, not done by an amateur, but by a professional. That is, a reliable company that specialises in website design and web development. For this way, a visually pleasing website will be produced that is user friendly and W3C Compliant.

W3C Compliance refers to the standards committee who decide what is proper HTML and XHTML markup. These standards are those upon which Web Browsers (like Internet Explorer, Firefox, etc) use when deciding how to render webpages. If a site is not compliant with these standards, then even though the site may look not too bad in one browser, it is likely it will not be displaying correctly in the other web browsers.

Furthermore, being W3C Compliant means that your website is future-proof, meaning that your website will be displaying correctly for years and years to come regardless of the new versions of web browsers that come out. Being non-compliant gives the site a much greater chance of not being supported at all by future web browser editions that are released.

But you ask though, what is a good Web Design company out there? One I would recommend would be Web Dev 2.0, I have found them to be reliable, fast and they create very good web solutions. Visit their website - Web Design Brisbane.

Using MetaWebLog with PHP-XMLRPC

Due to the fact that there is virtually no documentation available on how to get the MetaWebLog API working with the PHP-XMLRPC library, I decided to write this post. The MetaWebLog API is an application programming interface that allows data to be passed from a client to a server, and vice versa. It is used by all of the most popular blogging software, allowing the user to post blog entries from software like Microsoft Word or Windows Live Writer.

If you want to add MetaWebLog functionality to your custom blog or CMS, then this post will really help you. First off, download the PHP-XMLRPC library and upload the three files - xmlrpc.inc, xmlrpcs.inc, xmlrpc_wrappers.inc - found within the lib folder to your web server.

With that done, you can now start implementing the MetaWebLog functions. The first one you’ll need to implement is blogger.getUsersBlogs, otherwise software like Microsoft Word won’t recognise it as a valid MetaWebLog implementation. With that done, you can then start working on the functions that you might need to use.

To debug your code, make sure you take advantage of the XMLRPC debugger. And for more information on what each function is supposed to accept and return, check out Microsoft’s MSDN.

Below is the MetaWebLog implementation I developed to work with the PHP-XMLRPC library:


<?php // These three files are from the PHP-XMLRPC library.
    include(
“xmlrpc.inc”);
    include(
“xmlrpcs.inc”);
    include(
“xmlrpc_wrappers.inc”);

    /**
    * Used to test usage of object methods in dispatch maps
    */
    
class xmlrpc_server_methods_container
    
{

    }

  function userLogin($username$password$area) {

    // This is where you would check to see if the username and password are valid
    // and whether the user has rights to perform this action ($area)
    // Return true if so. Or false if the login info is wrong.

  }

    $getUsersBlogs_sig=array(array($xmlrpcArray$xmlrpcString$xmlrpcString$xmlrpcString));
    
$getUsersBlogs_doc=‘Returns a list of weblogs to which an author has posting privileges.’;
    function 
getUsersBlogs($xmlrpcmsg)
    {
    
$structArray = array();
    
$structArray[] = new xmlrpcval(array(
      
‘isAdmin’        => new xmlrpcval(true‘boolean’),
      
‘url’        => new xmlrpcval(‘http://blogurl’’string’),
      
‘blogid’    => new xmlrpcval(“The Blog ID”’string’),
      
‘blogName’    => new xmlrpcval(‘The Blog Name’’string’),
      
‘xmlrpc’    => new xmlrpcval(‘http://LocationOfThisFile’’string’)
      ), 
’struct’);    
        return new 
xmlrpcresp(new xmlrpcval($structArray,‘array’));
    }

    $newPost_sig=array(array($xmlrpcBoolean$xmlrpcString$xmlrpcString$xmlrpcString$xmlrpcStruct$xmlrpcBoolean));
    
$newPost_doc=‘Post a new item to the blog.’;
    function 
newPost($xmlrpcmsg)
    {
    
$blogid=$xmlrpcmsg->getParam(0)->scalarval();
    
$username=$xmlrpcmsg->getParam(1)->scalarval();
    
$password=$xmlrpcmsg->getParam(2)->scalarval();
    
    if(
userLogin($username$password‘addnews’) == true) {
      
$content=$xmlrpcmsg->getParam(3);
      
$title $content->structMem(‘title’)->scalarval();
      
$description $content->structMem(‘description’)->scalarval();
      
//$dateCreated = $content->structMem(’dateCreated’)->serialize();   // Not all clients send dateCreated info. So add if statement here if you want to use it.
      //$timestamp = iso8601_decode($dateCreated);  // To convert to unix timestamp
      
if($content->structMem(‘categories’)->arraySize() > 0) {
        
$categories $content->structMem(‘categories’)->arrayMem(0)->scalarval();
      }
      
$published=$xmlrpcmsg->getParam(4)->scalarval();

      // Put your DB queries in here to store the new post.       

      return new xmlrpcresp(new xmlrpcval($postid,’string’)); // Return the id of the post just inserted into the DB. See mysql_insert_id() in the PHP manual.
        } else {
      return new 
xmlrpcresp(0$xmlrpcerruser+1“Login Failed”);
        }
    }
    
    
    
$editPost_sig=array(array($xmlrpcBoolean$xmlrpcString$xmlrpcString$xmlrpcString$xmlrpcStruct$xmlrpcBoolean));
    
$editPost_doc=‘Edit an item on the blog.’;
    function 
editPost($xmlrpcmsg)
    {
    
$postid=$xmlrpcmsg->getParam(0)->scalarval();
    
$username=$xmlrpcmsg->getParam(1)->scalarval();
    
$password=$xmlrpcmsg->getParam(2)->scalarval();
    
    if(
userLogin($username$password‘editnews’) == true) {
      
$content=$xmlrpcmsg->getParam(3);
      
      
$title $content->structMem(‘title’)->scalarval();
      
$description $content->structMem(‘description’)->scalarval();
      
//$dateCreated = $content->structMem(’dateCreated’)->serialize();   // Not all clients send dateCreated info. So add if statement here if you want to use it.
      //$timestamp = iso8601_decode($dateCreated);  // To convert to unix timestamp
      
if($content->structMem(‘categories’)->arraySize() > 0) {
        
$categories $content->structMem(‘categories’)->arrayMem(0)->scalarval();
      }
      
$published=$xmlrpcmsg->getParam(4)->scalarval();
      
      
// Put your DB queries in here to update the post corresponding to the $postid.  

      return new xmlrpcresp(new xmlrpcval(true,‘boolean’));
        } else {
      return new 
xmlrpcresp(0$xmlrpcerruser+1“Login Failed”);
        }
    }
    

    $getPost_sig=array(array($xmlrpcStruct$xmlrpcString$xmlrpcString$xmlrpcString));
    
$getPost_doc=‘Get an item on the blog.’;
    function 
getPost($xmlrpcmsg)
    {
    
$postid=$xmlrpcmsg->getParam(0)->scalarval();
    
$username=$xmlrpcmsg->getParam(1)->scalarval();
    
$password=$xmlrpcmsg->getParam(2)->scalarval();
    
    if(
userLogin($username$password‘editnews’) == true) {
      
      
$result mysql_query(“SELECT * FROM sometable WHERE id=’$postid’ LIMIT 1″);
      while (
$row mysql_fetch_assoc($result)) {
        return new 
xmlrpcresp(new xmlrpcval(array(
            
‘postid’        => new xmlrpcval($row[‘id’], ’string’),
            
‘dateCreated’        => new xmlrpcval(iso8601_encode($row[‘timestamp’]), ‘dateTime.iso8601′),
            
‘title’        => new xmlrpcval($row[‘title’], ’string’),
            
‘description’        => new xmlrpcval($row[‘content’], ’string’),
            
‘categories’        => new xmlrpcval(array(new xmlrpcval($row[‘category’], ’string’)), ‘array’),
            
‘publish’        => new xmlrpcval($row[‘published’], ‘boolean’)
            ), 
’struct’));
      }
        } else {
      return new 
xmlrpcresp(0$xmlrpcerruser+1“Login Failed”);
        }
    }
    

    function deletePost($xmlrpcmsg)
    {
    
$postid=$xmlrpcmsg->getParam(1)->scalarval();
    
$username=$xmlrpcmsg->getParam(2)->scalarval();
    
$password=$xmlrpcmsg->getParam(3)->scalarval();
    
    if(
userLogin($username$password‘editnews’) == true) {
      
      
$query “DELETE FROM sometable WHERE id=$postid LIMIT 1″;
      
mysql_query($query) or die (mail(“your@email.com”,“Error with MetaWebLog deleting new post”,$query ‘ | ’ mysql_error()));
      
      return new 
xmlrpcresp(new xmlrpcval(true,‘boolean’));
        } else {
      return new 
xmlrpcresp(0$xmlrpcerruser+1“Login Failed”);
        }
    }
    
    
    
$getRecentPosts_sig=array(array($xmlrpcArray$xmlrpcString$xmlrpcString$xmlrpcString$xmlrpcInt));
    
$getRecentPosts_doc=‘Get the recent posts on the blog.’;
    function 
getRecentPosts($xmlrpcmsg)
    {
    
$blogid=$xmlrpcmsg->getParam(0)->scalarval();
    
$username=$xmlrpcmsg->getParam(1)->scalarval();
    
$password=$xmlrpcmsg->getParam(2)->scalarval();
    
    if(
userLogin($username$password‘addnews’) == true) {
      
$numposts=$xmlrpcmsg->getParam(3)->scalarval();

      $structArray = array();
      
      
$result mysql_query(“SELECT * FROM sometable ORDER BY timestamp DESC LIMIT $numposts”);
      while (
$row mysql_fetch_assoc($result)) {
        
$structArray[] = new xmlrpcval(array(
          
‘postid’        => new xmlrpcval($row[‘id’], ’string’),
          
‘dateCreated’        => new xmlrpcval(iso8601_encode($row[‘timestamp’]), ‘dateTime.iso8601′),
          
‘title’        => new xmlrpcval($row[‘title’], ’string’),
          
‘description’        => new xmlrpcval($row[‘content’]),
          
‘categories’        => new xmlrpcval(array(new xmlrpcval($row[‘category’], ’string’)), ‘array’),
          
‘publish’        => new xmlrpcval($row[‘published’], ‘boolean’)
          ), 
’struct’);    
       }
      return new 
xmlrpcresp(new xmlrpcval($structArray ‘array’)); // Return type is struct[] (array of struct)
        } else {
      return new 
xmlrpcresp(0$xmlrpcerruser+1“Login Failed”);
        }
    }
    
    
$getCategories_sig=array(array($xmlrpcArray$xmlrpcString$xmlrpcString$xmlrpcString));
    
$getCategories_doc=‘Get the categories on the blog.’;
    function 
getCategories($xmlrpcmsg) {
    
    
$username=$xmlrpcmsg->getParam(1)->scalarval();
    
$password=$xmlrpcmsg->getParam(2)->scalarval();
    
    if(
userLogin($username$password‘addnews’) == true) {
    
      
$structArray = array();
      
      
$result mysql_query(“SELECT * FROM categories”);
      while (
$row mysql_fetch_assoc($result)) {
        
$structArray[] = new xmlrpcval(array(
          
‘title’        => new xmlrpcval($row[‘title’], ’string’),
          
‘description’        => new xmlrpcval($row[‘description’], ’string’)
          ), 
’struct’);    
       }
      return new 
xmlrpcresp(new xmlrpcval($structArray ‘array’)); // Return type is struct[] (array of struct)
    } else {
      return new 
xmlrpcresp(0$xmlrpcerruser+1“Login Failed”);
        }
        
    }
    
    
$newMediaObject_sig=array(array($xmlrpcStruct$xmlrpcString$xmlrpcString$xmlrpcString$xmlrpcStruct));
    
$newMediaObject_doc=‘Upload media files onto the blog server.’;
    function 
newMediaObject($xmlrpcmsg)
    {
    
$username=$xmlrpcmsg->getParam(1)->scalarval();
    
$password=$xmlrpcmsg->getParam(2)->scalarval();
    
    if(
userLogin($username$password‘addnews’) == true) {
      
      
$file=$xmlrpcmsg->getParam(3);
      
$filename $file->structMem(‘name’)->scalarval();
      
$filename substr($filename, (strrpos($filename,“/”)+1));
      
//$type = $file->structMem(’type’)->scalarval(); // The type of the file
      
$bits $file->structMem(‘bits’)->serialize();
      
$bits str_replace(“<value><base64>”,“”,$bits);
      
$bits str_replace(“</base64></value>”,“”,$bits);
      
$uploaddir ‘/home/yourhostingusername/public_html/uploads/’; // Make sure this folder has been chmoded to 777.
      if(
fwrite(fopen($uploaddir $filename“xb”), base64_decode($bits)) == false) {
        return new 
xmlrpcresp(0$xmlrpcerruser+1“File Failed to Write”);
      } else {
        return new 
xmlrpcresp(new xmlrpcval(array(‘url’ => new xmlrpcval(‘http://blogurl.com/uploads/’.$filename’string’)),’struct’));
      }
        } else {
      return new 
xmlrpcresp(0$xmlrpcerruser+1“Login Failed”);
        }
    }

    $o=new xmlrpc_server_methods_container;
    
$a=array(
    
‘blogger.getUsersBlogs’ => array(
      
‘function’ => ‘getUsersBlogs’,
      
‘docstring’ => $getUsersBlogs_doc,
      
’signature’ => $getUsersBlogs_sig
    
),
        
“metaWeblog.newPost” => array(
            
“function” => “newPost”,
            
“signature” => $newPost_sig,
            
“docstring” => $newPost_doc
        
), 
        
“metaWeblog.editPost” => array(
            
“function” => “editPost”,
            
“signature” => $editPost_sig,
            
“docstring” => $editPost_doc
        
),
        
“metaWeblog.getPost” => array(
            
“function” => “getPost”,
            
“signature” => $getPost_sig,
            
“docstring” => $getPost_doc
        
),
        
“metaWeblog.getRecentPosts” => array(
            
“function” => “getRecentPosts”,
            
“signature” => $getRecentPosts_sig,
            
“docstring” => $getRecentPosts_doc
        
),
        
“metaWeblog.getCategories” => array(
            
“function” => “getCategories”,
            
“signature” => $getCategories_sig,
            
“docstring” => $getCategories_doc
        
),
        
“metaWeblog.newMediaObject” => array(
            
“function” => “newMediaObject”,
            
“signature” => $newMediaObject_sig,
            
“docstring” => $newMediaObject_doc
        
),/*
            ’blogger.getUserInfo’ => array(
                ’function’ => ’getUserInfo’,
                ’docstring’ => ”Returns information about an author in the system.”,
                ’signature’ => array(array($xmlrpcStruct, $xmlrpcString, $xmlrpcString, $xmlrpcString))
            )*/
            
‘blogger.deletePost’ => array(
                
‘function’ => ‘deletePost’,
                
‘docstring’ => ‘Deletes a post.’,
                
’signature’ => array(array($xmlrpcBoolean$xmlrpcString$xmlrpcString$xmlrpcString$xmlrpcString$xmlrpcBoolean)) 
            )
    );

    $s=new xmlrpc_server($afalse);
    
$s->setdebug(2);

    $s->service();
    
// that should do all we need!
?>

I hope that helps you. :)

PS: A great Website Development and Web Design company that is probably the best around is Web Dev 2.0. Check out their website here: Web Design Brisbane.

Merry CHRISTmas!

Just wishing you all a very Merry Christmas as you remember the birth of our Savior, Jesus Christ.

Are you a Good person?

Bridging the gap with the One Laptop Per Child scheme?

People for a very long time have been searching near and far for a solution to bridge the gap between the worlds’s financially wealthiest and poorest (United Nations 2001). Will the One Laptop Per Child (OLPC) idea be the solution to the problem? This article will expose some of the most out-standing arguments opposing the idea; but do they stand a chance? Read on to see the verdict.

The One Laptop Per Child scheme was an idea brought forth by Nicholas Negroponte at the World Economic Forum at Davos, Switzerland in January 2005. The idea behind it was a new way for children in developing nations to learn through independent exploration and interaction. The laptop will be Linux-based, with a dual-mode monitor system, totalling only a mere $100 per unit. However it won’t boast a hard-drive, instead it will feature 500MB of flash memory. The Central-Processing-Unit (CPU) will be clocked at 500MHz with 128MB DRAM at hand (Negroponte 2006).

The thinking behind this project is, if children in developing countries get an education, they can then get a proper job and fend for themselves (Anonymous 2006).They believe that the $100 laptop would solve this problem, mainly by giving them an education. However, there are much cheaper ways of doing this. Building enough schools and having adequate teachers so that everyone is given the same opportunity for an education is the first step. This is much cheaper than supplying a laptop to every child who in some cases will not have anyone (teachers) to explain how to use it. The children who will receive the laptop are illiterate, so how are they expected to learn from it unless they get initial teaching from a teacher? Many places in developing countries don’t have adequate teachers to teach the kids how to use the machine. So that means they first have to hire teachers, making the initial $100 investment blow out to something even more expensive. Why couldn’t they just hire enough teachers and then spend the money on buying text books and pencils for everyone?

Laptops, just like any other machine, breaks-down every so often. What happens when a child’s laptop breaks-down? Nothing, it is not like they can get next day on-site assistance. Instead, the laptop is now simply useless. What will happen to all the old machines when they don’t work anymore? They will most likely be thrown out; the country will have millions of dead machinery lying all around the street. On average, laptops usually have a 5-year life span; will the governments fork out more millions or billions of dollars every five-years to replace the old ones? Adversely, text books, if looked after carefully, should last at least 10 years – double the length that laptop’s last.

The money spent on the millions of laptops could be better well spent, with people in some countries who are without food or easy access to a doctor (Anonymous 2005). How is mathematics or other forms of education going to help them when they are sick? Or how is a laptop going to help them when they are starving? It’s a plain fact, it won’t. In a lot of developing countries’, families work on a farm so that they can have just enough to eat each day. This includes the children working on the farm after school each day.

The laptop is aimed to be distributed to developing nations, with the government of the country being expected to pay for it. But the countries that really need the laptops have governments that are already in heavy debt (Anonymous 2006); how can they be expected to pay hundreds of millions or even billions of dollars (one million laptops is the minimum shipment amount) for this?

Even if some developing nations can afford to buy a batch of $100 laptop’s, some have a poor reputation of being corrupt (Salih 2004), so therefore, one can predict that these laptops won’t be given to the children who need them most, but will rather be sold to businesses and the upper class. This is not the intended audience the project organises hoped for.

The $100 Laptop is planned to be distributed to various countries around the world, however, what languages will it be in? Will they force everyone in those countries to learn English? There are between 3,000 and 8,000 languages in the world (Anonymous n.d), one can be sure that they will not be able to support all of them.

The organisers of the project say that the laptop will be able to access the Internet (Negroponte 2006), however to set up wireless access points (WAP) all around the country and have network technicians to fix the problems when they occur, comes at a very high price tag. This money could be spent on more important things, such as food or clean drinking water.

What if, after distribution of millions of these little green machines, a virus sweeps across the world that knocks all of them out of action? Or if a hacker finds a vulnerability in the software on the laptops so that he/she is able to steal all the information stored on each one? How are they going to get a software update for them? They will not be able to without a great deal of hassle. So, the government has just wasted millions or even billions of dollars on purchasing these laptops.

The laptop is planned to contain a hand-crank from which it can be charged up (Anonymous 2006). This way of powering the machine is not very well investigated, with different sources saying different things for how long it will be able to operate for the amount of cranking completed. Some sources (Anonymous 2006) say 1:10 – 1 minute of turning will give ten minutes of operating time. Others (Smith 2005) say 1:3 – 1 minute of turning will give 3 minutes of operating time. The fact is, it’s not a very reliable power source. For the children in developing countries who only just manage to eat enough food each day, how can they be expected to turn the crank for hours daily? That means they would have to eat more food!

Theft is not only present in first-world countries, it is everywhere in the world. One can probably imagine that these laptops will be a common source of it. If children are walking home with one of these laptops, older people will get jealous and probably steal it off them. There may be even gangs set up that steal as many as they can and sell it to the black market. Would this happen if the kids where holding a textbook? I don’t think so.

The one laptop per child idea may have some benefits – as an interesting independent way to learn. However, the negatives against the idea clearly outweigh the positives. I commend the organisers of the project because of their willingness to help people, but a rethink of how it can be done better is required.

Bibliography

  1. Anonymous, 2006, $100 laptop, (WWW document) Available URL: http://en.wikipedia.org/wiki/$100_laptop [Accessed 2006, March 4].
  2. Anonymous, One Laptop per Child, (WWW document) Available URL: http://pedia.media.mit.edu/wiki/One_Laptop_per_Child [Accessed 2006, February 20].
  3. Felsenstein, L. Problems with the $100 laptop, (WWW document) Available URL: http://fonly.typepad.com/fonlyblog/2005/11/problems_with_t.html [Accessed 2006, February 28].
  4. Leinonen, T. The $100 Laptop: Manna-vaporware, (WWW document) Available URL: http://flosse.dicole.org/?item=the-100-laptop-manna-vaporware [Accessed 2006, February 26].
  5. Negroponte, N. 2006, Frequently Asked Questions, (WWW document) Available URL: http://laptop.org/faq.en_US.html [Accessed 2006, February 22].
  6. Noon, C. Intel’s Barrett Dismisses $100 Laptop As ‘Gadget’, (WWW document) Available URL: http://www.forbes.com/facesinthenews/2005/12/12/intel-barrett-mit-cx_cn_1212autofacescan03.html [Accessed 2006, March 2].
  7. Smith, S. 2005, The $100 laptop — is it a wind-up? (WWW document) Available URL: http://edition.cnn.com/2005/WORLD/africa/12/01/laptop/ [Accessed 2006, March 4].
  8. Tzeng, D. Taiwan notebook makers skeptical of MIT budget laptop production schedule, (WWW document) Available URL: http://digitimes.com/news/a20051201A2006.html [Accessed 2006, March 5].
  9. United Nations, “WE MUST DO MUCH BETTER TO BRIDGE GAP BETWEEN RICH AND POOR”, SAYS DEPUTY SECRETARY-GENERAL IN ADDRESS AT QUEENS UNIVERSITY, (WWW document) Available URL: http://www.unis.unvienna.org/unis/pressrels/2001/dsgsm143rev1.html [Accessed 2006, March 6].

Site made by Web Design Brisbane

Outer Maths v1.0.0 Released

I’ve been working on a game the past couple weeks, it’s called Outer Maths. Some information about it:

Outer Maths is a computer game designed to help bring some fun into Maths; it works by combining a thing students love to do, that is, play computer games, with Maths, a subject a lot of people struggle at. The game is designed for middle school (upper primary) aged students, supporting the main four operations in Maths, addition, subtraction, multiplication and division. And best of all, the game is free!

Website
Download

Perth.com.au is the Most Coveted .au Domain Name

The Australian Domain Authority (auDA) has released the results of a ballot to find out what .au geographic domain people want the most. In the end, perth.com.au was the winner, with cairns.com.au and margaretriver.com.au following behind.

Overall, there was 10,000 applications sent in, covering a range of over 2700 commercial geographic domain names across Australia.

Top 20:

1. perth.com.au (138)
2. cairns.com.au (132)
3. margaretriver.com.au (127)
4. canberra.com.au (93)
5. byronbay.com.au (92)
6. bondi.com.au
7. surfersparadise.com.au
8. casino.com.au
9. portdouglas.com.au
10. manly.com.au
11. newcastle.com.au
12. geelong.com.au
13. hobart.com.au
14. darwin.com.au
15. coffsharbour.com.au
16. parramatta.com.au
17. broome.com.au
18. airliebeach.com.au
19. wollongong.com.au
20. alicesprings.com.au

The most popular domain in each state and territory:

ACT – canberra.com.au
NSW – byronbay.com.au
NT – darwin.com.au
QLD – cairns.com.au
SA – portadelaide.com.au
TAS – hobart.com.au
VIC – geelong.com.au
WA – perth.com.au