<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Personal Blog</title>
	<atom:link href="http://blog.sherifmansour.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.sherifmansour.com</link>
	<description>Sherif Mansour</description>
	<lastBuildDate>Sat, 04 May 2013 04:57:33 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0.1</generator>
	<item>
		<title>Eight lessons a product manager can learn form Firefox (Why it&#8217;s hard to remove features)</title>
		<link>http://blog.sherifmansour.com/?p=527</link>
		<comments>http://blog.sherifmansour.com/?p=527#comments</comments>
		<pubDate>Sun, 09 Jan 2011 10:34:49 +0000</pubDate>
		<dc:creator><![CDATA[Sherif]]></dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Product Management]]></category>

		<guid isPermaLink="false">http://blog.sherifmansour.com/?p=527</guid>
		<description><![CDATA[Bug 578967 in Mozilla&#8217;s public issue tracker is an issue that&#8217;s caught my attention recently. It&#8217;s a controversial issue with over 160 comments and over 50 participants. So why so contentious? The issue is a task to remove a RSS icon from the top-level navigation in the upcoming Firefox 4 release. What exactly are we [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=578967">Bug 578967</a> in Mozilla&#8217;s public issue tracker is an issue that&#8217;s caught my attention recently. It&#8217;s a controversial issue with over 160 comments and over 50 participants. So why so contentious? </p>
<p>The issue is a task to remove a RSS icon from the top-level navigation in the <a href="http://www.mozilla.com/en-US/products/download.html?product=firefox-4.0b8&#038;os=win&#038;lang=en-US">upcoming Firefox 4 release</a>. What exactly are we talking about? I&#8217;m referring to this:</p>
<p><img src="http://blog.sherifmansour.com/wp-content/uploads/2011/01/firefox4-rss-icon1.jpg" alt="Firefox 3.x RSS Icon" title="Firefox 3.x RSS Icon" width="567" height="56" class="aligncenter size-full wp-image-541" /></p>
<p>Why? To simplify the UI.</p>
<p>As I read through <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=578967">the issue</a>, I found myself relating a lot of the discussion back to similar situations I&#8217;d experienced recently. So I thought I&#8217;d break down different parts of the conversation happening on issue and relate it to several things I&#8217;ve learnt over the last year in product management. For some background, you might want to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=578967">read the first few comments on the issue</a>.</p>
<p><strong>1. Take yourself out of the discussion and think of the customer</strong></p>
<blockquote><p>&#8220;&#8230;I use the button myself as a convenient shortcut (just so you don&#8217;t think I&#8217;m<br />
any kind of RSS hater, but it&#8217;s hard to justify the prominent placement it<br />
currently has&#8230;&#8221; &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=578967#c6">Alexander Limi</a></p></blockquote>
<p>This is a hard thing to do. You might often hear yourself or your colleagues say &#8220;I would use this!&#8221; &#8211; but the real question you need to ask yourself is &#8211; would most of your customers? When looking at making a product decision remove your opinion out of the discussion and put the customer hat on.  </p>
<p><strong>2. Achieving simplicity will mean you have to say no</strong></p>
<blockquote><p>&#8220;&#8230;You have a compelling argument, the problem is that while this move would<br />
simplify the UI for the lowest common denominator (which is frequently a good<br />
thing) it would drastically reduce discoverability for feeds support&#8230;&#8221; &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=578967#c7">David Garrett</a></p></blockquote>
<p>This whole debate is a result of a request to simplify the user interface of Firefox. <a href="http://www.uxbooth.com/blog/less-is-more-simplifying-your-user-experience/">Less is more</a>. Doing this isn&#8217;t easy, at all. </p>
<p>Every customer wants to take your product in a different direction. Every direction has a different experience and purpose. <a href="http://www.smashingmagazine.com/2010/06/29/why-design-by-commitee-should-die/">Design by committee doesn&#8217;t work</a>. The only way you will be able to achieve the simplicity you desire is if you say no. How do you say no? Well, you can&#8217;t really say no with confidence unless you have a vision for the product. </p>
<p><strong>3. There will always be a vocal group of users </strong></p>
<blockquote><p>&#8220;&#8230;Your usage metrics aren&#8217;t accurate.. I use the icon as a visual reference to rss feeds.. yet I don&#8217;t click on the icon.. I didn&#8217;t know it was a button.  RSS technology is still unknown by most users.. removing the icon isn&#8217;t going to help people learn about it.. it will just kill it.. this was a very stupid<br />
move.  Please bring back the icon!!!  Why go backwards?  I know votes don&#8217;t mean much to you folks, but there are more votes to keep the button than to remove it.. check out the user comments on the Mozillazine forum and on the Firefox 4 Beta forum.. not one user wants to get rid of the icon, but all want to keep.  Why don&#8217;t you listen to the users?&#8230;&#8221; &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=578967#c149">jcspence74</a></p></blockquote>
<p>I applaud Mozilla for such a public issue tracker. At my current work we do the same thing &#8211; and it&#8217;s a hard thing to do. A big part of having such a large customer base is recognising that you will always have a vocal set of users. The difficult part of your job is working out if the feedback you are receiving from vocal users is valid and if it&#8217;s a true representation of the majority of your customers. </p>
<p>Using data to make decisions is a helpful way to go about doing this&#8230;(next point)</p>
<p><strong>4. Data driven decisions</strong></p>
<blockquote><p>We&#8217;re moving a lot of new functionality to this area with the Stop/Reload/Go<br />
combination, so we should get RSS out of the way. It&#8217;s one of the lowest-used button in our entire UI, even among our power users (beta users that supply the test pilot data), with only 3% of users *ever* clicking it even once during the test period: https://heatmap.mozillalabs.com &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=578967#c79">Alexander Limi</a></p></blockquote>
<p>Mozilla are capturing comprehensive stats, with several studies conducted during the Firefox 4 beta. These stats are produced as a heatmap overlay a browser. <a href="https://heatmap.mozillalabs.com/mozmetrics/?os=all&#038;colorscheme=hsl&#038;skill=all">One of the studies from earlier this year</a> showed that a small percentage (~7%) of users actually clicked the icon. <a href="https://heatmap.mozillalabs.com/">The latest study</a> showed only 3% usage. </p>
<p>Where possible, use data to drive and validate decision making. However, the biggest challenge you have here is making sure you aren&#8217;t <strong>solely</strong> making decisions on user metrics. It&#8217;s equally important to consider how user experience can change behaviors rather than relying on existing patterns.</p>
<p><strong>5. Focus on the majority</strong><br />
So here is the counter-argument to the previous point:</p>
<blockquote><p>&#8220;&#8230;Even if we&#8217;re only talking 5-10% of the Firefox user-base caring about this button, that translates to tens of millions of people&#8230;&#8221; &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=578967#c55">David Garett</a></p></blockquote>
<p>It&#8217;s very easy to say we should focus on the majority. It&#8217;s something else to do something about it. </p>
<blockquote><p>&#8220;We simply have to design for mainstream users if we are going to survive in this increasingly competitive marketplace.  Everyone seems extremely interested in their own personal usage, and being informed well enough in advance of a otherwise pretty minor modification so that they can riot and attempt to<br />
prevent any type of change&#8230; We&#8217;re designing a product for 400 million people. This bug could contain a million comments calling us stupid and it still wouldn&#8217;t change our desire to create a product targeting mainstream users.&#8221; &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=578967#c147">Alex Faaborg</a></p></blockquote>
<p>Well said.</p>
<p><strong>6. Speed, speed, speed</strong><br />
You have a large customer base and you have lots of data. Most would think that should make it easier to make decisions&#8230; Right? Wrong! You can spend <em>forever</em> debating these things &#8211; make sure you don&#8217;t! An amusing comment on this issue:</p>
<blockquote><p>&#8220;If we hurry we can still beat the release of Duke Nukem Forever as well!&#8221; &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=578967#c89">Alex Faaborg</a></p></blockquote>
<p>It&#8217;s okay to disagree. In fact, it&#8217;s probably a good sign that you have people disagreeing &#8211; you have a good balance of people working on the project. However, you must make sure you don&#8217;t go on debating these issues for long periods of time. Before you know it, you&#8217;ll be behind the competition. </p>
<p>Figure out the implications of making a wrong decision &#8211; financial, technical costs, customer experience etc&#8230; From there, work out how much risk there is in making the wrong decision. Once you have done that you&#8217;ll be in a good position to understand how much time is too much time wasted on debating the issue. </p>
<p>In this specific example, getting the decision wrong isn&#8217;t the end of the World. RSS isn&#8217;t dead. This won&#8217;t kill RSS. It would be very easy to bring back the RSS icon if you got the decision wrong. So, work it out: Is 160 comments over a period of five months worth the debate? No, it isn&#8217;t. </p>
<p>Make a decision, move on. </p>
<p><strong>7. No, not another setting</strong> </p>
<blockquote><p>&#8220;&#8230;A different compromise might be to only show a feed icon as needed if a user<br />
has at least once used the feed system beyond the default. After which point it would have it as an easily user configurable option of some kind. (though I&#8217;m apparently only coming up with this now, and it&#8217;ll be burred in the new deluge of panic)&#8230;  I would prefer some kind of an in-GUI option or an about:config option for this<br />
too, but it doesn&#8217;t look like we&#8217;re going that route right now&#8230;&#8221; &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=578967#c121">David Garrett</a></p></blockquote>
<p>Please, don&#8217;t get me wrong. I&#8217;m all for settings &#8211; where settings are needed. This problem relates to a previous point I made. Generally speaking, software with lots of &#8216;optional settings&#8217; is usually evidence that it isn&#8217;t catering for the majority of our customers. There is no clear direction and vision for the product. The end-result? Option and configuration bloat. Consoles with hundreds of check boxes and radio buttons. A poor user experience. </p>
<p>I once heard a quote that was along the lines of &#8220;For every 20 users I&#8217;ll make unhappy, I&#8217;ll make another 80 users happy&#8221; (<em>couldn&#8217;t find where this quote was from</em>). </p>
<p><strong>8. Don&#8217;t be driven by your competition</strong></p>
<blockquote><p>> Those sites are going to have some issues with users on chrome and apparently<br />
> IE9 as well.<br />
Meh&#8230; If IE9 completely does away with this in the top-level GUI then I<br />
reluctantly agree we may need to consider it too. (though I&#8217;d still rather not) &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=578967#c70">David Garrett</a></p></blockquote>
<p>Don&#8217;t let decision making be driven by your competition. This is hard to do, because you can often play it safe by simply &#8220;seeing what the others are doing&#8221;. Whilst it may sometimes be a safe bet (assuming your competition has it right), it often is a great way to kill innovation and not produce anything of any differentiation. </p>
<p>Interesting side-note: <a href="http://code.google.com/p/chromium/issues/detail?id=21421">Chrome did consider this feature</a> and decided not to do it. </p>
<p><strong>Conclusion?</strong><br />
Removing features is incredibly hard. It&#8217;s extremely easy to add new functionality to your product &#8211; however, we don&#8217;t often stop and think of the (long term) implications of this. If removing features difficult to do, then, we should, equally, put as much effort into deciding what new functionality we want to add. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sherifmansour.com/?feed=rss2&#038;p=527</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Learn early, Learn often</title>
		<link>http://blog.sherifmansour.com/?p=517</link>
		<comments>http://blog.sherifmansour.com/?p=517#comments</comments>
		<pubDate>Sun, 25 Apr 2010 12:33:07 +0000</pubDate>
		<dc:creator><![CDATA[Sherif]]></dc:creator>
				<category><![CDATA[Product Management]]></category>

		<guid isPermaLink="false">http://blog.sherifmansour.com/?p=517</guid>
		<description><![CDATA[I&#8217;ve always been struggling in my head with the whole &#8216;release early, release often&#8217; VS &#8216;release when the product is decent enough&#8217; debate. There are advantages and disadvantages for both methods, but I never took a step back to really think of the the problem product owners or founders are trying to solve when considering [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve always been struggling in my head with the whole &#8216;release early, release often&#8217; VS &#8216;release when the product is decent enough&#8217; debate. There are advantages and disadvantages for both methods, but I never took a step back to really think of the the problem product owners or founders are trying to solve when considering this.</p>
<p>I recently came across a talk by <a href="http://twitter.com/drewhouston">Drew Houston</a>, founder and CEO of <a href="http://www.dropbox.com/">Dropbox</a>. In this talk, one of the points Houston brings up is this exact question. When do I release my product?</p>
<blockquote><p>Release early, release often VS Release when it doesn&#8217;t suck</p></blockquote>
<p>Houston suggests that maybe the wrong question is being asked here. We need to take a step back and understand <strong>why</strong> one would want to do this in the first place? Feedback &#8211; we want to do this to get feedback as quick as possible so that we can validate our product before over-investing in a particular direction. </p>
<p>So if our purpose is to listen, validate and adapt &#8211; then what we are trying to do here is to:</p>
<blockquote><p>Learn early and learn often</p></blockquote>
<p>If we are trying to build products which customers want we need to learn early and learn frequently from them. The question around when to ship becomes becomes a bit irrelevant if what you are trying to do is learn. What product owners or founders really need to be asking is when do I have something that is enough for me to <em>learn</em> about my target audience?</p>
<p>For Dropbox, the output of their Minimum Viable Product (MVP) wasn&#8217;t a prototype or a limited demo account. Their MVP was presented in a video. A simple screencast. This video provided enough information to get feedback from their target audience. It allowed them to learn early, and learn often. This <a href="http://news.ycombinator.com/item?id=8863">screencast was posted on Hacker News</a> and almost instantly, it began to receive inputs from the outside world feedback into the product. Dropbox didn&#8217;t actually ship until after the first 18 months &#8211; the screencast they had was sufficient enough to enable them to learn from their users.</p>
<p>If what you have is enough to enable you to learn, gather feedback and validate your ideas with users,  why worry about when to release? Show someone! You&#8217;re ready to gather feedback!</p>
<p>You can watch the rest of the talk or slides here:<br />
<object type="application/x-shockwave-flash" height="300" width="400" id="clip_embed_player_flash" data="http://www.justin.tv/widgets/archive_embed_player.swf" bgcolor="#000000"><param name="movie" value="http://www.justin.tv/widgets/archive_embed_player.swf" /><param name="allowScriptAccess" value="always" /><param name="allowNetworking" value="all" /><param name="allowFullScreen" value="true" /><param name="flashvars" value="auto_play=false&#038;start_volume=25&#038;title=Customer Development Case Study: Dropbox&#038;channel=startuplessonslearned&#038;archive_id=262672510" /></object><br /></a></p>
<div style="width:425px" id="__ss_3836587"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/gueste94e4c/dropbox-startup-lessons-learned-3836587" title="Dropbox Startup Lessons Learned">Dropbox Startup Lessons Learned</a></strong><object width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=dropbox-startuplessonslearned-100423230315-phpapp02&#038;stripped_title=dropbox-startup-lessons-learned-3836587" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=dropbox-startuplessonslearned-100423230315-phpapp02&#038;stripped_title=dropbox-startup-lessons-learned-3836587" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.sherifmansour.com/?feed=rss2&#038;p=517</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What Retweet and PageRank have in common</title>
		<link>http://blog.sherifmansour.com/?p=490</link>
		<comments>http://blog.sherifmansour.com/?p=490#comments</comments>
		<pubDate>Sat, 13 Feb 2010 07:41:26 +0000</pubDate>
		<dc:creator><![CDATA[Sherif]]></dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Search Engines]]></category>
		<category><![CDATA[Social Networking & Collaboration]]></category>

		<guid isPermaLink="false">http://blog.sherifmansour.com/?p=490</guid>
		<description><![CDATA[I&#8217;ve been thinking about how important the retweet feature is for Twitter. I&#8217;ve concluded that &#8216;Retweet&#8217; is as important to Twitter as Google&#8217;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 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been thinking about how important the <a href="http://blog.twitter.com/2009/11/retweet-limited-rollout.html">retweet feature</a> is for Twitter. I&#8217;ve concluded that &#8216;Retweet&#8217; is as important to Twitter as Google&#8217;s <a href="http://en.wikipedia.org/wiki/PageRank">PageRank algorithm</a> is important to Google.</p>
<p><strong>PageRank</strong><br />
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&#8217;s relevance (through some form of content analysis) and it&#8217;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:</p>
<li>Who links to the site</li>
<li>How many people link to the site</li>
<li>How official is the site (eg is it a .gov? or have some sort of reputable status?)</li>
<li>How many people go to the site</li>
<li>.. and a whole bunch of other stuff</li>
<p>Factoring in all these elements and more, Google produces a PageRank value for each site. PageRank has become critical to Google&#8217;s business. It&#8217;s what differentiates Google from other search engines. It has become Google&#8217;s bread and butter on which they have built their business on top of.</p>
<p><strong>So what&#8217;s this got to do with a retweet?</strong><br />
Here is the problem with Twitter: How do I know a tweet is accurate, reliable and is from who it says it&#8217;s from? </p>
<p>Twitter is going through what Google faced in it&#8217;s early days &#8211; <a href="http://searchengineland.com/twitters-real-time-spam-problem-20614">spammers</a>, <a href="http://techcrunch.com/2009/07/24/twitter-cracks-down-on-spam-accounts-people-lose-followers/">impostors</a> and a <a href="http://royal.pingdom.com/2010/02/10/twitter-now-more-than-1-billion-tweets-per-month/">general lack of quality content</a> (useful tweets).</p>
<p>Twitter is still working through all those issues. For example, they have been trying to tackle fake accounts by introducing <a href="http://twitter.com/help/verified">verified accounts</a>. Spam continues on, and the <a href="http://techcrunch.com/2010/02/02/twitter-phishing-attack/">security issues</a> of Twitter aren&#8217;t helping either. So what&#8217;s the answer?</p>
<p><strong>Crowd-source your problem</strong><br />
You see, Twitter can&#8217;t <em>just</em> use the total amount of followers as a way of identifying useful and reputable content on Twitter. Twitter&#8217;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 &#8216;PageRank terms&#8217; this could have the same effect as linking to your site. </p>
<p><strong>A Twitter PageRank Algorithm?</strong><br />
If Twitter were to have an equivalent algorithm it could involve a mix of the following elements: </p>
<li>How many people retweet a user (a high weighting could be placed on this)</li>
<li>How many people send a user @Replies</li>
<li>How many people follow a user (a lower weighting)</li>
<li>How many lists a user appears on</li>
<li>How many people favorite (or &#8216;star&#8217;) a users Tweets </li>
<p>The consequences of Twitter&#8217;s efforts on the retweet feature and API are twofold:</p>
<ol>
<li>Users are able to find reputable, quality and useful Tweets</li>
<li>Twitter begins to identify the influencers and trend-setters</li>
</ol>
<p>The first point above ensures more and more users stay on Twitter&#8217;s microblogging platform &#8211; which is critical for Twitters success. Secondly, identifying influencers presents a huge monotization opportunity for Twitter&#8230; but that&#8217;s another blog-post! </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sherifmansour.com/?feed=rss2&#038;p=490</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Getting started with Google Calendar and PHP using Zend_Gdata</title>
		<link>http://blog.sherifmansour.com/?p=483</link>
		<comments>http://blog.sherifmansour.com/?p=483#comments</comments>
		<pubDate>Mon, 21 Sep 2009 12:13:15 +0000</pubDate>
		<dc:creator><![CDATA[Sherif]]></dc:creator>
				<category><![CDATA[Development Tips & Tricks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Search Engines]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.sherifmansour.com/?p=483</guid>
		<description><![CDATA[Let&#8217;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 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Let&#8217;s briefly look at how you can integrate a <a href="http://calendar.google.com">Google Calendar</a> with your next PHP application. </p>
<p>If you take a quick look at the <a href="http://code.google.com/apis/apps/calendar_resource/docs/1.0/calendar_resource_developers_guide_protocol.html">Google Calendar API</a>, 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. </p>
<p>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. </p>
<p>To get started firstly download the <a href="http://framework.zend.com/download/gdata">Zend_Gdata client libraries</a> and extract them to your project. </p>
<p>Next, include the libs in your code:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">	<span style="color: #b1b100;">require_once</span> <span style="color: #0000ff;">'Zend/Loader.php'</span><span style="color: #339933;">;</span>
	Zend_Loader<span style="color: #339933;">::</span><span style="color: #004000;">loadClass</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Zend_Gdata'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	Zend_Loader<span style="color: #339933;">::</span><span style="color: #004000;">loadClass</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Zend_Gdata_AuthSub'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	Zend_Loader<span style="color: #339933;">::</span><span style="color: #004000;">loadClass</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Zend_Gdata_ClientLogin'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	Zend_Loader<span style="color: #339933;">::</span><span style="color: #004000;">loadClass</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Zend_Gdata_Calendar'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

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

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">    <span style="color: #000088;">$gcal</span> <span style="color: #339933;">=</span> Zend_Gdata_Calendar<span style="color: #339933;">::</span><span style="color: #004000;">AUTH_SERVICE_NAME</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$user</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;googleuser@gmail.com&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$pass</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;mygmailpass&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$client</span> <span style="color: #339933;">=</span> Zend_Gdata_ClientLogin<span style="color: #339933;">::</span><span style="color: #004000;">getHttpClient</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$user</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pass</span><span style="color: #339933;">,</span> <span style="color: #000088;">$gcal</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$gcal</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_Gdata_Calendar<span style="color: #009900;">&#40;</span><span style="color: #000088;">$client</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Generate query to get event list</span>
    <span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$gcal</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">newEventQuery</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setUser</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setVisibility</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'private'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setProjection</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'basic'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setStartMin</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Y-n-j'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setOrderby</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'starttime'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

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

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">try<span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$feed</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$gcal</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getCalendarEventFeed</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$feed</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">totalResults</span> <span style="color: #339933;">&gt;=</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;There are &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$feed</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">totalResults</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; upcoming events&lt;br/&gt;&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$feed</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$event</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      	        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;li&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$event</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</span><span style="color: #0000ff;">&quot;&lt;br/&gt;&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$event</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">summary</span><span style="color: #0000ff;">&quot;&lt;br/&gt;&lt;/li&gt;&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;There are no upcoming events&lt;br/&gt;&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>catch <span style="color: #009900;">&#40;</span>Zend_Gdata_App_Exception <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Error retrieving calender &quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$e</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getResponse</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>That&#8217;s it! For more info on using Zend_Gdata, checkout <a href="http://framework.zend.com/manual/en/zend.gdata.html">their API</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sherifmansour.com/?feed=rss2&#038;p=483</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presentation: Intro to Social Media for Youth Workers</title>
		<link>http://blog.sherifmansour.com/?p=464</link>
		<comments>http://blog.sherifmansour.com/?p=464#comments</comments>
		<pubDate>Wed, 02 Sep 2009 22:00:02 +0000</pubDate>
		<dc:creator><![CDATA[Sherif]]></dc:creator>
				<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Social Networking & Collaboration]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.sherifmansour.com/?p=464</guid>
		<description><![CDATA[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 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Yesterday I presented at the Bankstown Workers with Youth forum over at <a href="http://www.bankstown.nsw.gov.au/">Bankstown Council</a> on  an introduction to Social Media for Youth Workers. The presentation covered:</p>
<li>Introduction to Social Media</li>
<li>Why Social Media?</li>
<li>Social Media principles</li>
<li>How are Youth using Social Media</li>
<li>How are Youth Workers using Social Media</li>
<li>Developing a Social Media Strategy for Youth Workers</li>
<p>You can view the presentation here:</p>
<div style="width:425px;text-align:left" id="__ss_1940217"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/small/intro-to-social-media-for-youth-workers" title="Intro To Social Media For Youth Workers">Intro To Social Media For Youth Workers</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=introtosocialmediaforyouthworkers-090901231359-phpapp01&#038;rel=0&#038;stripped_title=intro-to-social-media-for-youth-workers" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=introtosocialmediaforyouthworkers-090901231359-phpapp01&#038;rel=0&#038;stripped_title=intro-to-social-media-for-youth-workers" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<p><strong>Followup Links</strong></p>
<li><a href="http://blogs.nya.org.uk/ywsn/" target="_blank">Youth and social networking research project blog</a> </li>
<li><a href="http://ukyouthonline.ning.com" target="_blank">UK Youth Workers Social Network</a> </li>
<li><a href="http://video.google.com/videoplay?docid=5331983526426870869&#038;hl=en#" target="_blank">Engaging with Youth through Social Meida Conference Video</a></li>
<li><a href="http://www.scribd.com/doc/17759504/Free-Chapter-Conversation-and-Community" target="_blank">Free Book Chapter on Conversation &#038; Community</a></li>
<li>Risk Assessment Templates &#8211; <a href="http://www.katiebacon.co.uk/On%20line%20digital%20youth%20outreach%20procedures%20&#038;%20guidance%20documents.html" target="_blank">By Katie Bacon</a> and <a href="http://www.ukyouthonline.ning.com/profiles/blogs/risk-assessment-for-social" target="_blank">UK Youth Online</a></li>
<li><a href="http://www.scribd.com/doc/6041656/Blogging-for-Youth-Workers">Youth work guide to blogging for Youth Workers</a></li>
<p>Big thanks to <a href="http://optus.com.au">Optus</a> for giving me the opportunity to giving back to the community with their volunteer leave.</p>
<p><i>Disclaimer:  This is a personal bog. The opinions expressed here represent my own and not those of my employer.</i></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sherifmansour.com/?feed=rss2&#038;p=464</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The State of the Social Web: Facebook &amp; FriendFeed, Google&#8230; oh and Twitter</title>
		<link>http://blog.sherifmansour.com/?p=434</link>
		<comments>http://blog.sherifmansour.com/?p=434#comments</comments>
		<pubDate>Tue, 25 Aug 2009 23:31:56 +0000</pubDate>
		<dc:creator><![CDATA[Sherif]]></dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Social Networking & Collaboration]]></category>
		<category><![CDATA[Tech News]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[friendfeed]]></category>
		<category><![CDATA[socialmedia]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.sherifmansour.com/?p=434</guid>
		<description><![CDATA[I was wrong about FriendFeed A couple of weeks a go I was having a chat to a friend about FriendFeed. I&#8217;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 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>I was wrong about FriendFeed</strong><br />
<img src="http://blog.sherifmansour.com/wp-content/uploads/2008/06/friendfeed-php-api.png" alt="FriendFeed" title="FriendFeed" width="200" height="56" class="alignleft size-full wp-image-219" align="left" /> A couple of weeks a go I was having a chat to a friend about <a href="http://friendfeed.com">FriendFeed</a>. I&#8217;m a big fan of FriendFeed (see <a href="http://blog.sherifmansour.com/?p=218">some</a> <a href="http://blog.sherifmansour.com/?p=222">previous</a> <a href="http://blog.sherifmansour.com/?p=240">posts</a>) 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&#8217;s semi-recent upgrade with <a href="http://friendfeed.com/friendfeed-news/3e8173bf/you-now-get-friendfeed-direct-messages-and">direct messaging</a> and <a href="http://blog.friendfeed.com/2009/07/real-time-search-we-have-it-its-here.html">real time search updates</a> made it an even better Twitter alternative. It has all the &#8216;Microblogging&#8217; features Twitter has to offer and a whole lot more. I would also argue its better written, with <a href="http://friendfeed.com/about/team">some great brains behind it</a>. It doesn&#8217;t take a genius to work out that using a <a href="https://friendfeed.com/account/api">remote key</a> (or better known as an <a href="http://en.wikipedia.org/wiki/API_key">API Key</a>) 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&#8217;s recent implementation of <a href="http://apiwiki.twitter.com/OAuth-FAQ">OAuth</a> has been great to see). </p>
<p>In saying all this, I wasn&#8217;t chatting to my friend about how good FriendFeed was, but rather how I thought that FriendFeed needed to re-invent itself.</p>
<p>The thing I couldn&#8217;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 <a href="http://www.techcrunch.com/2009/02/09/facebook-activates-like-button-friendfeed-tires-of-sincere-flattery/">Facebook was implementing all the FriendFeed features</a> after FriendFeed had done all the hard work of coming up with the idea and testing it out. TechCruch described it as the &#8220;<a href="http://www.techcrunch.com/2008/07/21/the-friendfeedization-of-facebook/">Friendfeedization of Facebook</a>&#8220;. More so,  <a href="http://twitter.com/jmasson">colleague of mine</a> put it quite nicely: </p>
<blockquote><p>&#8220;FriendFeed is becoming the Opera of social networks&#8221;</p></blockquote>
<p>When you look at the stuff Opera browser is coming out with, you sometimes wonder why it hasn&#8217;t got a bigger following. </p>
<p>Now I&#8217;m not going to pretend I&#8217;m an expert as to why FriendFeed couldn&#8217;t break past the early tech-adopters stage &#8211; because I don&#8217;t. I&#8217;ve read lots about people saying timing had a lot to do with it. There has been lots of suggestions saying FriendFeed&#8217;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. </p>
<p>Well lets put all these thoughts aside &#8211; it doesn&#8217;t matter any more &#8211; <a href="http://blog.friendfeed.com/2009/08/friendfeed-accepts-facebook-friend.html">Facebook just bought FriendFeed</a>. I think that&#8217;s all that FriendFeed needed to get the critical mass.</p>
<p><strong>Facebook to Twitter: &#8220;bring it&#8221;</strong><br />
<img src="http://blog.sherifmansour.com/wp-content/uploads/2009/08/friendfeed-facebook.png" alt="Friendfeed Facebook" title="Friendfeed Facebook" width="290" height="112" class="alignleft size-full wp-image-447"  align="left"/>So if you can&#8217;t get a large community to come to you &#8211; why not go to them? I think this is what will will happen now that <a href="http://www.facebook.com/press/releases.php?p=116581">Facebook bought it</a>. That&#8217;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 &#8211; because activity streams is it&#8217;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 <a href="http://www.builderau.com.au/news/soa/Is-Facebook-s-FriendFeed-acquisition-all-about-talent-/0,339028227,339297876,00.htm">maybe that&#8217;s all that Facebook wanted</a>! Who knows.</p>
<p>Now remember <a href="http://www.fastcompany.com/blog/chris-dannen/techwatch/facebook-tries-buy-twitter-are-they-insane">Facebook tried to buy Twitter</a>? Supposedly for 500 million &#8211; which to me sounds ridiculous! Either way &#8211; Facebook has now positioned itself to potentially kill Twitter. Facebook recently introduced the &#8220;<a href="http://www.techcrunch.com/2009/06/24/facebook-brings-privacy-controls-to-publisher/">share with everyone</a>&#8221; button &#8211; 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 &#8216;<a href="http://www.techcrunch.com/2009/08/11/facebook-begins-testing-facebook-lite-a-faster-simpler-version-of-the-service/">Facebook Lite</a>&#8216; &#8211; and it doesn&#8217;t take half a brain to work out the competition is on!</p>
<p><strong>How can we forget Google?</strong><br />
Now just because Google&#8217;s <a href="http://www.orkut.com/Main#Home.aspx">Orkut</a> <a href="http://www.teknobites.com/2008/08/12/orkut-is-the-most-popular-social-network-in-india/">isn&#8217;t as popular in Western countries</a> doesn&#8217;t mean Google&#8217;s social efforts are going unnoticed! Some recent big announcements by Google clearly show they are still in the social space:</p>
<li><a href="http://googleblog.blogspot.com/2009/08/i-scream-you-scream-we-all-scream-for.html">iGoogle: Gets Social</a>. Opening up the whole of iGoogle to your Google Contacts and all the OpenSocial containers.</li>
<li>Google Reader: More social than ever, in fact &#8211; it&#8217;s become very FriendFeed like! Here are some examples:<br />
<a href="http://googlereader.blogspot.com/2009/07/following-liking-and-people-searching.html">Google Reader implements following, liking and people searching</a><br />
<a href="http://googlereader.blogspot.com/2009/08/pubsubhubbub-support-for-reader-shared.html">Reader Real-time updates</a> with <a href="http://code.google.com/p/pubsubhubbub/">PubSubHubbub</a>.<br />
<a href="http://googlereader.blogspot.com/2009/08/flurry-of-features-for-feed-readers.html">Reader &#8220;Send to&#8221; and Sharing features</a><br />
<a href="http://www.google.com.au/url?sa=t&#038;source=web&#038;ct=res&#038;cd=1&#038;url=http%3A%2F%2Fwww.techcrunchit.com%2F2009%2F05%2F05%2Frest-in-peace-rss%2F&#038;ei=beCLSu26HoP6kAXopKg2&#038;usg=AFQjCNHhLQZtwfjjTdLZQmAelmr1p6-GEQ&#038;sig2=t8aypOE4HeEPPfhqhHliKA">&#8230; and who said RSS is dead</a>?!</p>
<li><a href="http://googleblog.blogspot.com/2009/05/went-walkabout-brought-back-google-wave.html">Google Wave:</a> &#8211; With Google Wave, everything on the web becomes Social. I really think we can&#8217;t underestimate the power that Google Wave might have in the social space when it becomes available to the general public.</li>
<li>Google Photos (Picassa): They <a href="http://googlephotos.blogspot.com/2009/08/collaborate-on-picasa-web-albums.html">recently announced an &#8220;add contributors&#8221; feature</a> making Google Photos a great way for people to share and contribute to common photo albums.</li>
<li>Gmail: Google makes Gmail more social my allowing you to <a href="http://www.techcrunch.com/2009/08/21/gmail-tasks-become-shareable/">share your tasks with others</a>.</li>
<p><strong>What does this mean for Twitter?</strong><br />
In light of all this, Twitter has copped some big blows lately. Some that just spring to mind:</p>
<li><strong>Security</strong><br />
<a href="http://mashable.com/2009/07/15/twitter-security-meltdown/">This Mashable article sums it up nicely</a>. Twitters long history with accounts being hacked and most recent denial of service attacks  &#8211; its not looking good.</li>
<li><strong>Spam</strong><br />
Twitter is fighting a <a href="http://blog.twitter.com/2008/08/making-progress-on-spam.html">constant battle with Spam</a>.  You read articles <a href="http://www.techcrunch.com/2009/04/26/here-comes-twitter-spam-and-how-to-fight-it/">like this</a> and wonder &#8211; how much of Twitter is actually Spam? To me &#8211; it feels like a lot. I would at least get anywhere from 3-5 followers a day that are spam. Now I don&#8217;t get any spam followers trying to follow me on Facebook &#8211; Why is that? Twitter has some work to do.</li>
<li><strong>Noise </strong><br />
Twitter has a lot of noise. When you read articles like this that suggest <a href="http://news.bbc.co.uk/2/hi/technology/8204842.stm">40% of all Tweets are &#8216;babble&#8217;</a> &#8211; you aren&#8217;t surprised. Compare this to FriendFeed or Facebook &#8211; and how they deal with noise. They let you group users, &#8220;like&#8221; posts and choose to have &#8220;more&#8221; or &#8220;less&#8221; posts from specific people. They seem to be dealing with the noise quite well.</li>
<p>There are some big positives for Twitter:</p>
<li>A lot of existing applications &#8211; It&#8217;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.</li>
<li>Users. Twitters user base is big, and <a href="http://mashable.com/2009/01/09/twitter-growth-2008/">continues to grow</a>. Not only so, but the Media in general love Twitter &#8211; because it&#8217;s instant </li>
<li>API Improvements. The big one here is the Twitter <a href="http://blog.twitter.com/2009/08/location-location-location.html">Geo Location appearing in Tweets via the API</a>.</li>
<p><strong>Where is it all headed?</strong><br />
At first I was glad that Twitter didn&#8217;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 &#8211; but a really well written application which will allow them to further extend their services &#8211; and become more &#8220;Twitter like&#8221;. Google &#8211; 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.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sherifmansour.com/?feed=rss2&#038;p=434</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Styling Google Docs with CSS Boxes</title>
		<link>http://blog.sherifmansour.com/?p=425</link>
		<comments>http://blog.sherifmansour.com/?p=425#comments</comments>
		<pubDate>Sat, 08 Aug 2009 06:24:54 +0000</pubDate>
		<dc:creator><![CDATA[Sherif]]></dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design Tips & Tricks]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.sherifmansour.com/?p=425</guid>
		<description><![CDATA[I&#8217;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 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been using Google Docs quite a bit lately for a lot of documents. A while a go <a href="http://googledocs.blogspot.com/2008/05/want-your-docs-to-be-stylin.html">Google let you insert your custom CSS into Google Docs</a> making it easy for you to create your own CSS Styles. </p>
<p>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:</p>
<p><center><br />
<a href="http://blog.sherifmansour.com/wp-content/uploads/2009/08/google-docs-css-box.jpg"><img src="http://blog.sherifmansour.com/wp-content/uploads/2009/08/google-docs-css-box.jpg" alt="Style Google Docs with a CSS Box" title="Style Google Docs with a CSS Box" width="500" height="292" class="aligncenter size-full wp-image-426" /></a><br />
</center></p>
<p>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:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.orangeBox</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#fff6bf</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span> <span style="color: #933;">15px</span> <span style="color: #933;">5px</span> <span style="color: #933;">15px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">border-top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#ffd324</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">border-bottom</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#ffd324</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">90%</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">margin-left</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">margin-right</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.blueBox</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#f8fafc</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span> <span style="color: #933;">15px</span> <span style="color: #933;">5px</span> <span style="color: #933;">15px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">border-top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#b5d4fe</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">border-bottom</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#b5d4fe</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">90%</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">margin-left</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">margin-right</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Then when you are editing your page, switch to HTML view and apply .orangeBox or .blueBox to the DIV&#8217;s you want to style. </p>
<p>I&#8217;ve made <a href="http://docs.google.com/View?id=dcvppmhb_64hxmkp6jp">this document public</a> if you want to check it out as well.</p>
<p>If you are interested in this stuff, be sure to checkout <a href="http://docs.google.com/templates?view=public">Google Docs Template gallery</a> for other peoples styles.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sherifmansour.com/?feed=rss2&#038;p=425</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PoliPress &#8211; OpenAustralia WordPress Plugin</title>
		<link>http://blog.sherifmansour.com/?p=419</link>
		<comments>http://blog.sherifmansour.com/?p=419#comments</comments>
		<pubDate>Sat, 18 Jul 2009 07:46:20 +0000</pubDate>
		<dc:creator><![CDATA[Sherif]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[openaustralia]]></category>

		<guid isPermaLink="false">http://blog.sherifmansour.com/?p=419</guid>
		<description><![CDATA[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 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><center><img src="http://blog.sherifmansour.com/wp-content/uploads/2009/07/polipress.jpg" alt="PoliPress" title="PoliPress" width="253" height="86"/></center><br />
<a href="http://code.google.com/p/poli-press/">PoliPress</a> 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.</p>
<p>This plugin is something that started on the <a href="http://blog.openaustralia.org/2009/06/15/inaugural-openaustralia-hackfest-was-terrific/">first OpenAustralia.org hackfest in 2009</a>. PoliPress is powered by the <a href="http://openaustralia.org">OpenAustralia.org API</a>. </p>
<p>To see an example of what the plugin can do check out <a href="http://blog.sherifmansour.com/?p=363">my previous blogpost</a>.</p>
<p>The plugin is fully opensource &#8211; so you can do whatever you like with it! It&#8217;s <a href="http://code.google.com/p/poli-press/">hosted on Google Code</a> so you can grab it from there. Installation and usage instructions can also be found there.</p>
<p>I haven&#8217;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 <a href="http://blog.sherifmansour.com/?p=363">PoliPress project issues page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sherifmansour.com/?feed=rss2&#038;p=419</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>OpenAustralia.org Hackfest Project &#8211; WordPress Plugin</title>
		<link>http://blog.sherifmansour.com/?p=363</link>
		<comments>http://blog.sherifmansour.com/?p=363#comments</comments>
		<pubDate>Sat, 13 Jun 2009 07:58:25 +0000</pubDate>
		<dc:creator><![CDATA[Sherif]]></dc:creator>
				<category><![CDATA[Opensource]]></category>
		<category><![CDATA[Social Networking & Collaboration]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.sherifmansour.com/?p=363</guid>
		<description><![CDATA[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 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>For my <a href="http://anyvite.com/5qitmm44gl">OpenAustralia.org Hackfest</a> project I picked up a task Matthew had <a href="http://tickets.openaustralia.org/browse/OA-178">in the queue for a possible OpenAustralia wordpress plguin</a>. </p>
<p>The purpose of the plugin is to allow a blogger to quote speeches from members of parliament from the <a href="http://www.openaustralia.org">OpenAustralia</a> <a href="http://www.openaustralia.org/api/">API</a> using their <a href="http://wordpress.com">WordPress blog</a>. The Task: A WordPress plugin. </p>
<p>Here is a sample of what has been done thus far:</p>
<p><b>1. Multiple Speeches within the same blog post</b><br />
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 &#8220;link to this&#8221; link on an OpenAustralia link:<br />
<a href="http://blog.sherifmansour.com/wp-content/uploads/2009/06/gid_openaustralia.jpg"><img src="http://blog.sherifmansour.com/wp-content/uploads/2009/06/gid_openaustralia-300x31.jpg" alt="Get the GID from an OpenAustralia speech" title="Get the GID from an OpenAustralia speech" width="300" height="31" class="aligncenter size-medium wp-image-389" /></a></p>
<p>Once you know the GID (Global ID) of an Open Australia Speech you can write this in WordPress:<br />
<code>&#91;polipress gid="2009-06-16.43.1 type="senate"&#93;</code></p>
<p><b>2. Get a specific speech</b><br />
We can have multiple debates quoted within the same blog-post, here is another of just a single speech: </p>
<p><code>&#91;polipress gid="2009-03-19.174.2" type="representatives"&#93;</code></p>
<p><b>3. Search Speeches</b><br />
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:<br />
<code>&#91;polipress search="nbn" type="representatives"&#93;</code></p>
<p><b>3. Search Speeches and limit results</b><br />
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:<br />
<code>&#91;polipress search="Community Affairs" type="representatives" num="6"&#93;</code></p>
<p></p>
<p><b>Further Info</b><br />
For more information about the OpenAustralia.org hackfest checkout the Google <a href="http://google-opensource.blogspot.com/2009/06/australia-goes-open.html">Open Source blog post</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sherifmansour.com/?feed=rss2&#038;p=363</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Four alternative uses for Atlassian Jira</title>
		<link>http://blog.sherifmansour.com/?p=308</link>
		<comments>http://blog.sherifmansour.com/?p=308#comments</comments>
		<pubDate>Sat, 25 Apr 2009 08:18:03 +0000</pubDate>
		<dc:creator><![CDATA[Sherif]]></dc:creator>
				<category><![CDATA[Development Tips & Tricks]]></category>
		<category><![CDATA[Enterprise 2.0]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[atlassian]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[gtd]]></category>
		<category><![CDATA[jira]]></category>

		<guid isPermaLink="false">http://blog.sherifmansour.com/?p=308</guid>
		<description><![CDATA[I&#8217;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 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;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.</p>
<p><strong>There are many ways to solve a problem &#8211; but whats the most efficient and effective method?</strong><br />
As tempting as it is, you could build a custom application for almost anything &#8211; but we don&#8217;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 &#8211; <a href="http://wordpress.com">WordPress</a>, or a Forum &#8211; <a href="http://www.phpbb.com/">PHPBB</a>&#8230;). Additionally, there are cases where other types of problems can be solved by using an existing &#8216;wokflow&#8217; type of tool. In some of these instances, we have been using Jira (by <a href="http://atlassian.com">Atlassian</a>).</p>
<p><strong>Atlassian Jira</strong><br />
<img src="http://blog.sherifmansour.com/wp-content/uploads/2009/03/logo_impact.png" alt="Atlassian Jira" title="Atlassian Jira" width="81" height="40" class="alignleft size-full wp-image-322" align="left"/>Jira 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&#8217;s custom fields at a system-wide, project specific and/or issue type level. Jira&#8217;s reporting component (or &#8216;filters&#8217;) make it easy to extract the information you want out of the system in several formats. Finally, <a href="http://www.atlassian.com/software/jira/docs/latest/workflow.html">Jira&#8217;s workflow features</a> make it easy to define screens based on business processes you might have.</p>
<p><strong>Jira use cases</strong><br />
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:</p>
<li>User enters data in a custom form, a custom workflow is kicked off</li>
<li>Users can &#8216;assign&#8217; the item (issue/item/task) to other users</li>
<li>Users can watch for updates / comment on their issue/item/task that has been raised</li>
<li>Reporting &#8211; being able to view this data in a wide range of formats (eg Excel, CSV, XML/RSS)</li>
<p>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.</p>
<p><strong>1. Project Management</strong><br />
We had several requests for teams across the organisation that want to be able to track their larger projects as well as simple things &#8211; such as their internal initiatives. Some creative uses for <a href="http://confluence.atlassian.com/display/JIRA/JIRA+as+a+Project+Management+Tool">Jira in a project-management</a> context could be:</p>
<li>An &#8220;Issue&#8221; 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&#8217;s projects by raising issues within that project.</li>
<li>A Jira &#8220;<a href="http://www.atlassian.com/software/jira/docs/v3.13.2/component_management.html">Component</a>&#8221; being a project, allowing you to assign issues that relate to multiple projects.</li>
<li>Jira &#8220;<a href="http://www.atlassian.com/software/jira/docs/v3.13.2/version_management.html">versions</a>&#8221; being used as milestones for a project deliverable</li>
<li>Manage Risks &#038; Issues for a project by creating standard <a href="http://www.atlassian.com/software/jira/docs/v3.13.2/subtasks.html">sub-tasks</a> 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 &#8211; what are the risks and issues</li>
<li>Use Jira&#8217;s capability for <a href="http://www.atlassian.com/software/jira/docs/latest/issuelinking.html">&#8220;linking&#8221; issues</a> to show dependent tasks and <a href="http://confluence.atlassian.com/display/JIRAEXT/Links+Hierarchy+Reports">reporting on them in a nice way</a>.</li>
<li>Use it with it&#8217;s out-of-the-box setup &#8211; Having a Jira project for every project you have, and then creating issues within each project to track tasks milestones</li>
<p><strong>2. Engagement Forms</strong><br />
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&#8217;s engagement form. Each team has their own interests &#8211; 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.</p>
<p>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&#8217;s as your subject matter experts for that engagement type.</p>
<p>Using Jira to track your engagements is great as it allows you to:</p>
<li>assign engagements to leads,</li>
<li>track time for each engagement and lets you </li>
<li>receive flexible reporting functionality through the Jira issues filter. </li>
<p><strong>3. Task Management (<a href="http://en.wikipedia.org/wiki/Getting_Things_Done">GTD</a>)</strong><br />
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&#8217;s. Your engagement form can easily become your team&#8217;s work tracing tool. So from engagement to tracking the actual work &#8211; you could use Jira as an end-to-end productivity tool within your team.<br />
Now, not all work your team will do would be project related &#8211; 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.</p>
<p><strong>4. Ticketing System</strong><br />
The last, and probably most obvious use alternative of Jira, is <a href="http://confluence.atlassian.com/display/JIRA/JIRA+as+a+Support+System">for some form of ticketing system</a>. Atlassian eat their own dogfood with <a href="http://support.atlassian.com">their customer support site</a> &#8211; a classic example of Jira being used as a ticketing system. </p>
<p>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 &#8216;Issue Level Security&#8217;. 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.</p>
<p>To make reporting easier, you could setup a component for each one of the support &#8216;queues&#8217;. Or you could abstract it further, and have a project for each queue within your ticketing system. </p>
<p><strong>Conclusion</strong><br />
I&#8217;m not suggesting that every form-based application is built in Jira. There are however good reasons where you might want to use Jira &#8211; 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&#8217;t right for you? Don&#8217;t worry &#8211; <a href="http://docs.atlassian.com/software/jira/docs/api/latest/">Jira has a powerful API</a>, which means you can easily import or mashup your data with another system if need be &#8211; you haven&#8217;t locked yourself in!</p>
<p>Further reading: <a href="http://confluence.atlassian.com/display/CONFEVAL/2.+Use+Cases">Jira Use Cases (Atlassian)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sherifmansour.com/?feed=rss2&#038;p=308</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Five insightfull thoughts on the Oracle-Sun Acquisition</title>
		<link>http://blog.sherifmansour.com/?p=339</link>
		<comments>http://blog.sherifmansour.com/?p=339#comments</comments>
		<pubDate>Tue, 21 Apr 2009 13:28:07 +0000</pubDate>
		<dc:creator><![CDATA[Sherif]]></dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Design Tips & Tricks]]></category>
		<category><![CDATA[Development Tips & Tricks]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[Tech News]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.sherifmansour.com/?p=339</guid>
		<description><![CDATA[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 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Big news this week regarding the <a href="http://www.oracle.com/us/corporate/press/018363">Oracle-Sun Acquisition</a>. 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:</p>
<p>1. Matt Mullenweg, Founder of <a href="http://www.wordpress.com">WordPress</a>:<br />
Blog post: <strong><a href="http://ma.tt/2009/04/oracle-and-open-source/">Oracle and Opensource</a></strong></p>
<blockquote><p>&#8220;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.&#8221;</p></blockquote>
<p>2. Jeremy Zawodny,  Ex-Yahoo MySQL Guru, Current employee of <a href="http://en.wikipedia.org/wiki/Craigslist">Craigslist</a>:<br />
Blog post:  <strong><a href="http://jeremy.zawodny.com/blog/archives/011088.html">Oracle Buying Sun: Gets MySQL</a></strong></p>
<blockquote><p>
&#8220;One one of the biggest threats to Oracle&#8217;s core database business (at the low end, at least) for a while now has been MySQL. And now they&#8217;re poised to own MySQL after Sun bought it not long ago.&#8221;<br />
Also Read: <a href="http://jeremy.zawodny.com/blog/archives/010774.html">The New MySQL Landscape</a> </p></blockquote>
<p>3. Erick Schonfeld, <a href="http://www.techcrunch.com">TechCruch</a>:<br />
Blog post: <strong><a href="http://www.techcrunch.com/2009/04/20/oracle-wants-to-be-the-apple-of-the-enterprise-but-it-just-became-ibm/">Oracle Wants To Be The Apple Of The Enterprise, But It Just Became IBM</a></strong></p>
<blockquote><p>&#8220;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.&#8221;</p></blockquote>
<p>4. Rod Johnson, Founder <a href="http://www.springsource.com">Spring Source</a>:<br />
Blog post: <strong><a href="http://blog.springsource.com/2009/04/20/oracle-adds-new-exhibit-to-java-technology-museum/">Oracle Adds New Exhibit to Java Technology Museum</a></strong></p>
<blockquote><p>&#8220;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&#8230;.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.&#8221;</p></blockquote>
<p>5. <a href="http://en.wikipedia.org/wiki/Michael_(Monty)_Widenius">Michael Widenius</a>, Author of the original version of MySQL, founding member of the MySQL AB company:<br />
Blog post: <strong><a href="http://monty-says.blogspot.com/2009/04/to-be-free-or-not-to-be-free.html">To be (free) or not to be (free)</a></strong></p>
<blockquote><p>&#8220;What could be Oracle&#8217;s plan with MySQL? Three different plans come to mind:</p>
<li>They are going to kill MySQL (either directly or by not developing/supporting it fully)</li>
<li>MySQL will get sold of to another entity, either because Oracle doesn&#8217;t want it or becasue of anti-trust laws.</li>
<li>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.</li>
<p>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.&#8221;
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.sherifmansour.com/?feed=rss2&#038;p=339</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Crontab issues with Nano on Ubuntu</title>
		<link>http://blog.sherifmansour.com/?p=328</link>
		<comments>http://blog.sherifmansour.com/?p=328#comments</comments>
		<pubDate>Mon, 23 Mar 2009 22:03:28 +0000</pubDate>
		<dc:creator><![CDATA[Sherif]]></dc:creator>
				<category><![CDATA[Development Tips & Tricks]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[nano]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[vi crontab]]></category>

		<guid isPermaLink="false">http://blog.sherifmansour.com/?p=328</guid>
		<description><![CDATA[Spent a few minutes figuring this one out. I was trying to setup a new cron job. My default editor was nano (yes, that&#8217;s right &#8211; 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, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Spent a few minutes figuring this one out. I was trying to setup a new cron job. My default editor was nano (yes, that&#8217;s right &#8211; not VI!). Every time I tried to save my crontab, I kept getting this error:</p>
<p><code>/tmp/crontab.nQGgD2/crontab"\:1: bad minute<br />
errors in crontab file, can't install. </code></p>
<p>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. </p>
<p>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:</p>
<p><code>sudo nano /etc/nanorc</code></p>
<p>And then remove the comment from the following line, so it looks like this: </p>
<p><code>set nowrap</code></p>
<p>Go back and edit the crontab, and it should work fine now.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sherifmansour.com/?feed=rss2&#038;p=328</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Using PHP SimpleXML to get XML Namespace Elements</title>
		<link>http://blog.sherifmansour.com/?p=302</link>
		<comments>http://blog.sherifmansour.com/?p=302#comments</comments>
		<pubDate>Mon, 16 Feb 2009 23:54:23 +0000</pubDate>
		<dc:creator><![CDATA[Sherif]]></dc:creator>
				<category><![CDATA[Development Tips & Tricks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[rss namespace]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://blog.sherifmansour.com/?p=302</guid>
		<description><![CDATA[PHP has a great SimpleXML library that converts XML to an object that can be processed with normal property selectors and array iterators. I&#8217;ve been using this quite a bit lately to process some XML documents. The library documentation isn&#8217;t that great when it comes to processing Namespace Elements within your XML document. An example [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>PHP has a great <a href="http://au.php.net/manual/en/ref.simplexml.php">SimpleXML library</a> that converts XML to an object that can be processed with normal property selectors and array iterators. I&#8217;ve been using this quite a bit lately to process some XML documents.</p>
<p>The library documentation isn&#8217;t that great when it comes to processing Namespace Elements within your XML document. An example of such use case is when you are parsing an <a href="http://en.wikipedia.org/wiki/RSS">RSS</a> feed that has <a href="http://en.wikipedia.org/wiki/XML_namespace">XML Namespace elements</a>.</p>
<p>Consider the following example:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rss</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;2.0&quot;</span> <span style="color: #000066;">xmlns:opensearch</span>=<span style="color: #ff0000;">&quot;http://a9.com/-/spec/opensearch/1.1/&quot;</span> <span style="color: #000066;">xmlns:dc</span>=<span style="color: #ff0000;">&quot;http://purl.org/dc/elements/1.1/&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
....
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>My Title<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>My Item<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dc:publisher<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>ABC<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dc:publisher<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dc:creator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>DEF<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dc:creator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dc:date<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2009-02-12T16:53:25Z<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dc:date<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  ...
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/channel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/rss<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>For me to access things like the Title and Description elements, its as simple as:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$feed</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://linkto.my.feed&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$xml</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> SimpleXmlElement<span style="color: #009900;">&#40;</span><span style="color: #000088;">$feed</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$xml</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">channel</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">item</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$entry</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$entry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$entry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">description</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>But what if I want to access my namespace elements such as dc:publisher or dc:creator? You would think it &#8216;could&#8217; be as simple as this:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//This doesn't work</span>
<span style="color: #339933;">...</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$xml</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">channel</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">item</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$entry</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$entry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">publisher</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$entry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">creator</span><span style="color: #339933;">;</span>
  <span style="color: #339933;">...</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>The code above doesn&#8217;t work because the publisher and creator elements sit inside different namespaces. So how do we do this? If you recall, the second line of our feed had this:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;">.... xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot;&gt;</pre></td></tr></table></div>

<p>So we know from above that anything in the dc namespace refers this URL: http://purl.org/dc/elements/1.1. Now that we know this, we can easily do this:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$feed</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://linkto.my.feed&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$xml</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> SimpleXmlElement<span style="color: #009900;">&#40;</span><span style="color: #000088;">$feed</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$xml</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">channel</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">item</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$entry</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$entry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$entry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">description</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">//Use that namespace</span>
  <span style="color: #000088;">$dc</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$entry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">children</span><span style="color: #009900;">&#40;</span>‘http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//purl.org/dc/elements/1.1/’);</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$dc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">publisher</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$dc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">creator</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>That would work. Now a cleaner way is to read the namespace URI form the document itself using the <a href="http://uk.php.net/manual/en/function.simplexml-element-getNamespaces.php">getNamespaces</a> method:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">...</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$xml</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">channel</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">item</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$entry</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #339933;">...</span>
  <span style="color: #666666; font-style: italic;">//Use that namespace</span>
  <span style="color: #000088;">$namespaces</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$entry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getNameSpaces</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">//Now we don't have the URL hard-coded</span>
  <span style="color: #000088;">$dc</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$entry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">children</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$namespaces</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'dc'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
  <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$dc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">publisher</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$dc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">creator</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>That&#8217;s it! I found this useful when getting an RSS feed using SimpleXML and wanting to parse the XML Namespace elements.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sherifmansour.com/?feed=rss2&#038;p=302</wfw:commentRss>
		<slash:comments>75</slash:comments>
		</item>
		<item>
		<title>Blog The Web: Most popular posts of 2008</title>
		<link>http://blog.sherifmansour.com/?p=292</link>
		<comments>http://blog.sherifmansour.com/?p=292#comments</comments>
		<pubDate>Sat, 07 Feb 2009 00:41:07 +0000</pubDate>
		<dc:creator><![CDATA[Sherif]]></dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Enterprise 2.0]]></category>
		<category><![CDATA[Social Networking & Collaboration]]></category>
		<category><![CDATA[Tech News]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Wiki Adoption]]></category>

		<guid isPermaLink="false">http://blog.sherifmansour.com/?p=292</guid>
		<description><![CDATA[I&#8217;ve been going through Google Analytics to checkout what people are viewing on this blog. It&#8217;s been interesting to see what the most viewed posts are, and where they are coming from. Here are the top five: 1. Why Mashups = (REST + ‘Traditional SOA’) * Web 2.0 (Over 9,000 views) A post I wrote [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been going through <a href="http://www.google.com/analytics">Google Analytics</a> to checkout what people are viewing on this blog. It&#8217;s been interesting to see what the most viewed posts are, and where they are coming from. Here are the top five:</p>
<p><strong>1. <a href="http://blog.sherifmansour.com/?p=187">Why Mashups = (REST + ‘Traditional SOA’) * Web 2.0</a></strong> <em>(Over 9,000 views)</em><br />
A post I wrote about an overview of Mashups &#8211; what they are, what sources exist, how they work and what I think will be the future of Mashups.</p>
<p><strong>2. <a href="http://blog.sherifmansour.com/?p=248">Get Gmail Mobile 2.0 to work on a Windows HTC Mobile</a></strong> <em>(Over 4,000 views)</em><br />
How to get Gmail Mobile working on a Windows Mobile / HTC handset. </p>
<p><strong>3. <a href="http://blog.sherifmansour.com/?p=34">Top 17 Essential Web Developer Firefox Extensions</a> </strong> <em>(Over 2,000 views)</em><br />
Must-have Firefox Extensions for web developers. </p>
<p><strong>4. <a href="http://blog.sherifmansour.com/?p=149">How to speed up Windows Media Player in Vista</a> </strong><em>(Over 2,000 views)</em><br />
Must be a lot of people facing the same problem I did when I got Vista! Most of these visits coming from Google searches.</p>
<p><strong>5. <a href="http://blog.sherifmansour.com/?p=200">Seven wiki adoption techniques for the enterprise</a></strong> <em>(Over 2,000 views)</em><br />
Last year I did quite a bit of work on our Corporate Wiki (<a href="http://www.atlassian.com/software/confluence/">Confluence</a>), I posted what we observed, things that worked and didn&#8217;t work for Wiki adoption within the enterprise.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sherifmansour.com/?feed=rss2&#038;p=292</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why &#8216;Browse&#8217; is dead and &#8216;Search&#8217; is king</title>
		<link>http://blog.sherifmansour.com/?p=273</link>
		<comments>http://blog.sherifmansour.com/?p=273#comments</comments>
		<pubDate>Fri, 30 Jan 2009 10:20:50 +0000</pubDate>
		<dc:creator><![CDATA[Sherif]]></dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Social Networking & Collaboration]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://blog.sherifmansour.com/?p=273</guid>
		<description><![CDATA[I like clean desktops So the other day I let my wife use my computer&#8230; I know, some of you are already cringing at that thought. Within 10 seconds, she looked at me with defeated frustrated look on her face, &#8216;Bah!&#8217;, She &#8211; &#8220;How do you find what you want on your computer?!&#8221;.&#8221;Easy&#8221;.. I said, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><center><img src="http://blog.sherifmansour.com/wp-content/uploads/2009/01/search_vs_browse.jpg" alt="Search and Browse" title="Search and Browse" width="350" height="67" class="aligncenter size-full wp-image-282" /></center></p>
<p><strong>I like clean desktops</strong><br />
So the other day I let my wife use my computer&#8230; I know, some of you are already cringing at that thought. Within 10 seconds, she looked at me with defeated frustrated look on her face, &#8216;Bah!&#8217;, She &#8211; &#8220;How do you find what you want on your computer?!&#8221;.&#8221;Easy&#8221;.. I said, &#8220;Search!&#8221;.</p>
<p>See, my desktop is generally empty &#8211; it&#8217;s kept to around 5 icons and a few documents that I&#8217;m currently working on (left there temporary). In contrast, my Wife&#8217;s idea of organised is having all 50+ icons on her desktop sorted in an order which she remembers, for example so she roughly knows the program she wants sits in the bottom left corner. Which is fine &#8211; if it works for her&#8230;<br />
<span id="more-273"></span></p>
<p><strong>Dealing with the noise</strong><br />
This got me thinking &#8211; what happens when she has too many icons? That strategy isn&#8217;t really going to work for her. Her windows toolbar already spans 3 columns across the desktop &#8211; so that&#8217;s not going to help either.</p>
<p>So how do I access my programs? I use <a href="http://www.launchy.net/">Launchy</a>. Launchy is a simple <a href="http://en.wikipedia.org/wiki/Command_line_interface">command-line interface tool</a>. It index&#8217;s your start menu, desktop and any folder you want. So if you want something all you have to do is press Alt+space (or whatever short-cut you want) and start to type the first couple of letters of the software or document you are after. Launchy then does an auto-complete and finds all the possible options on your computer.</p>
<p>This is no surprise to Mac users, <a href="http://en.wikipedia.org/wiki/Spotlight_(software)">Spotlight</a> is the Mac desktop search tool (comes with OSx) and comes out-of-the-box. There are many other similar types of tools out there:</p>
<p><a href="http://en.wikipedia.org/wiki/Spotlight_(software)">Spotlight</a> (Mac OSx)<br />
<a href="http://quicksilver.en.softonic.com/mac">Quicksilver</a> (Mac OSx)<br />
<a href="http://www.launchy.net/">Launchy</a><br />
<a href="http://executor.dk/">Executor</a><br />
<a href="http://humanized.com/enso/launcher/">Enso Launcher</a><br />
<a href="http://desktop.google.com/">Google Desktop Search</a><br />
<a href="http://www.microsoft.com/windows/products/winfamily/desktopsearch/default.mspx">Windows Vista &#8216;Startbar search&#8217;</a><br />
&#8230; (the list goes on)</p>
<p>As computer hard-drives grow, and time passes we have more documents and install more software on our machines. Inevitably, this makes it more time consuming to browse and find what you want &#8211; thats when search wins.</p>
<p>I posted a year ago about <a href="http://blog.sherifmansour.com/?p=86">why command-line interfaces (search) were back</a>. The main driving cause of this is the increased quantity of information and resources we have on our desktops. This does not just apply to your desktop &#8211; but also applies to the web.</p>
<p>Take <a href="http://www.gmail.com">Gmail</a> for example. The <a href="http://mail.google.com/support/bin/answer.py?hl=en&#038;answer=10708">concept of folders is non-existent, instead you label then &#8216;archive&#8217; the mail you want</a> &#8211; and search for it later. This might seem like a foreign concept first, but after some time when you build up a lot of emails &#8211; you want to search and not browse.<br />
In Gmail you have the concept of tags/labels. Tags helps narrow your search down and allows you to associate an email with multiple topics or <a href="http://en.wikipedia.org/wiki/Taxonomy">taxonomies</a>. You might still search for a tag, or search for content that is for a specific tag &#8211; either way you need search.</p>
<p>Long-gone are the days of Internet website &#8216;directories&#8217;. Remember them?! They died &#8211; there is now too much information for us to just browse.</p>
<p><strong>So is browse really dead?</strong><br />
No. I just said that to get your attention. When you think about it &#8211; you will always have to browse when you search (you browse through the search results). You will also need browse when you want to discover new content. You don&#8217;t know what you want &#8211; so have a look around.</p>
<p>In both these scenarios, I believe browse still has be a good use case. The important thing to note here is that *usually* search would come first (to narrow-down what you are going to browse) &#8211; then browse second.</p>
<p><strong>Conclusion</strong><br />
If you know what you want, or you want to shrink the quantity of information you are browsing you need search. Search is a must faster way of accessing information when you have large quantities of data, documents or whatever it is you are after.</p>
<p>There is still a good use case for browse. These namely are for discovering new content, popular content or recommendations. In such a case, you still might search, then drill-down to browse.</p>
<p>I&#8217;d like to finish with an awesome quote I heard Eric Schmit, CEO of Google saying when asked &#8211; whats next, now that you solved the problem of search. He said something along the lines of &#8220;..well, search isn&#8217;t solved yet. At the moment, a user searches for what they want and then we give them the results. We will solve it once we know what they want &#8211; before they do&#8221;.</p>
<p>Search is king.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sherifmansour.com/?feed=rss2&#038;p=273</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
