Why to avoid easily.co.uk

Firstly they tried to charge me an admin fee after they broke a school website (proved they broke it, no apology recieved) – very poor customer service.

Secondly they just locked me out of the DNS for 50+ school domains because they need more of private information (they have this information).  They never warned me, I can’t get in and change DNS.  There is no one answering the phones (as per usual).   Note:  I am not the only person they locked out, they locked out all of their customers until they provide more information to easily.  GG Easily, you have proved once again that epic buckets of fail still exists in the IT industry.

So just avoid Easily, they suck.  Never had a good experience with them, never will.  /QuickRant.

Anyone know a good UK registrar I can move all my .co.uk domains to?

Classdroid public beta

Here is the Classdroid apk for public beta. We only have support for primaryblogger and xparena(not a live service) available right now. We are waiting on Moodle V2 to bring moodle support in.

1. Get the Classdroid.apk
2. Read this guide for how to install an .apk
3. Make sure you have a Primaryblogger account & Blog
4. Have fun 🙂

Note:  We still have a lot of GUI tweeking to do but most of the functionality now exists. We will be releasing the source code once beta testing is complete.

Thanks to this guy for the great custom artwork/logo/icon!

Go here for info on classdroid

Ushahidi post tweets to API php example

The below code takes an rss search result from twitter, detects the authors location then posts the information to Ushahidi via the API.

Application I used it inMy School Closures for detecting people who tweet about school closures.  Unfortunately I have to use pipes for the location builder which isn’t elegant as Yahoo Pipes sucks and I wish I never started playing with it.  Feel free to play with the pipe I created to get geo location information from a location name, it is the pipe that has the json_decode.

You will need mysql and a table for the guids (this stops us from spamming twitter for authors we have already located). Make sure you change the configuration settings and create a table in mysql.

The method is simple, the code isn’t pretty and will require polishing but here it is:

<pre>
<?php
//CONFIGURE THE SETTINGS BELOW
//twitter settings
$twitterusername = "mytwitteraccount";
$twitterpassword = "apasswordgoeshere";

//database settings
$host = "databasehostname";
$user = "databaseusername";
$pass = "databasepassword";
$dbname = 'databasename';

// You should create a table called tweetguids in your database
$tablename = "tweetguids";

// Change the below feed to a rss feed similar to below
$rssurl = "http://pipes.yahoo.com/pipes/pipe.run?_id=a9663ebc09e69b9195fb2407fba9f2bc&_render=rss";

// END OF CONFIG

$conn = mysql_connect($host, $user, $pass) or die                      ('Error connecting to mysql');
mysql_select_db($dbname);

ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', dirname(__FILE__) . '/error_log.txt');
error_reporting(E_ALL);

$rss = simplexml_load_file($rssurl) or die("failure");
$count = 0;
foreach ($rss->channel as $chan)
{
$time = $chan->pubDate;
}
foreach ($rss->channel as $chan){$time = $chan->pubDate;}
foreach ($rss->channel->item as $item)
        {
        // only do first 10 records
        if ($count < 10)
                {
                $foundguid=0;
                $guidnew=$item->guid;
                // Check to see if guid exists in db already
                $sql="SELECT * FROM $tablename where guid = \"$guidnew\"";
                $result=mysql_query($sql, $conn);
                while ($row=mysql_fetch_array($result))
                        {
                        $foundguid=1;
                        echo "Foundguid: $foundguid";
                        }
                if($foundguid==1)
                        {
                        echo "We found an alredy existing guid...";
                        }
else
                        {
                        $count = $count + 1;
                        $task="report";
                        $incident_title=$item->title;
                        $guidnew=$item->guid;
                        $incident_title=str_replace(" ","+",$incident_title);
                        $incident_description=$item->description;
                        $incident_description=str_replace(" ","+",$incident_description);
                        $incident_date=date("m/d/Y",$time);
                        $incident_hour=date("H",$time);
                        $incident_minute=date("i",$time);
                        $incident_ampm=date("a",$time);
                        $incident_category="Possible Closure";
                        $location_name="Unknown";
                        $author = $item->author;
                        $author = str_replace(" ","+",$author);
                        $pos = strpos($author,"+");
                        //$author = substr($author,0,$pos);
                        $author = str_ireplace("http://twitter.com/","",$author);
                        $url = "http://$twitterusername:$twitterpassword@api.twitter.com/1/users/lookup.xml?screen_name=$author";
                        //echo $url;
                        $output = simplexml_load_file($url) or die("badauth");
                        foreach ($output->user as $item)
                                {
                                // Get the values out of the XML
                                $location=$item->location;
                                // Clean up the location
                                $location=str_ireplace("-",",",$location);
                                $location=str_ireplace(" ",",",$location);
//                              $location=preg_replace("/[^a-zA-Z0-9\s]/", "", $location);
                                echo "<br/><b>Location content: $location<br/>";
                                // Pass the location to yahoo pipe
                                $location = str_ireplace(" ","",$location);
                                //echo "<br/>Loc: $location";
                                $locationurl = "http://pipes.yahoo.com/pipes/pipe.run?_id=03539616e4cdd62eb15ed26b81e3041e&_render=json&q=$location";

                                 $ch = curl_init();
                                curl_setopt($ch, CURLOPT_URL, $locationurl);
                                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

                                //make the request
                                $json = curl_exec($ch);
                                $arr = (json_decode($json,true));
                                $blah = $arr['value']['items'][0]['name']['loc'];
                                //print_r($blah);
                                $latitude = $blah['lat'];
                                $longitude = $blah['lon'];
                                $location_name = $blah['city'];
                        }

                        $incident_description="Closure reported from twitter";
                        $url = "task=report&incident_title=$incident_title&incident_description=$incident_description&incident_date=$incident_date&incident_hour=$incident_hour&incident_minute=$incident_minu$
                        $posturl = "http://myschoolclosures.com/ushahidi/api";
                        $Curl_Session = curl_init($posturl);
                         curl_setopt ($Curl_Session, CURLOPT_POST, 1);
                         curl_setopt ($Curl_Session, CURLOPT_POSTFIELDS,
                        $url);
                        curl_setopt ($Curl_Session, CURLOPT_FOLLOWLOCATION, 1);
                        curl_exec ($Curl_Session);
                        curl_close ($Curl_Session);
                        //Write to the database
                        $sqlgo="INSERT INTO $tablename VALUES (\"$guidnew\")";
                        $result=mysql_query($sqlgo, $conn);
                }
        }
        //Write anything else to DB just in case anything trails behind
        $sql="INSERT INTO $tablename VALUES (\"$guidnew\")";
        $result=mysql_query($sql, $conn);
        $row=mysql_fetch_array($result);
        //echo "<br/>$sql<br/>";
}
?>

