Thursday, February 11, 2010

Google Buzz - Facebook Threat?

Earlier this week, Google started rolling out Google Buzz to all Gmail users. Google Buzz is an attempt by Google to provide a social networking facility within Gmail.

After enabling Google Buzz on my Gmail account I was presented with a new menu item in the left hand menu and a prompt to connect some of my other Google presences to my Google Buzz feed. These included Picasa Public albums, my two blogs and Google Reader. These links are used to automatically populate my Buzz stream (buzz) with items as they are published.

With these items now automatically populating my 'buzz' all I need now is for someone to read them. Unfortunately, my Gmail account is not my primary email account and is only really used for administering my Google presence. Further experimentation will have to wait until I find some friends who are using Google Buzz.

Google already has a number of social networking tools (Orkut, Google Wave). Where Google Buzz fits in with these other products is unknown. However, from my limited time using the product it is most like Facebook. You can post status updates, photos, videos and subscribe to friends posts. The difference is that it is also linked to your other Google products such as Blogger, Picasa and Reader and these products will automatically update your buzz when you post updates.

Interestingly, a group of former Google employees created something similar in 2007 called FriendFeed. FriendFeed is a social networking aggregator that was recently sold to Facebook. It has a advantage over Google Buzz in that it includes the ability to aggregate content from more than 50 services including Facebook and Twitter.

As you can see there is quite a lot of competition in the social networking world and from what I can see Google Buzz does not really offer any large advantage over the other sites such as Facebook, FriendFeed and Orkut. To really make a dent in any of these services they will need to expand the aggregation service and convince their Gmail subscribers that this is an alternative to Facebook.

Sunday, January 31, 2010

iPad - Who will buy this device?

For over a year, pundits on the internet have speculated that Apple was developing a touch screen tablet.

On Thursday, Steve Jobs confirmed these rumours when he announced the Apple iPad. The Apple iPad is a 9.7" touch screen tablet which runs an upgraded version of the iPhone software. 

My initial reaction when I saw the Apple  iPad was confusion. What functionality does this device offer over and above the Apple iPhone? And what market is Apple aiming this device at?

The issues I see with the device are:
  • It is too large to be a truly portable device. You cannot carry this in your pocket as you would an iPhone or other mobile device, however it has limited functionality compared to a netbook which is much the same size when closed.
  • It is not aimed at replacing the iPhone as it does not make calls. The 3G cellular connection is purely for data purposes. 
  • It is only possible to load Apple App Store applications onto the device. 
I wont be buying an iPad. I think that the size and limitations make it less capable than the iPhone. 

I wont be the only one not buying, many technology writers have expressed similar dissatisfaction with the iPad. It seems to be a product without a distinct market.

For further information:

CNET - Apple iPad: What you need to know.
SMH - iPad Review
SMH - 12 Features Apple iPad Lacks
SMH - Jury Out as iPad touches down

Monday, December 28, 2009

Google Wave Development - Robots in Netbeans 6.7

In this post I hope to describe how to create Google Wave robots in Netbeans 6.7. The instructions are adapted from a blog post on GAEJ Experiments regarding the use of the WADRobotFramework in Eclipse. Thanks to Romin Irani for the information on GAEJ Experiments and Jerome Baton for the WADRobotFramework.

This post assumes that you have a Google App Engine account and have Netbeans 6.7 setup to allow the deployment of Java applications to the Google App Engine. To deploy to GAE from Netbeans 6.7 you will need the GAE for NB Plugin. To check if it is setup correctly follow the tutorial here.

To begin with download the WADRobotFramework. It is a single JAR that should be copied to a directory on your machine. I used C:\Java_Utils\Wad. You will also need to download the Wave Robot Java Library from Google Code. I place all the files from this location into the directory c:\java_utils\waverobot.

Once we have all the files downloaded and copied to the correct directories I can create a new Web Project in Netbeans.

 

The project should be created with the name you want the robot to be names within Google Wave. I  have called mine CoxyDaveWaveRobot.




Ensure that Google App Engine has been selected as the Server.


Once the wizard has completed creating the project you can delete the index.jsp file as it is not required for the Wave Robot.

The next step is to add the required libraries to the project to allow us to use the WADRobotFramework and the Google Wave Robot Client.



Go to the Project Properties...Libraries panel and add each of the above libraries. Ensure that the Package checkbox is marked.

