{"id":2340,"date":"2006-07-24T06:57:00","date_gmt":"2006-07-24T06:57:00","guid":{"rendered":"https:\/\/test.simple-talk.com\/uncategorized\/microsoft-research\/"},"modified":"2016-07-28T10:48:51","modified_gmt":"2016-07-28T10:48:51","slug":"microsoft-research","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/blogs\/microsoft-research\/","title":{"rendered":"Microsoft Research"},"content":{"rendered":"<p>I thought the <a href=\"http:\/\/research.microsoft.com\/\">Microsoft Research<\/a> site deserved a mention as there&#160;are some great little projects on there. <\/p>\n<p>A pick of my favourites must include:<\/p>\n<p><strong>AbsIL<\/strong> &#8211; the Abstract IL SDK &#8211; basically this gives you a AST of your assembly and a load of utilities for walking the AST and modifying it &#8211; there could be some wonderful uses of this such as parameter contract enforcement as a post compile step &#8211; IE if you use attributes to specify contracts for your parameters (IE not null)&#160;then you could use the AbsIL SDK to enforce this for you by adding code to functions with that attribute.<\/p>\n<p>Another project I find quite interesting is the <strong>C# Software Transactional&#160;Memory<\/strong> &#8211; allowing you to specify atomic blocks of code which act like a transaction &#8211; either committing or rolling back.<\/p>\n<p><a href=\"http:\/\/research.microsoft.com\/sn\/detours\/\"><strong>Detours<\/strong><\/a> is another great little project, which is surprisingly useful at times,&#160;available for download &#8211; it allows you to intercept Win32 calls on any x86 machine &#8211; particularly useful if you are playing around in the bowels on the Win32 API.<\/p>\n<p><strong>F#<\/strong> &#8211; a OCaml based compiler targeting&#160;.NET &#8211; although OCaml is a strange language it can be useful for expressing some problems clearly and concisely particularly when working with AST&#8217;s etc &#8211; in fact much of AbsIL relies on F# (although you can use AbsIL from C# if you want.. its a little harder though)<\/p>\n<p><strong>MSR Accelerator Project<\/strong> &#8211; Use the GPU to perform parallel calculations in .NET &#8211; an especially interesting area of research especially as newer GPU&#8217;s become more general purpose if you want to know more about the area in general&#160;then have a look at <a href=\"http:\/\/www.gpgpu.org\/\">http:\/\/www.gpgpu.org\/<\/a> <\/p>\n<p><strong>Scalable Fabric<\/strong> &#8211; A slightly funky &#8211; but interesting method of managing windows on your desktop &#8211; I had a play with this and although it killed my machines performance and doesn&#8217;t really work on a dual head setup its an interesting idea.<\/p>\n<p><strong>SimPastry<\/strong> &#8211; A P2P routing overlay &#8211; similar to Chord and Tapestry &#8211; Pastry is used as a routing overlay over a Peer 2 Peer network allowing the construction of robust distributed systems (Have a look <a href=\"http:\/\/research.microsoft.com\/~antr\/Pastry\/\">here<\/a> for more information)<\/p>\n<p>There are many more projects on the site. I haven&#8217;t looked at them all yet but I always find it interesting to see what Microsoft are up to.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I thought the Microsoft Research site deserved a mention as there&#160;are some great little projects on there. A pick of my favourites must include: AbsIL &#8211; the Abstract IL SDK &#8211; basically this gives you a AST of your assembly and a load of utilities for walking the AST and modifying it &#8211; there could&#8230;&hellip;<\/p>\n","protected":false},"author":94441,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2],"tags":[],"coauthors":[],"class_list":["post-2340","post","type-post","status-publish","format-standard","hentry","category-blogs"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/2340","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/94441"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=2340"}],"version-history":[{"count":2,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/2340\/revisions"}],"predecessor-version":[{"id":41413,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/2340\/revisions\/41413"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=2340"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=2340"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=2340"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=2340"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}