<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Eric Tobia's Blog - Volta</title>
    <link>http://www.erictobia.com/</link>
    <description>People, places, and things (via HTTP)</description>
    <language>en-us</language>
    <copyright>Eric Tobia</copyright>
    <lastBuildDate>Thu, 03 Jan 2008 16:03:09 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>blog@erictobia.com</managingEditor>
    <webMaster>blog@erictobia.com</webMaster>
    <item>
      <trackback:ping>http://www.erictobia.com/Trackback.aspx?guid=3242776f-8d11-4513-a800-767f6f0db3cc</trackback:ping>
      <pingback:server>http://www.erictobia.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.erictobia.com/PermaLink,guid,3242776f-8d11-4513-a800-767f6f0db3cc.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.erictobia.com/CommentView,guid,3242776f-8d11-4513-a800-767f6f0db3cc.aspx</wfw:comment>
      <wfw:commentRss>http://www.erictobia.com/SyndicationService.asmx/GetEntryCommentsRss?guid=3242776f-8d11-4513-a800-767f6f0db3cc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">While it’s unlikely that you would ever
want to invoke the Volta compiler directly, using it does provide some insight into
how Volta works.<br /><br />
Let’s say that you have an existing assembly named BoringObjects.dll.  BoringObjects.dll
contains one class named Person.<br /><br /><img src="http://www.erictobia.com/content/binary/person_reflector.gif" border="0" /><br /><br />
To do a Volta conversion of this assembly from MSIL to JavaScript execute the following
command from the console window. NOTE: you will need "C:\Program Files\Microsoft Live
Labs Volta" in your path.<br /><br /><font face="Courier New">&gt; volta BoringObjects.dll /out:JSOutput</font><br /><br />
The only argument of interest is <font face="Courier New">/out:JSOutput</font>. 
This is the directory that the Volta compiler will write the JavaScript files to.<br /><br />
If we look under our specified output directory we notice that Volta has created a
directory that corresponds to the assembly name.  Under that directory there
are three items:<br /><br />
[Types] (directory)<br />
assembly.js<br />
typeMapping.js<br /><br />
Under the Types directory there is one file "tA.js" which corresponds to the lone
Person class in our original assembly.  If you use /d (debug) option the file
will be named "type_0__Person.js" and the JavaScript code will be nicely formatted.<br /><br />
It’s interesting to note that this same structure is seen in "C:\Program Files\Microsoft
Live Labs Volta\Cache".  In that directory you will find that some core .NET
assemblies and the Volta libraries have been converted to JavaScript. This step is
apparently part of the installation process.<br /><br /><img src="http://www.erictobia.com/content/binary/volta_cache.gif" border="0" /><img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=3242776f-8d11-4513-a800-767f6f0db3cc" /></body>
      <title>Using Volta from the Command Line</title>
      <guid isPermaLink="false">http://www.erictobia.com/PermaLink,guid,3242776f-8d11-4513-a800-767f6f0db3cc.aspx</guid>
      <link>http://www.erictobia.com/2008/01/03/UsingVoltaFromTheCommandLine.aspx</link>
      <pubDate>Thu, 03 Jan 2008 16:03:09 GMT</pubDate>
      <description>While it’s unlikely that you would ever want to invoke the Volta compiler directly, using it does provide some insight into how Volta works.&lt;br&gt;
