<?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; Google</title>
	<atom:link href="http://jeez.eu/tag/google/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>2000 to 2010. A Decade Of Wonders</title>
		<link>http://jeez.eu/2009/12/04/2000-to-2010-a-decade-of-wonders/</link>
		<comments>http://jeez.eu/2009/12/04/2000-to-2010-a-decade-of-wonders/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 19:56:49 +0000</pubDate>
		<dc:creator>Kerasiotis Vasileios</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Wave]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://jeez.eu/?p=962</guid>
		<description><![CDATA[Since we move into a new decade in less than a month, I researched a little and tried [...]]]></description>
			<content:encoded><![CDATA[<p>Since we move into a new decade in less than a month, I researched a little and tried to find what happened during the decade from 2000 to 2010 in the programming world, and web developing in general, as well as some major events about Internet and computing. I run across many programming languages, frameworks and projects that really deserve to have a spot in this decade&#8217;s history. Most texts are from Wikipedia and the list is a compilation of personal consumptions about which event was bigger and deserved to be mentioned. </p>
<p>I would also like to state that I might have missed some events and it would be great if you add your favorite ones in the comments.</p>
<p>Here is a list of what I found:</p>
<h3>2000</h3>
<ul>
<li>Official Launch of Windows 2000 &#8211; Microsoft&#8217;s replacement for Windows 95/98 and Windows NT.</li>
<li>Be Inc. released BeOS R5 for PowerPC and x86, which was the first release of BeOS for x86 to have a freely downloadable version which could be fully installed on a user&#8217;s hard drive.</li>
<li>eDonkey2000 client and server software is released by Jed McCaleb, introducing hashing into decentralized file sharing.</li>
<li>Netscape6, K-Meleon and Galeon web browsers born from Mozilla. This was also the year for Konqueror.</li>
</ul>
<h4><a target="_blank" title="C#" mce_href="msdn.microsoft.com/en-us/vcsharp/aa336809.aspx" href="msdn.microsoft.com/en-us/vcsharp/aa336809.aspx">C#</a><br mce_bogus="1"></h4>
<p><img class="alignright size-full wp-image-976" title="csharp" src="http://jeez.eu/wp-content/uploads/2009/12/csharp.png" mce_src="http://jeez.eu/wp-content/uploads/2009/12/csharp.png" alt="csharp" width="128" height="128">This is the year where C# was born. C# is intended to be a simple, modern, general-purpose, object-oriented programming language. Its development team is led by Anders Hejlsberg, the designer of Borland&#8217;s Turbo Pascal, who has said that its object-oriented syntax is based on C++ and other languages. James Gosling, who created the Java programming language in 1994, called it an &#8216;imitation&#8217; of that language. The most recent version is C# 3.0, which was released in conjunction with the .NET Framework 3.5 in 2007. The next proposed version, 4.0, is in development.</p>
<h3>2001</h3>
<ul>
<li>Apple released Mac OS X. At its heart is Darwin, an Open Source operating system based on BSD.</li>
<li>Microsoft released Windows XP, based on Windows 2000 and Windows NT kernel.</li>
<li>BitTorrent released by Bram Cohen.</li>
</ul>
<h4><a target="_blank" title="Drupal" mce_href="http://www.drupal.org" href="http://www.drupal.org">Drupal</a><br mce_bogus="1"></h4>
<p><img class="alignright size-thumbnail wp-image-969" title="drupal-logo" src="http://jeez.eu/wp-content/uploads/2009/12/drupal-logo-150x150.png" mce_src="http://jeez.eu/wp-content/uploads/2009/12/drupal-logo-150x150.png" alt="drupal-logo" width="150" height="150">Originally written by Dries Buytaert as a message board, Drupal became an open source project in 2001. Drupal is an English rendering of the Dutch word “druppel”, which means “drop” (as in “a water droplet”). The name was taken from the now-defunct Drop.org website, whose code slowly evolved into Drupal. Buytaert wanted to call the site “dorp” (Dutch for “village”) for its community aspects, but made a typo when checking the domain name and thought it sounded better.</p>
<p>Drupal is now considered one of the most sophisticated content management systems in the world with millions of installations and thousands of people involved in it&#8217;s development.</p>
<h4><a target="_blank" title="Visual Basic.net" mce_href="http://www.microsoft.com/express/vb/Default.aspx" href="http://www.microsoft.com/express/vb/Default.aspx">Visual Basic.NET</a><br mce_bogus="1"></h4>
<p><img class="alignright size-thumbnail wp-image-971" title="visualstudio_logo" src="http://jeez.eu/wp-content/uploads/2009/12/visualstudio_logo-150x117.jpg" mce_src="http://jeez.eu/wp-content/uploads/2009/12/visualstudio_logo-150x117.jpg" alt="visualstudio_logo" width="150" height="117">Visual Basic.NET is the evolved Visual Basic. Visual Basic .NET (VB.NET) is an object-oriented computer programming language that can be viewed as an evolution of Microsoft&#8217;s Visual Basic (VB) which is implemented on the Microsoft .NET Framework. Microsoft currently supplies Visual Basic free of charge.</p>
<h3>2002</h3>
<ul>
<li>eMule is released and soon becomes the eDonkey2000 network&#8217;s most popular client.</li>
<li>Suprnova.org torrent index goes online.</li>
<li>Blogs go popular</li>
<li>Camino, Firefox and Epiphany was born.</li>
</ul>
<h3>2003</h3>
<ul>
<li>The Pirate Bay (TPB) bittorrent tracker is founded by Gottfrid Svartholm, Fredrik Neij, and Peter Sunde. It is based in Sweden.</li>
<li>The Safari web browser was created.</li>
</ul>
<h4><a target="_blank" title="Wordpress" mce_href="http://www.wordpress.org" href="http://www.wordpress.org">Wordpress</a><br mce_bogus="1"></h4>
<p><img class="alignright size-full wp-image-973" title="wordpress" src="http://jeez.eu/wp-content/uploads/2009/12/wordpress.png" mce_src="http://jeez.eu/wp-content/uploads/2009/12/wordpress.png" alt="wordpress" width="128" height="128">WordPress is an open source blog publishing application and can be used for basic content management. It was first released in May 2003 by its co-founders Matt Mullenweg and Mike Little as the successor to b2/cafelog. It is powered by PHP and a MySQL data back-end.</p>
<p>As of September 2009, Wordpress is used by 62.8 million websites in the US and 202 million websites worldwide. It won the best overall CMS award from <a href="http://www.packtpub.com/" mce_href="http://www.packtpub.com/" target="_blank">Packt publishing</a> last month.</p>
<h3><a target="_blank" title="Delicious" mce_href="http://delicious.com" href="http://delicious.com">Delicious</a><br mce_bogus="1"></h3>
<p><img class="alignright size-full wp-image-975" title="delicious" src="http://jeez.eu/wp-content/uploads/2009/12/delicious.png" mce_src="http://jeez.eu/wp-content/uploads/2009/12/delicious.png" alt="delicious" width="127" height="128">The precursor to Delicious was Muxway, a link blog that had grown out of a text file that Schachter maintained to keep track of links related to Memepool.</p>
<p>In September 2003, Schachter released the first version of Delicious.&nbsp; In March 2005, he left his day job to work on Delicious full-time, and in April 2005 it received approximately $2 million in funding from investors including Union Square Ventures and Amazon.com.</p>
<p>Yahoo! acquired Delicious on December 9, 2005.</p>
<h4><a target="_blank" title="Scala" mce_href="http://www.scala-lang.org/" href="http://www.scala-lang.org/">Scala</a><br mce_bogus="1"></h4>
<p><img class="alignright size-thumbnail wp-image-978" title="Scala_Logo2008" src="http://jeez.eu/wp-content/uploads/2009/12/Scala_Logo2008-150x44.png" mce_src="http://jeez.eu/wp-content/uploads/2009/12/Scala_Logo2008-150x44.png" alt="Scala_Logo2008" width="150" height="44">The design of Scala started in 2001 at the École Polytechnique Fédérale de Lausanne (EPFL) by Martin Odersky, following on from work on Funnel, a programming language combining ideas from functional programming and Petri nets. Odersky had previously worked on Generic Java and javac, Sun&#8217;s Java compiler. Scala was released late 2003 / early 2004 on the Java platform, and on the .NET platform in June 2004. A second version of the language, v2.0, was released in March 2006.</p>
<h3>2004</h3>
<ul>
<li>Mozilla Firefox 1.0 released, Microsoft Internet Explorer&#8217;s biggest competitor since Netscape Navigator.</li>
</ul>
<h4><a target="_blank" title="Facebook" mce_href="http://www.facebook.com" href="http://www.facebook.com">Facebook</a><br mce_bogus="1"></h4>
<p><img class="alignright size-full wp-image-979" title="facebook" src="http://jeez.eu/wp-content/uploads/2009/12/facebook.png" mce_src="http://jeez.eu/wp-content/uploads/2009/12/facebook.png" alt="facebook" width="128" height="123">Mark Zuckerberg invented Facemash on October 28, 2003 while attending Harvard as a sophomore. The site represented a Harvard University version of Hot or Not, according to the Harvard Crimson. That night, Zuckerberg was blogging about a girl who had dumped him and trying to think of something to do to get her off his mind.</p>
<p>Today, Facebook has reached 350 million registered users, it worths more than 5 billion us dollars and is one of the most searched keywords on Google.</p>
<h4><a target="_blank" title="Flickr" mce_href="http://www.flickr.com" href="http://www.flickr.com">Flickr</a><br mce_bogus="1"></h4>
<p><img class="alignright size-full wp-image-980" title="flickr" src="http://jeez.eu/wp-content/uploads/2009/12/flickr.png" mce_src="http://jeez.eu/wp-content/uploads/2009/12/flickr.png" alt="flickr" width="128" height="128">Flickr was developed by Ludicorp, a Vancouver-based company that launched Flickr in February 2004. The service emerged out of tools originally created for Ludicorp&#8217;s Game Neverending, a web-based massively multiplayer online game. Flickr proved a more feasible project and ultimately Game Neverending was shelved.</p>
<p>Today Flickr is the place for users to share personal photographs, the service is widely used by bloggers as a photo repository.</p>
<h4><a target="_blank" title="Groovy" mce_href="http://groovy.codehaus.org" href="http://groovy.codehaus.org">Groovy</a><br mce_bogus="1"></h4>
<p><img class="alignright size-thumbnail wp-image-981" title="groovy-logo" src="http://jeez.eu/wp-content/uploads/2009/12/groovy-logo-150x74.png" mce_src="http://jeez.eu/wp-content/uploads/2009/12/groovy-logo-150x74.png" alt="groovy-logo" width="150" height="74">Groovy is an object-oriented programming language for the Java platform, and is the second standard language for the Java platform, the first being the Java programming language. It is a dynamic language with features similar to those of Python, Ruby, Perl, and Smalltalk. It can be used as a scripting language for the Java Platform.</p>
<h3>2005</h3>
<ul>
<li>The social browser &#8220;Flock&#8221; was born. It integrated many web services (blogger, Flickr etc) built into the browser.</li>
</ul>
<h4><a target="_blank" title="Joomla" mce_href="http://www.joomla.org" href="http://www.joomla.org">Joomla</a><br mce_bogus="1"></h4>
<p><img class="alignright size-thumbnail wp-image-341" title="joomla_logo" src="http://jeez.eu/wp-content/uploads/2009/09/joomla_logo-150x101.jpg" mce_src="http://jeez.eu/wp-content/uploads/2009/09/joomla_logo-150x101.jpg" alt="joomla_logo" width="150" height="101">Joomla! came into being as the result of the fork of Mambo by the development team on August 17, 2005. At that time, the Mambo name was trademarked by Miro International Pvt Ltd, who formed a non-profit foundation with the stated purpose to fund the project and protect it from lawsuits.</p>
<p>By October, 2009, the 2009 Open Source CMS Market Share Report reached the conclusion that Joomla! is the web&#8217;s most popular open source content management system. That conclusion was based on an extensive analysis of rate of adoption patterns and brand strength and was backed by a survey of users.</p>
<h4><a target="_blank" title="Zend Framework" mce_href="http://framework.zend.com" href="http://framework.zend.com">Zend Framework</a><br mce_bogus="1"></h4>
<p><img class="alignright size-thumbnail wp-image-983" title="zend_framework_logo" src="http://jeez.eu/wp-content/uploads/2009/12/zend_framework_logo-150x78.png" mce_src="http://jeez.eu/wp-content/uploads/2009/12/zend_framework_logo-150x78.png" alt="zend_framework_logo" width="133" height="70">The Zend framework was PHP&#8217;s reply on frameworks like Ruby on Rails and the Spring Framework. Today, Zend framework is one of the most used and powerful PHP frameworks. Zend framework&#8217;s libraries can be used as separate libraries without using the rest of the framework.</p>
<h4><a target="_blank" title="Symfony" mce_href="http://www.symfony-project.org" href="http://www.symfony-project.org">Symfony</a><br mce_bogus="1"></h4>
<p><img class="alignright size-thumbnail wp-image-985" title="symfony-logo" src="http://jeez.eu/wp-content/uploads/2009/12/symfony-logo-150x40.gif" mce_src="http://jeez.eu/wp-content/uploads/2009/12/symfony-logo-150x40.gif" alt="symfony-logo" width="150" height="40">Symfony is a web application framework written in PHP which follows the model-view-controller (MVC) paradigm. Released under the MIT license, Symfony is free software. Yahoo! used Symfony for it&#8217;s bookmarks and answers services. Delicious uses Symfony and Dailymotion also ported it&#8217;s code to use Symfony.</p>
<h4><a target="_blank" title="F#" mce_href="http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/" href="http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/">F#</a><br mce_bogus="1"></h4>
<p><img class="alignright size-thumbnail wp-image-986" title="fsharp" src="http://jeez.eu/wp-content/uploads/2009/12/fsharp-150x50.gif" mce_src="http://jeez.eu/wp-content/uploads/2009/12/fsharp-150x50.gif" alt="fsharp" width="150" height="50">F# is a strongly typed language that uses type inference. As a result, data types need not be explicitly declared by the programmer; they will be deduced by the compiler during compilation. However, F# also allows explicit data type declaration. Being a .NET language, F# supports .NET types and objects. But it extends the type system and categorizes types as immutable types or mutable types.</p>
<h3>2006</h3>
<ul>
<li>AmigaOS 4 was released by Hyperion Entertainment (VOF) under license from Amiga, Inc. for AmigaOne registered users.</li>
</ul>
<h4><a target="_blank" title="jQuery" mce_href="http://jquery.com" href="http://jquery.com">jQuery</a><br mce_bogus="1"></h4>
<p><img class="alignright size-thumbnail wp-image-114" title="jquery" src="http://jeez.eu/wp-content/uploads/2009/09/jquery-150x106.jpg" mce_src="http://jeez.eu/wp-content/uploads/2009/09/jquery-150x106.jpg" alt="jquery" width="150" height="106">jQuery was born that year. jQuery is a lightweight JavaScript library that emphasizes interaction between JavaScript and HTML. It was released in January 2006 at BarCamp NYC by John Resig.&nbsp; jQuery managed to become the de facto tool to use, to perform complex Dom manipulation and website behavior varying from animation effects to form validation and Ajax.</p>
<p>Hundreds of jquery plugins are available in the official plugins directory and every day more plugins are created from jQuery users.</p>
<h4><a target="_blank" title="Twitter" mce_href="http://www.twitter.com" href="http://www.twitter.com">Twitter</a><br mce_bogus="1"></h4>
<p><img class="alignright size-full wp-image-953" title="twitter" src="http://jeez.eu/wp-content/uploads/2009/12/twitter.png" mce_src="http://jeez.eu/wp-content/uploads/2009/12/twitter.png" alt="twitter" width="128" height="128">Twitter began in a &#8220;daylong brainstorming session&#8221; that was held by board members of the podcasting company Odeo in an attempt to break out of a creative slump. At that meeting Jack Dorsey introduced the idea of an individual using an SMS service to communicate with a small group, a concept partly inspired by the SMS group messaging service TXTMob.</p>
<p>Today Twitter is the SMS of the Internet. It is one of the most promising social networks and many start-ups use it&#8217;s API for offering services based on Twitter.</p>
<h3>2007</h3>
<ul>
<li>Microsoft Corporation launches Windows Vista</li>
</ul>
<h4><a target="_blank" title="Clojure" mce_href="http://clojure.org" href="http://clojure.org">Clojure</a><br mce_bogus="1"></h4>
<p><img class="alignright size-full wp-image-988" title="clojure" src="http://jeez.eu/wp-content/uploads/2009/12/clojure.jpg" mce_src="http://jeez.eu/wp-content/uploads/2009/12/clojure.jpg" alt="clojure" width="125" height="125">Clojure (pronounced like closure) is a modern dialect of the Lisp programming language. It is a general-purpose language supporting interactive development that encourages a functional programming style which enables simplified multithreaded programming.</p>
<p>Clojure runs on the Java Virtual Machine and the Common Language Runtime. Clojure honors the code-as-data philosophy and has a sophisticated Lisp macro system.</p>
<h3>2008</h3>
<ul>
<li>Netscape dropped support for &#8220;Netscape Navigator&#8221;.</li>
<li>Google&#8217;s web browser, Google Chrome debuted. It will later be used as the base for Chrome OS.</li>
</ul>
<h4><a target="_blank" title="YQL" mce_href="http://developer.yahoo.com/yql/" href="http://developer.yahoo.com/yql/">YQL</a><br mce_bogus="1"></h4>
<p><img class="alignright size-full wp-image-993" title="yql128" src="http://jeez.eu/wp-content/uploads/2009/12/yql128.gif" mce_src="http://jeez.eu/wp-content/uploads/2009/12/yql128.gif" alt="yql128" width="128" height="128">Yahoo! query language (YQL) is an SQL-like query language created by Yahoo! as part of their Developer Network. YQL is designed to retrieve and manipulate data from APIs through a single Web interface, thus allowing mashups that enable developers to create their own applications.</p>
<p>Initially launched in October 2008 with access to Yahoo APIs, February 2009 saw the addition of open data tables from third parties such as Google Reader, the Guardian, and The New York Times. Some of these APIs still require an API key to access them. On April 29th of 2009, Yahoo introduced the capability to execute the tables of data built through YQL using JavaScript run on the company&#8217;s servers for free.</p>
<h3>2009</h3>
<ul>
<li>Microsoft releases Windows 7, two years after Windows Vista was released.</li>
</ul>
<h4><a target="_blank" title="Opera Unite" mce_href="http://unite.opera.com" href="http://unite.opera.com">Opera Unite</a><br mce_bogus="1"></h4>
<p><img src="http://jeez.eu/wp-content/uploads/2009/12/Unite-150x111.jpg" mce_src="http://jeez.eu/wp-content/uploads/2009/12/Unite-150x111.jpg" alt="Unite" title="Unite" class="alignright size-thumbnail wp-image-995" width="150" height="111">Opera Unite is an extensible framework that allows for several web services to be hosted from the user&#8217;s computer, including a web server for hosting a site, file and photo sharing, chat room, and streaming media. Opera ASA has given the Opera Community the API to create new or improved services for the Opera Unite Platform, and many have already done so. An Opera Unite user&#8217;s running services can be accessed from a dedicated web page hosted on the user&#8217;s Opera Community account, and can be accessed by any browser (though the host must use Opera).</p>
<h4><a target="_blank" title="Chrome OS" mce_href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html" href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html">Chrome OS</a><br mce_bogus="1"></h4>
<p><img class="alignright size-full wp-image-989" title="chrome" src="http://jeez.eu/wp-content/uploads/2009/12/chrome.png" mce_src="http://jeez.eu/wp-content/uploads/2009/12/chrome.png" alt="chrome" width="128" height="128">At November 19,&nbsp; Sundar Pichai, the Google vice president overseeing Chrome, demonstrated an early version of the operating system, which included a desktop that closely resembled the Chrome browser, but with tabs for frequently used Web-based applications. The netbook running the operating system booted up in seven seconds, a time Google is working to improve.</p>
<p>Chrome OS is an open source operating system based on Linux kernel and uses Chrome as it&#8217;s UI.</p>
<h4><a target="_blank" title="Google Wave" mce_href="http://wave.google.com" href="http://wave.google.com">Google Wave</a><br mce_bogus="1"></h4>
<p><img class="alignright size-thumbnail wp-image-990" title="wavelogo" src="http://jeez.eu/wp-content/uploads/2009/12/wavelogo-150x150.png" mce_src="http://jeez.eu/wp-content/uploads/2009/12/wavelogo-150x150.png" alt="wavelogo" width="150" height="102">Google Wave is a self-described &#8220;personal communication and collaboration tool&#8221; announced by Google at the Google I/O conference on May 27, 2009. It is a web-based service, computing platform, and communications protocol designed to merge e-mail, instant messaging, wikis, and social networking.</p>
<h4><a target="_blank" title="Closure" mce_href="http://code.google.com/closure/" href="http://code.google.com/closure/">Closure</a><br mce_bogus="1"></h4>
<p><img src="http://jeez.eu/wp-content/uploads/2009/12/closure.png" mce_src="http://jeez.eu/wp-content/uploads/2009/12/closure.png" alt="closure" title="closure" class="alignright size-full wp-image-996" width="128" height="128">The Closure Library is a broad, well-tested, modular, and cross-browser JavaScript library. You can pull just what you need from a large set of reusable UI widgets and controls, and from lower-level utilities for DOM manipulation, server communication, animation, data structures, unit testing, rich-text editing, and more. The Closure Library is server-agnostic, and is intended for use with the Closure Compiler.</p>
<p>The Closure Compiler compiles JavaScript into compact, high-performance code. The compiler removes dead code and rewrites and minimizes what&#8217;s left so that it downloads and runs quickly. It also also checks syntax, variable references, and types, and warns about common JavaScript pitfalls.</p>
<h4><a target="_blank" title="Go" mce_href="http://golang.org/" href="http://golang.org/">Google Go</a><br mce_bogus="1"></h4>
<p><img class="alignright size-thumbnail wp-image-991" title="go-logo-black" src="http://jeez.eu/wp-content/uploads/2009/12/go-logo-black-150x52.png" mce_src="http://jeez.eu/wp-content/uploads/2009/12/go-logo-black-150x52.png" alt="go-logo-black" width="150" height="52">The initial design of Go was started in September 2007 by Robert Griesemer, Rob Pike and Ken Thompson, building on previous work related to the Inferno operating system. Go was officially announced in November 2009, with implementations released for the Linux and Mac OS X platforms.</p>
<p></p>
<p><b>What events occured in this decade that are your favorites? Please drop a comment and tell us!</b></p>
<img src="http://jeez.eu/?ak_action=api_record_view&id=962&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%2F12%2F04%2F2000-to-2010-a-decade-of-wonders%2F&amp;linkname=2000%20to%202010.%20A%20Decade%20Of%20Wonders"><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/12/04/2000-to-2010-a-decade-of-wonders/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>How I Imagine Google Chrome OS</title>
		<link>http://jeez.eu/2009/11/14/how-i-imagine-google-chrome-os/</link>
		<comments>http://jeez.eu/2009/11/14/how-i-imagine-google-chrome-os/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 15:56:07 +0000</pubDate>
		<dc:creator>Kerasiotis Vasileios</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://jeez.eu/?p=819</guid>
		<description><![CDATA[Based on the latest rumors, Google is about to release Chrome OS (Google&#8217;s own operating system) during the [...]]]></description>
			<content:encoded><![CDATA[<p>Based on the latest rumors, Google is about to release Chrome OS (Google&#8217;s own operating system) during the next weeks. Some speculations are already there about it. The most sure speculation is that Chrome OS will be a Linux. Many people started making assumptions of the new OS, about it&#8217;s features and uses. Some of them believe that it will be a lightweight operating system with Google application shortcuts on the desktop but&#8230;</p>
<p>When we talk about Google, we are talking about a company that doesn&#8217;t do things without the &#8220;know how&#8221; and the &#8220;know why&#8221; principle. Google has been preparing the ground for it&#8217;s operating system the last 3-4 years now and July 2009 was not a month that Google&#8217;s CEOs woke up and said &#8220;Hey, lets make an operating system&#8221;.</p>
<div id="attachment_822" class="wp-caption alignnone" style="width: 610px"><a href="http://jeez.eu/wp-content/uploads/2009/11/chromeos.png" rel="lightbox[819]"><img class="size-large wp-image-822" title="chromeos" src="http://jeez.eu/wp-content/uploads/2009/11/chromeos-600x362.png" alt="chromeos" width="600" height="362" /></a><p class="wp-caption-text">Fake image I made based on my imagination about Chrome OS</p></div>
<p>Lets see what <a title="Chrome OS" rel="nofollow" href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html" target="_blank">Google says to us about the Chrome OS</a>:</p>
<blockquote><p>Speed, simplicity and security are the key aspects of Google Chrome OS. We&#8217;re designing the OS to be fast and lightweight, to start up and get you onto the web in a few seconds. The user interface is minimal to stay out of your way, and most of the user experience takes place on the web. And as we did for the Google Chrome browser, we are going back to the basics and completely redesigning the underlying security architecture of the OS so that users don&#8217;t have to deal with viruses, malware and security updates. It should just work.</p></blockquote>
<p>Note the keywords above:</p>
<ul>
<li>Speed</li>
<li>Simple</li>
<li>Secure</li>
<li>Web based</li>
</ul>
<p>Let&#8217;s analyze the text above and try to imagine how Chrome OS will look, work and behave.</p>
<h3>Speed</h3>
<p>Google says that Chrome OS will be fast and lightweight. The user interface will be minimal, so the only thing I can think of is that the Chrome browser will be the main application and the File Manager of this operating system. The OS will load the necessary drivers for Internet connection and Chrome browser will load upon startup of the system.</p>
<h3>Simple</h3>
<p>Since the only application to load on the operating system is the Chrome browser, most of the time users will be using the browser to do anything. Some other applications might exist as standalone programs but not on the default install of the system.</p>
<h3>Secure</h3>
<p>Being secure is something time will tell. Based on my speculations though, security will be achieved from the philosophy of the system. Chrome OS will be focused on cloud computing. This takes care of viruses since nothing needs to be installed on the system for applications to work. If we count in some technologies that are on their way to production stage like HTML5 and it&#8217;s storage database, applications will be able to work offline too when Internet connection is not available.</p>
<h3>Storage</h3>
<p>Chrome OS will probably be using an online service for storage. With a variety of services available on the net, it will be a piece of cake to add storage devices on your PC. I assume that classic storage devices will also be supported since Chrome OS will need it to store itself.</p>
<h3>Users</h3>
<p>Chrome OS will allow many people to work on the same machine, allowing remote connections on the system with a &#8220;Sign in with your Google Account&#8221; dialog where each Google user will be able to login to the system provided the PC owner gave access to that user. The same thing that happens with your Adsense or Analytics account.</p>
<h3>The Desktop</h3>
<p>A Google Wave aware desktop will be able to allow users to collaborate and communicate right from the desktop. Even if having a desktop will be an option.</p>
<h3>Applications</h3>
<p>Here is a list of some applications for the new OS. These will not be just web shortcuts to their online versions but standalone applications that will be using APIs to operate:</p>
<ul>
<li><strong>Media Player</strong>: YouTube<br />
Available as a standalone app. Google is serious about HD on YouTube and by using a standalone version of YouTube is nice way to deliver high quality movies to the user.</li>
<li><strong>Image Manager</strong>: Picasa<br />
The existing Picasa application and Picasa web albums is a great example on how most of Chrome OS apps will be.</li>
<li><strong>File Manager</strong>: Chrome<br />
Even if by making Chrome, the default file manager of it&#8217;s operating system, would raise some complaints about monopoly from it&#8217;s users, this is how the whole thing is in my head.</li>
<li><strong>Office</strong>: Google Docs</li>
<li><strong>Calendar</strong>: Google Calendar<br />
Able to manage your tasks in real time with other users with a heavy usage of the CalDAV API.</li>
<li><strong>Image Editor</strong>: SketchUp<br />
Just like Picasas case.</li>
<li><strong>Collaboration</strong>: Google Wave</li>
</ul>
<p>Google&#8217;s new language &#8220;Go&#8221;, will have it&#8217;s share on the Chrome OS. Many applications delivered by Google or third parties will use Go&#8217;s compilers to build executables and apply upgrades and patches. This allows more thoughts on how Chrome could be used for developing purposes.</p>
<h3>The wait is over?</h3>
<p>When i tried to find some images to use for this article, I stumbled upon <a title="Chrome OS" rel="nofollow" href="http://livinginagoogleworld.blogspot.com/2009/10/chrome-os-browser-tour-possible-look-at.html" target="_blank">this post</a> that states to have installed Chrome OS and gave some screenshots to the public:</p>
<div id="attachment_824" class="wp-caption alignnone" style="width: 610px"><a href="http://jeez.eu/wp-content/uploads/2009/11/chromeosfullscreen.png" rel="lightbox[819]"><img class="size-large wp-image-824" title="chromeosfullscreen" src="http://jeez.eu/wp-content/uploads/2009/11/chromeosfullscreen-600x450.png" alt="chromeosfullscreen" width="600" height="450" /></a><p class="wp-caption-text">Image of a said to be : Installation of Chrome OS</p></div>
<div id="attachment_826" class="wp-caption alignnone" style="width: 610px"><a href="http://jeez.eu/wp-content/uploads/2009/11/chromeos2.png" rel="lightbox[819]"><img class="size-large wp-image-826" title="chromeos2" src="http://jeez.eu/wp-content/uploads/2009/11/chromeos2-600x370.png" alt="chromeos2" width="600" height="370" /></a><p class="wp-caption-text">System Setings</p></div>
<p>I saw these images after the article was finished. Honest!</p>
<img src="http://jeez.eu/?ak_action=api_record_view&id=819&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%2F14%2Fhow-i-imagine-google-chrome-os%2F&amp;linkname=How%20I%20Imagine%20Google%20Chrome%20OS"><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/14/how-i-imagine-google-chrome-os/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Real Diamonds Google Hosted Projects</title>
		<link>http://jeez.eu/2009/11/12/real-diamonds-google-hosted-projects/</link>
		<comments>http://jeez.eu/2009/11/12/real-diamonds-google-hosted-projects/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 18:21:59 +0000</pubDate>
		<dc:creator>Kerasiotis Vasileios</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://jeez.eu/?p=809</guid>
		<description><![CDATA[Google is on fire the last months. We witnessed numerous projects coming out as Google products. Projects like [...]]]></description>
			<content:encoded><![CDATA[<p>Google is on fire the last months. We witnessed numerous projects coming out as Google products. Projects like Wave, the Closure JS library, the &#8220;Go&#8221; programming language and the GWT (Google Web Toolkit) are only some of them. All of these projects are hosted on Google&#8217;s project hosting so, I did a little research to find some more projects.</p>
<p>My research turned out to be a resources heaven since I found some really neat projects (Some of them might not include files to download but are really interesting and I think you could bookmark them for future reference). Here is a quick list of the projects that I found interesting.</p>
<h3><a title="Quick Search Box" rel="nofollow" href="http://code.google.com/p/qsb-mac/" target="_blank">Quick Search Box for the Mac</a></h3>
<p><a rel="nofollow" href="http://jeez.eu/wp-content/uploads/2009/11/qsb.png" rel="lightbox[809]"><img class="alignright size-thumbnail wp-image-810" title="qsb" src="http://jeez.eu/wp-content/uploads/2009/11/qsb-150x123.png" alt="qsb" width="94" height="80" /></a>Google Quick Search Box is an open source search box that allows you to search data on your computer and across the web.<br />
With Google Quick Search Box you can search for information from just about anywhere. You can then perform actions on the search results, such as launching applications, emailing friends, or playing a song.</p>
<h3><a title="SiteBricks" rel="nofollow" href="http://code.google.com/p/google-sitebricks/" target="_blank">SiteBricks &#8211; A fast, light, web framework powered by Guice</a></h3>
<p>Sitebricks is a simple development layer for web applications built on top of Google Guice. Sitebricks focuses on early error detection, low-footprint code, and fast development. Like Guice, it also balances idiomatic Java with an emphasis on concise code.</p>
<h3><a title="Guice" rel="nofollow" href="http://code.google.com/p/google-guice/" target="_blank">Guice &#8211; A lightweight dependency injection framework for Java 5 and above</a></h3>
<p>Put simply, Guice alleviates the need for factories and the use of new in your Java code. Think of Guice&#8217;s @Inject as the new new. You will still need to write factories in some cases, but your code will not depend directly on them. Your code will be easier to change, unit test and reuse in other contexts.</p>
<h3><a title="Jaiku Engine" rel="nofollow" href="http://code.google.com/p/jaikuengine/" target="_blank">Jaiku Engine</a></h3>
<p>JaikuEngine is a social microblogging platform that runs on AppEngine. JaikuEngine powers Jaiku.com. Jaiku uses the Django framework as well as most of its development process.</p>
<h3><a title="Native Client" rel="nofollow" href="http://code.google.com/p/nativeclient/" target="_blank">Native code for web apps</a></h3>
<p>Native Client is an open-source technology for running native code in web applications, with the goal of maintaining the browser neutrality, OS portability, and safety that people expect from web apps.</p>
<h3><a title="AxsJax" rel="nofollow" href="http://code.google.com/p/google-axsjax/" target="_blank">AxsJAX &#8211; Access-Enabling AJAX</a></h3>
<p>The AxsJAX framework helps inject accessibility features into these applications so that users of adaptive technologies such as screen readers and self-voicing browsers experience the same level of interactivity that is now taken for granted by users of Web 2.0 applications.</p>
<h3><a title="SWToolkit" rel="nofollow" href="http://code.google.com/p/swtoolkit/" target="_blank">Software Construction Toolkit</a></h3>
<p>A set of extensions to the open-source SCons build tool (www.scons.org).</p>
<h3><a title="Explorer Canvas" rel="nofollow" href="http://code.google.com/p/explorercanvas/" target="_blank">Explorer Canvas</a></h3>
<p>Modern browsers like Firefox, Safari, Chrome and Opera support the HTML5 canvas tag to allow 2D command-based drawing. ExplorerCanvas brings the same functionality to Internet Explorer. To use, web developers only need to include a single script tag in their existing web pages.</p>
<h3><a title="Goopy" rel="nofollow" href="http://code.google.com/p/google-goopy/" target="_blank">Goopy Functional</a></h3>
<p>Goopy Functional is a python library that brings functional programming aspects to python.</p>
<h3><a title="Caja" rel="nofollow" href="http://code.google.com/p/google-caja/" target="_blank">Caja</a></h3>
<p><a rel="nofollow" href="http://jeez.eu/wp-content/uploads/2009/11/caja.png" rel="lightbox[809]"><img class="alignright size-thumbnail wp-image-811" title="caja" src="http://jeez.eu/wp-content/uploads/2009/11/caja-150x109.png" alt="caja" width="94" height="68" /></a>Caja allows websites to safely embed DHTML web applications from third parties, and enables rich interaction between the embedding page and the embedded applications. It uses an object-capability security model to allow for a wide range of flexible security policies, so that the containing page can effectively control the embedded applications&#8217; use of user data and to allow gadgets to prevent interference between gadgets&#8217; UI elements.</p>
<h3><a title="PIWI" rel="nofollow" href="http://code.google.com/p/piwi/" target="_blank">PIWI</a></h3>
<p><a rel="nofollow" href="http://jeez.eu/wp-content/uploads/2009/11/piwi-logo_small.png" rel="lightbox[809]"><img class="alignright size-thumbnail wp-image-812" title="piwi" src="http://jeez.eu/wp-content/uploads/2009/11/piwi-logo_small-150x59.png" alt="piwi" width="150" height="58" /></a>PIWI is an XML/XSLT Transformation Framework written in PHP. It&#8217;s basic concepts and ideas have been stolen from the great Java-Applications Apache Cocoon and Apache Forrest. Cocoon is still a great web framework, but very complex and of course in Java, which makes it not useful for people who want the power for their small project, but not the pain. Apache Forrest on the other hand is a publishing framework; powerful too but hard to install and quite complex. PIWI addresses some of the problems.</p>
<h3><a title="Re-Write Framework" rel="nofollow" href="http://code.google.com/p/rewrite3-framework/" target="_blank">Re-Write3</a></h3>
<p>rewrite3-framework provides an object orientated framework with XSL used for all (server side) transformations to render the client output e.g. xHtml, Ajax.</p>
<h3><a title="JavaScript HTML Extractor" rel="nofollow" href="http://code.google.com/p/javascripthtmlextractor/" target="_blank">JavaScript HTML Extractor</a></h3>
<p>This library allows you to extract parts of HTML using ready made functions. You can get inner,outer HTML, class names and attributes easily with this one.</p>
<h3><a title="Ajax Stack" rel="nofollow" href="http://code.google.com/p/ajaxstack/" target="_blank">Ajax Stack</a></h3>
<p><a rel="nofollow" href="http://jeez.eu/wp-content/uploads/2009/11/ajaxstack.png" rel="lightbox[809]"><img class="alignright size-thumbnail wp-image-813" title="ajaxstack" src="http://jeez.eu/wp-content/uploads/2009/11/ajaxstack-150x51.png" alt="ajaxstack" width="150" height="51" /></a>An AJAX framework for developing pure AJAX applications like gmail or google maps. Development of your application is kept in logical order, i.e. HTML for page content, CSS for your website style and JavaScript for your website’s functionality. The framework handles compiling your entire website into a single static JavaScript file that can be easily versioned and served from any web server.</p>
<h3><a title="Amplio JSLib" rel="nofollow" href="http://code.google.com/p/av-jslib/" target="_blank">Amplio Vita JSLib</a></h3>
<p>A pack of JS libraries to aid in development.</p>
<h3><a title="JSCore" rel="nofollow" href="http://code.google.com/p/js-core/" target="_blank">JS Core</a></h3>
<p>JS Core is a small but versatile JavaScript framework, providing cross-browser work with the DOM, CSS and AJAX. The framework does not cause conflicts with other scripts and can be used in projects of any complexity. Structure js-core provides a convenient mechanism for extending the standard functional.</p>
<h3><a title="GSkinner" rel="nofollow" href="http://code.google.com/p/gskinner/" target="_blank">GSkinner</a></h3>
<p>A collection of public AS3 classes released under MIT Licensing by gskinner.com .</p>
<h3>Programming Languages</h3>
<p>I also came across some interesting programming languages. Give them a try.</p>
<h4><a title="Fusion Lang" rel="nofollow" href="http://code.google.com/p/fusion-lang/" target="_blank">Fusion</a></h4>
<p>Fusion is a powerful high level programming language that merges several feature from Ruby, Python, Java, C++, Haskell, Pascal, Visual Basic, in a only language.<br />
It’s implemented by a compiler written in Haskell that transform Fusion code in Ruby code. It’s probable that in the near future the code will be compiled in various agile programming languages, like Python or PHP.</p>
<h4><a title="Tycho Lang" rel="nofollow" href="http://code.google.com/p/tycho/" target="_blank">Tycho</a></h4>
<p>Tycho is a new programming language designed for language oriented programming (LOP). Combined with a very dynamic runtime, Tycho programmers can define syntax and semantics that bring the code closer to the problem domain. At its heart, it&#8217;s a dynamically typed language that runs on the .Net Framework. It&#8217;s object oriented but requires no classes. Aspect orientation is achieved with actors.</p>
<h4><a title="Toupl" rel="nofollow" href="http://code.google.com/p/toupl/" target="_blank">Toupl</a></h4>
<p>Toupl is a super programming language, designed for text generation tasks. Syntax based on Foobar 2000 Tagz Script, but modified and extended for more power, symmetric, easy and generic.</p>
<h3><a title="Sense Script" rel="nofollow" href="http://code.google.com/p/sense-script/" target="_blank">Sense Script</a></h3>
<p>Script programming language. All You need to use it is one, small DLL, so You can use sense script in every form &#8211; for example in your application.</p>
<h3><a title="Noop" rel="nofollow" href="http://code.google.com/p/noop/" target="_blank">Noop</a></h3>
<p>Noop (pronounced noh-awp, like the machine instruction) is a new language experiment that attempts to blend the best lessons of languages old and new, while syntactically encouraging what we believe to be good coding practices and discouraging the worst offenses. Noop is initially targeted to run on the Java Virtual Machine.</p>
<img src="http://jeez.eu/?ak_action=api_record_view&id=809&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%2F12%2Freal-diamonds-google-hosted-projects%2F&amp;linkname=Real%20Diamonds%20Google%20Hosted%20Projects"><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/12/real-diamonds-google-hosted-projects/feed/</wfw:commentRss>
		<slash:comments>0</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>
		<item>
		<title>Google Visualizations From A To Z</title>
		<link>http://jeez.eu/2009/10/19/google-visualizations-from-a-to-z/</link>
		<comments>http://jeez.eu/2009/10/19/google-visualizations-from-a-to-z/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 20:26:23 +0000</pubDate>
		<dc:creator>Kerasiotis Vasileios</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Visualization]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://jeez.eu/?p=642</guid>
		<description><![CDATA[Google has released an API that you can use to create nifty visualizations for your webpages and applications. [...]]]></description>
			<content:encoded><![CDATA[<p>Google has released an API that you can use to create nifty visualizations for your webpages and applications. So basicaly it is an easy way to present data in ways like :</p>
<p><strong>Piecharts</strong></p>
<p><a href="http://jeez.eu/wp-content/uploads/2009/10/pie1.png" rel="lightbox[642]"><img class="alignnone size-full wp-image-644" title="pie" src="http://jeez.eu/wp-content/uploads/2009/10/pie1.png" alt="pie" width="394" height="208" /></a></p>
<p><strong>Barcharts</strong></p>
<p><a href="http://jeez.eu/wp-content/uploads/2009/10/bars1.png" rel="lightbox[642]"><img class="alignnone size-full wp-image-646" title="bars" src="http://jeez.eu/wp-content/uploads/2009/10/bars1.png" alt="bars" width="324" height="127" /></a></p>
<p><strong>Radar Charts</strong></p>
<p><a href="http://jeez.eu/wp-content/uploads/2009/10/radar.png" rel="lightbox[642]"><img class="alignnone size-full wp-image-647" title="radar" src="http://jeez.eu/wp-content/uploads/2009/10/radar.png" alt="radar" width="218" height="199" /></a></p>
<p>and many more interesting ways.</p>
<p>So, lets see how we can use this great API to display our data in a more informative way. For demonstration purposes, we will create a simple page where some statistics will be presented using the API. The statistics will be pulled from a spreadsheet that we have previously uploaded to the Google Docs service with simple SQL like queries. The application will look like this:</p>
<p><a href="http://jeez.eu/wp-content/uploads/2009/10/appwire1.png" rel="lightbox[642]"><img class="alignnone size-large wp-image-648" title="appwire" src="http://jeez.eu/wp-content/uploads/2009/10/appwire1-600x450.png" alt="appwire" width="600" height="450" /></a></p>
<p>We will be able to select the visualization type to use from the dropbox and the visualization will be displayed in the big white box.</p>
<h3>Creating the Spreadsheet</h3>
<p>Nothing special here. We will just create a simple spreadsheet with some fictional values. Then we will link this spreadsheet to our application.</p>
<p>Go to <a title="Google Docs" href="http://docs.google.com/" target="_blank">Google Docs</a> and create a new spreadsheet. We will name it vistutorial and it will have 4 columns :</p>
<ul>
<li>Name</li>
<li>Age</li>
<li>Salary</li>
<li>Programming Language</li>
</ul>
<p>The spreadsheet will look like this:</p>
<p><a href="http://jeez.eu/wp-content/uploads/2009/10/vistutorial.png" rel="lightbox[642]"><img class="alignnone size-large wp-image-650" title="vistutorial" src="http://jeez.eu/wp-content/uploads/2009/10/vistutorial-600x292.png" alt="vistutorial" width="600" height="292" /></a></p>
<p>Now we need to get the URL that we will use to our application. Select the cells you want to be visible, go to <strong>Insert</strong>-&gt;<strong>Gadget </strong>and select any gadget from the list. Any gadget will do. Click on the &#8220;<strong>Apply and Close</strong>&#8221; button and the gadget will be displayed in a floating window. On the upper right corner of the gadget window, you can see an arrow, click on it and select &#8220;get query data source url&#8221;. The URL to use in our application will be displayed. Copy this URL and note it somewhere.</p>
<h3>Using Visualizations</h3>
<p>All you need to use Google visualizations  is to: load some JavaScript files provided by Google, create a Div layer in your page and draw the visualization. This can be better shown in a 1-2-3 steps example:</p>
<p>1) Load Libraries:</p>
<pre class="brush: jscript;">&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/jsapi&quot;&gt;&lt;/script&gt;</pre>
<p>2) Create the visualization container:</p>
<pre class="brush: xml;">&lt;div id=&quot;chart_div&quot;&gt;&lt;/div&gt;</pre>
<p>3) Draw the visualization:</p>
<pre class="brush: jscript;">
//Load the visualization library with the visualization packages that we will use
google.load('visualization', '1', {'packages':['piechart','table', 'linechart','motionchart','ImageChart','gauge']});
//Draw the piechart with our data
var chart = new google.visualization.PieChart(document.getElementById('vis_chart'));
 chart.draw(data, {width: 700, height: 340, is3D: true});
</pre>
<h3>Implementing Visualizations to Our App</h3>
<p>The first thing we need to do is to create our application&#8217;s layout.</p>
<p><strong>HTML</strong>:</p>
<pre class="brush: xml;">&lt;html&gt;
&lt;title&gt;Google Visualization Tutorial&lt;/title&gt;
 &lt;head&gt;
 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/styles.css&quot;&gt;
 &lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/jsapi&quot;&gt;&lt;/script&gt;

 &lt;script type=&quot;text/javascript&quot; src=&quot;js/scripts.js&quot;&gt;&lt;/script&gt;
 &lt;script type=&quot;text/javascript&quot;&gt;
 // Load the Visualization API and the piechart package.
 google.load('visualization', '1', {'packages':['piechart','table', 'linechart','motionchart','ImageChart']});
 &lt;/script&gt;
 &lt;/head&gt;
 &lt;body&gt;
 &lt;div id=&quot;container&quot;&gt;
 &lt;div id=&quot;header&quot;&gt;
 &lt;select onChange=&quot;initialize();&quot; id=&quot;visualization&quot;&gt;
 &lt;option value=&quot;PieChart&quot;&gt;Piechart&lt;/option&gt;
 &lt;option value=&quot;Table&quot;&gt;Table&lt;/option&gt;
 &lt;option value=&quot;LineChart&quot;&gt;Linechart&lt;/option&gt;
 &lt;option value=&quot;MotionChart&quot;&gt;MotionChart&lt;/option&gt;
 &lt;option value=&quot;ImageChart&quot;&gt;ImageChart&lt;/option&gt;
 &lt;/select&gt;
 &lt;img src=&quot;css/logo.png&quot; id=&quot;logo&quot; /&gt;
 &lt;/div&gt;
 &lt;div id=&quot;vis_chart&quot;&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;/body&gt;
&lt;/html&gt;</pre>
<p><strong>CSS</strong>:</p>
<pre class="brush: css;">#container{
 width:768px;
 margin:0 auto;
 padding:10px;
 background-color:#C9CFFF;
 min-height:500px;
}

select{
 width:200px;
 margin-right:100px;
}

#header{
 margin-bottom:30px;
}

#logo{
 float:right;
}

#vis_chart{
 -moz-border-radius: 5px;
 -webkit-border-radius: 5px;
 border: 1px solid #000; padding: 10px;
 clear:both;
 background-color:white;
 min-height:400px;
}</pre>
<p>On the first part, we are including the API library from Google, after that, we load the visualization library and we specify the packages we want to load:</p>
<pre class="brush: jscript;">google.load('visualization', '1', {'packages':['piechart','table', 'linechart','motionchart','ImageChart']});</pre>
<p>We also assign a method to the change event of the select element. The function initialize is responsible for our data to be available to our application:</p>
<pre class="brush: jscript;">function initialize() {
 // Replace the data source URL on next line with your data source URL.
 var query = new google.visualization.Query('http://spreadsheets.google.com/tq?range=A1:D11&amp;headers=-1&amp;key=0AtbpzGdXYTjpdDdkUlNLcjV2ZWNZNUVveFZzdU05dmc&amp;gid=0');

 // Send the query with a callback function.
 query.send(handleQueryResponse);
}</pre>
<p>In order to use your spreadsheet with the function above, you should replace the URL provided with the one you got from your gadget.</p>
<p>We see that the initialize method, will do a :</p>
<pre class="brush: jscript;">query.send(handleQueryResponse);</pre>
<p>This, tells us that the callback function that will handle the query response is handleQueryResponse which we will use to set the visualization to the one selected from the dropbox:</p>
<pre class="brush: jscript;">function handleQueryResponse(response) {
 var element = document.getElementById('visualization').value;
 if (response.isError()) {
 alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
 return;
 }
 var data = response.getDataTable();
 //first clear the visualization container
 document.getElementById('vis_chart').innerHTML = '';
 switch(element){
 case &quot;Table&quot;:
 var chart = new google.visualization.Table(document.getElementById('vis_chart'));
 chart.draw(data, {width: 700, height: 340});
 break;
 case &quot;PieChart&quot;:
 var chart = new google.visualization.PieChart(document.getElementById('vis_chart'));
 chart.draw(data, {width: 700, height: 340, is3D: true});
 break;
 case &quot;LineChart&quot;:
 var chart = new google.visualization.LineChart(document.getElementById('vis_chart'));
 chart.draw(data, {width: 700, height: 340});
 break;
 case &quot;MotionChart&quot;:
 var chart = new google.visualization.MotionChart(document.getElementById('vis_chart'));
 chart.draw(data, {width: 700, height: 340});
 break;
 case &quot;ImageChart&quot;:
 var chart = new google.visualization.ImageChart(document.getElementById('vis_chart'));
 chart.draw(data, {width: 700, height: 340});
 break;
 }
}</pre>
<p>This is it! Our application is able to get data from our spreadsheet and present it with the visualization of our choice. You can<a title="Google Visualization Demo 1" href="http://seotests.writer.gr/googlevis/simple/" target="_blank"> test the application</a> at this stage and see how it works.</p>
<h3>Using the Query language to get specific cells</h3>
<p>The visualization API supports an SQL like query language that we can use to select, perform actions and data manipulation to our data. For example we could select data based on any cell of our spreadsheet. Lets try to extend our application so that it will be able to display data based on selective criteria. We will add a radio group that will &#8220;order&#8221; our application to display data by programming language.</p>
<p>The first thing to do is add the radio group:</p>
<pre class="brush: xml;">&lt;form  id=&quot;languageselect&quot; &gt;&lt;fieldset onChange=&quot;filter();&quot;&gt;&lt;legend&gt;Filter by:&lt;/legend&gt;
 &lt;label&gt;ASP&lt;/label&gt;&lt;input type=&quot;radio&quot; name=&quot;lang&quot; value=&quot;ASP&quot;&gt;
 &lt;label&gt;C&lt;/label&gt;&lt;input type=&quot;radio&quot; name=&quot;lang&quot; value=&quot;C&quot;&gt;
 &lt;label&gt;Java&lt;/label&gt;&lt;input type=&quot;radio&quot; name=&quot;lang&quot; value=&quot;Java&quot;&gt;&lt;br /&gt;
 &lt;label&gt;PHP&lt;/label&gt;&lt;input type=&quot;radio&quot; name=&quot;lang&quot; value=&quot;PHP&quot;&gt;
 &lt;label&gt;Ruby&lt;/label&gt;&lt;input type=&quot;radio&quot; name=&quot;lang&quot; value=&quot;Ruby&quot;&gt;
 &lt;label&gt;VB&lt;/label&gt;&lt;input type=&quot;radio&quot; name=&quot;lang&quot; value=&quot;VB&quot;&gt;
 &lt;/fieldset&gt;</pre>
<p>and the JavaScript function to handle the query:</p>
<pre class="brush: jscript;">function filter(){
 var element = document.getElementById('languageselect');
 for (var i=0; i&lt;element.length; i++)  {
 if (element[i].checked)  {
 var lang = element[i].value
 }
 }
 var query = new google.visualization.Query('http://spreadsheets.google.com/tq?range=A1:D11&amp;headers=-1&amp;key=0AtbpzGdXYTjpdDdkUlNLcjV2ZWNZNUVveFZzdU05dmc&amp;gid=0');
 query.setQuery(&quot;select * where D='&quot;+lang+&quot;'&quot;);
 query.send(handleQueryResponse);
}</pre>
<p>We set an optional query here:</p>
<pre class="brush: jscript;">query.setQuery(&quot;select * where D='&quot;+lang+&quot;'&quot;);</pre>
<p>This selects all rows from our spreadsheet that the programming language (the D column) equals the language we chosen. For an example of this new feature you can <a title="Google Visualization Demo 2" href="http://seotests.writer.gr/googlevis/filtered/" target="_blank">check here</a>.</p>
<h3>Handling Events</h3>
<p>You can handle events generated from user actions on your visualizations too. For example we can display the logo of the programming language the person codes in upon selection of a person. To handle events, we have to listen to the events generated by the visualization and handle the data. This can be done by doing this:</p>
<pre class="brush: jscript;">google.visualization.events.addListener(table, 'select', selectHandler);</pre>
<p>The above code will add a listener to the select event of the table visualization and it will call the selectHandler method to handle the event. So, based on this line of code, lets add the feature described above (display language logo) to our application. We need a placeholder for our logo:</p>
<pre class="brush: xml;">&lt;div id=&quot;langlogo&quot;&gt;&lt;/div&gt;</pre>
<p>and we should also modify our handleQueryResponse method and add the listener to our visualization. Our function now looks like this:</p>
<pre class="brush: jscript;">function handleQueryResponse(response) {
 var element = document.getElementById('visualization').value;
 if (response.isError()) {
 alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
 return;
 }
 var data = response.getDataTable();
 //first clear the visualization container
 document.getElementById('vis_chart').innerHTML = '';
 switch(element){
 case &quot;Table&quot;:
 var chart = new google.visualization.Table(document.getElementById('vis_chart'));
 chart.draw(data, {width: 700, height: 340,title: 'Jeez Tech Visualization Demo'});
 break;
 case &quot;PieChart&quot;:
 var chart = new google.visualization.PieChart(document.getElementById('vis_chart'));
 chart.draw(data, {width: 700, height: 340, is3D: true,title: 'Jeez Tech Visualization Demo'});
 break;
 case &quot;LineChart&quot;:
 var chart = new google.visualization.LineChart(document.getElementById('vis_chart'));
 chart.draw(data, {width: 700, height: 340,title: 'Jeez Tech Visualization Demo'});
 break;
 case &quot;MotionChart&quot;:
 var chart = new google.visualization.MotionChart(document.getElementById('vis_chart'));
 chart.draw(data, {width: 700, height: 340,title: 'Jeez Tech Visualization Demo'});
 break;
 case &quot;ImageChart&quot;:
 var chart = new google.visualization.ImageChart(document.getElementById('vis_chart'));
 chart.draw(data, {width: 700, height: 340,title: 'Jeez Tech Visualization Demo'});
 break;
 }
//Here we add the listener:
 google.visualization.events.addListener(chart, 'select', selectHandler);
//We set 2 global vars to be available for our handler :
window['data'] = data;
 window['chart'] = chart;
}</pre>
<p>Now, the only thing to do, is to add the selectHandler method. Just a simple method that will switch case on the programming language value and display the appropriate image:</p>
<pre class="brush: jscript;">var selectHandler = function(){
 var chart = window['chart'];
 var data = window['data'];
//get the selection object
 var selection = chart.getSelection();
 var message = '';
//go through the object
 for (var i = 0; i &lt; selection.length; i++) {
 var item = selection[i];
//Select the third column of the selected row
 var str = data.getFormattedValue(item.row, 3);
 }
 document.getElementById('langlogo').innerHTML = &quot;&lt;img src='./css/&quot;+str+&quot;.jpg'&gt;&quot;;
}</pre>
<p>Our application is able to handle select events now. You can <a title="Google Visualization Demo 3" href="http://seotests.writer.gr/googlevis/events/" target="_blank">check it out</a>.</p>
<p>Here is a screenshot of the application :</p>
<div id="attachment_652" class="wp-caption alignnone" style="width: 610px"><a href="http://jeez.eu/wp-content/uploads/2009/10/screen1.jpg" rel="lightbox[642]"><img class="size-large wp-image-652" title="screen" src="http://jeez.eu/wp-content/uploads/2009/10/screen1-600x397.jpg" alt="Our Visualization API demo" width="600" height="397" /></a><p class="wp-caption-text">Our Visualization API demo</p></div>
<p>We are ready. Our application is now able to display visualizations, filter them and handle user generated events. The  Google Visualizations API is a great tool to create awesome presentations of your data to your pages and applications. We will get back on it in a future post, explaining how you can implement your own data source and some other cool uses of the API.</p>
<img src="http://jeez.eu/?ak_action=api_record_view&id=642&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%2F19%2Fgoogle-visualizations-from-a-to-z%2F&amp;linkname=Google%20Visualizations%20From%20A%20To%20Z"><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/19/google-visualizations-from-a-to-z/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Google Wave Guide For Dummies</title>
		<link>http://jeez.eu/2009/10/08/a-google-wave-guide-for-dummies/</link>
		<comments>http://jeez.eu/2009/10/08/a-google-wave-guide-for-dummies/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 17:51:55 +0000</pubDate>
		<dc:creator>Kerasiotis Vasileios</dc:creator>
				<category><![CDATA[Services]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Wave]]></category>
		<category><![CDATA[Service]]></category>

		<guid isPermaLink="false">http://jeez.eu/?p=552</guid>
		<description><![CDATA[Today i got my invitation for Google&#8217;s new service called &#8220;Google Wave&#8221;. It was not something new to [...]]]></description>
			<content:encoded><![CDATA[<p>Today i got my invitation for Google&#8217;s new service called &#8220;Google Wave&#8221;. It was not something new to me since i already had access to the sandbox but today i finally found some time to play with it. I found some excellent features and some things that i think it would be great if the guys at Google implement in the near feature. We use simple plain language in this article. Wavelets,blips and other stuff might be difficult for some users to follow.</p>
<p>We also found that waves are easier to follow on Google Chrome (wonder why?) since the memory amount used when using it with Firefox and Opera is much larger than Google&#8217;s browser and that live typing is something folks at Google should reconsider adding it as an option.</p>
<h3>The interface</h3>
<p>This is how Wave looks like this (the red sections are to explain what each section is and does):</p>
<p><a href="http://jeez.eu/wp-content/uploads/2009/10/interface.png" rel="lightbox[552]"><img class="alignnone size-large wp-image-554" title="interface" src="http://jeez.eu/wp-content/uploads/2009/10/interface-600x323.png" alt="interface" width="600" height="323" /></a></p>
<p>This is what each red section is:</p>
<p><strong>1)</strong> The navigation menu. An easy way to find your waves, edit your settings (still under construction), your saved searches will appear here and you can also create folders to organize your waves.</p>
<p><strong>2)</strong> Your contacts are here. You can add other people, see recent waves from each person and ping them. Ping is a kind of a private wave that will do what it&#8217;s name implies. Notifies the user of your presence. You can also start a new wave with a user and automatically add the user as a participant.</p>
<p><strong>3)</strong> This is where some Google search magic takes place. You can do nearly anything from this section. You can start a new wave by clicking on the &#8220;New Wave&#8221; button, search for waves about something, for example : &#8220;php&#8221;, you can search using custom search terms like:</p>
<ul>
<li><strong>by:</strong> Username here. Shows waves started by the user or a wave where the user added some participants</li>
<li><strong>with:</strong> email or username here. Shows waves where the user participated in.</li>
<li><strong>in:</strong> folder here. Shows waves in the folder.</li>
<li><strong>tag:</strong> tag name here. Shows waves tagged with this tag.</li>
</ul>
<p>The &#8220;me&#8221; keyword can be used with &#8220;by&#8221; and &#8220;with&#8221; and will display waves associated with the active user.</p>
<p><strong>4)</strong> The active waves for the active user. If the wave includes a gadget, it will display a green puzzle image next to the wave text. If the wave has attachments, it will display an attachment image next to the wave text. If the wave has new messages or edits, the number of new messages will be highlighted with green color. Read only waves are marked with a gray colored Muted sign.</p>
<p><strong>5)</strong> The participants of the current wave. You can add as many participants you want in a wave or remove someone (not ready yet). A very interesting feature is that you can drag a contact in a wave to add as a participant too.</p>
<p><strong>6)</strong> Some basic commands that allow you to reply, mute, trash or mark a wave as read or spam. When you go to edit mode (when you write a message or edit one) this section looks like this:</p>
<p><a href="http://jeez.eu/wp-content/uploads/2009/10/edit.png" rel="lightbox[552]"><img class="alignnone size-large wp-image-555" title="edit" src="http://jeez.eu/wp-content/uploads/2009/10/edit-600x29.png" alt="edit" width="600" height="29" /></a></p>
<p>You see some text formating tools. Some of them you already know what they do but there are 4 more tools there:</p>
<p>The attachment icon will let you upload a file into a wave, the G+ button will popup a window that will let you search with google and add the result in the wave. The next button lets you add a Google gadget in the wave. This means that all gadgets <a title="Google Gadgets" href="http://www.google.com/ig/directory?synd=open" target="_blank">found here</a> can be used in a wave. The next 2 buttons are wave extensions. Extensions are plugins that add extra functionality to a wave. As a reference, the first button adds a <em>Yes/No/Maybe</em> gadget and the second one adds a<em> maps</em> gadget.</p>
<p><strong>7)</strong> Here is how a gadget looks like in a wave.</p>
<p><strong>8)</strong> Actions for reacting with the message. You can edit it, leave a reply to this message or a private reply that will be visible only by the author of the message or any participant that you want. You can also copy the message to a new wave and start a new wave that has other purpose of the wave you are into.</p>
<p><strong>9)</strong> A message.</p>
<p><strong>10)</strong> Existing replies of a message.</p>
<p><strong>11)</strong> You can tag a wave here. You can then search for this wave with this tag.</p>
<p><strong>12)</strong> This button will let you download all files in the active wave, upload new files or create a new wave with these files.</p>
<h3>Cool additions and uses</h3>
<p>It would be great if wave could understand the filetype of a file and open it in a wave. For example a user uploads a video or a flash movie and the  file starts playing at once or with a click on a play button. A user uploads a document and a new wavelet is created with the contents of the file.</p>
<p>Waves could become nice slideshow aware image galleries too. For example a user embeds a wave to a site and sets the wave to show images as a slideshow. So the only thing needed are the images to be dropped into the wave.</p>
<p>Commenting on blogs, replying on forums or creating blogs and forums based on Google wave are some of the first things that come in mind of many people but the &#8220;wave&#8221; is something bigger.</p>
<p>We will come back with some insights of the API too in a future post.</p>
<img src="http://jeez.eu/?ak_action=api_record_view&id=552&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%2F08%2Fa-google-wave-guide-for-dummies%2F&amp;linkname=A%20Google%20Wave%20Guide%20For%20Dummies"><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/08/a-google-wave-guide-for-dummies/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