We can now start to build our Google Wave Robot. Create a new Java Class called MyAppenderRobot and once the wizard has completed add an import for org.wadael.waverobotfrmwrk.simple.BlipAppenderRobot and change the class declaration to extend BlipAppenderRobot. Netbeans will indicate that you need to 'Implement all Abstract Messages'. Use the wizard to implement the abstract methods. Replace the body of the getTextToAppend to the content shown.

public class MyAppenderRobot extends BlipAppenderRobot{

    @Override
    protected String getTextToAppend(String arg0) {
        return "I am replying to your blip!";
    }

Open the web.xml file and add the following servlet details:


        MyAppenderRobot
        coxydave.waverobot.MyAppenderRobot
    
    
        MyAppenderRobot
        /_wave/robot/jsonrpc
    

Add a new directory (_wave) to the WAR file as shown and add a new XML file called capabilities.xml




Add the following content to this file:


  
    
  
  1


Ensure the app-engine.xml file contains the following:


    coxydavewaverobot
    1


At this point you should create a Google App Engine Application with the same name as your project. This will allow Netbeans to automatically deploy the war file to this application.




Once the application has been created it should be possible to 'Build the Main project' and use the 'Deploy to
Google App Engine' on the context menu for the project.

Once the application has been deployed to the Google App Engine, my application  is accessible within Google Wave using the following email address: coxydavewaverobot@appspot.com. Yours will be the ApplicationID@appspot.com. To use the robot just add the address to a new or existing wave. The robot will say hello and then wait for someone to add a new blip. At this point it will return the message in a new reply blip.

Hopefully this was useful. If anything is unclear please leave a comment on the blog and I will respond accordingly. Thank you.



Thursday, December 3, 2009

Google Wave Development

I finally managed to obtain a Google Wave account (thanks Harvey!).

After playing with Google Wave for about an hour I decided to that I should try to develop a robot for Wave. I used the tutorial on the Google Wave site to create a python Wave Robot, deployed it to Google App Engine and tried it in my wave. It works!

Python however is not my language of choice and I am going to learn how to use JAVA to produce Google Wave robots. I have found an article that explains how to use the WadRobotFramework to simplify the creation of JAVA Wave Robots.

If you would like to chat to me on Wave my address is coxydave at gmail dot com.

Friday, November 20, 2009

Google Releases Chrome OS Open Source Project

According to the Official Google Blog, Google has released the first cut of the Google OS source code. The code is open-sourced and Google is hoping that the open-source community gets behind this and helps to develop this product.

The following video describes the background behind the Google OS project and some of the drivers.




Stay tuned for more.

Update

After watching some videos about this announcement I am a bit disappointed in the approach Google has taken with the Google OS. Although the idea of an OS that makes use of the 'cloud applications' is a good one I think that for users in Australia it will be a disappointment due to the lack of a persistant network connection that is reasonably priced.

Most Australian cities do not have good coverage of wireless hotspots and the use of the 3G network for this device would be very expensive. It would also compete directly with Google Android.

Maybe in a couple of years we may find that the wireless networks are more ubiquitous and this type of device  will be more useful. Until then most users will require a netbook that is able to be used without a network connection.

Tuesday, November 17, 2009

CNET Interview with Eric Schmidt from Google

An interesting interview with Eric Schmidt the CEO of Google. Discussions about Google OS, Google Search, Android and Google's motto of 'Do No Evil'.

Saturday, November 7, 2009

Using JAK and Google Geocoder Part 2

In this second post about using JAK and Google Geocoder I have included a new application that processes a CSV file containing a list of descriptions and addresses. It uses a library from http://ostermiller.org/utils/ which simplifies the reading of CSV files.

The following code snippet shows the usage of the CSVParser class from OsterMiller.org.

String addresses[][] = null;
try {
   CSVParser csv = new CSVParser(new FileReader("restaurants.csv"));
     try {
         addresses = csv.getAllValues();
         } catch (IOException ex) {
         Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
         }
   } catch (FileNotFoundException ex) {
      Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
      }

Once the string array has been loaded with values we can iterate through the array and use the Geocoder class to find the latitude and longitude of each of the addresses in the file. The code below shows this process and the adding each of the placemarks into the KML file.

for (int i=0; i<addresses.length; i++){
  try {            
      location1 = Geocoder.getLocation(addresses[i][1]).toString();
      } catch (IOException ex) {
         Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
      }
      final Placemark placemark1 = document.createAndAddPlacemark()
                  .withName(addresses[i][0])
                  .withDescription(addresses[i][1] + addresses[i][2]);
      placemark1.createAndSetPoint().addToCoordinates(location1);
      }

The full code for this project is here. I hope that you find it useful.