January 15, 2011
MIT Faculty Lecture: The 4Ws - What, Where, When, Why. (my experience)

Me with Professor John Williams of MIT after his talk at Accenture Bangalore.


Accenture
 has a close tie up with MIT through its MIT Professional Education program. Every year Accenture invites MIT faculty to share their views on some of the world’s most perpetuating problems, and how technology is trying to solve them under “MIT Faculty Lecture” series. This year they invited Professor John R. Williams from MIT, who directs the Auto-ID Laboratory and is the Professor of Information Engineering, Civil and Environmental Engineering, and Engineering Systems. Accenture also takes this opportunity to foster their Accenture Solutions Delivery Academy (ASDA) program in collaboration with MIT. 

This year’s talk title - “The 4Ws - What, Where, When, Why. “, intrigued me to the extent that I took half day leave and traveled like 20kms from Accenture’s one campus to another. The talk began at 3:30pm and revolved around questions like what, where, when and why with respect to Internet of Things. Internet of Things is a concept which aims to create a global system for tracking goods using a single numbering system called the Electronic Product Code. Professor Williams brought the issue of spread of counterfeit medicines across the world, how its affecting lives of people (specially in Africa and China) and how his work is trying to solve this problem. He also talked about one of his favorite topics (well, he mentioned it) - information and cyber security, and about the research in progress at MIT and elsewhere to make web safer. Perfect solutions are still unknown (he accepts), finding legitimacy of the products and information is still one of most intractable problems, but a lot of research work is going around globally. From the “where” perspective, Professor Williams talked a lot about Geo technologies and the privacy concerns associated with it. His talk mentioned the important role it played during Haiti earthquake which changed the entire country’s map. Organizations like Ushahidi, OpenStreetMap Foundation and others played an important role in updating the same, which helped UN, Red Cross and other rescue agencies/organizations.  

With my related work during One Laptop per Child and OpenStreetMap Foundation, I could connect his related research with my experience, which I shared after his talk and during the Q/A session. Fortunately, after his talk I got like 15 minutes to interact with him, during which we also discussed about services like Skyhook Wireless, which provides population density data through SimpleGeo, and about my application being co-developed over it with Utkarsh Shrivastava of GaTech, which was featured at MIT TR April’10 issue. Conversing further, I told him about my other research interests and future goals. Finding my interests in assistive technologies, he encouraged me to follow my dreams and ambitions, and even told me about a very interesting project being developed in Wales where dog+GPS is being used for navigating through places for visually impaired people. This project for some obvious reasons also related to one of an ongoing project co-mentored by me with Birago Jones of MIT Media Lab over Android platform. On asking about his experience in India, we had a laugh on Bangalore’s traffic. I did not realize when the time flew, 15 minutes were like 15 seconds. After taking a picture with him (see above) he had to leave, but he asked me to email the same (hence, this post).

It was a great session, very interactive and enlightening. Learnt a lot, discussed a lot. Thank you Professor Williams. 

September 6, 2010
Yahoo! Open Hack, Bangalore 2010.

So, I got accepted this July for Yahoo! Open Hack in Bangalore. It was a great experience. We developed two hacks in 24 hours. DirectCab and Flagged! (details below). 

DirectCab:

DirectCab is a unique hack, which bridges the gap between passengers and cab providers by directional marking (with information about incremental distances from source location) and navigation routes on Yahoo! Maps. It helps calculating distance, estimated time of travel and cab fair including surcharge% between two locations to avoid any excessive charges by cab drivers. It has in-built merchandise facility for instant payment of cab fair for the customers registered with the cab service, which happens through PayPal’s Adaptive Payments API. 

DirectCab - Hack #1

Flagged:

Flagged! is an interesting general knowledge game for children aged 5-8 yrs based on question/answer methodology. A set of Questions/Answers related to Country and their Capitals is stored within the application. Yahoo! YQL API is used to fetch the flag images and the current news for the respective country. Most importantly, speech recognition and voice synthesis have been extensively used keeping Accessibility in mind with both keyboard and speech based input/output for audible questions/answers.

Flagged! - Hack #2

Though you cannot run these application right away as they are desktop apps, but you can grab the code from here :) 

September 6, 2010
WebAnywhere toolbar for Firefox