&lt;br&gt;
Let’s say that you have an existing assembly named BoringObjects.dll.&amp;nbsp; BoringObjects.dll
contains one class named Person.&lt;br&gt;
&lt;br&gt;
&lt;img src="http://www.erictobia.com/content/binary/person_reflector.gif" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
To do a Volta conversion of this assembly from MSIL to JavaScript execute the following
command from the console window. NOTE: you will need "C:\Program Files\Microsoft Live
Labs Volta" in your path.&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;gt; volta BoringObjects.dll /out:JSOutput&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
The only argument of interest is &lt;font face="Courier New"&gt;/out:JSOutput&lt;/font&gt;.&amp;nbsp;
This is the directory that the Volta compiler will write the JavaScript files to.&lt;br&gt;
&lt;br&gt;
If we look under our specified output directory we notice that Volta has created a
directory that corresponds to the assembly name.&amp;nbsp; Under that directory there
are three items:&lt;br&gt;
&lt;br&gt;
[Types] (directory)&lt;br&gt;
assembly.js&lt;br&gt;
typeMapping.js&lt;br&gt;
&lt;br&gt;
Under the Types directory there is one file "tA.js" which corresponds to the lone
Person class in our original assembly.&amp;nbsp; If you use /d (debug) option the file
will be named "type_0__Person.js" and the JavaScript code will be nicely formatted.&lt;br&gt;
&lt;br&gt;
It’s interesting to note that this same structure is seen in "C:\Program Files\Microsoft
Live Labs Volta\Cache".&amp;nbsp; In that directory you will find that some core .NET
assemblies and the Volta libraries have been converted to JavaScript. This step is
apparently part of the installation process.&lt;br&gt;
&lt;br&gt;
&lt;img src="http://www.erictobia.com/content/binary/volta_cache.gif" border="0"&gt;&lt;img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=3242776f-8d11-4513-a800-767f6f0db3cc" /&gt;</description>
      <comments>http://www.erictobia.com/CommentView,guid,3242776f-8d11-4513-a800-767f6f0db3cc.aspx</comments>
      <category>Volta</category>
    </item>
    <item>
      <trackback:ping>http://www.erictobia.com/Trackback.aspx?guid=2a7dd93a-b279-4362-bf5a-bac92217383b</trackback:ping>
      <pingback:server>http://www.erictobia.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.erictobia.com/PermaLink,guid,2a7dd93a-b279-4362-bf5a-bac92217383b.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.erictobia.com/CommentView,guid,2a7dd93a-b279-4362-bf5a-bac92217383b.aspx</wfw:comment>
      <wfw:commentRss>http://www.erictobia.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2a7dd93a-b279-4362-bf5a-bac92217383b</wfw:commentRss>
      <title>The Three “R”s of Volta</title>
      <guid isPermaLink="false">http://www.erictobia.com/PermaLink,guid,2a7dd93a-b279-4362-bf5a-bac92217383b.aspx</guid>
      <link>http://www.erictobia.com/2007/12/15/TheThreeRsOfVolta.aspx</link>
      <pubDate>Sat, 15 Dec 2007 02:13:11 GMT</pubDate>
      <description>&lt;span style="font-size: 10pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;A prevalent theme in the Volta &lt;a href="http://labs.live.com/volta/docs/"&gt;documentation&lt;/a&gt; is
the concept of the three “R”s. These three principles are at the heart of what Volta
attempts to provide for developers.&amp;nbsp; They are retargeting, remodulating, and
refactoring.&lt;br&gt;
&lt;br&gt;
&lt;font size="2"&gt;&lt;u&gt;&lt;b&gt;Retargeting&lt;/b&gt;&lt;/u&gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
To me this is the coolest aspect of Volta and the feature that makes it a very interesting
technology. At its core Volta is a compiler or more accurately a recompiler.&amp;nbsp;
Instead of recompiling the source code Volta uses a technique called MSIL rewriting.
This is what enables the developer to write client-side browser code in C#. Since
all CLR languages compile to MSIL, Volta can use that as the common denominator. Volta
is capable of MSIL to MSIL, and MSIL to JavaScript conversion.&lt;br&gt;
&lt;br&gt;
&lt;font size="2"&gt;&lt;u&gt;&lt;b&gt;Remodulating&lt;/b&gt;&lt;/u&gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
Another goal of the Volta toolset is seamless cross-browser support. As the documentation
states:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;i&gt;&amp;nbsp;Volta hides as many browser-specific differences as possible,
but still allows developers to leverage the unique capabilities of particular browsers.
Instead of targeting solely the intersection of browser capabilities, Volta targets
the entire union, but makes the intersection browser-agnostic. This is browser remodulating.&lt;/i&gt;
&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;
Remodulating also deals with the debugging experience. Regardless of the browser platform
developers will be stepping through their application code within Visual Studio. That's
assuming of course that your target is either IE or FireFox which are the only browsers
supported in the current release. 
&lt;br&gt;
&lt;font size="2"&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size="2"&gt;&lt;u&gt;&lt;b&gt;Refactoring&lt;/b&gt;&lt;/u&gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
Volta refactoring is about enabling developers to create their applications while
deferring decisions about what tier a particular component will run in. In my opinion
this will be the most controversial feature of the toolset.&amp;nbsp; &lt;a href="http://www.knowing.net/PermaLink,guid,8c6ba500-a6b4-4598-8f2c-52d31cf3bf16.aspx"&gt;Larry
O’Brien has some reservations about it&lt;/a&gt;:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;i&gt;This sounds like a bad idea to me. You can't refactor away the difference
between an in-memory method call and an Internet message: one happens in nanoseconds
and the other in milliseconds&lt;/i&gt;
&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;
I have some questions of my own about this. The docs claim that:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;i&gt;During development, all code runs in the client for ease of testing
and debugging.&lt;/i&gt;
&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;
What are the implications of this? Not every .NET class is meant to run in a browser
context. Does Volta offer any automatic guidance with regard to this? The notion of
clicking a “Split Tiers” check box and decorating a class with a &lt;font face="Courier New"&gt;[RunAtOrigin]&lt;/font&gt; does
seem implicitly powerful, I’m just curious to know where the model breaks down. I
will try to answer these questions and others as I dig deeper into the framework.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=2a7dd93a-b279-4362-bf5a-bac92217383b" /&gt;</description>
      <comments>http://www.erictobia.com/CommentView,guid,2a7dd93a-b279-4362-bf5a-bac92217383b.aspx</comments>
      <category>.NET</category>
      <category>Programming</category>
      <category>Volta</category>
    </item>
    <item>
      <trackback:ping>http://www.erictobia.com/Trackback.aspx?guid=bbf461d8-57d5-48d2-9d64-9dcf823277b4</trackback:ping>
      <pingback:server>http://www.erictobia.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.erictobia.com/PermaLink,guid,bbf461d8-57d5-48d2-9d64-9dcf823277b4.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.erictobia.com/CommentView,guid,bbf461d8-57d5-48d2-9d64-9dcf823277b4.aspx</wfw:comment>
      <wfw:commentRss>http://www.erictobia.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bbf461d8-57d5-48d2-9d64-9dcf823277b4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <img src="http://www.erictobia.com/content/binary/logo-volta.gif" border="0" />
        <br />
        <br />
