<?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>java rants &#187; google</title> <atom:link href="http://www.javarants.com/tag/google/feed/" rel="self" type="application/rss+xml" /><link>http://www.javarants.com</link> <description>Rants about Java and other internet technologies by Sam Pullara</description> <lastBuildDate>Sun, 09 Oct 2011 23:29:31 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.2.1</generator> <item><title>Yuil is dead! 4hoursearch is now online.</title><link>http://www.javarants.com/2008/08/01/yuil-is-dead-4hoursearch-is-now-online/</link> <comments>http://www.javarants.com/2008/08/01/yuil-is-dead-4hoursearch-is-now-online/#comments</comments> <pubDate>Fri, 01 Aug 2008 22:22:07 +0000</pubDate> <dc:creator>Sam Pullara</dc:creator> <category><![CDATA[Technology]]></category> <category><![CDATA[4hoursearch]]></category> <category><![CDATA[boss]]></category> <category><![CDATA[cuil]]></category> <category><![CDATA[google]]></category> <category><![CDATA[search]]></category> <category><![CDATA[yahoo]]></category> <category><![CDATA[yui]]></category> <category><![CDATA[yuil]]></category> <guid
isPermaLink="false">http://www.javarants.com/?p=880</guid> <description><![CDATA[As this was really just a demonstration of the power of Yahoo! BOSS, I have brought the site back as a demonstration site. Additionally, Yahoo! is making the source code to the new site available so anyone with a knack &#8230; <a
href="http://www.javarants.com/2008/08/01/yuil-is-dead-4hoursearch-is-now-online/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>As this was really just a demonstration of the power of <a
href="http://developer.yahoo.com/search/boss/">Yahoo! BOSS,</a> I have brought the site back as a demonstration site. Additionally, <a
href="http://www.yahoo.com">Yahoo!</a> is making the source code to the new site available so anyone with a knack for Python, HTML and CSS can take a swipe at making a better search experience.  In order to make a nice UI I teamed up with another Sam, <a
href="http://sam.besigner.com">Sam Lind</a>.  I put together the skeleton using Yahoo!&#8217;s amazing <a
href="http://developer.yahoo.com/yui/">YUI</a> tools and he created the look and feel.  Please try it out and take advantage of Yahoo!&#8217;s open search API:<br
/> <span
id="more-880"></span><br
/>  </p><p
style="text-align: center;"><a
title="4hoursearch" href="http://www.4hoursearch.com"><img
class="aligncenter" src="http://buildandtest.com/files/4hoursearch.png" alt="" width="435" height="220" /></a></p><p> </p><p>Why <a
href="http://www.4hoursearch.com">4hoursearch</a>?  It took 4 hours to write the initial code, 4 hours for it to go from unknown to 20 hits / second, 4 hours looking for a domain name and 4 hours to build the brand new UI.  Fortunately, it won&#8217;t take 4 hours to find something with it <img
src='http://www.javarants.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>If you want the classic list of links, now enhanced with <a
href="http://developer.yahoo.com/searchmonkey/">SearchMonkey</a> results, you can always start <a
href="http://search.yahoo.com">here</a>.</p> ]]></content:encoded> <wfw:commentRss>http://www.javarants.com/2008/08/01/yuil-is-dead-4hoursearch-is-now-online/feed/</wfw:commentRss> <slash:comments>71</slash:comments> </item> <item><title>Yahoo! BOSS is easy &#8212; meet Yuil</title><link>http://www.javarants.com/2008/07/30/yahoo-boss-is-easy-meet-yuil/</link> <comments>http://www.javarants.com/2008/07/30/yahoo-boss-is-easy-meet-yuil/#comments</comments> <pubDate>Wed, 30 Jul 2008 09:01:40 +0000</pubDate> <dc:creator>Sam Pullara</dc:creator> <category><![CDATA[Technology]]></category> <category><![CDATA[4hoursearch]]></category> <category><![CDATA[boss]]></category> <category><![CDATA[cuil]]></category> <category><![CDATA[google]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[search]]></category> <category><![CDATA[yahoo]]></category> <category><![CDATA[yui]]></category> <category><![CDATA[yuil]]></category> <guid
isPermaLink="false">http://www.javarants.com/?p=879</guid> <description><![CDATA[Updated Yet Again: Relaunched as 4hoursearch including the source code. See this blog entry. Updated Again: Yuil is dead. However, you can always get the same great search results here. Updated: Using Glue I was able to add some simple &#8230; <a
href="http://www.javarants.com/2008/07/30/yahoo-boss-is-easy-meet-yuil/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p
style="text-align: left;"><strong>Updated Yet Again: Relaunched as </strong><a
href="http://www.4hoursearch.com"><strong>4hoursearch</strong></a><strong> including the source code. See this </strong><a
href="http://www.javarants.com/2008/08/01/yuil-is-dead-4hoursearch-is-now-online/"><strong>blog entry</strong></a>.</p><p><strong>Updated Again: Yuil is dead. However, you can always get the same great search results </strong><a
href="http://search.yahoo.com"><strong>here</strong></a><strong>.</strong></p><p><strong>Updated: Using Glue I was able to add some </strong><a
href="http://sampullara.appspot.com/search?q=friend&amp;sl=long"><strong>simple category functionality</strong></a><strong>.</strong></p><p>I&#8217;m sure everyone saw the recent announcement of a new search engine, <a
href="http://www.cuil.com">Cuil</a>.  I thought I would have a little fun with it and put together a quick parody of it by mashing up their UI and Yahoo!&#8217;s search results.  As usual, the biggest problems I had were related to my pathetic Python skills.  I&#8217;d love to add the category stuff in (Yahoo! has that info as you can see in <a
href="http://tools.search.yahoo.com/newsearch/searchassist">search assist</a>) but BOSS doesn&#8217;t yet have that in the API.  But it does have web and image search and even search suggestions.  Here is the one, the only, the amazing:<br
/> <span
id="more-879"></span><br
/> It was great fun to hack together.  Check out the <a
href="http://developer.yahoo.com/search/boss/">BOSS APIs</a>.   Maybe I should have converted the UI to YUI as well&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://www.javarants.com/2008/07/30/yahoo-boss-is-easy-meet-yuil/feed/</wfw:commentRss> <slash:comments>89</slash:comments> </item> <item><title>Using Google App Engine to Extend Yahoo! Pipes</title><link>http://www.javarants.com/2008/04/13/using-google-app-engine-to-extend-yahoo-pipes/</link> <comments>http://www.javarants.com/2008/04/13/using-google-app-engine-to-extend-yahoo-pipes/#comments</comments> <pubDate>Mon, 14 Apr 2008 02:59:45 +0000</pubDate> <dc:creator>Sam Pullara</dc:creator> <category><![CDATA[Technology]]></category> <category><![CDATA[google]]></category> <category><![CDATA[google app engine]]></category> <category><![CDATA[googleappengine]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[json]]></category> <category><![CDATA[pipes]]></category> <category><![CDATA[python]]></category> <category><![CDATA[web service]]></category> <category><![CDATA[yahoo]]></category> <category><![CDATA[yahoo pipes]]></category> <guid
isPermaLink="false">http://www.javarants.com/?p=871</guid> <description><![CDATA[Update: A commenter pointed out that you can from django.utils import simplejson instead of including it. Makes this even easier. Yahoo! Pipes has always been a great tool for manipulating data but often you have to go to great contortions &#8230; <a
href="http://www.javarants.com/2008/04/13/using-google-app-engine-to-extend-yahoo-pipes/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>Update: A commenter pointed out that you can<pre>from django.utils import simplejson</pre><p> instead of including it.  Makes this even easier.</p><p><a
href="http://pipes.yahoo.com">Yahoo! Pipes</a> has always been a great tool for manipulating data but often you have to go to great contortions to get it to do what you want because of its very simple data flow programming model.  <a
href="http://appengine.google.com">Google&#8217;s App Engine </a>opens up the possibility of extending Yahoo! Pipes in very interesting ways through Pipes&#8217; Web Service operator.  Currently this operator sees little use as it requires you to be running an external server somewhere on the internet that is always available for the Pipe execution which is quite a high barrier to entry for the typical Pipes developer. Here is what a Pipe that is using web service looks like and our example pipe:</p><p><a
title="Web Services Example Pipe" href="http://pipes.yahoo.com/spullara/mirror"><img
src="http://buildandtest.com/files/pipeusingwebservice.png" alt="Web Service Pipes Example" width="676" height="585" /></a> </p><p>With the launch of Google App Engine there is now a very simple way to get code up on the internet quickly in order to include arbitrary processing in the interior of your Pipes.</p><p>To demonstrate how this works, let&#8217;s first build a very simple web service that simply mirrors the data that it receives from Pipes.   If you don&#8217;t have a Google App Engine account you can still follow along by download the <a
href="http://code.google.com/appengine/">SDK</a> and executing all the stuff locally though it will have to be accessible from the public internet if you want Pipes to send you requests.</p><p>First create a new application directory:</p><pre>mkdir pipes-mirror
cd pipes-mirror </pre><p>Now create an application descriptor called app.yaml:</p><pre style="line-height: 100%;font-family:monospace;background-color:#ffffff; border-width:0.01mm; border-color:#000000; border-style:solid; padding:4px;"><span style="background-color:#ffffff;">application: javarants
version: 1
runtime: python
api_version: 1
handlers:
- url: /.*
  script: pipes.py</span></pre><p>This application descriptor basically tells Google how to deploy your application.  Your application name should match an application name that you create within the GAE administration tool:</p><p><img