WebAnywhere is a web-based screen reader for the web, requires no special software to be installed on the client machine and, therefore, enables blind people to access the web from any computer they happen to have access to that has a sound card.

Using this website is easy, simply go to Screen reader page and type in the URL in the text box, GO, and you’re ready to go. However, many times when you’re already on a website and want it to be read, the only way to do this, is to open reader page, copy current URL and paste it in the text box, GO! The toolbar kind of just automates the same, where user needs not to copy/paste any URL or open a new tab, a single button click does it all. 

Below is a screen shot showing the installed toolbar. The toolbar comes with two options, user can either choose to open current page in same tab or a new tab. Grab the toolbar from here, and just drag/drop over Firefox browser, you’re ready to go ! Btw, source code of WebAnywhere lies here, I am one of committers to the project, let me know if you want to see anything improved :)

You can send feedback through comments or email me at vaish.rajan {at} gmail.com 

WebAnywhere toolbar for Firefox

July 28, 2010
Next steps - Getting started with Rational Team Concert and Microsoft Visual Studio.

If you have followed Introduction: demo “How to get started with Team Concert and Microsoft(R) Visual Studio(R) article on Jazz Team Wiki and watched the video here, you’ve probably got the RTC up and running, but still, some basic functionality remains to be implemented, namely:

  • Unit tests.
  • Automatic email notification on successful built (with Unit test reports).
  • Getting last change info (in email).

In this article, I’ll be writing about, how to implement these functionalities if you are using an older version of RTC, though with new RTC 3.0 M7a (Beta 1), support for build notification emails, and simpler configuration of VS based builds, including publishing NUnit and MSTest results already exists.Getting started with Unit tests, you’ll need basic knowledge of XSLT, Perl and XML. Let’s get started.

—-»[1.]  Open the build.bat file and paste this after devenv.exe is executed (I used /Rebuild Release, to enable Release mode) -

———————————————————————————————————————-

del C:\demoblank\buildscript\results.xml

"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe" /testcontainer:C:\demoblank\build\Source\Project_Name.UnitTests\bin\Release\Project_Name.UnitTests.dll /resultsfile:C:\demoblank\buildscript\results.xml

"C:\demoblank\buildscript\msxsl.exe" C:\demoblank\buildscript\results.xml C:\demoblank\buildscript\MsTestReport2008.xsl -o C:\demoblank\buildscript\Report.html 

——————————————————————————————————————————————

So, what does it mean? 

->First line deletes results.xml to ensure a clean and new Unit test results.xml file’s generation.

->Second line uses MSTest.exe to generate results.xml with the help of UnitTests project’s dll. 

->Third line uses msxsl.exe to generate HTML report of UnitTests with the help of MsTestReport2008.xsl and results.xml 

We’re done, now we will use this Report.html as an attachment in email. So, let’s get started with sending email functionality. 

—-»[2.] Open build.bat again and just after startPublish is executed, paste this-

———————————————————————————————————————-

"C:\Program Files\IBM\TeamConcertBuild\buildsystem\buildengine\eclipse\jdk\bin\java" -cp "C:\Program Files\IBM\TeamConcertBuild\buildsystem\buildengine\eclipse\plugins\org.apache.ant_1.7.0.v200803061910\lib\ant-launcher.jar" org.apache.tools.ant.launch.Launcher -f C:\demoblank\buildScript\jazzbuild.xml -lib "C:\Program Files\IBM\TeamConcertBuild\buildsystem\buildtoolkit" -DrepositoryAddress=%1 -DbuildResultUUID=%2 mailer

——————————————————————————————————————————————

Then open jazzbuild.xml, and paste this after startPublish-

———————————————————————————————————————-

<target name=”mailer”>

<property name=”report” value=”C:\demoblank\buildScript\Report.html”/>

<mail from=”BuildManager@company.com” messagemimetype=”text/html” charset=”ISO-8859-1” messagefile=”${report}” mailhost=”AMRMR2001.company.com” mailport=”25” tolist=”developer1@company.com,developer2@company.com” subject=”Build status” />                 

</target>

——————————————————————————————————————————————

You’re ready to go! Email sent :) Next what? you would also want to see last changes in the email. RTC does not have current functionality inbuilt in the same, so we’ll have to use SCM Command line for the same, you might want to read a detailed tutorial on the same here. Ready? 