It's kind of ironic.  This morning I was seriously considering taking a look
at the <a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a>. 
This is despite the fact that GWT is targeted at Java developers, which I am not. 
It's just that GWT seems like such a useful idea - I wanted to play with it a bit.<br /><p>
Luckily Microsoft has, <span style=""></span>apparently, decided to put out a framework
that allows developers to build rich internet applications without having to do a
ton of JavaScript coding.<br /></p><p>
It's called <a href="http://labs.live.com/volta/">Volta</a> and at first glance it
seems pretty cool.<br /><br />
When I was doing a lot of work with <a href="http://www.asp.net/ajax/">ASP.NET AJAX</a> last
year, the idea of coding in a more productive language and environment than JavaScript
kept coming up again and again.<span style="">  </span>There was Script# at the
time, but I didn't get a chance to look into it as much as I would have liked.<br /><br />
This certainly seems like a great development.  Maybe this even brings .NET developers
one step closer to what <a href="http://joelonsoftware.com/items/2007/09/18.html">Joel
Spolsky described a few month ago</a>.
</p><p>
Now…on to the samples, tutorials, and docs!
</p><img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=bbf461d8-57d5-48d2-9d64-9dcf823277b4" /></body>
      <title>Volta</title>
      <guid isPermaLink="false">http://www.erictobia.com/PermaLink,guid,bbf461d8-57d5-48d2-9d64-9dcf823277b4.aspx</guid>
      <link>http://www.erictobia.com/2007/12/06/Volta.aspx</link>
      <pubDate>Thu, 06 Dec 2007 02:55:23 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;img src="http://www.erictobia.com/content/binary/logo-volta.gif" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
It's kind of ironic.&amp;nbsp; This morning I was seriously considering taking a look
at the &lt;a href="http://code.google.com/webtoolkit/"&gt;Google Web Toolkit&lt;/a&gt;.&amp;nbsp;
This is despite the fact that GWT is targeted at Java developers, which I am not.&amp;nbsp;
It's just that GWT seems like such a useful idea - I wanted to play with it a bit.&lt;br&gt;
&lt;p&gt;
Luckily Microsoft has, &lt;span style=""&gt;&lt;/span&gt;apparently, decided to put out a framework
that allows developers to build rich internet applications without having to do a
ton of JavaScript coding.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
It's called &lt;a href="http://labs.live.com/volta/"&gt;Volta&lt;/a&gt; and at first glance it
seems pretty cool.&lt;br&gt;
&lt;br&gt;
When I was doing a lot of work with &lt;a href="http://www.asp.net/ajax/"&gt;ASP.NET AJAX&lt;/a&gt; last
year, the idea of coding in a more productive language and environment than JavaScript
kept coming up again and again.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;There was Script# at the
time, but I didn't get a chance to look into it as much as I would have liked.&lt;br&gt;
&lt;br&gt;
This certainly seems like a great development.&amp;nbsp; Maybe this even brings .NET developers
one step closer to what &lt;a href="http://joelonsoftware.com/items/2007/09/18.html"&gt;Joel
Spolsky described a few month ago&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Now…on to the samples, tutorials, and docs!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=bbf461d8-57d5-48d2-9d64-9dcf823277b4" /&gt;</description>
      <comments>http://www.erictobia.com/CommentView,guid,bbf461d8-57d5-48d2-9d64-9dcf823277b4.aspx</comments>
      <category>.NET</category>
      <category>AJAX</category>
      <category>Frameworks</category>
      <category>GWT</category>
      <category>Volta</category>
    </item>
  </channel>
</rss>