Microsoft Research Projects of Interest – String and Automata

Microsoft has a number of great groups at the MSR and a lot of interesting projects. I am nearly done with my PhD and am looking for possible opportunities at various research labs and groups. In this series of posts, I am going to briefly summarize interesting projects select for MSR researcher and post-doc positions.

Strings and Automata

BEK is a domain specific language for writing common string functions.
It is possible to determine whether two programs output the same string, or whether a program can in fact output a desired string. Since BEK can compose the finite transducer representations of strings, it is possible to answer whether the composition of two programs can produce desired string.

Contrary to the tools that obtain syntactic differences between two versions of a program statically, SymDiff is used to display behavioral differences statically. It can be useful to validate refactorings based on zero semantic differences, to understand how feature addition/removal or bug fixes affect original program, and to understand change propagation interprocedurally.
Using SymDiff it is possible to build tools and techniques for statically providing feedback about program changes. Note that it differs from semantic differencing in the sense that it looks at altered behavior rather than altered semantics.

भाषावन

डॉ. गणेश देवींच्या भाषावन ह्या संकल्पनेवर आधारित कार्यक्रमाचा वृतांत लोकसत्तात आलेला वाचला. त्यात भारतातल्या भाषांची जपणूक आणि संवर्धन ह्या संदर्भात काही मुद्दे मांडण्यात आले. मला महत्वाचे वाटलेले (ठळक फोन्ट मध्ये) आणि इतर मुद्दे खालील प्रमाणे –

१. आमच्या भाषेवर आमचेच नियंत्रण कमी होत चालले आहे.
२. एकच भाषा वेगवेगळ्या पद्धतीने पुढे येत असते.
३. आदिवासी भाषा ही केवळ भाषा नसून तीत जीवनदर्शन आहे. यात ’प्रेम’ ही गोष्ट प्रामुख्याने आहे.
४. केवळ आदिवासी नाही तर सर्वच समाजाच्या जीवनशैलीत बदल होत आहे. त्यात आपली आपली स्वतंत्र ओळख अस्पष्ट किंवा नष्ट होत चालली आहे.
५. भाषिक प्रश्न कोणा एका समाजाचा, जाति-जमातीचा नाही, तर तो पूर्ण भारतीय समाजाचा प्रश्न आहे.
६. आपल्या भाषेत बोललो तर गाववाला, गावंढळ, असंस्कृत समजतील या भीतीने आपल्या मूळ भाषेपासून दूर जाऊ नये.
७. आपल्या समाजविषयक व भाषाविषयक पूर्वसंस्कारापासून विचलित होऊ नये.
८.  खरोखरच प्रश्न आहे का? असल्यास कुठे?
९. भाषा संपण्यापूर्वी त्याचे डॉक्युमेंटशन – ऐवजीकरण करावे, अन्यथा त्या संपल्या तर त्यांचे अस्तित्व होते हे कसे सिद्ध करणार?
१०. भय आणि संशय, यातून सर्वच भारतीय भाषिक विश्वासार्हता धोक्यात येऊ शकते.
११. आपली भाषा इतर भाषिक लोकांना शिकविण्याचा प्रयत्न करणे.
१२. साहित्यिक, कवी यांनी आपली मूळ भाषा साहित्यकृतीत ठेवावी. यांमुळे जितके दिवस ती साहित्यकृती टिकेल, तितके दिवस त्यातील भाषा टिकतील.
१३.  छोटय़ा भाषांतील प्रकाशनांसाठी शासनाने पुढे यावे.
१४. लिंग्विस्टिक सर्व्हे लोकांनी करावा. लोकांनीच अनेक उपक्रम घ्यावेत.
१६. सर्व शिक्षा अभियानाचे स्वरूप सर्व भाषा अभियान असले पाहिजे.

जगात इतर ठिकाणी सुद्धा भाषा हा एक जिव्हाळयाचा विषय आहे. तिथे भाषा संवर्धन कसे करतात त्याचा अभ्यास करून ते भारतातही अंमलात आणता येईल का ह्याचा विचार व्हायला हवा.


Categories: Marathi

मेड इन चायना आणि बेधुंद

आता आताच दोन मराठी चित्रपट पहिले. मेड इन चायना आणि बेधुंद. २ जून च्या लोकसत्ता मध्ये पहिली दोन वृत्ते ह्याच चित्रपटांशी संबंधित आहेत. लाखो चौरसफूट जमीन ‘एनए’ करून काढले पैशाचे पीकउपायुक्त लखमी गौतम यांची दीड महिन्यात बुलढाण्याच्या अधीक्षकपदी बदली. हिंदी चित्रपटांत रील आणि रिअल ह्यांचा ताळमेळ लागायचे पूर्वी दिवस होते. ते आता मराठी चित्रपटातही आले आहेत असे वाटतंय.

Categories: Marathi

Laws of Simplicity – Another Interpretation – I

John Maeda’s ten laws of simplicity are quite a food for thought. The best way one can use them is through creating one’s own system of simplicity. The very first law is “Reduce” :

The simplest way to achieve simplicity is through thoughtful reduction.

John Maeda says, “When in doubt, just remove.” This isn’t unlike Don Juan’s precept – “One has to reduce to a minimum all that is unnecessary in one’s life.” During my PhD research, I have often found that creating a process for everything in research is absolutely necessary. Recently, I have been following Deming’s fourteen principles in creating a process to aid in my research. There is a direct connection between some of Deming’s principles and John’s first law of simplicity. I am talking about :