src="http://buildandtest.com/files/applicationname.png" alt="Application Name" width="495" height="161" /></p><p>Now we need to process the data coming from pipes.  Pipes is going to pass this web service some data in JSON format and we need to parse it.  GAE doesn&#8217;t include &#8216;<code>simplejson</code>&#8216; in the Python container so you are going to have to include it with your application.  I downloaded <a
href="http://pypi.python.org/pypi/simplejson">simplejson-1.8.1</a> and symbolically linked its <code>simplejson</code> directory into my application directory.  When the request comes in the JSON data will be in the &#8216;<code>data</code>&#8216; parameter so we are going to pull it out, parse it, grab the <code>items</code> array and write it back over the wire in pipes.py:</p><pre style="line-height: 100%;font-family:monospace;background-color:#ffffff; border-width:0.01mm; border-color:#000000; border-style:solid; padding:4px;"><span style="color:#000080;background-color:#ffffff;font-weight:bold;">import</span><span style="background-color:#ffffff;"> simplejson
</span><span style="color:#000080;background-color:#ffffff;font-weight:bold;">import</span><span style="background-color:#ffffff;"> wsgiref.handlers
</span><span style="color:#000080;background-color:#ffffff;font-weight:bold;">from</span><span style="background-color:#ffffff;"> google.appengine.ext </span><span style="color:#000080;background-color:#ffffff;font-weight:bold;">import</span><span style="background-color:#ffffff;"> webapp
</span><span style="color:#000080;background-color:#ffffff;font-weight:bold;">class</span><span style="background-color:#ffffff;"> MirrorPipesWebService (webapp.RequestHandler):
	</span><span style="color:#000080;background-color:#ffffff;font-weight:bold;">def</span><span style="background-color:#ffffff;"> post(self):
		data = self.request.get(</span><span style="color:#008000;background-color:#ffffff;font-weight:bold;">"data"</span><span style="background-color:#ffffff;">)
		obj = simplejson.loads(data)
		obj = obj[</span><span style="color:#008000;background-color:#ffffff;font-weight:bold;">"items"</span><span style="background-color:#ffffff;">]
		self.response.content_type = </span><span style="color:#008000;background-color:#ffffff;font-weight:bold;">"application/json"