—-»[3.] So, well, I haven’t used a very clean way to do it, but it works, gives the implementation technique and can be improved, we just need to play a bit with Perl script, so, open the build.bat file again and paste the following after Report.html is created:

———————————————————————————————————————-

"C:\Program Files\IBM\TeamConcert\scmtools\eclipse\scm.exe" —show-uuid y —show-alias n list snapshots -r https://10.186.165.143:9443/jazz/ -u BuildAdmin -P Password “Build WorkSpace” > “C:\demoblank\buildScript\Snapshotlist.txt”

cd “C:\demoblank\buildScript”

perl “C:\demoblank\buildscript\Snapshotperl.pl” > “C:\demoblank\buildscript\snapshot.bat”

call “C:\demoblank\buildscript\snapshot.bat” > “C:\demoblank\buildscript\change.txt”

perl “C:\demoblank\buildscript\Snapshotextract.pl” > “C:\demoblank\buildscript\change2.txt”

copy/Y “C:\demoblank\buildScript\change1.txt”+”C:\demoblank\buildScript\change2.txt”+”C:\demoblank\buildScript\change3.txt” “C:\demoblank\buildScript\ChangeReport.html”

——————————————————————————————————————————————

The first line creates Snapshotlist.txt, which contains something like:

———————————————————————————————————————-

(_mh9AYVm7Ed-7jddFtRqYuA) “Team Area build_20100507-1503” May 7, 2010 3:03 PM

(_IIuqE1m5Ed-7jddFtRqYuA) “Team Area build_20100507-1445” May 7, 2010 2:45 PM

——————————————————————————————————————————————

to parse the same, we need Perl script (Snapshotperl.pl), which further outputs a command, saved in snapshot.bat. 

Source of Snapshotperl.pl is:

———————————————————————————————————————-

#!/usr/bin/perl

open (FILE, ‘snapshotlist.txt’);

$i=0;

while (<FILE>) {

if($i<2)

chomp;

(@snapshotID) = split(“"”);

$snap[$i] = $snapshotID[1];

$i++;

}close (FILE);

print $snapshotcommand = “"C:\Program Files\IBM\TeamConcert\scmtools\eclipse\scm.exe" “.”-u “.”yes “.”compare “.”-r “.”"https://10.186.165.143:9443/jazz/" “.”-u “.”BuildAdmin “.”-P “.”Password “.”snapshot “.”"$snap[0]"”.” snapshot “.”"$snap[1]"”; 

exit;

——————————————————————————————————————————————

Now, the Snapshot.bat contains:

———————————————————————————————————————-

"C:\Program Files\IBM\TeamConcert\scmtools\eclipse\scm.exe" -u yes compare -r "https://10.186.165.143:9443/jazz/" -u BuildAdmin -P Password snapshot "Area build_20100507-1503" snapshot "Area build_20100507-1445"

——————————————————————————————————————————————

which when executed, gives this(pasted in change.txt):

———————————————————————————————————————-

C:\blankdemo\buildScript>”C:\Program Files\IBM\TeamConcert\scmtools\eclipse\scm.exe” -u yes compare -r “https://10.186.165.143:9443/jazz/” -u BuildAdmin -P Password snapshot “Team Area build_20100507-1503” snapshot “Team Area build_20100507-1445” 

——————————————————————————————————————————————

To extract, we further use another perl script( Snapshotextract.pl):

———————————————————————————————————————-

#!/usr/bin/perl

open (FILE, ‘change.txt’);

@lines = <FILE>;

close (FILE);

$i=2;

foreach (@lines) {

print $lines[$i];

$i++; }exit;

——————————————————————————————————————————————

Which gives last change in change2.txt, and looks like this: 

———————————————————————————————————————-

Outgoing Changes Component (1018) “SOURCE” (1020) developer1 192: Adding extra spaces in glossary conflicts with the Application Markup - Trimming terms in glossary 2010/02/03 Incoming Changes Component (1018) “SOURCE” (this can further be parsed to remove irrelevant content). 

——————————————————————————————————————————————

The last line then merges all change files and adds to ChangeReport.html, which can be finally appended or iframed with Report.html. We’re done.

If anything remains unclear, shoot me an email at vaish.rajan @ Gmail dot com or post a comment below. Thanks. 

Liked posts on Tumblr: More liked posts »