– Create constancy of purpose for continual improvement.
– Improve constantly and forever every process within the sphere of activity.
– Institute modern methods of training for subprocesses.
– Break down barriers between different constituents of a system.

The key idea behind these principles is to identify what exactly it is that you want to do, which tools aid in doing specific tasks, remove barriers between the usage of tools and methods, and constantly refine the process so that anything extraneous or unnecessary, inefficient, and ineffective is removed. John Maeda says that in order to determine what to reduce, one must balance between the simplicity and complexity. What aspects of your process are too simplistic and do they provide enough expected output or they need to become complex in order to deliver the level of success or quality you desire.

The process of reaching an ideal state of simplicity can be truly complex, so allow me to simplify it for you. The simplest way to achieve simplicity is through thoughtful reduction. When in doubt, just remove. But be careful of what you remove.

Actually, there is no fixed guideline to achieve proper reduction as it is apparent in the quoted text above. That is why one must get the feel for it. Refining one’s processes so that you obtain the desired amount of joy and peace from it, is itself a process of continuous improvement.

SVN, Multiple Private-Public Key Pairs for Git, and Unfuddle

If I have learnt anything while programming for my thesis project, its that a revision control system is a must. It should also be more than just a back-up; one should know how to branch and merge a project as required. I have been using Unfuddle and Google code for quite a while now. I used SVN more or less because its supported better than Git in Eclipse and indeed Git seemed a bit esoteric in the beginning. Over the time though SVN posed some problems. One of the most prominent one is I needed the internet to make a commit. Then a friend introduced me to Git and said you could commit locally first and then push all the commits later to the server where your online repository is located. This is an incredibly useful functionality for two reasons : First, one can operate offline with Git. Second, because one can operate offline one doesn’t have to commit a large modification together because internet was not available until all the changes happened. Fine-grained commits make it easy to pin point the source of concern in the code and the distributed nature of Git makes it invaluable for small commits. Moreover, Git’s scalability is another aspect that was persuasive. Making small changes in large projects should not be difficult, such as e.g., altering the directory structure and then trying to reconcile it.

So, after a lot of work on my SVN repositories I moved to Git and have been using it efficiently ever since. I am using it also for Latex projects. In that, I came to a point where I had two different accounts with Unfuddle and it won’t accept my public key twice. The Unfuddle Git help explains creating SSH private-public key pair nicely but doesn’t give a clue about how to go about making multiple public keys for multiple accounts. My second Unfuddle account was not accepting the same public key neither it would take another public key by default if I made one. I found the answer here. Here is how to do it :

Lets assume you have a pair (id_rsa_1 and .pub). Create another private-public key pair (id_rsa_2 and .pub). In your .ssh folder on Mac, create a file called config in .ssh folder (if its already not there) and go like this

Host abbrev1.unfuddle.com
  User git
  IdentityFile ~/.ssh/id_rsa_1

Host abbrev2.unfuddle.com
  User git
  IdentityFile ~/.ssh/id_rsa_2

By assigning a specific private key file (IdentityFile) to a specific Host, you tell which pair is to be used for which Git account.

Unfuddle is better than Google code if you want to keep your code from public eyes, as is the case of Latex projects. Its free account is limited to one owner and one collaborator, but provides for unlimited repositories associated with a project.

Categories: Programming Tags: , , ,

Moving to WordPress

I have finally made the move from my Live Spaces blog to WordPress. Live space has almost no blog editor support on Mac. And using Live Writer via Parallels was not efficient either. Flock browser did help but it was no fun. It was not the same as writing a blog using the Live Writer.

In order to move my blog from Live Spaces, I used the Live Space Mover python script. It is mentioned on the WordPress site as well and did a quite nice job of moving my posts to WordPress.

WordPress has its own idiosyncrasies to deal with. Although Live Space Mover did a nice job of moving text and images, it couldn’t export all the video links, which I had shown from various sites like YouTube and Ted. WordPress has a simple syntax for embedding videos. E.g., to embed TED video in your WordPress blog all you have to do is type in square brackets.

ted id=http://www.ted.com/talks/view/id/319

or

ted id=319

Interestingly, the same holds for YouTube videos.

youtube id=http://www.youtube.com/watch?v=QpOWh97I9tQ

Pretty nice.
I am using Blogo to edit my new posts and also for recategorizing and retagging my archived posts. It has a nice feature called Bookmarklet which allows one to post anything permissible on some web page to your blog directly, by pressing the Bookmarklet button which you can install on the toolbar of FireFox or Safari.


Categories: Ideas

Mushin No Mind

Categories: Uncategorized

Celebrity Macs

This cultofmac post shows many celebrities proudly owning Macs.

 

 beyonce_macbookJayzBeyonce mattdamon Mitnick obama_macShaq Zuckerberg Clooney

The celebrities are in the clockwise direction are Beyonce, Beyonce and Jay-z, Matt Damon, Kevin Mitnik, George Clooney, Mark Zuckerberg (FaceBook fame), Shaquille ONeill and Mr. Obama.

Categories: Mac Tags: ,

How to poach an egg

A very nice video shows how to poach an egg. Almost artistry.

http://rouxbe.com/embedded_player.swf

Rouxbe Online Cooking School & Video Recipes

Categories: Uncategorized

Installing invisible shelf of books

Here is a funny video (or rather a video with a funny actor) that shows to use a big book, which you would otherwise throw away, as a support to create a shelf, that when piled up with books, it looks like they are held there by invisible force.

 

 

I like the idea, but would use not a book (that seems so much bachelorized) but a nice piece of wood.

Categories: Uncategorized