<?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>Freelance web and mobile developer</description>
	<lastBuildDate>Tue, 17 Aug 2010 20:12:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>CSS3 Playground</title>
		<link>http://www.mikeplate.com/css3-playground/</link>
		<comments>http://www.mikeplate.com/css3-playground/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 11:36:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[webapps]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://www.mikeplate.com/?p=322</guid>
		<description><![CDATA[After being excited about css3 and using some of its features in my web pages, I realized that I needed some simple tool (editor) for experimenting.]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://css3.mikeplate.com">CSS3 Playground</a> is a web application for experimenting with some new css3 capabilities. Primarily those than conform to the progressive enhancement philosophy, which means that the styles can be used on all sites without severely changing/limiting the experience on browsers that does not support them (=Internet Explorer 8.0 and older). But there are also styles that may need better replacements on Internet Explorer such as rotation, and I hope I will have the time to add more in the future.</p>
<p><span id="more-322"></span></p>
<p><a href="http://css3.mikeplate.com/"><img class="alignnone size-full wp-image-337 screendump" title="CSS3 Playground" src="http://www.mikeplate.com/wp-content/uploads/2010/07/css3playground.png" alt="Screen dump of the site" width="547" height="395" /></a></p>
<h2>Inspiration</h2>
<p>I&#8217;m a developer and not a web designer, but that doesn&#8217;t keep me from learning and experimenting with html5 and css3 stuff. The inspiration for this web application came from some really good talks at <a href="http://futureofwebdesign.com/london-2010/">Future of Web Design in London 2010</a>. I wasn&#8217;t there, but purchased the recorded videos which I can recommend to all interested in web design (and web developers too, obviously). The recorded quality isn&#8217;t perhaps the best, but the speakers and the content made up for that. Especially <a href="http://simplebits.com/">Dan Cederholm</a> and <a href="http://denisejacobs.com/">Denise Jacobs</a>.</p>
<p>I wasn&#8217;t aware of the philosophies &#8220;Progressive enhancement&#8221; and/or &#8220;Graceful degradation&#8221; previously so this was a bit of a late awakening for me. Now I see what has been brewing in the web design and browser world for a while and why Microsoft finally was pushed to comply a lot better to all things css3 with Internet Explorer 9.</p>
<p>Then, of course, it&#8217;s another story that html5 and css3 are not standardized yet.</p>
<h2>Building</h2>
<p>Building this simple web application was also a good opportunity for me to really use a JavaScript user interface library since the application is client side only. I was choosing between <a href="http://jqueryui.com/">jQuery UI</a> and <a href="http://www.dojotoolkit.org/reference-guide/dijit/index.html">Dijit</a> (Dojo&#8217;s ui library) and what made to go for Dijit was the fact that the mouse scroll wheel can be used on slider controls. I thought that made a nice feature when moving shadows and testing other numbers based properties.</p>
<p>I have mostly looked at jQuery previously, but I will investigate <a href="http://dojotoolkit.org/">Dojo</a> even further now with the good experiences I&#8217;ve had buildning CSS3 Playground.</p>
<p>The best specification of all css3 properties and browser support that I&#8217;ve found is <a href="http://www.caniuse.com">Where can I use</a>. I used that specification and the linked samples and documentation to learn about the specifics of the css3 styles that I wanted to support in the web application.</p>
<h2>Use</h2>
<p>So I recommend you try it out. I hope it will be a better way to try out some color and shadow combinations than to type the css manually and use your ordinary tools and previews. It will of course be of most use to you who know css pretty well, but has not had the time to check out css3 yet.</p>
<p>Add more preview boxes with the <img class="alignnone" src="http://css3.mikeplate.com/add.png" alt="" width="16" height="16" /> button. When changing the styles, only the last box clicked will be affected. I didn&#8217;t want to distort the preview with a visual selection effect for the current box, so besides a small transparency animation when clicking other boxes, you won&#8217;t be able to see which box is actually the current one. Remove the current box with the <img class="alignnone" src="http://css3.mikeplate.com/delete.png" alt="" width="16" height="16" /> button.</p>
<p>Below the preview, you will see two collections of styles. The left one is the one you should use (copy and paste). It contains the styles for different browsers. The right one is read live from the browser of your choice and it might be interesting to see how different browsers actually chose to store the styles, but you should not copy and paste that part in your web pages and stylesheet files.</p>
<p>My favorite styles that I will start to use are the easy ones such as border radius and box shadow. Considering how easy they are, the difficulty will probably be not to overuse them.</p>
<p><a href="http://css3.mikeplate.com">http://css3.mikeplate.com</a></p>
<h2>Updates</h2>
<p>Web application was updated to version 1.1 on august 17 with the following:</p>
<ul>
<li>&#8220;Add&#8221;-button for adding as many boxes as you like and change their styles independently.</li>
<li>&#8220;Delete&#8221;-button for removing any extra added boxes.</li>
<li>Font selection. Either type the font(s) manually, or select from a few font stacks.</li>
<li>Bold and/or italic styles.</li>
<li>Bug fix where changing the contents removed the resizing capability.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeplate.com/css3-playground/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Scandinavian Web Developers Conference Day 2</title>
		<link>http://www.mikeplate.com/scandinavian-web-developers-conference-day-2/</link>
		<comments>http://www.mikeplate.com/scandinavian-web-developers-conference-day-2/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 13:57:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[SWDC]]></category>

		<guid isPermaLink="false">http://www.mikeplate.com/?p=312</guid>
		<description><![CDATA[This is a short summary of the talks during the second day of Scandinavian Web Developers Conference in Stockholm, June 3, 2010. Please note that it is a very short summary with abbreviations and contexts that might only make sense to me (if even that). The second day is about the mobile web development. Wolfram [...]]]></description>
			<content:encoded><![CDATA[<p>This is a short summary of the talks during the second day of  Scandinavian Web Developers Conference in Stockholm, June 3, 2010. Please  note that it is a very short summary with abbreviations and contexts  that might only make sense to me (if even that).</p>
<p><span id="more-312"></span></p>
<p>The second day is about the mobile web development.</p>
<h2>Wolfram Kriesing &#8211; Cross-platform mobile apps.</h2>
<ul>
<li>From Uxebu.</li>
<li>App vs widget.</li>
<li>Chosen name is &#8220;Html5 Apps&#8221;. Named by PPK. Better sale with html5 in the name.</li>
<li>Makers of Event Ninja.</li>
<li>bit.ly/distimo-appstores</li>
<li>eventninja.net/webkit/</li>
<li>Feels like iPhone native.</li>
<li>TouchScroll is a JavaScript and css3-based scroller.</li>
<li>yourappshop.com selling web apps for mobile, just iPhone currently.</li>
<li>W3C Widget contains alyout, design, ajax, config.xml, icon in a zip renamed to &#8220;.wgt&#8221; file extension.</li>
<li>Using Dojo.</li>
<li>No great tools.</li>
<li>You can stay on your desktop as long as you need.</li>
<li>Opera DragonFly can debug on the phone.</li>
<li>Runtime coming to Android, N60. TV widget has appeared.</li>
<li>W3C Specification, JIL Specification, BONDI.</li>
<li>Vodafone offering JIL.</li>
<li>JavaScript is becoming first class citizen on phones via widgets.</li>
<li>Platform adaptions.</li>
<li>Blackberry will switch to WebKit.</li>
<li>PhoneGap filling the gap since all phones don&#8217;t support everything natively.</li>
<li>PhoneGap is open source. PhoneGap+SDK is about 240 kB.</li>
<li>Dojo-mobile. Have to optimize js-libs. Took apart dojo, Just what you need. dojo-webkit-mobile.js.</li>
<li>bit.ly/webdev-events</li>
<li>[Mentions YQL.]</li>
<li>Can stay offline &#8211; no roaming charges.</li>
<li>Is loving Google Calendar as a data store.</li>
<li>Titanium. Custom tags, not as good. Just iPhone, Android and Blackberry.</li>
</ul>
<h2>Mikael Kindborg &#8211; The New Mobile Web &#8211; A Web of Scripted Applications</h2>
<ul>
<li>From Dynamic.</li>
<li>MoSync, tools for cross platform programs.</li>
<li>Magic Words game written in Smalltalk.</li>
<li>JavaScript rediscovered, similar to Lisp.</li>
<li>CoffeeScript.</li>
<li>Theme: What happens when you go late bound.</li>
<li>Showing artist doing lego sculptures. brickartist.com. Nathan Sawaya.</li>
<li>Spredsheets are actuall an example of a functional programming model.</li>
<li>wpri.org doing research.</li>
<li>DroidScript by Micke.</li>
<li>Clamato project is Smalltalk implemented in JavaScript.</li>
<li>Seaside, code browser in web browser. [Nice demo. Would be nice to do in .NET]</li>
<li>DroidScript is open source. Based on Mozilla Rhino.</li>
<li>No byte code generation on Android. Would be needed for subclassing.</li>
<li>Typing code on desktop and sending via tcp to phote to run it. Can open urls. [Smart!]</li>
<li>DragonFly editor.</li>
<li>Access to native via packages.</li>
<li>With Smalltalk you select some thing and run it. Considered old today.</li>
<li>divineprogrammer.se.</li>
</ul>
<h2>Claes Nilsson and Thomas Bailey &#8211; The phone in the cloud</h2>
<p>From Sony Ericsson, main sponsor.</p>
<ul>
<li>Claes Nilsson first. Doing device APIs.</li>
<li>The phone as a service.</li>
<li>Main place is W3C DAP APIs.</li>
<li>All define JavaScript API.</li>
<li>One approach is to use trusted control widgets, like Android, BONDI, JIL.</li>
<li>Implicit user consent is other way to go.</li>
<li>Just drafts. No candidates yet.</li>
<li>In addition policy based.</li>
<li>Google suggested REST http as API to local phone.</li>
<li>[Interesting! Why not all APIs accessible by REST?]</li>
<li>Powerbox another suggestion/submission by Google.</li>
<li>Example, user selects images from cloud services or local gallery in phone.</li>
<li>Same code in web application.</li>
<li>Powerbox gives access to resources posted anywhere, including local.</li>
<li>Thomas Bailey. What to do here and now. PlayNow is Sony Ericsson app store.</li>
<li>PhoneGap only Android+Symbian [In Sony Ericsson products.]</li>
<li>Simplifying html development with PhoneGap. Sony Ericsson WebSDK has a small ide in the browser. Not necessary with Eclipse for PhoneGap development. Proof of concept (beta).</li>
<li>WARP = Web Applicaiton Runtime</li>
</ul>
<h2>Tom Hughes-Croucher &#8211; Mobile Data &#8211; How to avoid the latency trap when using web services</h2>
<ul>
<li>From Yahoo.</li>
<li>Microwaves and baby monitors fuck up wifi. Interference.</li>
<li>Ofcom in UK = Swedish Post och Telestyrelsen.</li>
<li>Up to 90% bandwidth used on protocol.</li>
<li>1, 6 and 11 channels for every device. All others overlap.</li>
<li>Reduce sequential requests. Gzip.</li>
<li>Yahoo Performenace Guidelines.</li>
<li>Mike Belshe researches page load times.</li>
<li>Browserscope.org</li>
<li>Maximize concurrent requests with labjs.com.</li>
<li>Packet research from Yahoo.</li>
<li>YQL bindings to services. (Don&#8217;t like XML/RPC based Dave Winer.)</li>
<li>YQL is a unified interface to web services. Self-describing. [Feels a bit like fluiddb?]</li>
<li>Help bundle lots of requests into a single one.</li>
</ul>
<h2>Tom Blackmore &#8211; Handling spatial data on the web</h2>
<ul>
<li>Formed own company Arctic Tiger. Did mapping for hitta.se. Geobased solutions.</li>
<li>We can remove a lot of questions in user interfaces with knowing geolocation data.</li>
<li>Your phone has better accuracy than car navigator, thanks to AGPS.</li>
<li>W3C Geolocation API (the html5 name).</li>
<li>navigator.geolocation, watchPosition. Don&#8217;t forget clearWatch.</li>
<li>getCurrentPosition(usePos, posErr, { enableHighAccuracy&#8221; : true });</li>
<li>geo.js code.google.com/p/geo-location-javascript</li>
<li>Done via TurboGears in older Android.</li>
<li>Lantmäteriet, cost for single internet public facing site, one purpose, one company, is 1,3 MSEK.</li>
<li>Google Maps. Yahoo Geoplanet Data. OpenStreetMap (creative commons). GeoNames (good zips).</li>
<li>Spatial databases, PostGIS, SpatialLite, GeoCouchDB.</li>
<li>github.com/vmx/couchdb</li>
<li>ST-Contains, ST-GeometryFromText</li>
<li>2 decimals in lat/long is about 1 kilometer precision.</li>
</ul>
<h2>Nikolai Onken &#8211; Human APIs, expanding the mobile web to the real world</h2>
<ul>
<li>From Uxebo.</li>
<li>Dojo committer.</li>
<li>Gordon JavaScript for Flash.</li>
<li>Raphael cool lib.</li>
<li>blog.uxebo.com, humanapi.org</li>
<li>Arduino board.</li>
</ul>
<h2>Michael Mahemoff &#8211; HTML5 gives you wings</h2>
<ul>
<li>From ajaxpatterns and ajaxian.org.</li>
<li>Just been to uxcamp Europe.</li>
<li>Automatic persistance is new ux pattern.</li>
<li>piratepad.</li>
<li>Jolicloud.</li>
<li>Cross-origin Resource Sharing (html5).</li>
<li>Application Cache (html5).</li>
<li>3.ly/timer</li>
<li>&lt;html manifest=&#8221;timer.manifest&#8221;&gt;</li>
<li>Cache manifest. Fallback network.</li>
<li>window.applicationCache.status, localStorage, sessionStorage tied to the domain.</li>
<li>WebSQL Data. IndexedDB soon.</li>
<li>JSON.stringify, JSON.parse</li>
<li>localStorage strings only right now. Events.</li>
<li>Same application can be opened in multiple tabs and communicate with each other.</li>
<li>&lt;a rel=&#8221;pingback&#8221;&gt;</li>
</ul>
<h2>Henk Jurriens &#8211; Building linked data applications for the iPhone</h2>
<ul>
<li>Data sets. DBPedia, GeoName, FADF.</li>
<li>Linked data is about semantic web.</li>
<li>URI. RDF. SPARQL.</li>
<li>RDFa names things with URIs.</li>
<li>Dublin Core. FOAF.</li>
<li>data.gov. BBC.</li>
<li>Drupal and WordPress uses linked data. Also Facebook.</li>
<li>jQTouch.js, iProcessing.js, Lodsy.</li>
</ul>
<h2>Tim Caswell &#8211; Node.js powered mobile apps for end-to-end JavaScript development</h2>
<ul>
<li>Ryan is creator of Node.js.</li>
<li>Creator of node framework Connect.</li>
<li>Built-in filter modules. Data providers.</li>
<li>Single stack model.</li>
</ul>
<p>A bit shorter in the wrap-up of the conference, but a good two days.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeplate.com/scandinavian-web-developers-conference-day-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scandinavian Web Developers Conference Day 1</title>
		<link>http://www.mikeplate.com/scandinavian-web-developers-conference-day-1/</link>
		<comments>http://www.mikeplate.com/scandinavian-web-developers-conference-day-1/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 19:42:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[SWDC]]></category>

		<guid isPermaLink="false">http://www.mikeplate.com/?p=303</guid>
		<description><![CDATA[This is a short summary of the talks during the first day of Scandinavian Web Developers Conference in Stockholm, June 2 2010. Please note that it is a very short summary with abbreviations and contexts that might only make sense to me (if even that). Peter Svensson welcomes us to the conference. No wifi for [...]]]></description>
			<content:encoded><![CDATA[<p>This is a short summary of the talks during the first day of Scandinavian Web Developers Conference in Stockholm, June 2 2010. Please note that it is a very short summary with abbreviations and contexts that might only make sense to me (if even that).<br />
<span id="more-303"></span><br />
Peter Svensson welcomes us to the conference. No wifi for all, unfortunately. 3G coverage inside the cinema was just ok to work.</p>
<p>The first day is about the front-end and back-end of web development.</p>
<h2>Robert Nyman &#8211; HTML5</h2>
<p>Overview of HTML5 with a slight focus to the actual HTML and not so much all the new apis.</p>
<ul>
<li>In 200 the WhatWG group was formed from Mozilla, Opera and Apple out of dissatisfaction with the W3C work on next HTML. Now Google is also a member of WhatWG.</li>
<li>HTML5 is about semantics, accessibility and apis.</li>
<li>&lt;!DOCTYPE html&gt; Note that there is no version in doctype declaration.</li>
<li>HTML5 isn&#8217;t necessarily XHTML. HTML5 interprets the html in a friendly mannor.</li>
<li>For XHTML no doctype is needed. Must have correct contenttype from server.</li>
<li>Many new input types: color, week range, search. Default to text if type is unknown/unimplemented by browser.</li>
<li>&lt;meta charset=&#8221;utf-8&#8243;&gt;</li>
<li>&lt;header role=&#8221;banner&#8221;&gt; Headers can occur multiple times in the page (for sections within the page).</li>
<li>Role attribute can be used by screen readers.</li>
<li>&lt;nav role=&#8221;navigation&#8221;&gt; Encloses the primary navigation structure of the site.</li>
<li>&lt;article&gt; &lt;section&gt; &lt;header&gt; &lt;hgroup&gt; &lt;h2&gt;title&lt;/h2&gt;</li>
<li>An article element&#8217;s content should make sense outside the page context.</li>
<li>&lt;aside role=&#8221;complimentary&#8221;&gt;, &lt;footer&gt;</li>
<li>Problem with ajax and accessibility. aria-attributes. aria-live. aria-relevant. WAI-ARIA Live Regions.</li>
<li>Video. &#8220;Without Flash we wouldn&#8217;t have youtube&#8221;, &#8220;Things can actually coexist&#8221;, &#8220;Not everything has to kill something&#8221;</li>
<li>video element can follow with several source elements for different codecs. First one supported will be used by browser. object-element fallback can also be used for Flash etc.</li>
<li>WebM project made everyone happy. Will get hardware acceleration. Matters how content providers will support WebM. &#8220;Is optimistic about WebM&#8221;. Kaltura and more.</li>
<li>Canvas. getContent(&#8220;2d&#8221;). A &#8220;3d&#8221; context is also coming. shadowBlur. rotate.</li>
<li>explorercanvas by Emil is canvas for MSIE, translates canvas to VML. Now hired by Google.</li>
<li>Mozilla Bespin is text editor on the web with syntax highlighting.</li>
<li>Geolocation sort of bundled but not part of official specifikation.</li>
<li>Watch dot box on Google Maps if your browser (Firefox) supports geolocation.</li>
<li>Cross document messaging.</li>
<li>Drag&#8217;n drop. Reverse engineered from old MSIE. Not liked. May change.</li>
<li>Nice that HTML5 is here today. Google.com uses HTML5. Hired the guy working on the specification.</li>
<li>Sjoerd Visscher, html5 shiv(?). IE8 does not recognize new elements like article as css styleable. But if the page calls document.createElement for the element name, it does! The return value of createElement can be thrown away.</li>
<li>IE9 looks much better. Nice stuff.</li>
</ul>
<h2>Stefan Pettersson &#8211; Developing Large-Scale JavaScript Web Sites</h2>
<p>Not so technical/concret, but still a good overview of some things to think about for web sites with heavy loads (and I would think, even good for small sites).</p>
<ul>
<li>Worked with Netlight, Aftonbladet. Did the map for http://www.hitta.se.</li>
<li>Getting questions from customers wanting to &#8220;do it like Google does&#8221;. Sites with lots of traffic, much content, much functionality, complex mess.</li>
<li>Read books by Steve Souders on JavaScript performance (by O&#8217;Reilly).</li>
<li>Establish an architecture. Best practices. A way to work.</li>
<li>New job type &#8220;front-end engineer&#8221; in the middle.</li>
<li>Load scripts on demand.</li>
<li>Load scripts after rendering.</li>
<li>Cache renewal, append build number to url.</li>
<li>XHR or JSONP? Go JSONP. For cross-site-scripting solutions.</li>
<li>Go with REST.</li>
<li>Use YUI3 for dependencies, module loading. Has sandbox.</li>
<li>Static content servers like LiteHttp. Cookieless. Cache friendly headers. Gzip.</li>
<li>Don&#8217;t put onclick in tags, attach event by jquery or other framework.</li>
<li>Progressive enhancements.</li>
<li>Pixelperfect in all browsers? Drop it! Too muc work. Sample with pin &#8220;bubble&#8221; for hitta.se.</li>
<li>Avoid putting things in global namespace.</li>
<li>Module pattern. Simulating missing private/public distinction in JavaScript.</li>
<li>Know the client. Embrace the client. Peer code reviews.</li>
<li>Build and deploy: Aggregate. Minify. (Preprocessor.) Automation.</li>
<li> Now working for Expansive Worlds.</li>
</ul>
<h2>Alexander Lang &#8211; Designing domain models with document databases</h2>
<p>Some patterns on how to design the domain model for a document database.</p>
<ul>
<li>Creator of <a href="http://github.com/langalex/couch_potato">Couch Potato</a>.</li>
<li>Don&#8217;t understands why MongoDB gets so much attension.</li>
<li>Every document has an id.</li>
<li>Get info by url. CouchDB has builtin http server.</li>
<li>Polymorphic associations.</li>
<li>Reporting.</li>
<li>Map function. function(doc) { &#8230; emit(doc.id, &lt;value&gt;); }</li>
<li>Reduce function. function(key, values) { }</li>
<li>Nested attributes (3D forms).</li>
<li>Sample with survery, questions, choices.</li>
<li>Copy versus associations.</li>
<li>Because map reduce is built in, query code can analyze.</li>
<li>Always fast through static indexes.</li>
<li>Indexes are built on reads, not writes. Writes not expensive at all.</li>
</ul>
<h2>Rik Arends &#8211; Developing applications in the cloud</h2>
<p>Showing a complete development IDE in the browser. Not available publicly just yet.</p>
<ul>
<li>From ajax.org, which are 15 people.</li>
<li>Doing JavaScript Charting and Live Markup.</li>
<li>Collaborative applications in the cloud. Refering to Google Docs.</li>
<li>Google BigTable map/reduce.</li>
<li>MongoDB soon autosharding. Redis.</li>
<li>[Nosql is actually sql without transactions, joins and predetermined schemas.]</li>
<li>Yahoo Geolocation Service.</li>
<li>Timeslider.</li>
<li>EtherPad.</li>
<li>Ajax.org Cloud IDE. Integrated with github.com. Demonstration a user interface in the browser. Looks a lot like Visual Studio with forms editor, property lists etc. Debugging.</li>
<li>Testing ui is hard. Selenium.</li>
<li>Chrome has socket open over which you can do debugging.</li>
<li>Sample with node.js and socket. Using GoogleGears like extension for now. Hoping that browsers will expose internal debug apis.</li>
<li>Next: read/write github, php, ruby, python, addon tooling, share code fragments.</li>
<li>Editor bindings.</li>
<li>@cloudeide for preview.</li>
</ul>
<h2>Daniel Glazman &#8211; Browser War 2010</h2>
<p>A frenchmen showing languages skills in Swedish too. Inside W3C working groups.</p>
<ul>
<li>Creator of Nvu. Did the styling engine of Netscape/Mozilla.</li>
<li>CEO of Disruptive Innovations.</li>
<li>W3C CSS working group co-chairman.</li>
<li>Blink and marqee tags are two proofs of the existence of the devil.</li>
<li>Handling bloody disputes from company strategists.</li>
<li>Must admin IE9 is very promising.</li>
<li>Never so many contributions to the working groups as today.</li>
<li>XHTML2 was big failure. Not backwards compatible.</li>
<li>&#8220;Reinventing HTML&#8221; by Tim Berners-Lee</li>
<li>HTML-WG =&gt; WhatWG 2006-10-27</li>
<li>HTML5 2009-10-06</li>
<li>HTML5: The most unreadable specification I have read in 20 years of standardization. Lots of internal links. The language.</li>
<li>Bluegriffin is new editor.</li>
<li>CSS2 object model was really bad with holes in the specification.</li>
<li>Canvas is going to shake the game industry too.</li>
<li>Impressed by Mozilla Bespin. Using frame buffer.</li>
<li>Properietary formats are doomed.</li>
<li>No flexible box model (yet).</li>
<li>Please stop supporting IE6.</li>
<li>JavaScript toolkits will have a hard time fighting for existence will new CSS3 support for transitions and animations.</li>
<li>Tensions in the standards communities.</li>
<li>Mozilla gets 80% of its revenue from Google. What will happen with that with regards to Chrome?</li>
<li>Infamous Apple tag &lt;meta name=&#8221;viewport&#8221; /&gt;</li>
</ul>
<h2>Dylan Schiemann &#8211; Programming to patterns</h2>
<ul>
<li>Working with SitePen, Dojo.</li>
<li>Dojo 2.0 drops support for IE6/7. 50% less code.</li>
<li>Comparisions between Dojo and MooTools.</li>
<li>Mixins with Dojo.</li>
</ul>
<h2>Sergey Ilinsky &#8211; Managing complex client-side GUI Apps the right way</h2>
<ul>
<li>Creator of Ample SDK.</li>
<li>XBL2 doesn&#8217;t look to happen.</li>
<li>Put everything in script tags.</li>
<li>Declarative UI in the xml.</li>
<li>Open Source GUI frameworks ExtJS, Dojo, Qooxdoo, jQuery UI.</li>
<li>Events for removal in the document level.</li>
<li>Ample has a DOM and the browser has its DOM.</li>
<li>Div elements are not enough for datepickers and listviews.</li>
</ul>
<h2>Mark Wubben &#8211; Building browser extensions with Chrome.</h2>
<ul>
<li>Much easier than on Firefox with XUL and XPCom.</li>
<li>chrome://extensions/</li>
<li>An extension is a folder with a manifest.json file in it. Must have a name and a version.</li>
<li>Content scripts = User scripts from Greasemonkey (Aaron Boodman).</li>
<li>Isolated worlds.</li>
<li>Content scripts run in separate contexts, but shares the DOM.</li>
<li>Use events to communicate between scripts/extensions.</li>
<li>Sample: expand bit.ly urls on Twitter.</li>
<li>Background pages.</li>
<li>[Maybe someone should make a Firefox extension to read/run Chrome extensions for compatiblity between the browsers.]</li>
<li>[Secure also means less flexible.]</li>
<li>Chrome APIs.</li>
<li>Page actions. Browser actions. Popups.</li>
<li>Browser actions can talk between extensions.</li>
<li>Desktop notifications (in WebKit).</li>
<li>Url permissions shown on install.</li>
<li>[What's "Allow incognito" in extension configuration.]</li>
<li>11born.net/swdc</li>
<li>Someone has done something for Mozilla JetPack.</li>
</ul>
<h2>Malte Ubl &#8211; Getting started with node.js</h2>
<ul>
<li>The web is changing. We&#8217;re doing i/o wrong.</li>
<li>Comet.</li>
<li>JavaScript is popping up as a library language for the first time.</li>
<li>CommonJS, goal of server side JavaScript.</li>
<li>Node.js is all about non-blocking operations on the server. [Like .NET asynchronous requests.]</li>
<li>No breaking changes anymore to Node.js.</li>
<li>nonblocking.io</li>
<li>Cloud provider for Node.js.</li>
<li>Dependent on Python.</li>
<li>No Windows binary (yet), not a true Posix platform.</li>
</ul>
<h2>Patrick Chanezon &#8211; Google for developers</h2>
<ul>
<li>AppEngine for business.</li>
<li>Infrastructure As A Service = Amazon.</li>
<li>Platform As A Servuce = Google AppEngine [Windows Azure].</li>
<li>If you have an OpenID support and a notion of separate domains, you can integrate with Google App Marketplace.</li>
<li>Prediction API.</li>
<li>The APIs for Google Storage is the same as for Amazon S3, just change the domain. Adds a few features.</li>
</ul>
<h2>Chris Heilmann &#8211; Clever re-use of web technologies</h2>
<ul>
<li>From Yahoo.</li>
<li>Nobody cares what the html looks like.</li>
<li>Problems is that we love our technologies. Truism.</li>
<li>Play to push the envelope.</li>
<li>Not everyone has JavaScript on in their browsers.</li>
<li>Drag and drop is still confusing for a lot of users.</li>
<li>iPad is not the end of web design as we know it.</li>
<li>Not everything is solved with jQuery.</li>
<li>Issues in html5+css3: security, hardware access, native rich controls, layout, internationalization, accessibility, media.</li>
<li>A lot of &#8220;using newest technology&#8221; is a lame excuse for not architecting our solutions.</li>
<li>Yeah, we annoy people with open technology [not better than to annoy with closed technologies].</li>
<li>Progressive enhancement.</li>
<li>If you put a button on a web page that doesn&#8217;t work, you&#8217;ve broken a promise to your user [cause JavaScript is off].</li>
<li>Companies happy about Facebook blocking IE6.</li>
<li>developer-evangelism.com, wait-till-i.com.</li>
<li>Doesn&#8217;t matter what Apple makes since is is a religion and not a company. I buy 2nd and 3rd generation products these days.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeplate.com/scandinavian-web-developers-conference-day-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>4</slash:comments>
		</item>
		<item>
		<title>How to connect to SkyDrive with WebDAV – 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>
		<category><![CDATA[MSOffice]]></category>
		<category><![CDATA[SkyDrive]]></category>
		<category><![CDATA[WebDAV]]></category>
		<category><![CDATA[WindowsLive]]></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>62</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 [...]]]></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. [...]]]></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="http://www.mikeplate.com/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>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)

Served from: www.mikeplate.com @ 2010-09-04 04:46:45 -->