<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1949757213997623583</id><updated>2011-07-08T07:24:40.735+05:30</updated><category term='WebApp'/><category term='barcamp'/><category term='scripting'/><category term='springframework'/><category term='Vista'/><category term='Visual Studio'/><category term='enum'/><category term='anonymous inner class'/><category term='GWT'/><category term='devcamp'/><category term='java'/><category term='meet'/><category term='strategy'/><category term='JavaScript'/><title type='text'>Kick in the discovery ..</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://scope2.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://scope2.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Angshuman Sarkar</name><uri>http://www.blogger.com/profile/09551593184902595771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1949757213997623583.post-6644692922386853551</id><published>2010-07-29T15:43:00.001+05:30</published><updated>2010-07-29T15:45:44.544+05:30</updated><title type='text'>s/w for social impact .. contd..</title><content type='html'>for once I am really really happy and proud, because of "greater goodness" it aim towards, and not a typical corporate endeavor. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://grameenfoundation.org/press-releases/grameen-foundation-and-thoughtworks-partner-extend-microfinance-technology-platform-g"&gt;http://grameenfoundation.org/press-releases/grameen-foundation-and-thoughtworks-partner-extend-microfinance-technology-platform-g&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.banktech.com/architecture-infrastructure/showArticle.jhtml?articleID=226300128"&gt;http://www.banktech.com/architecture-infrastructure/showArticle.jhtml?articleID=226300128&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1949757213997623583-6644692922386853551?l=scope2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scope2.blogspot.com/feeds/6644692922386853551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1949757213997623583&amp;postID=6644692922386853551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/6644692922386853551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/6644692922386853551'/><link rel='alternate' type='text/html' href='http://scope2.blogspot.com/2010/07/sw-for-social-impact-contd.html' title='s/w for social impact .. contd..'/><author><name>Angshuman Sarkar</name><uri>http://www.blogger.com/profile/09551593184902595771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1949757213997623583.post-123417497177295046</id><published>2010-04-30T12:10:00.002+05:30</published><updated>2010-04-30T12:23:57.003+05:30</updated><title type='text'>s/w for social impact</title><content type='html'>off late, I have got few opportunities to work in s/w for social causes. While its great to be proving value and derive personal satisfaction out of work done for corporates, its something else when I can actually do something for social causes. Recently I was involved in solutioning a student welfare and learning program in Karnataka (yet to be implemented, but if and when its done, its going to be something really really awesome. Even better ... its going to be FOSS). Currently, I am involved in another open source product for a reputed microfinancing solution provider, as part of our company's Social Impact Programme. I have tried and failed before to do something useful for my own state in 2005/2006, for "various" reasons. This time around, I have the support, willingless and "hopefully" commitment from  organizations who are really committed towards such causes, and not for propaganda or "easy money". More details later&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1949757213997623583-123417497177295046?l=scope2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scope2.blogspot.com/feeds/123417497177295046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1949757213997623583&amp;postID=123417497177295046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/123417497177295046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/123417497177295046'/><link rel='alternate' type='text/html' href='http://scope2.blogspot.com/2010/04/sw-for-social-impact.html' title='s/w for social impact'/><author><name>Angshuman Sarkar</name><uri>http://www.blogger.com/profile/09551593184902595771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1949757213997623583.post-405851795430169029</id><published>2009-11-05T12:23:00.007+05:30</published><updated>2009-11-05T19:40:10.286+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='WebApp'/><title type='text'>GWT or Pure JavaScript?</title><content type='html'>Off late, I have heard of quite a few stories of GWT being "awesome" choice for complicated  web applications. "Ideal", "Awesome" are terms subjective to reuqirements but here's my take. &lt;br /&gt;&lt;br /&gt;I am apprehensive of the strategy itself. To take advantage of compile time benefits of static languages for behaviors driven by dynamic language targetting already troublesome host environment!!  Personally, I favor either a pure JS driven or RIA approach, depending on website needs. &lt;br /&gt;&lt;br /&gt;In favor of pure JS driven approach: &lt;br /&gt;- Browser compatibility problems have long been addressed by most modern JS libraries. Build your JavaScript components as extension to JQuery, ExtJS etc.  &lt;br /&gt;- For debugging support, you can't really shy away from browser level debugging. Odd that considering JavaScript is in widespread usage for so so long, that IDEs have remained far behind. But with increased stability in browser specifications (sure!) and absence of dog-fights, most browsers provide good support these days. Mozilla, IE, Opera and growing number of additional plugins are getting pretty good at it.  &lt;br /&gt;- During development, tools like JSLint can provide you some degree of dev time checks. Tools JSEclipse, Aptana Studio etc also help.&lt;br /&gt;- Testability: Well its far from XUnit level support and integration, but its getting better everyday. It also depends on how you design your UI (pages, elements, scripts), and to an extent to overall web app architecture. Honestly, isn't it the case for any other system? &lt;br /&gt;&lt;br /&gt;I recently discovered, &lt;a href="http://code.google.com/p/js-test-driver/"&gt;js-testdriver&lt;/a&gt;. Its awesome, integrates with Eclipse and CI systems. JSUnit is also helpful, but probably you want to consider testability aspects right at the time of designing your Pages and JavaScript components. (Which you should for any system, always)&lt;br /&gt;&lt;br /&gt;More dramatically, using Java 6 scripting apis, you can think of mocking DOM, other dependencies. (Now thats adventure :) .. ) &lt;br /&gt;&lt;br /&gt;- if you design your web layer such that you only work around visual component's behavior rather than rendering itself, you can greatly influence testability as well. for example, an AJAX call returning XHTML(s) that can be used for rendering than JSON and direct DOM manipulation techniques. This way, if you design your server side actions and templates well, you can reuse the views for both page and AJAX requests.&lt;br /&gt;&lt;br /&gt;- finally, writing code in JS, is the best way you will write quality code. No code generation tool can help you achieve better understanding/code/design. Don't shy away from it, embrace JS development. Will you adopt a GWT/Script# like approach for CSS too??  &lt;br /&gt;&lt;br /&gt;Btw, I have used GWT before and liked it very much till I really understood and used JavaScript as an OOPs language, and worked on various Web architecture approaches. Basically really learnt things about WWW.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1949757213997623583-405851795430169029?l=scope2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scope2.blogspot.com/feeds/405851795430169029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1949757213997623583&amp;postID=405851795430169029' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/405851795430169029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/405851795430169029'/><link rel='alternate' type='text/html' href='http://scope2.blogspot.com/2009/11/gwt-or-pure-javascript.html' title='GWT or Pure JavaScript?'/><author><name>Angshuman Sarkar</name><uri>http://www.blogger.com/profile/09551593184902595771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1949757213997623583.post-4773291910489397168</id><published>2009-09-23T22:51:00.003+05:30</published><updated>2009-09-23T23:23:07.974+05:30</updated><title type='text'>working with the geeks</title><content type='html'>Since monday, I am engaged in another consulting gig for a high profile client. I am getting to work with some super dudes, very senior architects. They are luminaries in their own fields ... its quite something, &lt;br /&gt;&lt;br /&gt;the amount of stuff you get to learn just by watching them is just phenomenal&lt;br /&gt;- they can immediately recognize the problem areas&lt;br /&gt;- the thought process. Phew, they are just able to co-relate things which may seem absolutely irrelevant and out of context of each other. &lt;br /&gt;- ability to solutionize. &lt;br /&gt;- how they engage with the client. &lt;br /&gt;- obviously the depth of knowlege they pocess. &lt;br /&gt;&lt;br /&gt;at the same time, you are sort of scared of not been able to live upto their expectations. which is sort of good in a way I guess, keeps you in your toes. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1949757213997623583-4773291910489397168?l=scope2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scope2.blogspot.com/feeds/4773291910489397168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1949757213997623583&amp;postID=4773291910489397168' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/4773291910489397168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/4773291910489397168'/><link rel='alternate' type='text/html' href='http://scope2.blogspot.com/2009/09/working-with-geeks.html' title='working with the geeks'/><author><name>Angshuman Sarkar</name><uri>http://www.blogger.com/profile/09551593184902595771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1949757213997623583.post-5694482585046357333</id><published>2008-04-08T17:38:00.006+05:30</published><updated>2008-04-09T16:21:48.573+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='strategy'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='anonymous inner class'/><title type='text'>Using anonymous class for command strategy!</title><content type='html'>In my small consulting bit, I recently came across a client’s requirements, part of which is mentioned below:&lt;br /&gt;1) Data comes in a flat file, in comma delimited format. &lt;br /&gt;2) Each line represents some sort of actions. The server makes sure that the actions represented in each line are sequential. &lt;br /&gt;&lt;br /&gt;But he now needs further interpretation and more “actions” and his serverside coders have  extended the interpretations and hence requirement for extension at clientside. They have given him a set of “reusable lib” to interpret the textual lines and returning into meaning objects! And conveniently left for the client to decide what to do with those “meaningful” objects. The previous clientside design  just took each line and parsed the info, and did some stuff like executing a work flow, persisting the interpreted line details in db, notification to clientele etc.  &lt;br /&gt;Many of the older objects and methods are still much applicable even now. Like earlier execution of workflow, persistence and notification codes.  &lt;br /&gt;&lt;br /&gt;The older “IntegratorObject” (I didn’t name it!) was full of “if-else” conditions and a huge block of code. Would definitely like to refactor that! Factory method, strategy .. all came rushing onto my mind.  &lt;br /&gt;&lt;br /&gt;Then came my client, “oh! Java is oops, so these would be easily fit using reusable components and codes from older program, right?” (Advice: never tell a client that his existing code is crap! And I needed the money)  ... so, I told him that I would make his “reusable” code into extensible code so that he can add and reuse stuff but not have to break exiting. “Whatever! should work as you promise and as efficiently as earlier. And not break anything!”... Okkkayyy!&lt;br /&gt;Step1: I decided that each line must interpret and a “command object” created. &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public interface IntegratorCommand {&lt;br /&gt;    void execute();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Step2: subclassed “IntegratorObject”, since some of the states and methods can only be used from within for sake of the “reusable methods”!! Overrode the onMessage(), and added a method for command object creation which would act as factory method and made the new Class as abstract.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public abstract class AbstractIntegrator extends IntegratorObject {&lt;br /&gt;....&lt;br /&gt;....&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public void onMessage(BufferedReader reader) {&lt;br /&gt;   String lineInput;&lt;br /&gt;   try {&lt;br /&gt;     lineInput = reader.readLine();&lt;br /&gt;     while (lineInput != null) {&lt;br /&gt;       IntegratorCommand cmd = getIntegratorCommand(lineInput);&lt;br /&gt;       cmd.execute();&lt;br /&gt;       lineInput = reader.readLine();&lt;br /&gt;     }&lt;br /&gt;     reader.close();   &lt;br /&gt;   } catch (RuntimeException e) {&lt;br /&gt;      ... &lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;protected abstract IntegratorCommand getIntegratorCommand(final String textInput); &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;[[NOTE: If you are wondering, why I subclassed and broke the onMessage() which is clear violation of all OOD principles, well firstly I didn’t want to do any modification/refactoring to their existing codebase (saving my neck!),  secondly, yes I could have used a wrapper class delegating the needed instructions, but I also wanted to show to the client whys and hows.  Served my purpose later!]]&lt;br /&gt;&lt;br /&gt;Step3: So far, so good, I now derive a new class out of “AbstractIntegrator” and implement the “getIntegratorCommand()”right? Therein lies the problem, because of my client wanted to “reuse” the existing codebase which dependent heavily on states already present on older implementation (and I didn’t want to do touch their code). Building any extrinsic and sharable strategy objects would be difficult, and I would be forced to create intrinsic strategies which must be passed the reference of the “IntegratorObject” so that it can read its various states.  And then pre-create strategies in constructor of IntegratorObjects (or use setter method!):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public class IntegratorStrategy {&lt;br /&gt;  public IntegratorStrategy(IntegratorObject integrator); &lt;br /&gt;  ....&lt;br /&gt;}&lt;br /&gt;//in constructor of IntegratorObject types&lt;br /&gt;IntegratorStrategy strategy = new IntegratorStrategy(this); &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now such predefined “typed and named” intrinsic strategies are helpful but can have following limitations&lt;br /&gt;a) Cannot be loosely couple and shared (extrinsic) &lt;br /&gt;b) Must be created within the scope of parent.  &lt;br /&gt;c) Circular reference. If you do manage to create sharable instances outside, and use setter methods for IntegratorObject ref and used in multi-threaded applications, you can run into problems because of programming error. Surely if you do not document the ordering of synchronized object method calls. &lt;br /&gt;[Ok, I am thinking too much, just trying to cover possibilities]&lt;br /&gt;&lt;br /&gt;Now, I could start thinking of some mindboggling extrinsic strategy design which would still require me to pass “IntegratorObject” states to each strategy making them more and more complicated and prone to breakage during extensions! I want the strategies to have access to the “IntegratorObject” instance and yet be defined concisely and be used in the factory method of “getIntegratorCommand()”. {{thinking! thinking....}} What about using “Anonymous Inner classes”? &lt;br /&gt;&lt;br /&gt;Step4: &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public class IntegratorV2 extends AbstractIntegrator {&lt;br /&gt;....&lt;br /&gt;....&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;protected IntegratorCommand getIntegratorCommand(&lt;br /&gt;    final String textInput);       &lt;br /&gt;   IntegratorCommand cmd = new IntegratorCommand() {&lt;br /&gt; @Override&lt;br /&gt; public void execute() {}&lt;br /&gt;   }; &lt;br /&gt;&lt;br /&gt;   //depending on textInput, different command objects are created&lt;br /&gt;   if (textInput.startsWith(“WF”)) {&lt;br /&gt;     cmd = new IntegratorCommand(){&lt;br /&gt;               public void execute() {&lt;br /&gt;                  //serverside provided utils!!!&lt;br /&gt;                  Object obj = IntegratorUtils.getWorkflowVO(textInput);&lt;br /&gt;                  //superclass method&lt;br /&gt;                  executeFlow(obj);                 &lt;br /&gt;               }&lt;br /&gt;            };&lt;br /&gt;   } else if (textInput.startsWith(“SND”)) {&lt;br /&gt;      cmd = new IntegratorCommand(){&lt;br /&gt;                public void execute() {&lt;br /&gt;                  Object obj = IntegratorUtils.getNotifyMsg(textInput);&lt;br /&gt;                  //superclass methods&lt;br /&gt;                  notify(obj);      &lt;br /&gt;               } &lt;br /&gt;            };&lt;br /&gt;   &lt;br /&gt;    } &lt;br /&gt;    //and so on...  &lt;br /&gt;    return cmd; &lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;[[NOTE: I didn’t like the “if” statements and I fixed them other ways later, but the above should carry the point I am trying to drive]]&lt;br /&gt;Everything works perfectly. Note the use of keyword “final”  in getIntegratorCommand()for the String argument passed.  This is required for call stack persistence of argument values.  Otherwise, you can always use a property (and a setter method) to achieve that. &lt;br /&gt;A nice use of abstraction. (and old way of forming “Closures” although the created command objects never lives outside the scope of the creator, in this case. But nothing stops the commands to be deferred calls. Isn’t that the idea of a command pattern anyway?) &lt;br /&gt;The client finally saw the point and I did get the opportunity to refactor bit of their older code (and earn a bit extra money. Who said consulting was easy!) &lt;br /&gt;I have renamed and changed the contexts a bit and omitted other irrelevant details. Sorry I couldn’t give much detailed information. Secrecy! Blame it on the rain! &lt;br /&gt;&lt;br /&gt;P.S: I eventually used mix of anonymous class and genericized strategies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1949757213997623583-5694482585046357333?l=scope2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scope2.blogspot.com/feeds/5694482585046357333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1949757213997623583&amp;postID=5694482585046357333' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/5694482585046357333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/5694482585046357333'/><link rel='alternate' type='text/html' href='http://scope2.blogspot.com/2008/04/using-anonymous-class-for-command.html' title='Using anonymous class for command strategy!'/><author><name>Angshuman Sarkar</name><uri>http://www.blogger.com/profile/09551593184902595771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1949757213997623583.post-5504739358466478818</id><published>2008-04-06T11:26:00.006+05:30</published><updated>2008-04-06T12:14:25.386+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='springframework'/><title type='text'>I love Spring!</title><content type='html'>I love Spring! The season as well as the &lt;a href="http://www.springframework.org"&gt;framework&lt;/a&gt;. :)&lt;br /&gt;For example, for one of my clients I had to install XPlanner as a project tracking and monitoring tool. (Yeah! I know there maybe a better XP tool available but XPlanner is simple and client likes it!) Anyway .. .&lt;br /&gt;&lt;br /&gt;I downloaded xplanner 0.7b7 and tried to install under Vista Premium, running JRE 6 and Tomcat 6. This version of XPlanner is built on Spring 1.2 and I got this error &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;“org.springframework.beans.TypeMismatchException: Failed to convert property value of type [org.apache.commons.collections.map.LinkedMap] to required type [java.util.HashMap]” &lt;br /&gt; &lt;/pre&gt;&lt;br /&gt;Checking onto source file showed that “MetaRepositoryImpl” takes a “java.util.Hashmap” as its “repositories” property. However for some reason Spring was constructing a LinkedMap instance for “&lt; Map &gt;” declaration in bean configuration.  Hmmm .. needed further investigation but I did not have time!&lt;br /&gt;Now I had two options:&lt;br /&gt;1) I could modify the source of “MetaRepositoryImpl”.  &lt;br /&gt;2) Think about spring way  - Below  is what I did.&lt;br /&gt;Previous=&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt; property name="repositories"&gt;&lt;br /&gt;  &lt; map&gt;&lt;br /&gt;   &lt; entry&gt;&lt;br /&gt;    ....&lt;br /&gt;   &lt; /entry&gt; &lt;br /&gt;    ......&lt;br /&gt;  &lt; /map&gt;&lt;br /&gt;&lt; /property&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Changed to=&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt; property name="repositories"&gt;&lt;br /&gt;  &lt; bean class="java.util.HashMap"&gt;&lt;br /&gt;    &lt; constructor-arg&gt;&lt;br /&gt;     &lt; map&gt;&lt;br /&gt;      &lt; entry&gt;&lt;br /&gt;       ....&lt;br /&gt;      &lt; /entry&gt; &lt;br /&gt;       ......&lt;br /&gt;     &lt; /map&gt;&lt;br /&gt;    &lt; /constructor-arg&gt;     &lt;br /&gt;   &lt; /bean&gt; &lt;br /&gt;&lt; /property&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Done! Spring saves the day!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1949757213997623583-5504739358466478818?l=scope2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scope2.blogspot.com/feeds/5504739358466478818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1949757213997623583&amp;postID=5504739358466478818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/5504739358466478818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/5504739358466478818'/><link rel='alternate' type='text/html' href='http://scope2.blogspot.com/2008/04/i-love-spring.html' title='I love Spring!'/><author><name>Angshuman Sarkar</name><uri>http://www.blogger.com/profile/09551593184902595771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1949757213997623583.post-7467631867612969982</id><published>2008-03-24T23:20:00.014+05:30</published><updated>2008-04-04T00:01:12.512+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='enum'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>A lil homework</title><content type='html'>As part of my lil homework yesterday, I had this 'kahani'.&lt;br /&gt;&lt;br /&gt;'A toy is controlled remotely over some grid like terrain. Along with its positional coordinates, the toy also maintains its facing (North, South, East, West) so that when remotecontrol commands 'move' - it moves in its facing direction. On turnLeft command, if facing North it would face West. On turnRight command, facing East then would be South. And so on .. '&lt;br /&gt;&lt;br /&gt;Well smarty pants, I, declared an enum type.&lt;br /&gt;&lt;pre&gt;public enum Facing {North, South, East, West;}&lt;/pre&gt; &lt;br /&gt;&lt;br /&gt;Writing a function to turn things right seemed simple enough!&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public void turnRight() {&lt;br /&gt;  switch (this.currentFacing) {&lt;br /&gt;   case East : this.currentFacing = Facing.South; break;&lt;br /&gt;   case West : this.currentFacing = Facing.North; break;&lt;br /&gt;   case North: this.currentFacing = Facing.East; break;&lt;br /&gt;   case South: this.currentFacing = Facing.West; break;&lt;br /&gt;   default: break;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;the similar way to implement the turnLeft() method!!! Now, this didn't seem to tough, eh? Ehrrrrrr! too many conditional statements? If say a new facing (NorthEast) is added, then for things to work, existing code would have to be broken and modified? &lt;br /&gt;&lt;br /&gt;Now, Java 5 came with linguistic support for enumerated types enum. All enums implicitly extend java.lang.Enum and allow you to add typical class constructs. 'enum' is also Comparable and Serializable. Now, I could write some &lt;em&gt;complicated&lt;/em&gt; program to solve the conditional expressions above. But hey all java enum return an array of declared enums through &lt;em&gt;enum.values()&lt;/em&gt;. Voila!&lt;br /&gt;&lt;br /&gt;So I wrote:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public enum Facing {North, East, South, West;} //change in order!&lt;br /&gt;&lt;br /&gt;public Facing getFace(Facing refFace, int factor) {&lt;br /&gt; int currentIdx = 0;&lt;br /&gt; Facing[] faces = Facing.values();&lt;br /&gt; for (int i=0; i &lt; faces.length; i++) {&lt;br /&gt;  Facing face = faces[i];&lt;br /&gt;  if (face.equals(refFace)) {&lt;br /&gt;   currentIdx = i;&lt;br /&gt;   break;&lt;br /&gt;  }&lt;br /&gt; } &lt;br /&gt; currentIdx = currentIdx + factor;//the next facing index&lt;br /&gt; if (currentIdx &lt; 0) {&lt;br /&gt;   while (currentIdx &lt; 0)&lt;br /&gt;      currentIdx = currentIdx + faces.length;&lt;br /&gt; } else if (currentIdx &gt;= faces.length) {&lt;br /&gt;  currentIdx = currentIdx - faces.length;&lt;br /&gt; }&lt;br /&gt; return faces[currentIdx];  &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;if I consider turning left/anticlockwise as negative .. &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;getFace(Facing.North, -1); //=&gt;Facing.West&lt;br /&gt;getFace(Facing.North, +5); //=&gt;Facing.East&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So in the end, my turnRight() and turnLeft() turned to&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public void turnRight() {&lt;br /&gt;  this.currentFacing = getFace(1, this.currentFacing);&lt;br /&gt;}&lt;br /&gt;public void turnLeft() {&lt;br /&gt;  this.currentFacing = getFace(-1, this.currentFacing);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Even if I go and change the Facing declaration to something like &lt;br /&gt;&lt;pre&gt;public enum Facing {North, NorthEast, East, SouthEast, South, SouthWest, West, NorthWest;}&lt;/pre&gt; things would still work as expected if you want to turn left from say North Facing 1 step to NorthWest, 2 steps to West or even turn 720 deg! :)&lt;br /&gt;&lt;br /&gt;Think about implementing the same for Days of week, or Months and do similar mathematics on them. &lt;br /&gt;&lt;pre&gt; &lt;br /&gt;day = add(Day.Monday,4); &lt;br /&gt;day = add(Day.Monday,-3); &lt;br /&gt;month = add(Month.January,-3);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You can further generalize things further using &lt;pre&gt;day.getClass().getEnumConstants()&lt;/pre&gt; &lt;br /&gt;enum is Tiger introduced. Prior to that java, standard way was like declaring a public static final constant usually in an interface/abstract class! For example, how do you add days, month or years to a calendar object?&lt;br /&gt;&lt;pre&gt;calendarInstance.add(Calendar.DATE, 2);&lt;/pre&gt; &lt;br /&gt;Notice the similarity of definition but the differentiation? Declared in Calendar class &lt;br /&gt;&lt;pre&gt;public static final int DATE = 5; &lt;/pre&gt; &lt;br /&gt;if only java had operator overloading instead of the exotic darker beans and means for the riches! :((&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1949757213997623583-7467631867612969982?l=scope2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scope2.blogspot.com/feeds/7467631867612969982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1949757213997623583&amp;postID=7467631867612969982' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/7467631867612969982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/7467631867612969982'/><link rel='alternate' type='text/html' href='http://scope2.blogspot.com/2008/03/lil-homework.html' title='A lil homework'/><author><name>Angshuman Sarkar</name><uri>http://www.blogger.com/profile/09551593184902595771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1949757213997623583.post-4510262503815835195</id><published>2008-03-23T10:36:00.006+05:30</published><updated>2008-03-23T11:39:11.376+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>VS2005 installation on Vista!</title><content type='html'>finally managed to  &lt;em&gt;install&lt;/em&gt; Visual studio 2005 on Vista Home Premium. Slow-ish internet bandwidth didn't help. After installing VS, I had to apply Team suite SP1.  and then run VS2005 Sp1 for vista, which is kinda like service pack for service pack. These aren't just the patches, I still have to run and fix for various other patches toolsets and extensions, but I will take them on need basis.  If you have UAC enabled, it can be frustratingly slow and irritating&lt;br /&gt;&lt;br /&gt;There are plenty of articles thankfully on MSDN and on internet, which does provide detailed information.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mvolo.com/blogs/serverside/archive/2006/12/28/Fix-problems-with-Visual-Studio-F5-debugging-of-ASP.NET-applications-on-IIS7-Vista.aspx"&gt;http://mvolo.com/blogs/serverside/archive/2006/12/28/Fix-problems-with-Visual-Studio-F5-debugging-of-ASP.NET-applications-on-IIS7-Vista.aspx&lt;/a&gt; (ASP.NET problems)&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/937523"&gt;http://support.microsoft.com/kb/937523&lt;/a&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/?kbid=929470"&gt;http://support.microsoft.com/?kbid=929470&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;oh, VS.NET 2002 and 2003 aren't supported on Vista, but VB6.0 supported???  I am also facing problem with windows explorer. Crashes and restarts once in a while. I am guessing that its a incompatible shell extension. No time to debug and fix ..  My vista experience has been bumpy alright!  (Humpty dumpty sat on a wall, humty dumpty had a great fall?). I like to adopt softwares early and its fun sometimes finding ways around blocks, but it can be maddenning when pressed for time.&lt;br /&gt;&lt;br /&gt;Gonna watch F1 (Sepang) and then got some 'homework' to do ..&lt;br /&gt;&lt;br /&gt;hasta la vista!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1949757213997623583-4510262503815835195?l=scope2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scope2.blogspot.com/feeds/4510262503815835195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1949757213997623583&amp;postID=4510262503815835195' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/4510262503815835195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/4510262503815835195'/><link rel='alternate' type='text/html' href='http://scope2.blogspot.com/2008/03/vs2005-installation-on-vista.html' title='VS2005 installation on Vista!'/><author><name>Angshuman Sarkar</name><uri>http://www.blogger.com/profile/09551593184902595771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1949757213997623583.post-7516064338477529927</id><published>2008-03-21T01:44:00.004+05:30</published><updated>2008-03-21T02:26:46.358+05:30</updated><title type='text'>YASST (Yet another SQL scripting tool)</title><content type='html'>I was trying to revive my almost broken down PC, when I unearthed this program, SQLScripter.&lt;br /&gt;What does it do? It reads excel spreadsheets, and generates SQL scripts for each row. Simple rules guide the format of XLS file:&lt;br /&gt;1. Spreadsheet name decides the TABLE name.&lt;br /&gt;2. Within each spreadsheet, first row denotes the COLUMNS. By default first column is taken as primary key, unless you mention &lt;field_name*&gt;&lt;br /&gt;3. The Last column denotes action to be performed. (INSERT, UPDATE or DELETE)&lt;br /&gt;How it works?&lt;br /&gt;1. Pick up the excel file. The UI helps you choose the spreadsheets you want to script. Clicking a button generates the SQL scripts and displays in a text area (optionally multi panes for each TABLE).&lt;br /&gt;2. Edit, save as SQL file(s).&lt;br /&gt;&lt;br /&gt;Deploy: Single exe and a properties file on Windows 2000 and above (checked on vista .. works!) . Oh, you should have excel or equivalent extentions (eg Microsoft works)&lt;br /&gt;&lt;br /&gt;I wrote it initially in Delphi 5. (I recompiled it today on D7, no change required). It uses OLE Automation to connect to MS Excel and read contents. I wrote it for Netkraft, who wanted a pilot for certain client. I went to Netkraft’s office one afternoon, took me about 5/6 hours or so, for the first version. (Never really got paid for that, but got something else going .. different story!)&lt;br /&gt;&lt;br /&gt;Later on, I added few other features. As simple it maybe, 4 organizations still use it extensively – two of them in production and support!! So I thought maybe, just maybe, this old outdated thing can be of some use to somebody! :))&lt;br /&gt;Now, where do I upload the source codes?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1949757213997623583-7516064338477529927?l=scope2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scope2.blogspot.com/feeds/7516064338477529927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1949757213997623583&amp;postID=7516064338477529927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/7516064338477529927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/7516064338477529927'/><link rel='alternate' type='text/html' href='http://scope2.blogspot.com/2008/03/yasst-yet-another-sql-scripting-tool.html' title='YASST (Yet another SQL scripting tool)'/><author><name>Angshuman Sarkar</name><uri>http://www.blogger.com/profile/09551593184902595771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1949757213997623583.post-3637627441032489590</id><published>2008-02-27T16:52:00.000+05:30</published><updated>2008-02-27T17:16:42.614+05:30</updated><title type='text'>my new notebook!</title><content type='html'>I recently upgraded from my old notebook - an Acer AMD Turion TL-50. I got one Dell XPS, Centrino T7500, Dual Core, 2.2GHz, 4 MB L2 cache, 800MHz FSB, 3GB Ram, 160GB Sata HDD, a basic NVidia GeForce 8000 with 128 MB memory and other regular stuff. &lt;br /&gt;&lt;br /&gt;1. Most of the brands come packaged with no scope for upgrading components, other than dell. &lt;br /&gt;2. I have used AMD throughout and I abused my acer notebook (TL-50) and home PC to the max. so no complaints. But I couldnt find a notebook with TL-60 or above (within my budget), and AMD has been lagging in the notebook processor compared to Intel. Hence the decision to go with a Intel Centrino. &lt;br /&gt;3. Most branded and packaged notebooks, came with hi end graphic and audio cards, and additional multimedia, of which I have no use. Only dell allowed me to adjust the configuration, and I cut down on video and audio cards.  &lt;br /&gt;4. Pricing: Any decent notebook with a T7300 or above came close to 100,000 INR or above. Like Mac, Ferrari, Fujitsu, HP, Lenovo and Sony included. Sony did have one with T7250 costing about 56K, but the notebook seemed like a tin-case. &lt;br /&gt;5. India Models: Many of the brands will market the same model with downsized configuration and still equivalent to Euro prices. For example Acer 5920 Gemstone (yeah - the beige keyboard one), US model comes with T7300 processor but in India its T5450 processor. Same for some HP pavilion notebooks. This is blatant coning!&lt;br /&gt;6. I could not wait for someone to come down from US to get me a notebook. I needed now. &lt;br /&gt;&lt;br /&gt;In the end I found, none other than dell provided value for money and option for configurability. Upgraded, it cost me ~63K. It would have been only about 54/55K, if not for the excise duty on components, which for other brands are not applicable I guess. Anyway, I do not think I would have got such a config with other brands for less than 100K. Btw, whats the need for a 2MP webcam??&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1949757213997623583-3637627441032489590?l=scope2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scope2.blogspot.com/feeds/3637627441032489590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1949757213997623583&amp;postID=3637627441032489590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/3637627441032489590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/3637627441032489590'/><link rel='alternate' type='text/html' href='http://scope2.blogspot.com/2008/02/my-new-notebook.html' title='my new notebook!'/><author><name>Angshuman Sarkar</name><uri>http://www.blogger.com/profile/09551593184902595771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1949757213997623583.post-5601363673890747455</id><published>2008-02-09T23:00:00.000+05:30</published><updated>2008-02-09T23:23:29.035+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='devcamp'/><category scheme='http://www.blogger.com/atom/ns#' term='barcamp'/><category scheme='http://www.blogger.com/atom/ns#' term='meet'/><title type='text'>now devcamp ..</title><content type='html'>I went to attend the first &lt;a href="http://devcamp.in"&gt;devcamp&lt;/a&gt; 'unconference', held at &lt;a href="http://www.thoughtworks.com/"&gt; ThoughtWorks &lt;/a&gt;, Bangalore premises. &lt;br /&gt;&lt;br /&gt;Devcamp is offshoot from Barcamp, (foocamp-&gt;barcamp-&gt;devcamp!),  intent towards the developers. As Barcamp India went on a different tangent, Devcamp intended to connect and capture the imagination of the developer community. &lt;br /&gt;&lt;br /&gt;Martin Fowler was present and set the context of &lt;span style="font-style:italic;"&gt;unconferencing&lt;/span&gt; mode of ideating, brainstorming. The ‘unconference’ took place at TW office. Organized in terms of &lt;span style="font-style:italic;"&gt;talks, discussions&lt;/span&gt;, and &lt;span style="font-style:italic;"&gt;Lightning talks&lt;/span&gt;, sessions happened simultaneously at TW’s various discussions/conference rooms and open working spaces. Subjects were varied from semantic web to android programming to LINQ to ruby for gaming, symbian PIPS etc to discussions of ‘if facebook an enterprise app’. ?? (Whatever..)  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Discussions&lt;/span&gt; were sometimes too loosely-coupled and I used the extra time to hop at other talks and discussions! &lt;br /&gt;&lt;br /&gt;Microformats and Semantic web talk was very interesting, although I am skeptical about feasibility of standardization process and implementations. Checkout &lt;a href="http://poshzone.wikidot.com/intro"&gt;Poshzone&lt;/a&gt; (Plain Old Semantic Html zones) .&lt;br /&gt;&lt;br /&gt;I attended an interesting session by Karthik Ramachandra on Load testing with Erlang. Some more work and will cut &lt;a href=" http://jakarta.apache.org/jmeter/ "&gt;jmeter &lt;/a&gt; like butter. :) &lt;br /&gt;&lt;br /&gt;I missed out Ravi Mohan‘s talk on ‘Monads’. The session was on placeholder, and I went to attend another session. I wanted to speak to him about scala and osgi, but he left soon after. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Lightning talks&lt;/span&gt; were interesting. 3 minutes of talking about virtually anything, and people demonstrated/spoke about handheld gaming device, to online video mashups to just ideas etc. &lt;br /&gt;&lt;br /&gt;For many developers, focus seemed to be in RIA development. Bringing the web to the desktop! Lots of activity around AIR, Silverlight, Django.  &lt;br /&gt;&lt;br /&gt;Time allocated per &lt;span style="font-style:italic;"&gt;talk/discussion&lt;/span&gt; was 30 mins, which hardly left scope for detailed discussions. For example, talking about say advanced Eclipse Plugin development, within 30 mins? Nor is the time enough for forthcoming technology talks on Adobe AIR, for eg.   &lt;br /&gt;&lt;br /&gt;I should have done a talk on OSGi or Spring dynamic modules, as there turned out to be some slots available by absence, but I wasn’t prepared with demo-able code samples or slides. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sidu did a commendable job in organizing the whole meet with other Barcamp volunteers. Although it had its share of photography-‘enthusiasts’, web 2.0 innovators, publicists etc, I look forward to attending Devcamp next year.&lt;br /&gt;&lt;br /&gt;info: LinuxAsia is conducting an event of open source technologies at Bangalore next week. Check out www.osiweek.com&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Btw remembered this .. “For a successful technology, reality must take precedence over public relations, for Nature cannot be fooled.” - Richard Feynman&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1949757213997623583-5601363673890747455?l=scope2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scope2.blogspot.com/feeds/5601363673890747455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1949757213997623583&amp;postID=5601363673890747455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/5601363673890747455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/5601363673890747455'/><link rel='alternate' type='text/html' href='http://scope2.blogspot.com/2008/02/now-devcamp.html' title='now devcamp ..'/><author><name>Angshuman Sarkar</name><uri>http://www.blogger.com/profile/09551593184902595771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1949757213997623583.post-1573607825006732153</id><published>2008-01-21T16:42:00.000+05:30</published><updated>2008-01-21T16:58:31.200+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Freerice</title><content type='html'>[November 14th, 2007]&lt;br /&gt;A friend of mine (Paul) sent me the link. http://www.freerice.com. The endeavor is by “John Breen”, who is a US fundraiser. The idea is to use a game to build vocabulary, to donate rice to the needy. For every correct answer, the website donates 10 grains of rice. Companies advertising on the website provide the money to the UN’s World Food Programme (WFP) to buy and distribute the rice. http://news.bbc.co.uk/2/hi/europe/7088447.stm&lt;br /&gt;&lt;br /&gt;While, I do not know why go by grains-of-rice, rather than grams-of-rice, I was free to check the website and contributed to about 500 grains of rice. For many words, (and they keep getting tougher), I had to refer to dictionary.com, but for once there was no guilt factor for cheating. While I was at it, I was thinking that .. this is a great way to increase someone’s vocabulary but this is a game that requires time, and my objective is also to donate more and more rice, which I can achieve only by correct answers. If technology can be used to raise money, I can also use technology to manipulate towards helping the eventual goal. &lt;br /&gt;&lt;br /&gt;I can think of writing a program so that I can just keep running it the whole day. J How? Think of writing a simple selenium test case to run through the website, capture the element that contains the word requested, and also capture the choices given. Once I know the requested word, an Ajax call to any semantic search system can give you the results, and run a simple regular expression to match against the choices to come up with a rating. Again, use selenium to select the best possible answer and submit the request. Put this in a loop and keep running through out the day. With java 6’s new scripting apis, you can probably do without a selenium test case. More on java scripting api later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1949757213997623583-1573607825006732153?l=scope2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scope2.blogspot.com/feeds/1573607825006732153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1949757213997623583&amp;postID=1573607825006732153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/1573607825006732153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/1573607825006732153'/><link rel='alternate' type='text/html' href='http://scope2.blogspot.com/2008/01/freerice.html' title='Freerice'/><author><name>Angshuman Sarkar</name><uri>http://www.blogger.com/profile/09551593184902595771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1949757213997623583.post-2383499088374244874</id><published>2008-01-21T16:16:00.000+05:30</published><updated>2008-02-09T18:47:24.201+05:30</updated><title type='text'>to begin ..</title><content type='html'>The purpose of this blog, is to jot down my occasional ramblings on IT and software and sometimes other technological aspects, F1 aerodynamics including.  &lt;br /&gt;&lt;br /&gt;Yip Harburg wrote "Don't get smart alecksy, With the galaxy, Leave the atom alone" .. well I thought that way once, but once I experienced the "kick in the discovery", I moved on to find a different meaning altogether, and software long ceased to exist as extrasomatic knowledge to me. &lt;br /&gt;&lt;br /&gt;Over the years, I worked on varied platforms, programming languages on different domains. I never really swore loyalty to any single software technology as such. Every time I was looking forward to working on things I have never worked before, and thereby posing the biggest challenge. Of course you would want to carry forward, utilize and maximize your learning and understandings, and thereby maybe I am little more proficient in some technologies than others. Essentially I am a jack of many trades, but probably not mastered many! :)  &lt;br /&gt;&lt;br /&gt;Many of my codes, components, ideas are lost in transition, should I say. Some are somewhere dangling on the web, some I can’t find, and many are obsolete. Many I had to take off for they would be so simple to do now and many don’t work in modern environments. &lt;br /&gt;&lt;br /&gt;I will try updating with the older works here but I will have to figure out a way to share the bigger chunks of code. I am soon going to get a domain and probably rent a virtual server. Till then let this be the source of the one! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1949757213997623583-2383499088374244874?l=scope2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scope2.blogspot.com/feeds/2383499088374244874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1949757213997623583&amp;postID=2383499088374244874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/2383499088374244874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1949757213997623583/posts/default/2383499088374244874'/><link rel='alternate' type='text/html' href='http://scope2.blogspot.com/2008/01/to-begin.html' title='to begin ..'/><author><name>Angshuman Sarkar</name><uri>http://www.blogger.com/profile/09551593184902595771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
