<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Cale Teeter</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/caleteet/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/caleteet/feed.xml</link>
    <description>Senior Software Engineer, DX</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:41:26 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Version 1.1 of Solidity Extension released!</title>
      <link>https://docs.microsoft.com/archive/blogs/caleteet/version-1-1-of-solidity-extension-released</link>
      <pubDate>Sun, 19 Jun 2016 17:09:23 GMT</pubDate>
      <dc:creator><![CDATA[Cale T]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/caleteet/?p=225</guid>
      <description><![CDATA[We have just released an update to the Solidity extension for Visual Studio.  There has been lots of...]]></description>
      <content:encoded><![CDATA[We have just released an update to the Solidity extension for Visual Studio.  There has been lots of feedback from the community and it's very much appreciated.  Detailed below is more information about the update.
<h1>Getting the update</h1>
We had to make some core changes to the project structure to support the ability to handle multi-project solutions.  The update should happen automatically in the background as any other extension, via a notification in Visual Studio.   If you don't see the upgrade pop up you will have to do some manual work to get this specific update.  If you don't see the automatic upgrade, please follow these steps:
<ol>
 	<li>First uninstall the current Solidity extension.
<ul>
 	<li>Click on Tools -&gt; Extensions and Updates...
<div></div>
<a href="https://msdnshared.blob.core.windows.net/media/2016/06/tools_upd.png"><img width="383" height="361" class="alignnone wp-image-245" alt="tools_upd" src="https://msdnshared.blob.core.windows.net/media/2016/06/tools_upd.png" /></a></li>
</ul>
<ul>
 	<li>Scroll down to find the Solidity Extension and click Uninstall.
<div></div>
<a href="https://msdnshared.blob.core.windows.net/media/2016/06/tools_upd_uninstall.png"><img width="472" height="231" class="alignnone wp-image-255" alt="tools_upd_uninstall" src="https://msdnshared.blob.core.windows.net/media/2016/06/tools_upd_uninstall.png" /></a></li>
</ul>
</li>
 	<li>Next install the latest extension by browsing to the public marketplace (<a href="https://visualstudiogallery.msdn.microsoft.com/96221853-33c4-4531-bdd5-d2ea5acc4799">Solidity in Visual Studio Marketplace</a>), downloading and installing the extension.</li>
</ol>
<h1>New Features</h1>
With this release there are several new features.  These range from code editing to new templates.
<h2>Code Editing</h2>
Obviously, one of the primary reasons you would be using Visual Studio is to write some code.  Over the years developers have become accustomed to features such as auto complete and coloring.  The Solidity extension has implemented the language from scratch so all of these features need to implemented.  We have a start with this version.
<ul>
 	<li><strong>Auto Completion</strong> - Automatic completion of code statements have been implemented for these keywords (Contract, Function, Import, Struct, Mapping, Address, Constant, Returns, Return, If/Else)
<div></div>
<a href="https://msdnshared.blob.core.windows.net/media/2016/06/auto-complete.png"><img width="258" height="209" class="alignnone wp-image-265" alt="auto-complete" src="https://msdnshared.blob.core.windows.net/media/2016/06/auto-complete.png" /></a></li>
</ul>
<ul>
 	<li><strong>Bracket Matching</strong> - Bracket matching is ability of the IDE to show the starting/closing brackets for ('{}','()','[]').  This means that if either the starting or closing brackets are selected by the developer, the paired bracket is highlighted.  This makes it easier to find missing brackets in more complex code.
<div></div>
<a href="https://msdnshared.blob.core.windows.net/media/2016/06/bracket-matching.png"><img width="345" height="181" class="alignnone wp-image-275" alt="bracket-matching" src="https://msdnshared.blob.core.windows.net/media/2016/06/bracket-matching.png" /></a></li>
</ul>
<ul>
 	<li><strong>Keyword Highlighting</strong> - Keyword highlighting is a feature that highlights exact words that match the word that is currently select (clicked on) by the user.  This makes it easier to find dependencies in your code or when refactoring/cleaning up code.
<div></div>
<h2><img width="461" height="390" class="alignnone wp-image-285" alt="keyword-matching" src="https://msdnshared.blob.core.windows.net/media/2016/06/keyword-matching.png" /></h2>
</li>
</ul>
<h2>Templates</h2>
Templates for various projects are essentially a collection of assets that make up a project or solution in Visual Studio.  These templates can be comprised of one or more projects.  In the initial release, the Solidity extension only had one project template, essentially for smart contract development.  With this release we have changed the extension to allow for multi-project templates.  This is core packaging feature change.
<h3 style="padding-left: 30px">Smart Contract Project</h3>
<p style="padding-left: 30px">This project's purpose is for development of smart contracts including authoring, compiling and deployment from inside the IDE.</p>
<p style="padding-left: 30px"><a href="https://msdnshared.blob.core.windows.net/media/2016/06/smart_contract.png"><img width="613" height="292" class="alignnone wp-image-295" alt="smart_contract" src="https://msdnshared.blob.core.windows.net/media/2016/06/smart_contract.png" /></a></p>

<h3 style="padding-left: 30px">Decentralized ASP.Net Web Application</h3>
<p style="padding-left: 30px">This project's purpose is for not only the development of smart contracts but it also included a project for hosting the UI in the form of an ASP.Net MVC web application.  This is the initial introduction of this model and will be extended to include more samples.  The core idea here is to demonstrate to developers not only how to build smart contracts but also how to hook them up to an actual application.</p>
<p style="padding-left: 30px"><a href="https://msdnshared.blob.core.windows.net/media/2016/06/aspnet.png"><img width="619" height="314" class="alignnone wp-image-305" alt="aspnet" src="https://msdnshared.blob.core.windows.net/media/2016/06/aspnet.png" /></a></p>

<h3 style="padding-left: 30px">Decentralized Node Web Application</h3>
<p style="padding-left: 30px">This project's purpose is for not only the development of smart contracts but it also included a project for hosting the UI in the form of an nodejs express web application.  This is the initial introduction of this model and will be extended to include more samples.  The core idea here is to demonstrate to developers not only how to build smart contracts but also how to hook them up to an actual application.</p>
<p style="padding-left: 30px"><a href="https://msdnshared.blob.core.windows.net/media/2016/06/node.png"><img width="647" height="329" class="alignnone wp-image-315" alt="node" src="https://msdnshared.blob.core.windows.net/media/2016/06/node.png" /></a></p>

<h2>Bug Fixes</h2>
And lastly, we have been busy slaying bugs that existed in the initial release.  Also, the feedback is much appreciated, both bugs and new ideas for how to make this tooling better.
<ul>
 	<li>Removed the README.html from loading automatically at startup for Smart Contract Projects.  The original intent of this was to inform the developer that they needed to run bloc in order to deploy smart contracts to a blockchain.  The manner in which is opened, was such that if the project was reloaded (which is triggered by lots of things), it will reload the readme.  This really affected developers that were trying to add this project to an existing solution or add existing projects to this solution.  We have removed this, as we have a blog post about how to set this up now.</li>
 	<li>Fixed issue where contracts created via New Item, were now compiling/deploying correctly.  The issue here was caused by an binary issue with the template used to create the smart contract via new item.  We have corrected this issue and this will now work with no issues.</li>
 	<li>Fixed bug where only one contract could be deployed in a single session.  This one is was simply caused by a caching issue inside the extension and has been resolved.</li>
 	<li>Improved error handling/messaging when bloc is not running.  In the initial release if bloc server was not running, the user would be a object not found issue.  We are handling these exceptions from bloc in a better way now, and the user will be messaged that bloc is having some problems, and where to start checking for problems.</li>
 	<li>Updated the extension to fix compatibility issues with blockapp-bloc endpoints.  There were some changes as this package evolves that the extension is now fully supported with.</li>
 	<li>Fixed bug where compiling smart contracts in subfolders was not outputting to the correct location.  They are all in the bin folder now.</li>
</ul>
<h2>More to follow</h2>
We will be publishing more updates in quicker timeframes going forward.  We already have a few new features queued up and in testing now, to be released shortly.  Again feedback in always welcome via comments to this site.]]></content:encoded>
    </item>
    <item>
      <title>Solidity integration with Visual Studio</title>
      <link>https://docs.microsoft.com/archive/blogs/caleteet/solidity-integration-with-visual-studio</link>
      <pubDate>Fri, 01 Apr 2016 01:12:00 GMT</pubDate>
      <dc:creator><![CDATA[Cale T]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/caleteet/?p=51</guid>
      <description><![CDATA[Getting Started with Solidity
Yesterday we were proud to announce the integration of Solidity and...]]></description>
      <content:encoded><![CDATA[<h2>Getting Started with Solidity</h2>
Yesterday we were proud to announce the integration of Solidity and the Smart Contracts that work with Ethereum blockchains into Visual Studio.  This exists as an extension that is available <a title="here" href="https://visualstudiogallery.msdn.microsoft.com/96221853-33c4-4531-bdd5-d2ea5acc4799" target="_blank">here</a>.  This extension was designed to lower the bar to working with blockchains and make this a seemless process from inside the world class IDE.

The extension is free, and we have put together some steps to further help you get started using this.

&nbsp;

<hr />

<h2> Prerequisites</h2>
To get started you will need to be using Visual Studio 2015  Community, Professional, or Enterprise edition.  You will also need to download the Solidity extension from the Visual Studio Marketplace.  You can download that <a title="here" href="https://visualstudiogallery.msdn.microsoft.com/96221853-33c4-4531-bdd5-d2ea5acc4799" target="_blank">here</a>.  After installing the extension, you will need to restart Visual Studio.  Also, nodejs will need to be installed to allow local deployments for development.  This can be downloaded <a title="here" href="https://nodejs.org" target="_blank">here.</a> (download the latest LTS version)

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post1.png"><img class="alignnone wp-image-52 " src="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post1-1024x574.png" alt="visual studio extension" width="743" height="417" /></a>
<h2></h2>

<hr />

<h2></h2>
<h2> Create your first Decentralized Application</h2>
After the extension has been installed, next you can create a decentralized application that will be used to author, compile and deploy smart contracts.

1.  From the <strong>File</strong> menu, click new <strong>Project</strong>.
<p style="padding-left: 30px"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post2.png"><img class="alignnone  wp-image-61" src="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post2.png" alt="blog_post2" width="571" height="361" /></a></p>
 2.  In the <strong>New Project</strong> dialog box, click on <strong>Solidity</strong> under <strong>Installed Templates</strong>, and then select <strong>DecentralizedApplication</strong>.  Name the application, <strong>MyDecentralizedApp</strong>, and then click <strong>OK</strong>.
<p style="padding-left: 30px"> <a href="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post3.png"><img class="alignnone  wp-image-71" src="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post3.png" alt="blog_post3" width="685" height="473" /></a></p>
3.  Next you will see a few things happened.  A <strong>README</strong> document was opened in the Visual Studio main window and the project was setup with some folder and sample files.  The README explains how to setup a local keyserver in order to deploy smart contracts to a development blockchain instance.
<p style="padding-left: 30px">a. First download and install the latest version of <strong>bloc</strong> from Consensys.  To do this, open a cmd prompt, navigate to a directly where you would like to install the keyserver and run the following command:  <strong>npm install blockapps-bloc -g</strong></p>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post4.png"><img class="alignnone  wp-image-74" src="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post4.png" alt="blog_post4" width="501" height="406" /></a></p>
<p style="padding-left: 30px">b.  Next create the instance of <strong>bloc</strong> from the core by running the command:<strong> bloc init</strong>.<strong>  </strong>This will prompt you for some values that will be used the instance.  Enter a <strong>name</strong> of your choice, and user name, and accept the default for the apiUrl.  This is the ethereum node that will hold the actual blocks that your account/contracts will be deployed to.</p>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post5.png"><img class="alignnone  wp-image-84" src="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post5.png" alt="blog_post5" width="535" height="202" /></a></p>
<p style="padding-left: 30px">c.  Now change to that directory and install the required node packages by running the following command: <strong>cd &lt;appname&gt; &amp;&amp; npm install</strong></p>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post61.png"><img class="alignnone  wp-image-103" src="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post61.png" alt="blog_post6" width="533" height="160" /></a></p>
<p style="padding-left: 30px">d.  Finally you are ready to start the bloc instance by running the following command: <strong>bloc start</strong></p>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post7.png"><img class="alignnone  wp-image-113" src="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post7.png" alt="blog_post7" width="531" height="173" /></a></p>
4.  Now we have a keyserver running.  This local keyserver will run on port 8000 by default.  The Visual Studio extension is configured to use this server by default, with a user named: testuser and a password: testing.  You can view and edit these changes by running the following:
<p style="padding-left: 30px">a.  Right click the project in solution explorer.</p>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post8.png"><img class="alignnone  wp-image-123" src="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post8.png" alt="blog_post8" width="493" height="519" /></a></p>
<p style="padding-left: 30px">b.  The dialog here shows the configuration values that are set by default, and can be adjusted if needed. (they will not need to be adjusted in most cases)</p>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post9.png"><img class="alignnone  wp-image-132" src="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post9.png" alt="blog_post9" width="504" height="270" /></a></p>
 5.  At this point we have a <strong>keyserver</strong> running locally, now we have an endpoint that we can deploy our smart contracts to (as well as create new users).  So now we can get started with development of smart contracts.

&nbsp;

<hr />

&nbsp;
<h2>Working with Smart Contracts (authoring, compiling, deploying)</h2>
Now that the foundation is place, we can take a look at working with <strong>Smart Contracts</strong>.  By default a folder named <strong>samples </strong>will be created with some sample contracts already included.  When you are just getting started with Solidity, these are a great source of reference.
<p style="padding-left: 30px"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post10.png"><img class="alignnone  wp-image-141" src="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post10.png" alt="blog_post10" width="592" height="422" /></a></p>


<hr />

To get started, we can use the<strong> Payout.sol</strong> smart contract.  First, we can examine the contract in the Visual Studio code window.  When we are satisified with what we have authored, we can then compile this contract.  This compiliation will take place on the local machine.  The output from the compliation will be in the output window of Visual Studio,

<hr />

<h3>Compilation</h3>
<p style="padding-left: 30px">1.  Compile the smart contract</p>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post11.png"><img class="alignnone  wp-image-151" src="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post11.png" alt="blog_post11" width="565" height="577" /></a></p>
<p style="padding-left: 30px">2.  The output for the compilation is found in the output window.  If you don't see the output window in the lower part of your screen you can open from the View -&gt; Output menu (or Ctrl + W, O).  If there any errors with the compilation, it will be shown in the output window as well.</p>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post12.png"><img class="alignnone  wp-image-161" src="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post12.png" alt="blog_post12" width="618" height="394" /></a></p>


<hr />

<h3>Deployment</h3>
The deployment is nearly as simple as the compilation.  The deployment will send the smart contract to your local keyserver which will communicate with the underlying blockchain.  What is actually happening is this.
<p style="padding-left: 30px">1.  First, VS will use the project properties (shown earlier) to determine the bloc server to communicate with (url).</p>
<p style="padding-left: 30px">2.  Next VS will call this server, asking if the user in the project properties, exists.</p>
<p style="padding-left: 60px">a.  If it does exist, the address of the user will be returned to Visual Studio.</p>
<p style="padding-left: 60px">b.  If it doesn't exist, a new user will be created, and that address will be returned to Visual Studio.</p>
<p style="padding-left: 30px">3.  Next, VS will get the source for the contract, along with the address of the user and post this to the bloc server.</p>
<p style="padding-left: 30px">4.  Finally, your default browser will be opened to a dynamically created html page of the smart contract that was deployed.</p>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post13.png"><img class="alignnone  wp-image-171" src="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post13.png" alt="blog_post13" width="534" height="481" /></a></p>
<p style="padding-left: 30px">5.  When the browser opens, you can enter the password for the bloc server (default is <strong>testing</strong>).</p>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post14.png"><img class="alignnone  wp-image-181" src="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post14.png" alt="blog_post14" width="552" height="433" /></a></p>
<p style="padding-left: 30px">6.  You can then exercise the contract.  For example, you can send in a value in Ether by post 1 to the setup box.</p>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post15.png"><img class="alignnone  wp-image-183" src="https://msdnshared.blob.core.windows.net/media/2016/03/blog_post15.png" alt="blog_post15" width="550" height="393" /></a></p>


<hr />

<h2>Next Steps</h2>
At this point, congratulations, you have now entered the blockchain universe!  I will be posting some more tutorials to expand on this.

&nbsp;]]></content:encoded>
    </item>
  </channel>
</rss>