<?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>Jeez Tech &#187; Service</title>
	<atom:link href="http://jeez.eu/tag/service/feed/" rel="self" type="application/rss+xml" />
	<link>http://jeez.eu</link>
	<description>Jeez Aggressive Technology</description>
	<lastBuildDate>Mon, 24 May 2010 13:41:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='jeez.eu' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>Wordpress Certified Consultants And How To Become One</title>
		<link>http://jeez.eu/2009/11/30/wordpress-certified-consultants-and-how-to-become-one/</link>
		<comments>http://jeez.eu/2009/11/30/wordpress-certified-consultants-and-how-to-become-one/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 20:32:25 +0000</pubDate>
		<dc:creator>Kerasiotis Vasileios</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://jeez.eu/?p=937</guid>
		<description><![CDATA[Six months ago, Automatic, the company behind Wordpress created codepoet.com which is a directory of WordPress consultants. Automatic [...]]]></description>
			<content:encoded><![CDATA[<p>Six months ago, Automatic, the company behind Wordpress created <a title="CodePoet" rel="nofollow" href="http://codepoet.com/" target="_blank">codepoet.com</a> which is a directory of WordPress consultants. Automatic describes the directory as:</p>
<blockquote><p>As the largest operator of WordPress blogs (over 10 million and counting), we receive a steady stream of requests from people looking for WordPress savvy web design and software development firms. In response we’ve started CodePoet, a directory of consultants who specialize in building beautiful and efficient WordPress sites.</p></blockquote>
<div id="attachment_942" class="wp-caption alignnone" style="width: 610px"><img class="size-large wp-image-942" title="codepoet" src="http://jeez.eu/wp-content/uploads/2009/11/codepoet-600x256.png" alt="codepoet" width="600" height="256" /><p class="wp-caption-text">CodePoet</p></div>
<p>So it actually raises attention to people and companies specialized on Wordpress development and websites creation. This new directory is a great way for you to promote your Wordpress related business and if combined good with the WP Pro mailing list and Wordpress Jobs Board, it can actually bring in a lot of opportunities.</p>
<h3>How To Become One</h3>
<p>Automatic says that in order to apply for listing you need to provide some info about:</p>
<ul>
<li>The name, country and primary language of your firm</li>
<li>A sentence no more than 12 words to describe your business</li>
<li>A link to a page that describes the WordPress related services you provide</li>
<li>Samples of your WordPress work</li>
<li>References</li>
</ul>
<p>The first 3 points are obvious and there is no need for explanation. The last 2 points though can surely be covered in this post. What kind of samples and what references could be used?</p>
<div id="attachment_943" class="wp-caption alignnone" style="width: 610px"><img class="size-large wp-image-943" title="creativeg" src="http://jeez.eu/wp-content/uploads/2009/11/creativeg-600x249.png" alt="creativeg" width="600" height="249" /><p class="wp-caption-text">Creativeg</p></div>
<p>Last month, a close friend of mine, Vasilis Kanonidis and his team, <a title="CreativeG" rel="nofollow" href="http://www.creativeg.gr" target="_blank">CreativeG</a>, managed to become the first Wordpress certified consultants in Greece and I thought that he would be the right person to explain what you need and how you can become certified.</p>
<p>Vasilis told us that the process took a significant amount of time in order for creativeg to get into the codepoet directory. The timing was bad because they happened to apply for certification during the time that most of the attention is on the new Wordpress version. Vasilis says that to be listed on codepoet.com you need to have some good references that will prove your Wordpress development skills. Any Wordpress related project is a good reference.</p>
<p>References could be :</p>
<ul>
<li>Websites built with Wordpress</li>
<li>Wordpress plugins</li>
<li>Themes</li>
<li>Good knowledge of the Wordpress API</li>
</ul>
<p>At the time spoken, Creativeg has developed more than 15 Wordpress powered websites, 3 plugins and 2 themes freely available. Some references from customers were also provided to Automatic in order to verify the integrity of our application. If you have written any Wordpress related tutorials could also count in as a good reference.</p>
<p>When I asked Vasilis what the benefits of this listing are, he told me that it is a great way of promoting his job. People that visit codepoet.com are mainly looking for people who are specialized in Wordpress development so being listed there is a great way to shout a &#8220;Hello my name is Vasilis and I develop with Wordpress&#8221;.</p>
<p>What is next for Creativeg? More Wordpress and other Automatic products related services, plugins and themes.  Creativeg is the team behind <a title="WordCamp.gr" rel="nofollow" href="http://wordcamp.gr/" target="_blank">WordCamp.gr</a> which is an effort to organize Wordpress events and camps in Greece, <a title="WpFav.gr" rel="nofollow" href="http://wpfav.gr/" target="_blank">Wpfav.gr</a> a Wordpress related bookmarking site and <a title="WpGreece" rel="nofollow" href="http://www.wpgreece.gr/" target="_blank">WpGreece.gr</a> which is a showcase gallery of Wordpress designs from Greek designers.</p>
<p><a href="http://jeez.eu/wp-content/uploads/2009/11/wordpress.png" rel="lightbox[937]"><img class="alignnone size-full wp-image-944" title="wordpress" src="http://jeez.eu/wp-content/uploads/2009/11/wordpress.png" alt="wordpress" width="506" height="153" /></a></p>
<p>Concluding, Vasilis summarizes what it needs to become a certified Wordpress consultant in 3 parts:</p>
<p><strong>1) Study it</strong></p>
<p>Wordpress is one of the most documented software packages out there. If you study the API and manage to get a good grip on it, then developing with Wordpress is something easy and fun.</p>
<p><strong>2) Use it</strong></p>
<p>Use Wordpress as much as you can. Wordpress is not just a blog. You can create nearly anything with it so use it all the way. Create something unique that will use Wordpress in a new way.</p>
<p><strong>3) Sell it</strong></p>
<p>Wordpress has good business potentials. Try to think of Wordpress as a tool that will pay back in the future. Provide services that are so professional that will bring money and visibility.</p>
<img src="http://jeez.eu/?ak_action=api_record_view&id=937&type=feed" alt="" /><p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjeez.eu%2F2009%2F11%2F30%2Fwordpress-certified-consultants-and-how-to-become-one%2F&amp;linkname=Wordpress%20Certified%20Consultants%20And%20How%20To%20Become%20One"><img src="http://jeez.eu/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jeez.eu/2009/11/30/wordpress-certified-consultants-and-how-to-become-one/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using APIs With PHP? Here Are Your Classes</title>
		<link>http://jeez.eu/2009/11/23/using-apis-with-php-here-are-your-classes/</link>
		<comments>http://jeez.eu/2009/11/23/using-apis-with-php-here-are-your-classes/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 19:04:13 +0000</pubDate>
		<dc:creator>Kerasiotis Vasileios</dc:creator>
				<category><![CDATA[Services]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Libraries]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Social Media]]></category>

		<guid isPermaLink="false">http://jeez.eu/?p=883</guid>
		<description><![CDATA[Do you want to use an API but you are too lazy to write your own code to [...]]]></description>
			<content:encoded><![CDATA[<p>Do you want to use an API but you are too lazy to write your own code to handle the requests? If you code in PHP as I do, then you will definitely need these classes. By using the classes listed here you will be able of using a great number of web services with an easy and documented way.</p>
<h3><a title="PEAR Web Services" rel="nofollow" href="http://pear.php.net/packages.php?catpid=23&amp;catname=Web+Services" target="_blank">PEAR</a></h3>
<p>We couldn&#8217;t write a post about PHP classes without PEAR. PEAR  stands for &#8220;PHP Extension and Application Repository&#8221; and the Web Services category is the place to get ready made classes for:</p>
<ul>
<li>Akismet</li>
<li>Amazon</li>
<li>Blogging</li>
<li>Compete</li>
<li>Delicious</li>
<li>Digg</li>
<li>eBay</li>
<li>Facebook</li>
<li>Google</li>
<li>Twitter</li>
<li>Yahoo</li>
<li>Youtube</li>
</ul>
<p>and many more.</p>
<p>Even though PEAR is a great resource for web services related classes, sometimes you might want to use another class that doesn&#8217;t rely on PEAR to do the job or a more sophisticated one. The list that follows has PHP classes for different web services.</p>
<h3>Alexa</h3>
<ul>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/4749.html" target="_blank">Alexa Web Information Service</a></li>
<li><a rel="nofollow" href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=402&amp;categoryID=34" target="_blank">Example Use of Web Information</a></li>
<li><a rel="nofollow" href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=407&amp;categoryID=32" target="_blank">Example Use of Topsites</a></li>
</ul>
<h3>Amazon</h3>
<ul>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/642.html" target="_blank">Amazon API</a></li>
</ul>
<h3>Babelfish</h3>
<ul>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/2383.html" target="_blank">Babelfish Translator</a></li>
</ul>
<h3>Bit.ly</h3>
<ul>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/5151.html" target="_blank">Bit.ly URL Shortening Service PHP library</a></li>
</ul>
<h3>Bing</h3>
<ul>
<li><a rel="nofollow" href="http://www.softpedia.com/get/Programming/Other-Programming-Files/Bing-API-PHP.shtml" target="_blank">Bing API 1.1</a></li>
<li><a rel="nofollow" href="http://routecafe.com/posts/bing-api-php.moccha" target="_blank">Mocha Bing API</a></li>
<li><a rel="nofollow" href="http://bingapiphp.codeplex.com/" target="_blank">Bing API on codeplex</a></li>
</ul>
<h3>DeviantArt</h3>
<ul>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/5498.html" target="_blank">Retrieve Gallery Images</a></li>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/5005.html" target="_blank">Feed Parser</a></li>
</ul>
<h3>Digg</h3>
<ul>
<li> <a rel="nofollow" href="http://www.rawseo.com/news/2009/05/06/how-to-use-the-digg-api/" target="_blank">Digg API Class</a></li>
</ul>
<h3>Drop.io</h3>
<ul>
<li><a rel="nofollow" href="http://github.com/dropio/dropio-php" target="_blank">Drop.io PHP Class</a></li>
</ul>
<h3>eBay</h3>
<ul>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/4970.html" target="_blank">eBay Data Retrieval</a></li>
</ul>
<h3>Facebook</h3>
<ul>
<li><a rel="nofollow" href="http://www.phpclasses.org/browse/package/4977.html" target="_blank">Facebook Notification Class</a></li>
<li><a rel="nofollow" href="http://www.stylephp.com/2009/03/20/a-php-class-for-facebook-application-developer/" target="_blank">Facebook Application Developer</a></li>
<li><a rel="nofollow" href="http://wiki.developers.facebook.com/index.php/PHP" target="_blank">Facebook Official PHP Class</a></li>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/5642.html" target="_blank">Inbox Handler</a></li>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/5685.html" target="_blank">Open Inviter</a></li>
</ul>
<h3>Feeds</h3>
<ul>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/2976.html" target="_blank">Feed Validator</a></li>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/2582.html" target="_blank">Feedburner</a></li>
</ul>
<h3>Flickr</h3>
<ul>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/2584.html" target="_blank">Flickr API</a></li>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/3123.html" target="_blank">Flickr Parser</a></li>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/5573.html" target="_blank">Flickr Wrapper</a></li>
<li><a rel="nofollow" href="http://phpflickr.com/" target="_blank">phpFlickr</a></li>
</ul>
<h3>FriendFeed</h3>
<ul>
<li><a rel="nofollow" href="http://friendfeed-api.googlecode.com/files/friendfeed-api-v1.tar.gz" target="_blank">FriendFeed API</a> (Deprecated. Libs for PHP use the v1 API)</li>
</ul>
<h3>Google</h3>
<ul>
<li><a rel="nofollow" href="http://framework.zend.com/download/gdata" target="_blank">Zend Google Data APIs</a></li>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/5802.html" target="_blank">Charts</a></li>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/5729.html" target="_blank">Calendar</a></li>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/2602.html" target="_blank">Maps</a></li>
</ul>
<h3>Gravatar</h3>
<ul>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/4227.html" target="_blank">Gravatar API</a></li>
</ul>
<h3>ICQ</h3>
<ul>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/3843.html" target="_blank">ICQ Checker</a></li>
</ul>
<h3>Last.fm</h3>
<ul>
<li><a rel="nofollow" href="http://www.matto1990.com/projects/phplastfmapi/" target="_blank">PHP Last.fm API</a></li>
<li><a rel="nofollow" href="http://lastfm.felixbruns.de/php-last.fm-api/" target="_blank">Felix Brun&#8217;s PHP Lib</a></li>
</ul>
<h3>LinkedIn</h3>
<ul>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/4107.html" target="_blank">LinkmeIn</a></li>
</ul>
<h3>MSN</h3>
<ul>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/3841.html" target="_blank">MSN Checker</a></li>
</ul>
<h3>Prowl</h3>
<ul>
<li><a rel="nofollow" href="http://github.com/Fenric/ProwlPHP/tree/master" target="_blank">Prowl</a></li>
</ul>
<h3>reCAPTCHA</h3>
<ul>
<li><a rel="nofollow" href="http://recaptcha.googlecode.com/files/recaptcha-php-1.10.zip" target="_blank">reCaptcha PHP Library</a></li>
</ul>
<h3>Skype</h3>
<ul>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/3842.html" target="_blank">Skype Checker</a></li>
</ul>
<h3>Twitter</h3>
<ul>
<li><a title="Twitter PHP class" rel="nofollow" href="http://twitter.slawcup.com/twitter.class.phps" target="_blank">Twitter PHP Class</a></li>
<li><a title="php-twitter" rel="nofollow" href="http://code.google.com/p/php-twitter/" target="_blank">php-twitter</a></li>
<li><a rel="nofollow" href="http://www.phpclasses.org/browse/package/4075.html" target="_blank">My Twitter</a></li>
<li><a rel="nofollow" href="http://github.com/jdp/twitterlibphp" target="_blank">TwitterLib</a></li>
<li><a rel="nofollow" href="http://lab.arc90.com/2008/06/03/php-twitter-api-client/" target="_blank">Twitter Client</a></li>
<li><a rel="nofollow" href="http://www.haughin.com/code/twitter/" target="_blank">CodeIgniter Twitter Lib</a></li>
<li><a rel="nofollow" href="http://github.com/jmathai/twitter-async" target="_blank">Twitter Async</a></li>
</ul>
<h3>Various Networks</h3>
<ul>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/5438.html" target="_blank">Contacts Importer from email accounts</a></li>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/4927.html" target="_blank">Open Inviter</a></li>
</ul>
<h3>Yahoo</h3>
<ul>
<li><a rel="nofollow" href="http://phpclasses.evecorp.tk/browse/package/4279.html" target="_blank">Messenger</a></li>
<li><a rel="nofollow" href="http://github.com/yahoo/yos-social-php/zipball/master" target="_blank">Social APIs PHP SDK</a></li>
</ul>
<img src="http://jeez.eu/?ak_action=api_record_view&id=883&type=feed" alt="" /><p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjeez.eu%2F2009%2F11%2F23%2Fusing-apis-with-php-here-are-your-classes%2F&amp;linkname=Using%20APIs%20With%20PHP%3F%20Here%20Are%20Your%20Classes"><img src="http://jeez.eu/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jeez.eu/2009/11/23/using-apis-with-php-here-are-your-classes/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Decrypting Bit.ly Links on Twitter and Not Only</title>
		<link>http://jeez.eu/2009/11/19/decrypting-bit-ly-links-on-twitter-and-not-only/</link>
		<comments>http://jeez.eu/2009/11/19/decrypting-bit-ly-links-on-twitter-and-not-only/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 20:57:55 +0000</pubDate>
		<dc:creator>Kerasiotis Vasileios</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://jeez.eu/?p=878</guid>
		<description><![CDATA[Although URL shorteners are something we can&#8217;t live without, there are many times that we would like to [...]]]></description>
			<content:encoded><![CDATA[<p>Although URL shorteners are something we can&#8217;t live without, there are many times that we would like to know which link is under the cryptic hash string. There are many times that spammers use multiple shortened links to hide their purposes. Yesterday a tweet came into my attention where the user had a spam link hidden under a bit.ly URL.  Personally, I like to know what I will see when I click on a short link. So, I created a bookmarklet that decrypts Bit.ly links using the same API that created them.</p>
<p><a title="Bit.ly" href="http://bit.ly" target="_blank">Bit.ly</a> provides an excellent API that we can use to shorten our links programmatically. It also provides a method to <a title="Expand Short Link" href="http://code.google.com/p/bitly-api/wiki/ApiDocumentation#/expand" target="_blank">expand</a> an already shortened link. This is the method we will use to decrypt all bit.ly links on Twitter (it works on any page but it is Twitter that we most use ;) ).</p>
<p>It is nothing special, just 35 lines of code that will transform these small but cryptic links :</p>
<p><a href="http://jeez.eu/wp-content/uploads/2009/11/before.png" rel="lightbox[878]"><img class="alignnone size-large wp-image-879" title="before" src="http://jeez.eu/wp-content/uploads/2009/11/before-527x600.png" alt="before" width="527" height="600" /></a></p>
<p>to these informative and more attractive to click on links:</p>
<p><a href="http://jeez.eu/wp-content/uploads/2009/11/after.png" rel="lightbox[878]"><img class="alignnone size-large wp-image-880" title="after" src="http://jeez.eu/wp-content/uploads/2009/11/after-523x600.png" alt="after" width="523" height="600" /></a></p>
<h3><a title="Drag this to your bookmarks" href="javascript:(function(){var%20e=document.createElement('script');d=document;e.setAttribute('type','text/javascript');e.setAttribute('src','http://seotests.writer.gr/twitbox/book.js');d.body.appendChild(e)})()" target="_blank">The Bookmarklet</a></h3>
<p>Again, nothing special. Just a function that appends a script element on the page<a href="http://seotests.writer.gr/twitbox/book.js" target="_blank"> to this file</a>.</p>
<h3>The book.js file</h3>
<p>We need to get all links on the page and if the href value contains &#8220;bit.ly&#8221;. Then, we assign an id value to all links we found. This id will be used later to assign the correct href value to each link:</p>
<pre class="brush: jscript;">var as = document.getElementsByTagName(&quot;a&quot;);
for(var i=0; i&lt;as.length; i++) {
 var a = as[i];
 if(a.href.indexOf(&quot;bit.ly&quot;)&gt;=0){
 //set the id based on the hash
 var newid = /bit\.ly\/(.*)/i.exec(a.href);
 if(newid[1]){
 a.id = newid[1];
 getLink(a.href);
 }
 }
}</pre>
<p>Next we need to create the function that will call the bit.ly API. Please notice the use of the callback parameter &#8220;bb&#8221;. This will allow us to handle the API response. Also notice that in my code I use the demo API key which might do the job but it would be better if you used your own key.</p>
<p>This function creates a script element and appends it to the head section of the page. This makes the API call to be executed:</p>
<pre class="brush: jscript;">function getLink(theurl,theid){
 var url = &quot;http://api.bit.ly/expand?version=2.0.1&amp;shortUrl=&quot;+theurl+&quot;&amp;login=bitlyapidemo&amp;apiKey=R_0da49e0a9118ff35f52f629d2d71bf07&amp;callback=bb&quot;;
 var x = document.createElement('script')
 x.src = url
 document.getElementsByTagName('head')[0].appendChild(x);
}</pre>
<p>The next thing to do is to create the &#8220;bb&#8221; function that will do the trick. We go through the &#8220;a&#8221; elements on the page and if the href attribute contains &#8220;bit.ly&#8221; then we swap the link text with the expanded URL we got from bit.ly and we also change the href value:</p>
<pre class="brush: jscript;">var bb = function(e){
 var as = document.getElementsByTagName(&quot;a&quot;);
 for(var i=0; i&lt;as.length; i++) {
 var a = as[i];
 if(a.href.indexOf(&quot;bit.ly&quot;)&gt;=0){
 if(a.id){
 a.href = e.results[a.id].longUrl;
 a.innerHTML = a.href;
 }
 }
 }
}</pre>
<p>That&#8217;s it! Now each time you click on the bookmarklet, all bit.ly links will be decrypted. I hope you find this useful as I did.</p>
<img src="http://jeez.eu/?ak_action=api_record_view&id=878&type=feed" alt="" /><p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjeez.eu%2F2009%2F11%2F19%2Fdecrypting-bit-ly-links-on-twitter-and-not-only%2F&amp;linkname=Decrypting%20Bit.ly%20Links%20on%20Twitter%20and%20Not%20Only"><img src="http://jeez.eu/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jeez.eu/2009/11/19/decrypting-bit-ly-links-on-twitter-and-not-only/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SocialWhale AKA &#8220;How Twitter Should Be&#8221;</title>
		<link>http://jeez.eu/2009/11/17/socialwhale-aka-how-twitter-should-be/</link>
		<comments>http://jeez.eu/2009/11/17/socialwhale-aka-how-twitter-should-be/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 20:07:22 +0000</pubDate>
		<dc:creator>Kerasiotis Vasileios</dc:creator>
				<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Social Whale]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://jeez.eu/?p=854</guid>
		<description><![CDATA[I love Twitter. It is one of the most useful tools and a great source of information for [...]]]></description>
			<content:encoded><![CDATA[<p>I love Twitter. It is one of the most useful tools and a great source of information for a great number of topics. Either you are interested in celebrities and goship or development news, if you want to stay in touch with your friends or just promote your job, Twitter is a great way to do it. Even though being a great tool, Twitter lacks some user friendliness IMHO.</p>
<p>Twitter lacks some basic functionality that could really make it&#8217;s users life easier:</p>
<ul>
<li>The lack of retweet buttons (<a title="Twitter's New RT Buttons" rel="nofollow" href="http://jeez.eu/2009/11/15/twitters-new-rt-buttons/" target="_blank">Twitter added this feature some days ago</a>)</li>
<li>Not being able to follow / unfollow someone directly from the timeline</li>
<li>The plain simple textarea box with no shortcuts to major text editing options</li>
</ul>
<p>are just some of the features that Twitter developers should reconsider adding to it. Thank god, Twitter provides a great API which made developing clients like <a title="Social Whale" rel="nofollow" href="http://socialwhale.com" target="_blank">SocialWhale</a> possible.</p>
<h3>What is Social Whale?</h3>
<p><a href="http://jeez.eu/wp-content/uploads/2009/11/social-whale-logo.png" rel="lightbox[854]"><img class="alignnone size-full wp-image-855" title="social-whale-logo" src="http://jeez.eu/wp-content/uploads/2009/11/social-whale-logo.png" alt="social-whale-logo" width="278" height="85" /></a></p>
<p>Social Whale is a privately funded start up from Greece. Founded in 2009, Social Whale tries to create an extended version of Twitter, where more advanced Twitter users can find more features than on classic Twitter. The project tries to create a Twitter API clone and  extend it so that other Twitter clients will be able to collaborate with it too.</p>
<p>Social Whale is currently on a beta stage and you need to get invited in order to use the service. You can get invited either by following <a title="Follow SocialWhale on Twitter" rel="nofollow" href="http://twitter.com/SocialWhale" target="_blank">@SocialWhale</a> on Twitter or by kindly asking a beta tester to invite you. We have 3 invites which we would be happy to give to anyone interested.</p>
<h3>How is Social Whale better than Twitter?</h3>
<p>Well, Social Whale is better because it provides most of Twitter&#8217;s missing features. One drawback is that it is bound by <a title="Twitter API limits" rel="nofollow" href="http://apiwiki.twitter.com/Rate-limiting" target="_blank">Twitter&#8217;s API limits</a> but most of us (regular usage) will not notice it. Would you like to see what Social Whale does better than Twitter? The screenshot bellow will list some of them:</p>
<p><a href="http://jeez.eu/wp-content/uploads/2009/11/features1.png" rel="lightbox[854]"><img class="alignnone size-large wp-image-858" title="features1" src="http://jeez.eu/wp-content/uploads/2009/11/features1-600x399.png" alt="features1" width="600" height="399" /></a></p>
<p>Here is an analysis of the features:</p>
<h4>1,2) The Status Box re-invented</h4>
<p>This is not the typical Twitter status box. As you can see, there is a bar of buttons beneath it. Starting from left to right, we have:</p>
<ul>
<li><strong>Insert Image Button</strong><br />
By clicking this button you can upload an image on <a title="Twitpic" rel="nofollow" href="http://twitpic.com/" target="_blank">Twitpic</a> and use the URL generated from the service in your tweet without going around browser tabs to do it.</li>
<li><strong>Insert Special Char Button</strong><br />
This one allows you to insert special chars (eg: ✽) in your tweets <a title="Enhance your tweets" rel="nofollow" href="http://thenextweb.com/2008/09/16/twitterkeys-enhance-your-twitter-conversations/" target="_blank">as described here</a>.</li>
<li><strong>Shorten All URLs Button</strong><br />
On the fly URL shortening. No need to go to external sites to shorten an URL in order to not exceed the 140 chars limit. Just click the button and all URLs in the Status box will be shortened at once, leaving valuable chars space left for your text.</li>
<li><strong>Post to Groups Button</strong><br />
Groups is a Social Whale feature where you can assign your tweets. More on Groups later in this article.</li>
<li><strong>Check Spelling Button</strong><br />
English, German, Italian, French, Finnish, Swedish and Greek languages are supported.</li>
</ul>
<h4>3) The Update Button</h4>
<p>This is the typical Update button that you know from Twitter. The only difference is that it allows you to post something if it exceeds 140 chars. If the tweet includes a full URL, Social Whale will try to shorten it and then it tries to post to Twitter.</p>
<h4>4) New Tweets Message</h4>
<p>Anytime a new tweet is posted, this message informs you about the number of new tweets. It is not needed to click on it for new tweets to appear though. A visual clue about new tweets is displayed (6).</p>
<h4>5) Timeline Select</h4>
<p>You can choose which timeline to view with this select box. There are currently 4 major timelines to follow. These are:</p>
<ul>
<li>Friends Timeline</li>
<li>Groups published</li>
<li>Groups recent</li>
<li>User Lists<br />
This one allows you to view a the timeline of a list you follow. It lists all your lists and the ones you follow.</li>
</ul>
<h4>6) New Tweets clue</h4>
<p>A visual clue for new tweets.</p>
<h4>7) Groups</h4>
<p>Groups is a special Social Whale feature. It assigns tweets on groups based on&#8230;(Info from the developers needed)</p>
<h4>8) Hash Tags Definitions</h4>
<p>Each time a hash tag is available on a tweet, a blue icon appears on which when you mouse over, a tooltip appears where you can find a small definition about the tag and statistics.</p>
<h4>9) API Usage Stats</h4>
<p>A panel where API usage information is displayed. You can leverage the API usage by choosing update intervals.</p>
<h4>10) People Search</h4>
<p>A checkbox which once checked, will turn the search box into a people search box.</p>
<h3>Wait, there&#8217;s more</h3>
<p>Social Whale is more than that. More features are there for you to use. Do you miss your saved searches and trending topics? Just click on the search box:</p>
<p><a href="http://jeez.eu/wp-content/uploads/2009/11/savedsearches.png" rel="lightbox[854]"><img class="alignnone size-full wp-image-860" title="savedsearches" src="http://jeez.eu/wp-content/uploads/2009/11/savedsearches.png" alt="savedsearches" width="172" height="206" /></a></p>
<p>Do you want to check new followers and quitters? Hover your followers link:<br />
<a href="http://jeez.eu/wp-content/uploads/2009/11/quiters.png" rel="lightbox[854]"><img class="alignnone size-full wp-image-861" title="quiters" src="http://jeez.eu/wp-content/uploads/2009/11/quiters.png" alt="quiters" width="232" height="62" /></a></p>
<p>Retweeting in Social Whale is as simple as clicking a button, revising the tweet to be retweeted and click Update:</p>
<p><a href="http://jeez.eu/wp-content/uploads/2009/11/rt1.png" rel="lightbox[854]"><img class="alignnone size-full wp-image-862" title="rt" src="http://jeez.eu/wp-content/uploads/2009/11/rt1.png" alt="rt" width="572" height="89" /></a></p>
<h3>A Twitter Client or Something Bigger?</h3>
<p><a href="http://jeez.eu/wp-content/uploads/2009/11/identica.png" rel="lightbox[854]"><img class="alignnone size-full wp-image-864" title="identica" src="http://jeez.eu/wp-content/uploads/2009/11/identica.png" alt="identica" width="537" height="148" /></a></p>
<p>Social Whale can be set to :</p>
<ul>
<li>Post to and collaborate with other networks like:
<ul>
<li>Facebook</li>
<li>FriendFeed</li>
<li>Identi.ca</li>
<li>Youtube</li>
<li>Digg</li>
<li>Flickr</li>
<li>MySpace</li>
<li>Blogger</li>
<li>LinkedIn</li>
<li>Google</li>
<li>Picasa</li>
</ul>
</li>
<li>Shorten URLs with one of the 12 URL shortening services.</li>
</ul>
<p><a href="http://jeez.eu/wp-content/uploads/2009/11/settings.png" rel="lightbox[854]"><img class="alignnone size-large wp-image-863" title="settings" src="http://jeez.eu/wp-content/uploads/2009/11/settings-600x433.png" alt="settings" width="600" height="433" /></a></p>
<img src="http://jeez.eu/?ak_action=api_record_view&id=854&type=feed" alt="" /><p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjeez.eu%2F2009%2F11%2F17%2Fsocialwhale-aka-how-twitter-should-be%2F&amp;linkname=SocialWhale%20AKA%20%26%238220%3BHow%20Twitter%20Should%20Be%26%238221%3B"><img src="http://jeez.eu/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jeez.eu/2009/11/17/socialwhale-aka-how-twitter-should-be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4 Website Thumbnails Generators With An API To Use</title>
		<link>http://jeez.eu/2009/11/16/4-website-thumbnails-generators-with-an-api-to-use/</link>
		<comments>http://jeez.eu/2009/11/16/4-website-thumbnails-generators-with-an-api-to-use/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 20:32:48 +0000</pubDate>
		<dc:creator>Kerasiotis Vasileios</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://jeez.eu/?p=843</guid>
		<description><![CDATA[Yesterday, I was trying to add automatic website thumbnails generation on an aggregator site I am working on [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, I was trying to add automatic website thumbnails generation on an aggregator site I am working on (just like on DZone) and I did a little research to find some services that provide an API and to test their services on a quality, speed and pricing policy basis. I managed to find 4 services that really do the job and some of them are already available as plugins for Wordpress, Drupal and other popular software packages.</p>
<h3>1) <a title="ShrinkTheWeb" rel="nofollow" href="http://www.shrinktheweb.com/" target="_blank">ShrinkTheWeb</a></h3>
<div class="mceTemp">
<dl id="attachment_846" class="wp-caption " style="width: 550px;">
<dt><a href="http://jeez.eu/wp-content/uploads/2009/11/shrinktheweb.png" rel="lightbox[843]"><img title="shrinktheweb" src="http://jeez.eu/wp-content/uploads/2009/11/shrinktheweb.png" alt="shrinktheweb" width="540" height="280" /></a></dt>
<dd>ShrinkTheWeb</dd>
</dl>
</div>
<p>ShrinkTheWeb is a free, easy to use and a high limits screenshots service that comes with great documentation and sample uses of the service to get you started at once. With this service, you can:</p>
<ul>
<li>Update screenshots if they are old. 5.000 updates per month</li>
<li>250.000 requests per month</li>
<li>Top level and sub domain captures</li>
<li>You have 6 sizes to choose from</li>
</ul>
<p>As soon as you have registered with the service and logged in, there is a control panel for you with sample code on how to use the service, statistics about your usage of the service and links to available plugins and code to download and create your own service!</p>
<p><strong>Sizes</strong></p>
<p>Available sizes in the free plan are (bold text is the code to use with the API):</p>
<ul>
<li>75 x 56 &#8211; <strong>mcr</strong></li>
<li>90 x 67 &#8211; <strong>tny</strong></li>
<li>120 x 90 &#8211; <strong>sm</strong></li>
<li>200 x 150 &#8211; <strong>lg</strong></li>
<li>320 x 240 &#8211; <strong>xlg</strong></li>
</ul>
<p>You get custom sizes and more options if you get the PRO plan.</p>
<p><strong>Plugins</strong></p>
<p>The service is available as a plugin for popular software like Drupal, vBulletin and Wordpress. There is also a Django plugin and ready PHP5 and PHP4 classes for you to use. <a title="ShrinkTheWeb plugins" rel="nofollow" href="http://www.shrinktheweb.com/shrinktheweb-plugins.htm" target="_blank">This page here</a> is the place to go and get them.</p>
<p><strong>API</strong></p>
<p>The easiest way to use the API is by passing your API key inside the src value of a IMG tag:</p>
<pre class="brush: xml;">&lt;img src='http://www.shrinktheweb.com/xino.php?embed=1&amp;STWAccessKeyId=YOUR_KEY&amp;stwsize=sm&amp;stwUrl=http://www.bing.com'&gt;</pre>
<p>No problem if your API key shows up anywhere, since it only works with the URL you set in your control panel.</p>
<p>Here is a <a title="ShrinkTheWeb Demo" rel="nofollow" href="http://seotests.writer.gr/snapshots/shrinktheweb.php?url=jeez.eu" target="_blank">use of the service</a>.</p>
<h3>2) <a title="WebSnapr" rel="nofollow" href="http://www.websnapr.com/" target="_blank">websnapr 2.0</a></h3>
<div id="attachment_844" class="wp-caption alignnone" style="width: 610px"><a href="http://jeez.eu/wp-content/uploads/2009/11/websnapr.png" rel="lightbox[843]"><img class="size-large wp-image-844" title="websnapr" src="http://jeez.eu/wp-content/uploads/2009/11/websnapr-600x254.png" alt="websnapr" width="600" height="254" /></a><p class="wp-caption-text">WebSnapr 2.0</p></div>
<p>WebSnapr is one of the best services around. Not only it allows 100.000 screenshots per month with an API key, it allows you to use the service without a key too, and you can get up to 80 screenshots per hour!!! Websnapr can export thumbnails in 2 sizes when used as a free service and puts a branding on the snapshot.</p>
<p><strong>Sizes</strong></p>
<p>The sizes are:</p>
<ul>
<li>90 x 70 &#8211; <strong>T</strong> and</li>
<li>202 x 152 &#8211; <strong>S</strong></li>
</ul>
<p>There are more sizes available on paid plans ranging from 90 x 70 to 1024 x 768, you can also change the branding on the snapshot with your own text if you use the premium plan.</p>
<p><strong>Plugins</strong></p>
<p>There are also a lot of ready made plugins and uses of the service for you to use. There are Wordpress, Drupal, Blogger and Windows Live Writer <a title="WebSnapr plugins" rel="nofollow" href="http://www.websnapr.com/implementations/" target="_blank">plugins available here</a>.</p>
<p><strong>API</strong></p>
<p>In order to use the API, all you have to do is <a title="Register with websnapr" rel="nofollow" href="http://www.websnapr.com/#register" target="_blank">register with the service</a> and get an API key. Then you will be able to use the service like this:</p>
<pre class="brush: xml;">http://images.websnapr.com/?size=S&amp;key=key&amp;url=jeez.eu</pre>
<p>Here is a <a title="WebSnapr Demo" rel="nofollow" href="http://seotests.writer.gr/snapshots/websnapr.php" target="_blank">demo use of the API</a>.</p>
<h3>3) <a title="Thumbalizr" rel="nofollow" href="http://www.thumbalizr.com/index.php" target="_blank">Thumbalizr</a></h3>
<div id="attachment_849" class="wp-caption alignnone" style="width: 610px"><a href="http://jeez.eu/wp-content/uploads/2009/11/thumbalizr.png" rel="lightbox[843]"><img class="size-large wp-image-849" title="thumbalizr" src="http://jeez.eu/wp-content/uploads/2009/11/thumbalizr-600x180.png" alt="thumbalizr" width="600" height="180" /></a><p class="wp-caption-text">Thumbalizr</p></div>
<p>Thumbalizr is the only service I found that supports full page screenshots. What does full page screenshots mean? This is a good example:</p>
<p><a href="http://beta.thumbalizr.com/app/thumbs/?src=/thumbs/onl/source/c5/c5e203ec65db3010b2e25a0350bba87b.png&amp;w=640&amp;q=0&amp;enc=jpg"><img class="alignnone" title="A full page screenshot" src="http://beta.thumbalizr.com/app/thumbs/?src=/thumbs/onl/source/c5/c5e203ec65db3010b2e25a0350bba87b.png&amp;w=640&amp;q=0&amp;enc=jpg" alt="" width="208" height="226" /></a></p>
<p>Even if not well documented yet (the service is in beta stage) the API seems to work pretty well. The best thing about the API is that allows you to choose any custom size ranging from 1 to 1280 to users with an API key and a ranging from 1-300 for users without an API key!!! Although the service is not so fast as the previous mentioned, it can surely attract a lot of attention since it looks quite promising.</p>
<p>There are 2 more plans with additional features like:</p>
<ul>
<li>Full Page Capture</li>
<li>Quality setting</li>
<li>Delay setting</li>
<li>Capturing parts of a page</li>
</ul>
<p><strong>API</strong></p>
<p><a title="Features table" rel="nofollow" href="http://api.thumbalizr.com/" target="_blank">This table</a> shows what features each plan supports and a typical usage of the API for a registered user with an API key is:</p>
<pre class="brush: xml;">&lt;img src=&quot;http://api.thumbalizr.com/?url=http://jeez.eu&amp;width=1280&amp;api_key=API_KEY&quot; /&gt;</pre>
<p>Give it a <a title="Thumbalizr Demo" rel="nofollow" href="http://seotests.writer.gr/snapshots/thumbalizr.php?url=http://jeez.eu&amp;width=900" target="_blank">try here</a>.</p>
<h3>4) <a title="ThumbnailsPro" rel="nofollow" href="http://thumbnailspro.com/" target="_blank">ThumbnailsPro</a></h3>
<div id="attachment_851" class="wp-caption alignnone" style="width: 610px"><a href="http://jeez.eu/wp-content/uploads/2009/11/thumbnailspro.png" rel="lightbox[843]"><img class="size-large wp-image-851" title="thumbnailspro" src="http://jeez.eu/wp-content/uploads/2009/11/thumbnailspro-600x150.png" alt="thumbnailspro" width="600" height="150" /></a><p class="wp-caption-text">ThumbnailsPro</p></div>
<p>ThumbnailsPro is a premium snapshots service that provides a free version too.The paid version features full page screenshots, high speed and full capture of the page including : flash, javascript and silverlight objects.</p>
<p>The free service allows you to generate 100&#215;75 thumbs for 1000 screenshots per month and the code needed to do this is:</p>
<pre class="brush: xml;">&lt;img src=&quot;http://thumbnailspro.com/thumb.php?url=jeez.eu&amp;s=100&quot; border=&quot;0&quot; alt=&quot;website thumbnails&quot; /&gt;</pre>
<p>ThumbnailsPro requires that you place a link back to the service if you use the free service. This is an <a title="ThumbnailsPro Demo" rel="nofollow" href="http://seotests.writer.gr/snapshots/thumbnailspro.php" target="_blank">example use</a>.</p>
<p>Anyone knows other snapshot services with free APIs? Please let us know.</p>
<img src="http://jeez.eu/?ak_action=api_record_view&id=843&type=feed" alt="" /><p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjeez.eu%2F2009%2F11%2F16%2F4-website-thumbnails-generators-with-an-api-to-use%2F&amp;linkname=4%20Website%20Thumbnails%20Generators%20With%20An%20API%20To%20Use"><img src="http://jeez.eu/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jeez.eu/2009/11/16/4-website-thumbnails-generators-with-an-api-to-use/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bing Maps. A Google Maps Alternative, or Better?</title>
		<link>http://jeez.eu/2009/11/13/bing-maps-a-google-maps-alternative-or-better/</link>
		<comments>http://jeez.eu/2009/11/13/bing-maps-a-google-maps-alternative-or-better/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 21:07:43 +0000</pubDate>
		<dc:creator>Kerasiotis Vasileios</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://jeez.eu/?p=816</guid>
		<description><![CDATA[Microsoft has released their own maps service and to be honest, it surely deserves more attention from developers. [...]]]></description>
			<content:encoded><![CDATA[<p>Microsoft has released their own maps service and to be honest, it surely deserves more attention from developers. Bing Maps can be used with the same easy way Google Maps are used. To add a simple map to your webpage you have to include a JS file:</p>
<pre class="brush: xml;">&lt;script type=&quot;text/javascript&quot; src=&quot;http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&quot;&gt;&lt;/script&gt;</pre>
<p>and then run a simple function upon page load:</p>
<pre class="brush: jscript;">function GetMap()
 {
 var map = new VEMap('myMap');
 map.LoadMap();
 }</pre>
<p>See the <a title="Simple Map" rel="nofollow" href="http://seotests.writer.gr/bingmaps/simple.html" target="_blank">default map here</a>.</p>
<h3>Loading a Specific Map</h3>
<p>Loading a specific map is simple too. You can use the same tools discussed in our Google Maps from A to Z article to get your desired latitude and longitude and apply them to above function to center the map to a specific location :</p>
<pre class="brush: jscript;">function GetMap()
 {
 var map = new VEMap('myMap');
 map.LoadMap(new VELatLong(39.5130, 21.7021), 10 ,'h' ,false);
 }</pre>
<p>This one loads a map of a village in Greece centered. <a title="Specific map" rel="nofollow" href="http://seotests.writer.gr/bingmaps/specific.html" target="_blank">See the map here</a>.</p>
<h3>Adding Pushpins and Tooltips</h3>
<p>In the previous example, we centered our map to a village in Greece. Did you find out which village it was? I suppose not. What if we add a pushpin and a tooltip to give some basic information about a specific place? Well we can and we will because we must. Adding a tooltip to a map is done by using shapes:</p>
<pre class="brush: jscript;">function GetMap()
 {
 map = new VEMap('myMap');
 map.LoadMap(new VELatLong(39.5130, 21.7021), 10 ,'h' ,false);
 //We first need to create a layer. We will discuss about layers later
 CreateLayer();

 //Add a pushpin to the new layer
 shape = new VEShape(VEShapeType.Pushpin, map.GetCenter());
 shape.SetTitle('My village');
 shape.SetDescription('This is where Jeez.eu is moderated from');
 layer.AddShape(shape);
 }

 function CreateLayer()
 {
 layer = new VEShapeLayer();
 map.AddShapeLayer(layer);
 }</pre>
<p><a title="Pushpin" rel="nofollow" href="http://seotests.writer.gr/bingmaps/pins.html" target="_blank">This is how the above map looks</a>.</p>
<h3>Using Custom Icons, Tooltips and Shapes</h3>
<p>You can also use custom icons,tooltips and shapes in your maps. For example in order to add a custom icon in your map you have to point to an icon or create an icon with HTML :</p>
<pre class="brush: jscript;">function GetMap()
 {
 map = new VEMap('myMap');
 map.onLoadMap = AddPushpin;
 map.LoadMap(new VELatLong(39.5130, 21.7021), 10 ,'h' ,false);
 }

 function AddPushpin()
 {
 var shape = new VEShape(VEShapeType.Pushpin, map.GetCenter());

 var icon = &quot;&lt;div style='font-size:12px;font-weight:bold;border:solid 2px Black;background-color:red;width:100px;'&gt;Jeez.eu Headquarters&lt;/div&gt;&quot;;
 //Set the icon
 shape.SetCustomIcon(icon);

 //Set the info box
 shape.SetTitle(&quot;&lt;h2&gt;Custom Pin&lt;/h2&gt;&quot;);
 shape.SetDescription(&quot;A simple tooltip&quot;);

 //Add the shape the the map
 map.AddShape(shape);
 }</pre>
<p><a title="Custom Icon" rel="nofollow" href="http://seotests.writer.gr/bingmaps/customs.html" target="_blank">See the example here</a>.</p>
<p>and to make this example even better, we can add custom tooltips too:</p>
<pre class="brush: jscript;">function GetMap()
 {
 map = new VEMap('myMap');
 map.onLoadMap = AddPushpin;
 map.LoadMap(new VELatLong(39.5130, 21.7021), 10 ,'h' ,false);
 }

 function AddPushpin()
 {
 var shape = new VEShape(VEShapeType.Pushpin, map.GetCenter());

 var icon = &quot;&lt;div style='font-size:12px;font-weight:bold;border:solid 2px Black;background-color:red;width:100px;'&gt;Jeez.eu Headquarters&lt;/div&gt;&quot;;
 //Set the icon
 shape.SetCustomIcon(icon);
//This is where we set the contents of the tooltip. We can use plain HTML here :)
 var infobox = &quot;&lt;div style='width:309px;'&gt;A preview of Jeez.eu&lt;/div&gt;&quot;
 +&quot;&lt;iframe src='http://jeez.eu' width='309px' height='272px' &gt;&lt;/iframe&gt;&quot;;

 //Set the info box
 map.ClearInfoBoxStyles();
 shape.SetTitle(&quot;&lt;h2&gt;About Jeez.eu&lt;/h2&gt;&quot;);
 shape.SetDescription(infobox);

 //Add the shape the the map
 map.AddShape(shape);
 }</pre>
<p>and <a title="Custom Tooltips" rel="nofollow" href="http://seotests.writer.gr/bingmaps/customs1.html" target="_blank">create something like this</a>.</p>
<p>Adding custom shapes to maps is trivial for successful maps. We can create polygons and other shapes to mark an area easily. For example :</p>
<pre class="brush: jscript;">function GetMap()
 {
 map = new VEMap('myMap');
 map.onLoadMap = AddPolygon;
 map.LoadMap(new VELatLong(39.5130, 21.7021), 10 ,'h' ,false);
 }

 function AddPolygon()
 {
 var ll = map.GetCenter();
 var lat = ll.Latitude;
 var lon = ll.Longitude;

 var shape = new VEShape(VEShapeType.Polygon, [new VELatLong(lat,lon-0.15),
 new VELatLong(lat+0.1,lon-0.05),
 new VELatLong(lat+0.1,lon+0.05),
 new VELatLong(lat,lon+0.15),
 new VELatLong(lat-0.1,lon+0.05),
 new VELatLong(lat-0.1,lon-0.05)]);

 //Set the line color
 var lineColor = new VEColor(254,78,64,Math.random());
 shape.SetLineColor(lineColor);

 //Set the line width
 var lineWidth = Math.round(3);
 shape.SetLineWidth(lineWidth);

 //Set the fill color
 var fillColor = new VEColor(64,168,255,Math.random());
 shape.SetFillColor(fillColor);

 var icon = &quot;&lt;div style='border:1px solid red;'&gt;Jeez&lt;/div&gt;&quot;;
 //Set the icon
 shape.SetCustomIcon(icon);

 //Set the info box
 shape.SetTitle(&quot;&lt;h2&gt;Custom Pin&lt;/h2&gt;&quot;);
 shape.SetDescription(&quot;Sample tip&quot;);
 //Add the shape the the map
 map.AddShape(shape);
 }</pre>
<p>This is a<a title="Polygon" rel="nofollow" href="http://seotests.writer.gr/bingmaps/customs2.html" target="_blank"> polygon</a> here.</p>
<h3>Using XML to specify Locations on the map</h3>
<p>As with Google Maps, Bing Maps also support XML data to be loaded. So the most interesting example is this of the mountaineers. We use a GeoRSS XML file with their locations and load them to our map. A typical GeoRSS file looks like this:</p>
<pre class="brush: xml;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;feed xmlns=&quot;http://www.w3.org/2005/Atom&quot;
 xmlns:georss=&quot;http://www.georss.org/georss&quot;&gt;
 &lt;title&gt;Earthquakes&lt;/title&gt;
 &lt;subtitle&gt;International earthquake observation labs&lt;/subtitle&gt;
 &lt;link rel=&quot;nofollow&quot; href=&quot;http://example.org/&quot;/&gt;
 &lt;updated&gt;2005-12-13T18:30:02Z&lt;/updated&gt;
 &lt;author&gt;
 &lt;name&gt;Dr. Thaddeus Remor&lt;/name&gt;
 &lt;email&gt;tremor@quakelab.edu&lt;/email&gt;
 &lt;/author&gt;
 &lt;id&gt;urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6&lt;/id&gt;
 &lt;entry&gt;
 &lt;title&gt;M 3.2, Mona Passage&lt;/title&gt;
 &lt;link rel=&quot;nofollow&quot; href=&quot;http://example.org/2005/09/09/atom01&quot;/&gt;
 &lt;id&gt;urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a&lt;/id&gt;
 &lt;updated&gt;2005-08-17T07:02:32Z&lt;/updated&gt;
 &lt;summary&gt;We just had a big one.&lt;/summary&gt;
 &lt;georss:point&gt;45.256 -71.92&lt;/georss:point&gt;
 &lt;/entry&gt;
&lt;/feed&gt;</pre>
<p>You can learn more about GeoRSS at the official page of the format. For our example, we will use <a title="GeoRSS file" rel="nofollow" href="http://seotests.writer.gr/bingmaps/georsstest.xml" target="_blank">this file</a>. The code needed is:</p>
<pre class="brush: jscript;">function GetMap()
 {
 map = new VEMap('myMap');
 map.onLoadMap = AddMyLayer;
 map.LoadMap(new VELatLong(46.3081, -122.1928), 12);
 }

 function AddMyLayer()
 {
 var l = new VEShapeLayer();
 var veLayerSpec = new VEShapeSourceSpecification(VEDataType.GeoRSS, &quot;http://seotests.writer.gr/bingmaps/georsstest.xml&quot;, l);
 map.ImportShapeLayerData(veLayerSpec, onFeedLoad);
 }
 function onFeedLoad(feed)
 {
 document.getElementById('msg').innerHTML = 'RSS or Collection loaded. There are ' + feed.GetShapeCount() + ' items in this list.';
 }</pre>
<p>Lets break down the code above. First, we create our map and assign a callback function upon load of the map:</p>
<pre class="brush: jscript;">map.onLoadMap = AddMyLayer;</pre>
<p>Then, we add the AddMyLayer function and with this function we create a new shape. We set the layer specification to be a GeoRSS type and we also give the path to the XML file. The data will be loaded in our layer. Then we import our layer and assign a callback function named onFeedLoad which will inform us about the number  of the loaded items.</p>
<p><a title="GeoRSS" rel="nofollow" href="http://seotests.writer.gr/bingmaps/georss.html" target="_blank">Here it is</a>.</p>
<h3>Searching Our Maps</h3>
<p>Bing also allows us to search our maps. We can search about anything on our maps. From area names to exact addresses and from general queries like &#8220;flowers&#8221; or &#8220;stadium&#8221; to reverse searches. This is an example of a maps search engine :</p>
<pre class="brush: xml;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html&gt;
 &lt;head&gt;
 &lt;title&gt;&lt;/title&gt;
 &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
 &lt;script type=&quot;text/javascript&quot; src=&quot;http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&quot;&gt;&lt;/script&gt;
 &lt;script type=&quot;text/javascript&quot;&gt;
 var map = null;

 function GetMap()
 {
 map = new VEMap('myMap');
 map.LoadMap();
 }

 function FindLoc()
 {
 try
 {
 map.Find(null, document.getElementById('txtWhere').value);
 }
 catch(e)
 {
 alert(e.message);
 }
 }
 &lt;/script&gt;
 &lt;/head&gt;
 &lt;body onload=&quot;GetMap();&quot;&gt;
 &lt;div id='myMap' style=&quot;position:relative; width:400px; height:400px;&quot;&gt;&lt;/div&gt;
 &lt;INPUT id=&quot;txtWhere&quot; type=&quot;text&quot; name=&quot;txtWhere&quot;&gt;
 &lt;INPUT id=&quot;find&quot; type=&quot;button&quot; value=&quot;Find&quot; name=&quot;find&quot; onclick=&quot;FindLoc();&quot;&gt;
 &lt;/body&gt;
&lt;/html&gt;</pre>
<p>and <a title="Find" rel="nofollow" href="http://seotests.writer.gr/bingmaps/find.html" target="_blank">you can check it here</a>.</p>
<p>Think the 2 parameters of the map.Find method as :</p>
<ul>
<li>What and</li>
<li>Where</li>
</ul>
<p>You can change the order of the parameters in map.Find to search for locations related to your queries on the map already rendered. For example:</p>
<pre class="brush: jscript;">map.Find( document.getElementById('txtWhere').value,null);</pre>
<p>and you can also use the map.Find method like this:</p>
<pre class="brush: jscript;">map.Find( document.getElementById('txtWhere').value,document.getElementById('txtWhere').value);</pre>
<p>using both What and Where.</p>
<p><strong>Reverse Find</strong></p>
<p>Reverse find is a great way to showcase maps interaction. You can add event listeners to your map with the <strong>map.AttachEvent</strong> method. The example below shows a map of Athens, Greece and when you click on it, a message box appears with the name of the street.</p>
<pre class="brush: jscript;">function GetMap()
 {
 var map = new VEMap('myMap');
 map.LoadMap(new VELatLong(37.9829, 23.7167), 15 ,'h' ,false);

 map.AttachEvent(&quot;onclick&quot;, PixelClick);

 }

 function PixelClick(e)
 {
 var x = e.mapX;
 var y = e.mapY;
 var pixel = new VEPixel(x, y);
 var LL = map.PixelToLatLong(pixel);

 map.FindLocations(LL, GetResults);

 }

 function GetResults(locations)
 {
 var s=&quot;Street Name: &quot;;
 if(locations != null)
 {
 s+=locations[0].Name;

 }
 else
 {
 s+=&quot;No Result found.&quot;;
 }

 alert(s);
 }</pre>
<p>You can <a title="Reverse Find" rel="nofollow" href="http://seotests.writer.gr/bingmaps/reverse.html" target="_blank">try it here</a>.</p>
<h3>Using Bing Maps to Get Directions</h3>
<p>Getting directions with Bing Maps is as easy as this:</p>
<pre class="brush: jscript;">function GetMap()
 {
 map = new VEMap('myMap');
 map.LoadMap();

 map.GetDirections([&quot;Trikkala&quot;, &quot;Athens&quot;, &quot;Kaisariani&quot;]);
 }</pre>
<p>This example will get the directions from my town (Trikkala, which is wrong as the name is spelled with one &#8220;k&#8221; not with 2) to Kaisariani, Athens. <a title="Directions" rel="nofollow" href="http://seotests.writer.gr/bingmaps/directions.html" target="_blank">Try it here</a>.</p>
<p>Bing Maps come with some cool features. For example there is BirdsEye feature which allows us to get images from a territory from an angle and it also supports changing the orientation of the images. Another great feature is the 3D mode which allows you to explore maps as if you were in the map. You can create collections and save them to videos.</p>
<p>You can read more about the<a title="Bing Maps SDKs" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd877180.aspx" target="_blank"> Bing Maps API and SDKs </a>or download the <a title="Bing Maps Datasheet" rel="nofollow" href="http://download.microsoft.com/download/3/9/7/3976E748-A4B0-4CB8-9A22-C939305716B3/Bing%20Maps%20Developer%20Data%20Sheet.pdf" target="_blank">Bing Maps Datasheet</a>. I hope you use what you learned to build an awesome application. If you do, please let us know!</p>
<img src="http://jeez.eu/?ak_action=api_record_view&id=816&type=feed" alt="" /><p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjeez.eu%2F2009%2F11%2F13%2Fbing-maps-a-google-maps-alternative-or-better%2F&amp;linkname=Bing%20Maps.%20A%20Google%20Maps%20Alternative%2C%20or%20Better%3F"><img src="http://jeez.eu/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jeez.eu/2009/11/13/bing-maps-a-google-maps-alternative-or-better/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Our Favorite Google Wave Extensions And Add-ons</title>
		<link>http://jeez.eu/2009/11/08/our-favorite-google-wave-extensions-and-add-ons/</link>
		<comments>http://jeez.eu/2009/11/08/our-favorite-google-wave-extensions-and-add-ons/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 18:28:18 +0000</pubDate>
		<dc:creator>Kerasiotis Vasileios</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google Wave]]></category>
		<category><![CDATA[Service]]></category>

		<guid isPermaLink="false">http://jeez.eu/?p=790</guid>
		<description><![CDATA[Google Wave is gaining more and more attention from developers and companies that want to promote their products [...]]]></description>
			<content:encoded><![CDATA[<p>Google Wave is gaining more and more attention from developers and companies that want to promote their products and services with it. There are already hundreds of extensions and robots that perform different tasks from conversion to games and development. This is a small list of our favorite Extensions/Gadgets and some browser add-ons for Firefox and Google Chrome:</p>
<p><strong>Robbots</strong>:</p>
<ul>
<li><a title="Calcbot" rel="nofollow" href="http://www.google.com/url?sa=D&amp;q=http://code.google.com/p/calcbot" target="_blank">Calcbot</a><br />
This might prove to be a time saver when you need to calculate a very hard calculation like : 5 + 2  (3^5)%6 . All you have to do is add &#8220;&#8212;&#8221; after the equal sign. eg: <strong>5 + 2  (3^5)%6=&#8212; </strong>and Calcbot will answer it.</li>
<li><a rel="nofollow" href="http://www.google.com/url?sa=D&amp;q=http://wave-samples-gallery.appspot.com/about_app?app_id=9003" target="_blank">i-cron</a><br />
Evaluates Python expressions. Looks at blips in event, searches for CALC() macros and executes Python code using exec().</li>
<li><a rel="nofollow" href="http://wave-samples-gallery.appspot.com/about_app?app_id=14008" target="_blank">kasyntaxy</a><br />
Awesome robot. It does syntax highlighting of a variaty of languages like : Python, C, C++,JavaScript,Java and more. Must have tool for developers.</li>
<li><a rel="nofollow" href="http://lee-phillips.org/wave/plotzie.xhtml" target="_blank">Plotzie</a><br />
Plotzie creates sparklines from data that you give to it inside a wave.</li>
<li><a rel="nofollow" href="http://code.google.com/p/wavealpha/" target="_blank">WaveAlpha</a><br />
This bot will use WolframAlpha&#8217;s knowledge to get results for anything you ask.</li>
<li><a rel="nofollow" href="http://www.waverz.com/groups" target="_blank">WaveGroupy</a><br />
The bot automatically adds a group widget, which you can use to browse the neighbourhood, and add/remove your wave to groups.</li>
<li><a rel="nofollow" href="https://wave.google.com/wave/#restored:search:by%253Ame,restored:wave:googlewave.com!w%252Br9VjzfqsA" target="_blank">Link &#8211; Easy Robot</a><br />
Multifunctional robot with optional panel and live easycode to perform with. like make-public, emoticon, sweepy-empty, lock-title, insert gadget and more.</li>
<li><a rel="nofollow" href="http://wave.to/robots/rssybot" target="_blank">Rssybot</a><br />
Great tool for using wave as a feed reader. You add the robot with the extensions installer and then you have another option under the New Wave button. Enter a feed URL and press subscribe. Every new feed entry will show up as a blip in your wave.</li>
<li><a rel="nofollow" href="http://www.wave.to/robots/wavelivemessenger/" target="_blank">Wave Live Messenger</a><br />
Your friends don&#8217;t have a Google Wave account yet? No problem. With this extension, you can talk to them on their MSN right from your waves.</li>
<li><a rel="nofollow" href="http://andrewhitchcock.org/?post=322" target="_blank">Aunt Rossie</a><br />
Translate languages.</li>
<li><a rel="nofollow" href="http://bitly-bot.appspot.com/" target="_blank">Bit.ly Bot</a><br />
Shorten URLs from within your waves.</li>
<li><a rel="nofollow" href="http://chart-bot.appspot.com/index.html" target="_blank">Chart Bot</a><br />
Used to display various charts and diagrams based on<a title="Google Visualizations from A to Z" href="http://jeez.eu/2009/10/19/google-visualizations-from-a-to-z/" target="_blank"> Google Visualization API</a> within a wave.</li>
<li><a rel="nofollow" href="http://wave-xmpp.appspot.com/public/xmpplite.htm" target="_blank">XMPP</a><br />
Allows you to subscribe to waves so that your receive notifications via XMPP when users modify them.</li>
</ul>
<p><strong>Gadgets</strong>:</p>
<ul>
<li><a rel="nofollow" href="http://cleantxt.appspot.com/extension/approver.xml" target="_blank">Approver</a><br />
This gadget will add a vote feature to any blip you add it so people can upvote or downvote you.</li>
<li><a rel="nofollow" href="http://wave-ide.appspot.com/html-ext.xml" target="_blank">HTML</a><br />
Allows you to embed HTML in any wave and edit it whenever you want. This is a great tool for working on files with others.</li>
<li><a rel="nofollow" href="http://wave-ide.appspot.com/iframe-ext.xml" target="_blank">iFrame</a><br />
You can load any webpage as an iframe inside a wave.</li>
<li><a rel="nofollow" href="http://www.wave.to/gadgets/iWave/" target="_blank">iWave</a><br />
Link your Facebook account with Google Wave.</li>
<li><a rel="nofollow" href="http://jsvectoreditor.googlecode.com/svn/trunk/wave/vectoreditor.xml" target="_blank">Vector Editor</a><br />
A real time vector graphics editor.</li>
</ul>
<p><strong>Firefox Add-ons</strong>:</p>
<ul>
<li><a rel="nofollow" href="http://thatsmith.com/2009/10/google-wave-add-on-for-firefox" target="_blank">Google Wave Notifier</a><br />
If you have a Google Wave account, enter your login and password in the settings and it will log you in and notify you of new wavelets in your inbox.</li>
<li><a rel="nofollow" href="http://wisestamp.com/blog/google-waves-accounts-hitting-the-shores-of-wisestamp-1-2-4" target="_blank">WiseStamp</a><br />
Enables you to share your Google Wave contact info in your email signature.</li>
</ul>
<p><strong>Chrome Add-ons</strong>:</p>
<ul>
<li><a rel="nofollow" href="http://www.uniformedopinion.com/google-wave-native-scrollbars-extension/google-wave.crx" target="_blank">Google Wave Scrollbars</a><br />
Converts wave scrollbars to the default system scrollbars.</li>
<li><a rel="nofollow" href="http://www.jeremyselier.com/fr/entry/chrome-extension-google-wave-checker" target="_blank">Google Wave Checker</a><br />
The same as Google Wave Notifier in Firefox.</li>
</ul>
<img src="http://jeez.eu/?ak_action=api_record_view&id=790&type=feed" alt="" /><p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjeez.eu%2F2009%2F11%2F08%2Four-favorite-google-wave-extensions-and-add-ons%2F&amp;linkname=Our%20Favorite%20Google%20Wave%20Extensions%20And%20Add-ons"><img src="http://jeez.eu/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jeez.eu/2009/11/08/our-favorite-google-wave-extensions-and-add-ons/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Technologies That Will Change The Web</title>
		<link>http://jeez.eu/2009/11/01/technologies-that-will-change-the-web/</link>
		<comments>http://jeez.eu/2009/11/01/technologies-that-will-change-the-web/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 16:24:48 +0000</pubDate>
		<dc:creator>Kerasiotis Vasileios</dc:creator>
				<category><![CDATA[Services]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Google Wave]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[YQL]]></category>

		<guid isPermaLink="false">http://jeez.eu/?p=730</guid>
		<description><![CDATA[Some years ago, the mp3 format was invented. It was a market killer invention since there was a [...]]]></description>
			<content:encoded><![CDATA[<p>Some years ago, the mp3 format was invented. It was a market killer invention since there was a whole bunch of new products and hardware that came out to support it. We saw mp3 players in our rooms, cars and phones. We also saw companies distributing paid music rise and each teen has it&#8217;s mp3 player along with his/her books. Each time a killer invention comes out, there is a whole bunch of other products in the market to support it.</p>
<p>The Web, was another killer invension. Some new technologies that recently came out promise to re-invent the web and we will make an effort to showcase them here. We will also try to imagine some supporting products that these technologies might produce.</p>
<h3><a title="Yahoo Query Language" href="http://developer.yahoo.com/yql/guide/yql_guide.pdf" target="_blank">Select * from internet with YQL</a></h3>
<p><a href="http://jeez.eu/wp-content/uploads/2009/11/yql.gif" rel="lightbox[730]"><img class="alignnone size-full wp-image-733" title="yql" src="http://jeez.eu/wp-content/uploads/2009/11/yql.gif" alt="yql" width="563" height="235" /></a></p>
<p>One of the most promising technologies out there, is Yahoo&#8217;s YQL. Many people including me, believe that this platform is the next big thing. You can do thousand of diferrent things with YQL in so many diferrent areas that the moto is really &#8220;select * from internet&#8221;. The philosofy behind YQL is that anyone can make his data available for everyone in a specific way, so specific that someone who wants to access these data, should just use an SQL-syntax like language to get do it.</p>
<p>So YQL turns the web into a monsterous database waiting there for us to query it. How is this possible? Each web service should produce a <a title="Datatables" href="http://www.datatables.org/" target="_blank">datatable</a> with a specific format, which then other people can use to extract, insert or update data. We see <a title="Community Tables" href="http://developer.yahoo.com/yql/console/?q=show%20tables&amp;env=store://datatables.org/alltableswithkeys" target="_blank">hundreds of community tables</a> available in the YQL console.</p>
<p>In what way could YQL change the web? What if you used YQL to create a hotel booking site? Hotels could create datatables that would make hotels reservations, available rooms and pricing info available. Then we could do a YQL statement like this to get available rooms in San Fransisco:</p>
<pre class="brush: sql;">SELECT * FROM hotels.rooms.sf WHERE room=open</pre>
<p>The above example is fictional. YQL could be used in any way you would use a typical SQL database. Our article about <a href="http://jeez.eu/2009/09/25/using-yql-to-manage-your-yahoo-meme-account/" target="_blank">how to use yql to manage your meme account</a> will get you into it even faster.</p>
<h3><a title="Opera Unite" href="http://unite.opera.com/" target="_blank">Take the web back with Opera Unite</a></h3>
<p><a href="http://jeez.eu/wp-content/uploads/2009/11/opera-unite-screen.png" rel="lightbox[730]"><img class="alignnone size-large wp-image-734" title="opera-unite-screen" src="http://jeez.eu/wp-content/uploads/2009/11/opera-unite-screen-600x436.png" alt="opera-unite-screen" width="600" height="436" /></a></p>
<p>Opera Unite is able to turn your browser (Opera) into a web server. This means you can share content directly with friends without having to upload anything to a Web site. Opera Unite is a Web server running inside the Opera Web browser, allowing the user to install applications and share these applications with their friends and colleagues (or everyone, if they wish). The Opera Unite server provides a proxy between the server and its clients (found at operaunite.com) to avoid the need for any special firewall configuration.</p>
<p>So in other words, you run your own hosting service. You can use standard techniques like JavaScript and HTML to <a title="Opera Unite Developer API" href="http://dev.opera.com/articles/view/opera-unite-developer-primer/" target="_blank">create applications</a> and then publish them for the world to see right from your own browser. There are already a <a title="Opera Unite Applications" href="http://unite.opera.com/applications/" target="_blank">some applications</a> that utilize the Opera Unite API and my favorite one is <a title="Twicli Unite" href="http://unite.opera.com/application/382/" target="_blank">Twicli</a>.</p>
<p>Most of the Opera Unite use cases could be for social networking but it could be used as a collaboration tool too.</p>
<h3><a title="Google Wave" href="http://wave.google.com" target="_blank">Collaborate with Google Wave</a></h3>
<p><a href="http://jeez.eu/wp-content/uploads/2009/11/google_wave.png" rel="lightbox[730]"><img class="alignnone size-full wp-image-735" title="google_wave" src="http://jeez.eu/wp-content/uploads/2009/11/google_wave.png" alt="google_wave" width="500" height="326" /></a></p>
<p>Google Wave is an online tool for real-time communication and collaboration. A wave can be both a conversation and a document where people can discuss and work together using richly formatted text, photos, videos, maps, and more. With Google wave the possibilities are endless since the wave API allows you to build anything you want.</p>
<p>Google Wave supports <a href="http://wave.google.com/help/wave/extensions.html" target="_blank">robots, gadgets,extensions</a> and embeding that makes it so powerful for online collaboration that any other tool could be. We recently posted a <a href="http://jeez.eu/2009/10/11/creating-a-google-wave-extension-in-5-steps/" target="_blank">tutorial on how to create a feed reader extension</a> for Google Wave too.</p>
<p>Recently<a title="Google Wave Use Cases: Arts &amp; Filmmaking" href="http://www.readwriteweb.com/archives/google_wave_use_cases_arts_filmmaking.php" target="_blank"> there was a post in the ReadWriteWeb blog</a> with a use case of Google Wave for artists and Filmmaking and everyday there are new ideas on how Wave could be used.</p>
<h3><a title="Pubsubhubbub" href="http://code.google.com/p/pubsubhubbub/" target="_blank">Re-inventing RSS with PubSubHubBub</a></h3>
<p><a href="http://jeez.eu/wp-content/uploads/2009/11/pushbutton-delivery.png" rel="lightbox[730]"><img class="alignnone size-full wp-image-736" title="pushbutton-delivery" src="http://jeez.eu/wp-content/uploads/2009/11/pushbutton-delivery.png" alt="pushbutton-delivery" width="450" height="300" /></a></p>
<p>Except it&#8217;s strange name, this protocol promises to deliver updates from feeds without polling. So it basically allows us to be informed if our favorite blog has updated news without the need to reload this blog&#8217;s feed. It uses this flow (taken from <a href="http://www.scripting.com/stories/2009/07/10/googlesPubsubhubbub.html" target="_blank">Scripting.com</a>):</p>
<ol>
<li>Any feed that wants to participate in this network must add a bit to the feed that indicates which ping server is handling notifications on its behalf. There can be more than one.</li>
<li>When a subscribing application initially parses the feed and notices this bit, it sends a notification to each server saying &#8220;I want to be notified when this feed updates&#8221;.</li>
<li>When the feed updates, it pings each of the servers it has registered with saying &#8220;I have updated&#8221;.</li>
<li>The server then pings each of the subscribers saying &#8220;He updated&#8221;.</li>
</ol>
<p>At Scripting.com they say that this protocol could be used to create a Twitter-like service without Twitter&#8217;s limitations of 140 chars or hashtags. We thought of another use also.</p>
<p>What about creating a REAL real-time search engine that would update it&#8217;s index anytime a feed is updated? This way, we could have a search engine that will be able to show the latest news in seconds after the news got published.</p>
<h3><a title="HTML5" href="http://www.w3.org/TR/html5/" target="_blank">HTML5</a></h3>
<p><a href="http://jeez.eu/wp-content/uploads/2009/11/html5-serializations.png" rel="lightbox[730]"><img class="alignnone size-full wp-image-737" title="html5-serializations" src="http://jeez.eu/wp-content/uploads/2009/11/html5-serializations.png" alt="html5-serializations" width="573" height="357" /></a></p>
<p>The new HTML specification is here and it brings marvelous new features to use. Canvas, Video, Audio and Drag n Drop are some of it&#8217;s features that will surely change the way we surf the net. One of it&#8217;s coolest features is the ability to cache web applications and use them offline. It is not weird that technologies like Google Wave depend on HTML5 to exist.</p>
<p>Apart from being the tool to create revolutionary applications and services, HTML5 is itself a revolution. Many browser players are contributing to the creation of the draft (Apple, Microsoft, Mozilla and Opera), each from his own point of view and interest but they all try to make this a great new era for the web.</p>
<img src="http://jeez.eu/?ak_action=api_record_view&id=730&type=feed" alt="" /><p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjeez.eu%2F2009%2F11%2F01%2Ftechnologies-that-will-change-the-web%2F&amp;linkname=Technologies%20That%20Will%20Change%20The%20Web"><img src="http://jeez.eu/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jeez.eu/2009/11/01/technologies-that-will-change-the-web/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Use Google’s Power To Create Powerfull Search Engines (Part II)</title>
		<link>http://jeez.eu/2009/10/27/use-google%e2%80%99s-power-to-create-powerfull-search-engines-part-ii/</link>
		<comments>http://jeez.eu/2009/10/27/use-google%e2%80%99s-power-to-create-powerfull-search-engines-part-ii/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 17:50:45 +0000</pubDate>
		<dc:creator>Kerasiotis Vasileios</dc:creator>
				<category><![CDATA[Services]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://jeez.eu/?p=679</guid>
		<description><![CDATA[In our previous article, we learned how to create a custom search engine using Google&#8217;s infrastructure. In this [...]]]></description>
			<content:encoded><![CDATA[<p>In our previous article, we learned <a title="Google Custom Search Engines" href="http://jeez.eu/2009/10/24/use-googles-power-to-create-powerfull-search-engines-part-i/" target="_self">how to create a custom search engine</a> using Google&#8217;s infrastructure. In this article, we will go through some remaining aspects of this wonderful API and we will also create a custom search engine using what we learned till now.</p>
<h3>Refinements</h3>
<p>Refinements AKA search suggestions are little tips that we show to our users to help them narrow their search. For example, if someone searches for &#8220;python&#8221;, our search engine does not know if the user is looking for the snake family of pythons or the programming language. So, we could help our users refine their search by providing some search suggestions like:</p>
<ul>
<li>python language</li>
<li>python programming</li>
<li>python tutorial</li>
<li>python snake</li>
<li>etc</li>
</ul>
<p>To create refinements you need to either add them through the control panel or by using an annotations XML file. The code needed to add each refinement label is:</p>
<pre class="brush: xml;">&lt;Facet&gt;
 &lt;FacetItem title=&quot;Lectures&quot;&gt;
 &lt;Label name=&quot;lectures&quot; mode=&quot;BOOST&quot; weight=&quot;0.8&quot;/&gt;&lt;/Label&gt;
 &lt;/FacetItem&gt;
 &lt;/Facet&gt;</pre>
<p>The Facet element has this structure:</p>
<ul>
<li> <strong>Facet</strong>
<ul>
<li><strong>FacetItem </strong>- The refinement link that is displayed at the top of the results page.
<ul>
<li>Label name
<ul>
<li>Rewrite</li>
<li>IgnoreBackgroundLabels</li>
</ul>
</li>
<li>Redirect</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>Each Facet elements can have up to four FacetItem child elements. You can create as many refinement labels as you want and display up to 16 refinement links in the search results page. Here is an example on how we can add the above example to a custom search engine file:</p>
<pre class="brush: xml;">&lt;CustomSearchEngine&gt;
 &lt;Title&gt;Universities&lt;/Title&gt;

 &lt;Context&gt;

 &lt;Facet&gt;
 &lt;FacetItem title=&quot;Lectures&quot;&gt;
 &lt;Label name=&quot;lectures&quot; mode=&quot;BOOST&quot; weight=&quot;0.8&quot;&gt;
 &lt;Rewrite&gt;lecture OR lectures&lt;/Rewrite&gt;
 &lt;/Label&gt;
 &lt;/FacetItem&gt;
 &lt;/Facet&gt;

 &lt;Facet&gt;
 &lt;FacetItem title=&quot;Assignments&quot;&gt;
 &lt;Label name=&quot;assignments&quot; mode=&quot;BOOST&quot; weight=&quot;0.8&quot;&gt;
 &lt;Rewrite&gt;homework OR assignment OR assignments&lt;/Rewrite&gt;
 &lt;/Label&gt;
 &lt;/FacetItem&gt;
 &lt;/Facet&gt;

 &lt;BackgroundLabels&gt;
 &lt;Label name=&quot;_cse_omuauf_lfve&quot; mode=&quot;FILTER&quot;/&gt;
 &lt;Label name=&quot;_cse_exclude_omuauf_lfve&quot; mode=&quot;ELIMINATE&quot;/&gt;
 &lt;/BackgroundLabels&gt;

 &lt;/Context&gt;

 &lt;/CustomSearchEngine&gt;</pre>
<h3>Tagging Sites With Refinement Labels</h3>
<p>You can tag sites with refinement labels. Each annotation can have multiple labels, which means that the same site can be used in other search engines and be ranked differently. This example shows how to do this in the annotations file:</p>
<pre class="brush: xml;">&lt;Annotations&gt;
 &lt;Annotation about=&quot;webcast.berkeley.edu/*&quot; score=&quot;1&quot;&gt;
 &lt;Label name=&quot;university_boost_highest&quot;/&gt;
 &lt;Label name=&quot;lectures&quot;/&gt;
 &lt;/Annotation&gt;

 &lt;Annotation about=&quot;www.youtube.com/ucberkeley/*&quot; score=&quot;1&quot;&gt;
 &lt;Label name=&quot;university_boost_highest&quot;/&gt;
 &lt;Label name=&quot;videos_boost_mid&quot;/&gt;
 &lt;Label name=&quot;lectures&quot;/&gt;
 &lt;/Annotation&gt;
&lt;/Annotations&gt;</pre>
<h3>Appending Search Queries</h3>
<p>If you want to help your users by providing refinement links that add helpful search terms to their queries, you can use the Rewrite element in your refinements. The element appends the search terms to your users&#8217; queries when they click a refinement link. The Rewrite element can have up to 100 characters, all of which should be lowercase, except for uppercase search operators such as OR. So based on the refinement labels we can use the rewrite child element and do this:</p>
<pre class="brush: xml;">&lt;Facet&gt;
 &lt;FacetItem title=&quot;Homework&quot;&gt;
 &lt;Label name=&quot;assignments&quot; mode=&quot;BOOST&quot;&gt;
 &lt;Rewrite&gt;homework OR assignment&lt;/Rewrite&gt;
 &lt;/Label&gt;
 &lt;/FacetItem&gt;
 &lt;/Facet&gt;</pre>
<p>Now. Each time the user clicks on the Homework refinement link, the query will be appended with &#8220;homework OR assignment&#8221;. This way, our search engine will show more relevant results  than it would for just homework.</p>
<h3>Redirecting Search Queries</h3>
<p>You can also redirect the user to another site when he/she clicks on a refinement label. For example you can redirect a user to the PHP Manual when he clicks on the refinement link. This can be done like this:</p>
<pre class="brush: xml;">&lt;CustomSearchEngine&gt;
 &lt;Title&gt;Universities&lt;/Title&gt;
 &lt;Context&gt;
 &lt;Facet&gt;
 &lt;FacetItem title=&quot;Manual&quot;&gt;
 &lt;Label name=&quot;manual&quot; mode=&quot;FILTER&quot;/&gt;
 &lt;Redirect url=&quot;http://php.net/manual/en/$q&quot;/&gt;
 &lt;/FacetItem&gt;
 &lt;/Facet&gt;
 &lt;/Context&gt;
&lt;/CustomSearchEngine&gt;</pre>
<h3>Using Synonyms</h3>
<p>You can expand your users&#8217; search queries by using synonyms, which are variants of a search term. This helps the users since when a user searches for &#8220;photoes&#8221; our search engine will bring up results for &#8220;images&#8221;, &#8220;landscapes&#8221; and &#8220;screenshots&#8221; too. While the example mentioned is many times handled by Google itself, some other words might not. So for example a user that searches for &#8220;sf&#8221; might sometimes looking for Symfony, others for Sourceforge and some other times for San Francisco. It is up to you to determine what you want the engine to bring up based on your audience. To add synonyms you must add the code in the Context file of your CSE.</p>
<p>Example:</p>
<pre class="brush: xml;">&lt;Synonyms&gt;
 &lt;SynonymEntry word=&quot;stock&quot;&gt;
 &lt;Synonym&gt;equity&lt;/Synonym&gt;
 &lt;Synonym&gt;share&lt;/Synonym&gt;
 &lt;/SynonymEntry&gt;
 &lt;/Synonyms&gt;</pre>
<p>Each query term (SynonymEntry element) can have with up to ten variants (Synonym elements). The variants could be single words or phrases. You can define multiple query terms, so long as you not exceed a total of 500 variants.</p>
<h3>Creating Special Results</h3>
<p>For any reason, you might want to bring a search result that you think that it answers your user&#8217;s queries to the top by creating special results. The two types of special results are:</p>
<ul>
<li> <strong>Promotions </strong>- simple results with links to relevant webpages.</li>
<li> <strong>Subscribed links</strong> &#8211; result snippets for a set of queries. Subscribed Links directly answers your users&#8217; questions and save them from some research work. A type of subscribed link is this one that <a title="Answer for everything" href="http://www.google.com/search?q=the+answer+to+life+the+universe+and+everything" target="_blank">answers the question to everything</a>.</li>
</ul>
<p>Before you start creating special results, determine which type best suits your needs. Promotions are simpler and easier to create, while subscribed links have richer features but require significantly more planning, development, and troubleshooting.</p>
<h4>Promotions</h4>
<p>Unlike other Custom Search features, you create the XML for promotions not in the context file nor the annotations file, but in its own file. The following code describes promotions for a search engine on programming tutorials:</p>
<pre class="brush: xml;">&lt;Promotions&gt;
 &lt;Promotion id=&quot;1&quot;
 queries=&quot;tutorial, programming tutorial&quot;
 title=&quot;Programming Tutorials&quot;
 url=&quot;http://jeez.eu/category/tutorials/&quot;
 description=&quot;Programming tutorials for PHP, JavaScript, Web Services and more...&quot;
 image_url=&quot;http://d.yimg.com/cc/img/resize/SIG=1395nor9l/*/74x74/http%3A%2F%2Fd.yimg.com%2Fgg%2Fjeeztech%2Favatars%2F52141fe00e1281a84745259ab5eec6b46e23c412.png&quot; /&gt;
 &lt;Promotion id=&quot;2&quot;
 queries=&quot;css,css tutorial&quot;
 title=&quot;CSS Tutorials&quot;
 url=&quot;http://www.smashingmagazine.com/category/css/&quot;
 description=&quot;CSS tutorials&quot; /&gt;
&lt;/Promotions&gt;</pre>
<p>You can have up to 2,000 promotions in your account. You can allocate the promotions across the search engines in your account any way you like. Let&#8217;s say you have two search engines in your account. You can apportion 2,000 promotions to one search engine and nothing to the other; or you can apportion up to 1,000 promotions to each search engine.</p>
<h4>Subscribed Links</h4>
<p>To better understand the subscribed links feature, just go to Google and search for &#8220;AJAX&#8221;. The first result is the &#8220;AJAX (programming)&#8221; article on wikipedia. If you wanted your users to get info about the AJAX hero, you could use a subscribed link to do this.</p>
<p>To enable the subscribed links you created using the control panel:</p>
<ol>
<li> Go to the Basics tab.</li>
<li> Select the Enable special results, such as subscribed links and promotions check box.</li>
<li> Click Save Changes.</li>
</ol>
<p>and to add them in the context file you should do something like this :</p>
<pre class="brush: xml;">&lt;CustomSearchEngine volunteers=&quot;false&quot;&gt;
 &lt;Title&gt;...&lt;/Title&gt;
 &lt;Description&gt;...&lt;/Description&gt;
 &lt;Context&gt;...&lt;/Context&gt;
 &lt;SubscribedLinks&gt;
 &lt;SubscribedLink creator=&quot;017771777217723414381&quot;/&gt;
 &lt;/SubscribedLinks&gt;
&lt;/CustomSearchEngine&gt;</pre>
<p>You can find the <strong>SubscribedLink creator</strong> id you should download the context file generated by the control panel and find the creator attribute of the CustomSearchEngine element.</p>
<h3>Creating a Demo Search Engine</h3>
<p>As we promissed, we are going to create a demo search engine that will facilate most of what we learned through these two articles about custom search engines. Try <a title="The JSLE Engine with some customizations" href="http://www.google.com/cse/home?cx=014105238919074316991:ytl_pcjhu6w" target="_blank">this search engine</a>. Try to search for something that has to do about programming and also try searching for &#8220;css&#8221;,&#8221;css tutorial&#8221;,&#8221;tutorial&#8221; and &#8220;programming tutorial&#8221;.</p>
<p>These are the files:</p>
<p><strong>Annotations file</strong></p>
<pre class="brush: xml;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
&lt;Annotations start=&quot;0&quot; num=&quot;21&quot; total=&quot;21&quot;&gt;
 &lt;Annotation about=&quot;*.jeez.eu/*&quot; timestamp=&quot;0x000476ee0956ea94&quot; href=&quot;CgsqLmplZXouZXUvKhCU1dvK4N2dAg&quot;&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;jeez.eu&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;www.scala-lang.org/node/198*&quot; timestamp=&quot;0x000476edc86a7b49&quot; href=&quot;Chx3d3cuc2NhbGEtbGFuZy5vcmcvbm9kZS8xOTgqEMn2qcPc3Z0C&quot;&gt;
 &lt;Label name=&quot;manual&quot; /&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://www.scala-lang.org/node/198&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;groovy.codehaus.org/Documentation*&quot; timestamp=&quot;0x000476edc7508a05&quot; href=&quot;CiJncm9vdnkuY29kZWhhdXMub3JnL0RvY3VtZW50YXRpb24qEIWUwrrc3Z0C&quot;&gt;
 &lt;Label name=&quot;manual&quot; /&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://groovy.codehaus.org/Documentation&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;guides.rubyonrails.org/*&quot; timestamp=&quot;0x000476edc3b646e8&quot; href=&quot;ChhndWlkZXMucnVieW9ucmFpbHMub3JnLyoQ6I3ZndzdnQI&quot;&gt;
 &lt;Label name=&quot;manual&quot; /&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://guides.rubyonrails.org/&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;java.sun.com/docs/books/tutorial/*&quot; timestamp=&quot;0x000476edc11894bc&quot; href=&quot;CiJqYXZhLnN1bi5jb20vZG9jcy9ib29rcy90dXRvcmlhbC8qELyp4ojc3Z0C&quot;&gt;
 &lt;Label name=&quot;manual&quot; /&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://java.sun.com/docs/books/tutorial/&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;php.net/docs.php&quot; timestamp=&quot;0x000476edbfe2de08&quot; href=&quot;ChBwaHAubmV0L2RvY3MucGhwEIi8i__b3Z0C&quot;&gt;
 &lt;Label name=&quot;manual&quot; /&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://php.net/docs.php&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;*.google.com/*&quot; score=&quot;1&quot; timestamp=&quot;0x000476afacb2e2c1&quot; href=&quot;Cg4qLmdvb2dsZS5jb20vKhDBxcvl-tWdAg&quot;&gt;
 &lt;Label name=&quot;_cse_cew2vi6nsvu&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://google.com&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;www.ajaxgear.com/*&quot; score=&quot;1&quot; timestamp=&quot;0x000476af5a53644a&quot; href=&quot;ChJ3d3cuYWpheGdlYXIuY29tLyoQysjN0vXVnQI&quot;&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://www.ajaxgear.com&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;qooxdoo.oss.schlund.de/*&quot; score=&quot;1&quot; timestamp=&quot;0x000476af5a536444&quot; href=&quot;Chhxb294ZG9vLm9zcy5zY2hsdW5kLmRlLyoQxMjN0vXVnQI&quot;&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://qooxdoo.oss.schlund.de&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;www.zimbra.com/*&quot; score=&quot;1&quot; timestamp=&quot;0x000476af5a53643e&quot; href=&quot;ChB3d3cuemltYnJhLmNvbS8qEL7IzdL11Z0C&quot;&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://www.zimbra.com&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;cpaint.booleansystems.com/*&quot; score=&quot;1&quot; timestamp=&quot;0x000476af5a536437&quot; href=&quot;ChtjcGFpbnQuYm9vbGVhbnN5c3RlbXMuY29tLyoQt8jN0vXVnQI&quot;&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://cpaint.booleansystems.com/&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;www.plextk.org/*&quot; score=&quot;1&quot; timestamp=&quot;0x000476af5a536432&quot; href=&quot;ChB3d3cucGxleHRrLm9yZy8qELLIzdL11Z0C&quot;&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://www.plextk.org/&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;script.aculo.us/*&quot; score=&quot;1&quot; timestamp=&quot;0x000476af5a53642b&quot; href=&quot;ChFzY3JpcHQuYWN1bG8udXMvKhCryM3S9dWdAg&quot;&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://script.aculo.us/&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;www.bosrup.com/web/overlib/*&quot; score=&quot;1&quot; timestamp=&quot;0x000476af5a536424&quot; href=&quot;Chx3d3cuYm9zcnVwLmNvbS93ZWIvb3ZlcmxpYi8qEKTIzdL11Z0C&quot;&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://www.bosrup.com/web/overlib/&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;moofx.mad4milk.net/*&quot; score=&quot;1&quot; timestamp=&quot;0x000476af5a53641d&quot; href=&quot;ChRtb29meC5tYWQ0bWlsay5uZXQvKhCdyM3S9dWdAg&quot;&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://moofx.mad4milk.net/&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;bennolan.com/behaviour/*&quot; score=&quot;1&quot; timestamp=&quot;0x000476af5a536416&quot; href=&quot;ChhiZW5ub2xhbi5jb20vYmVoYXZpb3VyLyoQlsjN0vXVnQI&quot;&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://bennolan.com/behaviour/&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;developer.berlios.de/projects/bajax/*&quot; score=&quot;1&quot; timestamp=&quot;0x000476af5a53640d&quot; href=&quot;CiVkZXZlbG9wZXIuYmVybGlvcy5kZS9wcm9qZWN0cy9iYWpheC8qEI3IzdL11Z0C&quot;&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;https://developer.berlios.de/projects/bajax/&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;www.dojotoolkit.org/*&quot; score=&quot;1&quot; timestamp=&quot;0x000476af5a536406&quot; href=&quot;ChV3d3cuZG9qb3Rvb2xraXQub3JnLyoQhsjN0vXVnQI&quot;&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://www.dojotoolkit.org/&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;www.mochikit.com/*&quot; score=&quot;1&quot; timestamp=&quot;0x000476af5a536400&quot; href=&quot;ChJ3d3cubW9jaGlraXQuY29tLyoQgMjN0vXVnQI&quot;&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://www.mochikit.com/&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;openrico.org/rico/home.page&quot; score=&quot;1&quot; timestamp=&quot;0x000476af5a5363f9&quot; href=&quot;ChtvcGVucmljby5vcmcvcmljby9ob21lLnBhZ2UQ-cfN0vXVnQI&quot;&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://openrico.org/rico/home.page&quot; /&gt;
 &lt;/Annotation&gt;
 &lt;Annotation about=&quot;prototype.conio.net/*&quot; score=&quot;1&quot; timestamp=&quot;0x000476af5a5363eb&quot; href=&quot;ChVwcm90b3R5cGUuY29uaW8ubmV0LyoQ68fN0vXVnQI&quot;&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; /&gt;
 &lt;AdditionalData attribute=&quot;original_url&quot; value=&quot;http://prototype.conio.net&quot; /&gt;
 &lt;/Annotation&gt;
&lt;/Annotations&gt;</pre>
<p><strong>Context File</strong></p>
<pre class="brush: xml;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
&lt;CustomSearchEngine id=&quot;ytl_pcjhu6w&quot; creator=&quot;014105238919074316991&quot; keywords=&quot;php programming &amp;quot;web development&amp;quot;&quot; language=&quot;en&quot; encoding=&quot;UTF-8&quot;&gt;
 &lt;Title&gt;JSLSE&lt;/Title&gt;
 &lt;Description&gt;JavaScript Libraries Search Engine&lt;/Description&gt;
 &lt;Context&gt;
 &lt;Facet&gt;
 &lt;FacetItem&gt;
 &lt;Label name=&quot;manual&quot; mode=&quot;BOOST&quot;&gt;
 &lt;Rewrite&gt;&amp;quot;php manual&amp;quot; OR &amp;quot;java manual&amp;quot; OR &amp;quot;ruby manual&amp;quot; OR &amp;quot;groovy manual&amp;quot; OR &amp;quot;scala manual&amp;quot; OR &amp;quot;python manual&amp;quot;&lt;/Rewrite&gt;
 &lt;/Label&gt;
 &lt;Title&gt;Manual&lt;/Title&gt;
 &lt;/FacetItem&gt;
 &lt;/Facet&gt;
 &lt;BackgroundLabels&gt;
 &lt;Label name=&quot;_cse_ytl_pcjhu6w&quot; mode=&quot;BOOST&quot; /&gt;
 &lt;Label name=&quot;_cse_exclude_ytl_pcjhu6w&quot; mode=&quot;ELIMINATE&quot; /&gt;
 &lt;/BackgroundLabels&gt;
 &lt;/Context&gt;
 &lt;LookAndFeel&gt;
 &lt;Promotions show_image=&quot;true&quot; show_snippet=&quot;true&quot; /&gt;
 &lt;/LookAndFeel&gt;
 &lt;SubscribedLinks&gt;
 &lt;SubscribedLink creator=&quot;014105238919074316991&quot; /&gt;
 &lt;/SubscribedLinks&gt;
 &lt;AdSense /&gt;
 &lt;EnterpriseAccount /&gt;
&lt;/CustomSearchEngine&gt;</pre>
<img src="http://jeez.eu/?ak_action=api_record_view&id=679&type=feed" alt="" /><p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjeez.eu%2F2009%2F10%2F27%2Fuse-google%25e2%2580%2599s-power-to-create-powerfull-search-engines-part-ii%2F&amp;linkname=Use%20Google%E2%80%99s%20Power%20To%20Create%20Powerfull%20Search%20Engines%20%28Part%20II%29"><img src="http://jeez.eu/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jeez.eu/2009/10/27/use-google%e2%80%99s-power-to-create-powerfull-search-engines-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use Google&#8217;s Power To Create Powerfull Search Engines (Part I)</title>
		<link>http://jeez.eu/2009/10/24/use-googles-power-to-create-powerfull-search-engines-part-i/</link>
		<comments>http://jeez.eu/2009/10/24/use-googles-power-to-create-powerfull-search-engines-part-i/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 17:51:45 +0000</pubDate>
		<dc:creator>Kerasiotis Vasileios</dc:creator>
				<category><![CDATA[Services]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Search Engines]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://jeez.eu/?p=675</guid>
		<description><![CDATA[Did you know that you can use Google&#8217;s power to create custom search engines and then use them [...]]]></description>
			<content:encoded><![CDATA[<p>Did you know that you can use Google&#8217;s power to create custom search engines and then use them on your site or whenever you need them? Well, if you didn&#8217;t, then this post will try to provide some info about this feature.</p>
<p>To create a Google custom search, there are some simple steps you have to follow. First of all, you have to go to the<a title="Google Custom Search Engines" href="http://www.google.com/cse/" target="_blank"> Custom Search website</a> and click on the &#8220;Create a Custom Search Engine&#8221; button. The next screen will ask you some things about your search engine:</p>
<ul>
<li>Search Engine Name</li>
<li>Search Engine Description</li>
<li>Search Engine Language</li>
<li>What do you want to search<br />
This is where you decide where your search engine will look for results. There are 2 options:</p>
<ul>
<li>Entire web</li>
<li>Only sites I select</li>
</ul>
</li>
<li>Select some sites
<ul>
<li>Here you put the sites your search engine will look into. Put one site per line. You can also use wildcards for searching entire domains (eg: *.domain.com), entire sites (eg: www.domain.com/*) or parts of sites (eg: www.domain.com/*2009* for all pages within 2009).</li>
</ul>
</li>
<li>Select an edition<br />
This is where you specify the type of the search engine to use. There are 2 options here:</p>
<ul>
<li>Standard Edition: Free with ads</li>
<li>Business Edition: Starts at $100 per year, no ads on results pages.</li>
</ul>
</li>
</ul>
<p>The next screen will let you tryout your search engine. If the results are what you expected, you press on the &#8220;Finish&#8221; button and you are done. Your search engine is ready. A list with all your search engines will be displayed and you can visit it by just clicking on it&#8217;s name.</p>
<h3>Some Custom Search Engines Worth Visiting</h3>
<p>Here is a list of some neat engines we found and one that we created for you:</p>
<ul>
<li><a title="Wordpress Plugins Search" href="http://www.google.com/cse/home?cx=006835583451239722573:15duy8wtjos" target="_blank">WordPress Plugin Repository</a> &#8211; Searches wordpress.org plugin repository, for lack of a proper search engine</li>
<li><a title="Wordpress Dev Search" href="http://www.google.com/cse/home?cx=003089488824223329442%3Avwjqws2iu5u" target="_blank">Wordpress Search</a> &#8211; Search for sites relevant to wordpress development and deployment.</li>
<li><a title="Drupal Dev Search" href="http://www.google.com/cse/home?cx=005558135174622374984%3A18a39oisfvg" target="_blank">Drupal Developer Search Engine</a> &#8211; Search engine for Drupal developers to search many Drupal related sites.</li>
<li><a title="Drupal Modules Search" href="http://www.google.com/cse/home?cx=011986616253786226222:5wvlnrtbriw" target="_blank">Search Drupal Modules</a> &#8211; Ever had trouble finding that Drupal module you know just has to exist? Someone must have already created it&#8230; well now you can find it!</li>
<li><a title="Twitter Search" href="http://www.google.com/cse/home?cx=017195234153172777936:aqsxgxsvgyy" target="_blank">Twitter Search</a> &#8211; A Twitter Search Engine.</li>
<li><a title="Java Dev Search" href="http://www.google.com/cse/home?cx=002217755030015236847%3Aayqljzu73ye" target="_blank">Java Search Engine</a> &#8211; Java Programmers and Technical Search.</li>
<li><a title="JavaScript Libraries Search" href="http://www.google.com/cse/home?cx=014105238919074316991:ytl_pcjhu6w" target="_blank">JSLSE </a>- Our custom search engine. This one searches more than 10 JavaScript Libraries sites.</li>
</ul>
<h3>Beyond Simple CSEs</h3>
<p>After your custom search engine creation, you can use<a title="Control Panel" href="http://www.google.com/cse/panel/" target="_blank"> various tools</a> to personalize your search engine. For example you can change it&#8217;s look and feel, add annotations, link the search engine to your Adsense account and earn money, promote some sites to appear higher than the others based on specific queries, refine the results and you can also invite up to 100 friends to contribute to your search engine. There are usage statistics provided for your CSE too.</p>
<p>If you invite someone to contribute, he/she will be able to add refinements to your CSE and use the <a title="Google Marker" href="http://www.google.com/cse/tools/marker" target="_blank">Google Marker</a> bookmarklet which allows the user to add refinements and labels to pages. You will also be able to use their refinements too.</p>
<p>The Control Panel is a great way to customize your CSEs but if you want to go further, you should learn<a title="CSEs API" href="http://code.google.com/intl/en/apis/customsearch/docs/basics.html" target="_blank"> how to use the XML or TSV custom search format</a>.</p>
<h3>Defining CSE Specifications</h3>
<p>A basic specifications file looks like this:</p>
<pre class="brush: xml;">&lt;CustomSearchEngine volunteers=&quot;false&quot;
 keywords=&quot;climate &amp;quot;global warming&amp;quot; &amp;quot;greenhouse gases&amp;quot;&quot;
 language=&quot;en&quot;
 visible=&quot;false&quot;
 encoding=&quot;UTF-8&quot;&gt;
 &lt;Title&gt;RealClimate&lt;/Title&gt;
 &lt;Description&gt;Science behind global warming and climate change.&lt;/Description&gt;
 &lt;Context&gt;
 &lt;BackgroundLabels&gt;
 &lt;Label name=&quot;_cse_hwbuiarvsbo&quot; mode=&quot;FILTER&quot;/&gt;
 &lt;Label name=&quot;_cse_exclude_hwbuiarvsbo&quot; mode=&quot;ELIMINATE&quot;/&gt;
 &lt;/BackgroundLabels&gt;
 &lt;/Context&gt;
 &lt;LookAndFeel nonprofit=&quot;false&quot;/&gt;
&lt;/CustomSearchEngine&gt;</pre>
<p>and includes the following elements:</p>
<ul>
<li>CustomSearchEngine
<ul>
<li>Title</li>
<li>Description</li>
</ul>
<ul>
<li>Context
<ul>
<li>BackgroundLabels
<ul>
<li>Label</li>
</ul>
</li>
</ul>
</li>
<li>LookAndFeel</li>
</ul>
</li>
</ul>
<p>There are also some optional elements that you can use between the Context element. These are:</p>
<ul>
<li><strong>SubscribedLinks</strong><br />
Enables subscribed links in your search results page. Subscribed links is a form of special results that you create for a set of pre-defined queries. It is a way to directly answer your users&#8217; questions in the results page.</li>
<li><strong>AdSense</strong><br />
Associates the search engine with your AdSense account. Make money with your custom search engine by connecting it with your Google AdSense account.</li>
<li><strong>Enterprise Account</strong><br />
If you upgraded to Google Site Search, it lists your contact information. You can change the attribute values to update your information.</li>
</ul>
<h3>Selecting Sites to Search With XML</h3>
<p>If you want to create a simple CSE with 2 &#8211; 10 sites&#8217;s results included, then the Control Panel is what you are looking for. But, if you want to use more than 50 or 100 sites in your search engine, then the best thing to do is to list all sites in a file and upload it.  You can create annotations files using 3 formats:</p>
<ol>
<li>OPML &#8211; Outline Processor Markup Language</li>
<li>TSV &#8211; Tab Separated Values</li>
<li>XML</li>
</ol>
<p>The most powerful but also the most complex format is XML. You can do anything that the CSE API allows you to do with this format. TSV is easier but with some restrictions on features and OPML is the easiest format to use since it allows you to use already made annotations files but you have less features from the other 2 formats.</p>
<h4>The OPML Format</h4>
<p>OPML is a type of XML format that was originally developed for defining ordered lists of elements or outlines, but it is now also commonly used for web feeds. If you have OPML files from some feed aggregators, you can upload the OPML file without bothering with typing each site. Custom Search grabs the value of the OPML attribute htmlUrl and adds it to the list of sites to search. You can upload multiple OPML files for each of your search engines.</p>
<p>Example OPML File:</p>
<pre class="brush: xml;">&lt;opml version=&quot;1.0&quot;&gt;
 &lt;head&gt;
 &lt;title&gt;Bicycles&lt;/title&gt;
 &lt;dateCreated&gt;Fri Mar 14 23:21:11 PDT 2008&lt;/dateCreated&gt;
 &lt;dateModified&gt;Fri Mar 14 23:21:11 PDT 2008&lt;/dateModified&gt;
 &lt;/head&gt;

 &lt;body&gt;
 &lt;outline type=&quot;rss&quot; text=&quot;Road Bikes&quot; xmlUrl=&quot;http://www.google.com/exampleurl.opml&quot; htmlUrl=&quot;http://www.google.com/sampleurl1.opml&quot;/&gt;
 &lt;outline type=&quot;rss&quot; text=&quot;Mountain Bikes&quot; xmlUrl=&quot;http://www.google.com/exampleurl2.opml&quot; htmlUrl=&quot;http://www.google.com/sampleurl2.opml&quot;/&gt;
 &lt;/body&gt;
&lt;/opml&gt;</pre>
<h4>The TSV Format</h4>
<p>The easiest format to create is the TSV. The only thing to do, is to open your spreadsheet editor and allocate a column for each of the fields. Save the file with a <strong>.tsv</strong> extension and upload it. The TSV file should have a specified format. The 2 required fields are:</p>
<ul>
<li>URL</li>
<li>Label</li>
</ul>
<p>and there are 3 optional fields:</p>
<ul>
<li>Comment</li>
<li>Score</li>
<li>Custom field &#8211; This one is a field that you can add for your reference since it does not affect the search engine. To create one, you must prefix it with &#8220;A=&#8221;. For example A=Contributor</li>
</ul>
<p>Example TSV file:</p>
<p>URL     Label     Comment     A=Contributor<br />
www.cancer.gov/cancertopics/types/liver/*     _cse_Ansi-stoubiq    government site     John<br />
www.medicinenet.com/liver_cancer/*     _cse_Ansi-stoubiq     site on symptoms     Bill<br />
www.webmd.com/hw/cancer/*     _cse_Ansi-stoubiq     great site for patients!     John<br />
www.oncologychannel.com/*/treatment     _cse_Ansi-stoubiq     Steve</p>
<h4><strong>The XML Format</strong></h4>
<p>To get the most out of your CSE, you should use the XML format. There are 3 ways to use this format:</p>
<ol>
<li>One Annotations file per CSE</li>
<li>One Annotations file for all your CSEs</li>
<li>Context files with inline annotations</li>
</ol>
<p>You can use any of the ways above since you can always change the way by just copy pasting. The following is an example of XML annotations. It is roughly the XML version of the TSV example in the previous section. It includes the same elements, except for custom attributes, which are available only in the TSV format. This annotations file tells Custom Search to include everything under www.webmd.com/hw/* but exclude everything under www.webmd.com/hw/cancer/*:</p>
<p>Example XML File:</p>
<pre class="brush: xml;">&lt;Annotations&gt;

 &lt;Annotation about=&quot;www.cancer.gov/cancertopics/types/liver/*&quot;&gt;
 &lt;Label name=&quot;_cse_Ansi-stoubiq&quot;/&gt;
 &lt;Comment&gt;government site&lt;/Comment&gt;
 &lt;/Annotation&gt;

 &lt;Annotation about=&quot;www.medicinenet.com/liver_cancer/&quot;&gt;
 &lt;Label name=&quot;_cse_exclude_Ansi-stoubiq&quot;/&gt;
 &lt;Comment&gt;site on symptoms&lt;/Comment&gt;
 &lt;/Annotation&gt;

 &lt;Annotation about=&quot;www.webmd.com/hw/cancer/*&quot;&gt;
 &lt;Label name=&quot;_cse_exclude_Ansi-stoubiq&quot;/&gt;
 &lt;Comment&gt;great sites for patients!&lt;/Comment&gt;
 &lt;/Annotation&gt;

 &lt;Annotation about=&quot;www.oncologychannel.com/*/treatment&quot;&gt;
 &lt;Label name=&quot;_cse_exclude_Ansi-stoubiq&quot;/&gt;
 &lt;/Annotation&gt;

 &lt;/Annotations&gt;</pre>
<h4>Hosting Your Annotations File On Your Own Server</h4>
<p>Google allows you to host your own annotations on your server and to be able to use more than 5000 annotations, create annotations with scripting languages like PHP and update it as frequently as you want. To host your annotations, you have to create the file, upload it to your host and tell the CSE where to find this file. You can link annotation files together and use a large number of annotations that end up to 50 files!!</p>
<p>Example External Annotations:</p>
<pre class="brush: xml;">&lt;GoogleCustomizations&gt;
 &lt;Include type=&quot;Annotations&quot; href=&quot;http://www.yoursite.com/cse_bacon_annotations.xml&quot; /&gt;
&lt;GoogleCustomizations&gt;</pre>
<h4>Tweak The Ranking of Your CSE</h4>
<p>You can also change the way your CSE ranks the results. For any reason, you might want to change the way the results are ranked. This can be done by using keywords, weighted labels and scores. While keywords and weighted labels are defined in the Context, scores are defined in the annotations file.</p>
<h4>Keywords</h4>
<p>With keywords, you can quickly change the results. Your CSE will boost pages that contain your keywords.</p>
<p>Keywords example:</p>
<pre class="brush: xml;">&lt;CustomSearchEngine volunteers=&quot;false&quot;
 keywords=&quot;asana &amp;quot;yoga postures&amp;quot;&quot;&gt;
 &lt;/CustomSearchEngine&gt;</pre>
<h4>Labels</h4>
<p>You can use two kinds of labels: search engine labels and refinement labels. Search engine labels determine which sites should be covered by the search engine.Refinement labels, on the other hand, are visible to your users and show up as links.</p>
<p>Search Engine Labels example:</p>
<pre class="brush: xml;">&lt;BackgroundLabels&gt;
 &lt;Label name=&quot;_cse_hwbuiarvsbo&quot; mode=&quot;FILTER&quot;/&gt;
 &lt;Label name=&quot;_cse_exclude_hwbuiarvsbo&quot; mode=&quot;ELIMINATE&quot;/&gt;
 &lt;/BackgroundLabels&gt;</pre>
<p>Refinement Label example:</p>
<pre class="brush: xml;">&lt;Facet&gt;
 &lt;FacetItem title=&quot;Lectures&quot;&gt;
 &lt;Label name=&quot;lectures&quot; mode=&quot;BOOST&quot; weight=&quot;0.8&quot;&gt;
 &lt;Rewrite&gt;lecture OR lectures&lt;/Rewrite&gt;
 &lt;/Label&gt;
 &lt;/FacetItem&gt;
 &lt;/Facet&gt;</pre>
<p>Whether a site is promoted, demoted, or excluded depends on the search engine label it is associated with. A search engine label can have the following modes:</p>
<ul>
<li>ELIMINATE<br />
Excludes sites tagged with this label from your search engine.</li>
<li>FILTER<br />
Includes only sites tagged with this label, and excludes everything else.</li>
<li>BOOST<br />
Show sites tagged with this label higher in the results.</li>
</ul>
<h4>Weights</h4>
<p>Weights let you define how much a label should promote or demote a tagged site. The values for weights can range from -1.0 to +1.0. The weight range gives you fairly refined control over sites. A positive weight in the label emphasizes sites tagged with it, while a negative weight, de-emphasizes.</p>
<p>A weighted label example:</p>
<pre class="brush: xml;">&lt;BackgroundLabels&gt;
 &lt;Label name=&quot;_cse_hwbuiarvsbo&quot; mode=&quot;FILTER&quot; weight=&quot;0.65&quot;/&gt;
 &lt;Label name=&quot;_cse_exclude_hwbuiarvsbo&quot; mode=&quot;ELIMINATE&quot;/&gt;
 &lt;/BackgroundLabels&gt;</pre>
<p>A very useful attribute of the Label element is &#8220;top&#8221;. You can manualy set the order of your rankings this way:</p>
<pre class="brush: xml;">&lt;Label name=&quot;best_resource&quot; mode=&quot;FILTER&quot; top=&quot;3&quot;/&gt;</pre>
<h4>Tagging Sites</h4>
<p>You can tag your annotations with your labels this way:</p>
<pre class="brush: xml;">&lt;Annotations&gt;
 &lt;Annotation about=&quot;webcast.berkeley.edu/*&quot; score=&quot;1&quot;&gt;
 &lt;Label name=&quot;cse_university_boost_highest&quot;/&gt;
 &lt;Label name=&quot;cse_bicycles_exclude&quot;/&gt;
 &lt;Label name=&quot;cse_hamsters_filter&quot;/&gt;
 &lt;/Annotation&gt;</pre>
<h4>Scores</h4>
<p>Scores are used to order sites using the same label. So you can order a site this way:</p>
<pre class="brush: xml;">&lt;Annotations&gt;

 &lt;Annotation about=&quot;*.edu/*&quot; score=&quot;0.0001&quot;&gt;
 &lt;Label name=&quot;vision_label&quot;/&gt;
 &lt;/Annotation&gt;

 &lt;Annotation about=&quot;*.ucsd.edu/*&quot; score=&quot;0.7&quot;&gt;
 &lt;Label name=&quot;vision_label&quot;/&gt;
 &lt;/Annotation&gt;

 &lt;Annotation about=&quot;*.vision.ucsd.edu/*&quot; score=&quot;1&quot;&gt;
 &lt;Label name=&quot;vision_label&quot;/&gt;
 &lt;/Annotation&gt;

&lt;/Annotations&gt;</pre>
<p>I hope this info was of some value to you. On the second part of this article, we will cover some special aspects of Custom Search Engines like search suggestions, appending queries, special results, subscribed results, look and feel and we will also create a custom search engine that will use all the features covered in the 2 articles.</p>
<img src="http://jeez.eu/?ak_action=api_record_view&id=675&type=feed" alt="" /><p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjeez.eu%2F2009%2F10%2F24%2Fuse-googles-power-to-create-powerfull-search-engines-part-i%2F&amp;linkname=Use%20Google%26%238217%3Bs%20Power%20To%20Create%20Powerfull%20Search%20Engines%20%28Part%20I%29"><img src="http://jeez.eu/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jeez.eu/2009/10/24/use-googles-power-to-create-powerfull-search-engines-part-i/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
