tag:blogger.com,1999:blog-55445382024-03-13T08:33:57.828-07:00Siddharth Uppal's WeblogSid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comBlogger191125tag:blogger.com,1999:blog-5544538.post-1144129450136711142006-04-03T22:43:00.000-07:002010-06-01T16:11:26.045-07:00Consume some creativityI now blog on <a href="http://blog.somecreativity.com/">http://blog.somecreativity.com</a>Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1143281838844389692006-03-25T02:13:00.000-08:002006-04-02T19:35:56.473-07:00TagyuLib - Tagyu .NET Client Library<div><div style="float: left; margin-right: 5px; margin-bottom: 5px; margin-top: 15px"><img src="http://static.flickr.com/35/117552482_6c307d2d2d_o.png"></div><br />I have finished writing a .NET client library for Tagyu's REST Web-Service. <a href="http://www.tagyu.com">Tagyu</a> is a hosted service that uses human intelligence to suggest tags and categories relevant to a block of text. <br /><br />TagyuLib (that’s my creative name for the .NET API) supports everything that the REST API of Tagyu allows you to do as of now. So it supports both classification queries and related-tags queries. It also allows you to pass your username/password to Tagyu through HTTP basic authentication scheme. If you're wondering what am I talking about here, you should really be reading <a href="http://tagyu.com/tools/rest">Tagyu REST web service documentation</a> first.<br /><br />I have created a <a href="http://gotdotnet.com/codegallery/codegallery.aspx?id=e9828b2e-b19f-4921-9fde-1b1fc4e694c3">project at GotDotNet CodeGallery</a> to share the source code of TagyuLib and it would be great to see people participate.<br /><br />I hope some people would find TagyuLib useful and I would love to hear from them. But right now it is 2:15 AM and I need to get some sleep.<br /><br /><span style="font-style:italic;">Update on March 25, 2006</span><br /><br />Here is the class diagram and some sample code to get you started.<br /><br /><h3>Class Diagram</h3><center><img src="http://static.flickr.com/39/122296960_dadfe77269_o.png"></center><br /><br /><h3>Sample Code</h3><br /><b>Determining tags and category</b><br /><br />You need to instantiate a new <i>TagyuService</i> object and simply call its <i>GetClassification</i> method passing-in your text. <i>GetClassification</i> will return you a <i>ClassificationSuggestion</i> object and you can loop through the items in its <i>Tags</i> property to do whatever you want. You can also get the category for your text from the <i>Category</i> property of the <i>ClassificationSuggestion</i> object that you got back.<br /><br /><pre><code><br /> string inputText = Console.ReadLine();<br /><br /> TagyuService ts = new TagyuService();<br /><br /> ClassificationSuggestion s = ts.GetClassification(inputText);<br /><br /> Console.WriteLine("Suggested Tags are: ");<br /><br /> foreach (Tag tg in s.Tags) {<br /> Console.WriteLine(tg.Value);<br /> }<br /><br /> Console.WriteLine("Suggested Category is: {0}", s.Category);<br /><br /></pre></code><br /><br /><b>Determing related tags</b><br /><br />That's equally simple. All you need to do is instantiate a new <i>TagyuService</i> object and call its <i>GetRelatedTags</i> method passing in the tag for which you wish to see related tags. <i>GetRelatedTags</i> returns a <i>RelatedSuggestion</i> object and you can loop through the items in its <i>Tags</i> property.<br /><br /><code><pre><br /> Console.WriteLine("Enter a Tag");<br /><br /> string inputTag = Console.ReadLine();<br /><br /> TagyuService ts = new TagyuService();<br /><br /> RelatedSuggestion r = ts.GetRelatedTags(inputTag);<br /><br /> Console.WriteLine("Related tags are: ");<br /><br /> foreach (Tag tg in r.Tags) {<br /> Console.WriteLine(tg.Value);<br /> }<br /><br /></pre></code><br /><br /><b>Using your Tagyu username and password</b><br /><br />As of now, unregistered users can make one request per minute from a single IP address to Tagyu and requests beyond this limit result in an error. So if this bothers you, you should <a href="http://tagyu.com/register">create an account at Tagyu</a>. You can pass your username and password to Tagyu through TagyuLib simply by setting these properties on the <i>TagyuService</i> object before invoking <i>GetClassification</i> and <i>GetRelatedTags</i> methods. Here's how:<br /><br /><pre><code><br /> string inputText = Console.ReadLine();<br /><br /> TagyuService ts = new TagyuService();<br /><br /> ts.Username = "[YOUR-USERNAME]";<br /> ts.Password = "[YOUR-PASSWORD]";<br /><br /> ClassificationSuggestion s = ts.GetClassification(inputText);<br /><br /> Console.WriteLine("Suggested Tags are: ");<br /><br /> foreach (Tag tg in s.Tags) {<br /> Console.WriteLine(tg.Value);<br /> }<br /><br /> Console.WriteLine("Suggested Category is: {0}", s.Category);<br /><br /></pre></code><br /><br /><h3>Download</h3><a href="http://gotdotnet.com/codegallery/codegallery.aspx?id=e9828b2e-b19f-4921-9fde-1b1fc4e694c3">This way please</a>!<br /><br /><h3>Requirements</h3><ul><li><a href="http://msdn.microsoft.com/netframework/downloads/updates/default.aspx">Microsoft .NET Framework version 2.0.50727 redistributable</a><li>Visual Studio 2005 (if you wish to build the source-code on your machine without any tinkering)</ul><br /><h3>Bugs/Issues/Feedback</h3>I'd love to hear from people who've used TagyuLib. Please share your feedback, issues and any bugs you encounter <a href="http://gotdotnet.com/codegallery/messageboard/messageboards.aspx?id=e9828b2e-b19f-4921-9fde-1b1fc4e694c3">here</a>.<br /><br /><h3>Contributing</h3>Join <a href="http://gotdotnet.com/codegallery/codegallery.aspx?id=e9828b2e-b19f-4921-9fde-1b1fc4e694c3">the project</a> and get started.<br /><br /><h3>Changelog</h3><ul><li>March 25, 2006<br /><ul><li>Initial version</li></ul><br /><li>April 02, 2006<br /><ul><li>Merged SuggestedTag and RelatedTag classes into one.<br /><li>Renamed Suggestions to ClassificationSuggestion.<br /><li>Renamed Related to RelatedSuggestion.<br /><li>Added an overload for GetRelatedTags that takes a Tag object as argument.<br /></ul></ul><br /></div>Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1142729255630352972006-03-18T16:20:00.000-08:002006-03-18T18:45:19.070-08:00Multimon Quake3OK imagine this: You have 24 monitors in front of you - covering every inch of your field of view, and a 12 node Linux cluster. And you are using this setup to play Quake3 with a gyro-mouse (basically a mouse that you can move in air). Add surround sound to the setting, and you’ll have the most awesome gaming experience of your life. They’re <a href="http://www.plastk.net/">doing this</a> at <a href="http://infovis.cs.vt.edu/gigapixel/facility.html">Virginia Tech</a>. <br /><br /><center><img src="http://static.flickr.com/56/114377427_9912cb4733.jpg"></center><br /><br />Here's a video from <a href="http://youtube.com/watch?v=HUGabGDLg8g">YouTube</a>:<br /><br /><center><br /><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/HUGabGDLg8g"></param><embed src="http://www.youtube.com/v/HUGabGDLg8g" type="application/x-shockwave-flash" width="425" height="350"></embed></object></center><br /><br />I <a href="http://upster.blogspot.com/2005/06/quake-3.html">like</a> <a href="http://upster.blogspot.com/2005/06/quake-3-update.html">playing</a> Quake3 and this blew my mind!<br /><br /><a href="http://www.makezine.com/blog/archive/2006/03/linux_based_24_monitor_quake_3.html">Via</a>Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1142569795738289852006-03-16T20:02:00.000-08:002006-03-16T20:46:42.986-08:00So you <3 Sudoku?<a href="http://en.wikipedia.org/wiki/Sudoku">Sudoku</a> (Japanese: 数独, sūdoku), also known as Number Place, is a logic-based placement puzzle. The aim of the canonical puzzle is to enter a numerical digit from 1 through 9 in each cell of a 9×9 grid made up of 3×3 subgrids (called "regions"), starting with various digits given in some cells (the "givens"). Each row, column, and region must contain only one instance of each numeral. Completing the puzzle requires patience and logical ability.<br /><br /><center><img src="http://static.flickr.com/35/113573001_1df37f41c8_o.gif"></center><br />Though Sudoku is fun even when played alone, it's actually a lot more enjoyable if you're competing with someone. <a href="http://www.ironsudoku.com/">IronSudoku.com</a> is an online version of the game with a social flavor to it. The website basically allows people to chat with each other while playing. A new puzzle is posted at the website every day so you have 24 hours to solve it. I'm surely looking forward to solving some.<br /><br />The interface of the game at IronSudoku is very clean and user-friendly and if you know the rules of the game, you can get started right away.<br /><br />I would really like it if there was a way, let's say, for me to invite some friends of mine to IronSudoku for a competition online. I (organizer) should be able to pick the difficulty level of the puzzle for the event. At the start of the event, the system should start a timer ticking and pick a puzzle of the specified difficulty randomly. Every participant would receive the same Sudoku to solve from the system. And the <i>Chatterbox</i> should allow chatting only between the players in that competition. A visual indication should be given by the system as soon as somebody solves the puzzle. I'm sure this would be a lot of fun!<br /><br />BTW as of now you have to be a Pro member to add other IronSudoku members as friends.Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1140426716168716852006-02-20T01:10:00.000-08:002006-02-20T01:11:56.186-08:00SMS based payments<a href="https://www.textpayme.com/us/secure/index.tpm?clref=MTBmNzAxZTEtYTQ0MC00OGYxLThiN2MtOTBhOGEwZTRkMDk4">TextPayMe</a> is a website that allows you to use your mobile phone to pay other people by sending text messages. I think that’s very cool and I remember discussing the exact same thing with <a href="http://www.geekheads.blogspot.com">Alpha0</a> back in November last year. Sadly we never got past doing anything more than merely talking about it but then there was lots of stuff happening at that time and there was hardly any time.Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1134158211380157792005-12-09T11:40:00.000-08:002005-12-09T12:32:54.046-08:00Tagyu::Search v0.03<div><div style="float: left; margin-right: 5px; margin-bottom: 5px;"><img src="http://static.flickr.com/33/53995271_a81d3a4a24_o.png" /></div>I have incorporated support for two new features in <a href="http://upster.blogspot.com/2005/10/tagyu-perl-api.html">my Tagyu::Search module</a> and learnt a lot about HTTP in the process.<br /><br /><h3>1. Support for HTTP Basic Authentication</h3>With this in place, it is now possible for Perl code using my module to break the one request per IP barrier imposed on anonymous users by Tagyu. So register yourself at Tagyu <a href="http://tagyu.com/register">right now</a>!<br /><br />This is what you need to do in your code:<br /><code></code><pre><br /><span style="font-style: italic;"># Instantiate a new Tagyu::Search object.</span><br />my $tagyu = Tagyu::Search->new(<br /> username => "<span style="font-weight: bold;">[YOUR-USERNAME]<span style="font-style: italic;"></span></span>",<br /> password => "<span style="font-weight: bold;">[YOUR-PASSWORD]<span style="font-style: italic;"></span></span>"<br />);<br /><br /><span style="font-style: italic;"># Invoke the SuggesTags method on the Tagyu::Search object.</span><br />my @tags = $tagyu->SuggestTags("<span style="font-weight: bold;">[YOUR-TEXT]<span style="font-style: italic;"></span></span>");<br /></pre><br />However anonymous searches through Tagyu::Search package are still supported.<br /><h3>2. Introduced two new methods SuggestTagsText and SuggestTagsURL.</h3>SuggestTagsText encodes all the special characters like '=', '+', '&', etc. before passing on the text to the Tagyu Web Service, while SuggestTagsURL considers its argument as a URL and uses the Tagyu Web Service to suggest tags for the text at the specified URL.<br /><br /><br />Download <a href="http://saturn.walagata.com/w/upster/Tagyu-Search-0.03.zip">Tagyu-Search-0.03</a> and let me know how it works for you. As always, feedback is welcome!<br /></div>Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1134135125282577372005-12-09T05:29:00.000-08:002005-12-09T05:32:05.300-08:00Why is open-source good for learners?It is widely agreed that the best way to learn about something is to teach it. <br /><br />By opening up the source of a project, you're actually teaching the people who'd read your code, how you solved the problems that you encountered in your project. <br /><br />Everybody understands that there’s a lot to learn about programming by reading other people's code, but in fact you would also learn a lot by starting an open-source project, in the same way as you'd learn about a topic by teaching it to someone.<br /><br />So start hacking an open-source project today even though you might not have attained <span style="font-style:italic;">God</span> status yet in the technologies required for its implementation. Don’t worry about the mistakes you’d make as your ascent towards <span style="font-style:italic;">God</span> status would continue with your hacking.Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1133412587050890192005-11-30T20:35:00.000-08:002005-12-03T05:31:18.786-08:00Visited foss.in/2005<div><div style="float: left; margin-right: 5px; margin-bottom: 5px;"><img src="http://static.flickr.com/9/68850041_fd3b249f6c_s.jpg"></div>I attended the first two days of <a href="http://www.foss.in/2005">foss.in</a> conference held at Bangalore. It was held in the Bangalore palace grounds with the magnificent palace in the backdrop. <br /><br /><center><img src="http://static.flickr.com/35/68595172_a1a50a31a0.jpg"></center><br /><br />There were five halls and a ball-room which had sessions running in parallel. Each of the halls was named after a famous open-source personality – Torvalds hall, Stallman hall, Cox hall, etc. <br /><br /><center><img src="http://static.flickr.com/34/68653597_f2b7bc8258.jpg"></center><br /><br />I enjoyed being there and it was very inspiring to know about the work of the speakers. <br /><br />I attended <a href="http://lerdorf.com/bio.php">Rasmus</a>’ talk on cross-site scripting detection and prevention. His talk on deploying large-scale PHP was very useful too because there were some useful general points in it. Starting from an example of writing a simple and scalable webpage hit monitor, he went on to discuss various configurations for setting up replication in MySQL which are highly scalable.<br /><br />I found the talk by <a href="http://gopalarathnam.wordpress.com/">Gopalarathnam Venkatesan</a> on programming the Mozilla platform using XUL very interesting. After attending the half-hour talk, I felt confident enough to dig my hands into XUL.<br /><br />The talk by Gopal Vijayaraghavan on DotGNU was very informative too. I am very interested in .NET and Gopal was <a href="http://upster.blogspot.com/2004/12/net-on-simputer.html">in the news</a> for having ported DotGNU to Simputer within 72 hours and hence my interest in his talk. He mentioned the problems he had faced as a developer and how you end up doing everything that nobody wants to do when you are a lead developer. It was an informative talk.<br /><br /><a href="http://www.glancer.com">Glancer</a> is a real cool app which anyone attending foss.in can use to plan his schedules and find people who have similar interests as him. Nirav Mehta talked about the process of building Glancer using OpenLaszlo, the technical issues they faced, etc.<br /><br />Premshree introduced the audience to Ruby in his presentation while Avik Sengupta wrote a cookbook application from scratch in his presentation by using Ruby on Rails.<br /><br />I met (in no particular order) <a href="http://www.livejournal.com/~zimbabao">Rajaram</a>, <a href="http://www.swaroopch.info">Swaroop</a>, <a href="http://www.livejournal.com/~teemus">Sumeet</a>, <a href="http://www.livejournal.com/~bluesmoon">Philip</a>, <a href="http://www.livejournal.com/~premshree">Premshree</a>, Gopal, <a href="http://livejournal.com/~suhas">Suhas</a> and Pradeep. It was quite exciting to meet the people behind the blogs that I had been reading. Often a mere mention of <a href="http://www.carryoncoding.com">CarryOnCoding.com</a> was enough to help them recognize me instantly. Swaroop even gave me a sneak peek on his yet-to-be-launched website running on TurboGears, a web development framework for Python.<br /><br />I am strong believer in the merits of open-source and it was truly inspiring to see people dedicate an enormous amount of energy and time into building interesting and often challenging stuff and then sharing the code with everyone by making it open-source.<br /><br /><center><img src="http://static.flickr.com/6/68683704_02c2fa2aeb.jpg"></center><br /><br />Visit <a href="http://www.upsterzmoblog.blogspot.com">my moblog</a> for more pictures that I took at the conference.<br /></div>Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1132905573094967232005-11-24T23:39:00.000-08:002005-11-25T03:39:34.606-08:00Ten Essential Development PracticesFollowing is a list of good development practices from an article by Damian Conway. I am reproducing them here after slightly modifying them so as to make them applicable to programming in languages other than Perl too.<br /><br /><ol><li>Design the Module's Interface First</li><li>Write the Test Cases Before the Code</li><li>Create Standard Code Documentation Templates for Modules and Applications</li><li>Use a Revision Control System</li><li>Create Consistent User Interfaces</li><li>Agree Upon a Coherent Layout Style and Automate it</li><li>Code in Commented Paragraphs</li><li>Throw Exceptions Instead of Returning Special Values or Setting Flags</li><li>Add New Test Cases Before you Start Debugging</li><li>Don't Optimize Code--Benchmark It</li></ol><br /><br />I guess most of these are obvious to many of us - developers but still only a few of us can honestly admit to following all of them stringently everytime. So I believe the real challenge lies in how religiously can you follow them even in the face of deadline pressures, unclear specs, and the other pain producing things that indirectly affect what you do when you write code using your favorite editor.<br /><br /><a href="http://www.perl.com/lpt/a/2005/07/14/bestpractices.html">Read the original article by Damian Conway.</a>Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1132839048738242112005-11-24T05:20:00.000-08:002005-11-24T05:35:32.570-08:00Extreme LearningIn software where things change incessantly at a high pace it is very important to know how to go about learning stuff that matters.<br /><br /><em>The natural sciences have a reputation for posing special challenges to the way we think and learn: they are a form of "extreme thinking". In this essay physicist Michael A. Nielsen discusses some of the challenges facing researchers in the natural sciences, and how those challenges shed light on other tough learning situations.</em> <br /><br /><a href="http://www.qinfo.org/people/nielsen/blog/archive/tough-learning/tough-learning-final.html">Read the essay</a> to absorb some general principles of learning.Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1132728776532116942005-11-22T22:46:00.000-08:002005-11-22T22:52:56.546-08:00Tagyu Perl API version 0.02<div><div style="float: left; margin-right: 5px; margin-bottom: 5px;"><img src="http://static.flickr.com/33/53995271_a81d3a4a24_o.png"></div>I have incorporated support in the SuggestTags method of <a href="http://upster.blogspot.com/2005/10/tagyu-perl-api.html#comments">my Tagyu::Search Perl module</a> to allow specifying options to modify its behavior when it contacts <a href="http://tagyu.com">Tagyu.com</a> servers. Thanks to <a href="http://blog.nmcfarl.org/">Nathan McFarl</a> for <a href="http://upster.blogspot.com/2005/10/tagyu-perl-api.html#113267539012821787">his comment</a>.<br /><br />So download <a href="http://saturn.walagata.com/w/upster/Tagyu-Search-0.02.tar.gz">Tagyu::Search v0.02</a> and do let me know how it works for you!</div>Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1132299492603208332005-11-17T23:35:00.000-08:002005-11-17T23:57:11.310-08:00Attending FOSS.IN/2005<div><div style="float: left; margin-right: 5px; margin-bottom: 5px;"> <a href="http://foss.in/2005"><img src="http://foss.in/2005/images/foss9.250.jpg"></a></div>I wanted to attend Linux Bangalore conference last year but <a href="http://upster.blogspot.com/2004/11/linux-bangalore-2004.html">couldn't</a>. Well the conference has now been rechristened <a href="http://foss.in/2005/">FOSS.IN</a> and will cover all FOSS topics which is pretty exciting. Fortunately this year it seems I will be able to attend the conference and I am all excited about it. I will keep posting pictures to <a href="http://upsterzmoblog.blogspot.com">my moblog</a> from there so if you wanna watch all the fun from the comfort of your <code>$comfortable_place</code> you know where to go.<br /><br />Not only would I be able to attend some of the talks from <a href="http://foss.in/2005/schedules/">this</a> interesting list and learn about some stuff, this would hopefully also be an opportunity for me to meetup with some of the geeks in Bangalore whose blogs I <a href="http://www.livejournal.com/~bluesmoon">have</a> <a href="http://www.livejournal.com/~teemus">been</a> <a href="http://www.livejournal.com/~code_martial">reading</a> <a href="http://www.livejournal.com/~suhas">regularly</a>.<br /><br />If you wanna meet up with me during the conference, just look for the guy with a halo on his head (no I am not bald) ;)<br /></div>Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1132224644677820282005-11-17T02:39:00.000-08:002005-11-17T02:50:44.693-08:00Creative Commons Cartoons<div><div style="float: left; margin-right: 5px; margin-bottom: 5px;"><img src="http://static.flickr.com/32/52656244_9df425ffcd_m.jpg"></div>So I have decided to apply Creative Commons Attribution-NonCommercial-NoDerivs 2.5 (<a href="http://creativecommons.org/licenses/by-nc-nd/2.5/">info</a>) to all the cartoons that I release at <a href="http://www.carryoncoding.com">CarryOnCoding.com</a>. They've made choosing a license very simple which is really cool!<br /><br />Oh I wish the process of choosing a license for software projects at <a href="http://www.sourceforge.net">SourceForge</a> was similar but then <a href="http://upster.blogspot.com/2005/10/choosing-software-license.html">stuff like this</a> is helpful while making a choice.</div>Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1132144251183484432005-11-16T04:21:00.000-08:002005-11-16T04:30:51.196-08:00Microsoft and Web 2.0<a href="http://scobleizer.wordpress.com/2005/11/01/ross-doesnt-trust-microsofts-approach-to-web/">Robert Scoble recently posted</a> 12 reasons he's heard why we don't find the <a href="http://techcrunch.com/">recent Web 2.0</a> companies using Microsoft's web development technologies, but using Ruby on Rails, MySQL and Linux instead. (<a href="http://www.loudthinking.com/arc/000534.html">Via</a>)Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1132124869119867492005-11-15T22:57:00.000-08:002005-11-16T00:44:48.400-08:00Got Ubuntu!I received five <a href="http://ubuntu.com/">Ubuntu</a> Linux (version 5.10) CDs in mail today. If you happen to be in Hyderabad and need one, do <a href="mailto:siddhu@gmail.com">let me know</a>. <br /><br />The CDs are free and you can order yours <a href="https://shipit.ubuntu.com/">here</a>. However you can also <a href="http://www.ubuntulinux.org/download/">download</a> a CD image on your own, provided your internet connection can handle it.<br /><br />I would now be able to hopefully initiate the non-geeks (= human-beings?) in my family towards Linux.Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1129720352622520962005-10-19T04:01:00.000-07:002005-12-10T10:53:46.536-08:00Tagyu Perl API<div style="float: left; margin-bottom: 5px; margin-right: 5px;"><img src="http://static.flickr.com/33/53995271_a81d3a4a24_o.png" /></div><h3>Introduction</h3><a href="http://tagyu.com/">Tagyu</a> is a service that can suggest you tags relevant to your content. They have a REST interface <a href="http://tagyu.com/tools/rest">available</a> so I quickly rolled up a simple Perl wrapper over it. <br /><h3>Simple to use</h3>Using Tagyu Web Service from Perl is now very simple and all you need to do is:<br /><code></code><pre><br />use Tagyu::Search;<br /><br />my @tags = Tagyu::Search->SuggestTags("<i>[PUT YOUR TEXT HERE]</i>");</pre><br /><i>SuggestTags</i> method returns an array of strings containing the tags received from Tagyu for the specified text using its REST API.<br /><h3>Passing options</h3>You can also specify options to the <code>SuggestTags</code> method of Tagyu::Search module as key-value pairs to modify its behavior when it dispatches requests to the Tagyu.com servers. Here's an example that sets the timeout parameter.<br /><br /><code></code><pre>my @tags = Tagyu::Search->SuggestTags("<i>[PUT YOUR TEXT HERE]</i>",<br /> (timeout => 600)<br />);</pre>Tagyu::Search uses <a href="http://search.cpan.org/%7Egaas/libwww-perl-5.803/lib/LWP/UserAgent.pm">LWP::UserAgent</a> behind the scenes. So for details of all supported options and their default values, please check the documentation of <a href="http://search.cpan.org/%7Egaas/libwww-perl-5.803/lib/LWP/UserAgent.pm#CONSTRUCTOR_METHODS">LWP::UserAgent's constructor</a>.<br /><h3>Supports HTTP Basic Authentication</h3>Tagyu imposes a limit of one request per minute from a single IP address and requests beyond this limit result in an error. However registered users have a soft cap of 1000 requests per day. Tagyu::Search package allows you to pass your username/password to Tagyu in the following manner:<br /><code><pre><br /># Instantiate a new Tagyu::Search object.<br />my $tagyu = Tagyu::Search->new(<br /> username => "<b><i>[YOUR-USERNAME]</b></i>",<br /> password => "<b><i>[YOUR-PASSWORD]</b></i>"<br />);<br /><br /># Invoke the SuggestTags method on the Tagyu::Search object.<br />my @tags = $tagyu->SuggestTags("<b><i>[YOUR-TEXT]</b></i>");<br /></code></pre>You can register at Tagyu <a href="http://tagyu.com/register">here</a>.<h3>Downloads</h3><ul><li><a href="http://saturn.walagata.com/view.php?file=Tagyu-Search-0.03.zip">Tagyu::Search version 0.03</a> (<a href="http://upster.blogspot.com/2005/12/tagyusearch-v003.html">About</a>)</li><li><a href="http://saturn.walagata.com/w/upster/Tagyu-Search-0.02.tar.gz">Tagyu::Search version 0.02</a> (<a href="http://upster.blogspot.com/2005/11/tagyu-perl-api-version-002.html">About</a>)</li><li><a href="http://saturn.walagata.com/w/upster/Tagyu-Search-0.01.tar.gz">Tagyu::Search version 0.01</a></li></ul><h3>Need Ideas?</h3>For some ideas on what you can do with Tagyu::Search, have a look <a href="http://kalsey.com/2005/10/tagyu_api_ideas/">here</a>.<br /><h3>Comments and suggestions are welcome</h3>Before posting my module to <a href="http://www.cpan.org/">CPAN</a> I have sent an RFC for my Perl module on <a href="http://groups.google.com/group/comp.lang.perl.modules/browse_frm/thread/55a1b4e338a286d7">comp.lang.perl.modules</a> USENET group. So download the latest relase of Tagyu::Search and give it a try. Please share your feedback! Thanks. <p></p>Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1127474518671462512005-09-23T04:16:00.000-07:002005-09-23T04:21:58.676-07:00Meebo - Web based IMCheck out <a href="http://www2.meebo.com/">Meebo</a>, a Web based cross-protocol IM. It works with Jabber, AIM, Yahoo! and MSN.<br /><br /><center><img src="http://static.flickr.com/25/45797963_61737bcf5c.jpg"></center>Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1126883193010114362005-09-16T08:02:00.000-07:002005-09-16T08:06:33.016-07:00Yahoo Collage GeneratorMy <a href="http://upster.blogspot.com/2005/03/yahoo-image-search-collage-generator.html">Yahoo! Image Search collage generator</a> Perl script got a mention in <a href="http://www.oreilly.com/catalog/yahoohks/chapter/hack85.pdf">Beta Hack 85</a> of <a href="http://www.oreilly.com/catalog/yahoohks/chapter/index.html">Oreilly's Yahoo! Hacks</a> which would come out around October 2005.<br /><br /><center><img src="http://static.flickr.com/28/43786430_a5169dbb3a.jpg"></center><br /><br />I am definitly going to buy that book now! :)Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1126708791907090812005-09-14T07:36:00.000-07:002005-09-14T23:57:18.043-07:00ASCII Star Wars<div><div style="float: left; margin-right: 5px; margin-bottom: 5px;"><a href="telnet://towel.blinkenlights.nl"><img src="http://static.flickr.com/24/43270455_7c06aedbda_m.jpg"></a></div><a href="telnet://towel.blinkenlights.nl">Telnet to towel.blinkenlights.nl</a> to see Star Wars in ASCII. Ultimate!<br /><br /><a href="http://www.livejournal.com/users/aivalli/216116.html">Via</a>.</div>Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1126599148140918372005-09-13T01:08:00.000-07:002005-09-13T01:16:13.146-07:00Sign in to Orkut using your Google accountYou can now sign-in to <a href="http://www.orkut.com">Orkut.com</a>, <a href="http://static.flickr.com/28/42940095_a26d3844e5_o.png">Google</a>'s popular online social networking service, using your Google account.<br /><br /><center><img src="http://static.flickr.com/28/42940095_a26d3844e5_o.png"></center><br /><br />I think that's great! What's next? I hope an API for Orkut.com to make stuff like <a href="http://upster.blogspot.com/2005/04/5-must-watch-movies-thanks-orkut.html">my popular books/movies mining hack</a> more acceptable :)<br /><br /><center><font face="Trebuchet MS"><div style="text-align:center;width:60%;"><a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=atlas+shrugged&sourceid=orkutoy" style="font-size: 19px">atlas shrugged</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=catch+22&sourceid=orkutoy" style="font-size: 32px">catch 22</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=catcher+in+the+rye&sourceid=orkutoy" style="font-size: 26px">catcher in the rye</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=da+vinci+code&sourceid=orkutoy" style="font-size: 37px">da vinci code</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=doctors&sourceid=orkutoy" style="font-size: 16px">doctors</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=five+point+someone&sourceid=orkutoy" style="font-size: 22px">five point someone</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=fountain+head&sourceid=orkutoy" style="font-size: 45px">fountain head</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=freedom+at+midnight&sourceid=orkutoy" style="font-size: 16px">freedom at midnight</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=god+of+small+things&sourceid=orkutoy" style="font-size: 16px">god of small things</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=gone+with+the+wind&sourceid=orkutoy" style="font-size: 26px">gone with the wind</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=harry+potter+series&sourceid=orkutoy" style="font-size: 30px">harry potter series</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=inscrutable+americans&sourceid=orkutoy" style="font-size: 16px">inscrutable americans</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=kane+and+abel&sourceid=orkutoy" style="font-size: 18px">kane and abel</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=lord+of+the+rings&sourceid=orkutoy" style="font-size: 29px">lord of the rings</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=lotr&sourceid=orkutoy" style="font-size: 22px">lotr</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=love+story&sourceid=orkutoy" style="font-size: 21px">love story</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=made+in+japan&sourceid=orkutoy" style="font-size: 16px">made in japan</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=midnight's+children&sourceid=orkutoy" style="font-size: 18px">midnight's children</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=siddhartha&sourceid=orkutoy" style="font-size: 16px">siddhartha</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=the+alchemist&sourceid=orkutoy" style="font-size: 29px">the alchemist</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=the+class&sourceid=orkutoy" style="font-size: 19px">the class</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=the+godfather&sourceid=orkutoy" style="font-size: 35px">the godfather</a> <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&keyword=to+kill+a+mocking+bird&sourceid=orkutoy" style="font-size: 29px">to kill a mocking bird</a> </div></font></center><br /><br />(Thanks <a href="http://www.geekheads.com">Alpha0</a>)Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1125380955697724182005-08-29T22:46:00.000-07:002005-08-29T22:49:15.703-07:00Speeding up Firefox<a href="http://www.oreillynet.com/pub/h/3224">Here</a> is how you can tweak the configuration of your Firefox to make it run faster on your broadband connection.Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1125320157846325452005-08-29T05:48:00.000-07:002005-08-29T21:48:12.083-07:00EtherYatri.NET BlogI had created a <a href="http://etheryatri.blogspot.com">blog for EtherYatri.NET project</a> quite a while ago, but due to the fact that I spend most of my time writing Perl for earning my <strike>bread and butter</strike> <a href="http://en.wikipedia.org/wiki/Idli">idli</a> and <a href="http://en.wikipedia.org/wiki/Sambar_%28dish%29">sambhar</a>, it had been devoid of any activity (Don't be mistaken, I don't have anything against Perl that makes me dislike it or anything like that; I think Perl is wonderful in its own unique way!).<br /><br /><center><a href="http://etheryatri.blogspot.com"><img src="http://photos23.flickr.com/38217559_fa48141861_m.jpg" /></a></center><br /><br />Since I have a bunch of features in my head that I want to implement for <a href="http://workspaces.gotdotnet.com/agent">EtherYatri.NET</a>, well I thought a great way to build some momentum would be to respond to questions from the users at the blog. So to start, I picked <a href="http://etheryatri.blogspot.com/2005/08/etheryatrinet-on-net-compact-framework.html">some questions from Florian</a>. Feel free to <a href="mailto:siddhu@gmail.com">contribute</a> your own views, suggestions, comments and questions!Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1122878697612999902005-07-31T23:39:00.000-07:002005-07-31T23:57:02.046-07:00Measuring performance in organizations<blockquote>Software organizations tend to reward programmers who (a) write lots of code and (b) fix lots of bugs. The best way to get ahead in an organization like this is to check in lots of buggy code and fix it all, rather than taking the extra time to get it right in the first place. When you try to fix this problem by penalizing programmers for creating bugs, you create a perverse incentive for them to hide their bugs or not tell the testers about new code they wrote in hopes that fewer bugs will be found. You can't win.<br /><em>-- <a href="http://www.joelonsoftware.com/news/20020715.html">says Joel Spolsky</a></em></blockquote><br /><br />So there is an <a href="http://en.wikipedia.org/wiki/Uncertainty_principle">uncertainty principle</a> of sorts at play here. You cannot measure both the source lines of code (<a href="http://en.wikipedia.org/wiki/Source_lines_of_code">SLOC</a>) and code-quality simultaneously with absolute accuracy. A focus on SLOC is bound to disturb the quality of code and vice-versa.<br /><br />Can we really not win?Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1122622368885857002005-07-29T00:24:00.000-07:002005-07-29T00:32:49.826-07:00Fogcreek Open House<a href="http://jdk.phpkid.org/">JD</a> attended <a href="http://www.fogcreek.com">Fogcreek</a> <a href="http://www.joelonsoftware.com/items/2005/07/14.html">Open House on July 14</a> and got to meet Joel Spolsky in person.<br /><br /><blockquote>Wow! That’s the word which came out of my mouth when I saw Fogcreek office full of geeks! [Normally, I give this 'Wow!' reaction only when I see hot chicks in clubs! ]</blockquote><br />He has uploaded some pictures from the meet too.Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.comtag:blogger.com,1999:blog-5544538.post-1119424613603319872005-06-22T00:00:00.000-07:002005-06-22T01:59:55.276-07:00Got Odeo<div><div style="float: left; margin-right: 5px; margin-bottom: 5px;"><a href="http://flickr.com/photo_zoom.gne?id=20862490&size=s"><img src="http://photos17.flickr.com/20862490_591259fa92_m.jpg"></a></div>Came in this morning to find an invitation to use <a href="http://www.odeo.com">Odeo (beta)</a> sitting in my inbox. What a great start to a day! But I didn't win an <a href="http://www.apple.com/ipodmini/">iPod Mini</a>, so <a href="http://upster.blogspot.com/2005/06/hardware-porn.html">boo</a>! :-)<br /><br />Anyways, I downloaded <a href="http://odeo.com/sync/client">OdeoSyncr</a> but couldn't get the setup to work for me because I do not have admin rights on the machine I want to install it on, and the setup insists on writing to "C:\Program Files" and doesn't even want to let me suggest an alternative location. I notified them about the issue and hope that it gets resolved soon.<br /><br />At first glance, Odeo appears to be something like <a href="http://del.icio.us/">del.icio.us</a> + <a href="http://www.blogger.com">blogger.com</a>. Hmm... let's see if <a href="http://www.odeo.com">Odeo</a> does to <a href="http://en.wikipedia.org/wiki/Podcasting">podcasting</a> what <a href="http://www.blogger.com">Blogger</a> did to <a href="http://www.google.com/url?sa=X&start=1&oi=define&ei=URC5QuLkOKjKwQH32omEDw&sig2=BAdSnc0HjQONYA-6Q4Bmfw&q=http://en.wikipedia.org/wiki/Blogging">blogging</a>.</div>Sid Uppalhttp://www.blogger.com/profile/05868031111700229215noreply@blogger.com