</span><span style="background-color:#ffffff;">		simplejson.dump(obj, self.response.out)
</span><span style="color:#000080;background-color:#ffffff;font-weight:bold;">def</span><span style="background-color:#ffffff;"> main():
  application = webapp.WSGIApplication([(</span><span style="color:#008000;background-color:#ffffff;font-weight:bold;">'/mirror'</span><span style="background-color:#ffffff;">, MirrorPipesWebService)],
                                       debug=True)
  wsgiref.handlers.CGIHandler().run(application)
</span><span style="color:#000080;background-color:#ffffff;font-weight:bold;">if</span><span style="background-color:#ffffff;"> __name__ == </span><span style="color:#008000;background-color:#ffffff;font-weight:bold;">"__main__"</span><span style="background-color:#ffffff;">:
  main()</span></pre><p>Now you should have a directory structure that looks a lot like this:</p><pre>-rw-r--r--@ 1 sam  sam  106 Apr 13 18:55 app.yaml
-rw-r--r--  1 sam  sam  559 Apr 13 19:28 pipes.py
lrwxr-xr-x  1 sam  sam   47 Apr 13 17:40 simplejson -&gt; /Users/sam/Software/simplejson-1.8.1/simplejson</pre><p>Now that we have all the pieces we can deploy the application to GAE with a simple command from the GAE SDK:</p><pre>appcfg.py update .</pre><p>At this point you should be able to replace my <a
href="http://javarants.appspot.com/mirror">web service URL</a> that you find in my example Pipe with your application URL which will be<pre>http://[application name].appspot.com/mirror</pre><p> and get the same results as mine.</p><p>What kind of uses can you put this great power?  I currently have a web service that I run that combines RSS entries from the same day into a single entry and have it deployed on my own server.  I will likely port that to GAE as it doesn&#8217;t require a lot of CPU and it is a pain having to administer it.  In fact, most of the functionality that you see in a service like <a
href="http://feedburner.com">FeedBurner</a> would be easy to build on top of this framework.  More exotic use cases can be found on Y! Pipes itself where at least one person uses web services to pass in <a
href="http://pipes.yahoo.com/pipes/pipe.info?_id=qKDcUk1r3BGBg4HtODY80A">photo URLs and return the coordinates of human faces</a> in the images.</p> ]]></content:encoded> <wfw:commentRss>http://www.javarants.com/2008/04/13/using-google-app-engine-to-extend-yahoo-pipes/feed/</wfw:commentRss> <slash:comments>34</slash:comments> </item> <item><title>Switching from Google to Yahoo</title><link>http://www.javarants.com/2004/11/18/switching-from-google-to-yahoo/</link> <comments>http://www.javarants.com/2004/11/18/switching-from-google-to-yahoo/#comments</comments> <pubDate>Thu, 18 Nov 2004 11:50:14 +0000</pubDate> <dc:creator>Sam Pullara</dc:creator> <category><![CDATA[google]]></category> <category><![CDATA[yahoo]]></category> <guid
isPermaLink="false">http://www.javarants.com/?p=1026</guid> <description><![CDATA[Switching from Google to Yahoo  <a
href="http://www.javarants.com/2004/11/18/switching-from-google-to-yahoo/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<div><font
face="Helvetica">If you haven&#8217;t tried Yahoo search yet, I would give it a go.  It has some new features, gets better hits, and has a fresher index.</font></div><p><div><font
face="Helvetica">It has been several years since I switched search engines.  A long time ago, in the before time, I used <a
href="http://www.altavista.com/">altavista.com</a> because it had boolean logic searches and the &#8216;near&#8217; modifier for pinpoint searches.  Unfortunately, its index lagged and it slowed, and when Google started to make headway, I switched to it and it found more results and they were better.  When I heard a couple of weeks ago that Google&#8217;s image index was 6 months behind I decided that it was time to switch again.  I remapped my search key to Yahoo and I have never been happier.  It searches fast, it gets great results, and it has some cool features that make me smile.  For instance, try this search:</font></p><p><font
face="Helvetica">Yahoo: <a
href="http://search.yahoo.com/search?ei=UTF-8&#38;fr=sfp&#38;p=428%20university%20palo%20alto">428 University Palo Alto</a> </font><br
/><font
face="Helvetica">Google: <a
href="http://www.google.com/search?hl=en&#38;lr=&#38;q=428+University+Palo+Alto&#38;btnG=Search">428 University Palo Alto</a> </font></p><p><font
face="Helvetica">Notice that Yahoo is way more efficient.  They both were able to determine they were addresses, but Yahoo actually embeds the map in the search results. It also has links for driving directions to and from this location and local links for nearby attractions.  Additionally, because Yahoo knows its me and I am not an anonymous searcher, I don&#8217;t even have to type in the from address because it has my list of known addresses.</font></p><p><font
face="Helvetica">There are still some differences between results, but I think it lands in Yahoo&#8217;s favor most of the time, even though it appears that Google has more results than Yahoo (but not nearly as many as Microsoft&#8217;s search site).  Here is a comparison of raw numbers of hits:</font></p><p><font
face="Helvetica">Yahoo: <a
href="http://search.yahoo.com/search?ei=UTF-8&#38;fr=sfp&#38;p=pullara">pullara</a><a
href="http://beta.search.msn.com/results.aspx?q=pullara&#38;FORM=QBRE"> </a> (8000)</font><br
/><font
face="Helvetica">Google: <a
href="http://www.google.com/search?hl=en&#38;q=pullara&#38;btnG=Google+Search">pullara</a> (12000)</font><br
/><font
face="Helvetica">MSN: <a
href="http://beta.search.msn.com/results.aspx?q=pullara&#38;FORM=QBRE">pullara</a> (18000)</font></p><p><font
face="Helvetica">And if you ask me, the Yahoo results are the best, since I am first <img
src='http://www.javarants.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </font></div> ]]></content:encoded> <wfw:commentRss>http://www.javarants.com/2004/11/18/switching-from-google-to-yahoo/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
