<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mike Plate</title>
	<atom:link href="http://www.mikeplate.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mikeplate.com</link>
	<description>.NET with an open mind</description>
	<lastBuildDate>Mon, 01 Feb 2010 20:26:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Show a context menu for long-clicks in an Android ListView</title>
		<link>http://www.mikeplate.com/show-a-context-menu-for-long-clicks-in-an-android-listview/</link>
		<comments>http://www.mikeplate.com/show-a-context-menu-for-long-clicks-in-an-android-listview/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 11:26:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[ContextMenu]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[ListView]]></category>
		<category><![CDATA[ListViewDemo]]></category>

		<guid isPermaLink="false">http://www.mikeplate.com/?p=246</guid>
		<description><![CDATA[Coming from a Windows and .NET background, I had some trouble understanding how to interact with the ListView control and context menu creation in Android. Context menus are supposed to be shown on your mobile device when you touch/click the screen and hold on for a longer time. So here is how to determine which [...]]]></description>
			<content:encoded><![CDATA[<p>Coming from a Windows and .NET background, I had some trouble understanding how to interact with the ListView control and context menu creation in Android. Context menus are supposed to be shown on your mobile device when you touch/click the screen and hold on for a longer time. So here is how to determine which item is long-clicked and how to show a context menu for it.<span id="more-246"></span></p>
<p>Source code for this blog post is available as a complete Eclipse project at<a title="Link to source code on Github" href="http://github.com/mikeplate/ListViewDemo"> http://github.com/mikeplate/ListViewDemo</a> (zip download link in upper right corner).</p>
<h2>An Activity with an expanding ListView and a docked TextView</h2>
<p>If you have an activity that will only contain a single ListView control, you can derive your activity from the ListActivity instead of Activity. However, I think I might like to show some extra info below my ListView so I chose to have a separate ListView object. My activity layout looks like this:</p>
<pre class="brush:xml;gutter:false">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical"
  &gt;
  &lt;ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="0px"
    android:layout_weight="1"
    /&gt;
  &lt;TextView
    android:id="@+id/footer"
    android:layout_width="fill_parent"
    android:layout_height="60dip"
    android:text="@string/footer"
    android:padding="4dip"
    android:background="#FF666666"
    /&gt;
&lt;/LinearLayout&gt;</pre>
<p>And I need the layout for items in the ListView (listitem.xml):</p>
<pre class="brush:xml;gutter:false">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;TextView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:textSize="24dip"
  android:padding="8dip"
  /&gt;</pre>
<p>Note a nice trick that I&#8217;ve used to get the TextView to &#8220;dock&#8221; at the bottom with a definied height, and have the ListView automatically fill out the rest of the height. This kind of thinking is important since Android devices can have different resolutions. The trick is to set the layout_height to zero pixels and the layout_weight to one (default is zero). Not sure about the logic behind that, but it works!</p>
<p><a href="http://www.mikeplate.com/wp-content/uploads/2010/01/ListViewDemo01.png"><img class="alignnone size-full wp-image-260" title="ListViewDemo01" src="http://www.mikeplate.com/wp-content/uploads/2010/01/ListViewDemo01.png" alt="Screen capture of a selected=" height="480" /></a></p>
<p>In order to have something to put into my ListView, I created a few country names in a string array as a resource and I sort that array before adding it to the ListView with the ArrayAdapter object. (Check out source code link above for this content.)</p>
<pre class="brush:java">public class ListViewDemoActivity extends Activity {
  private String[] Countries;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Countries = getResources().getStringArray(R.array.countries);
    Arrays.sort(Countries);

    ListView list = (ListView)findViewById(R.id.list);
    ArrayAdapter&lt;String&gt; adapter = new ArrayAdapter&lt;String&gt;(this, R.layout.listitem, Countries);
    list.setAdapter(adapter);
    registerForContextMenu(list);
  }
}</pre>
<h2>Creating a ContextMenu in Android</h2>
<p>When the user long-clicks, the event onCreateContextMenu is fired for the control that the user is clicking. For me, that is the ListView control. But since I don&#8217;t want to write a custom ListView-derived class, I want to catch that event in my activity. There does not seem to be any bubbling going on. Events fired in a child control does not bubble up to the parent if they are unhandled.</p>
<p>But obviously, the api designers have thought of this since there is a special method for this situation. Call the registerForContextMenu in your activity for this! This will actually make sure your overridden methods for both onCreateContextMenu and onContextItemSelected is called for the ListView-events as we&#8217;ll see soon.</p>
<p>Next, we&#8217;ll provide the implementation of onCreateContextMenu. Here I want to ensure that the event comes from the ListView and if so, I want to determine on which item in the ListView the user long-clicked.</p>
<pre class="brush:java">@Override
public void onCreateContextMenu(ContextMenu menu, View v,
    ContextMenuInfo menuInfo) {
  if (v.getId()==R.id.list) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
    menu.setHeaderTitle(Countries[info.position]);
    String[] menuItems = getResources().getStringArray(R.array.menu);
    for (int i = 0; i&lt;menuItems.length; i++) {
      menu.add(Menu.NONE, i, i, menuItems[i]);
    }
  }
}</pre>
<p>As you can see, the argument of type ContextMenuInfo can actually change depending on what type of control is sending the event. For ListViews, the class you need to type cast into is AdapterView.AdapterContextMenuInfo. From there I used the position, which in my case corresponds to the index into the string-array. From the array I retrieve the string for that particular item and use as title for the menu. Then you can of course add all the menu commands you like. For the demo, I defined another string array as a resource with the commands I want to add.</p>
<p>When creating the menu items with the add-call, I specify that I don&#8217;t want any grouping of the items (Menu.NONE) and that the order and id of the item is the same (i). The last argument to add is the text to display for the item.</p>
<p><a href="http://www.mikeplate.com/wp-content/uploads/2010/01/ListViewDemo02.png"><img class="alignnone size-full wp-image-262" title="ListViewDemo02" src="http://www.mikeplate.com/wp-content/uploads/2010/01/ListViewDemo02.png" alt="Screen capture of the context menu with commands" width="320" height="480" /></a></p>
<h2>Responding to selected MenuItem</h2>
<p>If the user dismisses the context menu (for instance, by back button) you don&#8217;t need to do anything. But for catching the actual selection of one of the items, you need to override onContextItemSelected.</p>
<pre class="brush:java">@Override
public boolean onContextItemSelected(MenuItem item) {
  AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
  int menuItemIndex = item.getItemId();
  String[] menuItems = getResources().getStringArray(R.array.menu);
  String menuItemName = menuItems[menuItemIndex];
  String listItemName = Countries[info.position];

  TextView text = (TextView)findViewById(R.id.footer);
  text.setText(String.format("Selected %s for item %s", menuItemName, listItemName));
  return true;
}</pre>
<p>The MenuItem argument holds all information that you need. The ContextMenuInfo object that got sent to onCreateContextMenu is still there and still needs type casting. Or I guess you could have saved that info in the activity between the calls, but I didn&#8217;t.</p>
<p>The id of the menu item selected is the same as the index into the string array of menu item texts for me. Instead of just outputting the menu command name and the list item text in a TextView, you would most likely have a big switch statement on menuItemIndex.</p>
<p>This was my first blog post and code demo for the Android platform. I hope it won&#8217;t be the last! The goal is to build upon this demo and/or other demos in my investigations of the Android platform. Please let me know in the comments if you have even better methods or code patterns that solves problems like this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeplate.com/show-a-context-menu-for-long-clicks-in-an-android-listview/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to connect to SkyDrive with WebDAV &#8211; and my Office 2010 awakening</title>
		<link>http://www.mikeplate.com/how-to-connect-to-skydrive-with-webdav/</link>
		<comments>http://www.mikeplate.com/how-to-connect-to-skydrive-with-webdav/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 20:33:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Office]]></category>
		<category><![CDATA[Windows Live]]></category>

		<guid isPermaLink="false">http://www.mikeplate.com/?p=179</guid>
		<description><![CDATA[Actually, I stumbled upon this when I decided to try out Office 2010 beta. I haven&#8217;t found any official documentation about how to connect to Windows Live SkyDrive with WebDAV (or any API), so I&#8217;m not sure how well supported this will be in the future. If you find any word about this from Microsoft, [...]]]></description>
			<content:encoded><![CDATA[<p>Actually, I stumbled upon this when I decided to try out Office 2010 beta. I haven&#8217;t found any official documentation about how to connect to Windows Live SkyDrive with WebDAV (or any <a title="Explanation about API from Wikipedia" href="http://en.wikipedia.org/wiki/Application_programming_interface">API</a>), so I&#8217;m not sure how well supported this will be in the future. If you find any word about this from Microsoft, please let me know in the comments. The good news is that it works. The bad news is that it is very slow, but being 25 GB for free I guess you get what you pay for speed-wise (understandably).<span id="more-179"></span></p>
<p><span style="color: #888888;">[Update: New info about a tool I wrote to find out the addresses for WebDAV discussed below]</span></p>
<p>There is now a tool available that can determine the addresses you need for your WebDAV access to SkyDrive. <a href="http://skydrivesimpleviewer.codeplex.com/">It is available on CodePlex here</a>. You can download the console application and run it from a command line. There is also a <a href="http://windowsclient.net/wpf/">WPF</a> application (seen below) if you have the latest version of .NET 3.5 SP1. More info in CodePlex site. But read the background below to know how I got there and what to do with the information that the tool provides.</p>
<p><a href="http://www.mikeplate.com/wp-content/uploads/2010/01/SkyDriveSimpleViewer-Dump.png"><img class="alignnone size-full wp-image-287" title="SkyDriveSimpleViewer-Dump" src="http://www.mikeplate.com/wp-content/uploads/2010/01/SkyDriveSimpleViewer-Dump.png" alt="Showing how to determine WebDAV address with WPF application" width="525" height="300" /></a></p>
<p>But let me start at the beginning with a brief introduction to Office 2010 beta. If you find this boring, scroll down to <a href="#steps">here</a>.</p>
<h2>Microsoft Office 2010 and installing the beta</h2>
<p>I had actually decided to part from Microsoft Office in favor of more lightweight applications like Google Docs and OpenOffice. For two reasons: price and size. So I haven&#8217;t installed Office 2007 on any of my newer computers or laptops for the last six months or so in order to ensure that I don&#8217;t need it anymore and I have gotten by pretty well.</p>
<p>The application I&#8217;ve missed the most is probably Outlook. At the same time it is the application where the hate/love relationship is the greatest. I really like working with it but at the same time it feels way too big, bulky and complex for something that should be simple: mail and calendar (the way I see it). Too much <a href="http://support.microsoft.com/kb/200018">MAPI</a> baggage I think.</p>
<p>Then I listened to <a href="http://twit.tv/ww132">Windows Weekly with Paul Thurrott</a> about a new installation option for Office 2010 beta. It is called Click-To-Run and sounded interesting since it uses an application virtualization technology called <a title="Information from Microsoft about their App-V technology" href="http://www.microsoft.com/systemcenter/appv/default.mspx">App-V</a> that means that you can install and run the application side by side with whatever you have on your computer without risking changing any system settings (which especially affects Outlook, had I had Outlook 2007 installed).</p>
<p>I decided to give Office 2010 an extra chance and now I&#8217;m glad I did. Not only for discovering WebDAV access to <a title="Start page for the SkyDrive service" href="http://skydrive.live.com/">SkyDrive</a>. Everyone can download, install and use Office 2010 beta until october 2010 when it expires, but you do need a Windows Live ID.</p>
<p>Of course, there are a hundred-and-one <a href="http://www.mydigitallife.info/2009/11/16/microsoft-office-2010-suites-sku-edition-applications-inclusion-details/">SKUs</a> (different packing of included applications etc) to choose from for Office 2010 also. No, I shouldn&#8217;t be so sarcastic about that since it does mean that if you don&#8217;t need everything in the full suite you will be able to get it for a lower price. But it is a pain to keep track of all the combinations.</p>
<p>What I&#8217;m getting to is that Click-To-Run only seems to be available for the &#8220;Home and Business&#8221; SKU, at least during the beta period. So go and <a href="http://us20.office2010beta.microsoft.com/product.aspx?sku=10199928">download and install it here</a> (requires registration via a Windows Live ID). The installation experience was smooth but a little weird. You see, Click-To-Run also has some sort of streaming built in so that different parts are downloaded when needed. In practice this meant that it looked as though only PowerPoint was installing since that was the screen shown during most of the installation. But I realized that was because an introductory PPT-file is automatically shown as the first thing after installation. Also, beware that one (or two?) dialogs didn&#8217;t activate as the topmost window and therefore I missed answering them (which is why the installation seemed to be stuck for a while).</p>
<p>One great thing about configuring Outlook 2010 that really impressed me was that I only had to specify my e-mail address for Outlook to figure out on which server my mail was located and by which access method it could connect. Maybe I shouldn&#8217;t be impressed since it usually is that easy for ordinary POP3/IMAP access, but still &#8211; a great improvement that has awakened my interest in Microsoft Office.</p>
<p>Another thing I like already is that the big circle button in the top left corner of the window is gone and has been replaced by a File tab (albeit a &#8220;special&#8221; tab) . That makes the interface much more uniform &#8211; a strip of tabs &#8211; and maybe even I can find the ribbon likable&#8230;</p>
<h2>Microsoft Office 2010 and the web</h2>
<p>The first thing that interested me, and that led to the discovery of WebDAV for SkyDrive was &#8220;Save to SkyDrive&#8221;. Yes I know &#8211; get to the point!! &#8211; not yet&#8230;</p>
<p>Paul Thurrott mentioned this feature in the netcast and it was the first thing I tried. Under the File tab and the Share menu option you&#8217;ll find &#8220;Save to SkyDrive&#8221;. Of course, I assume you already have a SkyDrive account so just login and you will be presented with your folders.</p>
<p><img class="alignnone size-full wp-image-189" title="Office2010-1" src="http://www.mikeplate.com/wp-content/uploads/2010/01/Office2010-12.png" alt="Office 2010 and Save to SkyDrive option" width="520" height="371" /></p>
<p>The next step in this screen dump is to double click the Public folder. Note however that this is really slow (for me, at least) and that Excel is unresponsive for a minute or two. Lets hope we can attribute this to beta software. Have patience, and you will (hopefully) be prompted with a dialog box to specify the file name, which is also what gave the WebDAV functionality away.</p>
<p><a href="http://www.mikeplate.com/wp-content/uploads/2010/01/Office2010-2.png"><img class="alignnone size-full wp-image-192" title="Office2010-2" src="http://www.mikeplate.com/wp-content/uploads/2010/01/Office2010-2.png" alt="Dialog box asking for a file name" width="520" height="386" /></a></p>
<p>Also, before this dialog box appeared, the status bar gave away an address. I have removed the part that is unique to every user below (a <a title="Text from Wikipedia about guids" href="http://en.wikipedia.org/wiki/Globally_Unique_Identifier">guid</a>), and changed it in the screen dump above.</p>
<p><a href="http://www.mikeplate.com/wp-content/uploads/2010/01/Office2010-3.png"><img class="alignnone size-full wp-image-193" title="Office2010-3" src="http://www.mikeplate.com/wp-content/uploads/2010/01/Office2010-3.png" alt="Status bar in Office specifying the address" width="520" height="33" /></a></p>
<p>Nice! My conclusion was that Office 2010 must be using WebDAV for this so I had to investigate this further.</p>
<p>Another surprise was that SkyDrive in the browser will obviously support Office Web Applications, which means that you can view and even edit the documents right there in your favorite browser (which is Firefox, of course). At the moment, you can only view Word documents, but you can actually edit Excel spreadsheets. Excel editing looks really nice and is really hard to separate from the real application visually, however it does not seem to have a lot of functionality. I couldn&#8217;t find copy-down for instance. It remains to be seen just how much functionality will be available, but it would be strange if Microsoft didn&#8217;t try to at least match Google Docs Spreadsheets.</p>
<h2><a name="steps">Steps</a> to access SkyDrive folders with WebDAV in Windows Explorer</h2>
<p>So, with this new information, here are the steps to connect to SkyDrive folders using WebDAV and get access to their contents in Windows Explorer. Note that I&#8217;m using Windows 7 (64-bit) and I don&#8217;t know if this works in older Windows versions.</p>
<p><span style="color: #888888;">[Update: I first thought that you could access SkyDrive folders without the sub domain mentioned above. That is probably not the case, so I've revised my instructions.]<br />
</span></p>
<p>In order to determine what path to specify in Windows when connecting via WebDAV, you either need to run my tool or use Office 2010. If using Office 2010, create a document and share it to SkyDrive as described above. When saving the document and specifying its file name, you have the chance to look at the address bar and copy the path, in my example:</p>
<p>https://pxeptc.docs.live.net/b8c6f2e973a17512/^2Public</p>
<p>Actually, the folder name &#8220;b8c6f2e973a17512&#8243; in the path is the same as a personal sub domain when logging on to SkyDrive the normal way from your web browser. It can look like &#8220;http://cid-b8c6f2e973a17512.skydrive.live.com/&#8221;.</p>
<p>The sub domain &#8220;pxeptc&#8221; in my example is something derived from your SkyDrive account and the specific SkyDrive folder you want to access via WebDAV. So for every folder in SkyDrive that you want to access via WebDAV, you have to share a document from inside Office 2010 to determine this name.</p>
<p>In developing my tool, I saw that Office calls a web service to determine the WebDAV addresses for each folder in your SkyDrive account. That web service is located at http://docs.live.net/SkyDocsService.svc but you can&#8217;t access it in your browser since it requires a Live ID authentication token. (My tool fixes that.)</p>
<p>Also, some folders are special and &#8220;known&#8221; to the system much like &#8220;My Documents&#8221; on your computer. That means that their name is not the same as on the web page in SkyDrive. I have identified two such folders that I have. In SkyDrive they are called &#8220;Public&#8221; and &#8220;My Documents&#8221;, but in WebDAV they are called &#8220;^2Public&#8221; and &#8220;^2Documents&#8221;.</p>
<p>Also note that Windows recognize another way to specify this address which I think is interpreted in the same way. So the following two addresses would be equivalent:</p>
<p>https://pxeptc.docs.live.net/b8c6f2e973a17512/^2Public</p>
<p>\\pxeptc.docs.live.net@SSL\b8c6f2e973a17512\^2Public</p>
<p>To increase speed you should also make sure the following option is unchecked in Windows (if you don&#8217;t need it):</p>
<p>Control Panel, Internet Options, Connections, LAN Settings, Automatically detect settings</p>
<h2>Conclusions</h2>
<p>That&#8217;s it! Of course the maximum size of a single file is still enforced (I just had to try&#8230;). Unfortunately I don&#8217;t think this will work in other operating systems. I assume that the WebDAV part is used according to the standard, so that should not be a problem. However, I did notice when looking closer at the http communication that the server wants to authenticate with Passport1.4 (<a title="Technical documentation for MS-PASS protocol" href="http://msdn.microsoft.com/en-us/library/cc238215%28PROT.13%29.aspx">MS-PASS</a>) which is Microsoft specific and I doubt that would work on Mac or Linux?</p>
<p>Also, it is very slow. Sure, you get what you pay for, but maybe there will be more (payment) options with SkyDrive in the future now that the sharing functionality from Office 2010 has been implemented. I don&#8217;t think I would mind paying if the speed was there.</p>
<p>I suspect Microsoft has something up their sleeve when it comes to &#8220;storage drives in the cloud&#8221; (duh! <img src='http://www.mikeplate.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). Right now they have been silent for quite some time. I use another service, namely <a href="http://www.mesh.com">Live Mesh</a>, for file synchronization. It works great (5 GB limit), but it has been in beta for long now and Microsoft has discontinued all the developer stuff (sdks) for that service and for all or most of Live Services also I think. They are obviously up to something.</p>
<p>Unfortunately, there is no caching of files accessed over WebDAV. Windows has a built in system for remote access of files on remote locations called &#8220;Offline files&#8221;, but it only works on true Windows paths (SMB) and not WebDAV. At least not that I know of. Therefore you probably want to save to local disk and use a synchronization application to put your files on SkyDrive.</p>
<p>For me as a developer the most important part of this story is that there now is an api for SkyDrive access where there was none previously. Not counting the screenscraping way of the <a title="SkyDrive client library on Codeplex" href="http://skydriveapiclient.codeplex.com/">SkyDrive client library</a> by ghollosy on Codeplex. It worked great when I tried it, but I don&#8217;t like to be in the hands of the web browser user interface on the site in case that changes (more of a &#8220;when&#8221;, than &#8220;if&#8221;?).</p>
<h2>Additional information about photos</h2>
<p>In my SkyDrive account I also have photos. They are obviously not exactly the same thing as a folder. I think they are somehow integreated with Windows Live Photos or whatever the branding is. Maybe you can have Windows Live Photos in your Windows Live account without having a SkyDrive folder account?</p>
<p>Anyway, I also discovered that this WebDAV access works with photos but I haven&#8217;t found a way to determine the sub domain needed for all my photo folders. However, if you have the name of a photo folder, I got Windows Explorer to do a redirect and tell me the name.</p>
<p>I just followed the pattern above and replaced the last part such as &#8220;^2Documents&#8221; with the exact name of one of my photo folders. And what do you know? Windows Explorer took a few seconds but then redirected to a sub domain under docs.live.net and there were all my photos in that folder!</p>
<h2><a name="screendumps">How</a> to set up WebDAV in Windows Explorer</h2>
<p>If you need more specifics about how to create the WebDAV connection in Windows Explorer, here are the screendumps.</p>
<p>First, right-click on Network icon in Windows Explorer and select &#8220;Map network drive&#8230;&#8221;.</p>
<p><a href="http://www.mikeplate.com/wp-content/uploads/2010/01/Office2010-4.png"><img class="alignnone size-full wp-image-200" title="Office2010-4" src="http://www.mikeplate.com/wp-content/uploads/2010/01/Office2010-4.png" alt="Select Map Network Drive in Windows Explorer" width="433" height="491" /></a></p>
<p>This dialog box will be shown:</p>
<p><a href="http://www.mikeplate.com/wp-content/uploads/2010/01/Office2010-5.png"><img class="alignnone size-full wp-image-201" title="Office2010-5" src="http://www.mikeplate.com/wp-content/uploads/2010/01/Office2010-5.png" alt="Click on link" width="471" height="345" /></a></p>
<p><span style="color: #ff99cc;">[Update: I previously had several screen dumps here, going through the whole wizard, but I later found out that as long as you map a drive letter at the same time, you can do it all from this single dialog box.]</span></p>
<p>Type in the path to the SkyDrive folder that you want access to in the &#8220;Folder&#8221; field. You can use either the https path or the \\ path. For instance:</p>
<p>\\pxeptc.docs.live.net@SSL\DavWWWRoot\b8c6f2e973a17512\^2Documents</p>
<p><a href="http://www.mikeplate.com/wp-content/uploads/2010/01/Office2010-121.png"><img class="alignnone size-full wp-image-272" title="Office2010-12" src="http://www.mikeplate.com/wp-content/uploads/2010/01/Office2010-121.png" alt="Dialog box with filled in path" width="457" height="335" /></a></p>
<p>Windows will ask for your SkyDrive login either way, but you should also check the option &#8220;Connect using different credentials&#8221;. You don&#8217;t have to check &#8220;Reconnect at logon&#8221; of course, but then you have to remember the path the next time you need access. It may be a bit irritating to have the SkyDrive mapped on every boot since Windows probably will complain that it could not attach the mapped drive (if you don&#8217;t store the password permanently).</p>
<p>Click Finish and after typing your SkyDrive user name and password you are done.</p>
<p><a href="http://www.mikeplate.com/wp-content/uploads/2010/01/Office2010-13.png"><img class="alignnone size-full wp-image-273" title="Office2010-13" src="http://www.mikeplate.com/wp-content/uploads/2010/01/Office2010-13.png" alt="Dialog box asking for user name and password" width="329" height="196" /></a></p>
<p><a href="http://www.mikeplate.com/wp-content/uploads/2010/01/Office2010-Orig15.png"><img class="alignnone size-full wp-image-274" title="Office2010-Orig15" src="http://www.mikeplate.com/wp-content/uploads/2010/01/Office2010-Orig15-e1264101524431.png" alt="Showing the new drive in Explorer left pane" width="204" height="113" /></a></p>
<p>Remember that file access to a remote location using WebDAV probably is a lot slower than local file access in all cases, and especially slow on SkyDrive. Don&#8217;t be surprised if your waiting time increases when saving files etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeplate.com/how-to-connect-to-skydrive-with-webdav/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Scott Guthrie in Stockholm</title>
		<link>http://www.mikeplate.com/scott-guthrie-in-stockholm/</link>
		<comments>http://www.mikeplate.com/scott-guthrie-in-stockholm/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 20:27:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Conference]]></category>

		<guid isPermaLink="false">http://www.mikeplate.com/?p=163</guid>
		<description><![CDATA[Scott Guthrie&#8217;s first visit to Sweden was of course nothing I was going to miss. It sounded especially interesting since the top was Visual Studio 2010, ASP.NET 4.0 and Silverlight 4.0, none of which I thought had gotten due attention at TechEd Europe in Berlin last month. This is the man that co-invented ASP.NET and [...]]]></description>
			<content:encoded><![CDATA[<p>Scott Guthrie&#8217;s first visit to Sweden was of course nothing I was going to miss. It sounded especially interesting since the top was Visual Studio 2010, ASP.NET 4.0 and Silverlight 4.0, none of which I thought had gotten due attention at TechEd Europe in Berlin last month. This is the man that co-invented ASP.NET and more recently the MVC framework on top of ASP.NET. Would he wear that red tennis t-shirt that has become his signature? Yes! And the presentation was well worth waiting for also. <span id="more-163"></span></p>
<h2>Visual Studio 2010</h2>
<p>Scott showed quite a lot of enhancements in VS2010 that I was not aware of, and that I&#8217;m sure I will use a lot in the future.</p>
<ul>
<li>Scott used the source code for MVC to show off some code navigation techniques.</li>
<li>Multimonitor support now means that you can drag tool windows out of VS main window an on to another monitor.</li>
<li>When selecting a variable, all other usages of that variable are also lightly highlighted.</li>
<li>Intellisense filtering means that what you type does not have to be the beginning of the class/method.</li>
<li>Intellisense is also smart about camel and pascal casing in members, so that you can use the abbreviation consisting of all first letters. Example: you can insert a call to GetParamValue by just typing GPV.</li>
<li>New dialog &#8220;Navigate to&#8221; with shortcut Ctrl+, [not sure exactly what the advantage is]. New intellisense features work here too.</li>
<li>View Call Hierarchy is a new command to not only view all calls to a specified method (via view all references) but also view what methods call those methods and so on up the call tree. Great feature!</li>
<li>Generate Sequence Diagram is a new command to generate a visual representation of the method calls. Looked quite complex (visually) so I&#8217;m not sure how much value this will be. But you can also draw/comment on top of that visual interface so could maybe be good for code reviews? Got applause from the audience.</li>
<li>Vertical selection by holding down the Alt key and selecting with the mouse is nothing new, but now, I you start typing, you can also replace all selected row-columns with what you type. Got laughs from the audience.</li>
<li>Snippets now supported in html editor. Almost all asp.net controls now have snippet with some default attribute values. Type &#8220;runat&#8221; and then tab, tab, and you don&#8217;t have to type &#8220;server&#8221;. Also supported in javascript files (with tab between placeholders and so on).</li>
<li>There will be (is?) an online gallery of snippets.</li>
<li>Intellitrace is a new feature while debugging. Is a tool window with messages about what has happened during the debugging so far. Not just a call stack, but trace messages such as a certain event has been fired.</li>
<li>Debugging now also supports going backward! If you&#8217;ve debugged past some place, you can now step back line by line and restore the executing context back in time. Great feature!</li>
<li>If running a crashing application on a remote machine, you can start that application with a special tool that will dump everything about the execution into a file which you can later load in your debugging environment and see what actually happened. Not sure exactly how much info is contained. I guess you can&#8217;t set breakpoints anywhere in the execution context before the crash/exception actually happened? Also called the &#8220;Flight recorder feature&#8221;. Can also include video recordings of the screen before the crash and have the crash dump attached.</li>
</ul>
<h2>ASP.NET 4 (and more)</h2>
<p>ASP.NET also has some really good improvements, although maybe not as surprising as the Visual Studio ones.</p>
<ul>
<li>.NET 4 is a side-by-side release, which means that it does not replace any existing .NET files. This was also the case when .NET 2.0 was released and could exist side-by-side with .NET 1.1. .NET 4 is however also backwards compatible and should be able to run all 2.0, 3.0, 3.5 code. After install, IIS has separate application pool for .NET 4.</li>
<li>New project types &#8220;Empty&#8221; that does not contain any sample/starter files.</li>
<li>Cleaner web.config (second element in beta 2 will go away in release version).</li>
<li>Separate configuration in files such as web.debug.config and web.release.config.</li>
<li>Cleaner html for all controls. No inline styles from controls (if not explicitly set).</li>
<li>ClientIDMode new attribute on controls to better control the id of the resulting html element.</li>
<li>Better control over ViewState, app/page level per control (type?).</li>
<li>VS2010 designer supports CSS 2.1.</li>
<li>URL Routing support. Set in Application_Start: RouteTable.Routes.MapPageRoute. Answer to question about routing configuration was negative (not supported in product &#8211; but third party code exists [of course]).</li>
<li>Meta-tag api for setting Page.Description and Page.Keywords (for instance, in master/content pages).</li>
<li>New Response-methods RedirectPermanent (301) and RedirectToRoute.</li>
<li>IIS SEO Toolkit is downloadable and installs in IIS Manager where you can run an analysis of how seo-friendly a site is. The analyzed site does not have to be in IIS &#8211; can be any site. (Strage placement of the tool, then?)</li>
<li>Chart controls included.</li>
<li>QueryExtender control for help with sorting and filtering in the user interface of queries from the server.</li>
<li>Dynamic Data has lots of features.</li>
<li>Web form controls data validation can look at data model attributes to perform its validation.</li>
<li>Scott does not run the ADO.NET framework team, but some news nonetheless: Model first, Lazy loading, Plural/singular, Foreign keys, T4 templates, Disconnected api.</li>
<li>VS2010 JavaScript intellisense improved. Extremely impressive handling of interpreting code such as setting a window variable one way, and listing it in intellisense list thereafter. Example: window["Test"] = &#8220;x&#8221; means that the variable Test will be known as window variable and presented in intellisense drop down in that context.</li>
<li>CDN (Content Delivery Network) hosting available for Microsoft Ajax Library and jQuery.</li>
<li>VS environment profile &#8220;Web Development Code Optimized&#8221; where design-tab for aspx-files has been removed (among other things). Can also be set from Tools, Options.</li>
<li>ASP.NET Core is the name for the parts that ASP.NET WebForms and ASP.NET MVC share.</li>
<li>AppFabric for your Windows Servers will ship next year and includes Velocity for memory caching. Interesting, haven&#8217;t heard about Velocity in quite some time!</li>
<li>&lt;%: str %&gt; automatic html encoding.</li>
</ul>
<h2>MVC</h2>
<p>With MVC, Scott takes a little bit more time to explain the basics. From an audience poll it is evident that the previous experience of MVC is very different amongst the people in the audience.</p>
<ul>
<li>VS2010 uses templates according to the T4 templating engine a lot, which includes MVC.</li>
<li>Normal sequence is to first add a controller and than a view.</li>
<li>Routing rule sample &#8220;/Browse/{category*}&#8221;, the * means that everything after &#8220;/Browse/&#8221; will be included in parameter &#8220;category&#8221; value.</li>
<li>Create view dialog box has drop down for different views, which are generated by T4 templates.</li>
<li>Other http verbs such as [HttpDelete] for an action method can be simulated in a web form by a hidden field (automatically).</li>
<li>Data annotation can be used in the model to specify validation rules. Found in namespace System.ComponentModel.DataAnnotation.</li>
<li>[Required]</li>
<li>[Required(Message="Must type")] &#8211; can localize messages in resource. [How to do it if you want to store translations in database?]</li>
<li>Html.ValidationMessageFor specifies the place to put the validation error message in html.</li>
<li>Html.EnableClientValidation inserts javascript in page that performs the same validation on the client side.</li>
<li>Client side validation has support for calling web service for validation.</li>
<li>Validation rules does not have to be attributes in the data model. Can be pulled from anywhere, like xml files. Brad Wilson has sample (blog post?).</li>
<li>Html.EditorFor and Html.DisplayFor can output complete display/form. Takes lambda expression to specifiy the field to generate html for.</li>
<li>Demoing putting Product.ascx in EditorTemplates folder for customization of Html.EditorFor.</li>
<li>[UIHint("name")] on CategoryId field can be used to accomplish drop down list for a foreign key.</li>
<li>Areas new feature: encapsulation of controllers, models and views.</li>
<li>Asynchronous controllers.</li>
<li>&#8220;Unit testing is about confidence to add features&#8221; (not only catching bugs).</li>
<li>Demoing unit test with pattern Arrange, Act, Assert (what to do in the unit test method).</li>
<li>Uses a &#8220;fake&#8221; to factor out database dependency in unit test (doesn&#8217;t work correctly).</li>
<li>TDD (Test Driven Development) support in VS2010 via a few features: consume first intellisense can be turned on with Ctrl+Shift+Space [I think], where intellisense does not &#8220;get in the way&#8221; when typing code for classes and methods that does not exist yet.</li>
<li>Generate Class From Usage command. [Did however not generate the method for which there was a call.]</li>
<li>MVC has a controller factory pattern [no details].</li>
<li>For BDD (Behavior Driven Design) third party frameworks exist (nothing in VS).</li>
</ul>
<p>T4 is interesting and should be looked at more closely to adjust how what autogenerated code actually contains. As someone in the audience pointed out, however, the tooling support in VS for T4 is very (very) low. Not even color coding of T4 (&#8220;.tt&#8221;) files!</p>
<h2>Silverlight 4</h2>
<p>The Silverlight talk was the last of the day and did not contain that much demos or code. In fact, Scott talked quite a lot about already built Silverlight apps and sites using Silverlight. It was more about the end result, than on details on how to get there. But interesting nonetheless.</p>
<ul>
<li>Microsofts programs for developers to get application licenses: BizSpark, WebsiteSpark (websitespark.com).</li>
<li>Expression 3 Blend contains Sketchflow. Sketchflow Player shortly demoed. Impressive annotation capabilities, for instance when showing a sketch to a customer. Can save to Word document. Even used by some Flash agencies, so it seems Sketchflow is the first Microsoft application to make it into the visual designer space?</li>
<li>Sunday night football player is impressive Silverlight application for controlling live tv on your own. Source code available on CodePlex.</li>
<li>Bloomberg other company that builds on Silverlight.</li>
<li>Demoing Webcam capabilities with a Silverlight app (name &#8220;archetype&#8221;??). The same as he did in the PDC keynote with funny snapshot of his forehead.</li>
<li>IIS Media Services can be installed via Web Platform Installer.</li>
<li>IIS Smooth Streaming can adjust bitrate according to network and local cpu utilization.</li>
<li>Other areas with new support in Silverlight 4:</li>
<li>Printing</li>
<li>Rich text (showed a nice Silverlight Text Editor &#8211; source code?)</li>
<li>Clipboard</li>
<li>Right click [wasn't aware that this was missing]</li>
<li>Mouse wheel</li>
<li>Drag and drop between Silverlight and operating system.</li>
<li>Html control &#8211; can be used as a brush &#8211; showing demo (also from PDC) with Rick Astley on youtube and with the video still running after html control has been split up into puzzle pieces. However, I dont&#8217;t think you can interact with the html surface in that way?</li>
<li>Shared binary assemblies between .NET and Silverlight (no recompilation).</li>
<li>UDP, REST, WCF RIA Services.</li>
<li>Elevated trust: windowing with custom chrome.</li>
<li>Running code twice as fast as Silverlight 3.</li>
<li>Profiling support.</li>
<li>Silverlight feature voting on User Voice.</li>
<li>Release Candidate in early 2010, final release later [dare we guess at Mix10?]</li>
</ul>
<p>In a response to a question about Silverlight versus WPF, Scott saids that there is a new Office app coming out that is built on WPF. No more details though.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeplate.com/scott-guthrie-in-stockholm/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>First investigation of Windows Azure</title>
		<link>http://www.mikeplate.com/first-investigation-of-windows-azure/</link>
		<comments>http://www.mikeplate.com/first-investigation-of-windows-azure/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 20:01:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.mikeplate.com/?p=152</guid>
		<description><![CDATA[So I have finally found some time to experiment with Windows Azure. My starting-point is that I&#8217;m a freelance developer that needs hosting services in order to try out several different ideas of my own.
I first wanted to get a better understanding of what a virtual machine looks like in Windows Azure. What is it [...]]]></description>
			<content:encoded><![CDATA[<p>So I have finally found some time to experiment with Windows Azure. My starting-point is that I&#8217;m a freelance developer that needs hosting services in order to try out several different ideas of my own.</p>
<p>I first wanted to get a better understanding of what a virtual machine looks like in Windows Azure. What is it exactly? I know it&#8217;s a Microsoft Windows Server box running on Hyper-V, at least that is what Microsoft has told me. But then what? Read on to discover some of my findings. Note, however, that I&#8217;m not an expert and I&#8217;m sure that some of my findings and questions could be answered by reading documentation somewhere but I like to get my hands dirty by looking under the hood.<span id="more-152"></span></p>
<h2>Operating System Environment</h2>
<p>My virtual machine (vm) in Windows Azure is running the following version of Windows::</p>
<p style="padding-left: 30px;">Microsoft Windows NT 6.0.6002 Service Pack 2</p>
<p>Which translate to the marketing name of &#8220;Windows Server 2008&#8243;, that is NOT R2 (yet, anyway).</p>
<p>Also, it is running:</p>
<p style="padding-left: 30px;">Microsoft.NET version 2.0.50727.4016</p>
<p>I have a <a href="http://msdn.microsoft.com/en-us/library/ee814754.aspx">Small VM</a> and therefore should have 1,7 Gb of memory in total, which I also verified and got the exact number back:</p>
<p style="padding-left: 30px;">1,877,766,144 bytes of total memory</p>
<p>Not that it matters but I also found my machine name to be &#8220;RD00155D3141A4&#8243; and part of the domain &#8220;CIS&#8221;.</p>
<h2>File System Organization</h2>
<p>The organization of the file system is more interesting. On a newly created vm and deployed web role I can see three drives:</p>
<p style="padding-left: 30px;">C: has a total of 225 GB of which 218 GB are free<br />
D: has a total of 16 GB of which 8 GB are free<br />
E: has a total of 1 GB of which almost all are free</p>
<p>After investigating their contents I can determine that D: has the installed operating system with the usual &#8220;Program Files&#8221; and &#8220;Windows&#8221; folders. E: has my deployed web role in the E:\approot folder and just some additional support/config folders and files (I assume!).</p>
<p>The C: drive is the stranger drive. It has a &#8220;dumpfile.dmp&#8221; and a &#8220;pagefile.sys&#8221; file which I recognize as Windows files. There are also folders with names such as &#8220;Applications&#8221;, &#8220;Config&#8221;, &#8220;MOSLogs&#8221;, &#8220;OS&#8221;, &#8220;Packages&#8221;, &#8220;Resources&#8221; and the known &#8220;System Volume Information&#8221;. Some are empty but not all (I&#8217;ll get back to that.</p>
<p>When I upgrade my web role with some changed code, the E: drive is kept an F: drive appears. So it looks like at least a few versions of deployed roles will be kept at different drive letters.</p>
<p>The <a href="http://msdn.microsoft.com/en-us/library/ee814754.aspx">different vm sizes</a> specifies that I should have 250 Gb of storage for &#8220;Disk Space for Local Storage Resources&#8221; so this must be the C drive. I don&#8217;t have write access to all of it though, but I probably just haven&#8217;t found where you are supposed to put such files. In any event, I assume that you must be prepared for that storage to vanish at any given moment. For sure if you delete and recreate your vm.</p>
<h2>Processes</h2>
<p>I have also tried to enumerate all running processes in the machine and I ended up with the following list:</p>
<table border="0">
<thead>
<tr>
<th>id</th>
<th>name</th>
<th>path</th>
<th align="right">MB</th>
<th>start time</th>
<th>cpu time</th>
</tr>
</thead>
<tbody>
<tr>
<td>2352</td>
<td>clouddrivesvc</td>
<td>Access is denied</td>
<td align="right">5</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>456</td>
<td>csrss</td>
<td>Access is denied</td>
<td align="right">5</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>496</td>
<td>csrss</td>
<td>Access is denied</td>
<td align="right">5</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>0</td>
<td>Idle</td>
<td>Unable to enumerate the process modules.</td>
<td align="right">0</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>1968</td>
<td>LogonUI</td>
<td>Access is denied</td>
<td align="right">15</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>592</td>
<td>lsass</td>
<td>Access is denied</td>
<td align="right">11</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>600</td>
<td>lsm</td>
<td>Access is denied</td>
<td align="right">6</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>2772</td>
<td>MonAgentHost</td>
<td>E:\diagnostics\x64\monitor\MonAgentHost.exe</td>
<td align="right">14</td>
<td>11/29/2009 3:40:48 PM</td>
<td>00:00:00.1718750</td>
</tr>
<tr>
<td>2504</td>
<td>msdtc</td>
<td>Access is denied</td>
<td align="right">8</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>1212</td>
<td>osdiag</td>
<td>Access is denied</td>
<td align="right">6</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>1876</td>
<td>rdagent</td>
<td>Access is denied</td>
<td align="right">23</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>580</td>
<td>services</td>
<td>Access is denied</td>
<td align="right">6</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>260</td>
<td>SLsvc</td>
<td>Access is denied</td>
<td align="right">11</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>392</td>
<td>smss</td>
<td>Access is denied</td>
<td align="right">1</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>1252</td>
<td>svchost</td>
<td>Access is denied</td>
<td align="right">3</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>2088</td>
<td>svchost</td>
<td>Access is denied</td>
<td align="right">6</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>1360</td>
<td>svchost</td>
<td>Access is denied</td>
<td align="right">6</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>296</td>
<td>svchost</td>
<td>Access is denied</td>
<td align="right">8</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>1280</td>
<td>svchost</td>
<td>Access is denied</td>
<td align="right">12</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>1376</td>
<td>svchost</td>
<td>Access is denied</td>
<td align="right">3</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>844</td>
<td>svchost</td>
<td>Access is denied</td>
<td align="right">7</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>404</td>
<td>svchost</td>
<td>Access is denied</td>
<td align="right">7</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>940</td>
<td>svchost</td>
<td>Access is denied</td>
<td align="right">19</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>224</td>
<td>svchost</td>
<td>Access is denied</td>
<td align="right">13</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>416</td>
<td>svchost</td>
<td>Access is denied</td>
<td align="right">31</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>776</td>
<td>svchost</td>
<td>Access is denied</td>
<td align="right">7</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>1232</td>
<td>svchost</td>
<td>Access is denied</td>
<td align="right">6</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>708</td>
<td>svchost</td>
<td>Access is denied</td>
<td align="right">10</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>4</td>
<td>System</td>
<td>Unable to enumerate the process modules.</td>
<td align="right">8</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>1808</td>
<td>vds</td>
<td>Access is denied</td>
<td align="right">8</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>1164</td>
<td>vmicsvc</td>
<td>Access is denied</td>
<td align="right">5</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>1152</td>
<td>vmicsvc</td>
<td>Access is denied</td>
<td align="right">4</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>2056</td>
<td>WaWebHost</td>
<td>E:\base\x64\WaWebHost.exe</td>
<td align="right">95</td>
<td>11/29/2009 3:40:33 PM</td>
<td>00:00:16.9531250</td>
</tr>
<tr>
<td>504</td>
<td>wininit</td>
<td>Access is denied</td>
<td align="right">5</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
<tr>
<td>532</td>
<td>winlogon</td>
<td>Access is denied</td>
<td align="right">5</td>
<td>Access is denied</td>
<td>Access is denied</td>
</tr>
</tbody>
</table>
<p>Not that interesting perhaps, but I can determine that my deployed web role has spawn the WaWebHost.exe and the MonAgentHost.exe processes. Maybe more information could be read, but I&#8217;m leaving this part of the investigation as it is for now.</p>
<h2>Web Role</h2>
<p>So how is the code in my web role actually run by Azure? I can see these things:</p>
<ul>
<li>The exact code for the built/published web project is stored in E:\approot. There are my Global.asax, Web.config, bin-folder and so on.</li>
<li>The process that has been spawn to run this code is stored in E:\base\x64\WaWebHost.exe. I think this exe file is actually contained in the deployed packade, which means I can control this executable if I so wish?</li>
<li>There is no w3wp.exe process running so it seems that IIS is not doing any work at all to run my code. I&#8217;m guessing though that WaWebHost.exe may be a special version/compilation of w3wp.exe for Azure?</li>
</ul>
<p>Now, the most important question I would like to answer in this first investigation is if, and if so how, I can run multiple sites or web projects in a single vm. Knowing IIS, I should go looking for applicationHost.config and see how it points to the web site folders (E:\approot according to the investigation so far).</p>
<p>In fact, I find IIS in its usual place at D:\Windows\System32\inetsrv in my vm. There is also an applicationHost.config in the config sub folder, but it has nothing pointing to E:\approot.</p>
<p>However, I did find the file at C:\Resources\Temp\63a1a1bad2fd41729fe654d54ada5d05.PublicRole (a generated folder name that will look different on other vm:s, for sure). There I can see:</p>
<ul>
<li>An Application Pool that is running as &#8220;NetworkService&#8221; (the only one).</li>
<li>A web site with the name &#8220;Role Site&#8221; and a mapping of the root &#8220;/&#8221; to &#8220;E:\approot\&#8221;.</li>
<li>A binding for this site to ip 10.115.141.65 on port 20000 (no host name).</li>
</ul>
<p>So my vm has a local network address behind Azures load balancer (or gateway or whatever it is called) and it is routing incoming traffic on port 80 to port 20000 on my vm.</p>
<p>The obvious question is if I can change this applicationHost.config file and thereby point it to sub folders in my web role, which would then actually represent different sites or web projects in Visual Studio. I just had to try! Unfortunately nothing happens when I added another site to this file. And since it is in a Temp sub folder I assume it is only used when WaWebHost.exe starts up. I also tried suspending the vm and than starting it again (not sure if this is the same as rebooting the vm?). But then the file is overwritten and my new site info is gone. Too bad, but of course if it was supported there would be an easier way to do it than such a hack.</p>
<h2>Conclusion about suitable scenario</h2>
<p>One thing I&#8217;ve come to realize is that Windows Azure (of today, at least) is not a substitute for a VPS or dedicated server of my own. My first attempt was to find out if Windows Azure actually could be the solution to all of my hosting needs, and it is probably not. Even if it would work, it is obviously not designed for handling multiple sites.</p>
<p>Windows Azure is for when one of your ideas or projects has gotten enough attention or quality that it is time to launch to the public and be prepared for both success and failure. You will be able to scale up to any size you need, and you will also be able to shut it down literally within minutes without any additional costs. Of course, you&#8217;ll have to pay for the time between those two events: the launch and the decision.</p>
<p>I will keep on investigating this and other matters around Windows Azure. I also have hopes that multiple roles or multiple sites/projects with different host name bindings in a single vm will be possible in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeplate.com/first-investigation-of-windows-azure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Suddenly unidentified network in Windows 7</title>
		<link>http://www.mikeplate.com/suddenly-unidentified-network-in-windows-7/</link>
		<comments>http://www.mikeplate.com/suddenly-unidentified-network-in-windows-7/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 12:27:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://www.mikeplate.com/?p=140</guid>
		<description><![CDATA[This problem really had me worried for a few hours today. I was working as usual on my recently purchased Dell XPS Studio 435MT when all of the sudden the network died. I have a cable connection to a switch, which is connected to an Asus router which is then connected to an ADSL provider.
So [...]]]></description>
			<content:encoded><![CDATA[<p>This problem really had me worried for a few hours today. I was working as usual on my recently purchased Dell XPS Studio 435MT when all of the sudden the network died. I have a cable connection to a switch, which is connected to an Asus router which is then connected to an ADSL provider.</p>
<p>So I started to investigate my cabling and restarting switch and router, but nothing helped. I then verified that my network was ok by starting my backup laptop and it did get an internet connection so everything was fine there.<span id="more-140"></span></p>
<p>[Skip to end if you just want the solution that worked for me.]</p>
<p>Next suspicion was that my network interface card in my Dell computer had died. It is a &#8220;Intel 82567LF-2 Gigabit Network Connection&#8221;. However, the signs wasn&#8217;t there that it might have died. Nothing wrong with it in Device Manager (Right click &#8220;Computer&#8221; and choose &#8220;Manage&#8221;).</p>
<p>Windows did recognize the difference between disconnected cable (red cross for network icon in task bar notification area) and my currently unsolved problem (yellow exclamation point) and &#8220;Unidentified network&#8221;. Also, the network cable lights at the connector seemed to work fine (at least they was lit). Still no network and no pings working. Trying to ping the router or another computer in my network timed out or gave &#8220;Destination host unreachable&#8221; from the local network driver.</p>
<p>The network had died just when I started Spotify, so I was now starting to suspect that it was something wrong in Windows. I have Windows 7, 64-bit. Some sort of configuration that had gotten the hiccups? I found some commands (&#8220;netsh&#8221;) that can reset the Windows tcp/ip info, but it did not help (after reboot). I removed the network interface card drivers in Driver Manager and restarted, at which point the drivers were reinstalled automatically, but the problem remained.</p>
<p>I also read that something similar had happed to someone and that he had reinstalled all of Windows and thereby gotten it to work again. Not something you really would want to do.</p>
<p>As a side note, my HTC Hero proved useful since I managed to copy the Android Phone drivers from my laptop to the desktop computer and thereby I could <a href="/laptop-connection-to-htc-hero-with-3g/">get online using my shared connection</a> facility of HTC Hero and its usb cable. Nice!</p>
<p>Anyway, it struck me that network interface cards actually flash their lights when the power of the computer is off. So maybe it is the firmware in the Intel card that had gotten the hiccups?</p>
<h2>Solution</h2>
<p>So I shut down my computer and removed the power cable for a few minutes. Then I started it again, and what do you know:</p>
<p>It worked again!</p>
<p>Update: I finally got this error a handful of times and have now installed the following from Intel (not from Dell, since that download said that I already had the latest drivers). We&#8217;ll see if problem goes away completely or not. After this install, the driver version went from 10.0.0.2 to 10.1.6.0.</p>
<p><a href="http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&amp;ProdId=3003&amp;DwnldID=17910&amp;lang=eng">Intel drivers</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeplate.com/suddenly-unidentified-network-in-windows-7/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Microsoft TechEd Europe 2009 in Berlin, Friday</title>
		<link>http://www.mikeplate.com/teched-2009-berlin-friday/</link>
		<comments>http://www.mikeplate.com/teched-2009-berlin-friday/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 18:00:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[TEE09]]></category>

		<guid isPermaLink="false">http://www.mikeplate.com/?p=88</guid>
		<description><![CDATA[So the last day of TechEd is over. After a full week, my brain is a little tired. The last day doesn&#8217;t have the same energy as the other days. I find it somewhat unfortunate. The lunch was only a bag with sandwich, salad and stuff. The lunch break is shortened and only one session [...]]]></description>
			<content:encoded><![CDATA[<p>So the last day of TechEd is over. After a full week, my brain is a little tired. The last day doesn&#8217;t have the same energy as the other days. I find it somewhat unfortunate. The lunch was only a bag with sandwich, salad and stuff. The lunch break is shortened and only one session after lunch. Of course, people want to go home since I assume their brains are as tired as mine. But I did manage to retrieve some previously unknown facts for Silverlight.<span id="more-88"></span></p>
<h2>WIA308 The Biggest Little-Known Features in Silverlight &#8211; Jeff Prosise</h2>
<p>Name an extremely good, speedy and focused presenter that comes well prepared! Yes, you might say <a href="http://www.wintellect.com/CS/blogs/jprosise/default.aspx">Jeff Prosise</a>. This was one of the best sessions at TechEd. And definitely the most valuable code demos with <a href="http://www.wintellect.com/downloads/TechEdEurope2009.zip">zip download</a>. Stuff I already know I&#8217;ll use in my Silverlight projects in the future.</p>
<p>Things that Jeff went through:</p>
<ul>
<li>WebClient, HttpWebRequest and web services proxies all use the browser stack for communication as default. Can&#8217;t get soap exceptions, will be 404 instead.</li>
<li>Silverlight 3 has true client stack, not owned by browser.</li>
<li>Note that the browser stack will cache data, and the client stack will not.</li>
<li>Turn on by HttpWebRequest.RegisterPrefix(&#8220;http://&#8221;</li>
<li>Use event CompositionTarget.Rendering.</li>
<li>Intended for pictures in sample to load one by one, but they don&#8217;t. Because of threading model. Switching to this event fixes that. [But what about my own threads? Same thing?]</li>
<li>Enhanced frame-rate counter for diagnostics.</li>
<li>Vectors are gone when handing over to GPU. Canvas.CacheMode. Could lead to zooming pixelation.</li>
<li>BitmapCache.RenderAtScale = 4, assumes scaled up to 4 times when zooming.</li>
<li>Analytics class. About cpu load and GPU collection.</li>
<li>AssemblyPart class. Only download required assemblies. Better to deploy small .xap file. You do not have to give up strong typing either with a trick.</li>
<li>Some controls are in separate dll, Calendar is in System.Windows.Controls.</li>
<li>&#8220;The Calendar control might be one of the most useless controls in Silverlight&#8221; [but will serve our purpose as an example]</li>
<li>LayoutRoot.</li>
<li>Set Copy local = false. Uses OpenReadCompleted, OpenReadAsync, AssemblyPart, Load(e.Result).</li>
<li>Can&#8217;t register handler to Assembly.Resolver in Silverlight.</li>
<li>Put call in separate method &#8211; might work (if not inlined by compiler optimization).</li>
<li>[MethodImpl(MethodImplOptions.NoInlining)]</li>
<li>Application Extension Services &#8211; can plug in into app with same lifetime.</li>
<li>IApplicationService, Start/StopService, ApplicationLifetimeObjects.</li>
<li>Build your own services.</li>
<li>Visual.TreeHelper &#8211; Get to generated xaml by system, like templates.</li>
<li>No ItemCreated event exists for listbox (like in an ASP.NET Repeater).</li>
<li>&#8220;Visual.TreeHelper is the key to unlock modification of generated xaml&#8221;</li>
<li>Child windows = Modal dialogs</li>
<li>VirtualizingStackPanel &#8211; default for alist box. Not for combobox, need retemplating.</li>
<li>{RelativeSource} equivalent of two-way template binding.</li>
<li>[What is "SuperSlider" ?]</li>
<li>AutomationPeer &#8211; can simulate button clicks.</li>
<li>NetworkInterface.GetIsNetworkAvailable, NetworkChange.NetworkAddressChanged.</li>
</ul>
<p>Final verdict: this session was great!</p>
<h2>WIA301 Architecting Microsoft Silverlight Applications with MVVM &#8211; Shawn Wildermuth</h2>
<p><a href="http://wildermuth.com/">Shawn</a> knows a lot about the Model-View-ViewModel pattern but unfortunately he isn&#8217;t able to communicate that much of his knowledge. There is way too much code writing going on during his presentation. Also, even though there are a few pointers to take with you, I didn&#8217;t really feel that I got the whole gist of what is so great with the MVVM pattern.</p>
<p>Not that many notes:</p>
<ul>
<li>&#8220;The real problem is tight coupling.&#8221;</li>
<li>Prism + MVVM is a good match [watch other session about Prism]</li>
<li>The ViewModel&#8217;s goal is to take data from the model and format it suitable for the view to consume.</li>
<li>You should understand the pattern before using a framework to implement it.</li>
<li>ViewModel need to include INotifyPropertyChanged.</li>
<li>Error message handling belongs in the ViewModel.</li>
<li>Formatting is typically done in the View.</li>
<li>View: 100% xaml if possible, Silverlight 3 behaviors and element binding help.</li>
</ul>
<p>Final verdict: this session was ok.</p>
<h2>DEV05-IS Building Extensible Systems in Microsoft .NET Framework 4.0 and  Microsoft Silverlight &#8211; Magnus Mårtensson</h2>
<p>This session was first scheduled, then removed, and now reintroduced as the last session on friday. I don&#8217;t know the reasons behind this, but since it was the only session on MEF (Managed Extensibility Framework) I was pleased that it wasn&#8217;t killed after all. This should have meant less than perfect preparations for <a href="http://blog.noop.se/">Magnus</a>, which might have shown through &#8211; or he was just going with the fact that it was an interactive session. Anyway, it was a relaxed presentation where he took requests about what to demo and a lot of questions from the audience. As it turned out, it isn&#8217;t that much to the core of MEF, which I guess is only a good thing.</p>
<p>Last notes:</p>
<ul>
<li>ExtensibleApplication</li>
<li>Drop dll:s in folder &#8211; need [Import] and [Export] attributes.</li>
<li>Finding extensions: AssemblyCatalog + DirectoryCatalog = AggregateCatalog = CompositionContainer</li>
<li>SatisfyImportOnce(myObj);</li>
<li>[Export] class Foo</li>
<li>[Export(typeof(IFoo))] class Foo: IFoo</li>
<li>[Import] ILogger</li>
<li>Performance hit not that bad.</li>
<li>Visual Studio is moving into MEF for extensibility [not 2010?]</li>
<li>Can&#8217;t answer question about Prism, but Glen Block moved from Prism to MEF team.</li>
<li>Silverlight Grid Extensions.</li>
<li>Silverlight implementation of MEF is a one-liner PartInitializer.SatisfyImports(this) &#8211; catalogs not needed.</li>
<li>MEF basic parts: Export, Import, Compose.</li>
<li>[ImportMany] for multiple plugins at a single extension point.</li>
<li>Lazy&lt;T, TView&gt;, parts can have metadata.</li>
<li>Question about versioning of plugins &#8211; no clear answer.</li>
<li>&#8220;The pain-point of extensibility is gone.&#8221;</li>
<li>An extension can be marked as a singleton.</li>
</ul>
<p>Final verdict: this session was ok.</p>
<p>And the end has come.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeplate.com/teched-2009-berlin-friday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft TechEd Europe 2009 in Berlin, Thursday</title>
		<link>http://www.mikeplate.com/teched-2009-berlin-thursday/</link>
		<comments>http://www.mikeplate.com/teched-2009-berlin-thursday/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 18:00:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[TEE09]]></category>

		<guid isPermaLink="false">http://www.mikeplate.com/?p=67</guid>
		<description><![CDATA[Half time has passed and it is time to secure the most valuable knowledge before the week has ended. The tactics of session selection is complex. You could go for the topics that interest you the most, but since all of the breakout sessions are being recorded I would recommend to go more on the [...]]]></description>
			<content:encoded><![CDATA[<p>Half time has passed and it is time to secure the most valuable knowledge before the week has ended. The tactics of session selection is complex. You could go for the topics that interest you the most, but since all of the breakout sessions are being recorded I would recommend to go more on the speaker than the subject. That is, do you recognize the speaker name as someone who usually presents with passion, knowledge and wit, choose that session even if the actual topic isn&#8217;t your highest priority.<span id="more-67"></span></p>
<h2>DEV07-IS Developing a Language with the Dynamic Language Runtime &#8211; Harry Pierson</h2>
<p>Second session with Harry Pierson for me. It is obvious that I find myself more and more interested in dynamic languages. Harry was genuinely surprised to get an almost full interactive session about developing your own language on the DLR. However, I did find that the presentation was more in the direction that I had hoped for. It supplied a little background information about how the DLR and dynamic languages work on .NET and not so much about the specifics of developing your own language (which I don&#8217;t think I will).</p>
<p>Notes:</p>
<ul>
<li>Even back in .NET 1.0 there was a lot of language building blocks such as a rich meta data infrastructure and dynamic code generation with Emit.</li>
<li>[ASP.NET and its compilation-on-the-fly-need for aspx files might have been the/a driving force]</li>
<li>.NET 2.0 brought generics, dynamic method and fast delegates.</li>
<li>.NET 3.5 brought linq and expression trees.</li>
<li>Jim Hugunin, the inventor of Jython, set out to write about while the .NET platform was a bad foundation for dynamic languages but after 6 weeks failed and found .NET to be really good</li>
<li>Bad scenarios for IronPython: exceptions, which are used in Python for more than out-of-the-ordinary errors, are really slow on .NET. (some sort of lightweight exceptions has been discussed?)</li>
<li>.NET 4 brings dynamic dispatch, expression trees v2 and call site caching.</li>
<li>DLR also brings Hosting API, expression tree interpreter, lightweight debugger.</li>
<li>IronPython 2.6 is on the verge to ship.</li>
<li>Resolver is the largest customer of IronPython.</li>
<li>DLR is shipped in unusual way, some part of .NET 4 box, but also on Code Plex.</li>
<li>System.Core is available as open source on Code Plex.</li>
<li>Ruby and Ruby on Rails took one year to port to the DLR platform &#8211; evidence of efficiency in using the platform.</li>
<li>Expression trees v2 brings: Linq + Assignment + Control flow + Dynamic dispatch (=DLR expression trees).</li>
<li>LamdaCompiler takes expression tree and returns delegate for the compiled code.</li>
<li>CallSite&lt;T&gt; polymorphic inline cache</li>
<li>Dino lead dev on team</li>
<li>IronPython generates only one .NET class under the hood, unless if you derive from .NET classes/interfaces.</li>
<li>DLR Meta object protocol, MetaObject, GetMetaObject, Invoke MemberBinder.</li>
<li>CallSiteBinder.Update calls into DLR MetaObject binder, that calls into LanguageBinder which by default talks to CLR metadata reflection.</li>
</ul>
<p>Final verdict: this session was good.</p>
<h2>WIA303 Microsoft ASP.NET AJAX: Taking AJAX to the Next Level &#8211; Stephen Walther</h2>
<p>A session in a somewhat slower tempo, but still with good solid information. Stephen feels more like an educator, used to describing content to students, even though I don&#8217;t think he does that &#8211; probably just has personality (in all good ways).</p>
<p>And the notes:</p>
<ul>
<li>New areas: CDN (Content Delivery Network), Tools, Library</li>
<li>Improve performance by refering to Microsoft CDN for your jquery library.</li>
<li>Jquery-ui not available, but investigated.</li>
<li>&lt;ScriptManager EnableCdn=&#8221;True&#8221;&gt;</li>
<li>Tool: Microsoft Ajax Minifier &#8211; everyone should run a minifier.</li>
<li>Supports normal minification and also hypercrunching, meaning also changing names etc.</li>
<li>Can be run as command line or MSBuild task or component.</li>
<li>Library is delivered out-of-band, meaning not synced with .NET 4.0.</li>
<li>Open source aspect is rapidly evolving [taking contributions?]</li>
<li>&#8220;We pride ourselves in providing good client data access from javascript.&#8221;</li>
<li>Client Data Context</li>
<li>Client Templates</li>
<li>Client Data Binding</li>
<li>{{ can contain javascript }}</li>
<li>sys:src attribute on img-tag worries some people.</li>
<li>VS2010 supports intellisense with CDN hosted files.</li>
<li>start.js is the kick-off for the library.</li>
<li>Library can use jquery selector as argument.</li>
<li>Sys.bind, Sys.get, Sys.require</li>
<li>[Maybe more features/connection should be by convention and not declaratively or in code?]</li>
<li>When asking audience about who uses ADO.NET Data Services, only one raised his hand.</li>
<li>Data tracking in binding is great.</li>
<li>[But I want an event to hook up to, also. Is there an event system here also?]</li>
<li>Client Script Loader</li>
<li>All Microsoft Ajax Library controls are exposed as jquery plugins.</li>
<li>JQuery plugins show up in intellisense.</li>
</ul>
<p>Final verdict: this session was good.</p>
<h2>BOF14 Microsoft SharePoint, jQuery and Microsoft Silverlight: Better Together &#8211; Jan Tielens</h2>
<p>Full speed forward with demos during 40 minutes. Very good presentation by <a href="http://weblogs.asp.net/Jan/">Jan Tielens</a> from u2u &#8211; an education company in Belgium. Very interesting &#8220;injection&#8221; way of building user interfaces on top of SharePoint with jQuery and Silverlight. I assume using web services of the current site/list displayed, although he didn&#8217;t show any code.</p>
<p>A new notes jotted down during the demos:</p>
<ul>
<li>ContentEditorWebPart used for adding html with script</li>
<li>$(document).ready(function() { }); &#8211; jquery for onload</li>
<li>AdditionalPageHead delegate (delegate control in a feature).</li>
<li>MasterPage for adding html with script.</li>
<li>Site Page in uploaded aspx-file in document library.</li>
<li>Only running javascript when installing (no server code); uploading js-files etc.</li>
<li>Found in SmartTools JQuery Loader on Code Plex.</li>
<li>Task notifications.</li>
<li>Jquery Sparklines for clock.</li>
<li>Extended Edit Control Block for menu items in a context menu.</li>
<li>Client side object model for JavaScript in SharePoint 2010.</li>
<li>Silverlight is .xap files &#8211; uploaded to document library.</li>
<li>SPTubePlayer silverlight sample for videos found in a document library, read by the player.</li>
<li>SL.Visifire.Charts.xap beautiful charts in Silverlight with data from SharePoint.</li>
</ul>
<p>Final verdict: this session was great!</p>
<h2>ARC308 Credit Crunch Code: Time to Pay Back the Technical Debt &#8211; Gary Short</h2>
<p>Should be nice to get some architectural advice. I&#8217;ve been around long enough in this business, listening to architectural talks, that it is hard to come up with something really new and earth-shattering (impossible?). Given that fact, Gary delivers a solid reflection on how to use numbers and economics to find bad parts in your projects and have the businesses understand and act on them [my interpretation of what Gary said].</p>
<p>Final verdict: this session was ok.</p>
<h2>DEV03-IS Using Microsoft Visual C# 4.0 and Visual Basic 2010 Interop Features with Microsoft Silverlight, Office and Python &#8211; Alex Turner</h2>
<p>Alex Turner is the program manager for the C# compiler at Microsoft. He demonstrated new features in C# that has more or less existed previously in Visual Basic. It is about writing prettier and more succinct code when calling out to other object models, specifically dynamic languages like JavaScript or Python and COM interop. Nice info, but the session finished early because there was not that much content to talk about. Good things nonetheless.</p>
<p>Basically, the C# compiler will know a few things about COM, specifically againt Office Interop, and do some magic so we don&#8217;t have to write so much code anymore.</p>
<p>Disparate notes:</p>
<ul>
<li>Silverlight scenario calling out to hosting page.</li>
<li>ScriptObject, win.CreateInstance remains, can&#8217;t create type other way from other technology domain.</li>
<li>Browser specific issues (Firefox) stopped Silverlight from caring about removing properties.</li>
<li>Dynamic interop using Word = Microsoft.Office.Interop.Word.</li>
<li>Intellisense in brackets, argument is optional.</li>
<li>Bad typing in Office objet models works i VB because it doesn&#8217;t care as much about types, but is troublesome in C# and now works better with dynamic keyword.</li>
<li>Keyword dynamic &#8211; better than object, and returned from Com Interop.</li>
<li>dynamic xl = new Excel.App();</li>
<li>xl.Cells[1, 1] = &#8220;x&#8221;;</li>
<li>xl.Range["A1", "C4"].Copy();</li>
<li>Fills in vtMissing automatically.</li>
<li>word.Selection.PasteSpecial(Link: true); &#8211; named parameters.</li>
<li>IronPython 2.6 CTP Beta 2 now available.</li>
<li>IronPything.Hosting, Microsoft.Scripting.Hosting</li>
<li>Python.CreateRuntime, py.UseFile(&#8220;myfile.py&#8221;)</li>
<li>CallSite: DLR has cached the delegate, next time the binding is in place</li>
<li>Natural interop with diverse object models.</li>
<li>DynamicDispatch.</li>
<li>No colourization when working with dynamic, expect 3rd parties to pick it up since code model is in VSIP.</li>
</ul>
<p>Final verdict: this session was ok.</p>
<h2>OFS321 Building Powerful Business Intelligence Solutions on the SharePoint 2010  Platform &#8211; Zlatan Dzinic</h2>
<p>Oops. Wrong session for me. Don&#8217;t know how I ended up here, but this was really boring stuff and the demos didn&#8217;t go that well for Zlatan either. Excel Services, Performance Point Server, and now there is PowerPivot. Not my cup of tea. Unfortunately, the whole concept of BI on SharePoint felt very messy and unfocused.</p>
<p>Zlatan reminds me of sales guy that doesn&#8217;t have a clue about what he is talking about and overtries to communication passion where there is none. However, I do have a suspicion that Zlatan knows much more than he is able to communicate and that the passion is real and not as fake as it comes across.</p>
<p>Final verdict: this was a complete waste of time (for me, at least)!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeplate.com/teched-2009-berlin-thursday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft TechEd Europe 2009 in Berlin, Wednesday</title>
		<link>http://www.mikeplate.com/teched-2009-berlin-wednesday/</link>
		<comments>http://www.mikeplate.com/teched-2009-berlin-wednesday/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 18:00:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[TEE09]]></category>

		<guid isPermaLink="false">http://www.mikeplate.com/?p=58</guid>
		<description><![CDATA[Day three at TechEd was the best one this far. Maybe getting better at selecting good sessions and speakers, which is always somewhat of a science in itself.
The food is great, even better than in Barcelona. After some glitches with queuing to the lunch rooms the first day, everything has run smoothly. Warm food buffet [...]]]></description>
			<content:encoded><![CDATA[<p>Day three at TechEd was the best one this far. Maybe getting better at selecting good sessions and speakers, which is always somewhat of a science in itself.</p>
<p>The food is great, even better than in Barcelona. After some glitches with queuing to the lunch rooms the first day, everything has run smoothly. Warm food buffet style with vegetables and rolls. Very tasty indeed.<span id="more-58"></span></p>
<h2>WIA06-IS The Orchard Project &#8211; An interactive discussion on delivering.NET-based  open source applications and components &#8211; Bradley Millington</h2>
<p>This could be one of the most unknown release sessions of all of TechEd. In fact, the code for <a href="http://orchard.codeplex.com/">Orchard</a> was released to Code Plex yesterday, so today is the first time Bradley Millington from the team is speaking publicly about it. Although he didn&#8217;t want to make a big deal of it. It is, after all, a project in its very early stages.</p>
<p>Orchard is an open source project with a Microsoft team of seven people. It is a platform for content management and more. You can easily compare it to <a href="http://wordpress.org/">WordPress</a>, and think of it as a &#8220;WordPress killer&#8221;, but those are my words and nothing that Bradley referred to at all. However, it is pretty easy to see the similarities with WordPress although far far far from the feature set (as of today).</p>
<p>There are of course open source content management systems for the .NET platform, but I find this very interesting since it is coming from Microsoft and therefore has potential for being important. I felt this was the most interesting project of all the projects presented in one form or the other (commercial or otherwise) at this year&#8217;s TechEd. Lets hope it will live a long and happy life.</p>
<p>Some notes from Bradleys talk:</p>
<ul>
<li>Project will accept contributions &#8220;soon&#8221;.</li>
<li>Step one is a cms, and it&#8217;s likely to be the successor to Oxite.</li>
<li>Currently the team is working on: CMS Pages, Drafts, Publishing, Media Management, Users, Roles and LiveWriter compatibility.</li>
<li>Working in 3-week iteration cycles, at the tail of 2nd iteration now.</li>
<li>Please comment on specifications on Code Plex.</li>
<li>For now, focusing on admin and not so much the front end.</li>
<li>Using MVC 2 Preview 2, uses &#8220;area&#8221; feature.</li>
<li>A web page consist of zones with content.</li>
<li>Other content types than web pages will be introduced.</li>
<li>Question raised about how zones will work with LiveWriter.</li>
<li>Looking at using Lucene for search.</li>
<li>Extension model within 6 months.</li>
<li>Send feedback to <a href="mailto:ofeedbk@microsoft.com">ofeedbk@microsoft.com</a>.</li>
<li>Public mailing list is coming.</li>
<li>Uses <a href="http://nhforge.org/Default.aspx">NHibernate</a> for ORM, and <a href="http://www.sqlite.org/">Sqlite</a> is the default database (MSSQL supported).</li>
<li>Uses <a href="http://tinymce.moxiecode.com/">TinyMCE</a> as the html editor. Not much customization yet.</li>
<li>Used <a href="http://mef.codeplex.com/">MEF</a> (Managed Extensibility Framework) in prototyping but didn&#8217;t like it. Has built a custom lightweight IOC container. MEF was too explicit in demanding import and export attributes. Not as convention based as wanted.</li>
<li>Question about multi-tenant, and the team is looking at that also.</li>
<li>Question about how close this could be to SharePoint &#8211; far away but certainly valid question.</li>
<li>Used to run on <a href="http://www.mono-project.com/">Mono</a>, but a new dependency [according to attendee] made it fail. Will probably be resurrected on Mono.</li>
</ul>
<p>Final verdict: this session was great!</p>
<h2>DEV306 F# for Parallel and Asynchronous Programming &#8211; Don Syme</h2>
<p>Another fast and beatifully performed demo of F# by <a href="http://blogs.msdn.com/dsyme/">Don Syme</a>. Not that much discussion about the F# language (all correct according to the session description), but I think he stilled managed to give everyone a short introduction to F# in the more general sense also. Some code snippets was very briefly looked at and although I didn&#8217;t understand everything he went through, I liked the pace and the content.</p>
<p>A few notes:</p>
<ul>
<li>Don Syme was involved in the generics work on the .NET platform.</li>
<li>F# keywords are: simplicity, economics, parallel.</li>
<li>Comparing F# to C#: C# has more noise than signal.</li>
<li>.NET 4 has introduced tuples [which was used in the demo].</li>
<li>&#8220;I sometimes think of F# as a strongly typed Python&#8221;</li>
<li>Whitespace matters in F#.</li>
<li>(1,2,3) |&gt; show is equivalent to show(1,2,3) [approx]</li>
<li>let! (pronounced let-bang) for asynchronous assignments.</li>
</ul>
<p>Final verdict: this session was good.</p>
<h2>DEV01-DEMO Microsoft Visual Studio Team System 2010 Team Foundation Server:  Become Productive in 30 Minutes &#8211; Brian Randell</h2>
<p>In under 30 minutes <a href="http://www.mcwtech.com/blogs/brianr/">Brial Randell</a> manages to install Team Foundation Server on a client operations system such as Windows 7. Brian is very entertaining in his presentation and makes a good case for using TFS on your laptop or otherwise &#8220;disconnected&#8221; (from central server) development machine.</p>
<p>No specific notes from this session.</p>
<p>Final verdict: this session was good.</p>
<h2>DEV204 Unit Testing Best Practices &#8211; Roy Osherove</h2>
<p>Unfortunately Roys guitar was broken so we didn&#8217;t get to hear him <a href="http://www.youtube.com/watch?v=XV5fViOoV_8">sing one of his songs</a>. On attendee left after this breaking news story &#8211; no, just kidding. <a href="http://weblogs.asp.net/rosherove/">Roy</a> is very competent and highly knowledgeable in his field, which is unit testing (and more, I&#8217;m sure!). He calmly and thoughtfully presents his views and tips when doing unit testing in your projects. Nothing earth shattering here (either), but still very good advice to think about in your daily development life.</p>
<ul>
<li>All your tests must be: trustworthy, maintainable and readable.</li>
<li>&#8220;TDD works because it starts with a failed test&#8221;</li>
<li>&#8220;Unit tests are small use cases for your code&#8221;</li>
<li>Do test reviews, not just code reviews.</li>
<li>Beware: don&#8217;t mix unit testing with integration testing.</li>
<li>Use separate folders in your projects for unit and integration tests.</li>
<li>Roy uses TestDriven.NET.</li>
<li>Good code coverage is usually 95-100% but coverage in itself is not enough, the goal must be to have good tests.</li>
<li>Roy is using Resharper in the demos.</li>
<li>Test check: change if conditions to constant true (or false), some tests should fail!</li>
<li>Avoid test logic (if, for etc). Tests should only be a bunch of calls &#8211; no logic. An if statements in a test method probably means you should have two test methods in stead.</li>
<li>Don&#8217;t repeat production logic in your tests.</li>
<li>Use hard-coded values in tests (not DateTime.Now).</li>
<li>Don&#8217;t remove old tests. Add in stead of change, if possible.</li>
<li>&#8220;Range tests are not unit tests&#8221;</li>
<li>Don&#8217;t run a test from another test.</li>
<li>Avoid multiple asserts in a single test. Unless testing the same concept.</li>
<li>No magic numbers in your arguments, use constants in stead where the name clearly indicates why that number is used in the test.</li>
<li>Naming your test methods: What is under test? What is the scenario? What is the result?</li>
<li>Naming sample: Add_LessThanZero_ThrowsException.</li>
<li>Use simplest values when testing. If any integer will do the test, don&#8217;t use &#8220;123&#8243;, but rather &#8220;0&#8243; or &#8220;1&#8243;.</li>
<li> Roy performs test reviews on his blog &#8211; for further reading.</li>
</ul>
<p>Final verdict: this session was good.</p>
<h2>WIA404 Data Driven Microsoft ASP.NET Web Forms Applications Deep Dive &#8211; <span>Jeff King</span></h2>
<p>Jeff King delivers yet another solid walk through of new features in ASP.NET web forms for .NET 4.0. Quite a few things has happened. Better JavaScript integration, usage of ADO.NET data services and more. The templating story has improved. You can now template field types and/or individual fields.</p>
<p>Some classes and/or methods that Jeff showed (look them up to learn more):</p>
<ul>
<li>EnablePersistedSelection</li>
<li>SortedAscendingCellStyle</li>
<li>EnableDynamicData(typeof(xyz))</li>
<li>Look at field templates (int, string etc) placed in ascx-files.</li>
<li>MetaDataType, ScaffoldColumn, Display, DataType, Range (for validation)</li>
<li>MetaModel</li>
<li>ContentTypeName</li>
<li>DynamicDataManager, DynamicField, DynamicEntity</li>
<li>Page templates &#8211; for the entire application</li>
<li>Routing, url routing module (as in MVC), dynamic route.</li>
<li>QueryBlockExtender, QueryExtender, SearchExpression, ControlParameter</li>
<li>DomainDataSouce control after .NET 4.0.</li>
</ul>
<p><span>Final verdict: this session was good.<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeplate.com/teched-2009-berlin-wednesday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft TechEd Europe 2009 in Berlin, Tuesday</title>
		<link>http://www.mikeplate.com/teched-2009-berlin-tuesday/</link>
		<comments>http://www.mikeplate.com/teched-2009-berlin-tuesday/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 18:00:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[TEE09]]></category>

		<guid isPermaLink="false">http://www.mikeplate.com/?p=54</guid>
		<description><![CDATA[Day two was also mixed. Three good presentations and two wastes of time.
Berlin Messe is really a huge complex. I&#8217;ve noted that some have complained about the long distances between session rooms, technical learning center, lunch and so on. Yes, it was more compact in Barcelona, however I didn&#8217;t find it to be a big [...]]]></description>
			<content:encoded><![CDATA[<p>Day two was also mixed. Three good presentations and two wastes of time.</p>
<p>Berlin Messe is really a huge complex. I&#8217;ve noted that some have complained about the long distances between session rooms, technical learning center, lunch and so on. Yes, it was more compact in Barcelona, however I didn&#8217;t find it to be a big issue. With 30 minutes between sessions it is not a problem. The conference material states that there would be no wifi connectivity inside session rooms (which seemed a bit odd in these times of twittering), but it turned out that it was only in a few session rooms this was true. I had good enough connectivity in most session rooms.<span id="more-54"></span></p>
<h2>OFS215 Microsoft SharePoint Server 2010 Introduction for Developers &#8211; Paul Andrew</h2>
<p><a href="http://blogs.msdn.com/pandrew/">Paul Andrew</a> is on the SharePoint team and provided a very good overview of the new features in 2010 for developers. The level of speed and depth were perfect for me, which is seldom the case in a session. However, if you knew more about SharePoint it might have been a little too slow. But it is of course impossible to please all listeners.</p>
<p>A few things I particularly liked:</p>
<ul>
<li>Developer dashboard. A placer for debugging info and a way to turn on diagnostics and traces as part of a rendered web page. Can even click sql-statements that has been sent to server and look at them.</li>
<li>SharePoint 2010 public beta will be available in november.</li>
<li>A package in Visual Studio 2010 project represents the wsp file. [WSPBuilder may not have a bright future.]</li>
<li>Inline web parts in a wiki text.</li>
<li>Linq-to-SharePoint.</li>
<li>Old WSS (Windows SharePoint Services), the free stuff, is now SharePoint Foundation.</li>
<li>Old BDC (Business Data Catalog) is now Business Connectivity Services and is included in SharePoint Foundation (=free). Also has write capability (read-only previously).</li>
<li>You can &#8220;generate&#8221; SharePoint lists in your own .NET code, a sort of virtual SharePoint lists. Other sources for a virtual list [actually called an external content type, I think] are sql connection strings and web services.</li>
<li>BDC explorer in Visual Studio 2010.</li>
</ul>
<p>Final verdict: this session was good.</p>
<h2>DEV317 Agile Patterns: Agile Estimation  &#8211; Stephen Forte</h2>
<p>Getting your estimates correct is always difficult. I can&#8217;t say that <a href="http://www.stephenforte.net/">Stephen Forte</a> introduced something substantially new that will make all your estimates be right from now on. But that was of course not his intention either (pigs can&#8217;t fly). He did have a few tips and points though, and it is obvious that he has been around enough projects to know what he is talking about.</p>
<p>Some good points to remember:</p>
<ul>
<li><a href="http://www.construx.com/Page.aspx?hid=1648">The Cone of Uncertainty</a> is a diagram borrowed from <a href="http://www.stevemcconnell.com/">Steve McConnell</a> that shows the correlation between time/experience/data and certainty in estimates.</li>
<li>&#8220;By definition, estimates are wrong&#8221;</li>
<li>&#8220;Agile is about involving the business&#8221;</li>
<li>&#8220;Deviations are not deviations, they are more accurate estimations&#8221;</li>
<li>Make sure the business writing the user stories also includes acceptance criteria.</li>
<li><a href="http://www.planningpoker.com/">Planning Poker</a> is a good way to get estimates from the team without enforcing any predefined perceptions on your team members (like a boss sayin &#8220;this must be easy&#8221;).</li>
<li>Set story points for user stories. Unit can be one day, but doesn&#8217;t have to &#8211; use other if you want.</li>
<li>Velocity is the number of story points per an iteration.</li>
<li>Always re-estimate your stories before the next iteration.</li>
<li>Putting everything in the backlog means items will get stale, so avoid that.</li>
<li>&#8220;My favorite card when playing planning poker is infinity&#8221;</li>
<li>&#8220;Business people are always wrong. They think easy things are hard, and hard things are easy&#8221;</li>
<li>The users / the business should be able to see the backlog and the estimates.</li>
<li>The business sets the priority.</li>
</ul>
<p>Final verdict: this session was good.</p>
<h2>INT305 Code Walkthrough of a Cloud Application Running on the Windows Azure  Platform &#8211; Kurt Claeys</h2>
<div>This session was presented by last years winner of Speaker Idol. I don&#8217;t know if that knowledge beforehand, would have changed my choice, though, since that should mean that the presenter has really taken the time to prepare a great session. This was unfortunately not the case. Not that the code didn&#8217;t work, but it was really really boring with no feeling for what the audience might be interested in.</div>
<div>Anyway, I did write down a few notes:</div>
<div>
<ul>
<li>When running a fabric simulation locally, Azure tables are actually tables in a sql server express database. [This confused some participants, Kurt didn't explain exactly what the difference is.]</li>
<li>Azure Blobs has a REST api.</li>
<li>There is both a PartitionKey and a RowKey when dealing with Azure tables. [Need to investigate exactly what this means - another missed opportunity for the presenter to enlighten the audience.]</li>
<li>Windows Azure can run in full trust, but you need to set attribute enableNativeCodeExecution in config file.</li>
<li>There is a Linq-to-Azure-tables api.</li>
<li>WCP has support for duplex binding, and the NetEventRelayBinding can be used to have your code be notified.</li>
</ul>
</div>
<div>Final verdict: this session was a waste of time!</div>
<h2>DAT206 Microsoft SQL Server 2008 R2 Demo Power Hour &#8211; Donald Farmer</h2>
<div>This was a waste of time for me. Some part because it was an IT session and not a developer session. Some part because the presentors had some problems and didn&#8217;t seem prepared. For that matter, maybe also because SQL2008 R2 doesn&#8217;t really have anything new or interesting in it besides Powerpivot which seemed more like an Office/Excel update.</div>
<div><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<ul>
<li>SQL2008 R2 is simply a refresh and not a new release with upgrade paths etc.</li>
<li>SQL2008 R2 was known as the BI release, but since then more features have been added.</li>
<li>Project Madison = SQL2008 R2 Parallel Warehouse, will handle hundreds of terabytes on commodity hardware.</li>
<li>Powerpivot is a separate application/download. Looks like Excel 2010. Instant sorting and filtering of 100.000.000 rows. Data file only takes up 200 MB, good compression.</li>
<li>SQL2008 R2 CTP releases next week.</li>
<li>Powerpivot gallery in SharePoint 2010.</li>
</ul>
</div>
<div>Final verdict: this session was a waste of time!</div>
<h2>DEV04-IS Pumping Iron: Dynamic Languages on the Microsoft .NET Framework &#8211; Harry Pierson</h2>
<p>First &#8220;interactive session&#8221; of this years TechEd for me. This format is a bit of an oddball. I normally prefer to sit back and enjoy a lot of information and demos. Now, as it usually turns out, most interactive sessions end up this way anyway and so did this one. <a href="http://www.devhawk.net/">Harry Pierson</a> is obviously very passionate about <a href="http://ironpython.codeplex.com/">IronPython</a> (in a good way!). It was very interesting to hear his thoughts about dynamic languages place in the .NET world.</p>
<p>Google is doing a project where they are trying to improve Python performance by a factor of 5. Harry didn&#8217;t think they would make it because of inherent problems with performance of dynamic languages.</p>
<p>Some notes from the session:</p>
<ul>
<li>Powershell is a dynamic language.</li>
<li>Dynamically typed languages are much more flexible.</li>
<li>It is relatively easy to write a language within a language with for instance Ruby [Linq comparison to class Customer &lt; ActiveRecord::base from Ruby on Rails.]</li>
<li>MIT now uses Python as an introduction language for students.</li>
<li>Dynamic languages are &#8220;short on ceremony&#8221; compared to statically typed.</li>
<li>Aspect oriented programming is native to Python. Python brings verbs together.</li>
<li>IronPython is a first class citizen in .NET.</li>
<li>Python has no new keyword.</li>
<li>C# 4.0 has dynamic keyword.</li>
<li>Easy to extend your application with Python. ScriptRuntimeSetup, ScriptRuntime, CreateEngine.</li>
<li>Lightweight debugging concept in Python [or the DLR?]</li>
<li>Very small team at Microsoft, only 8 people.</li>
<li>Mono platform runs the <a href="http://dlr.codeplex.com/">DLR</a> (Dynamic Languages Runtime).</li>
<li><a href="http://ironruby.codeplex.com/">IronRuby</a> is not as mature as IronPython right now. vNext for IronRuby is still in the works.</li>
</ul>
<p>Final verdict: this session was great!</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 1339px; width: 1px; height: 1px;"><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;">SQL2008 R2 was known as the BI release, but since then more features have been added</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeplate.com/teched-2009-berlin-tuesday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft TechEd Europe 2009 in Berlin, Monday</title>
		<link>http://www.mikeplate.com/teched-2009-berlin-monday/</link>
		<comments>http://www.mikeplate.com/teched-2009-berlin-monday/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 20:00:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[TEE09]]></category>

		<guid isPermaLink="false">http://www.mikeplate.com/?p=52</guid>
		<description><![CDATA[First day at TechEd was a little mixed. I don&#8217;t understand the thinking behind putting the keynotes after lunch and after we&#8217;ve already had a few sessions. Isn&#8217;t a keynote suppose to kick off a conference? On the other hand, keynotes with nothing to launch is usually really boring and so was this one. More [...]]]></description>
			<content:encoded><![CDATA[<p>First day at TechEd was a little mixed. I don&#8217;t understand the thinking behind putting the keynotes after lunch and after we&#8217;ve already had a few sessions. Isn&#8217;t a keynote suppose to kick off a conference? On the other hand, keynotes with nothing to launch is usually really boring and so was this one. More passion for great products, please! Also, note that I&#8217;m talking about the developer keynote (called &#8220;general session&#8221;) and not the &#8220;real&#8221; keynote that was only for IT guys (in my opinion) and skipped by me.<span id="more-52"></span></p>
<h2>ARC201 The Windows Azure Platform: When and Why to Use It &#8211; <span>David Chappell</span></h2>
<p><span><a href="http://www.davidchappell.com/blog/index.php">David Chappell</a> is a really nice calm guy with a lot of intelligent ways (like pauses) to get his message across in a presentation. He doesn&#8217;t feel like a technical geek (like me), but still at least seems to have a lot of knowledge about the things he is talkning about albeit at a higher (architectural) level. Simply put: he is really easy to listen to.</span></p>
<p><span>So, what did he say?</span></p>
<ul>
<li>The cloud is the sixth category of computing platforms since the beginning, the other ones are mainframes, minicomputers, pc:s, mobiles and servers.</li>
<li><span>Azure applications only run in user mode. Can&#8217;t use admin mode. (Not clear exactly what he defined as admin mode &#8211; probably just in the general sense.)</span></li>
<li><span>Future versions of Azure will probably allow more and more access to the VM.</span></li>
<li>Azure storages facilities are blobs, tables and queues.</li>
<li><span>Azure Tables are not tables, and should therefore never have been called that.</span></li>
<li>.NET Services are part of the Azure platform, but have little to do with .NET. Is a service bus and an access control helper.</li>
<li>More VM sizes will be announced at PDC. Now only the smallest type of VM has a price.</li>
<li>Scenarios where Azure is valid are for: scale, reliability, variable load, short lifetimes, parallel processing, startups failing quickly, neutral grounds.</li>
<li><span>There is no lock-in like cloud lock-in.</span></li>
<li>Remember that if you shut down a VM or Sql Azure database, everything is gone the next month.</li>
<li>Hosting is in no way going away.</li>
<li>Three biggest competitor are Amazon (AWS, EC2, EDS), Google (AppEngine) and Force.com.</li>
<li>Amazons VM:s runs Windows and are your own &#8211; better admin capabilities, no fabric/autoscaling. RDS for data is based on MySQL.</li>
<li>Google AppEngine only supports Python and Java. Has no relational data story. Focused on web startups.</li>
<li>Force.com has bigger differences. Targets business people. Lock-in forever, but otherwise works great. Microsoft xCRM might happen and be a contender.</li>
</ul>
<p>Final verdict: this talk was great!</p>
<h2>DAT204 What&#8217;s New in Microsoft SQL Azure (*PDC at TechEd) &#8211; David Robinson</h2>
<p>David Robinson is on the Sql Azure team and sure enough had some information to deliver to us directly from Redmond. Now, my feeling is that Sql Azure is about being as equal to Microsoft Sql Server as possible and therefore it is hard to find features that appeal to you or that you can set to use immediately. What matters is simply what you need to avoid in an application based on Windows Azure and Sql Azure.</p>
<p>Session notes:</p>
<ul>
<li>Sql Azure is not database hosting (locked down but autoscalable).</li>
<li>European data center is only weeks away.</li>
<li>Dropped server is gone &#8211; but might be resurrected with support phone call (only flagged for deletion initially).</li>
<li>Firewall rules are stored in Master database on server.</li>
<li>Usage metrics via sys.bandwidth_usage.</li>
<li>Coming up: sys.database_usage.</li>
<li>Coming up: automatic partitioning of data in tables between servers (since there is a 1/10 GB limit). Until then there are code drops for doing it in code.</li>
<li>Limits of 1/10 GB will likeley increase after release of V1.</li>
<li>Time limit for idle connections are 5 minutes. Be prepared in your code to retry.</li>
<li>Patterns &amp; Practices will come out with guidance for connections etc.</li>
<li>Backups will be available after V1.</li>
<li>Also working on spatial and clr support.</li>
<li>Reporting services can pull data from Sql Azure today.</li>
<li>BI in the cloud is in the plans.</li>
<li>Profiling and visible cpu cycles etc will come after V1.</li>
<li>Sql Azure will release updates continuously, minor very 8 weeks and mayor twice a year.</li>
<li>Microsoft Sync Framework will sync between Sql Azure and local Sql Server.</li>
<li>Don&#8217;t put mission critical apps in Sql Azure (yet)!</li>
<li>Sql Management Studio will be updated this month in order to work with Sql Azure (not only query window, which works today).</li>
</ul>
<p>Final verdict: this talk was good.</p>
<h2>DEV-GEN Developer General Session &#8211; Visual Studio 2010: New Challenges, New  Solutions &#8211; Jason Zander</h2>
<p>As already stated, this was a really boring keynote. Of course, it may not have helped that it was right after lunch. I had a hard time staying awake and I don&#8217;t even remember what he and other presentors talked about. I do remember that Jason had rewarded a few customers with the opportunity to demonstrate their products or services as the demo part of the keynote. Maybe this was part of the program. I don&#8217;t think this is a good idea since it is sooo easy that it turns into a sales talk and a praise talk of Microsoft that lacks credibility.</p>
<p>Final verdict: this talk was a waste of time!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeplate.com/teched-2009-berlin-monday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
