<?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-377204994975371563</id><updated>2011-08-10T11:14:44.295-07:00</updated><category term='compiler cs bash lex'/><category term='MozNewsLab'/><category term='net'/><category term='election-2009'/><category term='browser'/><category term='automate'/><category term='windows'/><category term='Google-Chrome'/><category term='eclipse'/><category term='monitoring'/><category term='subclipse'/><category term='kolkata'/><category term='open-source'/><category term='subversion'/><category term='google'/><category term='ubunutu 9.10'/><category term='poitics'/><category term='compiler cs473 uic C-'/><category term='gnome-keyring disable'/><title type='text'>Gibberish adage</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tathagatadg.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tathagatadg.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tathagata Dasgupta</name><uri>http://www.blogger.com/profile/16042262043737941154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://4.bp.blogspot.com/_JFtGaNWhS4E/STsrDmQ4SLI/AAAAAAAAAE0/Rx2PzGJ_RM4/S220/ProfilePic.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-377204994975371563.post-7071314877928126120</id><published>2011-08-08T04:08:00.000-07:00</published><updated>2011-08-10T11:14:44.303-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MozNewsLab'/><title type='text'>Hacking the newsroom</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;[This is part 2 of the final pitch, which talks about the newsroom and business perspective. Part 1, detailing the newsreader perspective is &lt;a href="http://tathagatadg.blogspot.com/2011/07/reveal-how-much-does-world-know.html"&gt;here&lt;/a&gt;.]&lt;br /&gt;&lt;br /&gt;Before anything else, there must be a 90 seconds theatrical promo:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/wHggCmp0h1g/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/wHggCmp0h1g?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/wHggCmp0h1g?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Stop laughing at my amateurish video editing! This is my first ever ... even Bergman, Godard, Fellini started somewhere to be great! Jokes apart here's what REVEAL actually is all about:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/PtdVBMN6OPE/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/PtdVBMN6OPE?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/PtdVBMN6OPE?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Lets consider a hypothetical newsroom which uses REVEAL. A journalist gets hold a huge collection of classified documents that contains potentially sensitive information. Instead of painstakingly reading each line and jumping back to google to search relevant information - she uploads them to REVEAL and hits the pantry for her coffee. Reveal goes to work and automatically parses out names of pepole, places, organizations etc. Using the names it detected, REVEAL affixes thumbnail images with the mappings of the named entities with the documents. The journalist now sits back, sips the coffee and flips through the images looking for someone/something/some place that's interesting and jumps directly to the document when she finds her target. &lt;br /&gt;&lt;br /&gt;But that's not all. In order to make the life much easier for the journalist - REVEAL uses the names and keywords from the document, to aggregates semantically related contents from the net - images, video, news, blog, wiki articles using open apis. Making the background context readily available, it allows the journalist focus solely on her analysis of the story. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What follows is an over the top ambitious plan for making lots of money - I mean the business plan.&lt;br /&gt;&lt;br /&gt;Unearthing named entities involves doing tonnes of computationally intensive text analysis and for any sizable dataset we need a cloud based solution. While REVEAL will always be Free and Open Source Software, the business proposition is offering it as a service. Be a startup or a news corp, whoever deploys REVEAL at their site - they can offer it as a service to other news agencies/ organizations based on pay by usage model. Different packages can be offered based on &lt;i&gt;when&lt;/i&gt; they want to share the information dug out from their documents.&lt;br /&gt;&lt;br /&gt;Nothing like REVEAL exists today. The cohesive bond of unknown information on well known personalities and organizations, original content (the documents), expert opinion(journalist's view), user generated content(comments) and&amp;nbsp; aggregated content - will make REVEAL a dream product for generating ad-revenues. Features for lead generation is inbuilt into the system and the karma points based reader appreciation along with the 360 degree view of the world will ensure persistent traffic.&lt;br /&gt;&lt;br /&gt;Now get me to Berlin Hackathon!&lt;br /&gt;(398 words)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://tathagata.github.com/moznewslab/reveal" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://dl.dropbox.com/u/18146922/Selection_010.png" width="233" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://dl.dropbox.com/u/18146922/cables/namefile.html"&gt;Most common names detected in Wikileaks cablegate files&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://tathagata.github.com/moznewslab/reveal/"&gt;Link to an&amp;nbsp;incomplete&amp;nbsp;implementation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/377204994975371563-7071314877928126120?l=tathagatadg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tathagatadg.blogspot.com/feeds/7071314877928126120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=377204994975371563&amp;postID=7071314877928126120' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/7071314877928126120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/7071314877928126120'/><link rel='alternate' type='text/html' href='http://tathagatadg.blogspot.com/2011/08/hacking-newsroom.html' title='Hacking the newsroom'/><author><name>Tathagata Dasgupta</name><uri>http://www.blogger.com/profile/16042262043737941154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://4.bp.blogspot.com/_JFtGaNWhS4E/STsrDmQ4SLI/AAAAAAAAAE0/Rx2PzGJ_RM4/S220/ProfilePic.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-377204994975371563.post-7142400544027835057</id><published>2011-07-23T16:15:00.000-07:00</published><updated>2011-07-25T10:17:46.269-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MozNewsLab'/><title type='text'>Reveal - How much does the world know?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;Have you ever had a shit-tonne of documents dumped into your inbox with an impossible deadline demanding to suck out the hidden juicy bits? Or may be it has been a joyful experience of discovering the dump of an &lt;a href="http://www.cnn.com/SPECIALS/2011/palin.emails/"&gt;MILF's emails&lt;/a&gt;, &lt;a href="http://www.guardian.co.uk/news/datablog/2010/nov/29/wikileaks-cables-data#data"&gt;diplomatic cables&lt;/a&gt;, or &lt;a href="http://lulzsecurity.com/releases/scedev.net%20source%20code.rar"&gt;code dumps&lt;/a&gt; of an evil corporation's website? At moments like those, you might have uttered, "fcuk! ... &lt;a href="http://translate.google.com/#la%7Cen%7Comne%20ignotum%20pro%20magnifico"&gt;Omne Ignotum Pro Magnifico&lt;/a&gt;!". Wouldn't it be nice if the needles just magically popped out of the haystack? Meet &lt;a href="http://tathagata.github.com/moznewslab/mockup/"&gt;Reveal&lt;/a&gt; (clickable prototype) - a software framework that aspires to achieve that and may be a bit more. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://tathagata.github.com/moznewslab/mockup/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="274" src="http://1.bp.blogspot.com/-tnRAJQIXWmA/TitArkUpx_I/AAAAAAAAA0o/DX2l7VFTFh8/s400/home.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Background:&lt;/b&gt;&lt;br /&gt;While &lt;a href="http://www.gnu.org/s/sed/"&gt;sed&lt;/a&gt;/&lt;a href="http://www.gnu.org/software/gawk/"&gt;awk&lt;/a&gt;/&lt;a href="http://www.gnu.org/s/grep/"&gt;grep&lt;/a&gt;-ing the &lt;a href="http://wikileaks.org/cablegate.html"&gt;cablegate files&lt;/a&gt;, I stumbled upon &lt;a href="http://wikileaks.org/cable/2000/09/00HARARE5461.html"&gt;a cable&lt;/a&gt; that mentioned Kofi Annan asking Robert Mugabe to step down in exchange for a handsome retirement plan during the Millennium summit. Being an ignorant bloke, I could hardly recall what the Millennium summit was about, had no clue if Mugabe was still in office, and if Kofi Annan has made a comment on this! Without the right background and context I could not appreciate the data to the full extent. Below is the #MozNewsLab final project idea pitch in the lights of the three speakets&amp;nbsp; this week: &lt;a href="http://twitter.com/#%21/codepo8"&gt;Chris Heilmann&lt;/a&gt;, &lt;a href="http://twitter.com/#%21/jeresig"&gt;John Resig&lt;/a&gt; and &lt;a href="http://twitter.com/#%21/jjg"&gt;Jesse James Garrett&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;"What is this thing for? What does it do? How is it supposed to fit into people's lives?", @Jesse James Garrett:&lt;/b&gt;&lt;br /&gt;Journalists get amazing amount of digital data everyday which are in the form of numbers in tables. With some spreadsheet skills or help from newsroom programmers, they produce incredible revelations of the reality that hides behind those numbers. However, when the data comes in the form of unstructured text files written in natural language - there isn't much algorithmic help available, other than full text searches with a list of guess words. Using cutting edge information retrieval technique,&amp;nbsp; Reveal would aim to build a framework that automatically annotates names, places, locations, dates etc. in the unstructured text files. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-o8WyZE9wpx0/TioNo_rnfGI/AAAAAAAAA0Y/ntgfLvu5s1M/s1600/Praved.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="304" src="http://4.bp.blogspot.com/-o8WyZE9wpx0/TioNo_rnfGI/AAAAAAAAA0Y/ntgfLvu5s1M/s640/Praved.gif" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;"Adopting Open Source, Open standards&lt;/b&gt;", &lt;b&gt;@Chris Heilmann&lt;/b&gt;:&lt;br /&gt;Being baptized by &lt;a href="http://stallman.org/saint.html"&gt;St. IGNUcius&lt;/a&gt;, the idea of &lt;a href="http://oreilly.com/openbook/freedom/"&gt;Free as in Freedom&lt;/a&gt; runs through the core of the technology stack of Reveal. Standard &lt;a href="http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29"&gt;LAMP stack&lt;/a&gt; for server side, UI powered by HTML5, CSS3 and jQuery plugins and a number of open source libraries for doing the information extraction - long post describing the information retrieval technology coming soon. (Mind map above).&lt;br /&gt;&lt;br /&gt;Using the detected names, locations, dates etc., Reveal will try to aggregate additional information in the form of images, maps, news articles, videos, wikipedia pages, visualizations etc. via open API-s and use them as navigational elements to browse the data. Juxtaposed to the document under scrutiny, these will provide the right context to gauge the sensitivity of the information.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://tathagata.github.com/moznewslab/mockup/people.html" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="380" src="http://2.bp.blogspot.com/-Bjk8S3x_FmA/TitYX0X2ZNI/AAAAAAAAA0s/F7WEmUmaH1g/s640/people.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;"User to&amp;nbsp;Contributor", @John Resig&lt;/b&gt;:&lt;br /&gt;Additionally, by showing a relative score of "How much does the world know?", calculated on the basis of the aggregated information published before the documents surfaced, we can excite the newsreaders to share the information across their own social network. Add some &lt;a href="http://youtu.be/ihUt-163gZI"&gt;game mechanics&lt;/a&gt; by quantifying that "sharing", and we bust the &lt;a href="http://www.thefilterbubble.com/"&gt;filter bubble&lt;/a&gt; of ignorant blokes and turn them into responsible citizens who'll raise voices against wrong doings of totalitarian regimes, evil corporations or other bad asses. This will lead to creation of more content and will act as a feedback loop to the background and context aggregation step before.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://3.gvt0.com/vi/B8ofWFx525s/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/B8ofWFx525s&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/B8ofWFx525s&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;Now, a similar project by the uber journalist-programmer &lt;a href="http://jonathanstray.com/"&gt;Jonathan Stray&lt;/a&gt; of the AP has won this year's Knight Mozilla news challenge. His approach, &lt;a href="http://overview.ap.org/"&gt;Overview&lt;/a&gt;, solely focuses on clustering documents based on &lt;a href="http://en.wikipedia.org/wiki/Cosine_similarity"&gt;cosine similarity&lt;/a&gt; of their &lt;a href="http://en.wikipedia.org/wiki/Tf-idf"&gt;tf-idf&lt;/a&gt; scores. Using sexy visualization, it pulls out key terms specific to the corpus under study. The night when the results of Knight Mozilla challenge was announced - in an euphoric outburst I sent him an embarrassingly long late night email ranting the above. Obviously, I never heard back but he will be releasing his code soon and I am super excited to fork it for visualizations in Reveal.&lt;br /&gt;&lt;br /&gt;That is my final software idea pitch inspired by &lt;a href="http://twitter.com/#%21/codepo8"&gt;Chris Heilmann&lt;/a&gt;, &lt;a href="http://twitter.com/#%21/jeresig"&gt;John Resig&lt;/a&gt; and &lt;a href="http://twitter.com/#%21/jjg"&gt;Jesse James Garrett&lt;/a&gt; &lt;a href="http://p2pu.org/en/groups/knight-mozilla-learning-lab/"&gt;#MozNewsLab&lt;/a&gt; Week 2:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://dl.dropbox.com/u/18146922/MozNewsLabWeek2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="720" src="http://dl.dropbox.com/u/18146922/MozNewsLabWeek2.png" width="630" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/377204994975371563-7142400544027835057?l=tathagatadg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tathagatadg.blogspot.com/feeds/7142400544027835057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=377204994975371563&amp;postID=7142400544027835057' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/7142400544027835057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/7142400544027835057'/><link rel='alternate' type='text/html' href='http://tathagatadg.blogspot.com/2011/07/reveal-how-much-does-world-know.html' title='Reveal - How much does the world know?'/><author><name>Tathagata Dasgupta</name><uri>http://www.blogger.com/profile/16042262043737941154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://4.bp.blogspot.com/_JFtGaNWhS4E/STsrDmQ4SLI/AAAAAAAAAE0/Rx2PzGJ_RM4/S220/ProfilePic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-tnRAJQIXWmA/TitArkUpx_I/AAAAAAAAA0o/DX2l7VFTFh8/s72-c/home.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-377204994975371563.post-3105075349287477889</id><published>2011-07-18T14:41:00.000-07:00</published><updated>2011-07-21T15:38:07.424-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MozNewsLab'/><title type='text'>Tweetsabers of News Revolution across the globe #MozNewsLab</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;iframe height="750px" src="http://tathagata.github.com/moznewslab/tweetsabers/embed.html" width="720px"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;After &lt;a href="http://p2pu.org/en/groups/knight-mozilla-learning-lab/content/lecture-no-3-with-amanda-cox/"&gt;Amanda Cox's  lecture&lt;/a&gt; I was too pepped up to do some quick and sexy data visualization. In my daily life, I rely on &lt;a href="http://www.r-project.org/"&gt;R&lt;/a&gt; or &lt;a href="http://www.gnuplot.info/"&gt;GNUPlot&lt;/a&gt; for doing all my plots, simply because of their scripting interface. I have &lt;a href="http://tathagata.github.com/expenseplotter.html"&gt;played a bit&lt;/a&gt; with &lt;a href="http://code.google.com/apis/chart"&gt;Google chart and visualization api&lt;/a&gt; and they are absolutely brilliant. I'm planning to get my hands dirty with &lt;a href="http://matplotlib.sourceforge.net/"&gt;matplotlib&lt;/a&gt; (yep, yep ... Python!).&lt;br /&gt;&lt;br /&gt;So mid way into the re-listening the lecture, I was overpowered by this feeling of doing some global data visualization. One of the best global data visualization tool that have left an impression on my mind, is the WebGL Globe - an open platform from Google Data Arts Team. I grabbed the example code from &lt;a href="http://www.chromeexperiments.com/globe"&gt;here&lt;/a&gt; and with a simple &lt;a href="https://github.com/tathagata/moznewslab/blob/master/participant_tweet_count.py"&gt;Python script&lt;/a&gt; collected Twitter activities during the first week of #MozNewsLab into a .json file. Some simple changes to the sample javascript code and there you have colored light sabers shooting out from the globe. &lt;br /&gt;&lt;br /&gt;The main problem was the twitter api limit - a meager 125 queries per hour. So I had to rely on the geo-location data that I had scraped earlier for &lt;a href="http://tathagata.github.com/moznewslab/"&gt;mapping #MozNewsLab participants&lt;/a&gt; in the world map. That allowed me to narrow down the geo location queries for those who were not a participant of #MozNewsLab. In case the geo-location info was not available on their twitter profile, those homeless tweet counts were assigned to our dear Lab co-lead &lt;a href="http://twitter.com/#%21/phillipadsmith"&gt;Phillip Smith&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/377204994975371563-3105075349287477889?l=tathagatadg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tathagatadg.blogspot.com/feeds/3105075349287477889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=377204994975371563&amp;postID=3105075349287477889' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/3105075349287477889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/3105075349287477889'/><link rel='alternate' type='text/html' href='http://tathagatadg.blogspot.com/2011/07/twwetsabers-of-news-revolution-across.html' title='Tweetsabers of News Revolution across the globe #MozNewsLab'/><author><name>Tathagata Dasgupta</name><uri>http://www.blogger.com/profile/16042262043737941154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://4.bp.blogspot.com/_JFtGaNWhS4E/STsrDmQ4SLI/AAAAAAAAAE0/Rx2PzGJ_RM4/S220/ProfilePic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-377204994975371563.post-5019486646686631194</id><published>2011-07-15T15:11:00.000-07:00</published><updated>2011-07-21T16:27:01.814-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MozNewsLab'/><title type='text'>EntreJourno 101 with Burt Herman, CEO &amp;amp; co-founder Storify at #MozNewsLab</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;script src="http://storify.com/tathagata/entrepreneurship-101-with-bur-herman.js"&gt;&lt;/script&gt;&lt;noscript&gt;&amp;amp;lt;a href="http://storify.com/tathagata/entrepreneurship-101-with-bur-herman" target="_blank"&amp;amp;gt;EntreJourno 101 with Burt Herman, CEO &amp;amp;amp; co-founder Storify at #MozNewsLab&amp;amp;lt;/a&amp;amp;gt;&lt;/noscript&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/377204994975371563-5019486646686631194?l=tathagatadg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tathagatadg.blogspot.com/feeds/5019486646686631194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=377204994975371563&amp;postID=5019486646686631194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/5019486646686631194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/5019486646686631194'/><link rel='alternate' type='text/html' href='http://tathagatadg.blogspot.com/2011/07/view-entrejourno-101-with-burt-herman.html' title='EntreJourno 101 with Burt Herman, CEO &amp;amp;amp; co-founder Storify at #MozNewsLab'/><author><name>Tathagata Dasgupta</name><uri>http://www.blogger.com/profile/16042262043737941154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://4.bp.blogspot.com/_JFtGaNWhS4E/STsrDmQ4SLI/AAAAAAAAAE0/Rx2PzGJ_RM4/S220/ProfilePic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-377204994975371563.post-2677078472883575416</id><published>2011-07-14T10:23:00.000-07:00</published><updated>2011-07-21T15:54:26.537-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MozNewsLab'/><title type='text'>Proto-tits - Aza Raskin on Rapid Prototyping</title><content type='html'>&lt;script src="http://storify.com/tathagata/software-is-sex-prototypes-are-tits.js"&gt;&lt;/script&gt;&lt;noscript&gt;[&lt;a href="http://storify.com/tathagata/software-is-sex-prototypes-are-tits" target="blank"&gt;View the story "Proto-tits ... Aza Raskin on Rapid Prototyping" on Storify]&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/377204994975371563-2677078472883575416?l=tathagatadg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tathagatadg.blogspot.com/feeds/2677078472883575416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=377204994975371563&amp;postID=2677078472883575416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/2677078472883575416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/2677078472883575416'/><link rel='alternate' type='text/html' href='http://tathagatadg.blogspot.com/2011/07/view-story-proto-tits.html' title='Proto-tits - Aza Raskin on Rapid Prototyping'/><author><name>Tathagata Dasgupta</name><uri>http://www.blogger.com/profile/16042262043737941154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://4.bp.blogspot.com/_JFtGaNWhS4E/STsrDmQ4SLI/AAAAAAAAAE0/Rx2PzGJ_RM4/S220/ProfilePic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-377204994975371563.post-3300799793625125562</id><published>2011-07-09T18:45:00.000-07:00</published><updated>2011-07-09T18:45:33.244-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MozNewsLab'/><title type='text'>Mozilla News Lab Schedule - Google Calendar</title><content type='html'>The Knight Foundation and Mozilla have joined forces to help the media adapt to the evolving technology landscape. After an &lt;a href=" https://drumbeat.org/en-US/projects/mojo/"&gt;open idea challenge&lt;/a&gt;, 60 hackers and journalists were selected for a month long Learning Lab. I somehow managed to sneak into this elite club with my two cents &lt;a href="https://www.drumbeat.org/en-US/challenges/beyond-comment-threads/submission/176/"&gt;here&lt;/a&gt; and &lt;a href="https://www.drumbeat.org/en-US/challenges/open-webs-killer-app/submission/278/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://p2pu.org/en/groups/knight-mozilla-learning-lab/content/full-description/"&gt;Learning Lab&lt;/a&gt; is going to be a series of webinars from some of the most respected names in technology and journalism. Here is a &lt;a href="http://twitter.com/#!/Tathagata/moznewslab/members"&gt;list&lt;/a&gt; of Twitter handles of the organizers and speakers. Below is a google calendar showing the webinar timings (PST). &lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="400" scrolling="no" src="https://www.google.com/calendar/b/0/embed?height=600&amp;amp;wkst=1&amp;amp;bgcolor=%23FFFFFF&amp;amp;src=qkdih1tgs5mn5llccl60mm7ods%40group.calendar.google.com&amp;amp;color=%23711616&amp;amp;ctz=America%2FLos_Angeles" style="border-width: 0;" width="535"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Wanna see how wacky it will get? Check out the video from the most colorful moderator ever - &lt;a href="http://twitter.com/#!/futuresoup"&gt;Jacob Caggiano&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;object width="535" height="390"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Yet8ZJWFQMs&amp;hl=en_US&amp;feature=player_embedded&amp;version=3"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Yet8ZJWFQMs&amp;hl=en_US&amp;feature=player_embedded&amp;version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="535" height="390"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Can't wait till Monday ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/377204994975371563-3300799793625125562?l=tathagatadg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tathagatadg.blogspot.com/feeds/3300799793625125562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=377204994975371563&amp;postID=3300799793625125562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/3300799793625125562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/3300799793625125562'/><link rel='alternate' type='text/html' href='http://tathagatadg.blogspot.com/2011/07/mozilla-news-lab-schedule-google.html' title='Mozilla News Lab Schedule - Google Calendar'/><author><name>Tathagata Dasgupta</name><uri>http://www.blogger.com/profile/16042262043737941154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://4.bp.blogspot.com/_JFtGaNWhS4E/STsrDmQ4SLI/AAAAAAAAAE0/Rx2PzGJ_RM4/S220/ProfilePic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-377204994975371563.post-7179881799509719721</id><published>2010-03-03T11:05:00.000-08:00</published><updated>2010-03-03T12:05:32.827-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='subclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='ubunutu 9.10'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome-keyring disable'/><title type='text'>Subclipse 1.6.x and Eclipse 3.5 on Ubuntu 9.10 - Karmic Koala</title><content type='html'>A quick post to get subclipse working on Eclipse 3.5 on Karmic Kola. We are doing a &lt;a href="https://code.google.com/p/cs480gp4/"&gt;group projec&lt;/a&gt;&lt;a href="https://code.google.com/p/cs480gp4/"&gt;t&lt;/a&gt; for our CS-480 Database Systems with 7 team members. Obvious choice was google code as &lt;a href="https://code.google.com/u/victor.nju/"&gt;Min&lt;/a&gt; and &lt;a href="https://code.google.com/u/Ali3596/"&gt;Ali&lt;/a&gt; had used it in previous semesters - familiarity is a strong motivation not to select your CASE tools (read github for SCM) when your grade depends on meeting the deadline. :D&lt;br /&gt;&lt;br /&gt;Min mailed us a comprehensive document on getting subclipse working with code.google.com - but I stumbled across getting it working in Ubuntu - the well known problem of gnome-keyring and JavaHL ate up the last 2 hours.&lt;br /&gt;&lt;br /&gt;Once you've installed subclipse 1.6.x in Eclipse and would like to jump off to checkout code for your favorite open source project - you'll hit hard by messages similar to these:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Failed to load JavaHL Library.&lt;br /&gt;These are the errors that were encountered:&lt;br /&gt;no libsvnjavahl-1 in java.library.path&lt;br /&gt;no svnjavahl-1 in java.library.path&lt;br /&gt;no svnjavahl in java.library.path&lt;br /&gt;java.library.path = /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/client:/usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386:/usr/lib/xulrunner-addons:/usr/lib/xulrunner-addons:/usr/java/packages/lib/i386:/lib:/usr/lib&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Nice as people are in FOSS world, it'll also point you to the documentation &lt;a href="http://subclipse.tigris.org/wiki/JavaHL"&gt;JavaHL wiki&lt;/a&gt; to fix this. While it gives you the basic steps required - but distro-specific details were missing. So here are the quick steps.&lt;br /&gt;&lt;br /&gt;1. Install libsvn-java using Synpatic or from the commmand line &lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;span style="font-family:arial;"&gt;sudo apt-get install libsvn-java&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2.&lt;br /&gt;Edit the eclipse.ini file in your eclipse directory to add &lt;pre&gt;-Djava.library.path=/usr/lib/jni&lt;/pre&gt; to tell Eclipse where to look for all Java SVN bindings&lt;br /&gt;&lt;br /&gt;3. You also need to tell gnome-keyring to shut the f* up and let subclipse work. For this you keep your password-store as blank. Edit the svn config file located in the .subversion directory of your home directory by adding&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;### Set password stores used by Subversion. They should be&lt;br /&gt;### delimited by spaces or commas. The order of values determines&lt;br /&gt;### the order in which password stores are used.&lt;br /&gt;### Valid password stores:&lt;br /&gt;###   gnome-keyring        (Unix-like systems)&lt;br /&gt;###   kwallet              (Unix-like systems)&lt;br /&gt;###   keychain             (Mac OS X)&lt;br /&gt;###   windows-cryptoapi    (Windows)&lt;br /&gt;password-stores =&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I also disabled gnome-keyring using the gconf-editor (navigate to /apps/gnome-keyring/daemon-components uncheck SSH and PKCS11) - but not really required I guess.&lt;br /&gt;&lt;br /&gt;(Re)Start Eclipse. You should now be able to checkout your project.&lt;br /&gt;&lt;br /&gt;Ummm, how much of the school's project did I complete this morning? None really :P.&lt;br /&gt;Next step is getting Apache Derby working.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/377204994975371563-7179881799509719721?l=tathagatadg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tathagatadg.blogspot.com/feeds/7179881799509719721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=377204994975371563&amp;postID=7179881799509719721' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/7179881799509719721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/7179881799509719721'/><link rel='alternate' type='text/html' href='http://tathagatadg.blogspot.com/2010/03/subclipse-16x-and-eclipse-35-on-ubuntu.html' title='Subclipse 1.6.x and Eclipse 3.5 on Ubuntu 9.10 - Karmic Koala'/><author><name>Tathagata Dasgupta</name><uri>http://www.blogger.com/profile/16042262043737941154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://4.bp.blogspot.com/_JFtGaNWhS4E/STsrDmQ4SLI/AAAAAAAAAE0/Rx2PzGJ_RM4/S220/ProfilePic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-377204994975371563.post-2266532961073764667</id><published>2010-02-06T20:09:00.000-08:00</published><updated>2010-02-07T07:09:56.014-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compiler cs473 uic C-'/><title type='text'>Symbol table for the C-Compiler</title><content type='html'>In this assignment we learnt how a symbol table is implemented in a complier. Each new symbol is pushed into the hashtable (implemented as a array of pointers of elements)&lt;br /&gt;of the Symbol table stack. We sum up the ascii values of the characters of the symbol and take the modulo with the MAXHASHSIZE to determine the array index for  a particular entry. The problem with this implementation seems to be the constant size of the hashtable we are allocating on entering each new scope. If a scope has lesser number of variables compared to one that has close to MAXHASHSIZE, we'll unnecessarily waste memory; Check the size of the memory using gdb by&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;b&gt;print sizeof(symbolStackTop-&gt;symbolTablePtr-&gt;hashTable)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and it comes to 128. We defined MAXHASHSIZE as 32, and size of each integer is 4 bytes in my machine (AMD Athlon(tm) Processor L110). So whatever be the number of elements in the block - we always allocate 128 bytes.&lt;br /&gt;&lt;br /&gt;Now this brings us to the question - symbolStackTop-&gt;symbolTablePtr just assumes different address depending on the order of and number of times enterscope() and leavescope() gets called. So do we free() the stack top (to avoid memory leak), each time we leaveScope()? Then we’ll loose the entires for that particular scope and would not be able to use it later on (it appears we’ll be using it in some other module of the project). If we don’t free(), where do we store the reference for the entry?&lt;br /&gt;&lt;br /&gt;Another issue was the data structure Element has a data member key in it. But why do we need it? Our hashing function selects a block in the array, and on collision we resort to chaining. So does it really need a key as a data member?&lt;br /&gt;&lt;br /&gt;Lets see what people have to say about this ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/377204994975371563-2266532961073764667?l=tathagatadg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tathagatadg.blogspot.com/feeds/2266532961073764667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=377204994975371563&amp;postID=2266532961073764667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/2266532961073764667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/2266532961073764667'/><link rel='alternate' type='text/html' href='http://tathagatadg.blogspot.com/2010/02/symbol-table-for-c-compiler.html' title='Symbol table for the C-Compiler'/><author><name>Tathagata Dasgupta</name><uri>http://www.blogger.com/profile/16042262043737941154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://4.bp.blogspot.com/_JFtGaNWhS4E/STsrDmQ4SLI/AAAAAAAAAE0/Rx2PzGJ_RM4/S220/ProfilePic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-377204994975371563.post-6876456652529519355</id><published>2010-02-06T19:25:00.000-08:00</published><updated>2010-02-06T20:09:10.225-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compiler cs bash lex'/><title type='text'>CS473 - Writing a compiler for a simple language</title><content type='html'>This semester one of neatest course I have taken is &lt;a href="http://merlin.cs.uic.edu/cs473"&gt;CS 473: Compiler Design&lt;/a&gt;. &lt;a href="http://www.cs.uic.edu/~venkat/"&gt;Professor V. N. Venkatakrishnan&lt;/a&gt; is teaching the course. We will be writing a complier for a language called C-, so lots of coding and we really get to understand how the abstract concepts are implemented. It will be a series of six homework projects.&lt;br /&gt;&lt;br /&gt;Last semester I planed to note down stuff while doing &lt;a href="http://www.cs.uic.edu/bin/view/CS450/WebHome"&gt;CS 450 Introduction to Networking&lt;/a&gt; - another programming intensive course. And due to many other things - that did not materialize. But this time, we have to submit a short essay on what we learnt in each project which gets graded. Well quite a reason to blog. Here is the first essay.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Implementation of Scanner for C-- with (f)lex&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What I learnt:&lt;/b&gt;&lt;br /&gt;The basic structure of a lex program.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Still not feeling confident:&lt;/b&gt;&lt;br /&gt;Using lex api results gives optimized results. How to make efficient usage of it in rules and user submitted routine&lt;br /&gt;Apart form a few documentation, there is hardly any that's contrite but makes you feel confident&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References used:&lt;/b&gt;&lt;br /&gt;While none were fully read, peeped into following&lt;br /&gt;[1] http://dinosaur.compilertools.net/flex/&lt;br /&gt;[2] http://www.cs.manchester.ac.uk/~pjj/cs5031/ho/&lt;br /&gt;[3] http://docs.sun.com/app/docs/doc/802-1952/6i5uu4c0f?a=view&lt;br /&gt;[4] http://www.ibm.com/developerworks/library/l-lex.html&lt;br /&gt;[5] http://stackoverflow.com/questions/641701/excellent-online-tutorial-for-lex-and-yacc&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Further reading planned from:&lt;/b&gt;&lt;br /&gt;[1] lex &amp;amp; yacc, Second Edition - ByDoug Brown, John Levine, Tony MasonPublisher:O'Reilly Media&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Beisdes:&lt;/b&gt;&lt;br /&gt;Just a few lines of bash scripting to do the test cases at once (assuming the test directory is in pwd).&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;b&gt;rm -f testresult;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;b&gt;for i in `ls test/*.c`;do &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;b&gt;echo $i&gt;&gt; testresult; cat -n $i &gt;&gt; testresult; echo "-----------"&gt;&gt; testresult; ./cmlexer $i &gt;&gt; testresult;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;b&gt;done&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/377204994975371563-6876456652529519355?l=tathagatadg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tathagatadg.blogspot.com/feeds/6876456652529519355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=377204994975371563&amp;postID=6876456652529519355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/6876456652529519355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/6876456652529519355'/><link rel='alternate' type='text/html' href='http://tathagatadg.blogspot.com/2010/02/cs473-writing-compiler-for-simple.html' title='CS473 - Writing a compiler for a simple language'/><author><name>Tathagata Dasgupta</name><uri>http://www.blogger.com/profile/16042262043737941154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://4.bp.blogspot.com/_JFtGaNWhS4E/STsrDmQ4SLI/AAAAAAAAAE0/Rx2PzGJ_RM4/S220/ProfilePic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-377204994975371563.post-105104598042767793</id><published>2009-05-11T21:13:00.000-07:00</published><updated>2009-05-11T22:26:30.713-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poitics'/><category scheme='http://www.blogger.com/atom/ns#' term='election-2009'/><category scheme='http://www.blogger.com/atom/ns#' term='kolkata'/><title type='text'>Kolkata votes tomorrow</title><content type='html'>Our maid is around 70 years old. Today morning, she saw a leaflet distributed by &lt;a href="http://www.sujan.info/"&gt;Sujan Charkraborty&lt;/a&gt; of &lt;a href="http://en.wikipedia.org/wiki/CPI%28M%29"&gt;CPI(M)&lt;/a&gt; lying on the floor while sweeping my room.&lt;br /&gt;maid:ভোট দেতি হবে (have to vote)&lt;br /&gt;me: কাকে দেবে? (whom will you vote?)&lt;br /&gt;maid: অামরা তো এইটেতে দি ..(points to CPI(M)-s symbol and says we give on  "this"!)&lt;br /&gt;me: এটায় দাও বলেই এটায় দেবে? (you'll vote "this" because you always vote "this"?)&lt;br /&gt;maid:(utterly confused) ... এট্টা নোক এয়েচিল, সে বলে গেছে মেসনের ওপর এটা বরাবর বোতাম থাকবে উটা টিপি দেলিই ব্যস .. হয়ে যাবে. (a guy came and said to press the button adjacent to this on the machine - that's all).&lt;br /&gt;&lt;br /&gt;Something like this:(from the candidate's website)&lt;br /&gt;&lt;embed src="http://www.sujan.info/vote.swf" type="application/x-shockwave-flash" width="150" height="100"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;me: ও বলেছে বলেই তুমি ওটায় দেবে? অারও অনেক দলের ছবি থাকবে মেসিনে, তুমি চাইলে তাদেরও দিতে পার... (just because he said so, you'll vote "that"? you can vote for others too..),&lt;br /&gt;maid:(even more confused) ..অারও নোক এয়েচিল, তারাও বলছিল ...দেখি ছেলে কি বলে, টিপে দেব'খন কোন একটায়..(more people came, ..lemme see what my son says, will press any goddamn button)&lt;br /&gt;&lt;br /&gt;Shakes off all signs of confusion, gives a million dollar smile ... and leaves with the broom sweeping the dirt on the floor. Now, its my turn to be confused! Should I exercise 49(O) or go vote the lesser evil?&lt;br /&gt;&lt;br /&gt;P.S.&lt;br /&gt;I wrote it here because I can't microblog this in 140 chars or facebook this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/377204994975371563-105104598042767793?l=tathagatadg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tathagatadg.blogspot.com/feeds/105104598042767793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=377204994975371563&amp;postID=105104598042767793' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/105104598042767793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/105104598042767793'/><link rel='alternate' type='text/html' href='http://tathagatadg.blogspot.com/2009/05/kolkata-votes-tomorrow.html' title='Kolkata votes tomorrow'/><author><name>Tathagata Dasgupta</name><uri>http://www.blogger.com/profile/16042262043737941154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://4.bp.blogspot.com/_JFtGaNWhS4E/STsrDmQ4SLI/AAAAAAAAAE0/Rx2PzGJ_RM4/S220/ProfilePic.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-377204994975371563.post-5606357366281066068</id><published>2008-11-23T02:49:00.000-08:00</published><updated>2008-12-02T08:00:30.832-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='automate'/><title type='text'>SMS alert for you server with Google Calender</title><content type='html'>During the college days, I had much fun doing the dumbest things which had absolutely no hope of finding any practical application - but just made me feel good. To bring back the good times, this weekend I thought of doing something similar.&lt;br /&gt;Have you ever:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Felt getting sms reminder from your Google Calender makes you more efficient&lt;/li&gt;&lt;li&gt;Felt the need what's going on in your server when you are not looking at it&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Felt Python is the neatest language around&lt;/li&gt;&lt;/ol&gt;Wondering what's common in the three of them? How about using Google's free sms service to get updated about the health of your server? Google's gdata  api allows you to do that, just with a few lines of python.&lt;br /&gt;&lt;br /&gt;What's the big deal about that? &lt;a href="http://www.nagios.org/"&gt;Nagios&lt;/a&gt; already has that feature, you might say! But unfortunately, I'm using windows these days, and all the free sms gateways in India are worthless.&lt;br /&gt;&lt;br /&gt;Anyway, for the win32 api functionalities, I got pywin32 [&lt;a href="http://sourceforge.net/project/showfiles.php?group_id=78018&amp;amp;package_id=79063&amp;amp;release_id=616849"&gt;Build 212&lt;/a&gt;] . Next I got the gdata-python-client [&lt;a href="http://gdata-python-client.googlecode.com/files/gdata.py-1.2.2.zip" style="white-space: nowrap;"&gt;gdata.py-1.2.2.zip&lt;/a&gt;]. Installation was hassle free.&lt;br /&gt;&lt;br /&gt;Peeped  into the sample in the samples\calendar folder, and took out the required part from the calendarExample.py and made some little changes, and it was done. &lt;a href="http://tathagatadg.googlepages.com/ServiceSMS.py"&gt;Here&lt;/a&gt; is the script.&lt;br /&gt;&lt;br /&gt;The script isn't really good and just checks if the Remote Registry Service is up or not. But with  more love, cool things (like sms alert on unauthorised access, low isk space etc.) can be done.&lt;br /&gt;However, to remove the ugliness of the script, firstly the hardcoding needs to go.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:78%;"&gt;start_time = time.strftime('%Y-%m-%dT%H:%M:%S+05:30', time.localtime(time.time() + 600))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;where &lt;span style="font-weight: bold;"&gt;+05:30&lt;/span&gt; indicates my time zone, ie IST and the &lt;span style="font-weight: bold;"&gt;600&lt;/span&gt; seconds, the time lag  between the running of the script and the creation of the event. The sms reminder is sent 1 minute before the event begins, making the time lag 9 minutes. &lt;div&gt;&lt;br /&gt;If you dont have your mobile registered with Google, just move down to the Settings tab at the top of the page in Google Calendar, and then to the mobile setup tab.&lt;br /&gt;&lt;br /&gt;You need to have your default reminder type in Google Calenda as SMS. The Javascript Api, allows you to set the type of reminder eassily - no reason to suspect that the Python Api would not be able to do that; need to check this.&lt;br /&gt;&lt;br /&gt;But more importantly, there should be saner way of passing a password to a script. I had my dad's cell registered with a less important google account and scheduled a .bat file  in Winodws Scheduler that calls the script to set events every 10 minutes. Unfortunately, he did not enjoy it as much as I did.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/377204994975371563-5606357366281066068?l=tathagatadg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tathagatadg.blogspot.com/feeds/5606357366281066068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=377204994975371563&amp;postID=5606357366281066068' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/5606357366281066068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/5606357366281066068'/><link rel='alternate' type='text/html' href='http://tathagatadg.blogspot.com/2008/11/sms-alert-for-you-server-with-google.html' title='SMS alert for you server with Google Calender'/><author><name>Tathagata Dasgupta</name><uri>http://www.blogger.com/profile/16042262043737941154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://4.bp.blogspot.com/_JFtGaNWhS4E/STsrDmQ4SLI/AAAAAAAAAE0/Rx2PzGJ_RM4/S220/ProfilePic.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-377204994975371563.post-236014782854163839</id><published>2008-11-17T03:03:00.000-08:00</published><updated>2008-11-17T03:27:57.744-08:00</updated><title type='text'>Pesky tasks with batch scripts</title><content type='html'>Scripting is art. Nifty and subtle, wicked cool scripts can weave magic, and startle compiled language supporters with their skimpy appearance. But it is for getting yet-another-pesky-job done, that scripting becomes so important.&lt;br /&gt;The batch scripting language, is the Windows equivalent(read wannabe) for the more sane &lt;a href="http://www.gnu.org/software/bash/"&gt;bash&lt;/a&gt; scripting. Like many other products from Microsoft, it lacks elegance, is limited and does not have a good support for regular expressions. Below are some pesky jobs that can still be done with batch scripts.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pesky job 1 : Map a network drive&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;net use N:| find "OK"&lt;br /&gt;if errorlevel 1 net use N: \\servername\path$ ******** /user:******* /persistent:yes&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;This will check if the drive N is mapped or not; in case there is an error, it will map servername\path with proper username/password values and keep this map persistent across reboots.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pesky job 2 : Copying files with a time stamp&lt;/span&gt;&lt;br /&gt;Say we want to copy a few files from one directory to another file to another with the current date stamp, it could be a simple&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;copy help.txt Desktop\%date:~10,4%%date:~7,2%%date:~4,2%-chgs-1.txt&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Truly ugly? Quite right.&lt;br /&gt;&lt;br /&gt;Normally the date command would output&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;C:\Documents and Settings\Tatha&gt;date&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;The current date is: Mon 11/17/2008&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Enter the new date: (mm-dd-yy)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To use the date-stamp say in an echo statement, put the command with in percentage signs. to extract part of the time stamp, the command should be followed with a ":~offset, number_of_characters". For example&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;C:\Documents and Settings\Tatha&gt;echo %date:~0,14%&lt;br /&gt;Mon 11/17/2008&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So, the copy command above would create a copy the help.txt to the path C:\Documents and Settings\Tatha\Desktop with a name 20081711-chgs-1.txt, on 17th November 2008.&lt;br /&gt;&lt;br /&gt;But wait, this wont work in a Windows NT box. Seems like the automatic variables DATE and TIME were not implemented until windows 2000, so if you want a time stamp in an NT box you should&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;time /t &gt;&gt; file.txt&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pesky job 3 : Starting and stopping windows services gracefully&lt;/span&gt;&lt;br /&gt;Another glitch when running newer bat scripts in Windows NT, that I came across is controlling Windows services. Consider the following snippet to stop a service named &lt;span style="font-style: italic;"&gt;SomeAppServer&lt;/span&gt; or &lt;span style="font-style: italic;"&gt;someappserver&lt;/span&gt; in a Windows Xp box.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;net start | find "SomeAppServer"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;if errorlevel 1 goto STOPPED&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;if errorlevel 0 echo %date% %time% Attempting to Stop SomeAppServer &gt;&gt; log.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;start /wait net stop "SomeAppServer" &gt;&gt; log.txt 2&gt;&amp;amp;1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;if errorlevel 1 echo %date% %time% SomeAppServer could not be stopped &gt;&gt;log.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;:STOPPED&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;echo %date% %time% SomeAppServer is stopped &gt;&gt; log.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;echo --- &gt;&gt; log.txt &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;However, in case the name of the service is &lt;span style="font-style: italic;"&gt;someappserver&lt;/span&gt;, instead of SomeAppServer as written in the script, it would fail to stop the service in a Windows NT box. NT treats the service names as case sensitive and you need to supply exactly as it is listed.&lt;br /&gt;&lt;br /&gt;Here are some good resources for batch scripting&lt;br /&gt;http://www.robvanderwoude.com/batchcommands.html&lt;br /&gt;http://weblogs.asp.net/jgalloway/archive/2006/11/20/top-10-dos-batch-tips-yes-dos-batch.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/377204994975371563-236014782854163839?l=tathagatadg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tathagatadg.blogspot.com/feeds/236014782854163839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=377204994975371563&amp;postID=236014782854163839' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/236014782854163839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/236014782854163839'/><link rel='alternate' type='text/html' href='http://tathagatadg.blogspot.com/2008/11/pesky-tasks-with-batch-scripts.html' title='Pesky tasks with batch scripts'/><author><name>Tathagata Dasgupta</name><uri>http://www.blogger.com/profile/16042262043737941154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://4.bp.blogspot.com/_JFtGaNWhS4E/STsrDmQ4SLI/AAAAAAAAAE0/Rx2PzGJ_RM4/S220/ProfilePic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-377204994975371563.post-6180123617402414338</id><published>2008-09-03T00:54:00.000-07:00</published><updated>2008-09-03T04:24:17.000-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open-source'/><category scheme='http://www.blogger.com/atom/ns#' term='Google-Chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='net'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Chrome is here</title><content type='html'>&lt;div&gt;The entire world seems to be going crazy over &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Google's&lt;/span&gt; open source browser &lt;a href="http://www.google.com/chrome"&gt;Chrome&lt;/a&gt;, &lt;a href="http://in.youtube.com/watch?v=1d1_ool4r7s"&gt;released yesterday&lt;/a&gt; - and with thousands testing the new toy, the response has been great so far.&lt;div&gt;In the video titled &lt;a href="http://in.youtube.com/watch?v=JGmO7Oximw8"&gt;The Story behind Google Chrome&lt;/a&gt; one of the engineers mentions that each page opened in a tab spawns a new process and is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;sandboxed&lt;/span&gt; from other processes(pages) to provide better security.&lt;/div&gt;&lt;div&gt;Well, people like me who'll never have enough RAM - that is quite an alarm. Because we can't work without an unhealthy number of tabs opened, each gorging on a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;sizable&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;amount&lt;/span&gt; of the core - and don't forget the whole lot of other desktop apps like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;IDE&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;pdf&lt;/span&gt; readers  and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;bitorrent&lt;/span&gt; clients etc minimised.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, I dumped the process memory usages into a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;csv&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;C:\Documents and Settings\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Tatha&lt;/span&gt;&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;wmic&lt;/span&gt; /output:C:\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;ProcessList&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;csv&lt;/span&gt; path win32_process get Caption, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Processid&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;workingsetsize&lt;/span&gt; /format:&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;csv&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On opening &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;ProcessList&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;csv&lt;/span&gt;, I could find 6 processes has been listed, the total memory consumption was 94740480 or 94 MB. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, as the screenshot shows below, I had 18 tabs opened by then.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_JFtGaNWhS4E/SL5W6vb_2eI/AAAAAAAAAC4/vZQcXqdqiLA/s1600-h/chrome.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_JFtGaNWhS4E/SL5W6vb_2eI/AAAAAAAAAC4/vZQcXqdqiLA/s320/chrome.JPG" alt="" id="BLOGGER_PHOTO_ID_5241722583472134626" border="0" /&gt;&lt;/a&gt;&lt;div&gt;OK - but what if I open a few more tabs? &lt;/div&gt;&lt;div&gt;Before opening a new tab&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;div&gt;C:\Documents and Settings\Tatha&gt;wmic process where "name='chrome.exe'" get Caption, ProcessId, WorkingSetSize&lt;/div&gt;&lt;div&gt;Caption     ProcessId  WorkingSetSize&lt;/div&gt;&lt;div&gt;chrome.exe  3904       29917184&lt;/div&gt;&lt;div&gt;chrome.exe  4092       15052800&lt;/div&gt;&lt;div&gt;chrome.exe  1944       13385728&lt;/div&gt;&lt;div&gt;chrome.exe  1180       42876928&lt;/div&gt;&lt;div&gt;chrome.exe  2364       25825280&lt;/div&gt;&lt;div&gt;chrome.exe  2540       3198976&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;After opening a new tab  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;C:\Documents and Settings\Tatha&gt;wmic process where "name='chrome.exe'" get Caption, ProcessId, Worki&lt;/div&gt;&lt;div&gt;ngSetSize&lt;/div&gt;&lt;div&gt;Caption     ProcessId  WorkingSetSize&lt;/div&gt;&lt;div&gt;chrome.exe  3904       32575488&lt;/div&gt;&lt;div&gt;chrome.exe  4092       16211968&lt;/div&gt;&lt;div&gt;chrome.exe  1944       13418496&lt;/div&gt;&lt;div&gt;chrome.exe  1180       44613632&lt;/div&gt;&lt;div&gt;chrome.exe  2364       25825280&lt;/div&gt;&lt;div&gt;chrome.exe  2540       2891776&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I tried a few more times and got 6 processes named Chrome, at any point of time. Notice the change in the working set sizes.&lt;/div&gt;When you switch between the tabs - you'll find the a few tabs will come up quickly, however the ones opened a soometimes back - will take some time to get rendered, but the delay is nothing unacceptable.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JFtGaNWhS4E/SL5zXllpiLI/AAAAAAAAADA/7CnEIhv1n7I/s1600-h/MoreStats.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_JFtGaNWhS4E/SL5zXllpiLI/AAAAAAAAADA/7CnEIhv1n7I/s320/MoreStats.JPG" alt="" id="BLOGGER_PHOTO_ID_5241753865370044594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;But wait... see the magic when you press Shift+Esc. Seems like Google knew, we the peeping toms would be looking for more info and made life much easy for them. Hit on the link "Stats for nerds" and you'll find what you are looking for.&lt;br /&gt;&lt;br /&gt;A wonderful and feature is you can add shortcuts to web based applications directly to the Windows Start menu or quick launch bar. Think of it - you'll be able to open &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;gmail&lt;/span&gt;, Google docs, Google notebook directly from quick launch bar the same way you open Outlook, Microsoft Word, etc. This will be a great help for low cost desktop computing projects that are trying to replace costly desktop apps with freely available web based alternatives.&lt;br /&gt;&lt;br /&gt;For those, who couldn't start working without installing &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/4650"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;Fullerscreen&lt;/span&gt;&lt;/a&gt; with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;Firefox&lt;/span&gt; and the look a clean and lean look and feel is like a gift long held in waiting.&lt;br /&gt;&lt;br /&gt;Though the lightning fast V8 Javascript engine promises you &lt;a href="http://news.cnet.com/8301-1001_3-10030888-92.html?part=rss"&gt;lowest latency compared to other browsers&lt;/a&gt;, it'll still take sometime to get migrate from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;Firefox&lt;/span&gt; to Chrome - mostly because of the rich set of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;plugins&lt;/span&gt;. Having said that,  if Firefox reclaimed the web, Google Chrome is here to &lt;span class="Apple-style-span" style="font-style: italic;"&gt;redefine the web&lt;/span&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/377204994975371563-6180123617402414338?l=tathagatadg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tathagatadg.blogspot.com/feeds/6180123617402414338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=377204994975371563&amp;postID=6180123617402414338' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/6180123617402414338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/6180123617402414338'/><link rel='alternate' type='text/html' href='http://tathagatadg.blogspot.com/2008/09/chrome-is-here.html' title='Chrome is here'/><author><name>Tathagata Dasgupta</name><uri>http://www.blogger.com/profile/16042262043737941154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://4.bp.blogspot.com/_JFtGaNWhS4E/STsrDmQ4SLI/AAAAAAAAAE0/Rx2PzGJ_RM4/S220/ProfilePic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_JFtGaNWhS4E/SL5W6vb_2eI/AAAAAAAAAC4/vZQcXqdqiLA/s72-c/chrome.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-377204994975371563.post-8947301468019299475</id><published>2008-08-22T09:11:00.000-07:00</published><updated>2008-08-22T14:20:43.186-07:00</updated><title type='text'>Moving on</title><content type='html'>Life has not been that interesting to produce further gibberish adage for the last few months. At work I'm looking into a plethora of antediluvian  technologies  - but still putting up to learn the new ones.&lt;br /&gt;&lt;br /&gt;My white paper titled Security Concerns with Web Services was warmly appreciated and got published our internal knowledge net. Though, I cannot publish it anywhere else ... I surely can share the helpful tools that I used to detect web service vulnerabilities.&lt;br /&gt;&lt;br /&gt;With the tools listed below, some imaginations and a desire to have  fun - you can really have a good idea about web services security.&lt;br /&gt;&lt;br /&gt;Tools for studying Web Services Security&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project"&gt;WebGoat&lt;/a&gt; is an insecure J2EE application that provides a number of lessons for practicing commonly known security exploits. &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.soapui.org/"&gt;Soap UI&lt;/a&gt; is a popular SOA and Web Services testing tool with a number offeatures like web service client code generation, mock serviceimplementation, and groovy scripting.&lt;/li&gt;&lt;li&gt; &lt;a href="http://www.owasp.org/index.php/Category:OWASP_WSFuzzer_Project"&gt;WS Fuzzer&lt;/a&gt; is a fuzzing penetration testing tool used against HTTP SOAP based web services. It tests numerous aspects (input validation, XML Parser, etc) of the SOAP target.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project"&gt;WebScarab&lt;/a&gt; is a framework for analysing applications that communicate using the HTTP and HTTPS protocols.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/livehttpheaders.mozdev.org/"&gt;LiveHTTPHeader&lt;/a&gt; is a mozilla plugin that provides all the information about the browser traffic.&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/cryptcat/"&gt;Cryptcat&lt;/a&gt; is a lightweight version of netcat with integrated transport encryption capabilities.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.fiddlertool.com/fiddler/"&gt;Fiddler&lt;/a&gt; is a HTTP Debugging Proxy which logs all HTTP traffic between your computer and the Internet. Fiddler allows you to inspect all HTTP Traffic, set breakpoints, and "fiddle" with incoming or outgoing data.&lt;/li&gt;&lt;li&gt;&lt;a href="https://tcpmon.dev.java.net/"&gt;TcpMon&lt;/a&gt; is a utility that allows the user to monitor the messages passed along in TCP based conversation.&lt;/li&gt;&lt;li&gt;&lt;a href="http://curl.haxx.se/"&gt;cURL&lt;/a&gt; is a tool to transfer data from or to a server, using one of the supported protocols (HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, DICT, TELNET, LDAP or FILE). The command is designed to work without user interaction.&lt;/li&gt;&lt;/ul&gt;Most of the above tools comes with neat documentation, so have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/377204994975371563-8947301468019299475?l=tathagatadg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tathagatadg.blogspot.com/feeds/8947301468019299475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=377204994975371563&amp;postID=8947301468019299475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/8947301468019299475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/8947301468019299475'/><link rel='alternate' type='text/html' href='http://tathagatadg.blogspot.com/2008/08/moving-on.html' title='Moving on'/><author><name>Tathagata Dasgupta</name><uri>http://www.blogger.com/profile/16042262043737941154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://4.bp.blogspot.com/_JFtGaNWhS4E/STsrDmQ4SLI/AAAAAAAAAE0/Rx2PzGJ_RM4/S220/ProfilePic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-377204994975371563.post-6583637298683923566</id><published>2008-03-25T20:16:00.000-07:00</published><updated>2008-03-26T00:29:10.618-07:00</updated><title type='text'>On loss and new beginning</title><content type='html'>&lt;span style="font-style: italic;"&gt;"How does it feel&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;How does it feel&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;To be on your own  &lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;With no direction home  &lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Like a complete unknown  &lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Like a rolling stone?"&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;I lost it. I lost it all.&lt;br /&gt;&lt;a href="http://apokalypz.blogspot.com"&gt;Three years of electronic ranting&lt;/a&gt;, tales of code, help,  pride, use, abuse, love, hate, lies, videos, pdfs, - fuck, the list is endless! It surely justifies taking a sick leave ...&lt;br /&gt;Andrew Grove says Only the paranoid survives. But he never says getting hyper-paranoid for survival. Well, no regrets brother - just lessons.&lt;br /&gt;If you happen to have no clue which loss I'm talking about - you hardly know me. Its my google account - I forgot the password for it. The big G is the spinal cord of your online existence - once you snap from it your gmail, blog, orkut, notebook, reader, docs everything refuses you as if you are some sort of a beguiler trying to steal the free services and be the next spam superstar!&lt;br /&gt;&lt;br /&gt;Every loss makes you wiser. Its like a tool that refreshes the the old, and paves the way for the new change. So ...&lt;br /&gt;&lt;br /&gt;"&lt;span style="font-style: italic;"&gt;Turn the clock to zero, boss&lt;br /&gt;The river's wide, we'll swim across&lt;br /&gt;Started  up a brand new day&lt;br /&gt;&lt;br /&gt;It could happen to you - just like it happened to me &lt;br /&gt;There's simply no immunity - there's no guarantee&lt;br /&gt;I say love's such a  force - if you find yourself in it&lt;br /&gt;And sometimes no reflection is there&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/377204994975371563-6583637298683923566?l=tathagatadg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tathagatadg.blogspot.com/feeds/6583637298683923566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=377204994975371563&amp;postID=6583637298683923566' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/6583637298683923566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/377204994975371563/posts/default/6583637298683923566'/><link rel='alternate' type='text/html' href='http://tathagatadg.blogspot.com/2008/03/on-loss-and-new-beginning.html' title='On loss and new beginning'/><author><name>Tathagata Dasgupta</name><uri>http://www.blogger.com/profile/16042262043737941154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://4.bp.blogspot.com/_JFtGaNWhS4E/STsrDmQ4SLI/AAAAAAAAAE0/Rx2PzGJ_RM4/S220/ProfilePic.jpg'/></author><thr:total>3</thr:total></entry></feed>
