<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Microsoft Developer Network (MSDN) Belux Team Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/belux/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/belux/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:07:48 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Build 2016 – Watch the livestream and win!</title>
      <link>https://docs.microsoft.com/archive/blogs/belux/belgians-at-build-competition</link>
      <pubDate>Wed, 09 Mar 2016 09:22:58 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Belux]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/belux/?p=7251</guid>
      <description><![CDATA[It’s officially 16 days, 6 hours, 33 minutes and 23 seconds till Build 2016, and we couldn’t be more...]]></description>
      <content:encoded><![CDATA[<p style="text-align: left">It’s officially 16 days, 6 hours, 33 minutes and 23 seconds till Build 2016, and we couldn’t be more excited!</p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/snip_20160314164537.jpg"><img class=" size-large wp-image-7263 aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/snip_20160314164537-1024x476.jpg" alt="snip_20160314164537" width="879" height="409" /></a>

The Build conference is traditionally the place where Microsoft announces a number of upcoming innovations for developers. This year, expectations are even higher and there’s a growing anticipation when it comes to news regarding the Windows platform, both on the desktop and in the cloud, and an update on HoloLens.

What’s extra special this year is that we’ve been able to secure tickets for two of the team members (Nick and Peter) to join Build directly in San Francisco. We were extra lucky, as tickets to attend the event sold out after only a couple of minutes. Nick and Peter will be providing a daily video diary, interviewing other Belgians at Build and getting comments and opinions from some of the top speakers at the event. Make sure you continue to follow their exploits and ask questions on Twitter using the hashtag <a href="https://twitter.com/search?q=%23belgiansatbuild&amp;src=typd">#Belgiansatbuild</a>

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/Pic-for-Blog.png"><img class=" size-large wp-image-7271 aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/Pic-for-Blog-1024x340.png" alt="Pic for Blog" width="879" height="292" /></a>
<h2><strong>Win great prizes!</strong></h2>
For those that can’t attend in San Francisco we will ensure that you can experience the keynote live as if you were in the front row. What’s more we have a special treat lined up for those of you following the <a href="https://build.microsoft.com/">livestream </a>to <strong>win a Surface 3, a ticket to Techorama 2016 or even a ticket to Build 2017!!!</strong>

&nbsp;
<h3>How can I win?</h3>
During the keynote <a href="https://build.microsoft.com/">livestream </a>(beginning at 4pm CET) we will announce three questions on Twitter and Facebook with the hashtag <a href="https://twitter.com/search?q=%23belgiansatbuild&amp;src=typd">#belgiansatbuild</a>.
You’ll have 15 minutes to reply to the question through a small questionnaire and 15 minutes later the winner will be announced.
It’s as simple as that.

Good luck!

The terms and conditions for the competition can be found <a href="https://onedrive.live.com/redir?resid=C0E5F8B71264BD5D!398145&amp;authkey=!AMkvH9P9hlEUk8E&amp;ithint=file%2cpdf">here</a>.]]></content:encoded>
    </item>
    <item>
      <title>Riding the Modern Web: Render Mode-less</title>
      <link>https://docs.microsoft.com/archive/blogs/belux/riding-the-modern-web-render-mode-less</link>
      <pubDate>Mon, 14 Dec 2015 19:48:22 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Belux]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/belux/?p=7222</guid>
      <description><![CDATA[Internet Explorer 8 introduced the idea of document modes as a way to transition websites from...]]></description>
      <content:encoded><![CDATA[Internet Explorer 8 introduced the idea of document modes as a way to transition websites from proprietary features to features based on standards and supported by multiple browsers and devices.

Subsequent releases of Windows Internet Explorer continued this transition by introducing new document modes that emulated features supported by earlier versions while introducing support for features defined by industry standards.

While many websites were updated to provide richer experiences based on modern features, some sites used earlier document modes in order to continue serve experiences based on older practices.  In order to ensure users receive the best experience possible, earlier document modes will not be supported in Microsoft Edge. Websites based on legacy techniques should be updated to rely on features defined by modern standards and practices.

<em>This blogpost is the fifth in a series about Modern Web development. We’ll be covering the following topics:</em>
<ul>
	<li><em><a href="https://blogs.msdn.microsoft.com/belux/2015/11/05/riding-the-modern-web-dealing-with-plugins/">Plugins</a></em></li>
	<li><em><a href="https://blogs.msdn.microsoft.com/belux/2015/11/05/riding-the-modern-web-dealing-with-javascript-libraries/">External JavaScript Libraries</a></em></li>
	<li><em><a href="https://blogs.msdn.microsoft.com/belux/2015/11/13/riding-the-modern-web-css-vendor-prefixes/" target="_blank">CSS prefixes</a></em></li>
	<li><a href="https://blogs.msdn.microsoft.com/belux/2015/11/19/riding-the-modern-web-avoiding-browser-detection/" target="_blank"><em>Browser and feature detection </em></a></li>
	<li><em>Rendering modes (this article)</em></li>
</ul>
<iframe src="https://channel9.msdn.com/Blogs/BeLux-Developer/Riding-the-Modern-Web-Render-Mode-less/player" width="905" height="509" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
<h2>Specifying legacy document modes</h2>
Using the <a href="https://msdn.microsoft.com/en-us/library/ms533737(v=vs.85).aspx"><strong>&lt;!DOCTYPE&gt;</strong></a> tag you can define the document type of a webpage, which determines how the page is displayed to the end-user.

One way to specify the document mode and restrict the webpage to use a document mode supported by an older version of Internet Explorer, is to use the <em>x-ua-compatible</em> heder. An example of this is shown below.
<pre><span lang="EN" style="color: black">&lt;html&gt;
&lt;head&gt;
  &lt;!-- Use Internet Explorer 9 Standards mode --&gt;
  &lt;meta http-equiv="<span style="background-color: yellow;font-weight: bold">x-ua-compatible</span>" content="IE=9"&gt;
  &lt;title&gt;My webpage&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p&gt;Content goes here.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt; </span></pre>
<span lang="EN-US">More information about legacy document modes can be found on <a href="https://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx"><span style="color: #0563c1">MSDN</span></a>.</span>
<h2>Using HTML5 document mode</h2>
Because all supported versions of Internet Explorer (including Microsoft Internet Explorer 6) interpret the HTML5 document type as a standards mode document type, we recommend using the HTML5 document type for all webpages that don't require a different declaration. This ensures that your webpages are display in the highest available standards mode.

To specify that your webpage uses the HTML5 document mode, use the following syntax:
<pre><span lang="EN" style="color: blue">&lt;!</span><span lang="EN" style="color: #a31515">DOCTYPE</span> <span lang="EN" style="color: red">html</span><span lang="EN" style="color: blue">&gt;

</span></pre>
<h2>Conclusion</h2>
Legacy document modes are really something from the past and you should use HTML5 document mode in all your webpages. This will allow your web content to be available across devices and browsers.<span lang="EN" style="color: blue">
</span>

<strong>Check your website now for compatibility with the Modern Web!</strong>
<strong><a href="https://dev.windows.com/en-us/microsoft-edge/tools/staticscan/" target="_blank"><img class="alignnone  wp-image-7081" src="https://msdnshared.blob.core.windows.net/media/2015/11/81-300x139.png" alt="8" width="492" height="228" /></a></strong>
<h2>Additional resources</h2>
<ul>
	<li>Check out the <a href="https://dev.microsoftedge.com/">Microsoft Edge Developer Center</a> for valuable resources and tools when working with the Microsoft Edge browser.</li>
	<li>An <a href="https://www.codeproject.com/Articles/596255/Testing-Web-Sites-with-Modern-ie">in-depth overview</a> on how to scan your site using the site scanner.</li>
	<li>View our complete video on Channel 9: <a href="https://aka.ms/modernweb">Riding the Modern Web: Five things to consider as a web developer</a></li>
	<li><a href="https://code.visualstudio.com/">Download Visual Studio Code for free</a> for a great cross-platform coding experience for web developers. Also check out our <a href="https://channel9.msdn.com/Blogs/BeLux-Developer/Getting-Started-with-Visual-Studio-Code">webinar</a> on how to get started with Visual Studio Code.</li>
</ul>
<em>For an overview of the 5 things to consider when developing for the modern web, check out our</em> <a href="https://aka.ms/modernweb">17-minute video</a>.
<iframe src="https://channel9.msdn.com/Blogs/BeLux-Developer/Riding-the-Modern-Web-5-things-to-consider-as-a-web-developer/player" width="905" height="509" frameborder="0" allowfullscreen="allowfullscreen"></iframe>]]></content:encoded>
    </item>
    <item>
      <title>Riding the Modern Web: Avoiding Browser Detection</title>
      <link>https://docs.microsoft.com/archive/blogs/belux/riding-the-modern-web-avoiding-browser-detection</link>
      <pubDate>Thu, 19 Nov 2015 10:04:39 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Belux]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/belux/?p=7221</guid>
      <description><![CDATA[Not all browsers or browser versions support the same features at a given time. Therefore, you need...]]></description>
      <content:encoded><![CDATA[Not all browsers or browser versions support the same features at a given time. Therefore, you need to swap out or change functionality in your website based on the browser (version) the user has. A commonly used approach is to add <strong>browser detection</strong> code to your website which will provide the best experience based on the browser type and give a suboptimal experience to other browsers.

The concern with this approach is that you go away with browser evolution. Moreover, the browser type is often determined based on the <a href="https://en.wikipedia.org/wiki/User_agent">user-agent string</a>, which has been described as “an ever-growing pack of lies” by <a href="https://lists.w3.org/Archives/Public/public-html/2014Feb/0040.html">Patrick H. Lauke</a>. All user agent strings actually contain more information about other browsers than the actual browser you’re using. Browsers specifically perform user agent spoofing to aid compatibility.

As a result, it is <strong>not recommended to use browser detection</strong> based on the user agent string, but <strong>instead perform</strong> <strong>feature detection</strong>. Feature detection is the mechanism where you interrogate the browser and check if the specific feature you want to use is actually available. There are great JavaScript frameworks, to help you with feature detection, such as <a href="https://modernizr.com/">Modernizr</a>. By doing feature detection, as soon as a given browser implements that feature, the new functionality will be unlocked on your website. So you actually <strong>make your website future-proof</strong>!

<em>This blogpost is the fourth in a series about Modern Web development. We’ll be covering the following topics:</em>
<ul>
	<li><em><a href="https://blogs.msdn.microsoft.com/belux/2015/11/05/riding-the-modern-web-dealing-with-plugins/">Plugins</a></em></li>
	<li><em><a href="https://blogs.msdn.microsoft.com/belux/2015/11/05/riding-the-modern-web-dealing-with-javascript-libraries/">External JavaScript Libraries</a></em></li>
	<li><em><a href="https://blogs.msdn.microsoft.com/belux/2015/11/13/riding-the-modern-web-css-vendor-prefixes/" target="_blank">CSS prefixes</a></em></li>
	<li><em>Browser and feature detection (this article)</em></li>
	<li><a href="https://blogs.msdn.microsoft.com/belux/2015/12/14/riding-the-modern-web-render-mode-less/" target="_blank"><em>Rendering modes</em></a></li>
</ul>
<iframe src="https://channel9.msdn.com/Blogs/BeLux-Developer/Riding-the-Modern-Web-Avoiding-Browser-Detection/player" width="905" height="509" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
<h2>Feature detection using the DOM</h2>
Let’s look at an example on how we can do feature detection using the DOM. In this example we have a <strong>canvas</strong> element on our website. Traditionally you use the user agent string to detect for a given browser, specifically the code sample checks for Internet Explorer version 9 and above.
<div style="border: solid windowtext 1.0pt;padding: 1.0pt 4.0pt 1.0pt 4.0pt">
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">function</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> <span class="SpellE"><span class="GramE">DetectCanvas</span></span><span class="GramE">(</span>)
{</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">var</span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> <span class="SpellE">myNav</span> = </span><span class="SpellE"><span class="GramE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">navigator.userAgent</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">.toLowerCase</span></span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">();</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">var</span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> version;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> </span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: green;background: white">// Does the user have Internet Explorer</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">if</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> (</span><span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">myNav.indexOf</span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">(</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: #a31515;background: yellow">'MSIE'</span><span class="GramE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">) !</span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">= -1</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">) {</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">        </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: green;background: white">// Get the browser version number</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">        </span><span class="GramE"><span lang="FR" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">version</span></span><span lang="FR" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow"> = <span class="SpellE">parseInt</span>(<span class="SpellE">myNav.split</span>(</span><span lang="FR" style="font-size: 9.5pt;font-family: Consolas;color: #a31515;background: yellow">'<span class="SpellE">msie</span>'</span><span lang="FR" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">)[1]);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="FR" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">        </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">return</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> version
&gt; 8;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    }</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">else</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">        </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">return</span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">true</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">}</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> </span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">if</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> (<span class="SpellE"><span class="GramE">DetectCanvas</span></span><span class="GramE">(</span>))</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">{</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    <span class="SpellE"><span class="GramE">document.getElementById</span></span>(<span class="SpellE">myCanvas</span>).<span class="SpellE">style.display</span> = </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: #a31515;background: white">"block"</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">}</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">else</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">{</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: green;background: white">// Hide the canvas element in case of IE8 and below</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    <span class="SpellE"><span class="GramE">document.getElementById</span></span>(<span class="SpellE">myCanvas</span>).<span class="SpellE">style.display</span> = </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: #a31515;background: white">"none"</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">}</span></p>

</div>
Alternatively, instead of sniffing the user agent string, we can leverage the DOM to test for the availability of the canvas element in a given browser.

In below code sample you’ll notice that we first programmatically create a canvas element. In a second step, we execute the getContext() on the created element. The reason for doing this second step is because in some browser versions, if the element cannot be created, an empty element is still created.
<div style="border: solid windowtext 1.0pt;padding: 1.0pt 4.0pt 1.0pt 4.0pt">
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">function</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> <span class="SpellE"><span class="GramE">DetectCanvas</span></span><span class="GramE">(</span>)
{</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">var</span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> canvas = </span><span class="SpellE"><span class="GramE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">document.createElement</span></span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">(</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: #a31515;background: yellow">'canvas'</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">return</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> <span class="SpellE"><span class="GramE">canvas.getContext</span></span> ? </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">true</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> : </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">false</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">}</span></p>

</div>
So by creating an object programmatically, you can check that a given HTML element is available in a browser.
<h2>Feature detection using Modernizr</h2>
Alternatively, you can use the <a href="https://modernizr.com/"><span style="color: #0563c1;font-family: Calibri">Modernizr</span></a><span style="color: #000000;font-family: Calibri"> JavaScript library to perform feature detection. Adapting the example above to use Modernizr would result in the following code:</span>
<div style="border: solid windowtext 1.0pt;padding: 1.0pt 4.0pt 1.0pt 4.0pt">
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">function</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> <span class="SpellE"><span class="GramE">DetectCanvas</span></span><span class="GramE">(</span>)
{</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">    </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: yellow">return</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">
<span class="SpellE">Modernizr.canvas</span>;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">}</span></p>

</div>
Modernizr has an elaborate list of feature detections available, both for HTML5 features as well as for performing CSS3 capabilities. You can find more information in the documentation center.
<h2>Conclusion</h2>
If you want to make sure your website is future-proof, it’s recommended to remove your browser-detection code and replace it with feature detection. You can leverage libraries such as Modernizr or use simple JavaScript and DOM manipulation otherwise.

<strong>Check your website now for compatibility with the Modern Web!</strong>
<strong><a href="https://dev.windows.com/en-us/microsoft-edge/tools/staticscan/" target="_blank"><img class="alignnone  wp-image-7081" src="https://msdnshared.blob.core.windows.net/media/2015/11/81-300x139.png" alt="8" width="492" height="228" /></a></strong>
<h2>Additional resources</h2>
<ul>
	<li>Check out the <a href="https://dev.microsoftedge.com/">Microsoft Edge Developer Center</a> for valuable resources and tools when working with the Microsoft Edge browser.</li>
	<li>An <a href="https://www.codeproject.com/Articles/596255/Testing-Web-Sites-with-Modern-ie">in-depth overview</a> on how to scan your site using the site scanner.</li>
	<li>View our complete video on Channel 9: <a href="https://aka.ms/modernweb">Riding the Modern Web: Five things to consider as a web developer</a></li>
	<li><a href="https://code.visualstudio.com/">Download Visual Studio Code for free</a> for a great cross-platform coding experience for web developers. Also check out our <a href="https://channel9.msdn.com/Blogs/BeLux-Developer/Getting-Started-with-Visual-Studio-Code">webinar</a> on how to get started with Visual Studio Code.</li>
</ul>
<em>For an overview of the 5 things to consider when developing for the modern web, check out our</em> <a href="https://aka.ms/modernweb">17-minute video</a>.
<iframe src="https://channel9.msdn.com/Blogs/BeLux-Developer/Riding-the-Modern-Web-5-things-to-consider-as-a-web-developer/player" width="905" height="509" frameborder="0" allowfullscreen="allowfullscreen"></iframe>]]></content:encoded>
    </item>
    <item>
      <title>Riding the Modern Web: CSS Vendor Prefixes</title>
      <link>https://docs.microsoft.com/archive/blogs/belux/riding-the-modern-web-css-vendor-prefixes</link>
      <pubDate>Fri, 13 Nov 2015 13:04:28 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Belux]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/belux/?p=7171</guid>
      <description><![CDATA[The use of CSS vendor prefixes is a very common practice in web development. We’ve all come across...]]></description>
      <content:encoded><![CDATA[The use of <a href="https://en.wikipedia.org/wiki/CSS_filter">CSS vendor prefixes</a> is a very common practice in web development. We’ve all come across those constructs in CSS scripts, such as -moz-, -ms- or -webkit- or others. Using those prefixes, we can define browser-specific CSS markup.
However, it is important to realize that these CSS prefixes were created and are still being used by browser vendors to <strong>put experimental features in the hands of web developers</strong>, who could then try out the new functionality. Once validated, those experimental features are then moved in the web standard.

The main problem with CSS vendor prefixes is the fact that they are used for experimental features, which means that they are inherently <strong>unreliable</strong>. Browser vendors could change the behavior of these features at any time – note that modern, aka evergreen, browsers are constantly being updated. As a result, end users browsing your web content may experience changes in behavior at any given time, and may potentially have breaking functionality across browsers. <strong>Do you want your website users to be your guinea pigs?</strong>

<em>This blogpost is the third in a series about Modern Web development. We’ll be covering the following topics:</em>
<ul>
	<li><em><a href="https://blogs.msdn.microsoft.com/belux/2015/11/05/riding-the-modern-web-dealing-with-plugins/">Plugins</a></em></li>
	<li><em><a href="https://blogs.msdn.microsoft.com/belux/2015/11/05/riding-the-modern-web-dealing-with-javascript-libraries/" target="_blank">External JavaScript Libraries</a></em></li>
	<li><em>CSS prefixes (this article)</em></li>
	<li><em><a href="https://blogs.msdn.microsoft.com/belux/2015/11/19/riding-the-modern-web-avoiding-browser-detection/" target="_blank">Browser and feature detection</a></em></li>
	<li><a href="https://blogs.msdn.microsoft.com/belux/2015/12/14/riding-the-modern-web-render-mode-less/" target="_blank"><em>Rendering modes</em></a></li>
</ul>
<iframe src="https://channel9.msdn.com/Blogs/BeLux-Developer/Riding-the-Modern-Web-CSS-Vendor-Prefixes/player" width="905" height="509" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
<h2>Example: border radius</h2>
Let’s look at a specific example of a CSS prefix, namely <strong>border-radius</strong>. Using the border-radius, we can give a button element rounder corners. In the below example you can see a fragment of CSS script which defines the layout of a button element. In this case, we define the border radius for Webkit-based browsers and the Mozilla FireFox browser.
<div style="border: solid windowtext 1.0pt;padding: 1.0pt 4.0pt 1.0pt 4.0pt">
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: maroon;background: white">#<span class="SpellE">callToAction</span></span> <span class="SpellE"><span class="GramE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: maroon;background: white">a.order</span></span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: maroon;background: white">-button</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> {</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">       </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">font-size</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">: </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">2em</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">       </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">padding</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">: </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">5px</span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">0</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">       </span><span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">text-<span class="GramE">align<span style="color: black">:</span><span style="color: blue">center</span></span></span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">       </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">width</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">: </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">100%</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> </span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">       </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: yellow">-<span class="SpellE">moz</span>-border-radius</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">: </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: yellow">1em</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">       </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: yellow">-<span class="SpellE">webkit</span>-border-radius</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">: </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: yellow">1em</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">;</span></p>

</div>
&nbsp;

When rendering the website in Google Chrome, which is a Webkit-based browser, that the ‘Order Now’ button has nicely rounded corners.

<a href="https://msdnshared.blob.core.windows.net/media/2015/11/111.png"><img class="alignnone  wp-image-7191" src="https://msdnshared.blob.core.windows.net/media/2015/11/111-300x146.png" alt="1" width="407" height="198" /></a>
<em>Button rendered in Google Chrome</em>

However, when rendering this same button in Mozilla FireFox, you’ll notice that the button does not have this same layout, although we specified it similarly in CSS using the corresponding <strong>-moz-border-radius</strong> CSS vendor prefix.

<a href="https://msdnshared.blob.core.windows.net/media/2015/11/23.png"><img class="alignnone  wp-image-7201" src="https://msdnshared.blob.core.windows.net/media/2015/11/23-300x139.png" alt="2" width="407" height="189" /></a>
<em>Button rendered in Mozilla FireFox</em>

This means that the FireFox browser itself is no longer interpreting this specific CSS prefix!

Checking for <strong>border-radius </strong>on the <a href="https://caniuse.com/#search=border-radius">CanIUse</a> website reveals that all modern browsers now support the equivalent <strong>border-radius</strong> CSS prefix that is part of the <a href="https://www.w3.org/TR/css3-border/#the-border-radius">CSS3 web standard</a>.

<a href="https://msdnshared.blob.core.windows.net/media/2015/11/32.png"><img class="alignnone  wp-image-7211" src="https://msdnshared.blob.core.windows.net/media/2015/11/32-300x137.png" alt="3" width="407" height="186" /></a>
<em>Border-Radius on CanIUse.com</em>

After modifying our CSS fragment and using the corresponding web standards browser-radius, all browsers now correctly render the button.
<div style="border: solid windowtext 1.0pt;padding: 1.0pt 4.0pt 1.0pt 4.0pt">
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: maroon;background: white">#<span class="SpellE">callToAction</span></span> <span class="SpellE"><span class="GramE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: maroon;background: white">a.order</span></span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: maroon;background: white">-button</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> {</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">       </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">font-size</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">: </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">2em</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">       </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">padding</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">: </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">5px</span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">0</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">       </span><span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">text-<span class="GramE">align<span style="color: black">:</span><span style="color: blue">center</span></span></span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">       </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">width</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">: </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">100%</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">       </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: yellow">border-radius</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">: </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: yellow">1em</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: yellow">;</span></p>

</div>
&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2015/11/42.png"><img class="alignnone  wp-image-7181" src="https://msdnshared.blob.core.windows.net/media/2015/11/42-300x143.png" alt="4" width="407" height="194" /></a>
<em>Button rendered in Mozilla FireFox</em>
<h2>Auto prefixers?</h2>
But what about CSS prefixer utilities? The utilities allow you to write CSS code that does not contain vendor-specific CSS prefixes, but automatically inject these vendor-specific CSS prefixes in your website code through a gulp or grunt front-end build task. Examples of such tools are <a href="https://github.com/postcss/autoprefixer">AutoPrefixer</a>, <a href="https://lessprefixer.com/">LessPrefixer</a>, or <a href="https://prefixr.com/">Prefixr</a>, etcetera.

Although these tools make your life much easier, the end result is still website code that leverages vendor-specific prefixes. So the issue of leveraging potentially experimental features in production remains.
<h2>Conclusion</h2>
As mentioned at the beginning of this post, CSS vendor prefixes are used for giving web developers access to experimental browser features. It is therefore important that you only put those features in the hands of web developers or a limited set of test users, and definitely not expose your end users to it.

As soon as these experimental features have been validated by the web community, they are standardized, at which point you can safely reference them in your production website code and expect all browsers to behavior in the same way.

<strong>Check your website now for compatibility with the Modern Web!</strong>
<strong><a href="https://dev.windows.com/en-us/microsoft-edge/tools/staticscan/" target="_blank"><img class="alignnone  wp-image-7081" src="https://msdnshared.blob.core.windows.net/media/2015/11/81-300x139.png" alt="8" width="492" height="228" /></a></strong>
<h2>Additional resources</h2>
<ul>
	<li>Check out the <a href="https://dev.microsoftedge.com/">Microsoft Edge Developer Center</a> for valuable resources and tools when working with the Microsoft Edge browser.</li>
	<li>An <a href="https://www.codeproject.com/Articles/596255/Testing-Web-Sites-with-Modern-ie">in-depth overview</a> on how to scan your site using the site scanner.</li>
	<li>View our complete video on Channel 9: <a href="https://aka.ms/modernweb">Riding the Modern Web: Five things to consider as a web developer</a></li>
	<li><a href="https://code.visualstudio.com/">Download Visual Studio Code for free</a> for a great cross-platform coding experience for web developers. Also check out our <a href="https://channel9.msdn.com/Blogs/BeLux-Developer/Getting-Started-with-Visual-Studio-Code">webinar</a> on how to get started with Visual Studio Code.</li>
</ul>
<em>For an overview of the 5 things to consider when developing for the modern web, check out our</em> <a href="https://aka.ms/modernweb">17-minute video</a>.
<iframe src="https://channel9.msdn.com/Blogs/BeLux-Developer/Riding-the-Modern-Web-5-things-to-consider-as-a-web-developer/player" width="905" height="509" frameborder="0" allowfullscreen="allowfullscreen"></iframe>]]></content:encoded>
    </item>
    <item>
      <title>Riding the Modern Web: Dealing with JavaScript Libraries</title>
      <link>https://docs.microsoft.com/archive/blogs/belux/riding-the-modern-web-dealing-with-javascript-libraries</link>
      <pubDate>Thu, 05 Nov 2015 12:23:30 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Belux]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/belux/?p=7161</guid>
      <description><![CDATA[There are few websites that don’t make use of external JavaScript libraries. The most widely used...]]></description>
      <content:encoded><![CDATA[There are few websites that don’t make use of external JavaScript libraries. The most widely used library is probably jQuery. They allow you to reuse application logic that otherwise you’d have to write and maintain yourself, so why reinvent the wheel?

On the other hand, as with any external code you use, you potentially introduce bugs, security, performance issues or unexpected behavior. For example, each JavaScript library you use needs to be loaded in the browser, adding an additional server roundtrip, negatively impacting the performance. In short, you need to be aware of the risks you’re introducing into your website.

But what strategies can you follow to mitigate those risks when building your websites? The best strategy of course for mitigating risks, is to eliminate the risk factor entirely. In practice, this means that you need to question yourself whether you actually need the external library or if you could leverage web standards functionality. The second strategy is to contain the risk by making sure you follow up on updates, making sure you always upgrade to the latest stable version of each library.

<em>This blogpost is the second in a series about Modern Web development. We’ll be covering the following topics:</em>
<ul>
	<li><a href="https://blogs.msdn.microsoft.com/belux/2015/11/05/riding-the-modern-web-dealing-with-plugins/" target="_blank"><em>Plugins </em></a></li>
	<li><em>External JavaScript Libraries (this article)</em></li>
	<li><a href="https://blogs.msdn.microsoft.com/belux/2015/11/13/riding-the-modern-web-css-vendor-prefixes/" target="_blank"><em>CSS prefixes</em></a></li>
	<li><a href="https://blogs.msdn.microsoft.com/belux/2015/11/19/riding-the-modern-web-avoiding-browser-detection/" target="_blank"><em>Browser and feature detection</em></a></li>
	<li><a href="https://blogs.msdn.microsoft.com/belux/2015/12/14/riding-the-modern-web-render-mode-less/" target="_blank"><em>Rendering modes</em></a></li>
</ul>
<iframe src="https://channel9.msdn.com/Blogs/BeLux-Developer/Riding-the-Modern-Web-Dealing-with-JavaScript-Libraries/player" width="905" height="509" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
<h2>Replacing jQuery functionality</h2>
As mentioned above, one of the most commonly used JavaScript libraries is jQuery. This JavaScript library provides web developers with, amongst others, an easy way to query and manipulate the HTML DOM.

In the following example, we’ll demonstrate how to replace DOM manipulations with web standards functionality. In the code sample below you can see some examples of doing this using jQuery.
<div style="border: solid windowtext 1.0pt;padding: 1.0pt 4.0pt 1.0pt 4.0pt">
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: green;background: white">// Retrieve DOM element with id '<span class="SpellE">featuredProduct</span>'</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">var</span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> product = $(</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: #a31515;background: white">'#<span class="SpellE">featuredProduct</span>'</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> </span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: green;background: white">// Retrieve all image child elements for the </span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">var</span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> <span class="SpellE">productImages</span> = $(</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: #a31515;background: white">'#<span class="SpellE">featuredProduct</span>'</span><span class="GramE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">).find</span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">(</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: #a31515;background: white">'<span class="SpellE">img</span>'</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">)</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> </span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: green;background: white">// Add a class to the given element</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    $(</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: #a31515;background: white">'#<span class="SpellE">featuredProduct</span>'</span><span class="GramE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">).<span class="SpellE">addClass</span></span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">(</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: #a31515;background: white">'featured'</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> </span></p>

</div>
Now let’s look at how this can be transformed using standard JavaScript functionality.
<div style="border: solid windowtext 1.0pt;padding: 1.0pt 4.0pt 1.0pt 4.0pt">
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> </span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: green;background: white">// Retrieve DOM element with id '<span class="SpellE">featuredProduct</span>'</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">var</span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> product = <span class="SpellE"><span class="GramE">document.getElementById</span></span>(</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: #a31515;background: white">'<span class="SpellE">featuredProduct</span>'</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> </span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: green;background: white">// Retrieve all image child elements for the </span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">var</span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> <span class="SpellE">productImages</span> = <span class="SpellE"><span class="GramE">document.querySelectorAll</span></span>(</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: #a31515;background: white">'#<span class="SpellE">featuredProduct</span>
<span class="SpellE">img</span>'</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> </span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: green;background: white">// Add a class to the given element</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    <span class="GramE">document.querySelector</span>(</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: #a31515;background: white">'#featuredProduct'</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">).classList.add(</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: #a31515;background: white">'featured'</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> </span></p>

</div>
There are many more scenarios which can be translated into JavaScript but as you can see, this can be a relatively easy task to achieve. Note that jQuery provides more functionality than just DOM manipulations, so there are occasions where you will need JavaScript libraries.
<h2>Dealing with external JavaScript libraries</h2>
As mentioned, sometimes you need to use an external library because it provides functionality that is not provided through web standards.

When you do, you need to make sure that you regularly check your site and upgrade to the latest stable release of each of those JavaScript libraries. With each new version of the library you may get new functionality but more important, you get one or more bug fixes.
<h2>Conclusion</h2>
External JavaScript Libraries can be of great value to quickly bring in functionality to your website, however you need to be aware of the risks of using external software components.

Web standards have evolved over time and some functionality previously provided through external libraries are now available in the web standard and are available cross-browser and cross-platform.

So when you work with external JavaScript, question yourself if you could replace its functionality with standard JavaScript, and if you do need it, make sure to keep your libraries up to date.

<strong>Check your website now for compatibility with the Modern Web!</strong>
<strong><a href="https://dev.windows.com/en-us/microsoft-edge/tools/staticscan/" target="_blank"><img class="alignnone  wp-image-7081" src="https://msdnshared.blob.core.windows.net/media/2015/11/81-300x139.png" alt="8" width="492" height="228" /></a></strong>
<h2>Additional resources</h2>
<ul>
	<li>Check out the <a href="https://dev.microsoftedge.com/">Microsoft Edge Developer Center</a> for valuable resources and tools when working with the Microsoft Edge browser.</li>
	<li>An <a href="https://www.codeproject.com/Articles/596255/Testing-Web-Sites-with-Modern-ie">in-depth overview</a> on how to scan your site using the site scanner.</li>
	<li>View our complete video on Channel 9: <a href="https://aka.ms/modernweb">Riding the Modern Web: Five things to consider as a web developer</a></li>
	<li><a href="https://code.visualstudio.com/">Download Visual Studio Code for free</a> for a great cross-platform coding experience for web developers. Also check out our <a href="https://channel9.msdn.com/Blogs/BeLux-Developer/Getting-Started-with-Visual-Studio-Code">webinar</a> on how to get started with Visual Studio Code.</li>
</ul>
<em>For an overview of the 5 things to consider when developing for the modern web, check out our</em> <a href="https://aka.ms/modernweb">17-minute video</a>.
<iframe src="https://channel9.msdn.com/Blogs/BeLux-Developer/Riding-the-Modern-Web-5-things-to-consider-as-a-web-developer/player" width="905" height="509" frameborder="0" allowfullscreen="allowfullscreen"></iframe>]]></content:encoded>
    </item>
    <item>
      <title>Riding the Modern Web: Dealing with Plugins</title>
      <link>https://docs.microsoft.com/archive/blogs/belux/riding-the-modern-web-dealing-with-plugins</link>
      <pubDate>Thu, 05 Nov 2015 10:03:31 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Belux]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/belux/?p=7073</guid>
      <description><![CDATA[Plugins were implemented to give us functionality that browsers and the web standards did not...]]></description>
      <content:encoded><![CDATA[Plugins were implemented to give us functionality that browsers and the web standards did not provide us. One such example is showing video content in a website. The web was initially setup to provide documents and links between documents, but not for playing video or audio content. However, plugins have become the main source of security breaches, which is why many of the browser vendors are removing support for plugins entirely. Moreover, many mobile platforms do not support plugins altogether.

As a result, when your website is using plugins, many of your users may actually get a bad browsing experience because the content you're providing cannot be presented by the user's browser of choice. Remember, you cannot expect people to use a specific browser or browser version – the user is in total control over that choice.

<em>This blogpost is the first in a series about Modern Web development. We’ll be covering the following topics:</em>
<ul>
	<li><em>Plugins (this article)</em></li>
	<li><a href="https://blogs.msdn.microsoft.com/belux/2015/11/05/riding-the-modern-web-dealing-with-javascript-libraries/" target="_blank"><em>External JavaScript Libraries</em></a></li>
	<li><a href="https://blogs.msdn.microsoft.com/belux/2015/11/13/riding-the-modern-web-css-vendor-prefixes/" target="_blank"><em>CSS prefixes</em></a></li>
	<li><a href="https://blogs.msdn.microsoft.com/belux/2015/11/19/riding-the-modern-web-avoiding-browser-detection/" target="_blank"><em>Browser and feature detection</em></a></li>
	<li><a href="https://blogs.msdn.microsoft.com/belux/2015/12/14/riding-the-modern-web-render-mode-less/" target="_blank"><em>Rendering modes</em></a></li>
</ul>
<iframe src="https://channel9.msdn.com/Blogs/BeLux-Developer/Riding-the-Modern-Web-Dealing-with-Plugins/player" width="905" height="509" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
<h2>Embedding video <strong>using plugins</strong></h2>
As an example, we’ll be adding video content from an mp4 file into our website. We have set up a sample ecommerce website, Fourth Coffee, to demonstrate this.

<img class="alignnone wp-image-7151 " src="https://msdnshared.blob.core.windows.net/media/2015/11/110-300x250.png" alt="1" width="600" height="500" />

Traditionally, with plugins, adding video content to your site was done by using the <a href="https://www.w3.org/wiki/HTML/Elements/object"><strong>&lt;object&gt;</strong></a> and <a href="https://www.w3.org/wiki/HTML/Elements/embed"><strong>&lt;embed&gt;</strong></a> HTML tags. These allowed you to specify which external plugin to use and where to download it from.

In the below code sample, we’re using the <a href="https://www.apple.com/quicktime/">Apple QuickTime Player</a> plugin to display a video. Similarly, you could also use the <a href="https://get.adobe.com/flashplayer/">Adobe Flash Player</a> or the Microsoft Media Player for this.
<div style="border: solid windowtext 1.0pt;padding: 1.0pt 4.0pt 1.0pt 4.0pt">
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">   </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">&lt;</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: maroon;background: yellow">object</span> <span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">classid</span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">           </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">codebase</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="https://www.apple.com/qtactivex/qtplugin.cab"</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">           </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">height</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="512"</span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">width</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="640"&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">        </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">&lt;</span><span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: maroon;background: white">param</span></span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">name</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="<span class="SpellE">src</span>"</span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">value</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="./Video/contosocoffee.mp4"&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">        </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">&lt;</span><span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: maroon;background: white">param</span></span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">name</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="<span class="SpellE">autoplay</span>"</span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">value</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="true"&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">        </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">&lt;</span><span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: maroon;background: white">param</span></span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">name</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="type"</span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">value</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="video/<span class="SpellE">quicktime</span>"</span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">height</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="256"</span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">width</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="320"&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> </span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">        </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">&lt;</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: maroon;background: yellow">embed</span> <span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">src</span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="./Video/contosocoffee.mp4"</span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">height</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="256"</span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">width</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="320"</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">
</span><span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">autoplay</span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="true"</span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">type</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="video/<span class="SpellE">quicktime</span>"</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">
</span><span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red;background: white">pluginspage</span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">="https://www.apple.com/quicktime/download/"&gt;&lt;/</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: maroon;background: white">embed</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white">    </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">&lt;/</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: maroon;background: white">object</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue;background: white">&gt;</span></p>

</div>
&nbsp;

When opening this web page in Internet Explorer 11, which supports plugins, the videos shows correctly, however in Google Chrome or Microsoft Edge, the video is not being shown. So, in this case, users with the latest browsers or surfing your website using their mobile device, will not see your amazing video!

<img class="alignnone wp-image-7141 " src="https://msdnshared.blob.core.windows.net/media/2015/11/22-300x212.png" alt="2" width="345" height="244" />
<em>Internet Explorer</em>

<em> </em><img class="alignnone wp-image-7131 " src="https://msdnshared.blob.core.windows.net/media/2015/11/31-300x210.png" alt="3" width="344" height="241" />
<em>Microsoft Edge</em>

<img class="alignnone wp-image-7121 " src="https://msdnshared.blob.core.windows.net/media/2015/11/41-300x241.png" alt="4" width="344" height="276" />
<em>Google Chrome</em>
<h2>Embedding video content <strong>using web standards</strong></h2>
With HTML5, the web standard has been extended to include support for audio and video, by means of the <a href="https://www.w3.org/wiki/HTML/Elements/video"><strong>&lt;video&gt;</strong></a> and <a href="https://www.w3.org/wiki/HTML/Elements/audio"><strong>&lt;audio&gt;</strong></a> HTML tags. As these are standards, most of the browsers around nowadays have support for this.

Let’s now look at how to change our website to use the web standards. We start with removing the entire &lt;object&gt; tag, including the &lt;embed&gt; tag. We then replace it with the <strong>video</strong> HTML tag. As you can see in below code fragment, we also specify the link to our source video file and provide the height, width and auto-playing of the video.
<div style="border: solid windowtext 1.0pt;padding: 1.0pt 4.0pt 1.0pt 4.0pt">
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black"> </span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black">    </span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue">&lt;</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: maroon">video</span> <span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red">src</span></span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue">="./video/contosocoffeE.mp4"</span> <span class="SpellE"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red">autoplay</span></span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red">height</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue">="320"</span> <span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: red">width</span><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: blue">="512"/&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt;line-height: normal;border: none;padding: 0cm"><span lang="EN-US" style="font-size: 9.5pt;font-family: Consolas;color: black;background: white"> </span></p>

</div>
If we now open the same web page in Microsoft Edge, Google Chrome or Mozilla Firefox, we see that the video is correctly displayed. In addition, this video will now also be available when browsing from a mobile platform. Notice that we also get the play controls for free.

<img class="alignnone  wp-image-7111" src="https://msdnshared.blob.core.windows.net/media/2015/11/51-300x211.png" alt="5" width="343" height="241" />        <img class="alignnone size-medium wp-image-7101" src="https://msdnshared.blob.core.windows.net/media/2015/11/61-300x241.png" alt="6" width="300" height="241" />        <img class="alignnone  wp-image-7091" src="https://msdnshared.blob.core.windows.net/media/2015/11/71-300x210.png" alt="7" width="341" height="239" />
<h2>Other plugins</h2>
As shown in the above example, for video and audio, the web standard has been extended and gives us built-in support. But what about more specialized plugins that you may be using?

One of the most commonly used plugins is for rendering PDF documents. Many of the browser vendors are starting to incorporate this specific functionality into the browser itself, avoiding the need to install a third-party plugin. Microsoft Edge for example, now has support to render PDF documents inside the browser.

Another common scenario is rendering 3D objects and scenes, which typically required specialized vendor plugins. However, the web community has stepped forward and has built several JavaScript libraries (<a href="https://d3js.org/">D3.js</a>, <a href="https://www.babylonjs.com/">BabylonJS</a>, <a href="https://threejs.org/">three.js</a>) that allow 3D rendering inside the browser, without the need for plugins, hence providing a solution across most browsers and platforms.
<h2>Conclusion</h2>
While plugins were a great solution at the time, they were really a stopgap solution. Moreover, they are becoming a UX and security burden. Because of the evolution of web standards and the advent of JavaScript libraries, there are now solutions for web developers that work across browsers and platforms.

So, before adding a plugin to your website, check if there is not a viable alternative in the web standard or a JavaScript framework that suits your need.

<strong>Check your website now for compatibility with the Modern Web!</strong>
<strong> <a href="https://dev.windows.com/en-us/microsoft-edge/tools/staticscan/"><img class="alignnone  wp-image-7081" src="https://msdnshared.blob.core.windows.net/media/2015/11/81-1024x474.png" alt="8" width="648" height="300" /></a></strong>
<h2>Additional resources</h2>
<ul>
<ul>
<ul>
	<li>Check out the <a href="https://dev.microsoftedge.com/">Microsoft Edge Developer Center</a> for valuable resources and tools when working with the Microsoft Edge browser.</li>
	<li>An <a href="https://www.codeproject.com/Articles/596255/Testing-Web-Sites-with-Modern-ie">in-depth overview</a> on how to scan your site using the site scanner.</li>
	<li>View our complete video on Channel 9: <a href="https://aka.ms/modernweb">Riding the Modern Web: Five things to consider as a web developer</a></li>
	<li><a href="https://code.visualstudio.com/">Download Visual Studio Code for free</a> for a great cross-platform coding experience for web developers . Also check out our <a href="https://channel9.msdn.com/Blogs/BeLux-Developer/Getting-Started-with-Visual-Studio-Code">webinar</a> on how to get started with Visual Studio Code.</li>
</ul>
</ul>
</ul>

<hr />

<em>For an overview of the 5 things to consider when developing for the modern web, check out our <a href="https://aka.ms/modernweb">17-minute video</a>.</em>
<iframe src="https://channel9.msdn.com/Blogs/BeLux-Developer/Riding-the-Modern-Web-5-things-to-consider-as-a-web-developer/player" width="905" height="509" frameborder="0" allowfullscreen="allowfullscreen"></iframe>]]></content:encoded>
    </item>
    <item>
      <title>Build your first website and win!</title>
      <link>https://docs.microsoft.com/archive/blogs/belux/build-your-first-website-and-win</link>
      <pubDate>Wed, 14 Oct 2015 09:17:47 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Belux]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/belux/?p=6931</guid>
      <description><![CDATA[As a student have you ever wanted to write your own blog, create a website from scratch or simply...]]></description>
      <content:encoded><![CDATA[As a student have you ever wanted to write your own blog, create a website from scratch or simply try some cool stuff in the cloud?

Then we've got the tool for you and what better <span style="text-decoration: underline"><strong>it's free</strong></span>?!

To help you get started we've put together 3 steps to help you. Complete these three steps today and you'll automatically get a t-shirt!

<strong>Step 1. Get Access!</strong>

<img class=" wp-image-6951  alignleft" src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture21.png" alt="Picture2" width="151" height="262" />

Go to <a href="https://www.dreamspark.com/Product/Product.aspx?productid=99" target="_blank">Microsoft DreamSpark </a>and Activate your Azure for Student subscription.

There's helpful short videos below to show you how!

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

<strong>How to activate your Azure Subscription (Dutch)</strong>

[embed width=100]https://video.ch9.ms/ch9/b236/53517999-5281-4e5c-88ef-8f164dc7b236/azurestudent_mid.mp4[/embed]

<strong>How to activate your Azure Subscription (French)</strong>

[embed width=100]https://video.ch9.ms/ch9/49f4/28ed217a-9529-4e16-b3b4-3259948549f4/MicrosoftAzurepourDreamSpark_mid.mp4[/embed]

<iframe src="https://channel9.msdn.com/Shows/Mechanics/Office-365-admin-updates-from-portal-enhancements-to-PowerShell/player" width="960" height="540" frameborder="0" allowfullscreen="allowfullscreen"></iframe>

<strong>Step 2. Build your own Website or Wordpress!</strong>

<a href="https://msdnshared.blob.core.windows.net/media/2015/10/Picture12.png"><img class=" wp-image-6941  alignleft" src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture12.png" alt="Picture1" width="151" height="262" /></a>There's more helpful short videos to show you how!

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

Creating a WordPress Site using Azure (NL Version)

[embed]https://video.ch9.ms/ch9/4eba/7c37ed4b-6f20-496c-9e13-46db5c9e4eba/wordpressinazure_high.mp4[/embed]

Publishing a Web App in Azure (NL Version)

[embed]https://video.ch9.ms/ch9/1511/0cd9ff35-fb93-4350-b6f8-58df30dc1511/WebAppAzure_high.mp4[/embed]

Creating your first web page using Visual Studio and Azure (FR Version)

[embed]https://video.ch9.ms/ch9/db33/2bde0a09-1c2a-4986-ba4a-8b5d83e8db33/PremierepagewebdansMicrosoftAzureavecVisualStudio_mid.mp4[/embed]

&nbsp;

<strong>3. Submit your entry and win a t-shirt!</strong>

<a href="https://msdnshared.blob.core.windows.net/media/2015/10/Picture31.png"><img class="  wp-image-6961 alignleft" src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture31.png" alt="Picture3" width="150" height="260" /></a>Simply provide a screenshot of your Azure session with your name, (like the one below) and you instantly win a t-shirt!

<a href="https://petermaynard2015.polldaddy.com/s/build-your-first-website-win" target="_blank"><img class="alignnone size-full wp-image-6981" src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture51.png" alt="Picture5" width="230" height="53" /></a>

&nbsp;

&nbsp;

&nbsp;

&nbsp;

<em>Example screenshot</em>

<a href="https://msdnshared.blob.core.windows.net/media/2015/10/Picture-6.png"><img class="alignnone wp-image-7032 " src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture-6-1024x548.png" alt="Picture 6" width="879" height="470" /></a>

Read the full <a href="https://msdnshared.blob.core.windows.net/media/2015/10/Contest-Rules1.pdf">Terms and Conditions</a>

&nbsp;
<p style="text-align: center">Example t-shirt</p>
<p style="text-align: center"><a href="https://msdnshared.blob.core.windows.net/media/2015/10/Picture4.gif"><img class=" size-full wp-image-6971 aligncenter" src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture4.gif" alt="Picture4" width="216" height="217" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>WordPress site aanmaken via Microsoft Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/belux/wordpress-site-aanmaken-via-microsoft-azure</link>
      <pubDate>Mon, 05 Oct 2015 09:34:03 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Belux]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/belux/?p=6761</guid>
      <description><![CDATA[Inleiding:

Microsoft Azure is een clouddienst die je in staat stelt om snel en eenvoudig een...]]></description>
      <content:encoded><![CDATA[<strong>Inleiding:</strong>

<a href="https://azure.microsoft.com/nl-nl/">Microsoft Azure</a> is een clouddienst die je in staat stelt om snel en eenvoudig een website online te zetten. Azure heeft nog vele andere toepassingen, maar daar gaan we in deze tutorial niet verder op in. Ook al heb je geen ervaring met het maken van sites zijn er nog steeds andere mogelijkheden die je in staat stellen om je eigen site te maken. Eén van de bekendere mogelijkheden is WordPress, vandaar dat we deze gebruiken.

Kortom is er totaal geen programmeerkennis vereist en kan je simpelweg door het volgen van deze tutorial je site op het internet krijgen met behulp van Microsoft Azure.

<strong>Wat heb je nodig?</strong>
- Een account voor Microsoft Azure (deze kan je als student eenvoudig en gratis krijgen: <a href="https://channel9.msdn.com/Blogs/BeLux-Student/Activating-your-Azure-Student-Submission-NL">Activating your Azure Student Subscription</a>).

<strong>Handig om te weten.</strong>
- Indien je geen zin hebt om te lezen, kan je hier een <a href="https://channel9.msdn.com/Blogs/BeLux-Student/Wordpress-website-maken-met-Azure">videotutorial terugvinden</a>.



<strong>Waar te beginnen?</strong>

We starten door in te loggen op de <a href="https://portal.azure.com">portal </a>van Microsoft Azure. Eenmaal ingelogd gaan we beginnen met het aanmaken van een WordPress site. Dit doen we door op “Nieuw” te klikken, waarna we "Web en mobiel" en daarna "Marketplace" selecteren. Dit zal ons toelaten om een nieuwe website te maken aan de hand van een al reeds bestaande template. In dit geval gaan we gebruik maken van de WordPress template.
<a href="https://msdnshared.blob.core.windows.net/media/2015/10/Picture1.png"><img class="alignnone size-full wp-image-6771" src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture1.png" alt="Azure" width="839" height="729" /></a>

We zoeken dus in de "Marketplace" op WordPress en we selecteren de gewone WordPress template. Je zal meerdere WordPress templates te zien krijgen, maar we maken gebruik van de basic template, uitgegeven door WordPress, aangezien  deze werkt met de gratis Student Subscription van Azure.

<a href="https://msdnshared.blob.core.windows.net/media/2015/10/Picture2.png"><img class="alignnone size-full wp-image-6781" src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture2.png" alt="Picture2" width="923" height="446" /></a>

Eenmaal je deze template geselecteerd hebt, zal je hiervan een beschrijving te zien krijgen. Onderaan deze beschrijving zal je de knop "Maken" zien, klik hier op en je kan beginnen met je website aan te maken.

<strong>Azure instellen</strong>

Er zal weer een nieuwe “blade” (Dit is het venster dat naast je andere vensters opent in je browser.) openen en hier zal je verschillende instellingen zien die jouw WordPress site zal gebruiken.

<a href="https://msdnshared.blob.core.windows.net/media/2015/10/Picture3.png"><img class="alignnone size-full wp-image-6791" src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture3.png" alt="Picture3" width="348" height="789" /></a>

<strong>Web-app:</strong>

Dit veld is zeer belangrijk, aangezien dit de URL wordt waarnaar de mensen zullen moeten surfen om op jouw site terecht te komen. Zorg ervoor dat de gekozen naam ook daadwerkelijk beschikbaar is. Indien de naam beschikbaar is, zal er een groen vinkje verschijnen en indien onbeschikbaar een rood uitroepteken. Je ziet onder het in te vullen veld ".azurewebsites.net" staan, dit zal achter je site naam komen te staan en zal dus samen met deze naam de volledige URL vormen. Als we nu bijvoorbeeld "AzureForLive" invullen, zal de URL "AzureForLive.azurewebsites.net" zijn.  Indien je later je eigen betalend domein hebt, zal je deze aan je WordPress site kunnen linken en zal je dus geen gebruik meer moeten maken van “.azurewebsites.net”.

<strong>Abonnement:</strong>

Hier zal je het abonnement van Azure moeten selecteren waaraan je je website wilt linken. We maken in dit voorbeeld gebruik van het DreamSpark abonnement, dewelke overeenkomt met dat van je gratis Student Subscription.

<strong>Resourcegroep:</strong>

Hierin ga je alle verschillende onderdelen die je gebruikt om je site op te bouwen groeperen. Zo zal je gebruik maken van een database en de WordPress web app, die we dus samen in een groep zetten. Het handige van zo een resourcegroep is dat je, eenmaal je site aangemaakt is, van alle onderdelen bijvoorbeeld de gezamenlijke kosten kan zien en je dit dus niet afzonderlijk moet gaan bekijken.

Klik hier op "Nieuwe aanmaken" en vul de naam van je resourcegroep in. Verder hoef je hier niets mee te doen, aangezien Azure de verschillende onderdelen automatisch aan je groep zal toevoegen.

<a href="https://msdnshared.blob.core.windows.net/media/2015/10/Picture4.png"><img class="alignnone size-full wp-image-6801" src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture4.png" alt="Picture4" width="472" height="221" /></a>

<strong>App Service-abonnement/-locatie:</strong>

Dit doen we door erop te klikken, waarna we naar een nieuwe blade worden gebracht. Hier kan je een nieuw "App Service-abonnement" aanmaken door op "Nieuwe maken" te klikken. Geef hierna de gewenste naam in voor je nieuwe "App Service-abonnement" en kies daarna de locatie van het datacenter waar je wilt dat je site gehost zal worden. Bij de locatie kan je voor een betere prestatie het beste kiezen voor een plaats geografisch zo dicht mogelijk bij jou. Het laatste dat we hier moeten instellen is de gewenste prijscategorie. Dit zal de CPU, opslagplaats, RAM en dergelijke van je WordPress site bepalen.

<a href="https://msdnshared.blob.core.windows.net/media/2015/10/Picture5.png"><img class="alignnone size-full wp-image-6811" src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture5.png" alt="Picture5" width="923" height="485" /></a>

<strong>Database:</strong>

Door erop te klikken krijg je de mogelijkheid om een nieuwe database aan te maken en doe dit door op "Create new" te klikken. Hier kan je dan de databasenaam, locatie en prijscategorie bepalen. Voor de locatie kies je het beste dezelfde plaats als waar je al eerder je "App Service-locatie" hebt ingesteld, omdat op deze manier je site sneller zal kunnen communiceren met je database, aangezien ze zich op dezelfde geografische locatie bevinden. Vervolgens moeten we ook de prijscategorie van onze database bepalen, wat automatisch "Titan" geselecteerd heeft. Maar aangezien we met een gratis Student Subscription werken, pakken we hier ook de gratis optie genaamd het "Mercurius" prijsplan en drukken we op "Selecteren". Als laatste voor de database moeten we enkel nog akkoord gaan met de "Juridische voorwaarden" door erop te klikken en deze te lezen, waarna je op "OK" drukt.

<a href="https://msdnshared.blob.core.windows.net/media/2015/10/Picture6.png"><img class="alignnone size-full wp-image-6821" src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture6.png" alt="Picture6" width="923" height="486" /></a>

<strong>Web-appinstellingen:</strong>

Als laatste instelling vinden we de "Web-appinstellingen" die standaard op "optioneel" staan. Deze "web-appinstellingen" geven een hele hoop opties om de veiligheid van je "web-app" te verbeteren, maar voor onze WordPress site is de standaard instelling voldoende en gaan we hier dus niet verder op in.

Nu kan je nog kiezen om je site vast te maken aan je "Startboard", wat wilt zeggen dat je dan er dan een "Tile" wordt aangemaakt die een snelle toegang geeft tot je site.

We hebben nu alle instellingen van Azure voor onze WordPress site ingesteld en moeten we enkel nog maar op "Maken" klikken om onze web-app aan te maken, dit kan tot enkele minuten duren.

&nbsp;

<strong>WordPress instellen</strong>

Eenmaal de web-app aangemaakt is, zal er meteen een venster met alle informatie over je app openen. Hier klik je op de URL van de site die je eerder hebt gekozen en dit zal je naar de instelpagina van WordPress brengen.

<a href="https://msdnshared.blob.core.windows.net/media/2015/10/Picture7.png"><img class="alignnone size-full wp-image-6831" src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture7.png" alt="Picture7" width="923" height="741" /></a>

Als eerste zal je de taal moeten kiezen waarmee je verder wilt gaan om je site in te stellen.

<a href="https://msdnshared.blob.core.windows.net/media/2015/10/Picture8.png"><img class="alignnone size-full wp-image-6841" src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture8.png" alt="Picture8" width="525" height="692" /></a>

Eenmaal we een taal gekozen hebben, komen we weer op een nieuwe pagina terecht waar we opnieuw wat informatie moeten ingeven. Zo zal je onder andere je "Websitetitel", dit is de tekst die bovenaan in je tabblad komt te staan, moeten ingeven en zal je ook een "gebruikersnaam" en "wachtwoord" moeten ingeven. Gebruikersnaam en wachtwoord zal je gebruiken om in te loggen op je WordPress site, zodat je veranderingen kan toebrengen (Vergeet deze dus niet!). Indien je een zwak wachtwoord gebruikt, zal je ook moeten aanvinken dat je akkoord bent met het gebruik van een zwak wachtwoord, aangezien dit de veiligheid van je site verminderd.

<a href="https://msdnshared.blob.core.windows.net/media/2015/10/Picture9.png"><img class="alignnone size-full wp-image-6851" src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture9.png" alt="Picture9" width="746" height="763" /></a>

Je zal ook een e-mailadres moeten ingeven, waarnaar WordPress een e-mail kan sturen in het geval dat je bijvoorbeeld je wachtwoord vergeten bent en indien je dit wilt, eventueel notificaties over je site. Als laatste zal je ook moeten kiezen of je wilt dat je site in suggesties van zoekmachines zoals "Bing" of "Google" zal voorkomen of niet.

Indien je dit alles hebt gedaan, rest enkel nog het aanklikken van "WordPress installeren" om je WordPress site daadwerkelijk aan te maken. Eenmaal het aanmaken gedaan is, zal je naar een pagina gebracht worden die je laat weten dat de installatie een succes was en een knop die je naar de inlogpagina zal leiden.

<a href="https://msdnshared.blob.core.windows.net/media/2015/10/Picture10.png"><img class="alignnone size-full wp-image-6861" src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture10.png" alt="Picture10" width="923" height="550" /></a>

Wanneer je inlogt op je site zal je naar het "admingedeelte" van de site gaan waar je nieuwe berichten en dergelijke kan toevoegen, kortom laat het je toe om allerlei aanpassingen aan je site toe te brengen.

Voor het geval je al meteen eens je nieuwe WordPress site wilt bekijken, moet je simpelweg met je muis linksboven in de taakbalk over je "websitenaam" zweven en daarna op "Site bekijken" klikken of gewoon de optie "Website bekijken", onder de titel "Vervolgstappen", selecteren.

<a href="https://msdnshared.blob.core.windows.net/media/2015/10/Picture11.png"><img class="alignnone size-full wp-image-6871" src="https://msdnshared.blob.core.windows.net/media/2015/10/Picture11.png" alt="Picture11" width="923" height="452" /></a>

Nu je alles hebt ingesteld is je WordPress site volledig klaar om er mee aan de slag te gaan.

&nbsp;

Mathias Samyn is een Microsoft student partner die elektronica-ICT studeert aan de AP Hogeschool in Antwerpen. In zijn vrije tijd probeert hij op de hoogte te blijven van de nieuwste ontwikkelingen op het vlak van technologie.]]></content:encoded>
    </item>
    <item>
      <title>22 Hours a day of hot topics, talks and dreams.</title>
      <link>https://docs.microsoft.com/archive/blogs/belux/22-hours-a-day-of-hot-topics-talks-and-dreams</link>
      <pubDate>Thu, 11 Jun 2015 00:00:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Belux]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/belux/2015/06/11/22-hours-a-day-of-hot-topics-talks-and-dreams/</guid>
      <description><![CDATA[Yesterday, the 1st of June I had probably one of the best days of my life. One of my dreams came...]]></description>
      <content:encoded><![CDATA[<p>Yesterday, the 1st of June I had probably one of the best days of my life. One of my dreams came thru, I had the opportunity to meet some of the big names of Microsoft from Redmond. Here is the schedule of my beautiful, but quite tiring day. I say tiring not because it was boring,&nbsp;certainly not! But because it was a day of 22 hours being awake. Quite hard! But most of all, it was worth it!<br />I woke up at 3.30 am, making myself ready, and most of all: coffee! My dad wanted to drive me to Ostend, where I could take the train to Brussels at 4.40 am. Thanks to him, for that! No busses so early in the morning. At 6.13 am I stepped upon the Thalys to Paris. I had a nice seat. The person at the right of me wanted to talk, I liked that! He had also connections in the IT sector for his professional life. I was excited to talk him about what the day would bring to me. He didn&rsquo;t mind, we went to the bar wagon to get some coffee and when our coffee was ready, we went back to our seat a little time later we were in Paris!</p>
<p>When arriving in Paris Nord my Thalys-friend noticed me the commercial of Microsoft at the Billboard, for me it was the moment to really start the day! I walked my way thru Le Grand Rex, I was impressed!</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/3443.1.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/3443.1.jpg"><img style="margin-right: auto; margin-left: auto; display: block;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/3443.1.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/3443.1.jpg" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/8802.2.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/8802.2.jpg"><img style="margin-right: auto; margin-left: auto; display: block;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/8802.2.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/8802.2.jpg" alt="" border="0" /></a><br />&nbsp;</p>
<p>The keynote started at 9 a.m. (a little bit later). Amanda Silver, a big person from Redmond. (don&rsquo;t mind I focus on &lsquo;big persons from Microsoft in Redmond&rsquo;) She is one of the inventors of Visual Basic, by now I develop in C# but my first steps 12 year ago as teenager were in VB,&nbsp;and I was excited to meet her.</p>
<p>One of the first things she said was about the intake at Microsoft of Satya Nadella: &ldquo;When Satya came at Microsoft everything becomes open&rdquo;. And if I listened to her, she really liked it. The talk was described that Windows 10 will be the only platform that runs apps made for all three major platforms. (Windows, Android and iOS). She talks about Windows Hello, and the other major additions to Windows 10 like interactive notification center, the benefit for developers of the app spotlight on the lockscreen and so on.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/0181.3.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/0181.3.jpg"><img style="margin-right: auto; margin-left: auto; display: block;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/0181.3.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/0181.3.jpg" alt="" border="0" /></a><br />&nbsp;<br />I was really excited about the introduction of the ability to print from your Windows 10 Phone!!! I heard much online when I followed the Build conference but I didn&rsquo;t hear about that feature. There was also a nice demo of continuum, and the people who know me do know that I like&nbsp;that feature! She&nbsp;told that for all these new features we have to implement a responsive design and showed us how to implement that.&nbsp; I also like the easy Bing maps control. There are many new features for apps. I cannot talk&nbsp;about&nbsp;each item but Drag and Drop from other apps inspires me&nbsp;a lot. She talked about how to implement feature detection. Feature detection is the principle to ask your device from within you code if it has a capability. In windows 10 it is important not to look at&nbsp;what kind of&nbsp;device it is (Phone, IoT, PC,&hellip;) but ask if the feature is accessible! Here&rsquo;s why: each device can go to another &lsquo;state of device&rsquo;: if you connect you phone with continuum functions to a screen it will become a pc.<br /><br />Jeff Burtoft came on stage to talk about the new key functions on the web. One of the most important things is the ability to run asp.net web apps as universal apps. It doesn&rsquo;t have to be Asp.net but each web page can be hosted as an app, and posted in&nbsp;the store. <br />He did an amazing demo of Flight Arcade, a local project from Microsoft, a game to fly a plane. He controlled it with keyboard, mouse and touch! But then&hellip; He came&nbsp;to the&nbsp;front of the stage, and &lsquo;flew' with his arms, and the plane in the apps flew with his movements! They say it was because the ability to connect a Microsoft Band, that he was wearing!</p>
<p style="text-align: center;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/6735.4.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/6735.4.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/6735.4.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/6735.4.jpg" alt="" border="0" /></a></p>
<p style="text-align: left;">&nbsp;<br />After that, my hero came on stage: Pete Brown! He did a demo about IoT, he ran a Windows 10 app on a Raspberry PI that controlled a big LED. That was&nbsp;a real&nbsp;show moment!<br />Amanda came back and talked about the new Azure functions. (App services, API apps, Azure vision API) and the for me biggest improvement: Azure app insights for mobile apps! She showed an expanded demo of that feature. I&rsquo;m sure, I shall use it.</p>
<p style="text-align: left;">After 2 hours of Keynote there was more coffee. I was so happy to keep the tiredness at bay! After the pause we heard really big news: Windows 10 release date is 29th of&nbsp;July, and I know, everyone knew that news also on&nbsp;the same day. But for us it was very special to hear that news in a Microsoft setting! Then it was time for the full session of Pete Brown his subject was about developing Windows 10 apps with XAML and C#. His entry note: Windows 10 apps finally&nbsp;have&nbsp;windows!</p>
<p style="text-align: center;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/2021.5.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/2021.5.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/2021.5.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/2021.5.jpg" alt="" border="0" /></a><br />&nbsp;</p>
<p>He said so many interesting things and I don&rsquo;t want to make this blog post too long&nbsp;and shall only talk about features I didn&rsquo;t know about from the online streaming.<br />In Windows 10 apps you will be able to modify the chrome: you can modify the UI of the window of your app itself.<br />He talks about Adaptive Tile template and inline actions in toast messages. Also one of the big improvements is the ability to compile your C# code using the C++ compiler. With C++ compiling your app will become much faster. But to implement that feature it will be lots of effort: you have to check <span style="text-decoration: underline;"><strong>only one checkbox</strong></span>! I like that kind of humor!</p>
<p>A feature I did know but, I want to focus on that is the new UI debugger for XAML apps. Like everyone knows F12 tools to debug the layout for your website, you can now do that with your apps and XAML!!</p>
<p>In the afternoon, it was Jeff Buftoft&rsquo;s time to talk about the web. I highlighted the most important features of web in my section about the keynote. It was a deep dive.</p>
<p>The most important thing to note is that we do have the opportunity to ask features and vote for them within the insiders program. You can do that in the Insiders app for Windows 10 and also for Microsoft Edge.&nbsp; They really want to know what we like! <br />One of the most important Lightening talks was about the Windows 10 great UI guidelines. They explained that they don't want to force us to use a predefined design like in Windows 8. They want that we use our own colors as background of our apps. They suggest us to use our brand colors. But they don&rsquo;t want us to be boring.</p>
<p>Pete Brown did also a Lightening talk about audio features in Windows 10. That are features like: Midi API, Audio Graph.. Microsoft wants that Windows 10 become more on the music scene!</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/8284.6.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/8284.6.jpg"><img style="margin-right: auto; margin-left: auto; display: block;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/8284.6.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/8284.6.jpg" alt="" border="0" /></a><br />&nbsp;<br />The last part of the conference day was Q &amp; A with the experts. I did dare to stand up and go to the microphone in the room. I asked features that are important for my business. (My business is making apps for people with handicap (disability). Most of the time I work for people with a mental disability. I do that on a voluntary basis.)</p>
<p>&nbsp;<br />My questions: When will Text-To-Speech be available in Dutch: the answer is pity enough that they don&rsquo;t know. They are working to add as&nbsp;many languages as possible.<br />I did also dare to fire the question: &ldquo;Will Microsoft buy Xamarin?&rdquo; Answer: We have a good relationship&nbsp; with the guys of Xamarin. We don&rsquo;t know where it will bring us.. <br />The end of the conference. I went to Hardrock Caf&eacute; Paris. As metalhead I wanted really to make time to be there. One pity fact: the music was Rock and surely not Hardrock.&nbsp; It was happy hour and a cocktail was cheaper than a pint. I drank a &ldquo;Blue Devil&rdquo;. I did like it a lot!</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/3404.7.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/3404.7.jpg"><img style="margin-right: auto; margin-left: auto; display: block;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/3404.7.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/3404.7.jpg" alt="" border="0" /></a></p>
<p>I had a hamburger in a local hamburger restaurant and then&nbsp;went to the train station. I had my Thalys at 8.50 PM. I also&nbsp;met a guy who went to the&nbsp;Build on Tour in Paris. At 00.30 am. (the day after..) I was back home. So 22 hours of being awake. But I&rsquo;m really happy that I had the chance!</p>
<p>I also want to thank the Belgium crew. We were one family!</p>
<p>Dennie Declercq <a href="https://www.ddsoft.be">www.ddsoft.be</a></p>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;">&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Belgians at //Build 2015 - Summary from Day 2</title>
      <link>https://docs.microsoft.com/archive/blogs/belux/belgians-at-build-2015-summary-from-day-2</link>
      <pubDate>Fri, 01 May 2015 00:37:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Belux]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/belux/2015/05/01/belgians-at-build-2015-summary-from-day-2/</guid>
      <description><![CDATA["There's a new Microsoft in town... And I like it!"&nbsp;
&nbsp;Yesterday, Bart Lannoeye wrote a...]]></description>
      <content:encoded><![CDATA[<h1><span style="font-size: large;"><em><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/5444.Untitled.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/5444.Untitled.png"><img style="margin-right: auto; margin-left: auto; display: block;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/5444.Untitled.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/5444.Untitled.png" alt="" border="0" /></a></em></span></h1>
<h1><span style="font-size: large;"><em>"There's a new Microsoft in town... And I like it!"&nbsp;</em></span></h1>
<p>&nbsp;Yesterday, <a href="https://twitter.com/bartlannoeye">Bart Lannoeye</a> wrote a <a href="https://blogs.msdn.com/b/belux/archive/2015/04/30/belgians-at-build-2015-summary-from-day-1.aspx">great overview of what was announced in the keynote</a> on the first day, today it's my turn to follow in his footsteps.&nbsp;</p>
<p>The first thing we noticed when we were trying to enter the keynote room was exactly the same as yesterday: lines.&nbsp; Huge lines.&nbsp;Oh, wait, now the line moves to another floor - that must be it, right?&nbsp; Ah no, wait, more lines.&nbsp; And more.&nbsp;&nbsp;Surprisingly enough, the lines move fast - say it took about 15 minutes, all-in, before we were seated.&nbsp; Needless to say:&nbsp; BUILD is big.&nbsp;</p>
<p>The stage was taken up by a DJ - the best way I can describe what I saw is that he was using a see-through screen on which he could write, manipulate and mix his tunes.&nbsp; Turns out it's Smithson Martin's Emulator&nbsp;(Elite):&nbsp; <a href="https://smithsonmartin.com/products/emulator-elite/">https://smithsonmartin.com/products/emulator-elite/</a> - pretty fancy stuff.</p>
<p>After that, the keynote started, and we were treated to a nice video with some testimonials of well-known names (think Github, Salesforce, Acumatica, &hellip;) - names you might not have associated with MS in the past, but that are now full of compliments regarding MS.</p>
<p>There's Surfaces, Macs, Windows Phones, iPhones, Android phones, &hellip; on stage.&nbsp;</p>
<p>It takes a very confident company with a great offering to get away with that.&nbsp;And that's exactly what Microsoft is these days - these jokes, these testimonials, the fact that we can now run almost everything in every way on any device , regardless of language, &hellip;&nbsp;&nbsp;it works.&nbsp; It makes sense.&nbsp;</p>
<p>The closed, .NET-only days are over.&nbsp; <strong>It's clear that this is a new Microsoft.&nbsp;</strong></p>
<p>&nbsp;</p>
<p><a href="https://twitter.com/StevenGuggs">Steven Guggenheimer</a> and John Shewchuck took the stage, and set the tone for the keynote: today is all about developer conversations.</p>
<p><strong>Entertainment and media</strong> apps were first.&nbsp; We saw The Root's Questlove drum, with fancy sticks in mid-air.&nbsp; The movements are captured and processed in a Windows 10 app through the new Audio Graph API.&nbsp;</p>
<p><strong>Commercial apps </strong>were up next.&nbsp; We got to see an Autodesk 3D printing demo, followed by one of those true Line of Business apps we all love (or love to hate, the jury is still out on that one): Acumatica's ERP system.&nbsp; Thing is, through OData, they&rsquo;re now able to export the data from that system right into Excel, or make it available to other apps.&nbsp; All of that happens with a GUI that allows dynamically joining datasets, resulting in exactly the data that might be needed to integrate this system&rsquo;s data into other apps.&nbsp; What I liked most about this is that they were using the OData standard for this: it's not just a RESTful API - it's a standardized one, which ensures almost all other applications can integrate with this &ndash; and know how to achieve that.</p>
<p><strong>Up next, a huge part on Building for Windows 10</strong></p>
<p>&nbsp;A few bullet points:</p>
<ul>
<li><strong>Design &amp; develop</strong>: one design language &amp; control set across all windows devices.&nbsp; One API, one package.&nbsp; More than 2500 new platform features are made available to us.&nbsp;</li>
</ul>
<ul>
<li><strong>Debug</strong>: Visual Studio 2015 introduces live visual debugging, and live performance issue tracking in the debugger.&nbsp;</li>
</ul>
<ul>
<li><strong>Distribute</strong>: rather than going through different app submissions for different devices, you simply submit your app once to the store, and (if you want it to be) it's available across all Windows 10 devices - including the Surface Hub and HoloLens.</li>
</ul>
<p>Microsoft also introduced 4 Universal App bridges, designed to integrate existing code bases into Universal apps that run on all Windows 10 devices.&nbsp;</p>
<ul>
<li><strong>Web</strong>: we can now package web apps, and extend then with Windows 10 platform-specific features.&nbsp; The demo we saw was an in-browser flight action game, repackaged as a universal app and extended with Xbox Live achievements.</li>
<li><strong>NET &amp; Win32</strong> (WPF, WinForms, Win32) applications can also be repackaged and extended.</li>
<li>Likewise for <strong>Android</strong> apps&nbsp; (Project Astoria - <a href="https://dev.windows.com/en-US/uwp-bridges/project-astoria">https://dev.windows.com/en-US/uwp-bridges/project-astoria</a>), and for <strong>iOS</strong> apps: opening horrendous Objective C code in Visual Studio, extending it, building and running it is now a reality.&nbsp; If someone had told us that 2 years ago, no-one would have taken that guy/girl seriously.</li>
</ul>
<p>These bridges are all about code reuse.&nbsp; You'll often want to make some changes or you might be required to - in a later session, we learned that Android apps will typically work after a recompile, but iOS apps require a few code changes.&nbsp; The principle does give you a head start, and it fits the new Microsoft philosophy: "no matter where your code is or what language it's written in, we'll make sure you can run it".</p>
<p><strong>Up next: Cross-platform</strong></p>
<p>This part focussed on Cordova, but there was nothing really new here as far as Cordova itself was concerned.&nbsp; However, there were a few nice announcements:</p>
<ul>
<li>Vorlon.js (<a href="https://blogs.msdn.com/b/eternalcoding/archive/2015/04/30/why-we-made-vorlon-js-and-how-to-use-it-to-debug-your-javascript-remotely.aspx">https://blogs.msdn.com/b/eternalcoding/archive/2015/04/30/why-we-made-vorlon-js-and-how-to-use-it-to-debug-your-javascript-remotely.aspx</a>), an open source, extensible,<br />platform-agnostic tool for remotely debugging and testing JavaScript.&nbsp;</li>
<li>A GitHub Extension for Visual Studio <a href="https://visualstudio.github.com/">https://visualstudio.github.com/</a>) &amp; GitHub Enterprise support for<br />Azure (<a href="https://enterprise.github.com/releases/2.2.0">https://enterprise.github.com/releases/2.2.0</a>)</li>
</ul>
<p><strong>Data and the intelligent Cloud</strong></p>
<p>Joseph Sirosh took the stage for what, in my opinion, was the best part of this keynote - all about Big Data, Azure &amp; Machine Learning.&nbsp; These are things we tend not to come into contact with a lot in our day to day developer lives, but they're all the more inspiring.</p>
<p>Joseph told us a few stories about how Azure can help with retrospective analytics, real-time analytics, predictive analytics and Intelligent SaaS apps.&nbsp;There's one I'd like to point out here: the story of the connected cow.&nbsp;&nbsp;</p>
<p>Yes, you read that right.&nbsp; <span style="text-decoration: underline;"><strong>Connected...</strong></span><strong>&nbsp;</strong><span style="text-decoration: underline;"><strong>Cow..</strong></span>.&nbsp;</p>
<p>There's a problem that's keeping farmers awake and frustrated: knowing when their cows are in heat, so they can artificially inseminate them.&nbsp; Turns out it isn't that easy to notice (have you? I haven&rsquo;t), and they also tend to be in heat more at night, when humans tend to sleep.&nbsp;</p>
<p>So, what happened?&nbsp; They connected a sensor to the cow's legs, and started measuring the steps the cows took.&nbsp; From that, they learned that there's a correlation between how many steps a cow takes and when it's in heat.&nbsp; Add in an alarm system to send a notification to the farmer to wake him up in time, and the successful insemination rate skyrockets.&nbsp; What's more, through machine learning they not only learned when to inseminate a cow, but also the exact timeframe for insemination, depending on whether you want to end up with a male or female cow.</p>
<p>To quote Joseph: "we're now using AI for AI - Artificial Intelligence for Artificial Insemination".</p>
<p>This graph says it all: <a href="https://twitter.com/bartlannoeye/status/593823028061966336/photo/1">https://twitter.com/bartlannoeye/status/593823028061966336/photo/1</a>&nbsp;&nbsp;</p>
<p>More information can be found at <a href="https://azure.microsoft.com/en-us/services/machine-learning/">https://azure.microsoft.com/en-us/services/machine-learning/</a></p>
<p><strong>Gaming</strong></p>
<p>Anyone heard of Final Fantasy? :)&nbsp; Microsoft collaborated with Square Enix for this part of the keynote.&nbsp; We got to see a video rendering (DirectX 11).&nbsp; Then, we got to see another video rendering (DirectX 12).&nbsp; Or at least that's what I thought.&nbsp; Turns out that last one wasn't a pre-rendered video at all - it's live, and the amount of detail is staggering.&nbsp; Have look at this: <a href="https://www.youtube.com/watch?v=e1mwhdYZvSE">https://www.youtube.com/watch?v=e1mwhdYZvSE</a></p>
<p>Lastly, a Minecraft modder was invited on stage to show off the new Minecraft modding tool in Visual Studio <a href="https://t.co/LVFv1qYhxO">https://t.co/LVFv1qYhxO</a> .&nbsp;I don't play that game, but I do know it was written in Java.&nbsp; The logical conclusion: a Minecraft modding tool for Visual Studio, wouldn't that require&hellip; nah, can't be.&nbsp;</p>
<p>&hellip;queue 2 minutes&hellip;&nbsp;</p>
<p>Was that full Intellisense-enabled Java code in Visual Studio?&nbsp; Indeed it was.</p>
<p>To summarize: this keynote was one no-one would have expected 2 years ago.&nbsp;&nbsp;<span style="text-decoration: underline;"><strong>There's a new Microsoft in town.&nbsp;This keynote proved that.&nbsp; And I like it.</strong></span></p>
<p>&nbsp;</p>
<p><a href="https://twitter.com/KevinDockx">Kevin Dockx</a>&nbsp;works at&nbsp;<a href="https://www.realdolmen.com/" target="_blank">RealDolmen</a>, one of Belgium's biggest ICT companies,&nbsp;as a solution architect focussed on mobile.&nbsp;&nbsp;He mainly works on .NET applications, often XAML-based. His current focus: cross-platform mobile applications &amp; security. <a href="https://t.co/4XRdG2LkgQ">Check out his blog</a><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/6445.OAlyuDv9_400x400.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/6445.OAlyuDv9_5F00_400x400.jpg"><img style="float: right;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/39/90/6445.OAlyuDv9_400x400.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-39-90/6445.OAlyuDv9_5F00_400x400.jpg" alt="" width="125" height="113" border="0" /></a></p>]]></content:encoded>
    </item>
  </channel>
</rss>