Google Games in the classroom

Google‘s recent 100$ million investment in zynga has got the dregs of the internet flapping over Google trying to muscle in on Facebook‘s market share of the social gaming portion of the internet.

Google suck at Social, and probably always will.  This is because even though the line between our work and play is often merged we have to actually pro-actively try to keep the two separate.  Google Me will suck, Google Buzz sucked, Google Wave sucked.  Why?  Because we are human.  Google can’t break/fix that.  My advice:  Launch Google Me, very quietly.

Zynga have maybe 20 games available, yes they are huge on the platforms they run on (facebook/twitter etc) but there are 1500+ educational games available that have nothing to do with Zynga that wont even be affected by Google…  Unless..

The fact is….

Google didn’t invest in Zynga for Zynga’s games.  They invested in Zynga to get the expertise of providing massive web based games to create social networks.  I can see Google going off to places like Armor games, bitbitallion etc. and trying to get them on board.   Let’s face it, Google know how to write a well documented, easy to use API so if they can persuade other vendors to monetize their content and improve their games by using Google then why not?  (See Adsense/Adwords).

I wrote an abstract piece on this and began building an open platform that is similar to Xbox Live.  I called it XPArena and it is very private closed beta.  I’m still working on it.

So how does this affect education?

The way I see it Google have enough capital available in Zynga to create an open platform for social game integration.  This platform would operate in a similar way to XPArena or XBox Live, allowing pupils to share educational games, show off their high scores, compete with friends, collaborative with friends.  Teachers could review pupils work and assess their progress.  Google could potentially also work on a recommendation engine that recommends games based on what a pupil likes to learn by playing.

How can Google make this work? Google should create a platform, not a service.  Allowing third parties to leverage their technology and keeping the Google Brand away from the learner/consumer.  PLEASE Google don’t tie this platform into Google Me or Wave etc..

Some questions/answers

Will you need a Google account to play a vast array of online games in the future? No.

Will you need a Google account to share your gaming experience on Zynga games in the future? Yes.

Are Zynga making any education games? No.  But if you look hard enough you can find SOME educational value in the odd game.

Will Google use Google Checkout for Zynga games? Yes.

Will Google remove Zynga games from Facebook when they launch Me? No.  It would damage Zynga’s revenue stream too much and would see a flurry of angry farmville players switch from Google to Bing for search.

Will Google place their own Ads on Zynga games in that annoying way they do? Yes.  Even if you are paying you will see ads.

Will it suck if Google just invest without any outward reaching goals? Yes.  If they focus purely on social networks it will be a waste of money.

Is the internet crying out for a good social gaming platform that is away from main stream social networks? Yes!

Did Google purchase Zynga to make their shareholders happy? No.  They are already happy, see the index.

Do I want a job at Google Games? Sure if they can afford me 😉

5 things I learned today.

1. I enjoy doing geeky sessions with Tom Hudson discussing the latest programming and fun net stuff and I’m quite looking forward to getting to work on Classdroid with him if he decides to get involved.

2. Moodle doesn’t have the API functionality I hoped it would have.

3. Ushahidi has nice API functionality and I should remember to use curl to test POSTing my data.

4. I shouldn’t hastily bash out blog posts when I find out a new software threat to privacy or security, I should probably put a 24 hour buffer in or something.

5. The kids still make the job worthwhile.

Enhanced by Zemanta