Blog the web

… and anything ‘2.0′

Saturday
Feb 13,2010

I’ve been thinking about how important the retweet feature is for Twitter. I’ve concluded that ‘Retweet’ is as important to Twitter as Google’s PageRank algorithm is important to Google.

PageRank
The Google PageRank algorithm allows Google to efficiently order search engine results in order to provide the most relevant, accurate site for your search from a reliable source. A PageRank value is assigned to a webpage based on it’s relevance (through some form of content analysis) and it’s reliability. How does Google know the site is a reliable source? From what we know, it estimates this value through a wide variety of factors:

  • Who links to the site
  • How many people link to the site
  • How official is the site (eg is it a .gov? or have some sort of reputable status?)
  • How many people go to the site
  • .. and a whole bunch of other stuff
  • Factoring in all these elements and more, Google produces a PageRank value for each site. PageRank has become critical to Google’s business. It’s what differentiates Google from other search engines. It has become Google’s bread and butter on which they have built their business on top of.

    So what’s this got to do with a retweet?
    Here is the problem with Twitter: How do I know a tweet is accurate, reliable and is from who it says it’s from?

    Twitter is going through what Google faced in it’s early days – spammers, impostors and a general lack of quality content (useful tweets).

    Twitter is still working through all those issues. For example, they have been trying to tackle fake accounts by introducing verified accounts. Spam continues on, and the security issues of Twitter aren’t helping either. So what’s the answer?

    Crowd-source your problem
    You see, Twitter can’t just use the total amount of followers as a way of identifying useful and reputable content on Twitter. Twitter’s retweet feature allows them to crowd-source their problem. In a sense, they are allowing everyone contribute in the quest of identifying quality and helpful information on Twitter. If you retweet something from someone you follow, you are acknowledging their validity. If one of your followers retweeted you, it would have the same effect. In ‘PageRank terms’ this could have the same effect as linking to your site.

    A Twitter PageRank Algorithm?
    If Twitter were to have an equivalent algorithm it could involve a mix of the following elements:

  • How many people retweet a user (a high weighting could be placed on this)
  • How many people send a user @Replies
  • How many people follow a user (a lower weighting)
  • How many lists a user appears on
  • How many people favorite (or ’star’) a users Tweets
  • The consequences of Twitter’s efforts on the retweet feature and API are twofold:

    1. Users are able to find reputable, quality and useful Tweets
    2. Twitter begins to identify the influencers and trend-setters

    The first point above ensures more and more users stay on Twitter’s microblogging platform – which is critical for Twitters success. Secondly, identifying influencers presents a huge monotization opportunity for Twitter… but that’s another blog-post!

    Monday
    Sep 21,2009

    Let’s briefly look at how you can integrate a Google Calendar with your next PHP application.

    If you take a quick look at the Google Calendar API, there is quite a bit of code that you will need to write in order to get your application authenticating with Google services. Once you have authenticated, you then need to write some further code to pull data in and out of Google Calender.

    The good news is the guys at Zend have already written a whole stash of wrapper classes called Zend_Gdata. These classes provide you with a PHP 5 client interface for all the Google Data APIs. To make it even nicer, its available as a component to download standalone and use within your application, instead of having to use the a full-stack framework.

    To get started firstly download the Zend_Gdata client libraries and extract them to your project.

    Next, include the libs in your code:

    1
    2
    3
    4
    5
    
    	require_once 'Zend/Loader.php';
    	Zend_Loader::loadClass('Zend_Gdata');
    	Zend_Loader::loadClass('Zend_Gdata_AuthSub');
    	Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
    	Zend_Loader::loadClass('Zend_Gdata_Calendar');

    After that lets create a Zend_Gdata_ClientLogin client and define our query which we will make to get the calendar:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
        $gcal = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
        $user = "googleuser@gmail.com";
        $pass = "mygmailpass";
        $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $gcal);
        $gcal = new Zend_Gdata_Calendar($client);
     
        //Generate query to get event list
        $query = $gcal->newEventQuery();
        $query->setUser('default');
        $query->setVisibility('private');
        $query->setProjection('basic');
        $query->setStartMin(date('Y-n-j'));
        $query->setOrderby('starttime');

    The last step is to go through and execute the query, then looping through the results:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    try{
        $feed = $gcal->getCalendarEventFeed($query);
        if ($feed->totalResults >= 1){
            echo "There are ".$feed->totalResults." upcoming events<br/>";
            foreach ($feed as $event) {
          	        echo "<li>".$event->title"<br/>";
                    echo $event->summary"<br/></li>";
            }
        }else{
            echo "There are no upcoming events<br/>";
        }
    }catch (Zend_Gdata_App_Exception $e) {
        echo "Error retrieving calender " . $e->getResponse();
    }

    That’s it! For more info on using Zend_Gdata, checkout their API.

    Thursday
    Sep 3,2009

    Yesterday I presented at the Bankstown Workers with Youth forum over at Bankstown Council on an introduction to Social Media for Youth Workers. The presentation covered:

  • Introduction to Social Media
  • Why Social Media?
  • Social Media principles
  • How are Youth using Social Media
  • How are Youth Workers using Social Media
  • Developing a Social Media Strategy for Youth Workers
  • You can view the presentation here:

    Followup Links

  • Youth and social networking research project blog
  • UK Youth Workers Social Network
  • Engaging with Youth through Social Meida Conference Video
  • Free Book Chapter on Conversation & Community
  • Risk Assessment Templates – By Katie Bacon and UK Youth Online
  • Youth work guide to blogging for Youth Workers
  • Big thanks to Optus for giving me the opportunity to giving back to the community with their volunteer leave.

    Disclaimer: This is a personal bog. The opinions expressed here represent my own and not those of my employer.

    Wednesday
    Aug 26,2009

    I was wrong about FriendFeed
    FriendFeed A couple of weeks a go I was having a chat to a friend about FriendFeed. I’m a big fan of FriendFeed (see some previous posts) and think it does a good job at helping you solve a problem of being able to manage and follow multiple online social profiles at once. Not only that, but it’s semi-recent upgrade with direct messaging and real time search updates made it an even better Twitter alternative. It has all the ‘Microblogging’ features Twitter has to offer and a whole lot more. I would also argue its better written, with some great brains behind it. It doesn’t take a genius to work out that using a remote key (or better known as an API Key) for third-party apps accessing your account using an API. Still today I cringe at every single Twitter-based site/service I use that asks me for my Twitter username and password (Although, I must say Twitter’s recent implementation of OAuth has been great to see).

    In saying all this, I wasn’t chatting to my friend about how good FriendFeed was, but rather how I thought that FriendFeed needed to re-invent itself.

    The thing I couldn’t see FriendFeed doing is breaking past the early technology and social media adopters into the critical mass of users. What seemed to be happening was that Facebook was implementing all the FriendFeed features after FriendFeed had done all the hard work of coming up with the idea and testing it out. TechCruch described it as the “Friendfeedization of Facebook“. More so, colleague of mine put it quite nicely:

    “FriendFeed is becoming the Opera of social networks”

    When you look at the stuff Opera browser is coming out with, you sometimes wonder why it hasn’t got a bigger following.

    Now I’m not going to pretend I’m an expert as to why FriendFeed couldn’t break past the early tech-adopters stage – because I don’t. I’ve read lots about people saying timing had a lot to do with it. There has been lots of suggestions saying FriendFeed’s time-to-market was much earlier then when it was actually needed. Others have said that its all because of the critical mass of Facebook and other social networks that FriendFeed never got a critical-mass following.

    Well lets put all these thoughts aside – it doesn’t matter any more – Facebook just bought FriendFeed. I think that’s all that FriendFeed needed to get the critical mass.

    Facebook to Twitter: “bring it”
    Friendfeed FacebookSo if you can’t get a large community to come to you – why not go to them? I think this is what will will happen now that Facebook bought it. That’s all that FriendFeed needed. Facebook over the last few months has been opening up big, allowing users to share content form multiple sites and vairous online profiles into their personal activity stream. FriendFeed will only make this better for Facebook – because activity streams is it’s bread and butter. Not only does his acquisition benefit Faebook in terms rich features, but also talent. Facebook just got them selves a whole bunch of gun Engineers. Some say that maybe that’s all that Facebook wanted! Who knows.

    Now remember Facebook tried to buy Twitter? Supposedly for 500 million – which to me sounds ridiculous! Either way – Facebook has now positioned itself to potentially kill Twitter. Facebook recently introduced the “share with everyone” button – allowing you to post status updates to the public. They are still yet to expose this feature via their API, but you would think the purchase of FriendFeed will only help them. Add to this the press we read about ‘Facebook Lite‘ – and it doesn’t take half a brain to work out the competition is on!

    How can we forget Google?
    Now just because Google’s Orkut isn’t as popular in Western countries doesn’t mean Google’s social efforts are going unnoticed! Some recent big announcements by Google clearly show they are still in the social space:

  • iGoogle: Gets Social. Opening up the whole of iGoogle to your Google Contacts and all the OpenSocial containers.
  • Google Reader: More social than ever, in fact – it’s become very FriendFeed like! Here are some examples:
    Google Reader implements following, liking and people searching
    Reader Real-time updates with PubSubHubbub.
    Reader “Send to” and Sharing features
    … and who said RSS is dead?!

  • Google Wave: – With Google Wave, everything on the web becomes Social. I really think we can’t underestimate the power that Google Wave might have in the social space when it becomes available to the general public.
  • Google Photos (Picassa): They recently announced an “add contributors” feature making Google Photos a great way for people to share and contribute to common photo albums.
  • Gmail: Google makes Gmail more social my allowing you to share your tasks with others.
  • What does this mean for Twitter?
    In light of all this, Twitter has copped some big blows lately. Some that just spring to mind:

  • Security
    This Mashable article sums it up nicely. Twitters long history with accounts being hacked and most recent denial of service attacks – its not looking good.
  • Spam
    Twitter is fighting a constant battle with Spam. You read articles like this and wonder – how much of Twitter is actually Spam? To me – it feels like a lot. I would at least get anywhere from 3-5 followers a day that are spam. Now I don’t get any spam followers trying to follow me on Facebook – Why is that? Twitter has some work to do.
  • Noise
    Twitter has a lot of noise. When you read articles like this that suggest 40% of all Tweets are ‘babble’ – you aren’t surprised. Compare this to FriendFeed or Facebook – and how they deal with noise. They let you group users, “like” posts and choose to have “more” or “less” posts from specific people. They seem to be dealing with the noise quite well.
  • There are some big positives for Twitter:

  • A lot of existing applications – It’s API learning curve is nothing compared to the Facebook API. Meaning the entry barrier is extremely low to get in and there is a large stack of existing Twitter applications.
  • Users. Twitters user base is big, and continues to grow. Not only so, but the Media in general love Twitter – because it’s instant
  • API Improvements. The big one here is the Twitter Geo Location appearing in Tweets via the API.
  • Where is it all headed?
    At first I was glad that Twitter didn’t get bought by Facebook, but part of me know seems to think that Twitter missed the boat with Facebook. Twitter now has a steep hill to climb, especially given its recent security and spam issues. Facebook not only just bought itself a whole lot of talent – but a really well written application which will allow them to further extend their services – and become more “Twitter like”. Google – well, although they seem to be a bit quiet when you look at things like Google Wave you can be sure that there are some big things about to come in the social web.

    Saturday
    Aug 8,2009

    I’ve been using Google Docs quite a bit lately for a lot of documents. A while a go Google let you insert your custom CSS into Google Docs making it easy for you to create your own CSS Styles.

    So I created two simple CSS Styles for a type of blockquote / quotebox / alert-box (or whatever you would liek to call it), just to make it look a bit nicer. Here is what they look like:


    Style Google Docs with a CSS Box

    If you want to apply this to your Google Doc, all you have to do is go to Edit > Edit CSS, and paste the following:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    .orangeBox {
      background: #fff6bf;
      text-align: center;
      padding: 5px 15px 5px 15px;
      border-top: 2px solid #ffd324;
      border-bottom: 2px solid #ffd324;
      width: 90%;
      margin-left: auto;
      margin-right: auto;
    }
     
    .blueBox {
      background: #f8fafc;
      text-align: center;
      padding: 5px 15px 5px 15px;
      border-top: 2px solid #b5d4fe;
      border-bottom: 2px solid #b5d4fe;
      width: 90%;
      margin-left: auto;
      margin-right: auto;
    }

    Then when you are editing your page, switch to HTML view and apply .orangeBox or .blueBox to the DIV’s you want to style.

    I’ve made this document public if you want to check it out as well.

    If you are interested in this stuff, be sure to checkout Google Docs Template gallery for other peoples styles.

    Saturday
    Jul 18,2009

    PoliPress

    PoliPress is a Wordpress plugin I have been working on that lets you quote members of parliament and search the Australian Hansard from within your WordPress blog.

    This plugin is something that started on the first OpenAustralia.org hackfest in 2009. PoliPress is powered by the OpenAustralia.org API.

    To see an example of what the plugin can do check out my previous blogpost.

    The plugin is fully opensource – so you can do whatever you like with it! It’s hosted on Google Code so you can grab it from there. Installation and usage instructions can also be found there.

    I haven’t done much testing on different wordpress versions so let me know if there are any issues. If you have any suggestions, bugs or enhancements you can report them on the PoliPress project issues page.

    Saturday
    Jun 13,2009

    For my OpenAustralia.org Hackfest project I picked up a task Matthew had in the queue for a possible OpenAustralia wordpress plguin.

    The purpose of the plugin is to allow a blogger to quote speeches from members of parliament from the OpenAustralia API using their WordPress blog. The Task: A WordPress plugin.

    Here is a sample of what has been done thus far:

    1. Multiple Speeches within the same blog post
    You will need to firstly grab the GID of the speech or speeches you want to link to. You can get the GID of a speech by copying it out of the “link to this” link on an OpenAustralia link:
    Get the GID from an OpenAustralia speech

    Once you know the GID (Global ID) of an Open Australia Speech you can write this in Wordpress:
    [polipress gid="2009-06-16.43.1 type="senate"]

    2. Get a specific speech
    We can have multiple debates quoted within the same blog-post, here is another of just a single speech:

    [polipress gid="2009-03-19.174.2" type="representatives"]

    3. Search Speeches
    You can also return results of a search. For example, lets say I did a post on the NBN. I could display related topics about the NBN by writing the following:
    [polipress search="nbn" type="representatives"]

    3. Search Speeches and limit results
    By default, the plugin will only return the first five results. This is for performance reasons more than anything else. You can change this by adding the num attribute. For example:
    [polipress search="Community Affairs" type="representatives" num="6"]

    Further Info
    For more information about the OpenAustralia.org hackfest checkout the Google Open Source blog post.

    Saturday
    Apr 25,2009

    I’m currently working in a rapid application development team. We essentially build web-based solutions for business users within our organisation. The work our team does is primarily development. In saying this, we often get a lot of requirements that are for problems where similar solutions may already exist.

    There are many ways to solve a problem – but whats the most efficient and effective method?
    As tempting as it is, you could build a custom application for almost anything – but we don’t. We try and avoid re-inventing the wheel where possible. How do we do this? Well, some of the solutions to our problems exist in the form of opensource software (Eg A blog – Wordpress, or a Forum – PHPBB…). Additionally, there are cases where other types of problems can be solved by using an existing ‘wokflow’ type of tool. In some of these instances, we have been using Jira (by Atlassian).

    Atlassian Jira
    Atlassian JiraJira is a bug and issue tracker, primarily intended for software development. We use Jira internally to track all engagements within our team, as well as track bugs and issues for the web apps we develop. Jira is a very customizable product. It has a built in field builder that essentially lets you choose what fields you want to capture for your project. You can configure Jira’s custom fields at a system-wide, project specific and/or issue type level. Jira’s reporting component (or ‘filters’) make it easy to extract the information you want out of the system in several formats. Finally, Jira’s workflow features make it easy to define screens based on business processes you might have.

    Jira use cases
    So how does Jira help us build our solutions? Well, we found if some of the problems our customers faced could be easily described into one of the use-cases listed below:

  • User enters data in a custom form, a custom workflow is kicked off
  • Users can ‘assign’ the item (issue/item/task) to other users
  • Users can watch for updates / comment on their issue/item/task that has been raised
  • Reporting – being able to view this data in a wide range of formats (eg Excel, CSV, XML/RSS)
  • The following post will look at some alternatives uses for Jira other than for software development. These use cases can be usually fulfilled in Jira.

    1. Project Management
    We had several requests for teams across the organisation that want to be able to track their larger projects as well as simple things – such as their internal initiatives. Some creative uses for Jira in a project-management context could be:

  • An “Issue” being a project, with all sub-tasks within the issue being milestones or tasks within the project. This would mean you can have one Jira Project (E.g For a team) and then track all the team’s projects by raising issues within that project.
  • A Jira “Component” being a project, allowing you to assign issues that relate to multiple projects.
  • Jira “versions” being used as milestones for a project deliverable
  • Manage Risks & Issues for a project by creating standard sub-tasks within each Issue raised. You could have a standard sub-task for a risk and another for an issue. This would allow you to track for each piece of work within the project – what are the risks and issues
  • Use Jira’s capability for “linking” issues to show dependent tasks and reporting on them in a nice way.
  • Use it with it’s out-of-the-box setup – Having a Jira project for every project you have, and then creating issues within each project to track tasks milestones
  • 2. Engagement Forms
    One of the challenges a large organisation faces is that each team can go going off and create their own processes and tools for various things. A classic example of this is a team’s engagement form. Each team has their own interests – and usually end up forking off another process for engagement. Engagement forms could be anything from an email to a dropbox, to a word or excel document, to an Access database sitting on someones desktop or even a custom web application built just for engaging a team within the organisation. Jira can help solve this problem as well as consolidate these satellite solutions into one.

    In terms of how you would use Jira as an engagement form: A Jira Issue = A New Engagement, Issue Type = Engagement Type, Component = Engagement Classification or System/Product the engagement is for. You could then specify your component lead’s as your subject matter experts for that engagement type.

    Using Jira to track your engagements is great as it allows you to:

  • assign engagements to leads,
  • track time for each engagement and lets you
  • receive flexible reporting functionality through the Jira issues filter.
  • 3. Task Management (GTD)
    Jira is also a great tool to get things done! This can be applied for a team or an individual. For teams, using Jira for this means that you can easily track your KPI’s. Your engagement form can easily become your team’s work tracing tool. So from engagement to tracking the actual work – you could use Jira as an end-to-end productivity tool within your team.
    Now, not all work your team will do would be project related – sometimes there are random jobs that need to be done. Jira can be great for tracking this. Personally, I use Jira to track all things I am working on and as a GTD tool.

    4. Ticketing System
    The last, and probably most obvious use alternative of Jira, is for some form of ticketing system. Atlassian eat their own dogfood with their customer support site – a classic example of Jira being used as a ticketing system.

    If you are considering using Jira for this purpose, you will want to look at the enterprise version of Jira. The enterprise version brings you ‘Issue Level Security’. This essentially allows you to set up different security levels for each customer. This is similar to having different projects, but allows the support team to manage the issues in just one project.

    To make reporting easier, you could setup a component for each one of the support ‘queues’. Or you could abstract it further, and have a project for each queue within your ticketing system.

    Conclusion
    I’m not suggesting that every form-based application is built in Jira. There are however good reasons where you might want to use Jira – these requirements generally fall under one of the use-cases defined above. Jiras flexible nature means that you can customise quite a bit. What happens if it isn’t right for you? Don’t worry – Jira has a powerful API, which means you can easily import or mashup your data with another system if need be – you haven’t looked yourself in!

    Further reading: Jira Use Cases (Atlassian)

    Wednesday
    Apr 22,2009

    Big news this week regarding the Oracle-Sun Acquisition. Its been interesting to see the wide range of opinions that have formed as part of this acquisition. Here are five thoughts from technology leaders and journalists that all have a lot to do with Sun, Oracle, MySQL or Java:

    1. Matt Mullenweg, Founder of WordPress:
    Blog post: Oracle and Opensource

    “Today our servers are running various versions of MySQL, tomorrow they’ll be running the same thing, and if need be ten years from now they can run the exact some software. Because of the GPL every WordPress user in the world is protected — we’re not beholden to any one company, only to what works best for us. Today that’s MySQL, tomorrow that’s MySQL, a year from now we’ll see.”

    2. Jeremy Zawodny, Ex-Yahoo MySQL Guru, Current employee of Craigslist:
    Blog post: Oracle Buying Sun: Gets MySQL

    “One one of the biggest threats to Oracle’s core database business (at the low end, at least) for a while now has been MySQL. And now they’re poised to own MySQL after Sun bought it not long ago.”
    Also Read: The New MySQL Landscape

    3. Erick Schonfeld, TechCruch:
    Blog post: Oracle Wants To Be The Apple Of The Enterprise, But It Just Became IBM

    “Like Apple, Oracle wants to take away complexity for its customers and bundle the entire IT stack neatly together so that it works without hassles and is optimized for Oracle’s software. With this deal, Ellison has come full circle from his early-1990s mantra of “best-of-breed” systems, which he abandoned long ago. Rather than look like Apple with its dedication to making the perfect product, Oracle just became IBM.”

    4. Rod Johnson, Founder Spring Source:
    Blog post: Oracle Adds New Exhibit to Java Technology Museum

    “Oracle’s business strategy may be smart—acquiring distressed vendors and milking their revenue stream while cutting costs is certainly helping them post good numbers. But it’s not a strategy about innovation….Thus far, Oracle has neither enjoyed nor seemed to seek open source success, even as open source becomes more and more important. (Unbreakable Linux was quickly recognized by the market as a clumsy attempt to capitalize on the open source efforts of others.) Serious commitment to MySQL could change this. However, it also potentially competes with Oracle’s flagship database product. The same issue applies to GlassFish and WebLogic.”

    5. Michael Widenius, Author of the original version of MySQL, founding member of the MySQL AB company:
    Blog post: To be (free) or not to be (free)

    “What could be Oracle’s plan with MySQL? Three different plans come to mind:

  • They are going to kill MySQL (either directly or by not developing/supporting it fully)
  • MySQL will get sold of to another entity, either because Oracle doesn’t want it or becasue of anti-trust laws.
  • They will embrace MySQL and Open Source and put their technical expertise on it to ensure that MySQL continues to be the most popular advanced Open Source database.
  • I am putting my hopes to the third option, but for succeeding in that Oracle has to also learn a lot about open source development and working with the community.”

    Tuesday
    Mar 24,2009

    Spent a few minutes figuring this one out. I was trying to setup a new cron job. My default editor was nano (yes, that’s right – not VI!). Every time I tried to save my crontab, I kept getting this error:

    /tmp/crontab.nQGgD2/crontab"\:1: bad minute
    errors in crontab file, can't install.

    After a bit of investigation, it turns out because my cron command was quite long it spanned across two lines. Nano wraps these long lines by default, and this looks like it causes problems with the cron tab by inserting some funny new-line wrapper chracter.

    To fix this issue, I found out you can just turn of the line wrapping option for Nano. You can do this by editing your nanorc:

    sudo nano /etc/nanorc

    And then remove the comment from the following line, so it looks like this:

    set nowrap

    Go back and edit the crontab, and it should work fine now.

    Twitter Updates



      Meta