[
  {
    "path": ".gitignore",
    "content": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# User-specific files\n*.suo\n*.user\n*.userosscache\n*.sln.docstates\n\n# User-specific files (MonoDevelop/Xamarin Studio)\n*.userprefs\n\n# Build results\n[Dd]ebug/\n[Dd]ebugPublic/\n[Rr]elease/\n[Rr]eleases/\nx64/\nx86/\nbld/\n[Bb]in/\n[Oo]bj/\n[Ll]og/\n\n# Visual Studio 2015 cache/options directory\n.vs/\n# Uncomment if you have tasks that create the project's static files in wwwroot\n#wwwroot/\n\n# MSTest test Results\n[Tt]est[Rr]esult*/\n[Bb]uild[Ll]og.*\n\n# NUNIT\n*.VisualState.xml\nTestResult.xml\n\n# Build Results of an ATL Project\n[Dd]ebugPS/\n[Rr]eleasePS/\ndlldata.c\n\n# DNX\nproject.lock.json\nartifacts/\n\n*_i.c\n*_p.c\n*_i.h\n*.ilk\n*.meta\n*.obj\n*.pch\n*.pdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.tmp_proj\n*.log\n*.vspscc\n*.vssscc\n.builds\n*.pidb\n*.svclog\n*.scc\n\n# Chutzpah Test files\n_Chutzpah*\n\n# Visual C++ cache files\nipch/\n*.aps\n*.ncb\n*.opendb\n*.opensdf\n*.sdf\n*.cachefile\n*.VC.db\n*.VC.VC.opendb\n\n# Visual Studio profiler\n*.psess\n*.vsp\n*.vspx\n*.sap\n\n# TFS 2012 Local Workspace\n$tf/\n\n# Guidance Automation Toolkit\n*.gpState\n\n# ReSharper is a .NET coding add-in\n_ReSharper*/\n*.[Rr]e[Ss]harper\n*.DotSettings.user\n\n# JustCode is a .NET coding add-in\n.JustCode\n\n# TeamCity is a build add-in\n_TeamCity*\n\n# DotCover is a Code Coverage Tool\n*.dotCover\n\n# NCrunch\n_NCrunch_*\n.*crunch*.local.xml\nnCrunchTemp_*\n\n# MightyMoose\n*.mm.*\nAutoTest.Net/\n\n# Web workbench (sass)\n.sass-cache/\n\n# Installshield output folder\n[Ee]xpress/\n\n# DocProject is a documentation generator add-in\nDocProject/buildhelp/\nDocProject/Help/*.HxT\nDocProject/Help/*.HxC\nDocProject/Help/*.hhc\nDocProject/Help/*.hhk\nDocProject/Help/*.hhp\nDocProject/Help/Html2\nDocProject/Help/html\n\n# Click-Once directory\npublish/\n\n# Publish Web Output\n*.[Pp]ublish.xml\n*.azurePubxml\n# TODO: Comment the next line if you want to checkin your web deploy settings\n# but database connection strings (with potential passwords) will be unencrypted\n*.pubxml\n*.publishproj\n\n# Microsoft Azure Web App publish settings. Comment the next line if you want to\n# checkin your Azure Web App publish settings, but sensitive information contained\n# in these scripts will be unencrypted\nPublishScripts/\n\n# NuGet Packages\n*.nupkg\n# The packages folder can be ignored because of Package Restore\n**/packages/*\n# except build/, which is used as an MSBuild target.\n!**/packages/build/\n# Uncomment if necessary however generally it will be regenerated when needed\n#!**/packages/repositories.config\n# NuGet v3's project.json files produces more ignoreable files\n*.nuget.props\n*.nuget.targets\n\n# Microsoft Azure Build Output\ncsx/\n*.build.csdef\n\n# Microsoft Azure Emulator\necf/\nrcf/\n\n# Windows Store app package directories and files\nAppPackages/\nBundleArtifacts/\nPackage.StoreAssociation.xml\n_pkginfo.txt\n\n# Visual Studio cache files\n# files ending in .cache can be ignored\n*.[Cc]ache\n# but keep track of directories ending in .cache\n!*.[Cc]ache/\n\n# Others\nClientBin/\n~$*\n*~\n*.dbmdl\n*.dbproj.schemaview\n*.pfx\n*.publishsettings\nnode_modules/\norleans.codegen.cs\n\n# Since there are multiple workflows, uncomment next line to ignore bower_components\n# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)\n#bower_components/\n\n# RIA/Silverlight projects\nGenerated_Code/\n\n# Backup & report files from converting an old project file\n# to a newer Visual Studio version. Backup files are not needed,\n# because we have git ;-)\n_UpgradeReport_Files/\nBackup*/\nUpgradeLog*.XML\nUpgradeLog*.htm\n\n# SQL Server files\n*.mdf\n*.ldf\n\n# Business Intelligence projects\n*.rdl.data\n*.bim.layout\n*.bim_*.settings\n\n# Microsoft Fakes\nFakesAssemblies/\n\n# GhostDoc plugin setting file\n*.GhostDoc.xml\n\n# Node.js Tools for Visual Studio\n.ntvs_analysis.dat\n\n# Visual Studio 6 build log\n*.plg\n\n# Visual Studio 6 workspace options file\n*.opt\n\n# Visual Studio LightSwitch build output\n**/*.HTMLClient/GeneratedArtifacts\n**/*.DesktopClient/GeneratedArtifacts\n**/*.DesktopClient/ModelManifest.xml\n**/*.Server/GeneratedArtifacts\n**/*.Server/ModelManifest.xml\n_Pvt_Extensions\n\n# Paket dependency manager\n.paket/paket.exe\npaket-files/\n\n# FAKE - F# Make\n.fake/\n\n# JetBrains Rider\n.idea/\n*.sln.iml\n"
  },
  {
    "path": "LICENSE",
    "content": "    MIT License\r\n\r\n    Copyright (c) Microsoft Corporation. All rights reserved.\r\n\r\n    Permission is hereby granted, free of charge, to any person obtaining a copy\r\n    of this software and associated documentation files (the \"Software\"), to deal\r\n    in the Software without restriction, including without limitation the rights\r\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n    copies of the Software, and to permit persons to whom the Software is\r\n    furnished to do so, subject to the following conditions:\r\n\r\n    The above copyright notice and this permission notice shall be included in all\r\n    copies or substantial portions of the Software.\r\n\r\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n    SOFTWARE\r\n"
  },
  {
    "path": "README.md",
    "content": "---\r\ntopic: sample\r\nlanguages:\r\n- csharp\r\nproducts:\r\n- windows\r\n- windows-uwp\r\n---\r\n\r\n<!---\r\n  category: Fluent\r\n-->\r\n\r\n# BuildCast Video Player UWP Sample\r\nBuildCast is an end-to-end sample built to showcase the [Microsoft Fluent Design System](https://fluent.microsoft.com/) as well as other capabilities of the Universal Windows Platform. It permits browsing, downloading and playback of select video podcasts including a sampling of the most popular ones from Channel 9 as well as some popular Windows tech enthusiast feeds. It has other features such as ink notes, bookmarks and remote playback. This sample was initially shown and discussed at the 2017 Build conference during the [Build Amazing Apps with Fluent Design](https://channel9.msdn.com/Events/Build/2017/B8034) talk.  \r\n\r\n<img src=\"images/buildcast.png\" width=700>\r\n\r\n# Features\r\nAt a high level this sample demonstrates usage of:\r\n- Fluent design system (Acrylic material, Reveal highlight, Connected animations, ParallaxView, an Adobe XD UX Prototype etc)\r\n- XAML controls and features (NavigationView, swipe commanding, context menu with icons and SVG assets, LoadedImageService, conditional XAML etc)\r\n- Media playback including picture-in-picture and fullscreen views\r\n- Inking and smart ink\r\n- Project Rome and AppServices \r\n- Background download service, Entity Framework and SQLite\r\n- Windows composition APIs (InteractionTracker, implicit animations, scene lighting)\r\n- Notifications with progress bar\r\n- Share contract \r\n## Run the sample\r\n\r\n### Prepare your environment\r\n\r\nThis sample requires Visual Studio 2017 with Update 5 and the Windows 10 Software Development Kit (SDK) version 16299, Windows 10 OS - Fall Creators Update.\r\n\r\n* [Get a copy of Visual Studio 2017 Update 4 with support for building Universal Windows apps]( https://www.visualstudio.com/downloads/) [includes SDK 16299]\r\n\r\n* [Get the latest Windows 10 Fall Creator's Update](https://www.microsoft.com/en-us/windows) [10.0.16299.0 or later]\r\n\r\n* [Get the Windows 10 Insider SDK 16299](https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk) as a standalone download.\r\n\r\nAdditionally, to receive the latest updates to Windows and the development tools, and to help shape their development, join the [Windows Insider Program](https://insider.windows.com/ \"Become a Windows Insider\").\r\n### Run\r\nAfter opening the Visual Studio solution, set your startup project as **BuildCast**, the architecture to AMD64 or x86, and press F5 to run.\r\n\r\n## Code at a glance\r\n\r\nThe table below shows the platform features used in the application and where abouts to find them in the sample. \r\n\r\n### Release Notes Update 1 October 2017\r\n- Add the Adobe XD UX prototype file\r\n- Add back Spectrum Analyzer visualization to now playing\r\n- On startup, app will check for cached media changes at filesystem level and update database state to match this\r\n- Improved commanding on favorites, downloads, notes\r\n- Design tweaks \r\n- Known issues where there will be code changes have all been moved to issues on github\r\n- Bug fixes\r\n\r\n### Known Issues\r\n- Download progress reported via toasts / action center will not update when the app quits, even though the download will proceed using background transfer service.  This is due to a known platform gap\r\n- Deploying / running BuildCast on a XBOX will result in the app crashing due to a platform bug that is being investigated.  [More details here](https://developercommunity.visualstudio.com/content/problem/130393/net-uwp-applications-with-a-targetplatformminversi.html).\r\n- A number of warnings have not been addressed\r\n- Things that didn't make it from the Build talk:\r\n  - TreeView control: did not ship in the final Fall Creator's update\r\n  - 360 video playback: this will come in a future update to the app\r\n\r\n### App details\r\n### Frameworks \r\n| Framework | Usage | Code file |\r\n| :-------------- | :--------------  | --------------: |\r\n| [Entity framework](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/ef/overview)\t\t\t\t| ORM to store objects in SQLite       | [LocalStorageContext.cs](src/BuildCast/DataModel/LocalStorageContext.cs) |\r\n| [SQLite in UWP](https://blogs.windows.com/buildingapps/2017/02/06/using-sqlite-databases-uwp-apps/)       | Primary mechanism for persistence    | N/A |\r\n| [.NET Standard 2.0](https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-standard-2-0/)\t\t| Provides System.Tuple                | [NowPlayingState.cs](src/BuildCast/DataModel/NowPlayingState.cs) |\r\n\r\n### App features\r\n\r\n| App feature | Description | Code file |\r\n| :-------------- | :--------------  | --------------: |\r\n| [Adobe XD](www.adobe.com/products/xd.html) UX Prototype|   <img src=\"images/AdobeXDPrototype.PNG\" alt=\"Acrylic material image\" width=300> | [BuildCast.xd](design/BuildCast.xd) |\r\n| [Acrylic material](https://docs.microsoft.com/en-us/windows/uwp/style/acrylic)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t    | Acrylic material usage                          <br>  <img src=\"images/AcrylicMaterial.png\" alt=\"Acrylic material image\" width=300>\t\t\t\t\t| [Branded.xaml](src/BuildCast/Themes/Branded.xaml) |\r\n| [Reveal highlight](https://docs.microsoft.com/en-us/windows/uwp/style/reveal)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| Reveal highlight usage                          <br>  <img src=\"images/RevealHighlight.png\" alt=\"Reveal highlight image\" width=300>\t\t\t\t\t| [CustomMTC.xaml](src/BuildCast/Controls/CustomMTC.xaml) |\r\n| [NavigationView](https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/navigationview)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t        | NavigationView usage                            <br>  <img src=\"images/NavigationView.png\" alt=\"NavigationView image\" width=300>\t\t\t\t\t\t| [NavigationRoot.xaml](src/BuildCast/Views/NavigationRoot.xaml) |\r\n| [Connected animations](https://docs.microsoft.com/en-us/windows/uwp/style/connected-animation)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t    | Used in connected transitions between pages\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t    | [FeedDetails.xaml.cs](src/BuildCast/Views/FeedDetails.xaml.cs) |\r\n| [Inking](https://docs.microsoft.com/en-us/windows/uwp/input-and-devices/pen-and-stylus-interactions)\t\t\t\t\t\t\t\t\t\t\t\t\t\t                | Ink annotation on video frame                    <br> <img src=\"images/InkAnnotation.png\"  alt=\"Ink annotation image\" width=300>\t\t\t\t\t\t| [InkNote.xaml.cs](src/BuildCast/Views/InkNote.xaml.cs) |\r\n| [Smart Ink](https://docs.microsoft.com/en-us/windows/uwp/input-and-devices/pen-and-stylus-interactions)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t        | Recognize and convert images to glyphs and emoji <br> <img src=\"images/InkRecognition.png\" alt=\"Ink recognition image\" width=300> <br> <img src=\"images/InkRecognition2.png\" alt=\"2nd ink recognition image\" width=300>    | [InkNote.xaml.cs](src/BuildCast/Views/InkNote.xaml.cs) |\r\n| Emoji picker\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| Select emoji                                     <br> <img src=\"images/EmojiPicker.png\" alt=\"Emoji picker image\" width=300>\t\t\t\t\t\t\t| [InkNote.xaml.cs](src/BuildCast/Views/InkNote.xaml.cs) |\r\n| [Context menus with icons](https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/menus)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| Context menus with icons                        <br>  <img src=\"images/ContextMenus.png\" alt=\"Context menus image\" width=300>\t\t\t\t\t\t\t| [FeedDetails.xaml](src/BuildCast/Views/FeedDetails.xaml) |\r\n| [Swipe commanding](https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/collection-commanding)\t\t\t\t\t\t\t\t\t\t\t\t                | Swipe controls on lists\t\t<br>  <img src=\"images/Swipe.PNG\" alt=\"swipe image\" width=300>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t        | [FeedDetails.xaml](src/BuildCast/Views/FeedDetails.xaml) |\r\n| [Mnemonics/Access Keys](https://docs.microsoft.com/en-us/windows/uwp/input-and-devices/access-keys)\t\t\t\t\t\t\t\t\t\t\t\t                        | Mnemonics usage                                 <br>  <img src=\"images/Mnemonics.png\" alt=\"Mnenomics image\" width=300>\t\t\t\t\t\t\t\t| [EpisodeDetails.xaml](src/BuildCast/Views/EpisodeDetails.xaml) |\r\n| [Command bar](https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/app-bars)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t    | Command bar usage                               <br>  <img src=\"images/CommandBar.png\" alt=\"Command bar image\" width=300>\t\t\t\t\t\t\t\t| [Player.xaml](src/BuildCast/Views/Player.xaml) |\r\n| [Coordinated animations](https://docs.microsoft.com/en-us/windows/uwp/style/connected-animation)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t        | Used in connected transitions between pages\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| [FeedDetails.xaml.cs](src/BuildCast/Views/FeedDetails.xaml.cs) |\r\n| [Conditional XAML](https://docs.microsoft.com/en-us/windows/uwp/debug-test-perf/conditional-xaml)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| NavigationView loads based on OS version support\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| [NavigationRoot.xaml](src/BuildCast/Views/NavigationRoot.xaml) |\r\n| [SVG](https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Controls.Image)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                | BuildCast logo on homepage\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t    | [Home.xaml](src/BuildCast/Views/Home.xaml) |\r\n| [Adaptive state triggers](https://blogs.msdn.microsoft.com/cdndevs/2015/06/26/uwp-new-features-of-visual-state-manager-part-1/)\t\t\t\t\t\t\t\t\t\t\t| UI optimizations for assorted screen sizes                               <br>  <img src=\"images/AdaptiveLayout.PNG\" alt=\"Adaptive layout image\" width=200>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| [Home.xaml](src/BuildCast/Views/Home.xaml) |\r\n| [ParallaxView](https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Controls.Parallaxview)\t\t\t\t\t\t\t\t\t\t\t\t\t\t                    | Home screen parallax layout                    <br>  <img src=\"images/ParallaxView.png\" alt=\"ParallaxView image\" width=300>\t\t\t\t\t\t\t| [Home.xaml](src/BuildCast/Views/Home.xaml) |\r\n| [Lighting](https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Composition.Effects.SceneLightingEffect)\t\t\t\t\t\t\t\t\t\t\t\t                    | Buffering animation\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| [BufferingVisualManager.cs](src/BuildCast/Helpers/BufferingVisualManager.cs) |\r\n| [Interaction tracker](https://docs.microsoft.com/en-us/uwp/api/windows.ui.composition.interactions.interactiontracker)\t\t\t\t\t\t\t\t\t\t\t\t\t| Interaction tracker                            <br>  <img src=\"images/InteractionTracker.png\" alt=\"Interaction tracker image\" width=300>\t\t\t\t| [Timeline.cs](src/BuildCast/Controls/Timeline.cs) |\r\n| [Layout animations](https://docs.microsoft.com/en-us/windows/uwp/composition/using-the-visual-layer-with-xaml)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| Layout animations\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| [Home.xaml.cs](src/BuildCast/Views/Home.xaml.cs) |\r\n| [LoadedImageSurface](https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.media.loadedimagesurface)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t    | Composition Surface for Images\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t    | [CustomMediaPlayer.xaml.cs](src/BuildCast/Controls/CustomMediaPlayer.xaml.cs) |\r\n|[Composition expression language](https://docs.microsoft.com/en-us/windows/uwp/composition/composition-animation)\t\t\t\t\t\t\t\t\t\t\t\t\t\t    | Timeline animations\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t    | [Timeline.cs](src/BuildCast/Controls/Timeline.cs) |\r\n| [Implicit animations](https://docs.microsoft.com/en-us/windows/uwp/composition/using-the-visual-layer-with-xaml)\t\t\t\t\t\t\t\t\t\t\t\t\t\t    | Poster frame fade out when video starts playing\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| [VisualHelpers.cs](src/BuildCast/Helpers/VisualHelpers.cs) |\r\n| [Compact overlay mode](https://blogs.msdn.microsoft.com/universal-windows-app-model/2017/02/11/compactoverlay-mode-aka-picture-in-picture/)\t\t\t\t\t\t        | Picture-in-picture support  <br>  <img src=\"images/PictureInPicture.png\" alt=\"Virtual surfaces image\" width=300>\t\t\t\t\t\t\t\t\t    | [ViewModeService.cs](src/BuildCast/Services/ViewModeService.cs) |\r\n| Spectrum Analyzer | Realtime visualization of audio spectra for currently playing clip <br> <img src=\"images/spectrum.PNG\" alt=\"Full screen mode image\" width=300> | [player.xaml.cs](src/BuildCast/Views/Player.xaml.cs) |\r\n| [Full screen mode](https://docs.microsoft.com/en-us/uwp/api/Windows.UI.ViewManagement.ApplicationView#Methods_)\t\t\t\t\t\t\t\t\t\t\t\t            | Full screen mode for video\t\t<br>  <img src=\"images/Fullscreen.PNG\" alt=\"Full screen mode image\" width=300>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                                                | [ViewModeService.cs](src/BuildCast/Services/ViewModeService.cs) |\r\n| [Share contract](https://docs.microsoft.com/en-us/windows/uwp/app-to-app/share-data)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| Share the annotated frame                        <br> <img src=\"images/ShareContract.png\" alt=\"Share contract image\" width=300>\t\t\t\t\t\t| [InkNote.xaml.cs](src/BuildCast/Views/InkNote.xaml.cs) |\r\n| [Background transfer service](https://docs.microsoft.com/en-us/uwp/api/windows.networking.backgroundtransfer)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| Video download for offline viewing\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| [BackgroundDownloadHelper.cs](src/BuildCast/Helpers/BackgroundDownloadHelper.cs) |\r\n| [BTS toast completion notifications](https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/tiles-and-notifications-adaptive-interactive-toasts)\t\t\t\t| Toast display upon background download completion<br> <img src=\"images/BackgroundCompletion.png\"  alt=\"Background completion image\" width=300>\t\t| [BackgroundDownloadHelper.cs](src/BuildCast/Helpers/BackgroundDownloadHelper.cs) |\r\n| [Toast progress bars](https://blogs.msdn.microsoft.com/tiles_and_toasts/2017/02/01/progress-ui-and-data-binding-inside-toast-notifications-windows-10-creators-update/)   | Visual download progress indicator               <br> <img src=\"images/ToastProgress.png\"  alt=\"Toast progress image\" width=300>\t\t\t\t\t\t| [BackgroundDownloadHelper.cs](src/BuildCast/Helpers/BackgroundDownloadHelper.cs) |                                                                                   | [CodeFileName.extension](Folder/Folder/CodeFileName.extension#L25) |\r\n| [App services](https://docs.microsoft.com/en-us/windows/uwp/launch-resume/how-to-create-and-consume-an-app-service)\t\t\t\t\t\t\t\t\t\t\t\t\t\t| Support Rome based remote control\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| [RemotePlayService.cs](src/BuildCast/Services/RemotePlayService.cs) |\r\n| [Media Composition API](https://docs.microsoft.com/en-us/uwp/api/Windows.Graphics.Imaging.BitmapEncoder)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| Extract frame for Ink annotations from local file\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| [PlayerService.cs](src/BuildCast/Services/PlayerService.cs) |\r\n| [Template studio](https://blogs.windows.com/buildingapps/2017/05/16/announcing-windows-template-studio/)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| Theming, settings model <br>  <img src=\"images/Settings.PNG\" alt=\"Settings image\" width=300>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| |\r\n\r\n\r\n# Contributing\r\n\r\nWhile we expect to at a later date, this project is not currently accepting contributions. For now, if you have any feedback or questions, please open an Issue on GitHub for the team. \r\n\r\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).\r\nFor more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)\r\nor contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments\r\n\r\nCopyright &copy; Microsoft Corporation. All rights reserved.\r\nThis program/project is and its use is subject to the [MIT License](LICENSE)\r\n"
  },
  {
    "path": "SECURITY.md",
    "content": "<!-- BEGIN MICROSOFT SECURITY.MD V0.0.8 BLOCK -->\n\n## Security\n\nMicrosoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).\n\nIf you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below.\n\n## Reporting Security Issues\n\n**Please do not report security vulnerabilities through public GitHub issues.**\n\nInstead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report).\n\nIf you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com).  If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey).\n\nYou should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). \n\nPlease include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:\n\n  * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)\n  * Full paths of source file(s) related to the manifestation of the issue\n  * The location of the affected source code (tag/branch/commit or direct URL)\n  * Any special configuration required to reproduce the issue\n  * Step-by-step instructions to reproduce the issue\n  * Proof-of-concept or exploit code (if possible)\n  * Impact of the issue, including how an attacker might exploit the issue\n\nThis information will help us triage your report more quickly.\n\nIf you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs.\n\n## Preferred Languages\n\nWe prefer all communications to be in English.\n\n## Policy\n\nMicrosoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd).\n\n<!-- END MICROSOFT SECURITY.MD BLOCK -->\n"
  },
  {
    "path": "src/BuildCast/App.xaml",
    "content": "﻿<!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<Application\n    x:Class=\"BuildCast.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:animations=\"using:Microsoft.Toolkit.Uwp.UI.Animations\">\n    <Application.Resources>\n        <ResourceDictionary>\n            <animations:AnimationCollection x:Key=\"LayoutImplicitAnimations\">\n                <animations:OffsetAnimation Duration=\"0:0:0.1\"></animations:OffsetAnimation>\n            </animations:AnimationCollection>\n\n            <animations:AnimationCollection x:Key=\"DefaultShowAnimations\">\n                <animations:TranslationAnimation Duration=\"0:0:0.35\" From=\"0,-450, 0\" To=\"0\"></animations:TranslationAnimation>\n            </animations:AnimationCollection>\n\n            <animations:AnimationCollection x:Key=\"DefaultHideAnimations\">\n                <animations:TranslationAnimation Duration=\"0:0:0.45\" To=\"0,-30,0\"></animations:TranslationAnimation>\n            </animations:AnimationCollection>\n\n            <animations:AnimationCollection x:Key=\"DefaultListShowAnimations\">\n                <animations:TranslationAnimation Duration=\"0:0:0.45\" Delay=\"0:0:0.2\" From=\"0,50,0\" To=\"0\"></animations:TranslationAnimation>\n                <animations:OpacityAnimation Duration=\"0:0:0.8\" From=\"0\" To=\"1\">\n                    <animations:ScalarKeyFrame Key=\"0.25\" Value=\"0\"></animations:ScalarKeyFrame>\n                </animations:OpacityAnimation>\n            </animations:AnimationCollection>\n\n            <animations:AnimationCollection x:Key=\"DefaultListHideAnimations\">\n                <animations:TranslationAnimation Duration=\"0:0:0.4\" To=\"0,50,0\"></animations:TranslationAnimation>\n                <animations:OpacityAnimation Duration=\"0:0:0.4\" To=\"0\"></animations:OpacityAnimation>\n            </animations:AnimationCollection>\n\n            <animations:AnimationCollection x:Key=\"DefaultPageHideAnimation\">\n                <animations:OpacityAnimation Duration=\"0:0:0.4\" To=\"0\"></animations:OpacityAnimation>\n            </animations:AnimationCollection>\n\n            <animations:AnimationCollection x:Key=\"DefaultTitleShowAnimations\">\n                <animations:TranslationAnimation Duration=\"0:0:0.45\" From=\"0, -50, 0\" To=\"0\"></animations:TranslationAnimation>\n                <animations:OpacityAnimation Duration=\"0:0:0.5\" From=\"0\" To=\"1\">\n                    <animations:ScalarKeyFrame Key=\"0.25\" Value=\"0\"></animations:ScalarKeyFrame>\n                </animations:OpacityAnimation>\n            </animations:AnimationCollection>\n\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"/Styles/Common.xaml\"/>\n                <ResourceDictionary Source=\"/Styles/Settings.xaml\"/>\n            </ResourceDictionary.MergedDictionaries>\n        </ResourceDictionary>\n    </Application.Resources>\n</Application>\n"
  },
  {
    "path": "src/BuildCast/App.xaml.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Autofac;\nusing BuildCast.DataModel;\nusing BuildCast.Helpers;\nusing BuildCast.Services;\nusing BuildCast.Services.Navigation;\nusing BuildCast.ViewModels;\nusing BuildCast.Views;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.ApplicationModel.AppService;\nusing Windows.ApplicationModel.Background;\nusing Windows.Foundation.Collections;\nusing Windows.System.Profile;\nusing Windows.UI.ViewManagement;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Hosting;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace BuildCast\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    public sealed partial class App : Application\n    {\n        private IContainer _container;\n        private BackgroundTaskDeferral appServiceDeferral;\n        private NavigationRoot rootPage;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"App\"/> class.\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n\n            LocalStorageContext.CheckMigrations();\n\n            this.RequiresPointerMode = ApplicationRequiresPointerMode.WhenRequested;\n        }\n\n        public static AppServiceConnection Connection { get; set; }\n\n        public NavigationRoot GetNavigationRoot()\n        {\n            if (Window.Current.Content is NavigationRoot)\n            {\n                return Window.Current.Content as NavigationRoot;\n            }\n            else if (Window.Current.Content is Frame)\n            {\n                return ((Frame)Window.Current.Content).Content as NavigationRoot;\n            }\n\n            throw new Exception(\"Window content is unknown type\");\n        }\n\n        public Frame GetFrame()\n        {\n            var root = GetNavigationRoot();\n            return root.AppFrame;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"args\">Details about the launch request and process.</param>\n        protected async override void OnLaunched(LaunchActivatedEventArgs args)\n        {\n            //XBOX support\n            if (AnalyticsInfo.VersionInfo.DeviceFamily == \"Windows.Xbox\")\n            {\n                ApplicationView.GetForCurrentView().SetDesiredBoundsMode(ApplicationViewBoundsMode.UseCoreWindow);\n                bool result = ApplicationViewScaling.TrySetDisableLayoutScaling(true);\n            }\n\n            await InitializeAsync();\n            InitWindow(skipWindowCreation: args.PrelaunchActivated);\n\n            // Tasks after activation\n            await StartupAsync();\n\n            await Window.Current.Dispatcher.RunIdleAsync(async (s) =>\n                await BackgroundDownloadHelper.AttachToDownloads());\n        }\n\n        protected override void OnWindowCreated(WindowCreatedEventArgs args)\n        {\n            base.OnWindowCreated(args);\n        }\n\n        protected async override void OnActivated(IActivatedEventArgs args)\n        {\n            await InitializeAsync();\n            InitWindow(skipWindowCreation: false);\n\n            if (args.Kind == ActivationKind.Protocol)\n            {\n                Window.Current.Activate();\n\n                // Tasks after activation\n                await StartupAsync();\n            }\n        }\n\n        protected async override void OnBackgroundActivated(BackgroundActivatedEventArgs args)\n        {\n            var instance = args?.TaskInstance;\n\n            await BackgroundDownloadHelper.CheckCompletionResult(instance);\n            base.OnBackgroundActivated(args);\n            if (args.TaskInstance.TriggerDetails is AppServiceTriggerDetails details && _container != null)\n            {\n                var remotePlayerService = _container.Resolve<IRemotePlayerService>();\n\n                remotePlayerService.RemoteActivation(args.TaskInstance.GetDeferral(), details.AppServiceConnection);\n                appServiceDeferral = args.TaskInstance.GetDeferral();\n\n                Connection = details.AppServiceConnection;\n                Connection.RequestReceived += OnRequestReceived;\n                Connection.ServiceClosed += AppServiceConnection_ServiceClosed;\n            }\n        }\n\n        private void OnRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)\n        {\n            var deferral = args.GetDeferral();\n            Console.WriteLine(args.Request.Message);\n            deferral.Complete();\n            appServiceDeferral.Complete();\n        }\n\n        private void OnAppServicesCanceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)\n        {\n            appServiceDeferral.Complete();\n        }\n\n        private void AppServiceConnection_ServiceClosed(AppServiceConnection sender, AppServiceClosedEventArgs args)\n        {\n            appServiceDeferral.Complete();\n        }\n\n        private void InitWindow(bool skipWindowCreation)\n        {\n            var builder = new ContainerBuilder();\n\n            rootPage = Window.Current.Content as NavigationRoot;\n            bool initApp = rootPage == null && !skipWindowCreation;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (initApp)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootPage = new NavigationRoot();\n\n                FrameAdapter adapter = new FrameAdapter(rootPage.AppFrame);\n\n                builder.RegisterInstance(adapter)\n                        .AsImplementedInterfaces();\n\n                builder.RegisterType<HomeViewModel>();\n\n                // The feed details view model needs to be a singleton in order to better accomodate Connected Animation\n                builder.RegisterType<FeedDetailsViewModel>()\n                    .SingleInstance();\n                builder.RegisterType<EpisodeDetailsViewModel>();\n                builder.RegisterType<PlayerViewModel>();\n                builder.RegisterType<InkNoteViewModel>();\n                builder.RegisterType<FavoritesViewModel>();\n                builder.RegisterType<NotesViewModel>();\n                builder.RegisterType<DownloadsViewModel>();\n                builder.RegisterType<SettingsViewModel>();\n\n                builder.RegisterType<NavigationService>()\n                        .AsImplementedInterfaces()\n                        .SingleInstance();\n\n                builder.RegisterType<RemotePlayService>()\n                       .AsImplementedInterfaces();\n\n                builder.RegisterInstance(PlayerService.Current)\n                        .AsImplementedInterfaces()\n                        .SingleInstance();\n\n                _container = builder.Build();\n                rootPage.InitializeNavigationService(_container.Resolve<INavigationService>());\n\n                adapter.NavigationFailed += OnNavigationFailed;\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootPage;\n\n                Window.Current.Activate();\n            }\n        }\n\n        private async Task InitializeAsync()\n        {\n            await ThemeSelectorService.InitializeAsync();\n            await Task.CompletedTask;\n        }\n\n        private async Task StartupAsync()\n        {\n            BuildCast.Services.ThemeSelectorService.SetRequestedTheme();\n            await FeedStore.CheckDownloadsPresent();\n            await Task.CompletedTask;\n        }\n\n        private async System.Threading.Tasks.Task<Episode> FixFeedItemThumbnail(Feed feed, Episode feedItem)\n        {\n            var feedItems = await feed.GetEpisodes();\n\n            var matchedItem = feedItems.FirstOrDefault(uri => uri.Key == feedItem.Key);\n\n            if (matchedItem != null)\n            {\n                feedItem = matchedItem;\n            }\n\n            return feedItem;\n        }\n\n        private void ParseProtocolData(ValueSet playbackData, out Feed feed, out Episode feedItem, out TimeSpan timespan)\n        {\n            var values = playbackData.GetValueSet(\"feed\");\n            feed = Feed.BuildFeedFromValueSet(values);\n            values = playbackData.GetValueSet(\"feeditem\");\n            feedItem = Episode.BuildFromValueSet(values);\n            timespan = playbackData.GetTimeSpan(\"ElapsedTime\");\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        private void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Assets/BuildCastIcon.ai",
    "content": "%PDF-1.5\r%\r\n1 0 obj\r<</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R 21 0 R]/Order 22 0 R/RBGroups[]>>/OCGs[5 0 R 21 0 R]>>/Pages 3 0 R/Type/Catalog>>\rendobj\r2 0 obj\r<</Length 8558/Subtype/XML/Type/Metadata>>stream\r\n<?xpacket begin=\"﻿\" id=\"W5M0MpCehiHzreSzNTczkc9d\"?>\n<x:xmpmeta xmlns:x=\"adobe:ns:meta/\" x:xmptk=\"Adobe XMP Core 5.6-c137 79.159768, 2016/08/11-13:24:42        \">\n   <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n      <rdf:Description rdf:about=\"\"\n            xmlns:xmp=\"http://ns.adobe.com/xap/1.0/\"\n            xmlns:xmpGImg=\"http://ns.adobe.com/xap/1.0/g/img/\"\n            xmlns:xmpTPg=\"http://ns.adobe.com/xap/1.0/t/pg/\"\n            xmlns:stDim=\"http://ns.adobe.com/xap/1.0/sType/Dimensions#\"\n            xmlns:xmpG=\"http://ns.adobe.com/xap/1.0/g/\"\n            xmlns:illustrator=\"http://ns.adobe.com/illustrator/1.0/\"\n            xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n            xmlns:xmpMM=\"http://ns.adobe.com/xap/1.0/mm/\"\n            xmlns:pdf=\"http://ns.adobe.com/pdf/1.3/\">\n         <xmp:CreatorTool>Adobe Illustrator CC 2017 (Windows)</xmp:CreatorTool>\n         <xmp:CreateDate>2017-10-06T13:36:49-07:00</xmp:CreateDate>\n         <xmp:ModifyDate>2017-10-06T13:40:17-07:00</xmp:ModifyDate>\n         <xmp:MetadataDate>2017-10-06T13:40:17-07:00</xmp:MetadataDate>\n         <xmp:Thumbnails>\n            <rdf:Alt>\n               <rdf:li rdf:parseType=\"Resource\">\n                  <xmpGImg:width>256</xmpGImg:width>\n                  <xmpGImg:height>256</xmpGImg:height>\n                  <xmpGImg:format>JPEG</xmpGImg:format>\n                  <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX&#xA;Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX&#xA;Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX&#xA;Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX&#xA;Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX&#xA;Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX&#xA;Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX&#xA;Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX//2Q==</xmpGImg:image>\n               </rdf:li>\n            </rdf:Alt>\n         </xmp:Thumbnails>\n         <xmpTPg:NPages>1</xmpTPg:NPages>\n         <xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency>\n         <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>\n         <xmpTPg:MaxPageSize rdf:parseType=\"Resource\">\n            <stDim:w>32.000000</stDim:w>\n            <stDim:h>32.000000</stDim:h>\n            <stDim:unit>Pixels</stDim:unit>\n         </xmpTPg:MaxPageSize>\n         <xmpTPg:SwatchGroups>\n            <rdf:Seq>\n               <rdf:li rdf:parseType=\"Resource\">\n                  <xmpG:groupName>Default Swatch Group</xmpG:groupName>\n                  <xmpG:groupType>0</xmpG:groupType>\n               </rdf:li>\n            </rdf:Seq>\n         </xmpTPg:SwatchGroups>\n         <illustrator:Type>Document</illustrator:Type>\n         <dc:format>application/pdf</dc:format>\n         <dc:title>\n            <rdf:Alt>\n               <rdf:li xml:lang=\"x-default\">BuildCastIcon</rdf:li>\n            </rdf:Alt>\n         </dc:title>\n         <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>\n         <xmpMM:DocumentID>uuid:18d859fb-8be1-4c4d-bb5e-99b9731ed62b</xmpMM:DocumentID>\n         <xmpMM:InstanceID>uuid:73685081-2781-4ec9-9bdf-6b0c098d612f</xmpMM:InstanceID>\n         <pdf:Producer>Adobe PDF library 15.00</pdf:Producer>\n      </rdf:Description>\n   </rdf:RDF>\n</x:xmpmeta>\n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                           \n<?xpacket end=\"w\"?>\r\nendstream\rendobj\r3 0 obj\r<</Count 1/Kids[7 0 R]/Type/Pages>>\rendobj\r7 0 obj\r<</ArtBox[2.0 0.0 31.9395 30.0]/BleedBox[0.0 0.0 32.0 32.0]/Contents 23 0 R/LastModified(D:20171006134017-07'00')/MediaBox[0.0 0.0 32.0 32.0]/Parent 3 0 R/PieceInfo<</Illustrator 24 0 R>>/Resources<</ExtGState<</GS0 25 0 R>>/Properties<</MC0 21 0 R>>>>/Thumb 26 0 R/TrimBox[0.0 0.0 32.0 32.0]/Type/Page>>\rendobj\r23 0 obj\r<</Filter/FlateDecode/Length 654>>stream\r\nHlTKnTA\fܿS\u0005[\u0002b\u0015\u0005\u0007 \u001bp*\f\u0019\u001243ye]sj\u001cχp~O|?_\u0015~^\u001e_<>\u0001\u0015\u001f\u001cWZt\u0019ѣ<<\u001d<:N*3V9؊rrqDs\u001a\"K\u0003Gy8NUV\u001d]:Q ZT]\u000e\u0017\u0006۔0/&/\u0002\u00071Da\u0006o&jI\u0018,'\u001c2F\u00140\u0005\b.\u00183\u0018\"\ry3&l5rMֈmmLqJOT{\tc?\u0007C@#\u001eCJ\u0003\u0019\u001a(8\u0015ɇBXD6)\u0001=\u0013\u0017<\u001d\u000eeFH\u000bl_B\n\"\fPBzV\nm3}(b#v֋\t^\u0007\u0002x\u001d\ri\u001bW<DgO\u0011hH\u0018\u0010\u0002\u001b\u0014X\u001a,N\t\u000eJB\u0003\u000f~\u000eD_h\u0002]'tp6QTXe3\u000bSYq_MOincPz\u001bWZV\u0015\u0001f|1MYs%\u0004C\u0015\u0018!{גx؃m\u0015GN\u00074\u0014V[\u0017O2rl&\u001b>=%$\u0018@\">92hn4ZP;\u000f\u001b\u00024<;i`\fWy\\V/q\u000btNڠh߹{\u0004Ǒ\b\b\u0007\u0011Sf\u001d($\u001d-ފA4v同\u001e)F\u0010XD.e@:c^3Wuy\u0014mE\u0014h[`?#\u00002\n\u0013\r\nendstream\rendobj\r26 0 obj\r<</BitsPerComponent 8/ColorSpace 27 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 4/Length 20/Width 4>>stream\r\n8;Xp,*>JPW(]\\SI%<2~>\r\nendstream\rendobj\r27 0 obj\r[/Indexed/DeviceRGB 255 28 0 R]\rendobj\r28 0 obj\r<</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream\r\n8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@\"pJ+EP(%0\nb]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\\Ulg9dhD*\"iC[;*=3`oP1[!S^)?1)IZ4dup`\nE1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\\.?d>Mn\n6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1\nVNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<\nPO7r\\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(\nl[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\\~>\r\nendstream\rendobj\r21 0 obj\r<</Intent 29 0 R/Name(Layer 1)/Type/OCG/Usage 30 0 R>>\rendobj\r29 0 obj\r[/View/Design]\rendobj\r30 0 obj\r<</CreatorInfo<</Creator(Adobe Illustrator 21.1)/Subtype/Artwork>>>>\rendobj\r25 0 obj\r<</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>>\rendobj\r24 0 obj\r<</LastModified(D:20171006134017-07'00')/Private 31 0 R>>\rendobj\r31 0 obj\r<</AIMetaData 32 0 R/AIPrivateData1 33 0 R/AIPrivateData2 34 0 R/ContainerVersion 11/CreatorVersion 21/NumBlock 2/RoundtripStreamType 1/RoundtripVersion 17>>\rendobj\r32 0 obj\r<</Length 1237>>stream\r\n%!PS-Adobe-3.0 \r\n%%Creator: Adobe Illustrator(R) 17.0\r\n%%AI8_CreatorVersion: 21.1.0\r\n%%For: (James Clarke) ()\r\n%%Title: (BuildCastIcon.ai)\r\n%%CreationDate: 10/6/2017 1:40 PM\r\n%%Canvassize: 16383\r\n%%BoundingBox: 2 -1 32 30\r\n%%HiResBoundingBox: 2 -0.089002939723287 31.9395093917847 30\r\n%%DocumentProcessColors:\r\n%AI5_FileFormat 13.0\r\n%AI12_BuildNumber: 326\r\n%AI3_ColorUsage: Color\r\n%AI7_ImageSettings: 0\r\n%%RGBProcessColor: 0 0 0 ([Registration])\r\n%AI3_Cropmarks: 0 0 32 32\r\n%AI3_TemplateBox: 16.5 15.5 16.5 15.5\r\n%AI3_TileBox: -272.960000991821 -368 304.9599609375 400\r\n%AI3_DocumentPreview: None\r\n%AI5_ArtSize: 14400 14400\r\n%AI5_RulerUnits: 6\r\n%AI9_ColorModel: 1\r\n%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0\r\n%AI5_TargetResolution: 800\r\n%AI5_NumLayers: 1\r\n%AI17_Begin_Content_if_version_gt:17 1\r\n%AI9_OpenToView: -45 62.75 8 2012 1504 18 0 0 153 233 0 0 0 1 1 0 1 1 0 1\r\n%AI17_Alternate_Content\r\n%AI9_OpenToView: -45 62.75 8 2012 1504 18 0 0 153 233 0 0 0 1 1 0 1 1 0 1\r\n%AI17_End_Versioned_Content\r\n%AI5_OpenViewLayers: 7\r\n%%PageOrigin:-358 -652\r\n%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142\r\n%AI9_Flatten: 1\r\n%AI12_CMSettings: 00.MS\r\n%%EndComments\r\n\r\nendstream\rendobj\r33 0 obj\r<</Length 2195>>stream\r\n%%BoundingBox: 2 -1 32 30\r\n%%HiResBoundingBox: 2 -0.089002939723287 31.9395093917847 30\r\n%AI7_Thumbnail: 128 128 8\r\n%%BeginData: 2039 Hex Bytes\r\n%0000330000660000990000CC0033000033330033660033990033CC0033FF\r\n%0066000066330066660066990066CC0066FF009900009933009966009999\r\n%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66\r\n%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333\r\n%3333663333993333CC3333FF3366003366333366663366993366CC3366FF\r\n%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99\r\n%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033\r\n%6600666600996600CC6600FF6633006633336633666633996633CC6633FF\r\n%6666006666336666666666996666CC6666FF669900669933669966669999\r\n%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33\r\n%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF\r\n%9933009933339933669933999933CC9933FF996600996633996666996699\r\n%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33\r\n%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF\r\n%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399\r\n%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933\r\n%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF\r\n%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC\r\n%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699\r\n%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33\r\n%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100\r\n%000011111111220000002200000022222222440000004400000044444444\r\n%550000005500000055555555770000007700000077777777880000008800\r\n%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB\r\n%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF\r\n%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF\r\n%524C45FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF\r\n%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF\r\n%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF\r\n%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF\r\n%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF\r\n%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF\r\n%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFFFFFFFF\r\n%%EndData\r\n\r\nendstream\rendobj\r34 0 obj\r<</Length 21668>>stream\r\n%AI12_CompressedDataxݽv*90zg-\u00038I\u001dIDls&m1\u0006ff\u0017O:7\u001d\u001ajT*i-|H\u0014:Lh鯵,5\u00039\u001f\"?\u000e{h,Oz4f\f*\u001cf_Ֆ7<\u000e\u0010&Yi\u0015ߏ\u001c5Qk_R4\u0014⓫'딚a{O6Q\u001d4tUn\rˤ)a3!6/0SҤ9\u001au\u0007\u001b,?\u0016\u0007~(\u000eQ\u0012lB<\u0019I[FL\u0018\fsLgEddvyО|K<hKQi\u001bȣ<<)\u001cnO~7!'.\u001c+%\u0001\u000ex.M~_ɻף\u0007\fM~ϼ\u001e~O\ri<!\u0002~P4C_ɿǺ%\u0001Hzj=˃7xés+{\u0003d\u0018bEҚLH\u0004ᒹ4\u0003rlcC\t>\u0005d\bɜ\u00079>#\u0004Q_4#ݕɇ\u0006}IEOA\u001e7e\u0012\u0005S}T$\u001dÐ\u0015\u0014\u000e:R\u000f0\u001f#\r\u0001񩶸j\u001f\u0018xЛ\t\u0011fu(\u0006'@Zl\b\b\u0003\u0018F}[!׏q\u001e\tM\u001dP_\rnȔ\u0012\u0018JsIw6\u0004\u0001\u0018!f|y}|,ƒ܇E\u0001\u0018~UeCc#\u00128\bEE\u0006)\u0002\\\u00022\t^̆\u0012iS\t@v\fzp0$AО2\u001fqL#dҬe\u0005\u0017\u0015Kck-L\u0001\u0004\u0006H#\"\u0010pz\u000f<.&C\u0015A\nM\u0000^>vי,zћ\u0003y0\u0019\u001e\u0007KE\u0014x#A\u0001ywB_\u0005\u001bЕlC\u001f]o\u0003m\u0018\u0010)K!)Kjy,(2:P~zc\u001dM\u0017f)\u0003Ó\tx2ĆO!Bh`zD\u0003۟֔\f/\\0C%%\u001e\u001b_ҸiSu^/P';#\u001d\u000bW\u0003Èu77~\u0006[\u0005IߣDE\bfn;T'`{wx<7(\u0005^\u0015LCU\u001b\u0001P\u000fCr\u0004\u000fOh\u00138>?\u0007h\\ty]\u0004g?M\u0010\u0006'ݖ\u000f\"߻\u000e1%\u0006C4VCP\"쪵l\u0018]D4V\"A\u0014HƢ,}\nNAe\u0016{\u0018\u0014\u000e)X~P-[\u0007&\b\u0019\u001a;\u001cX`h2)\u0006⇟S<ݓI\u001d\u0007ɷ\u0010x\u001bGIo\u001c\r\nšM\u000b7bBa\u0018l讉#\u0011a4_ȥE0ҙ\u001c\u0013\f+\u0005!+_\u0018x\u001681\u0013h\u0018V\u00103l\u0011Y>Ͳjw\u0005V\u001b\u001d_\u0000]3\u0013,C\u0000NFҁ\u0001+f_\u0014\u0007 \u0007Ëf\u000f?IEkѳ;Y\u0004w`._\u0018>`\u000b~\u0002Z\u0016y\u001a1J\u0019e\u0015]?ЙW7\b5\u000f\\tה\u0003 ~\u0011=M\u0019xu.B{}h\u0000*w[\u0004vP4.r\u0005A1kv{\u001dYꫭP\u0010P?Əo\u0014qd?z)\u001b\u0000amw7\u001bパK>H\t:ꃫKޠ%uФ5'&꒘\u0015K3I\u0019hl(&jnH\u001f)7RPmz\u0012\u0015gЬ\u0010\\(\u0017\u000bA86΃$\u001f5vC\u001d\n|HO\u001b|\u0003\u0003.V\u001e\u001f\u0003$m#q]j\u0016n#a\u0013o&?2A:AwzRJxM\u0013\u0013rO?橶OL\u0013\u0004Rq0Wk0\u0006Dz\u001f+[cTS~?cg\u0010\u0001\u0018LDv\u001b\u00068q\u0003\u0016\u0002\u0006{0+\u001d5BEs'F_8dِ\u001e!{fc\u001b\u0017!ƨ-/`@A\u0005d&4&5~\u0010)q1蒍Pl[x@R&)-֠)wB^m6o_jP2a\ruw5+`q\\\fF]\u001c2yC9X8\u001ci\u0003VtgNԡ!fsIe;ܴ\u0003Q\u001c{k\u0006\u000ecswe[Cɸ;<ҥuԺ\u001fwC^9\u001cBͬ0՚r:Bc\u001f\r\u0012ߡ\u000f\tatа9FI\u0004RmM\u001aq1'DJ;%\n\u001bHkç5z\u00196;\u001d;tȾ@NFOgMn\f+\u001c\n ToƒlLT\u0004.:\u0010\u0017j\u0019,Vf@[Pw4\u001eT\"\"ڎ?dI{w\u001f`ɡ@\u0017\u001aiQEYӈ}\u0010<^2\u000bY\u001aIR\nl5[^w1\u001fI\u0010ӻ\u0004B0-¨\u0011b\u0019\u0005gQu%D\f\u0005Ly\u0005)/` 4'tI^Iȩ7#I^MwU\u00187ڈl\rer\u0002?\u0006\ft\u0015\u0002uQ$tUqp!G٣#B2`&D\\6,Ϧ}C\f$zӚqj\u0004:w\u001bR{\u0004|ڕG:\"\u0004^G\u0004dt\u00037PK=rBL\u001ey)Jhf{L\u001f|\u0011Jz\u000e\u001dɉufCMp\f!ntMi\u0006\u001b^w\b\u0012\tv\u0000M/;2Q\u000fI\u001eXՄ)ux*u<m\n9\u0019tU\"!$2\u0006DQz*>u%E\tZ^9 }^\\U\u001aCaVܠo;x\u0019&a͊^\rK8ȹ!a5u\u001f+qͶTP_yX]Wb6e=Z\u0016\r\u001dȥ9Vhz`RcUe\u0019,e\u0019/Ib\f׷i͸\f8XT\u0007-\u0012=\"CD'f\u001cl/U\u001afO\n,Pj~뒡e\u0001\u000e\u001e$\u001c\u0004O$Um&7w\u001f|E/#.jMlf\u001d/:#mʹ\u0013Qj\nLW:4f=S\u0000\u0017M\u0019d#\bEU4\u0016\u0003Q\u001bm%a{'\u001dK=NA\n\u001d\u0019KnsKCZZ7&-\u0010M\u0001h:\u0012SLȀGʿÁ<}\b\u0018\u0019n!@H\u001dB\\`\u0000\u0013(*6Kx<\u0019\u0013xEs\u000fί*\u001d\u001b@\u0003Å\r|˶d\u0000C{pҢʻ*Uy}0\bB>\u0018\u0017Q&mMyih׎$\u0005t\r\u0014XE\u00032q\u001b\u0010@v\"Pbr0^\u0019N\u0014![}9\u001f_8\u0010G\u001a\u000b0kנluMMs+\t<#u\u0006I%\t@f=0\u001ck\u0004,[į\u001a6Er'9TRQ{rRV\u0018\b9j#\r6O\u0013\u0000\u0018\u0003(#/\"́\f2cU\u0017Xod\u000e^AN\u0003\r\u0019wPNZl2YgBv],\u0003\u0012<-\tB\u001a#t$4~\u000e6B)~\u001fJv\r秽\u0018sѸ\u001f\u000e;\u001e:Jh(,uh\u000b VbL\u0000\u0004g\ngr\u001b\b\u000b-8<4RrL\u0019xٰĒG\u0007alWu~\u0007\u0016&a\u0010\u0018,#CtS\f\t\tK۾=e\u0005\u000es \u000f]D\\\u0002TԗwA\bC]8(v8<Z&\u00137T\rXV\u0005J\u0013j\u000eefe)\u0002(3ޒ35P\u0001 i+\u00199R)M[b\u0006XjE\u001c_2{\u001ez\u00121\u000eμa(`JP6!0j>Rf\u001b\u0019\u000fJ)\u0004t&=x7,s3#\u0002IkB\u001fd4&H+-5\u001ay`\u0011)U ɿC?\u0016ȷEgעd\u0002}n\\sʺwK5m95p2l=z5mKSyO\u001e*kM~\u001a\u0001ɐ|5\u0018z]\u0015mR{\u0014\u0003eR\u00106פHCT\u000519`I\u0014\"p06\u000båNo-7qq\u0013\b{/Qh(\u000f\fwB\bfZQ/}4M\f\b\\C&{jO\u0005v\\\u001bKfrg#ɒ'y\u001c6\tSy\u0002\u000bƂ\u0019'\u0017\u0012e\u00008ѩ\u001b2\u0018JϝOdP۲gN6l1RКзweW(\u0014\u0002R#\u0019\u0018\u0010\u0016pu(x\u0004\u0010N0̧^O\"\u0000l?\u000e%<B\u001azLh'\u0019;}~\u0003 HC,\u0004m?(m<|E5+M\u001c\rZX\u001bk\b[дd\u000e\u0011M\u0019cT;\rǻ(\u000b56\u0004H]ޕCz!-'1xF6>i\u0014\u0011Rk#\u0014\u0012>\u001d\f繛E\u000e=zo|$JLeB``k\u0014tOm|\u000eu;S\u0018j7\u001cc^tzڻS\u001fF\u001eM\u00077p@\u000b\\͡~\u0007$@Tb[\u0012!<1K\u0002\u0002\u001e@\u001b\u001c\u000eZ\u0001\u0013yE2\u0000V\u0014mu=%ֶ\nJVj6&m>A\u0014PW!c\u000b{\b?R?4j웏\n\u0014jg\\s\u0011\u0012>\u001eLB 7A?\u0004\n>!>>\u0015\u0000C\u0000L\u000f\r\u0007E[\nuB3k*X^W;\t\u001c\u001dw/`э\u0002\u000f2\r\rQhj7j\u000f]/\"nY1h\u0010b3\u0001S,-W\b\fBZQT}_yZS<\bpͽ^oPeN9TԺ8hsI=:m()\u000f2Ry6\u0001<$\u0012rHΔR0Q]\fr\u0014\u001bY7^p\u00071㮞z5%\u0015>%Y\u0015\u0013 !rez/eLٱ4\b\u0015\u0007;s7=Pbڍ6e9Þ,Dǐ\u0015+ވ&)HĈF(\u0019\nVx\u000bJ&}cvjC\u001b~44 *a\u0001Ի\r\u001c)\u0001*\u0006xXv\\vtkޓ\u0010\u001c\u0003Gf`p\u00189\u001ax\u0016;E\u0017L\u0016<\u000ehc2L#Ǧb\u0018(89,hE)e2lr\u0001}`0WV]N&q.z\u0001kS4'Pi0Pą<h5!3!ɰ''j㐩\u0006Z)K!և6\u001evQDA&/kD</AM\u0006[_zRKԎ>\u001f\u000bE-kl4\u0005x\u000brU{%\u001bv\u001bͿSI\u0016rM3N)G\u0001w=\\\f\u0013zمF0+%vslW|nZ)&\u0015;M><\tۗy^pE\u001el{Wb=wU[4ӟ(_\t'R\u001bu\u0000\u0013~mg\u000fp\u000bޓ$\bO\u0004s1\b/KKačNat/am/fl!x\u000e2<12W\u0004`dywU\u000fώslm6Y\u001d<\b7\u0015)?Tﯪ;6YԹt\u001d۽昣z)-\\;g\u001b7#\u00010\u0014v:9-zy Oa\u00107Ԙ˃[#Qw}YGEs/(X-\u000eFg_bdY(wW\u0004@~j>\nI$;\u001e׍$S\u00017k)$pS\u001bnhI\t\reY˱\u0007aokl\u001f{n|.۠*`T%%A}.PKt\u001cx&tkBn\fu{y}:\u0018:A'oHkd@\u00050\u0006`m@MfsP'zUtru\tkӺt+ԍ\u0013\rS;BQ\u0002\u0015gcF-&7Ma0]\u0015ƆA@\u0005jUP=oZu\u0003\u0005jU|\u001c$\\fR\r\u0003*\u001b҆(\u001f\u001b9Cȼ\bw'q'{\u0005\t`\u001bEy=S1gP\u001f7w\u0004>?W\r6֥]Ꟗܠ6ۍ3\u0003!E2NPqm+=\u0015}\"bc3aIZyZ>l3'\u0004P7֤Ʋ\u0019i<>4]W2_\u001b2ss\n`Fˇ?_Y\u0000CmlmP\u0006ϸ@}L02IhtkC4\bf\nyrJԚx\u001c\u000f|¯]Ww\u000e]޼\u001e,\tT\u00000sv\ftr\b\t*Jh\u0004^T]eG3Գ_\\wz\u0013DLOW^k.PﯙJ\u0011j,\u001cNT\u0000jǀ`f^y\u000f'M\u0002؍Ԭs=a6\u0005\u001a<~٣+\u0000\u0003w)7XQbAG\u0015{*\u0014z7P\u0006T\u0004JÄ6\u00065U[N+PM.Ƈ\u001bʯKVla?\u0002fӕ\u000b@#㣰]\u001aE\u0015j2i@zR|MM\u000ev2\u001a\u0018O/\u001b`\u0018M\\\"l\u0016.\r`\u001dc%ƒ~I\u0019t}F>ڟ?4tj8?6oO?/\u001b&W\nCXs:r}\n`ΗۭKlm}=Rol_Ǻ[ԧruHshpSi۵V*߱= m%Ű+^>\u00050_\u0017\u00060-\u0011'޹>m[\u0013\u000f\u000f6^_\u0014N[#no@Z!̭F.5:\u001fٲ=]]ԧ)z;,5\\Le{\u000fB:e,1ǒaC:oWyƫ\u0019=xƿ#Ur\u001f r5\":cQ\u00016EMEBU\u000eYa\u001bT!pL\\:7Ӽ\u0010gHq޷u%iEA-W\u001fJXD\u0019jlt^Y\u001e\u001e-\u0019p\n\u0015T/\u0015*S}?kB\u00050E\u0015;fBc\u00045{VlvW\fOC\tA[Og\u001aw\n\u0018\\\"\tka\u0000M\u0017]\u0017\u0017s]\u0004-`\u0005L\\\u000bWZ|:C\u000e']\u0012Sz:]bBE#ʲRNORW\u0002C盢iem^yܝi\u0014KSS>Ut\u0014aO)\\dp[\u001b\u0011T7v\u0013Y3}MB\u001bo+;tԐ\u0000J(0=Ի>vs_d\u00102\bf\u0005AR\r\fa~O\u0007*\u0004b\\k\u0010vJ\u0013KĐ\bbS*\u001fu㡆e\u0004s`\u0016voG{ڠ/:ZM\rAG\ng\u0013\u000e/z/\u000b\u001agĵ5ykv\u0010;t\u001dbCO6O\u001eshwlDxyR<!~\n]q/I\\>ɍ0\fɇ\u001a6I\u0013S0q\u0019W\u0019n\u0010mk5TF\u0003'B+l⯪_o440PY63ӏ?\u0007Z>XL\u000fp!\u0005\u0000_\\!w4#R(jB\u0000\u0006FR/?T\u000ee3\u000e\u0011Xи\b\"gTt\f\f'^+\u001f*8#{'69Ǟ$8{;{+\u0012drթ\u001f\u000fUYw\u0019L9F3/\"\u0014W\u0000\u0000Ia\u0002M\t; tQh\u00136ou\u0018]YǇlsuF\u001bW(j̸&9h\u0014\u00134\u001e9ŭ7+\u0003nN\u0001ͪ+\u0011\u0016\u0001w\u0013\\al\u001c?\u001ecF\u0016R\u0007H{U\u000fXR#=M 0C6>,`6\u0003ǁ\u001eFn'1uj:Xt\u000e\u001e \"H6%mnh\u000f6SS9.\u0003\"\u000f\u0010'5qkTFU*\u0014/.\u0018xE{xI\u0005azQanն\u0016@54<\u0002\u001ahжY섯)BU[(\u0002\u0005cJŝ{o'' |\fH{\u00174t\u000b2w;uGZ\u000bb9ׂxu7V\fSX߄s8,Һ\u001a\u001b\u000e\bcO\u0002!hj8$:8'vGvw$\u0014X\u0017\u000f4#!7^H|\u0001Άb0Vs\u0010\t\u0000\u001esѣ\u001f5y?:ы9\u0011\u001e\u001b]rϣV\u0014\u0007\u000e+\u0014;\u00045\u0002bG\u001f4\u000f\u0018ѹĚ\fK3Gf1\u0005Ex4J{ qz\\\u0000&1#⧰>m=L\u001b\u001bY\u000eq[vJu\u0019c<:|\u0018y\u001e}\u000b×3OE9\u0014#󫹯ُMǢ\u001c)@\u0006\u001dl\\\u0004#9ƽK@Uk>R=ޘ{rĲ_z^=hby\u0019q\u0001X\b\u0010\u000f7ϔT>R3\u0004p\t16\u001bM(hnՉ\bJS $\u0014,!\t?!f5\r@\u00137mf\u0013P/=\u001c^T,\u001bg]g6ɂB/\u001e\u0013YULzO\u000eS\n1(+\u0004=<\u0014@蠧(ػ^\u0013g\u0014\u0005f[xJ9\u0005X5+AәߵABL\u00141\u0014R2 V*$\u0007da\u000eZ'~װoeά\u001a\u0004̂007\u0016\f\"yh8lj]\u001b\\<o5HA\u00176$tƊN\u0018\u0006CGs^\bytco]Fwj\u0003\u0018\u0011%Z\"ٴ\u0013\u0018\u0017Hg޸dBWl6\t6)ƴi)F_)6ܨ̋\u0012f\u001bi]-L{ma&f30\u001dHJ\u0001X\u0005H7H7\nJ_)oG\u000b%\u001dy(ŋ\u0011}#(AEsMfށt]<2-\u0011<:氕;SF\u0017nS#bs-\u0001ǟ{Iڝ\t&L/@a󗌄\nTaC!qn񸍵ųL\"\u001eiDi\u0001:Ϫ\u0000C:r\u0003\u000eGir,ƽi^\u0011f\u0018G-AA=iw\\\u001c;wo#@\u000e5\bi^ڧ\u0019i`fϦHGA7F:^\\\u0017H?>xrv:댿\u0005N4t3@\u001aQfy\u0019\u001dDee1c>0ҝ+\u001b4=\u00057=\u000fwT|N#\tҨ\u0001LNipα\u0012&EG\u0016\u0014\u0001b2,Jpf2*%\u0013iR}Ё8xיxdSY\u0007澃@\u0006J2\u0002S{7\u001f\u001f_:>YH0\u0005Cm,X\u0017\u000fPrr\\ɂjL&u\u0006J5\u0014ܮxwt<EP+G8ѿ|\ro^*D\"Jr>Z>࿈r>Z>ϻO5n/[.^]˷d+]ϻ\u000f,ϻoV8s9w-\u001fBk\u0014)rvZ>񘿜;\u0001{zsr>[\u0002M;lʘRv\u0006{%\u0012qZjfXcN\u0002\u001d۪[\u0003\u0005\u001bem*7\u0007L,\u0000kҌ\u0005\u001cPeiI?3ŹmB\u000eyl;\bEE\u001a\tn\u0016CUY^ff\u0018\u0012gh\u001flew@'=ǔǒx@\u000fxQ\u0015iD'*mŞ=C>>6ZQ旐p3U\"\\1&\u0005\u0013+h/qN+\u000b_Faݼ-,Kyy\u0004\u0001p_bRtvqT*ޅb>ЖNo\u001f?r\u0011\u0014꒩8s<-=OSρ{m.:@z\u0007\\\u0003Ā/L\u0003@%HH+;ET녕-f#hZ΁wBc0Žp8\u0014oV,1.\u001ae\u0014/u\u001eۘ2ⷌ>A\u0012:\u0007֨IM&\fЛ\u000bveR\u001e\u000e^|\u0003LV3'|\u000bW\u0003!\u0006ρ)#zN>aͣyКoh?ۻT)\u0007f37ŏ7W&Wsk\u000b\u0007?j6)C\u0007]\u0013\u0014\u001dG(\u0017c+VWu\\\u0000\u0016I\u0001?:yN;Fu]tl\u0006񖨁G\tA~dKFWy\u001cCv5rB\u001bA@ƂleY.h\u0003i@Љv\u001a\u001dĂlF%\u001f\u001a+R\u0003Hl\u0002\f:&vLj\u0010ҫ\u0014.PƻOX\u0010kqe$7G\u001b\u0007Js\u001c\u00131\r{\rG?\"A\u00119ZHr\u0012\u0011Y@\u0016qa\u0010;zupo؎\u000e7~AKQ\u0016\ba$,g饱{WcjH\u001f\u001aK\u0019ul{\u00141<v\r/\u001aP:TŬ#sOΰU)0\u000b]ǢlTJ\u0012Kܓ!D\u0012t&ǌ%~\t)yY-nԱgԷϞ\u000bxaߐUf\u0003?Sn]xj><CI>ken\u0014-2o^J̣XDe\u001eِ.Λ!\u0019ֳ2ϖ;lKS3V;/E*\u0002Dh+hL2϶6Zqޢ+l`9n\u0001\u0002.)`BR/\u0015as33V\bnzyٰ霋JIGyMtk\rG)(#@\u0012.!qh\u0000Z\u0014덟ͩꍟCɏ7~~xoA< $Tsa\u0001zi!G\u001d^\u0012\u000bpqIG>l\u000b\u001bߎhN)ywLk]6v\u00116t\u0001h|:%pniǃ~\u000b\u000b#p&f;8٥奅\u00156[%\"\u0005\u0015>,H\u0016{YH,֭-H\u0016;H\u0016{*u;ڿ(X[\u0012IMa1w\u0014a0޹jU#Eyk<\u0016s*ʛF\u001f)ʣ=\u0017QNa]gI uy(,Fe\b܍`ߗr.l\u001b+K&ێ6.>\u001b9cyZT\u001d{?\"~n7gќ\u0010{k\u000f(W<'3|]\r6{.):\u001bDw?\u000fz7JgRV_W\u0017xTܓ+\u000f\u0015yPK_\u001dvTL\u001d\u000bzS[5De-\n(\u000e?_f_^\u0017j&vxV\u0000wu^'eK]\u0015݋&\u001b7bD\u0004~[>6ҡvnG[\u001d2V{ݱIWobOz^wU\u0000U7r\n`Oώ[Uxy\u000erx`@]poA\"([\u0015>K%\u0013\t87ݢRx:hDnǎ^(M\bIJ8:\u0015ip^{\u000eb\u0001E\u001e\u0012՝^T՛\u0002,wzP\ffL\u000e'{ftvalÚz)\ry\u0011lfFw&&}M\u0015}\u0017<7ٺ2\bTlfO-S\\BfhZ\u001baܮ;&\u0016(\u0007M\u0018SyF9|.cj|>!\u0005\u00159Y⺩>\u0012}}ɩU}E\u00159eβj>>Dڂ\u000bf\u000ew\u0007+sl\u0004>Mՙ\f)>}\u001eY@awMb\u000b\\wq\u0017[Tէxk\u000b-s2yB\u000bV5.0{a==\u001b|Ͼ嫆\u0016]紆K/3p*Eq}N]-i+,^DaSU\"k,\u0006B\u001ama\u001f\u001d.s3\u0005\u00159UM:/sZ>>9\u000bjw\u0017w>\u0003c\u001f@\nV%{>>\u0015#?\u001bs\u0015٦4u>|%\"Yw0ЙS\u001enԡ5\u0015a?\u0007%ω,\u001cQ\u0015{\u001f-1IG0\u001bc_k~\bvSw\u0006\u001f\u0013aO\u000bhM]5'Sjۘ͡gzF1aĔRظL{2񫹡=\u0016\b\u0005\u0019ifOP/3#mG\u001cGs_G{\u001feMѽs]gT?[0.%=3?Wy]k6}3s1mq_\u0016x%<z':Mgz#ev7難i(+]N*vtN\u000b1kOzG-1PC%\"\baM\u0019Q\u0002#x\r)fB5\u000bIZAoTtV\u001bM\u0012wN;)Ĝ\nNKR܅\u0017\u000et\u0016\u001dgh\u0005CrAp*wH.ڷ1\u0001--xC͵eZIS\u0002\u0011lؒ\u00133B(iv6\nED7=\u000b\u0002\u0004k11c_:\u0013 ;³\u000b\rg\r̅J(Gx\u000b8@W\tڷ#+?_Fx\u0010F\bRB\u00113\ffApLS\bŔ4\u0004(?JS}{\f꿠l|҂t\u0014v0խW9\u0007<g\u00156zWzCY{K:E#Ӟ~6~L\u0006-{=i}`;G\u0007t\u0001EKr\u0001\u0019]#\u001a'\u000bv4DN%T~?xg&d|$>ŏcŴ-w\u001f\u0017RMi/ffB*\r=\u001a(u\u0007rXF{;FÞ\u001eN+\u0014\u0014bu\u0006r\u0011bw!\u0014,lFяl\u0016Q\u0003c-[P*\u001f1I\u0016J{\u001d%_ں\u0019Orco\u000b\f5\"\u0019!\u0014QT\u0017\b7(gTjGݭI8\u0005\\p%N2\u0004Sff\u0013b]mŖt(\u001aW;X\u001a:P\f\u001dncw(\"\b\u0003ΆZ\u0004P-y\u000bsdz5]xTF\u0004ʓ<\n2nUL=lqqucO^C\u001dõ\u0013T\u0000\\MwJ~]M\u0017\u0010+F\u001buٜۊ.ǞK\\\u001ac\u0015\"\"MA񶱴5V\u0001`5m\u001b+\u000f.P5K\u001dj\tC\u0015Lr].*>%͝S%tҔ/1\u0014]2o\u0002EX~0\u0012Z+=޹\u0017y\u0010~2-yWj\u0002^Ũu;\u001c(;sZ\u001d`[\n&@JsKTU\u0019ק-8p-\u001b\fUOp郪_^+}y\u001cm+\u001d,\u0019q>ɠT\u00036[\u0010)\u0000\f\u0003D\u0007]\u0006\u0016|LSQsJz\u0005䛁G:<ܩL`VUYLlZYC}Gcaz?^}'Gv\u00106\u000b\bKTl\u0014O\u000b~s<\u0011^r;9$t%vg\tL:Ӥ8Ԓ\u0016ruut:c\fi\u0000k<@\u0001fa yI3\u0001y7\u0018N%s+lO\u001cP\u0014TUSLrV==T켎{1-r/\u00120{\r*`kuA\u000eض\u0002%_\u0000fJ@y}\r4H,r\u0013\fӴ{Ή4j@H\u0001\r4;\u0003LDxrGT\u0015\u001bAUZf%Xh\u0019G=nVH[\u0018/ItzD'3@I{\u0005R$#N'\u0004*IE]{\u0006,It\u0012zD\u001fOگ$1'=SI2y9^Vh?vY'A\u0014\u0005p\u0005^VHfJ=.+l\u0013\n=?rY!mn\n͡?xYeS\u0006\u0014-\u001ev5\u0019\u000eũV3\\xH\\\u0017\u001ee\u001d2Sf;^\u001dCE\u0016\u0003uDw\u0015\u0005K\u000b8Պ\\xzy0L9߅6kvq\u0002\u001d.\u0005,(1'!\u00025ۅ.So;4L*\t\u000eau\u0006%+)h.<&PdX\u000b\u000fi=\u0017pᡆ 犝)C\u000e\u0017\u001e\u0006/[P1C=\u0002\u000b\u000f4\u000b\u000f)\"C\u0004(;M\u0007Z=9.<b䮛^A/<Σ[r+\"1Vku\fCyw*l.<4csC׵1mP]xh\u00063}ۡW3~q\u000b7%sa%\u0017\u001e\u001d\u0006\u0002^\u0017\u001e\u0006p\u000b\u000f\u000b7I`\u000b\u000fgC^R^;/<pI9\nl\u000b\u000f}\\x\u0018<na8u!LpvS=Ѕ޷\u001d=ȇ\\\\\u000b\u000f)C\u0017\n\u000bcfۇzᡷ\u0012ߜCY\u001dz.<6~\u000e.<4#Jm!/<)f\u000b\u000f{dtY.<\u0013uQ.<.շmE~w\u0018L\u00176^xh+c9c66޽ymۻ7\\\u0017\u001eڐFp\u0019C\ns\u0011\u0017\u001eRm\u0004\".<PIYBAۣ!\u000b\u000fw|T>0xLӅ;\u0013f7jzA/Uo;뤻ѣH\u0002r\u0015\u000f^zroGDstH^%\u001apP\u0016#䵻34_wr*M%\u0007\u0006nԹֱzfqXOF̍>àf±ǳU&uQ`UWxt0DTq(QuCz3n\u0014L㬰3)O\u000e\u000ff&u\u0011B;{ZK\u001e'xr \u0015_{iJ:\u0013n\"m!*-_Տm,.\u001fH{kgM·g{\u001b| xx\u0018|<\n')O֗^_5n~m\u001bLx\\d# ^\\D\u001eeo\u000fG+/\u0016\u0019\u000b.*J&ܲV+%\u0006x\u0003_nYX]\u001eN^s\u0010YE SɶJxfa\t_\u0004#0,aϹ~F\u001bj_NU9\u0003WWzp\u0007[r$>\u00140!O*$Å\u001a*u෋՚\u001f\b&wQ2\u0015qhE{.\u0000\u0005\u0011焌ZiR~Jw~A.}V,GQg[/APK[U\u0018\fV޿oe2dT8}Unj\u0017LR\u0012\u0015eZ1q\u0004\u001b^Ǻ'\u0012\u001bNlĜ\u0001->|lrd=C\u0013'_A=^\u00154\u000b֘X96Fjl|Sq,7njs8\u001fKF\u001f\u000f\u000f3\u0018\rg߮#-\u001f$ՏlmuA\r\u0012U\u001e\u001f\u0004Ks筏\u001824if$\u0003DVdۉ\u001d\u0016rm\u001d\".Ykҩz\n<UDSrф\t7\\to\u000blyK~l\u0016.'p K}Cd.\nE.ZnإShG/Ov.bU:x~~\u0014\u001ansX~LL׈J0M6\rW,VMi\fp\u000b[V5[\u001c\u0006\u0017%(\u001dT!|}mH\u0019^\u0003u`9Lj#z\u000f_OI}\u0012<2,\u001akx.\nܬ\u0015\"2%C\r\u0016]9i@ףg_\u0017G\u0001\u0018釀?\u000b\u000e#ܗʱlZdU-;\u0016\u0019O#&kI{Ef@\u0011\fXE5L4ɫN\\Ҽȯ\u000f8r[\u0001ѹYDa[\u0013=xpzT4/\u000e&UsNh}b?]A]oU~\u0015\u0016o.\u001fE\tiMn~f\b\b\u0002\u0018'%#\u0013IJIEt6\u00049:C?\tR\u00079`oT,]d\u0015C:h;0C\b?I\u0000\u001fM9٘\"b5zVn)Cpϣ\u00167rj@2Z\u0001_uXTY \u001f\u0005:%\u0006\u001c (*\u0003\u00158W\u0004+\u0011g SEUW\fBDM\u0007\ftt\u0010GA\u0010}1[{J4Y{L$eX{:\rq:\u001c={ȅc>~\u0014qz|np\"Q\u000f.i#(\tOj,\u0006Z7f}]5J\u0017;1}֕n\\\u0012_iU?}jW|>\u0002)\u0018Yޫ&u\u0013G\u000bt\u0011{\"6[\u0013jnu]\u0006w?|_}V\n\u001f'Z~\u001c5;m\u0014~(3~Yw\u001eV{,\u000fW|܂_oM/C\r(\"-nr\u0014z\u001ei\u001fY0\u0010Ōs,oAA?A/\u0019cZNNxW\u00059\\6T(mubs]Uyp\u001c#S=\u001a3,aI}?_ůHR?T|\u001dU=!S\n.h\u0018s#)\n3.\u0013\u0001\f=;Y\u000f\u0007\u0016=M^\fS]7\u001cvLVnnl?\u0013'l\u001fÃ\u0014\u000eǣ y7p\"x\tG=\u0010'|{8UK4\u000etG[`\u0016\u000fH:{o*\\yKRfqrdѢ~Hn\u0017Y:hh*\u000f\"JZUvZ\u000ev<\u0007`\u0014\"Π=Z'A?`lvLj-`\u001dh\u0000:g\u0007r+nm!\u0018ω\u001b,f)n!bĵP\u0014@+\u0015\f\u0007Y!>d\u000b˳jy/&\u001e\u0015F:~.ogWí:\u0017{U\njkTs+)ܚ|ƋIA66\u000fl16\\\u00149+I4\u0007\u0006\u000e{zeTu\u001f>\u000bW7򖔓`O~\u0002`*FY$7ไf\u0003\u0007\u001e/{h5-U-~\u0000\f\u0003,A\u0018\u0007\u0005N\u0002+'۷ z\u0000ejT)`3))%KmDl;]\u0015\u0010\b'B\r\u0012)([QmQ(\u0001\bo\u0004Z!TM\u0000\u001dCd\u0017%!9Wߌzi~ط\f>kR\u0018\u0013PːL4v۩۱1#rt.%?_@c\bc|NA\u001c\"j{ǅx\u0004sӀL5>(+4g(@B\u0006im\u0017Mw\u0016X\u000fKFll[/)Ud.ZGw\t\u0019ji\t8pc7 \u0013D\u0014B\u0011j\u0019-\u0017\u0018'r\u0007\b҂%,*l\nf\u001e\u00169a\u0019'L)42a\bg32L]\u0000L\u0016\bd)\u0019nݛs֬ٯxa\u0010,\u001c{c=\u001avF8\u0019C~g@@oYܒ`S>8/:X\u0011,.Pd\u0010-6=\u0019|z\u001e쬞l\u0011\r49y\u0004s\u0004mi\u0007F$`n/AEa1?h\u0013\u0013J[N\u0001kEj3Cz'\u0011[d\f_ɑQ22\u001bR7\u0018U:(ltv7}5384.}f%ȭ\u0011z\u0003s\u001ejjP\u0003O_/T\u0016\u001e\u001aJ0I_d_~6^\u0017\u0005Xu\u0014yj?I[EZ}ݸ?MgV,=~_gWߔv'W_\u0002x5\u001b\u000f>Yz7v\"W_{%%?K#q%%9D-\n\u001d_mL\u0004#-;\u0011Nm&J/Өt4nEt[QZ1TOzrfcҺ1Y\u000fܑi\u000e^+j͸,9.\u000e>GҁZ \u00058!vJvu~\u00173\u0004Υ\b{ 1Dϸo_1\u0013Δ\u0007&\u0017?\u001bmn6\tm ^\f/>҃\u0015]\\\u0019s\u0019\u001f[X.<HU~xgZb\u0001V\u0019$-\u0004\u001chH\u0011jX0z\\y[х\rL-na7am;AH\u0019H|N(&7\u0007)H(\u001a˶x<x\u00157\u0004~2\u0012Q;+ir)\u0011,\n԰yY`G\u001e{4RY\u0018=֑P{N.VJ\u000fĠrK%\u0006n>?u#\r=ʡt&(>\u0014\u0001!\u0001>K\u0018\u0004İlf\fL->Q\fB\u0002})s(oJz\u0000J\u000eB\u001b{\u001fj+5\u000fihS\u0004#bMϽܮ\bN#fց6g\u00146\u0011&A9\u0002\u00151k\u001fAرiЦmIN^iǦA[R=\u0004\"O\u0018\t]\nxA<Zү[E\r\u0012dWE}S\u00164yEJiQ\u000f)-jPl\u001fuVJDiAVAi3NčҞlQ\n%\u001d(?]\u001dp\u0017k\u00076%=\u00104hu\u0010G9\u000e'A\u0018h\u00106%=\u000bo&J0\u000bY4Ȥ_\u0012\u001aҴQ\u0001S\u001ep\u0013\u0016GƂ~\u0010ԊOSnx?K,A\u0006RP6W\u001e\u0018p/*ŻWRG**檦\u0017h\"\u0006\u0013ﱈx$rLiI-&աot\\+D>3H$=o\u001a\u000fK~[{`gɮ4=0*0\u0003[\u0014)x2>؏KJAً\u0019A5a\u0016px-o')nA\"\u0001͕SqN\u0014&q38L\u0018\u001e\u0001\u001eR\u0017'IҊ\u0007\u0005_\f\"\u0016>:N\u0017$\u00038\u001aJ\rj2\u0013\u001f\u00040%vK<OZ\"{3]=/+YN\u0017\u0006Joc'cJzʩ?ŝk\u0014ɗ\n[opU\"&l\u00142+ިT5/r$/Z\u0013$Y\u0012V])s_\u001bRXojArM񁯑\n\u0010!K]ևHF\r}]'Qr\r\u0000:/D\u001du8_MN\u001fN\u000b\nIه\u001a1\u0016w]iaD9^7\u0015TR=pIP1lD9~LrQ\u0018yaSt\u0014S2|ߴ\nQp\u000fߵ^}mt\u0004\u001d{\"\b\b!T~N.ʓT4\u0002\u0014*ε\u000b,\u0004U2kA\u0017X\b\n\u001bZ\u0005\u0016*!Z\u0019\nA\u0007_Y6#\u001c\tꓞ$ݏn?\u0004̳WpȲΠ*Kҕ<hO8\u000f\naV,KAG\nN\tU0|%ԯs\u0007_Nړ\u001e|mT\u0012V*OmHc|\u0003k\u0004sa\b+zH?l'ު-tb4Fby\nqnm&\u0007\"?=0UuV'>sE\u001dO\u0016S[vsp\"Lє\u0013\u001eV[h\u0015Oʴ߯H>ն\u0017j|[\"\"&R6)sW{ufMRϣOB\nP[&BxC;keCaj\u0016Ϻ\u0010\u0014\tD\u0000cY\u0017\u001b;\u001f§瑤\u001c\u001f#\u001b~b\u001eg鿙\u000f0\u0013\u0011/P\u001c\u000f_u4?y71 zi\u0002s\u0016UdY?a|KR?1|0'\u0005\u0019\u001cQQKpUϢf[/kz1Ukb2s*ْߒY\u0017\u0012vt}K2ۮz#Y\u0015UYH60z\b\u0010.븹J\u001e`&Kۙ\tSRo`@t\u0018!vzKN^\u000bgs'\bd|hh7ȸ\u001fs\u00117QAV/\u000f\u001c..9㋒\u0018]6_տ\u000f\u0014̷z>v$ow\u001c½NJ\b-z\u001fs\u001f\b&mDqsE\u000f\"PW)׹kA\u0003\u001eErSy\riw>s[n\u0017WO\u001bVb(d\u0018\u000fӊ\u0005e\u00153G\u0007\u0007\u00048:(|>\u0010!Z\u000bZ$\u001c\u000e\u000f'Rg7\u0014ͬيQ/\u0006Db2d|؞L$9L\u0012UF\u0018\u0010ѩX<\u0004kW:u\b^a\u0014'\r9Ûl`Dyl\u000e+1\u000e$PWx\u0010%\u0004DP\u001d4xq}\u0014#\f\u0011{aQsp\u0005R샃Mm Xq\u0015\u0012&Pd*n NS8U'\tFq\u000eA5'ho\u001cHe\u00161S#ֻ<\u0014gqTX7\u0019ov)QԒ\u0013^w+>bս_ErmCuyyw@P\u001dl6TGժ)bEA\u001b1]@b\u0013f tPyJ\u0000`-q\u0013'oHI6<5ul|[O1SS\u0019xi첗\u0019eZxu\u001bb\u000f\u00167I\u0003k1}i?7\u001fe!l1kH(=t^4$([f<僇U^^g`\u0004t\u00060m96xobOkc;\u001a1!lE[I4>}wi.@\u000f3E\u0005h|A$9S\u001fIY,\u001dH;\u0011f(\u001b6#\u001e\r\u000e6m\u001d,*`},@.}ЮH<ԁ4\u000bea#I\">\u0019 yI+θveR`ӕ\u0015&i}W\f>\u001b-\u001f\u001c,RF>u~svv*q4yf\u0010@vJK9\u0012J\u0000rO9R\t\t\rQ~jV*1QZw\"\u0002R<P(-]M9-Ŕ>]\f\u0011@B\u0006G=UIϲ\"\\,\u0000׊p4&\u0010;`fW JpYG([srޭ^\u001f*2DJ͏_$4ĝdD\r8⩷\u000bCq1*k|@\u0002O=i\u0003zc;Wu:\u001e\u001b[\u0004\u0001\u000b<\u0017\u0015\u0001\u000b<WӞ;Kyuyq6n\u0007.t^\u0005i\u0007\u0016w:k\u0014,,\u001ct^2\u001b\u0003z\u0017x:\u001coP\u0004νyo'ojl\f&x,*!S\u000f柠\u0006E\t;\u001d@+|\u000f\u0016~YI)E}w\u00121\"խʑ\n~X<U?\u001a0DM9\u001e\u0010݉i>VBM*\u0012LTu\u001d{C8Kn3SA\u001dox\u0014|=T`Hגv\b/H2VdF8oLP<7\u0005<_+y\u0013~^\u001ax2$Mע4K ِ/\u0003g&\u0017bl\u0013E\"'`\u0004GH\u0010\u001b\r\nhJ\nm~S\u001dʓNO\u000fˡ|Hy\u0015\nE`d+4GQ}%}?Oi\t\u000e_Q5\u0017\u001c&\u0007oG/\u0010˄NCL\u0004\u000fM&cӹ\\.˦9A\f٤(\ffl\b:NY53icC\u001c8\u0015r(<\u0015\"ϋ\u0019e\u0004A\u000b6\tr9!\u0016\\.\r\u0018K9'fE\u0005c\u0001TZ+̈B6B\u0013x6M\f',\u0001P&P\fL\u0006%0\fcy,\rL\u00038B&gB6\u0004S4\u0000JgX%ӿ<s\u0004\u0000\u001c\u0002\u0014rq|wlIiE&ǈ\\\u0017\u0010\u001cL1Y.Krl\\\u0016~\u0014B\u0016Ë\u001c|\u000flRL\u000b\u0013`2!(e3p^,,@\u0019͑nҢZ:'!XK\u000e\u000e\u001c\u0007(hbɊ!Jgx\u001d\u00003\u0014Y\u0018rV`J\u0001ځ\f,\u0006GH\u0002HO&B64\u00022@\u0000Л\u0015`l&˱Y\u0002g\u0004\\:\u0014\u0002ʥ3\\V)fht\\\u0002 \u00060\u0006\u00032\u001c\u001a\u0007L9>MH\u0002)\u0003\\Z\u0014D)\u0001f\u0016zQfC\u0000\u001d9\u0005x\n\u0017\u0010\u0002/da60\f¤Y\u0017(\t\u0005F\u0004Ӱd!1)\"|\u000e\u0001Bzg8\u0015s\u0019\f\u0014`n`\u0002\u0000\u000b\u0014\u0002\u0012\n1*S8g|:\",\u0007&\u0003\u0000\u0016\u0001(ٜ\u0018&Yq<\u0003X\u0015Ϡ1\u0003A!``Q8X-\u0010!6i\u0012 \f\u0001o\n\n\u001c|+\u0006LL:'\u0002e\u0000YX >\rE@\u0001H\u0014\u0005\u0001個4a3Y\u00163G\u0018o\rK\u001aaEd\u0017h\u0004\u0006\u0014\u0018\u0018$\u001f\u000f,\f\nf 0 \u0017\u0000۰@\u001cr\u000b.\u0003 l\u0016(\fϣ<\u0000dfY!ܒd\u001c,\u0015C\u0006 B\u0005\u0006d\u0006`0\u0003\u0011\u000f<\u0007,eE\u0006G\u0005s\fU4H c\u0016\u0000[$\u0004T\u0002xsNeI9\u0000S\u0004F\u0002\u000ePҰ0OX\u0004\u0005\"\u0013\"d0#y8#\u0010@\u0004\bSb\u0001j\u0016$\u0013n?93F\u000bAt\u0006\\\u001030h\f\n\u0002,+\u000fsJc\u000b1\u0013\u0000j\u001f3-\u0011\u0010Ȋ\n[b7 AR9\u0001X\u0006\r\u0001D&`b||\u0016\b\u0018~\u0000lA\u0003E4-74i&:Ck9~\u000f%L9\u001cLV\u0010`\t\u0018h\u0016\fPc\u0004X6dhh\u0006\u0002\u000b$r\u0000\rf \u0018!y\f \u0006H\u000eX\u0004\u0001\u0004\r\u0003+\u0002̉l4bFm\u0002'\"rA\u0005'\n`Cm\u0000\u0012ҙl\u0006ZA\u0003@\n,LeI\u001aW\reE\u000e)\tR\u001dBH\u0003},i\u0000\u001e\u0004Q\u0010T\b\u0007 \u0000y<\u0017Ӡ\u001f@A0kd\u000b\u0010 P\u0006k-X qxD4y\u001aT\u0003r=t5\r\u0007$23.\u001b\blF\u00193NnX=C\u00147\u0010\ry`\u0013xЍ(\u0001>\u0005%`\u000b\u0010,\u0017<H\u0010,\u0001K\u000b \u0004\u000e[39\n\u0001d9A\u001d,g\u0006JF\u0004\u001aga\u0002\u001c@\u0012\u00012Y\u001c\u0019\u0003\u0005\u0002\u0002Q-@\u0012\u0003CM-x\u0011\u000e\u0006Kx\u0002\u0000z  E\"\u001bx.\tB\u0017DP,Q b@%\u0003%\u0002T\f(\u001c2\u00112\\\u0006M\u001c; &\tO\u0000\u000e\u0006\f\u0003!\tl\u0000\f\u0007` Ҩma9DM6\u0003kfX9:3\u0015\u0004\u0016.\u000b\u0010O\u0012F\nŁi\u0005f\f\u0011@ƢI\u001c\u000f@@YN %@\u001b\b6=0\u0000a\bZ^\u0000\u0005\u0004\u000f#q0J$\u0005`?Qi\u0006\b\u0002H3h6\u0006\u00015\u001eW(4\u0002/3`\u0000)'3h$\"\ti\rJ'MB\u000bP+\u0002\u0016]p]\u0019\u0014ٴ\n\u000fr\u0004\u0001p \u00040?X*Jq{\u00033`\ti0h\u001080'\u0005\f\u001027\u0018\u001fP\f:\u001a)\u0002\u0001@,\u0005#yPYbŀ0\"2\u001aGbrB\u001b\u0004\u0014,\"{x\u0010YȊ%\u0011$r2\u0016\u0004\b\\*\u0002]\t,#NQ90\r`|ALy\u0018\bhYD\u001b\u0007\u0018\\\u001aU#\u0018*N\u0004\u0003c\u00174-\u0006 \u0000ΊNC\u000124 \t\u0018>\t6>\u0000\u00060`́Q2@hg3\u000e\u0000\u0014l\u0006@Q!s!kNO\t.&\u0012\u0018a^h~HWrC\u0017c[\n59(!K@B?\u000b\u0000\u000eyu\u000f1j\r\nendstream\rendobj\r5 0 obj\r<</Intent 14 0 R/Name(Layer 1)/Type/OCG/Usage 15 0 R>>\rendobj\r14 0 obj\r[/View/Design]\rendobj\r15 0 obj\r<</CreatorInfo<</Creator(Adobe Illustrator 21.1)/Subtype/Artwork>>>>\rendobj\r22 0 obj\r[21 0 R]\rendobj\r35 0 obj\r<</CreationDate(D:20171006133649-07'00')/Creator(Adobe Illustrator CC 2017 \\(Windows\\))/ModDate(D:20171006134017-07'00')/Producer(Adobe PDF library 15.00)/Title(BuildCastIcon)>>\rendobj\rxref\r\n0 36\r\n0000000004 65535 f\r\n0000000016 00000 n\r\n0000000159 00000 n\r\n0000008794 00000 n\r\n0000000000 00000 f\r\n0000036415 00000 n\r\n0000000000 00000 f\r\n0000008845 00000 n\r\n0000000000 00000 f\r\n0000000000 00000 f\r\n0000000000 00000 f\r\n0000000000 00000 f\r\n0000000000 00000 f\r\n0000000000 00000 f\r\n0000036485 00000 n\r\n0000036516 00000 n\r\n0000000000 00000 f\r\n0000000000 00000 f\r\n0000000000 00000 f\r\n0000000000 00000 f\r\n0000000000 00000 f\r\n0000010610 00000 n\r\n0000036601 00000 n\r\n0000009165 00000 n\r\n0000010910 00000 n\r\n0000010797 00000 n\r\n0000009889 00000 n\r\n0000010048 00000 n\r\n0000010096 00000 n\r\n0000010681 00000 n\r\n0000010712 00000 n\r\n0000010984 00000 n\r\n0000011158 00000 n\r\n0000012447 00000 n\r\n0000014694 00000 n\r\n0000036626 00000 n\r\ntrailer\r\n<</Size 36/Root 1 0 R/Info 35 0 R/ID[<7E02D6AEC19BD849958EDC4078DB63FE><CBB61AAD1428614EA88DD1036822EA78>]>>\r\nstartxref\r\n36820\r\n%%EOF\r\n"
  },
  {
    "path": "src/BuildCast/Assets/build2016windowsdevfeed.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<?xml-stylesheet type=\"text/xsl\" media=\"screen\" href=\"/styles/xslt/rss.xslt\"?>\n<rss version=\"2.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\" xmlns:wfw=\"http://wellformedweb.org/CommentAPI/\" xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\" xmlns:media=\"http://search.yahoo.com/mrss/\" xmlns:itunes=\"http://www.itunes.com/dtds/podcast-1.0.dtd\" xmlns:googleplay=\"http://www.google.com/schemas/play-podcasts/1.0\" xmlns:c9=\"http://channel9.msdn.com\">\n<channel>\n\t<title>Build 2017 Sessions</title>\n    <atom:link rel=\"self\" type=\"application/rss+xml\" href=\"https://s.ch9.ms/Events/Build/2017/RSS\"></atom:link>\n    <generator>Rev9</generator>\n    <description>Sessions for Build 2017</description>\n    <link>https://s.ch9.ms/Events/Build/2017</link>\n    <language>en</language>\n\t\t<media:thumbnail url=\"https://f.ch9.ms/thumbnail/669dc04a-7940-4903-ae8a-e2694c8796f6.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/26090415-71bb-4435-8911-299da2ac8e84.jpg\" height=\"250\" width=\"960\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/ab8c1b3e-2a67-4e57-9d36-0e28fc15a6a0.jpg\" height=\"75\" width=\"100\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/2d3bd92f-d5b8-4cca-87e2-a9d81218cc4c.png\" height=\"60\" width=\"960\"></media:thumbnail>\n  <itunes:image href=\"https://f.ch9.ms/thumbnail/c2635543-13a9-4082-892a-1da55baa9bce.png\"></itunes:image>\n  <item>\n    <title>Project Rome</title>\n    <description><![CDATA[<p>Project Rome</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:26d7d74cc54e4c1b8265a778016b56e6\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9R11</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9R11</link>\n    <itunes:summary>Project Rome </itunes:summary>\n    <itunes:duration>1424</itunes:duration>\n    <pubDate>Mon, 22 May 2017 13:47:40 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9R11</guid>\n    <dc:creator></dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/bfbf/80946ac2-db5a-4630-9d21-2a6cb432bfbf/C9R11ProjectRome_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/bfbf/80946ac2-db5a-4630-9d21-2a6cb432bfbf/C9R11ProjectRome_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/bfbf/80946ac2-db5a-4630-9d21-2a6cb432bfbf/C9R11ProjectRome_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/26d7d74cc54e4c1b8265a778016b56e6/C9R11ProjectRome.mp4\" expression=\"full\" duration=\"1424\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bfbf/80946ac2-db5a-4630-9d21-2a6cb432bfbf/C9R11ProjectRome.mp3\" expression=\"full\" duration=\"1424\" fileSize=\"22794186\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bfbf/80946ac2-db5a-4630-9d21-2a6cb432bfbf/C9R11ProjectRome.mp4\" expression=\"full\" duration=\"1424\" fileSize=\"74640048\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bfbf/80946ac2-db5a-4630-9d21-2a6cb432bfbf/C9R11ProjectRome_high.mp4\" expression=\"full\" duration=\"1424\" fileSize=\"741685783\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bfbf/80946ac2-db5a-4630-9d21-2a6cb432bfbf/C9R11ProjectRome_mid.mp4\" expression=\"full\" duration=\"1424\" fileSize=\"394360593\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n \n  <item>\n    <title>Overview of new Bot Framework features</title>\n    <description><![CDATA[<p>Over 100 new features have been added to the Bot Framwork at //Build. This talk provides a tour of what's new and what's changed.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:77c8146d06124409ad68a770014b2c8c\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9R03</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9R03</link>\n    <itunes:summary>Over 100 new features have been added to the Bot Framwork at //Build. This talk provides a tour of what&#39;s new and what&#39;s changed. </itunes:summary>\n    <itunes:duration>954</itunes:duration>\n    <pubDate>Thu, 11 May 2017 20:06:39 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9R03</guid>\n    <dc:creator>Chris Mullins</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/5d93/65b4a411-242b-476a-a7b6-ad5c14cd5d93/C9R03NewBotFramework_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/5d93/65b4a411-242b-476a-a7b6-ad5c14cd5d93/C9R03NewBotFramework_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/5d93/65b4a411-242b-476a-a7b6-ad5c14cd5d93/C9R03NewBotFramework_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/77c8146d06124409ad68a770014b2c8c/C9R03NewBotFramework.mp4\" expression=\"full\" duration=\"954\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5d93/65b4a411-242b-476a-a7b6-ad5c14cd5d93/C9R03NewBotFramework.mp3\" expression=\"full\" duration=\"954\" fileSize=\"15267786\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5d93/65b4a411-242b-476a-a7b6-ad5c14cd5d93/C9R03NewBotFramework.mp4\" expression=\"full\" duration=\"954\" fileSize=\"57255963\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5d93/65b4a411-242b-476a-a7b6-ad5c14cd5d93/C9R03NewBotFramework_high.mp4\" expression=\"full\" duration=\"954\" fileSize=\"477517270\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5d93/65b4a411-242b-476a-a7b6-ad5c14cd5d93/C9R03NewBotFramework_mid.mp4\" expression=\"full\" duration=\"954\" fileSize=\"261747122\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Bluetooth: Bluetooth GATT Server - Part 3 of 3</title>\n    <description><![CDATA[<p>GATT Server opens up a myriad of Bluetooth Smart (LE) device scenarios. Learn about publishing a GATT server, notifications, and checking for Bluetooth radio hardware capabilities.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:8429938c82d94428a05ca76d015a6319\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4179</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4179</link>\n    <itunes:summary>GATT Server opens up a myriad of Bluetooth Smart (LE) device scenarios. Learn about publishing a GATT server, notifications, and checking for Bluetooth radio hardware capabilities. </itunes:summary>\n    <itunes:duration>542</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4179</guid>\n    <dc:creator>Frank Gorgenyi, Steffen Froehlich</dc:creator>\n\t\t<media:thumbnail url=\"https://f.ch9.ms/thumbnail/be243e16-cf3d-4899-85fd-073fb1c6cc9c.png\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/c4c99c22-35dc-44ea-ab2f-4ced3b34d5f3.png\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/812cc7cf-d9c7-4166-ac5f-f6c12978394e.png\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/fb19/6b0aabc4-6aee-467e-8630-62bb3ee6fb19/P4179.mp3\" expression=\"full\" duration=\"542\" fileSize=\"8679882\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/fb19/6b0aabc4-6aee-467e-8630-62bb3ee6fb19/P4179.mp4\" expression=\"full\" duration=\"542\" fileSize=\"12827046\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/fb19/6b0aabc4-6aee-467e-8630-62bb3ee6fb19/P4179_high.mp4\" expression=\"full\" duration=\"542\" fileSize=\"50161949\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/fb19/6b0aabc4-6aee-467e-8630-62bb3ee6fb19/P4179_mid.mp4\" expression=\"full\" duration=\"542\" fileSize=\"33606485\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4179.mp4\" expression=\"full\" duration=\"542\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Bluetooth: Unpaired Bluetooth LE Device Connectivity - Part 2 of 3</title>\n    <description><![CDATA[<p>Pair no more! With the Windows 10 Creators Update, you can now communicate with your Bluetooth Smart (LE) devices without pairing.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:84316d1cb7a74948a169a76d015a62a9\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4178</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4178</link>\n    <itunes:summary>Pair no more! With the Windows 10 Creators Update, you can now communicate with your Bluetooth Smart (LE) devices without pairing. </itunes:summary>\n    <itunes:duration>533</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4178</guid>\n    <dc:creator>Frank Gorgenyi, Steffen Froehlich</dc:creator>\n\t\t<media:thumbnail url=\"https://f.ch9.ms/thumbnail/d43d7130-1adb-4c8e-a2cc-ea6f7f9545ff.png\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/d47ef822-e5b6-4c67-a955-17b6233820d8.png\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/439df8fd-d68d-429b-8d7b-e74682ca8613.png\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b474/0473947c-0db2-40dd-9224-13e28f35b474/P4178.mp3\" expression=\"full\" duration=\"533\" fileSize=\"8529738\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b474/0473947c-0db2-40dd-9224-13e28f35b474/P4178.mp4\" expression=\"full\" duration=\"533\" fileSize=\"15653398\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b474/0473947c-0db2-40dd-9224-13e28f35b474/P4178_high.mp4\" expression=\"full\" duration=\"533\" fileSize=\"94986616\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b474/0473947c-0db2-40dd-9224-13e28f35b474/P4178_mid.mp4\" expression=\"full\" duration=\"533\" fileSize=\"56868421\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4178.mp4\" expression=\"full\" duration=\"533\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Bluetooth: Intro to Bluetooth LE Explorer - Part 1 of 3</title>\n    <description><![CDATA[Learn about our new Bluetooth UWP sample app aimed to help you code and debug your Bluetooth apps. Quickly view the Gatt Services and characteristics on your peripheral or create a virtual peripheral in seconds. (Final) <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:6e6e807a9b1f4732b834a76d015a623d\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4177</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4177</link>\n    <itunes:summary>Learn about our new Bluetooth UWP sample app aimed to help you code and debug your Bluetooth apps. Quickly view the Gatt Services and characteristics on your peripheral or create a virtual peripheral in seconds. (Final)</itunes:summary>\n    <itunes:duration>724</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4177</guid>\n    <dc:creator>Frank Gorgenyi, Steffen Froehlich</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/4cb0/71b07485-a120-4061-8886-056d22cf4cb0/P4177_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4cb0/71b07485-a120-4061-8886-056d22cf4cb0/P4177_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4cb0/71b07485-a120-4061-8886-056d22cf4cb0/P4177_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4cb0/71b07485-a120-4061-8886-056d22cf4cb0/P4177.mp3\" expression=\"full\" duration=\"724\" fileSize=\"11598282\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4cb0/71b07485-a120-4061-8886-056d22cf4cb0/P4177.mp4\" expression=\"full\" duration=\"724\" fileSize=\"19557941\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4cb0/71b07485-a120-4061-8886-056d22cf4cb0/P4177_high.mp4\" expression=\"full\" duration=\"724\" fileSize=\"91865846\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4cb0/71b07485-a120-4061-8886-056d22cf4cb0/P4177_mid.mp4\" expression=\"full\" duration=\"724\" fileSize=\"58220044\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4177.mp4\" expression=\"full\" duration=\"724\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Tips and tricks for creating performant UI in UWP</title>\n    <description><![CDATA[Give your Windows 10 UWP app UI that next level of polish. An app with great UX should not only look good but should also be fast and fluid. This talk covers some tips and tricks for working with XAML and the Visual Layer to keep in mind that will help ensure a beautiful and adaptive, yet snappy, user experience. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:d20477a3eef9480cb331a76d015a617d\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4173</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4173</link>\n    <itunes:summary>Give your Windows 10 UWP app UI that next level of polish. An app with great UX should not only look good but should also be fast and fluid. This talk covers some tips and tricks for working with XAML and the Visual Layer to keep in mind that will help ensure a beautiful and adaptive, yet snappy, user experience.</itunes:summary>\n    <itunes:duration>1520</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4173</guid>\n    <dc:creator>David Li, Robert Mikhayelyan</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/73d1/d3b5fa74-0b6d-4c8a-95e3-3c8afd0373d1/P4173_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/73d1/d3b5fa74-0b6d-4c8a-95e3-3c8afd0373d1/P4173_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/73d1/d3b5fa74-0b6d-4c8a-95e3-3c8afd0373d1/P4173_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/73d1/d3b5fa74-0b6d-4c8a-95e3-3c8afd0373d1/P4173.mp3\" expression=\"full\" duration=\"1520\" fileSize=\"24323274\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/73d1/d3b5fa74-0b6d-4c8a-95e3-3c8afd0373d1/P4173.mp4\" expression=\"full\" duration=\"1520\" fileSize=\"47961677\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/73d1/d3b5fa74-0b6d-4c8a-95e3-3c8afd0373d1/P4173_high.mp4\" expression=\"full\" duration=\"1520\" fileSize=\"276696039\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/73d1/d3b5fa74-0b6d-4c8a-95e3-3c8afd0373d1/P4173_mid.mp4\" expression=\"full\" duration=\"1520\" fileSize=\"168463614\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4173.mp4\" expression=\"full\" duration=\"1520\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>What’s new for multi-tasking in UWP?</title>\n    <description><![CDATA[This session provides an overview of the methods for running in the background on a scenario-by-scenario basis. Scenarios include Media Playback, Media Capture, Location Tracking, Bluetooth, Media Processing and others running in the background. We also cover how enterprises can enable and control background activity via MDM/Group Policy for the apps used in their enterprise. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:716bf5f6c50e42df8196a76d015a6111\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4172</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4172</link>\n    <itunes:summary>This session provides an overview of the methods for running in the background on a scenario-by-scenario basis. Scenarios include Media Playback, Media Capture, Location Tracking, Bluetooth, Media Processing and others running in the background. We also cover how enterprises can enable and control background activity via MDM/Group Policy for the apps used in their enterprise.</itunes:summary>\n    <itunes:duration>1726</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4172</guid>\n    <dc:creator>Chris Cortes</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/6c14/5da20e2d-afd7-42ab-ab68-576f60db6c14/P4172_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/6c14/5da20e2d-afd7-42ab-ab68-576f60db6c14/P4172_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/6c14/5da20e2d-afd7-42ab-ab68-576f60db6c14/P4172_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6c14/5da20e2d-afd7-42ab-ab68-576f60db6c14/P4172.mp3\" expression=\"full\" duration=\"1726\" fileSize=\"27625674\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6c14/5da20e2d-afd7-42ab-ab68-576f60db6c14/P4172.mp4\" expression=\"full\" duration=\"1726\" fileSize=\"44905334\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6c14/5da20e2d-afd7-42ab-ab68-576f60db6c14/P4172_high.mp4\" expression=\"full\" duration=\"1726\" fileSize=\"222427651\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6c14/5da20e2d-afd7-42ab-ab68-576f60db6c14/P4172_mid.mp4\" expression=\"full\" duration=\"1726\" fileSize=\"136838882\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4172.mp4\" expression=\"full\" duration=\"1726\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Windows 10 on ARM</title>\n    <description><![CDATA[For the first time ever, our customers will be able to experience the Windows they know with all the apps, and peripherals they require, on a mobile, power efficient, always-connected cellular PC. Watch to learn more and see Windows PCs running on Qualcomm Snapdragon processors. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:9bdea401985f4518a22da76d015a60e2\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4171</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4171</link>\n    <itunes:summary>For the first time ever, our customers will be able to experience the Windows they know with all the apps, and peripherals they require, on a mobile, power efficient, always-connected cellular PC. Watch to learn more and see Windows PCs running on Qualcomm Snapdragon processors.</itunes:summary>\n    <itunes:duration>797</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4171</guid>\n    <dc:creator>Arun Kishan, Hari Pulapaka</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/77bc/0cb602d9-0828-49f9-a291-c17b26c377bc/P4171_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/77bc/0cb602d9-0828-49f9-a291-c17b26c377bc/P4171_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/77bc/0cb602d9-0828-49f9-a291-c17b26c377bc/P4171_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/77bc/0cb602d9-0828-49f9-a291-c17b26c377bc/P4171.mp3\" expression=\"full\" duration=\"797\" fileSize=\"12762954\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/77bc/0cb602d9-0828-49f9-a291-c17b26c377bc/P4171.mp4\" expression=\"full\" duration=\"797\" fileSize=\"24693218\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/77bc/0cb602d9-0828-49f9-a291-c17b26c377bc/P4171_high.mp4\" expression=\"full\" duration=\"797\" fileSize=\"136581235\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/77bc/0cb602d9-0828-49f9-a291-c17b26c377bc/P4171_mid.mp4\" expression=\"full\" duration=\"797\" fileSize=\"86906986\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4171.mp4\" expression=\"full\" duration=\"797\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>App Diagnostics #1: The new App Diagnostics APIs</title>\n    <description><![CDATA[In this session, we examine the whole surface of the new app diagnostic APIs, how the API hierarchy models the kernel and platform runtime functionality, and what’s here in the Creators Update and coming in the next release. We also walk through building a UWP version of Task Manager. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:7c7a9ec6409f4be99a6da76d015a6072\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4169</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4169</link>\n    <itunes:summary>In this session, we examine the whole surface of the new app diagnostic APIs, how the API hierarchy models the kernel and platform runtime functionality, and what’s here in the Creators Update and coming in the next release. We also walk through building a UWP version of Task Manager.</itunes:summary>\n    <itunes:duration>1121</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4169</guid>\n    <dc:creator>Andrew Whitechapel</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/cd7b/3621eec4-1efd-4f31-8743-86bfd874cd7b/P4169_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/cd7b/3621eec4-1efd-4f31-8743-86bfd874cd7b/P4169_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/cd7b/3621eec4-1efd-4f31-8743-86bfd874cd7b/P4169_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cd7b/3621eec4-1efd-4f31-8743-86bfd874cd7b/P4169.mp3\" expression=\"full\" duration=\"1121\" fileSize=\"17939658\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cd7b/3621eec4-1efd-4f31-8743-86bfd874cd7b/P4169.mp4\" expression=\"full\" duration=\"1121\" fileSize=\"31280089\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cd7b/3621eec4-1efd-4f31-8743-86bfd874cd7b/P4169_high.mp4\" expression=\"full\" duration=\"1121\" fileSize=\"199349766\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cd7b/3621eec4-1efd-4f31-8743-86bfd874cd7b/P4169_mid.mp4\" expression=\"full\" duration=\"1121\" fileSize=\"119293559\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4169.mp4\" expression=\"full\" duration=\"1121\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Dev Center: Advanced pricing, sales and release scheduling</title>\n    <description><![CDATA[Learn about the exciting new features in Dev Center that provide you the ability to maximize user acquisition app revenue through conditional targeting of deals and discounts to a subset of users. We also explore how Dev Center puts you in precise control of your product’s release, pricing, and go-live date to align with your region specific marketing activities. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:01f41c6266dc4561bfe6a76d015a6043\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4166</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4166</link>\n    <itunes:summary>Learn about the exciting new features in Dev Center that provide you the ability to maximize user acquisition app revenue through conditional targeting of deals and discounts to a subset of users. We also explore how Dev Center puts you in precise control of your product’s release, pricing, and go-live date to align with your region specific marketing activities.</itunes:summary>\n    <itunes:duration>760</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4166</guid>\n    <dc:creator>Bernardo Zamora</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/7cab/7663bf26-b584-47c9-a02b-1af458267cab/P4166_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/7cab/7663bf26-b584-47c9-a02b-1af458267cab/P4166_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/7cab/7663bf26-b584-47c9-a02b-1af458267cab/P4166_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7cab/7663bf26-b584-47c9-a02b-1af458267cab/P4166.mp3\" expression=\"full\" duration=\"760\" fileSize=\"12165450\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7cab/7663bf26-b584-47c9-a02b-1af458267cab/P4166.mp4\" expression=\"full\" duration=\"760\" fileSize=\"22749854\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7cab/7663bf26-b584-47c9-a02b-1af458267cab/P4166_high.mp4\" expression=\"full\" duration=\"760\" fileSize=\"111383434\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7cab/7663bf26-b584-47c9-a02b-1af458267cab/P4166_mid.mp4\" expression=\"full\" duration=\"760\" fileSize=\"71010303\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4166.mp4\" expression=\"full\" duration=\"760\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Enable natural pen interaction by using Ink Analysis to better understand users’ ink</title>\n    <description><![CDATA[<p>The Creator’s Update brings new InkAnalysis APIs, allowing the user to ink naturally and enabling the system to recognize handwriting, shapes, document structure, lists, and more. We walk through how to take advantage of these APIs and share code samples.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:8f15f7d4d6d2468784b8a76d015a600f\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4165</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4165</link>\n    <itunes:summary>The Creator’s Update brings new InkAnalysis APIs, allowing the user to ink naturally and enabling the system to recognize handwriting, shapes, document structure, lists, and more. We walk through how to take advantage of these APIs and share code samples. </itunes:summary>\n    <itunes:duration>1309</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4165</guid>\n    <dc:creator>Jianfeng Lin</dc:creator>\n\t\t<media:thumbnail url=\"https://f.ch9.ms/thumbnail/91c8f918-8c71-402e-b88e-c9cf98be8983.png\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/45b98d61-70db-4ea3-8b05-a30959e0b789.png\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/af037b82-deff-4a03-aa3a-355cd3a7818b.png\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2c52/7f433bcd-d41b-458a-ab5d-a0214be62c52/P4165.mp3\" expression=\"full\" duration=\"1309\" fileSize=\"20955978\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2c52/7f433bcd-d41b-458a-ab5d-a0214be62c52/P4165.mp4\" expression=\"full\" duration=\"1309\" fileSize=\"28373622\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2c52/7f433bcd-d41b-458a-ab5d-a0214be62c52/P4165_high.mp4\" expression=\"full\" duration=\"1309\" fileSize=\"153467101\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2c52/7f433bcd-d41b-458a-ab5d-a0214be62c52/P4165_mid.mp4\" expression=\"full\" duration=\"1309\" fileSize=\"103160859\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4165.mp4\" expression=\"full\" duration=\"1309\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Microsoft Universal User Acquisition Platform</title>\n    <description><![CDATA[In this session aimed at publishers wanting to acquire and re-engage with users, learn about how to acquire users using Microsoft Universal User Acquisition Platform, Dev Center Campaign experiences, analytics, API, and variety of ad formats to match your app's user experience perfectly.&nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:5eb534fae3484fd79e27a76d015a5f46\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4154</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4154</link>\n    <itunes:summary>In this session aimed at publishers wanting to acquire and re-engage with users, learn about how to acquire users using Microsoft Universal User Acquisition Platform, Dev Center Campaign experiences, analytics, API, and variety of ad formats to match your app&#39;s user experience perfectly. </itunes:summary>\n    <itunes:duration>552</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4154</guid>\n    <dc:creator>Anusha Subramanian</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/629a/a08a2c49-0e10-4d09-a9ad-700de16a629a/P4154_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/629a/a08a2c49-0e10-4d09-a9ad-700de16a629a/P4154_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/629a/a08a2c49-0e10-4d09-a9ad-700de16a629a/P4154_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/629a/a08a2c49-0e10-4d09-a9ad-700de16a629a/P4154.mp3\" expression=\"full\" duration=\"552\" fileSize=\"8848842\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/629a/a08a2c49-0e10-4d09-a9ad-700de16a629a/P4154.mp4\" expression=\"full\" duration=\"552\" fileSize=\"11984858\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/629a/a08a2c49-0e10-4d09-a9ad-700de16a629a/P4154_high.mp4\" expression=\"full\" duration=\"552\" fileSize=\"33569868\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/629a/a08a2c49-0e10-4d09-a9ad-700de16a629a/P4154_mid.mp4\" expression=\"full\" duration=\"552\" fileSize=\"24770916\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4154.mp4\" expression=\"full\" duration=\"552\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How to add an in-app purchase flow to your desktop app leveraging the Desktop Bridge</title>\n    <description><![CDATA[Whether your app is free or not, you can sell content, other apps, or new app functionality (such as unlocking the next level of a game) from right within your desktop application. You can easily integrate in-app purchase flow to your app, thanks to the Desktop Bridge; you can do it from any desktop application such as: WPF, WinForms, MFC, or even Visual Basic 6. The Desktop Bridge also allow your application to leverage from simplified and trusted deployment, easier monetization, and the ability to modernize your app with the all latest Windows 10 features. Features that were available only for UWPs are now available to any desktop app. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:f0ccc1a4dcf248d8a321a76d015a5edf\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4148</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4148</link>\n    <itunes:summary>Whether your app is free or not, you can sell content, other apps, or new app functionality (such as unlocking the next level of a game) from right within your desktop application. You can easily integrate in-app purchase flow to your app, thanks to the Desktop Bridge; you can do it from any desktop application such as: WPF, WinForms, MFC, or even Visual Basic 6. The Desktop Bridge also allow your application to leverage from simplified and trusted deployment, easier monetization, and the ability to modernize your app with the all latest Windows 10 features. Features that were available only for UWPs are now available to any desktop app.</itunes:summary>\n    <itunes:duration>839</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4148</guid>\n    <dc:creator>Vladimir Postel</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/5214/29da5aa3-e11d-4fd1-abfd-13b5a9495214/P4148_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/5214/29da5aa3-e11d-4fd1-abfd-13b5a9495214/P4148_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/5214/29da5aa3-e11d-4fd1-abfd-13b5a9495214/P4148_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5214/29da5aa3-e11d-4fd1-abfd-13b5a9495214/P4148.mp3\" expression=\"full\" duration=\"839\" fileSize=\"13428042\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5214/29da5aa3-e11d-4fd1-abfd-13b5a9495214/P4148.mp4\" expression=\"full\" duration=\"839\" fileSize=\"19843712\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5214/29da5aa3-e11d-4fd1-abfd-13b5a9495214/P4148_high.mp4\" expression=\"full\" duration=\"839\" fileSize=\"74242825\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5214/29da5aa3-e11d-4fd1-abfd-13b5a9495214/P4148_mid.mp4\" expression=\"full\" duration=\"839\" fileSize=\"51726989\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4148.mp4\" expression=\"full\" duration=\"839\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Dev Center analytics for Win32 developers</title>\n    <description><![CDATA[Developers who publish UWP apps in the Windows Store get the benefit of access to analytics and insights about app performance and reliability, along with services to engage customers and create monetization opportunities. In this session, learn how Win32 application developers can get similar analytics and insights benefits within Dev Center, with access to health, usage, and install reports – even though their desktop applications aren’t published through the Windows Store using the Desktop Bridge. Win32 developers can use these analytics to assess the reliability of their desktop applications to ultimately provide a better experience to their customers. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:e2ba3ca8ed634c61be5ba76d015a5e36\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4118</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4118</link>\n    <itunes:summary>Developers who publish UWP apps in the Windows Store get the benefit of access to analytics and insights about app performance and reliability, along with services to engage customers and create monetization opportunities. In this session, learn how Win32 application developers can get similar analytics and insights benefits within Dev Center, with access to health, usage, and install reports – even though their desktop applications aren’t published through the Windows Store using the Desktop Bridge. Win32 developers can use these analytics to assess the reliability of their desktop applications to ultimately provide a better experience to their customers.</itunes:summary>\n    <itunes:duration>1098</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4118</guid>\n    <dc:creator>Sonia Carlson</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/e53f/40f2993d-1001-4857-851a-cb8b3dcfe53f/P4118_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e53f/40f2993d-1001-4857-851a-cb8b3dcfe53f/P4118_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e53f/40f2993d-1001-4857-851a-cb8b3dcfe53f/P4118_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e53f/40f2993d-1001-4857-851a-cb8b3dcfe53f/P4118.mp3\" expression=\"full\" duration=\"1098\" fileSize=\"17571786\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e53f/40f2993d-1001-4857-851a-cb8b3dcfe53f/P4118.mp4\" expression=\"full\" duration=\"1098\" fileSize=\"25941115\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e53f/40f2993d-1001-4857-851a-cb8b3dcfe53f/P4118_high.mp4\" expression=\"full\" duration=\"1098\" fileSize=\"131277320\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e53f/40f2993d-1001-4857-851a-cb8b3dcfe53f/P4118_mid.mp4\" expression=\"full\" duration=\"1098\" fileSize=\"82618501\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4118.mp4\" expression=\"full\" duration=\"1098\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Maximizing user engagement with customized app content</title>\n    <description><![CDATA[Learn about the new advanced targeting capabilities in Dev Center. Show customized app content at runtime to incentivize customer behavior, optimize engagement, and increase monetization. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:eea77b95f4bf4edbb410a76d015a5e07\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4116</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4116</link>\n    <itunes:summary>Learn about the new advanced targeting capabilities in Dev Center. Show customized app content at runtime to incentivize customer behavior, optimize engagement, and increase monetization.</itunes:summary>\n    <itunes:duration>728</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4116</guid>\n    <dc:creator>Yamil Hernandez</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/e3aa/adbd4974-9172-497a-9517-e43a4f84e3aa/P4116_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e3aa/adbd4974-9172-497a-9517-e43a4f84e3aa/P4116_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e3aa/adbd4974-9172-497a-9517-e43a4f84e3aa/P4116_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e3aa/adbd4974-9172-497a-9517-e43a4f84e3aa/P4116.mp3\" expression=\"full\" duration=\"728\" fileSize=\"11656266\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e3aa/adbd4974-9172-497a-9517-e43a4f84e3aa/P4116.mp4\" expression=\"full\" duration=\"728\" fileSize=\"18412220\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e3aa/adbd4974-9172-497a-9517-e43a4f84e3aa/P4116_high.mp4\" expression=\"full\" duration=\"728\" fileSize=\"97829223\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e3aa/adbd4974-9172-497a-9517-e43a4f84e3aa/P4116_mid.mp4\" expression=\"full\" duration=\"728\" fileSize=\"61519194\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4116.mp4\" expression=\"full\" duration=\"728\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Go big! Optimizing your applications for large screen experiences&#160;</title>\n    <description><![CDATA[<p>Organizations are modernizing their workspaces with Surface Hubs and large screen devices to support group collaboration and workplace transformation. Capture these environments with powerful, captivating apps that are designed for collaboration. From the conference room to the developer bullpen your immersive apps will enable you to reach new users. In this session learn how you can optimize your Windows applications for large screen experiences. Learn how you can leverage the responsive, immersive 84” 4K display with up to 100 points of touch and three concurrent inking streams to developed enhanced functionality.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:e6f310727a25486893a0a76d015a5ddd\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4115</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4115</link>\n    <itunes:summary>Organizations are modernizing their workspaces with Surface Hubs and large screen devices to support group collaboration and workplace transformation. Capture these environments with powerful, captivating apps that are designed for collaboration. From the conference room to the developer bullpen your immersive apps will enable you to reach new users. In this session learn how you can optimize your Windows applications for large screen experiences. Learn how you can leverage the responsive, immersive 84” 4K display with up to 100 points of touch and three concurrent inking streams to developed enhanced functionality. </itunes:summary>\n    <itunes:duration>1384</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4115</guid>\n    <dc:creator>Mark Rideout</dc:creator>\n\t\t<media:thumbnail url=\"https://f.ch9.ms/thumbnail/79fd8946-322b-49c5-ab0a-77d1e9f5e3d1.png\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/5ab0890e-8d48-4ef6-ad53-d36a2a706fa7.png\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/d9d30797-fe2e-4be6-a052-189ffd829678.png\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ce60/bc9da5c7-e927-4129-a1eb-7221b3a7ce60/P4115.mp3\" expression=\"full\" duration=\"1384\" fileSize=\"22148298\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ce60/bc9da5c7-e927-4129-a1eb-7221b3a7ce60/P4115.mp4\" expression=\"full\" duration=\"1384\" fileSize=\"44243857\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ce60/bc9da5c7-e927-4129-a1eb-7221b3a7ce60/P4115_high.mp4\" expression=\"full\" duration=\"1384\" fileSize=\"403779871\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ce60/bc9da5c7-e927-4129-a1eb-7221b3a7ce60/P4115_mid.mp4\" expression=\"full\" duration=\"1384\" fileSize=\"234889602\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4115.mp4\" expression=\"full\" duration=\"1384\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Bot conversations for apps</title>\n    <description><![CDATA[The same bot that you create as a Cortana skill or a Skype bot can be accessed from applications. Learn how to access the bot’s intelligence in the cloud with voice, text, and UI input and create rich a conversation experience for apps. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:19003c1d59fd414a8d1da76d015a5da9\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4114</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4114</link>\n    <itunes:summary>The same bot that you create as a Cortana skill or a Skype bot can be accessed from applications. Learn how to access the bot’s intelligence in the cloud with voice, text, and UI input and create rich a conversation experience for apps.</itunes:summary>\n    <itunes:duration>1167</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4114</guid>\n    <dc:creator>Khuram Shahid</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/8678/455af056-2435-44b2-a0da-b033121b8678/P4114_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8678/455af056-2435-44b2-a0da-b033121b8678/P4114.mp3\" expression=\"full\" duration=\"1167\" fileSize=\"18675402\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8678/455af056-2435-44b2-a0da-b033121b8678/P4114.mp4\" expression=\"full\" duration=\"1167\" fileSize=\"23931637\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8678/455af056-2435-44b2-a0da-b033121b8678/P4114_high.mp4\" expression=\"full\" duration=\"1167\" fileSize=\"104117537\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8678/455af056-2435-44b2-a0da-b033121b8678/P4114_mid.mp4\" expression=\"full\" duration=\"1167\" fileSize=\"67295262\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4114.mp4\" expression=\"full\" duration=\"1167\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>A quick lap around Microsoft Ad Monetization Platform</title>\n    <description><![CDATA[Learn about new Microsoft Monetization Platform that will help accelerate audience growth, boost monetization, and simplify your ad business for your apps. Get an overview of the new server-side Microsoft Monetization Platform, and learn about new ad experiences – native, playable, and video. Hear about new capabilities to drive installs and re-engage through Microsoft Universal App Promotion. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:a0e381c0bf0c4535a055a76d015a5d6c\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4112</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4112</link>\n    <itunes:summary>Learn about new Microsoft Monetization Platform that will help accelerate audience growth, boost monetization, and simplify your ad business for your apps. Get an overview of the new server-side Microsoft Monetization Platform, and learn about new ad experiences – native, playable, and video. Hear about new capabilities to drive installs and re-engage through Microsoft Universal App Promotion.</itunes:summary>\n    <itunes:duration>1117</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4112</guid>\n    <dc:creator>Kiran Bangalore</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/a4f3/58a772b4-a6ca-499b-a5f5-ce8339b4a4f3/P4112_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a4f3/58a772b4-a6ca-499b-a5f5-ce8339b4a4f3/P4112_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a4f3/58a772b4-a6ca-499b-a5f5-ce8339b4a4f3/P4112_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a4f3/58a772b4-a6ca-499b-a5f5-ce8339b4a4f3/P4112.mp3\" expression=\"full\" duration=\"1117\" fileSize=\"17878986\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a4f3/58a772b4-a6ca-499b-a5f5-ce8339b4a4f3/P4112.mp4\" expression=\"full\" duration=\"1117\" fileSize=\"33109667\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a4f3/58a772b4-a6ca-499b-a5f5-ce8339b4a4f3/P4112_high.mp4\" expression=\"full\" duration=\"1117\" fileSize=\"205137996\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a4f3/58a772b4-a6ca-499b-a5f5-ce8339b4a4f3/P4112_mid.mp4\" expression=\"full\" duration=\"1117\" fileSize=\"123033824\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4112.mp4\" expression=\"full\" duration=\"1117\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>UWP Apps file access improvements</title>\n    <description><![CDATA[Windows makes it easy to bring existing code into UWP apps, and we see that virtually every app will access the file system at some point. This session covers how to open and enumerate files using familiar APIs, including strategies for optimizing some of your existing file access code. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:bacc6ed60cfe48228510a76d015a5d3d\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4102</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4102</link>\n    <itunes:summary>Windows makes it easy to bring existing code into UWP apps, and we see that virtually every app will access the file system at some point. This session covers how to open and enumerate files using familiar APIs, including strategies for optimizing some of your existing file access code.</itunes:summary>\n    <itunes:duration>760</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4102</guid>\n    <dc:creator>Adam Wilson, steve maillet</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/68e7/a6b41517-6ed6-4dcc-9cfb-1fe65f0468e7/P4102_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/68e7/a6b41517-6ed6-4dcc-9cfb-1fe65f0468e7/P4102_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/68e7/a6b41517-6ed6-4dcc-9cfb-1fe65f0468e7/P4102_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/68e7/a6b41517-6ed6-4dcc-9cfb-1fe65f0468e7/P4102.mp3\" expression=\"full\" duration=\"760\" fileSize=\"12166602\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/68e7/a6b41517-6ed6-4dcc-9cfb-1fe65f0468e7/P4102.mp4\" expression=\"full\" duration=\"760\" fileSize=\"17309549\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/68e7/a6b41517-6ed6-4dcc-9cfb-1fe65f0468e7/P4102_high.mp4\" expression=\"full\" duration=\"760\" fileSize=\"79951356\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/68e7/a6b41517-6ed6-4dcc-9cfb-1fe65f0468e7/P4102_mid.mp4\" expression=\"full\" duration=\"760\" fileSize=\"51486250\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4102.mp4\" expression=\"full\" duration=\"760\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Surface Dial: What’s new in the Creators Update?</title>\n    <description><![CDATA[In the Windows 10 Creators Update, we’ve given developers and users more power and flexibility in how they take advantage of the Surface Dial. In this session, we show you the new features supported in the RadialController APIs – including new gestures like press-and-rotate; more control over input and output with off-UI thread input for UWPs and haptic feedback interfaces; and additional menu customization with font glyph support and menu suppression. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:bbd6f46b9ecb4452a53da76d015a5cf2\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4100</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4100</link>\n    <itunes:summary>In the Windows 10 Creators Update, we’ve given developers and users more power and flexibility in how they take advantage of the Surface Dial. In this session, we show you the new features supported in the RadialController APIs – including new gestures like press-and-rotate; more control over input and output with off-UI thread input for UWPs and haptic feedback interfaces; and additional menu customization with font glyph support and menu suppression.</itunes:summary>\n    <itunes:duration>1574</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4100</guid>\n    <dc:creator>Connor Weins</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/d84c/70eeaedd-bcdb-481e-a13b-fa79ab84d84c/P4100_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/d84c/70eeaedd-bcdb-481e-a13b-fa79ab84d84c/P4100_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/d84c/70eeaedd-bcdb-481e-a13b-fa79ab84d84c/P4100_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d84c/70eeaedd-bcdb-481e-a13b-fa79ab84d84c/P4100.mp3\" expression=\"full\" duration=\"1574\" fileSize=\"25201482\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d84c/70eeaedd-bcdb-481e-a13b-fa79ab84d84c/P4100.mp4\" expression=\"full\" duration=\"1574\" fileSize=\"47215229\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d84c/70eeaedd-bcdb-481e-a13b-fa79ab84d84c/P4100_high.mp4\" expression=\"full\" duration=\"1574\" fileSize=\"325616329\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d84c/70eeaedd-bcdb-481e-a13b-fa79ab84d84c/P4100_mid.mp4\" expression=\"full\" duration=\"1574\" fileSize=\"186817028\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4100.mp4\" expression=\"full\" duration=\"1574\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Production tracing with Event Tracing for Windows (ETW)</title>\n    <description><![CDATA[An overview of ETW and the frameworks built around it, including WPP, manifests, Event Log, and the new TraceLogging framework. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:a3c5d87c11b54fc7bda1a76d015a5c99\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4099</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4099</link>\n    <itunes:summary>An overview of ETW and the frameworks built around it, including WPP, manifests, Event Log, and the new TraceLogging framework.</itunes:summary>\n    <itunes:duration>1855</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4099</guid>\n    <dc:creator>Doug Cook</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/e15a/779a943c-c5f0-4965-a954-b903a3bae15a/P4099_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e15a/779a943c-c5f0-4965-a954-b903a3bae15a/P4099_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e15a/779a943c-c5f0-4965-a954-b903a3bae15a/P4099_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e15a/779a943c-c5f0-4965-a954-b903a3bae15a/P4099.mp3\" expression=\"full\" duration=\"1855\" fileSize=\"29688906\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e15a/779a943c-c5f0-4965-a954-b903a3bae15a/P4099.mp4\" expression=\"full\" duration=\"1855\" fileSize=\"41254432\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e15a/779a943c-c5f0-4965-a954-b903a3bae15a/P4099_high.mp4\" expression=\"full\" duration=\"1855\" fileSize=\"163966621\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e15a/779a943c-c5f0-4965-a954-b903a3bae15a/P4099_mid.mp4\" expression=\"full\" duration=\"1855\" fileSize=\"111405102\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4099.mp4\" expression=\"full\" duration=\"1855\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Innovate faster with Windows as a Service (WaaS)</title>\n    <description><![CDATA[Windows 10 and Windows as a service (WaaS) enable significantly shorter product cycles while maintaining high quality and an innovative community-centric approach to app development. This session explains the benefits of decoupling app releases from the Windows lifecycle, how to take advantage of the new building, deploying, and servicing model, as well as the new features being released to Windows. We share best practices, tools, and services that Microsoft is developing to make the transition easier for our app development partners. This includes critical considerations such as maintaining compatibility, leveraging app telemetry, and engaging with Microsoft. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:95e251abf3964856bf7ba76d015a5bec\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4087</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4087</link>\n    <itunes:summary>Windows 10 and Windows as a service (WaaS) enable significantly shorter product cycles while maintaining high quality and an innovative community-centric approach to app development. This session explains the benefits of decoupling app releases from the Windows lifecycle, how to take advantage of the new building, deploying, and servicing model, as well as the new features being released to Windows. We share best practices, tools, and services that Microsoft is developing to make the transition easier for our app development partners. This includes critical considerations such as maintaining compatibility, leveraging app telemetry, and engaging with Microsoft.</itunes:summary>\n    <itunes:duration>1364</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4087</guid>\n    <dc:creator>Ethel Garc&#237;a Simon Matachana, Steve DiAcetis</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/0918/ad010b1d-8081-4975-a6df-c63fe1420918/P4087_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0918/ad010b1d-8081-4975-a6df-c63fe1420918/P4087_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0918/ad010b1d-8081-4975-a6df-c63fe1420918/P4087_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0918/ad010b1d-8081-4975-a6df-c63fe1420918/P4087.mp3\" expression=\"full\" duration=\"1364\" fileSize=\"21833034\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0918/ad010b1d-8081-4975-a6df-c63fe1420918/P4087.mp4\" expression=\"full\" duration=\"1364\" fileSize=\"31720349\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0918/ad010b1d-8081-4975-a6df-c63fe1420918/P4087_high.mp4\" expression=\"full\" duration=\"1364\" fileSize=\"110338614\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0918/ad010b1d-8081-4975-a6df-c63fe1420918/P4087_mid.mp4\" expression=\"full\" duration=\"1364\" fileSize=\"75085697\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4087.mp4\" expression=\"full\" duration=\"1364\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Beyond App Containers: Gaining privileged access to hardware inside your Windows app using custom capabilities</title>\n    <description><![CDATA[<p>Ever wished you could provide an immersive Windows app experience by leveraging hardware capabilities that were previously off-limits from within an app container? Look no further. Custom capabilities empowers hardware owners (IHVs) to expose hardware capabilities to Windows app developers and manage them securely. This session provides an overview about custom capabilities; how to gain access and use them within your Windows application. A code walkthrough using a sample application illustrates the high level app development process.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:890a9526ade746138d18a76d015a5b85\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4086</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4086</link>\n    <itunes:summary>Ever wished you could provide an immersive Windows app experience by leveraging hardware capabilities that were previously off-limits from within an app container? Look no further. Custom capabilities empowers hardware owners (IHVs) to expose hardware capabilities to Windows app developers and manage them securely. This session provides an overview about custom capabilities; how to gain access and use them within your Windows application. A code walkthrough using a sample application illustrates the high level app development process. </itunes:summary>\n    <itunes:duration>1046</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4086</guid>\n    <dc:creator>Viraf Gandhi, Ben McGregor</dc:creator>\n\t\t<media:thumbnail url=\"https://f.ch9.ms/thumbnail/6c87db78-9d94-47c2-a3f6-a05ddaa4c5c5.png\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/d0e939c7-6ee8-4b9b-8e45-0ce09ea4754b.png\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/1fc4f6bf-c4a9-4ea3-9cfc-4c66dcd6e404.png\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1b90/eac4500a-7e52-4b34-bf71-74d9ed9d1b90/P4086.mp3\" expression=\"full\" duration=\"1046\" fileSize=\"16751946\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1b90/eac4500a-7e52-4b34-bf71-74d9ed9d1b90/P4086.mp4\" expression=\"full\" duration=\"1046\" fileSize=\"26069840\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1b90/eac4500a-7e52-4b34-bf71-74d9ed9d1b90/P4086_high.mp4\" expression=\"full\" duration=\"1046\" fileSize=\"118676830\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1b90/eac4500a-7e52-4b34-bf71-74d9ed9d1b90/P4086_mid.mp4\" expression=\"full\" duration=\"1046\" fileSize=\"77201265\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4086.mp4\" expression=\"full\" duration=\"1046\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Windows High DPI Improvements for Desktop</title>\n    <description><![CDATA[High DPI displays are becoming commonplace. Unfortunately, many non-UWP desktop applications can become blurry or can be sized incorrectly when used on a system that has both high and low DPI displays. In this session, learn what Windows offers to help you update your application to render properly in both high DPI and changing-DPI scenarios. We also cover some of the improvements that are coming to Windows that will give you a better experience when using Windows on high DPI hardware. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:2a99b516f61e49d1986ba76d015a5b1e\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4085</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4085</link>\n    <itunes:summary>High DPI displays are becoming commonplace. Unfortunately, many non-UWP desktop applications can become blurry or can be sized incorrectly when used on a system that has both high and low DPI displays. In this session, learn what Windows offers to help you update your application to render properly in both high DPI and changing-DPI scenarios. We also cover some of the improvements that are coming to Windows that will give you a better experience when using Windows on high DPI hardware.</itunes:summary>\n    <itunes:duration>1382</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4085</guid>\n    <dc:creator>James Clarke, Peter Felts</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/2c6c/7af2521e-4b33-41f2-b64d-baa4f2a82c6c/P4085_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2c6c/7af2521e-4b33-41f2-b64d-baa4f2a82c6c/P4085_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2c6c/7af2521e-4b33-41f2-b64d-baa4f2a82c6c/P4085_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2c6c/7af2521e-4b33-41f2-b64d-baa4f2a82c6c/P4085.mp3\" expression=\"full\" duration=\"1382\" fileSize=\"22122186\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2c6c/7af2521e-4b33-41f2-b64d-baa4f2a82c6c/P4085.mp4\" expression=\"full\" duration=\"1382\" fileSize=\"48544320\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2c6c/7af2521e-4b33-41f2-b64d-baa4f2a82c6c/P4085_high.mp4\" expression=\"full\" duration=\"1382\" fileSize=\"365539039\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2c6c/7af2521e-4b33-41f2-b64d-baa4f2a82c6c/P4085_mid.mp4\" expression=\"full\" duration=\"1382\" fileSize=\"220809838\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4085.mp4\" expression=\"full\" duration=\"1382\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>UI Testing: What&#39;s new with WinAppDriver</title>\n    <description><![CDATA[UI Testing: What's New with WinAppDriver <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:4a980944d38843598981a76d015a5ad7\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4084</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4084</link>\n    <itunes:summary>UI Testing: What&#39;s New with WinAppDriver</itunes:summary>\n    <itunes:duration>505</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4084</guid>\n    <dc:creator>Yosef Durr</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/eb09/a1e55d5c-0aa5-4ba6-9cae-0b62fa87eb09/P4084_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/eb09/a1e55d5c-0aa5-4ba6-9cae-0b62fa87eb09/P4084_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/eb09/a1e55d5c-0aa5-4ba6-9cae-0b62fa87eb09/P4084_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/eb09/a1e55d5c-0aa5-4ba6-9cae-0b62fa87eb09/P4084.mp3\" expression=\"full\" duration=\"505\" fileSize=\"8093130\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/eb09/a1e55d5c-0aa5-4ba6-9cae-0b62fa87eb09/P4084.mp4\" expression=\"full\" duration=\"505\" fileSize=\"9891638\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/eb09/a1e55d5c-0aa5-4ba6-9cae-0b62fa87eb09/P4084_high.mp4\" expression=\"full\" duration=\"505\" fileSize=\"36345123\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/eb09/a1e55d5c-0aa5-4ba6-9cae-0b62fa87eb09/P4084_mid.mp4\" expression=\"full\" duration=\"505\" fileSize=\"24053255\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4084.mp4\" expression=\"full\" duration=\"505\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>OpenType variable fonts: How to use fewer fonts and get a lot more typographic richness</title>\n    <description><![CDATA[<p>The OpenType font format has been extended with an exciting new technology, OpenType Font Variations. An OpenType variable font is a single font that can behave like many separate fonts by supporting continuous variation between different designs defined in the font. This is the biggest development in OpenType since the introduction of OpenType itself! In this video, we give an overview of OpenType variable fonts, show how some of the capabilities of variable fonts may already be accessible in your existing apps, and describe new DirectWrite APIs that will enable you to take advantage of the full capabilities of this new OpenType format.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:9872dd9bdf2249b7b9a0a76d015a5aad\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4081</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4081</link>\n    <itunes:summary>The OpenType font format has been extended with an exciting new technology, OpenType Font Variations. An OpenType variable font is a single font that can behave like many separate fonts by supporting continuous variation between different designs defined in the font. This is the biggest development in OpenType since the introduction of OpenType itself! In this video, we give an overview of OpenType variable fonts, show how some of the capabilities of variable fonts may already be accessible in your existing apps, and describe new DirectWrite APIs that will enable you to take advantage of the full capabilities of this new OpenType format. </itunes:summary>\n    <itunes:duration>1919</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4081</guid>\n    <dc:creator>Peter Constable, Shrinath Shanbhag</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/88c2/64fe6c51-67a4-4cec-a2d7-611cd67c88c2/P4081_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/88c2/64fe6c51-67a4-4cec-a2d7-611cd67c88c2/P4081_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/88c2/64fe6c51-67a4-4cec-a2d7-611cd67c88c2/P4081_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/88c2/64fe6c51-67a4-4cec-a2d7-611cd67c88c2/P4081.mp3\" expression=\"full\" duration=\"1919\" fileSize=\"30705354\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/88c2/64fe6c51-67a4-4cec-a2d7-611cd67c88c2/P4081.mp4\" expression=\"full\" duration=\"1919\" fileSize=\"43043132\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/88c2/64fe6c51-67a4-4cec-a2d7-611cd67c88c2/P4081_high.mp4\" expression=\"full\" duration=\"1919\" fileSize=\"202701808\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/88c2/64fe6c51-67a4-4cec-a2d7-611cd67c88c2/P4081_mid.mp4\" expression=\"full\" duration=\"1919\" fileSize=\"130291723\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4081.mp4\" expression=\"full\" duration=\"1919\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Vector iconography: Using SVG images in your app</title>\n    <description><![CDATA[<p>SVG is the de facto standard for vector graphics images, with ubiquitous authoring support and an ever-growing prominence on the web. With Windows 10 Creators Update, you can finally bring the convenience and efficiency of SVG images to your Windows app. Use XAML to draw SVG images with a single line of code, or use powerful new APIs in Direct2D to parse, render, and manipulate SVG images. In this presentation we cover what parts of SVG are supported; when to use SVG; and how to load, draw, and manipulate SVG images.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:0d75c7e6ad6e40409e7aa76d015a59d1\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4078</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4078</link>\n    <itunes:summary>SVG is the de facto standard for vector graphics images, with ubiquitous authoring support and an ever-growing prominence on the web. With Windows 10 Creators Update, you can finally bring the convenience and efficiency of SVG images to your Windows app. Use XAML to draw SVG images with a single line of code, or use powerful new APIs in Direct2D to parse, render, and manipulate SVG images. In this presentation we cover what parts of SVG are supported; when to use SVG; and how to load, draw, and manipulate SVG images. </itunes:summary>\n    <itunes:duration>749</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4078</guid>\n    <dc:creator>Rick Manning</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/4ff7/bb80a6d1-b9d7-4b71-b034-4f0f56ad4ff7/P4078_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/4ff7/bb80a6d1-b9d7-4b71-b034-4f0f56ad4ff7/P4078_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/4ff7/bb80a6d1-b9d7-4b71-b034-4f0f56ad4ff7/P4078_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4ff7/bb80a6d1-b9d7-4b71-b034-4f0f56ad4ff7/P4078.mp3\" expression=\"full\" duration=\"749\" fileSize=\"11998026\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4ff7/bb80a6d1-b9d7-4b71-b034-4f0f56ad4ff7/P4078.mp4\" expression=\"full\" duration=\"749\" fileSize=\"18259652\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4ff7/bb80a6d1-b9d7-4b71-b034-4f0f56ad4ff7/P4078_high.mp4\" expression=\"full\" duration=\"749\" fileSize=\"109880147\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4ff7/bb80a6d1-b9d7-4b71-b034-4f0f56ad4ff7/P4078_mid.mp4\" expression=\"full\" duration=\"749\" fileSize=\"62930761\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4078.mp4\" expression=\"full\" duration=\"749\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>What&#39;s new in Accessibility &amp; How to Get Started for Developers</title>\n    <description><![CDATA[<p>In this video, the Windows Accessibility PM lead provides an overview of recent investments designed to make Windows 10 more usable for people with disabilities and to make it easier for developers to create accessible experiences. Hear about the Windows’ accessibility vision and features that are coming to market later in 2017. Learn how developers can create accessible experiences and where to go for additional information and support. This is a great introduction for someone who is new to accessibility or for someone looking to get up to speed on the latest news.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:37106e9e43534f2ca763a76d015a5965\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4072</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4072</link>\n    <itunes:summary>In this video, the Windows Accessibility PM lead provides an overview of recent investments designed to make Windows 10 more usable for people with disabilities and to make it easier for developers to create accessible experiences. Hear about the Windows’ accessibility vision and features that are coming to market later in 2017. Learn how developers can create accessible experiences and where to go for additional information and support. This is a great introduction for someone who is new to accessibility or for someone looking to get up to speed on the latest news. </itunes:summary>\n    <itunes:duration>1666</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4072</guid>\n    <dc:creator>Jeff Petty</dc:creator>\n\t\t<media:thumbnail url=\"https://f.ch9.ms/thumbnail/6df7803f-ae61-472d-a7c7-b263182698d3.png\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/439d43d8-1afc-46c6-bd96-c12e0a707880.png\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/19a864df-8642-49fe-aeea-03bef4703d82.png\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/50ec/d4732935-06dd-455c-8c72-213979dc50ec/P4072.mp3\" expression=\"full\" duration=\"1666\" fileSize=\"26668746\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/50ec/d4732935-06dd-455c-8c72-213979dc50ec/P4072.mp4\" expression=\"full\" duration=\"1666\" fileSize=\"38264528\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/50ec/d4732935-06dd-455c-8c72-213979dc50ec/P4072_high.mp4\" expression=\"full\" duration=\"1666\" fileSize=\"199110396\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/50ec/d4732935-06dd-455c-8c72-213979dc50ec/P4072_mid.mp4\" expression=\"full\" duration=\"1666\" fileSize=\"125639637\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4072.mp4\" expression=\"full\" duration=\"1666\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Desktop Bridge Apps &amp; User Transition</title>\n    <description><![CDATA[The Windows 10 Creators Update will enable desktop app developers to provide a smooth user transition from the previous desktop app to the store version. This topic includes transition of the user’s taskbar pin(s), start menu tile(s), file type associations, and protocol handlers. In addition, we cover best practices to migrate user data and uninstall the previous desktop app. Users will be encouraged to download the store version of their desktop apps. If the user already has the previous desktop version of the app, the transition experience should be as seamless as possible. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:31fd0b998df845ab978ca76d015a592d\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4067</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4067</link>\n    <itunes:summary>The Windows 10 Creators Update will enable desktop app developers to provide a smooth user transition from the previous desktop app to the store version. This topic includes transition of the user’s taskbar pin(s), start menu tile(s), file type associations, and protocol handlers. In addition, we cover best practices to migrate user data and uninstall the previous desktop app. Users will be encouraged to download the store version of their desktop apps. If the user already has the previous desktop version of the app, the transition experience should be as seamless as possible.</itunes:summary>\n    <itunes:duration>1167</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4067</guid>\n    <dc:creator>Arian Ghotbi</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/2351/5a7e8378-5ac0-45e6-a0c1-20571bec2351/P4067_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2351/5a7e8378-5ac0-45e6-a0c1-20571bec2351/P4067_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2351/5a7e8378-5ac0-45e6-a0c1-20571bec2351/P4067_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2351/5a7e8378-5ac0-45e6-a0c1-20571bec2351/P4067.mp3\" expression=\"full\" duration=\"1167\" fileSize=\"18676554\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2351/5a7e8378-5ac0-45e6-a0c1-20571bec2351/P4067.mp4\" expression=\"full\" duration=\"1167\" fileSize=\"29781849\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2351/5a7e8378-5ac0-45e6-a0c1-20571bec2351/P4067_high.mp4\" expression=\"full\" duration=\"1167\" fileSize=\"160181455\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2351/5a7e8378-5ac0-45e6-a0c1-20571bec2351/P4067_mid.mp4\" expression=\"full\" duration=\"1167\" fileSize=\"101576854\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4067.mp4\" expression=\"full\" duration=\"1167\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Lighting up HDR and advanced color in DirectX</title>\n    <description><![CDATA[<p>Windows 10 Creators Update allows you to build apps and experiences that exploit the full color capabilities of HDR (high dynamic range), WCG (wide color gamut), and other advanced color displays. Wow your users with vivid, lifelike games, media and other visual content that use brighter peak luminance, more saturated colors, and greater precision than was possible in Windows before. We give a primer on HDR and color concepts and show you how to build amazing advanced color experiences in DirectX.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:81f3664c9263442da41da76d015a58d4\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4061</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4061</link>\n    <itunes:summary>Windows 10 Creators Update allows you to build apps and experiences that exploit the full color capabilities of HDR (high dynamic range), WCG (wide color gamut), and other advanced color displays. Wow your users with vivid, lifelike games, media and other visual content that use brighter peak luminance, more saturated colors, and greater precision than was possible in Windows before. We give a primer on HDR and color concepts and show you how to build amazing advanced color experiences in DirectX. </itunes:summary>\n    <itunes:duration>1525</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4061</guid>\n    <dc:creator>Simon Tao</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/2743/1b790d95-5ace-4712-bafd-b48a7e382743/P4061_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/2743/1b790d95-5ace-4712-bafd-b48a7e382743/P4061_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/2743/1b790d95-5ace-4712-bafd-b48a7e382743/P4061_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2743/1b790d95-5ace-4712-bafd-b48a7e382743/P4061.mp3\" expression=\"full\" duration=\"1525\" fileSize=\"24407370\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2743/1b790d95-5ace-4712-bafd-b48a7e382743/P4061.mp4\" expression=\"full\" duration=\"1525\" fileSize=\"34925747\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2743/1b790d95-5ace-4712-bafd-b48a7e382743/P4061_high.mp4\" expression=\"full\" duration=\"1525\" fileSize=\"141572723\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2743/1b790d95-5ace-4712-bafd-b48a7e382743/P4061_mid.mp4\" expression=\"full\" duration=\"1525\" fileSize=\"93272194\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4061.mp4\" expression=\"full\" duration=\"1525\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Collect and analyze crashes for your Windows apps</title>\n    <description><![CDATA[Most every app crashes sometimes. When it happens, it's important to understand when and why so you can address problems quickly and keep your users happy. In this video, we show you how to enable crash reporting and analyze crash data for your UWP app through the new Windows Crash beacon in Visual Studio Mobile Center. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:ab9fb6e463d34f1d8397a76d015a58a5\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4057</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4057</link>\n    <itunes:summary>Most every app crashes sometimes. When it happens, it&#39;s important to understand when and why so you can address problems quickly and keep your users happy. In this video, we show you how to enable crash reporting and analyze crash data for your UWP app through the new Windows Crash beacon in Visual Studio Mobile Center.</itunes:summary>\n    <itunes:duration>933</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4057</guid>\n    <dc:creator>Francis Zhou, Ela Malani</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/050f/17cc96fa-5599-4b31-a6e5-2a341914050f/P4057_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/050f/17cc96fa-5599-4b31-a6e5-2a341914050f/P4057_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/050f/17cc96fa-5599-4b31-a6e5-2a341914050f/P4057_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/050f/17cc96fa-5599-4b31-a6e5-2a341914050f/P4057.mp3\" expression=\"full\" duration=\"933\" fileSize=\"14943690\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/050f/17cc96fa-5599-4b31-a6e5-2a341914050f/P4057.mp4\" expression=\"full\" duration=\"933\" fileSize=\"21408217\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/050f/17cc96fa-5599-4b31-a6e5-2a341914050f/P4057_high.mp4\" expression=\"full\" duration=\"933\" fileSize=\"155296380\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/050f/17cc96fa-5599-4b31-a6e5-2a341914050f/P4057_mid.mp4\" expression=\"full\" duration=\"933\" fileSize=\"90530618\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4057.mp4\" expression=\"full\" duration=\"933\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>My People: the Taskbar is a Window to your app</title>\n    <description><![CDATA[In Windows 10, UWP app developers can take advantage of new experiences that allow contacts provided by their apps to be elevated in Windows.&nbsp;Developers can build apps that makes it possible for the user to pin their favorite people to the taskbar, enabling quick and easy communication and sharing. Also, with the Windows 10 update, developers can take advantage of a direct line of sharing with people via the new “people first” experience in the share picker.&nbsp;This session covers the experiences developers can now build using the My People framework that will drive increased acquisition and engagement with your app in Windows 10.&nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:6fe266ef902f4c7aa951a76d015a585e\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4056</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4056</link>\n    <itunes:summary>In Windows 10, UWP app developers can take advantage of new experiences that allow contacts provided by their apps to be elevated in Windows. Developers can build apps that makes it possible for the user to pin their favorite people to the taskbar, enabling quick and easy communication and sharing. Also, with the Windows 10 update, developers can take advantage of a direct line of sharing with people via the new “people first” experience in the share picker. This session covers the experiences developers can now build using the My People framework that will drive increased acquisition and engagement with your app in Windows 10. </itunes:summary>\n    <itunes:duration>777</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4056</guid>\n    <dc:creator>Tony Pendolino, Allison O&#39;Mahony</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/a846/5d44989b-3629-4e33-83e6-7354b1e8a846/P4056_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a846/5d44989b-3629-4e33-83e6-7354b1e8a846/P4056_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a846/5d44989b-3629-4e33-83e6-7354b1e8a846/P4056_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a846/5d44989b-3629-4e33-83e6-7354b1e8a846/P4056.mp3\" expression=\"full\" duration=\"777\" fileSize=\"12443850\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a846/5d44989b-3629-4e33-83e6-7354b1e8a846/P4056.mp4\" expression=\"full\" duration=\"777\" fileSize=\"17570592\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a846/5d44989b-3629-4e33-83e6-7354b1e8a846/P4056_high.mp4\" expression=\"full\" duration=\"777\" fileSize=\"68062273\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a846/5d44989b-3629-4e33-83e6-7354b1e8a846/P4056_mid.mp4\" expression=\"full\" duration=\"777\" fileSize=\"46026726\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4056.mp4\" expression=\"full\" duration=\"777\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Advancing commerce: Bring a fast and easy checkout experience to your customers across the web, UWP platform, and bots</title>\n    <description><![CDATA[eCommerce has grown significantly over the past few years and Microsoft is ready to help online businesses grow even faster. We are introducing the Windows/Microsoft Edge Payment Request API with the release of the Creators Update. Customers using&nbsp;Edge, apps, or bots will now be able to store their payment information with Microsoft and use those payment instruments to complete payment requests. The ability to quickly retrieve payment information is aimed at improving checkout experience as well as the completion rate of purchases. Join us to learn about how the Payment Request API can improve the payment experience for your project. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:062a48d4ea6e4b35b1fea76d015a57f3\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4055</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4055</link>\n    <itunes:summary>eCommerce has grown significantly over the past few years and Microsoft is ready to help online businesses grow even faster. We are introducing the Windows/Microsoft Edge Payment Request API with the release of the Creators Update. Customers using Edge, apps, or bots will now be able to store their payment information with Microsoft and use those payment instruments to complete payment requests. The ability to quickly retrieve payment information is aimed at improving checkout experience as well as the completion rate of purchases. Join us to learn about how the Payment Request API can improve the payment experience for your project.</itunes:summary>\n    <itunes:duration>949</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4055</guid>\n    <dc:creator>Molly Dalton, Jonathan Cutler, Stan Chang</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>web+platform</category>\n    <category>monetization</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/3996/39370b8f-04bd-46ae-9ec1-aac9b47c3996/P4055_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3996/39370b8f-04bd-46ae-9ec1-aac9b47c3996/P4055_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3996/39370b8f-04bd-46ae-9ec1-aac9b47c3996/P4055_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3996/39370b8f-04bd-46ae-9ec1-aac9b47c3996/P4055.mp3\" expression=\"full\" duration=\"949\" fileSize=\"15192981\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3996/39370b8f-04bd-46ae-9ec1-aac9b47c3996/P4055.mp4\" expression=\"full\" duration=\"949\" fileSize=\"21025906\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3996/39370b8f-04bd-46ae-9ec1-aac9b47c3996/P4055_high.mp4\" expression=\"full\" duration=\"949\" fileSize=\"83962120\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3996/39370b8f-04bd-46ae-9ec1-aac9b47c3996/P4055_mid.mp4\" expression=\"full\" duration=\"949\" fileSize=\"57048999\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4055.mp4\" expression=\"full\" duration=\"949\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>UWP Bridges for Retail Applications</title>\n    <description><![CDATA[<p>This session explores two bridging technologies which enable UWP applications on Windows desktop to interact with a wide variety of peripherals used in retail environments. The OPOS Bridge allows your UWP application to interact with OPOS enabled peripherals using the Windows.Devices.PointOfService namespace, while the Desktop Bridge allows you to access even more peripheral types from your application using third party extensions such as OPOS or POS for .NET even if they are not supported in UWP at this time.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:c42038d0da8f4696b6e6a76d015a5708\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4050</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4050</link>\n    <itunes:summary>This session explores two bridging technologies which enable UWP applications on Windows desktop to interact with a wide variety of peripherals used in retail environments. The OPOS Bridge allows your UWP application to interact with OPOS enabled peripherals using the Windows.Devices.PointOfService namespace, while the Desktop Bridge allows you to access even more peripheral types from your application using third party extensions such as OPOS or POS for .NET even if they are not supported in UWP at this time. </itunes:summary>\n    <itunes:duration>1001</itunes:duration>\n    <pubDate>Thu, 11 May 2017 17:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4050</guid>\n    <dc:creator>Marcus Breda, Terry Warwick</dc:creator>\n\t\t<media:thumbnail url=\"https://f.ch9.ms/thumbnail/3078d2a8-92b3-4a83-9387-72772b3162f7.png\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/36fff0a7-0c63-405b-b21c-6a4ebbadf376.png\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/c4847656-4007-4b96-9e0d-e6f69dc31f2c.png\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8990/10aa0337-6a38-4626-b244-2368ecdb8990/P4050.mp3\" expression=\"full\" duration=\"1001\" fileSize=\"16020810\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8990/10aa0337-6a38-4626-b244-2368ecdb8990/P4050.mp4\" expression=\"full\" duration=\"1001\" fileSize=\"26559874\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8990/10aa0337-6a38-4626-b244-2368ecdb8990/P4050_high.mp4\" expression=\"full\" duration=\"1001\" fileSize=\"142997235\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8990/10aa0337-6a38-4626-b244-2368ecdb8990/P4050_mid.mp4\" expression=\"full\" duration=\"1001\" fileSize=\"89213326\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4050.mp4\" expression=\"full\" duration=\"1001\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n \n  <item>\n    <title>What is new in Insights APIs in Microsoft Graph</title>\n    <description><![CDATA[<p>Learn about the new updates to Trending and other APIs in Microsoft Graph that provide contextual insights based on users' activity in the service.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:5a9d888db7c548178bb3a76d015a53d7\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4180</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4180</link>\n    <itunes:summary>Learn about the new updates to Trending and other APIs in Microsoft Graph that provide contextual insights based on users&#39; activity in the service. </itunes:summary>\n    <itunes:duration>499</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4180</guid>\n    <dc:creator>M&#225;rio Henriques</dc:creator>\n    <category>office</category>\n    <category>microsoft+graph</category>\n\t\t<media:thumbnail url=\"https://f.ch9.ms/thumbnail/a27ecfba-1b97-4c3a-ba41-573a65bc2e88.png\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/ad9291fb-a5ef-40ad-9d4c-5975b5578c39.png\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/b20d42b4-6ddd-4644-9e74-09dcfb1d7d25.png\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a791/bb70ad37-c228-4e83-b447-b3504369a791/P4180.mp3\" expression=\"full\" duration=\"499\" fileSize=\"7989037\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a791/bb70ad37-c228-4e83-b447-b3504369a791/P4180.mp4\" expression=\"full\" duration=\"499\" fileSize=\"10954069\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a791/bb70ad37-c228-4e83-b447-b3504369a791/P4180_high.mp4\" expression=\"full\" duration=\"499\" fileSize=\"27431133\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a791/bb70ad37-c228-4e83-b447-b3504369a791/P4180_mid.mp4\" expression=\"full\" duration=\"499\" fileSize=\"16711465\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4180.mp4\" expression=\"full\" duration=\"499\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Add custom data to Microsoft Graph</title>\n    <description><![CDATA[<p>Learn how to add you own data into Microsoft Graph.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:81e1beb1e5324ac78e9ca76d015a50db\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4153</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4153</link>\n    <itunes:summary>Learn how to add you own data into Microsoft Graph. </itunes:summary>\n    <itunes:duration>876</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4153</guid>\n    <dc:creator>Dan Kershaw</dc:creator>\n    <category>microsoft+graph</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/04b7/ffe57233-5fe7-4bf2-abfc-c05b07d104b7/P4153_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/04b7/ffe57233-5fe7-4bf2-abfc-c05b07d104b7/P4153_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/04b7/ffe57233-5fe7-4bf2-abfc-c05b07d104b7/P4153_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/04b7/ffe57233-5fe7-4bf2-abfc-c05b07d104b7/P4153.mp3\" expression=\"full\" duration=\"876\" fileSize=\"14027466\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/04b7/ffe57233-5fe7-4bf2-abfc-c05b07d104b7/P4153.mp4\" expression=\"full\" duration=\"876\" fileSize=\"22788690\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/04b7/ffe57233-5fe7-4bf2-abfc-c05b07d104b7/P4153_high.mp4\" expression=\"full\" duration=\"876\" fileSize=\"118593661\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/04b7/ffe57233-5fe7-4bf2-abfc-c05b07d104b7/P4153_mid.mp4\" expression=\"full\" duration=\"876\" fileSize=\"74364106\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4153.mp4\" expression=\"full\" duration=\"876\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Microsoft Graph - Delta Query and Webhooks</title>\n    <description><![CDATA[<p>Learn how to keep your app current with all data updates using webhooks and delta query in Microsoft Graph.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:bec43c5b5b004ac3aedea76d015a50ad\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4152</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4152</link>\n    <itunes:summary>Learn how to keep your app current with all data updates using webhooks and delta query in Microsoft Graph. </itunes:summary>\n    <itunes:duration>780</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4152</guid>\n    <dc:creator>Jeff Sakowicz</dc:creator>\n    <category>office</category>\n    <category>microsoft+graph</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/beaa/c2b84ee8-91c6-476a-b170-729567d5beaa/P4152_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/beaa/c2b84ee8-91c6-476a-b170-729567d5beaa/P4152_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/beaa/c2b84ee8-91c6-476a-b170-729567d5beaa/P4152_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/beaa/c2b84ee8-91c6-476a-b170-729567d5beaa/P4152.mp3\" expression=\"full\" duration=\"780\" fileSize=\"12491691\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/beaa/c2b84ee8-91c6-476a-b170-729567d5beaa/P4152.mp4\" expression=\"full\" duration=\"780\" fileSize=\"19746469\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/beaa/c2b84ee8-91c6-476a-b170-729567d5beaa/P4152_high.mp4\" expression=\"full\" duration=\"780\" fileSize=\"91906762\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/beaa/c2b84ee8-91c6-476a-b170-729567d5beaa/P4152_mid.mp4\" expression=\"full\" duration=\"780\" fileSize=\"57162379\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4152.mp4\" expression=\"full\" duration=\"780\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Build smart productivity apps with Microsoft Graph JavaScript SDK&#160;</title>\n    <description><![CDATA[<p>Lean how to use the Microsoft Graph JS SDK to build your next integration with Office 365 with JS, TypeScript, and Node.js.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:43111d6e671e4cbba8eea76d015a4d16\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4137</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4137</link>\n    <itunes:summary>Lean how to use the Microsoft Graph JS SDK to build your next integration with Office 365 with JS, TypeScript, and Node.js. </itunes:summary>\n    <itunes:duration>876</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4137</guid>\n    <dc:creator>Dan Silver</dc:creator>\n    <category>office</category>\n    <category>microsoft+graph</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/f266/18812d23-48cb-4afb-96d5-6e40766ff266/P4137_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/f266/18812d23-48cb-4afb-96d5-6e40766ff266/P4137_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/f266/18812d23-48cb-4afb-96d5-6e40766ff266/P4137_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f266/18812d23-48cb-4afb-96d5-6e40766ff266/P4137.mp3\" expression=\"full\" duration=\"876\" fileSize=\"14018522\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f266/18812d23-48cb-4afb-96d5-6e40766ff266/P4137.mp4\" expression=\"full\" duration=\"876\" fileSize=\"17481348\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f266/18812d23-48cb-4afb-96d5-6e40766ff266/P4137_high.mp4\" expression=\"full\" duration=\"876\" fileSize=\"60793863\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f266/18812d23-48cb-4afb-96d5-6e40766ff266/P4137_mid.mp4\" expression=\"full\" duration=\"876\" fileSize=\"41956694\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4137.mp4\" expression=\"full\" duration=\"876\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Build End-to-End Solutions using Microsoft Graph and Common Data Service</title>\n    <description><![CDATA[<p>Microsoft provides a platform for building end-to-end solutions. This sample show cases how professional developers can build people centric, data rich apps that leverage productivity and business data from <a title=\"Microsoft Graph\" href=\"https://graph.microsoft.com/\">Microsoft Graph</a> and <a title=\"Microsoft Common Data Service\" href=\"https://aka.ms/CommonDataService\">Common Data Service</a>. And how power users can leverage that data further to create apps, flows, and dashboards.</p><p><a title=\"Microsoft Graph\" href=\"https://graph.microsoft.com/\">Microsoft Graph</a> is the unified API for Microsoft services. That includes Office 365, Azure Active Directory, and many others.</p><p><a title=\"Microsoft Common Data Service\" href=\"https://aka.ms/CommonDataService\">Microsoft Common Data Service</a> or CDS is a focal point for a business's data. Professional developers can write applications that interact with that data in CDS and power users can take advantage of PowerApps, Flow, and PowerBI to create apps, design workflows, and perform deep analytics over that data without writing any code.</p><p>Microsoft Graph gives you access to rich data from Microsoft services. Once you bring that data to CDS, you can combine it with other business data that your business depends on. Then you can build rich applications and workflows with easy to use building blocks (such as <a href=\"https://powerapps.microsoft.com/en-us/\">PowerApps</a>, <a href=\"https://flow.microsoft.com/en-us/\">Flow</a>, <a href=\"https://powerbi.microsoft.com/en-us/\">PowerBI</a>) whether you know how to write code or not. So using Microsoft Graph and Common Data Service developers can not only build people centric, data rich apps but the app can be extended by power users who are not regular coders to have additional experiences.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:b9416906e18a447aa7ffa76d015a4c89\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4136</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4136</link>\n    <itunes:summary>Microsoft provides a platform for building end-to-end solutions. This sample show cases how professional developers can build people centric, data rich apps that leverage productivity and business data from Microsoft Graph and Common Data Service. And how power users can leverage that data further to create apps, flows, and dashboards. Microsoft Graph is the unified API for Microsoft services. That includes Office 365, Azure Active Directory, and many others. Microsoft Common Data Service or CDS is a focal point for a business&#39;s data. Professional developers can write applications that interact with that data in CDS and power users can take advantage of PowerApps, Flow, and PowerBI to create apps, design workflows, and perform deep analytics over that data without writing any code. Microsoft Graph gives you access to rich data from Microsoft services. Once you bring that data to CDS, you can combine it with other business data that your business depends on. Then you can build rich applications and workflows with easy to use building blocks (such as PowerApps, Flow, PowerBI) whether you know how to write code or not. So using Microsoft Graph and Common Data Service developers can not only build people centric, data rich apps but the app can be extended by power users who are not regular coders to have additional experiences. </itunes:summary>\n    <itunes:duration>874</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4136</guid>\n    <dc:creator>Chris Garty, Suresh Jayabalan</dc:creator>\n    <category>office</category>\n    <category>microsoft+graph</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/179f/0c3bab81-ffa2-4df9-8e51-f57d3fe3179f/P4136_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/179f/0c3bab81-ffa2-4df9-8e51-f57d3fe3179f/P4136.mp3\" expression=\"full\" duration=\"874\" fileSize=\"13987063\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/179f/0c3bab81-ffa2-4df9-8e51-f57d3fe3179f/P4136.mp4\" expression=\"full\" duration=\"874\" fileSize=\"27073634\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/179f/0c3bab81-ffa2-4df9-8e51-f57d3fe3179f/P4136_high.mp4\" expression=\"full\" duration=\"874\" fileSize=\"297271732\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/179f/0c3bab81-ffa2-4df9-8e51-f57d3fe3179f/P4136_mid.mp4\" expression=\"full\" duration=\"874\" fileSize=\"90273227\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4136.mp4\" expression=\"full\" duration=\"874\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Build bots in Skype for Business</title>\n    <description><![CDATA[Coming soon <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:63d9095f52b94a38a472a76d015a4c06\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4135</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4135</link>\n    <itunes:summary>Coming soon</itunes:summary>\n    <itunes:duration>988</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4135</guid>\n    <dc:creator>David Newman</dc:creator>\n    <category>office</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/8521/59676375-cc94-4644-9d4e-60634a518521/P4135_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8521/59676375-cc94-4644-9d4e-60634a518521/P4135_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8521/59676375-cc94-4644-9d4e-60634a518521/P4135_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8521/59676375-cc94-4644-9d4e-60634a518521/P4135.mp3\" expression=\"full\" duration=\"988\" fileSize=\"15818646\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8521/59676375-cc94-4644-9d4e-60634a518521/P4135.mp4\" expression=\"full\" duration=\"988\" fileSize=\"22979966\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8521/59676375-cc94-4644-9d4e-60634a518521/P4135_high.mp4\" expression=\"full\" duration=\"988\" fileSize=\"116923921\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8521/59676375-cc94-4644-9d4e-60634a518521/P4135_mid.mp4\" expression=\"full\" duration=\"988\" fileSize=\"73514247\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4135.mp4\" expression=\"full\" duration=\"988\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Build applications with Microsoft Visio</title>\n    <description><![CDATA[Hear about what's new with Visio APIs, and more. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:83b14c18aebe4ed7b472a76d015a4bbb\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4133</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4133</link>\n    <itunes:summary>Hear about what&#39;s new with Visio APIs, and more.</itunes:summary>\n    <itunes:duration>633</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4133</guid>\n    <dc:creator>Rahul Mittal, Rohan Shah</dc:creator>\n    <category>office</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/2867/80ddf744-cd14-4077-bdaa-50a2d4d02867/P4133_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2867/80ddf744-cd14-4077-bdaa-50a2d4d02867/P4133_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2867/80ddf744-cd14-4077-bdaa-50a2d4d02867/P4133_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2867/80ddf744-cd14-4077-bdaa-50a2d4d02867/P4133.mp3\" expression=\"full\" duration=\"633\" fileSize=\"10144863\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2867/80ddf744-cd14-4077-bdaa-50a2d4d02867/P4133.mp4\" expression=\"full\" duration=\"633\" fileSize=\"11827975\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2867/80ddf744-cd14-4077-bdaa-50a2d4d02867/P4133_high.mp4\" expression=\"full\" duration=\"633\" fileSize=\"40967383\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2867/80ddf744-cd14-4077-bdaa-50a2d4d02867/P4133_mid.mp4\" expression=\"full\" duration=\"633\" fileSize=\"23395399\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4133.mp4\" expression=\"full\" duration=\"633\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Notify your users through your Microsoft Teams app</title>\n    <description><![CDATA[Learn how your app can reach out and engage directly with users. Creating an actionable message in a Connector allows you not only to push information from your service directly into a channel, but users can interact and push updates back to you. Additionally, your app can now have private or team-wide notifications appear in a user’s activity feed to alert them of important updates. With the Microsoft Teams Developer Platform, you can make your service available to users within Teams in contexts that make sense. The Teams developer platform makes it easy for you to integrate your own service, whether you develop custom apps for your team or SaaS applications for teams around the world. Learn more about the Microsoft Teams developer platform at https://Dev.Office.com/Microsoft-Teams Download sample code: https://aka.ms/teamsSamples Download sample manifests: https://aka.ms/teamsManifests Register as a developer: https://aka.ms/devregister Submit your app: https://aka.ms/submitTeamsApp <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:ef7b826c37c84803bfefa76d015a4b17\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4132</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4132</link>\n    <itunes:summary>Learn how your app can reach out and engage directly with users. Creating an actionable message in a Connector allows you not only to push information from your service directly into a channel, but users can interact and push updates back to you. Additionally, your app can now have private or team-wide notifications appear in a user’s activity feed to alert them of important updates. With the Microsoft Teams Developer Platform, you can make your service available to users within Teams in contexts that make sense. The Teams developer platform makes it easy for you to integrate your own service, whether you develop custom apps for your team or SaaS applications for teams around the world. Learn more about the Microsoft Teams developer platform at https://Dev.Office.com/Microsoft-Teams Download sample code: https://aka.ms/teamsSamples Download sample manifests: https://aka.ms/teamsManifests Register as a developer: https://aka.ms/devregister Submit your app: https://aka.ms/submitTeamsApp</itunes:summary>\n    <itunes:duration>702</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4132</guid>\n    <dc:creator>Andrew Spiziri</dc:creator>\n    <category>office</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/eff7/59c8065b-7d2a-4180-b033-df283217eff7/P4132_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/eff7/59c8065b-7d2a-4180-b033-df283217eff7/P4132.mp3\" expression=\"full\" duration=\"702\" fileSize=\"11237564\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/eff7/59c8065b-7d2a-4180-b033-df283217eff7/P4132.mp4\" expression=\"full\" duration=\"702\" fileSize=\"18322928\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/eff7/59c8065b-7d2a-4180-b033-df283217eff7/P4132_high.mp4\" expression=\"full\" duration=\"702\" fileSize=\"108515696\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/eff7/59c8065b-7d2a-4180-b033-df283217eff7/P4132_mid.mp4\" expression=\"full\" duration=\"702\" fileSize=\"65524161\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4132.mp4\" expression=\"full\" duration=\"702\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Office add-in single sign-on</title>\n    <description><![CDATA[This session offers an intro into how to implement SSO in Office add-ins. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:5bd2e2d139f54df78277a76d015a4aab\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4131</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4131</link>\n    <itunes:summary>This session offers an intro into how to implement SSO in Office add-ins.</itunes:summary>\n    <itunes:duration>575</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4131</guid>\n    <dc:creator>Tim McConnell</dc:creator>\n    <category>office</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/f025/079ea528-2e77-4c7c-9806-30f7ab42f025/P4131_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f025/079ea528-2e77-4c7c-9806-30f7ab42f025/P4131_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f025/079ea528-2e77-4c7c-9806-30f7ab42f025/P4131_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f025/079ea528-2e77-4c7c-9806-30f7ab42f025/P4131.mp3\" expression=\"full\" duration=\"575\" fileSize=\"9206543\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f025/079ea528-2e77-4c7c-9806-30f7ab42f025/P4131.mp4\" expression=\"full\" duration=\"575\" fileSize=\"11505546\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f025/079ea528-2e77-4c7c-9806-30f7ab42f025/P4131_high.mp4\" expression=\"full\" duration=\"575\" fileSize=\"46408344\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f025/079ea528-2e77-4c7c-9806-30f7ab42f025/P4131_mid.mp4\" expression=\"full\" duration=\"575\" fileSize=\"31401043\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4131.mp4\" expression=\"full\" duration=\"575\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Actionable Messages in Outlook</title>\n    <description><![CDATA[Learn how to build solutions with Actionable Messages in Microsoft Outlook. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:c8848f94ccde4ae5aeb2a76d015a4a69\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4127</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4127</link>\n    <itunes:summary>Learn how to build solutions with Actionable Messages in Microsoft Outlook.</itunes:summary>\n    <itunes:duration>782</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4127</guid>\n    <dc:creator>David Claux</dc:creator>\n    <category>office</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/948c/25739ac4-990b-4302-99e1-4df37dea948c/P4127_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/948c/25739ac4-990b-4302-99e1-4df37dea948c/P4127_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/948c/25739ac4-990b-4302-99e1-4df37dea948c/P4127_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/948c/25739ac4-990b-4302-99e1-4df37dea948c/P4127.mp3\" expression=\"full\" duration=\"782\" fileSize=\"12528913\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/948c/25739ac4-990b-4302-99e1-4df37dea948c/P4127.mp4\" expression=\"full\" duration=\"782\" fileSize=\"18439381\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/948c/25739ac4-990b-4302-99e1-4df37dea948c/P4127_high.mp4\" expression=\"full\" duration=\"782\" fileSize=\"67613011\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/948c/25739ac4-990b-4302-99e1-4df37dea948c/P4127_mid.mp4\" expression=\"full\" duration=\"782\" fileSize=\"47390960\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4127.mp4\" expression=\"full\" duration=\"782\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Build a great bot for your Microsoft Teams app</title>\n    <description><![CDATA[Learn how to build a great bot for Microsoft Teams. These bots let users interact with your service through conversations in Teams. With the Microsoft Teams Developer Platform, you can make your service available to users within Teams in contexts that make sense. The Teams developer platform makes it easy for you to integrate your own service, whether you develop custom apps for your team or SaaS applications for teams around the world. Learn more about the Microsoft Teams developer platform at https://Dev.Office.com/Microsoft-Teams Download sample code: https://aka.ms/teamsSamples Download sample manifests: https://aka.ms/teamsManifests Register as a developer: https://aka.ms/devregister Submit your app: https://aka.ms/submitTeamsApp <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:bdb9ee03fd9e40caa7c3a76d015a4a28\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4126</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4126</link>\n    <itunes:summary>Learn how to build a great bot for Microsoft Teams. These bots let users interact with your service through conversations in Teams. With the Microsoft Teams Developer Platform, you can make your service available to users within Teams in contexts that make sense. The Teams developer platform makes it easy for you to integrate your own service, whether you develop custom apps for your team or SaaS applications for teams around the world. Learn more about the Microsoft Teams developer platform at https://Dev.Office.com/Microsoft-Teams Download sample code: https://aka.ms/teamsSamples Download sample manifests: https://aka.ms/teamsManifests Register as a developer: https://aka.ms/devregister Submit your app: https://aka.ms/submitTeamsApp</itunes:summary>\n    <itunes:duration>661</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4126</guid>\n    <dc:creator>Larry Jin</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/c6c5/4042539a-425f-40bf-be3f-32ccd40cc6c5/P4126_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c6c5/4042539a-425f-40bf-be3f-32ccd40cc6c5/P4126.mp3\" expression=\"full\" duration=\"661\" fileSize=\"10589514\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c6c5/4042539a-425f-40bf-be3f-32ccd40cc6c5/P4126.mp4\" expression=\"full\" duration=\"661\" fileSize=\"12622916\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c6c5/4042539a-425f-40bf-be3f-32ccd40cc6c5/P4126_high.mp4\" expression=\"full\" duration=\"661\" fileSize=\"50407028\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c6c5/4042539a-425f-40bf-be3f-32ccd40cc6c5/P4126_mid.mp4\" expression=\"full\" duration=\"661\" fileSize=\"34691277\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4126.mp4\" expression=\"full\" duration=\"661\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Latest on Excel Extensibility</title>\n    <description><![CDATA[Explore the latest news on Microsoft Excel development. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:586655fa7daf4e699224a76d015a49fe\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4125</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4125</link>\n    <itunes:summary>Explore the latest news on Microsoft Excel development.</itunes:summary>\n    <itunes:duration>591</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4125</guid>\n    <dc:creator>Sudhi Ramamurthy</dc:creator>\n    <category>office</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/bcc2/572a1a6c-6aff-4f8e-af58-05b4a5e2bcc2/P4125_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/bcc2/572a1a6c-6aff-4f8e-af58-05b4a5e2bcc2/P4125_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/bcc2/572a1a6c-6aff-4f8e-af58-05b4a5e2bcc2/P4125_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bcc2/572a1a6c-6aff-4f8e-af58-05b4a5e2bcc2/P4125.mp3\" expression=\"full\" duration=\"591\" fileSize=\"9467668\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bcc2/572a1a6c-6aff-4f8e-af58-05b4a5e2bcc2/P4125.mp4\" expression=\"full\" duration=\"591\" fileSize=\"14404690\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bcc2/572a1a6c-6aff-4f8e-af58-05b4a5e2bcc2/P4125_high.mp4\" expression=\"full\" duration=\"591\" fileSize=\"124048410\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bcc2/572a1a6c-6aff-4f8e-af58-05b4a5e2bcc2/P4125_mid.mp4\" expression=\"full\" duration=\"591\" fileSize=\"35053696\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4125.mp4\" expression=\"full\" duration=\"591\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Catch up on Outlook APIs in Microsoft Graph</title>\n    <description><![CDATA[<p>Learn about recent updates in Microsoft Graph for accessing Outlook mail, calendar, contacts and more for millions of commercial and consumer users. Learn about the new updates to People APIs in Microsoft Graph that provide information about the people who are important to you across mail, contacts, and social networks and with powerful search capabilities.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:92748ef20fbc4a718237a76d015a49ae\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4123</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4123</link>\n    <itunes:summary>Learn about recent updates in Microsoft Graph for accessing Outlook mail, calendar, contacts and more for millions of commercial and consumer users. Learn about the new updates to People APIs in Microsoft Graph that provide information about the people who are important to you across mail, contacts, and social networks and with powerful search capabilities. </itunes:summary>\n    <itunes:duration>832</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4123</guid>\n    <dc:creator>Shreedevi Padmasini</dc:creator>\n    <category>microsoft+graph</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/436c/7e78db21-6b15-45b3-bc12-c846e806436c/P4123_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/436c/7e78db21-6b15-45b3-bc12-c846e806436c/P4123.mp3\" expression=\"full\" duration=\"832\" fileSize=\"13321290\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/436c/7e78db21-6b15-45b3-bc12-c846e806436c/P4123.mp4\" expression=\"full\" duration=\"832\" fileSize=\"18134264\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/436c/7e78db21-6b15-45b3-bc12-c846e806436c/P4123_high.mp4\" expression=\"full\" duration=\"832\" fileSize=\"61671733\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/436c/7e78db21-6b15-45b3-bc12-c846e806436c/P4123_mid.mp4\" expression=\"full\" duration=\"832\" fileSize=\"41875364\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4123.mp4\" expression=\"full\" duration=\"832\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Migrating your app to Azure and extending it for global scale</title>\n    <description><![CDATA[You have been told to move your on-premises app to the cloud and make it run reliably at scale. Sounds simple enough – but how practical is it and where do you start? Come join us on the journey of a three-tier app as it grows from a developer desktop all the way to a multi-region, multi-instance cloud scale deployment that is resilient to failures. Want to be part of the adventure? Download the code samples and instructions and try it out yourself.&nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:64928ce7216c4ea98870a76d015a4947\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4122</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4122</link>\n    <itunes:summary>You have been told to move your on-premises app to the cloud and make it run reliably at scale. Sounds simple enough – but how practical is it and where do you start? Come join us on the journey of a three-tier app as it grows from a developer desktop all the way to a multi-region, multi-instance cloud scale deployment that is resilient to failures. Want to be part of the adventure? Download the code samples and instructions and try it out yourself. </itunes:summary>\n    <itunes:duration>1467</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4122</guid>\n    <dc:creator>Steven Follis</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/1731/e29f7800-b777-49df-b793-db2ef2bb1731/P4122_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1731/e29f7800-b777-49df-b793-db2ef2bb1731/P4122_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1731/e29f7800-b777-49df-b793-db2ef2bb1731/P4122_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1731/e29f7800-b777-49df-b793-db2ef2bb1731/P4122.mp3\" expression=\"full\" duration=\"1467\" fileSize=\"23479626\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1731/e29f7800-b777-49df-b793-db2ef2bb1731/P4122.mp4\" expression=\"full\" duration=\"1467\" fileSize=\"79234271\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1731/e29f7800-b777-49df-b793-db2ef2bb1731/P4122_high.mp4\" expression=\"full\" duration=\"1467\" fileSize=\"628928231\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1731/e29f7800-b777-49df-b793-db2ef2bb1731/P4122_mid.mp4\" expression=\"full\" duration=\"1467\" fileSize=\"384234340\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4122.mp4\" expression=\"full\" duration=\"1467\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Advanced cross-platform mobile apps with Azure Mobile Apps and Xamarin</title>\n    <description><![CDATA[Creating connected mobile applications often requires some form of backend infrastructure. In this session, you'll learn how to reuse your existing .NET skills to quickly build web services into your Xamarin apps, leveraging the power of Azure App Service. See how simple it is to integrate the Azure App Service Mobile Apps SDK to integrate online/offline data synchronization, file storage, push notifications, and a lot more in just a few minutes. Whether you're a new mobile developer or an experienced enterprise team lead, Azure App Service and Xamarin give you everything you need to build better apps. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:c7be831e134943ecb08da76d015a48ee\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4121</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4121</link>\n    <itunes:summary>Creating connected mobile applications often requires some form of backend infrastructure. In this session, you&#39;ll learn how to reuse your existing .NET skills to quickly build web services into your Xamarin apps, leveraging the power of Azure App Service. See how simple it is to integrate the Azure App Service Mobile Apps SDK to integrate online/offline data synchronization, file storage, push notifications, and a lot more in just a few minutes. Whether you&#39;re a new mobile developer or an experienced enterprise team lead, Azure App Service and Xamarin give you everything you need to build better apps.</itunes:summary>\n    <itunes:duration>1129</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4121</guid>\n    <dc:creator>James Montemagno</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/7eb8/a770ae01-daa2-4283-86ba-18cfac487eb8/P4121_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/7eb8/a770ae01-daa2-4283-86ba-18cfac487eb8/P4121_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/7eb8/a770ae01-daa2-4283-86ba-18cfac487eb8/P4121_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7eb8/a770ae01-daa2-4283-86ba-18cfac487eb8/P4121.mp3\" expression=\"full\" duration=\"1129\" fileSize=\"18071754\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7eb8/a770ae01-daa2-4283-86ba-18cfac487eb8/P4121.mp4\" expression=\"full\" duration=\"1129\" fileSize=\"26998465\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7eb8/a770ae01-daa2-4283-86ba-18cfac487eb8/P4121_high.mp4\" expression=\"full\" duration=\"1129\" fileSize=\"99598572\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7eb8/a770ae01-daa2-4283-86ba-18cfac487eb8/P4121_mid.mp4\" expression=\"full\" duration=\"1129\" fileSize=\"67794869\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4121.mp4\" expression=\"full\" duration=\"1129\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Azure CLI 2.0</title>\n    <description><![CDATA[Learn about the next generation of Azure CLI – optimized to support bash and other command line environments natively and providing a powerful but simple set of commands for administering Azure resources. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:416846b8d8c447c88daea76d015a48bf\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4119</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4119</link>\n    <itunes:summary>Learn about the next generation of Azure CLI – optimized to support bash and other command line environments natively and providing a powerful but simple set of commands for administering Azure resources.</itunes:summary>\n    <itunes:duration>619</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4119</guid>\n    <dc:creator>Jason Shaver</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/e8f9/d26ef410-2329-49ea-baa8-0f8c6d00e8f9/P4119_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e8f9/d26ef410-2329-49ea-baa8-0f8c6d00e8f9/P4119_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e8f9/d26ef410-2329-49ea-baa8-0f8c6d00e8f9/P4119_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e8f9/d26ef410-2329-49ea-baa8-0f8c6d00e8f9/P4119.mp3\" expression=\"full\" duration=\"619\" fileSize=\"9910986\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e8f9/d26ef410-2329-49ea-baa8-0f8c6d00e8f9/P4119.mp4\" expression=\"full\" duration=\"619\" fileSize=\"12404175\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e8f9/d26ef410-2329-49ea-baa8-0f8c6d00e8f9/P4119_high.mp4\" expression=\"full\" duration=\"619\" fileSize=\"52806148\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e8f9/d26ef410-2329-49ea-baa8-0f8c6d00e8f9/P4119_mid.mp4\" expression=\"full\" duration=\"619\" fileSize=\"35554796\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4119.mp4\" expression=\"full\" duration=\"619\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Building cloud connected .NET apps with Visual Studio 2017</title>\n    <description><![CDATA[You've seen it time and time again—the true power of the .NET is being able to write applications that can run on various platforms. In this session we look at this in action. We look at an end-to-end solution that leverages UWP applications targeting IoT and desktop, all powered by an Azure backend. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:b002647b77564d6bb074a76d015a4890\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4117</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4117</link>\n    <itunes:summary>You&#39;ve seen it time and time again—the true power of the .NET is being able to write applications that can run on various platforms. In this session we look at this in action. We look at an end-to-end solution that leverages UWP applications targeting IoT and desktop, all powered by an Azure backend.</itunes:summary>\n    <itunes:duration>807</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4117</guid>\n    <dc:creator>Karan Nandwani, Ricardo Minguez</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/2fd0/56cec7a8-b907-4e08-99d1-a81882182fd0/P4117_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2fd0/56cec7a8-b907-4e08-99d1-a81882182fd0/P4117_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2fd0/56cec7a8-b907-4e08-99d1-a81882182fd0/P4117_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2fd0/56cec7a8-b907-4e08-99d1-a81882182fd0/P4117.mp3\" expression=\"full\" duration=\"807\" fileSize=\"12925002\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2fd0/56cec7a8-b907-4e08-99d1-a81882182fd0/P4117.mp4\" expression=\"full\" duration=\"807\" fileSize=\"18521759\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2fd0/56cec7a8-b907-4e08-99d1-a81882182fd0/P4117_high.mp4\" expression=\"full\" duration=\"807\" fileSize=\"72191476\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2fd0/56cec7a8-b907-4e08-99d1-a81882182fd0/P4117_mid.mp4\" expression=\"full\" duration=\"807\" fileSize=\"48617141\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4117.mp4\" expression=\"full\" duration=\"807\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Application Insights for .NET Microservices and Containers</title>\n    <description><![CDATA[Come to this session to learn how you can use Application Insights to tame the complexity of .NET microservices and containers. We take a quick tour of how to make the most of the Application Map and Analytics with Service Fabric and Docker with Service Fabric and Kubernetes. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:b493edb36cc643be9c42a76d015a47fa\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4113</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4113</link>\n    <itunes:summary>Come to this session to learn how you can use Application Insights to tame the complexity of .NET microservices and containers. We take a quick tour of how to make the most of the Application Map and Analytics with Service Fabric and Docker with Service Fabric and Kubernetes.</itunes:summary>\n    <itunes:duration>1024</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4113</guid>\n    <dc:creator>Dan Taylor</dc:creator>\n    <category>visual+studio</category>\n    <category>docker</category>\n    <category>application+insights</category>\n    <category>service+fabric</category>\n    <category>microservices</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/099e/4ddcbce2-aa14-4431-93c2-727c8b2c099e/P4113_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/099e/4ddcbce2-aa14-4431-93c2-727c8b2c099e/P4113.mp3\" expression=\"full\" duration=\"1024\" fileSize=\"16397437\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/099e/4ddcbce2-aa14-4431-93c2-727c8b2c099e/P4113.mp4\" expression=\"full\" duration=\"1024\" fileSize=\"22429824\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/099e/4ddcbce2-aa14-4431-93c2-727c8b2c099e/P4113_high.mp4\" expression=\"full\" duration=\"1024\" fileSize=\"103172498\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/099e/4ddcbce2-aa14-4431-93c2-727c8b2c099e/P4113_mid.mp4\" expression=\"full\" duration=\"1024\" fileSize=\"68281429\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4113.mp4\" expression=\"full\" duration=\"1024\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Java on Azure</title>\n    <description><![CDATA[Learn how you can use Java on Azure and develop, deploy and debug web apps, functions, container-based apps, and big data apps using your favorite Java IDEs and frameworks. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:83a2c7e3c750480a8e3ba76d015a4772\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4111</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4111</link>\n    <itunes:summary>Learn how you can use Java on Azure and develop, deploy and debug web apps, functions, container-based apps, and big data apps using your favorite Java IDEs and frameworks.</itunes:summary>\n    <itunes:duration>835</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4111</guid>\n    <dc:creator>Asir Selvasingh</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/c503/b1951f09-5fb7-4762-b533-8a26b887c503/P4111_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c503/b1951f09-5fb7-4762-b533-8a26b887c503/P4111_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c503/b1951f09-5fb7-4762-b533-8a26b887c503/P4111_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c503/b1951f09-5fb7-4762-b533-8a26b887c503/P4111.mp3\" expression=\"full\" duration=\"835\" fileSize=\"13369290\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c503/b1951f09-5fb7-4762-b533-8a26b887c503/P4111.mp4\" expression=\"full\" duration=\"835\" fileSize=\"16886589\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c503/b1951f09-5fb7-4762-b533-8a26b887c503/P4111_high.mp4\" expression=\"full\" duration=\"835\" fileSize=\"80410442\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c503/b1951f09-5fb7-4762-b533-8a26b887c503/P4111_mid.mp4\" expression=\"full\" duration=\"835\" fileSize=\"51275697\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4111.mp4\" expression=\"full\" duration=\"835\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Package management 101</title>\n    <description><![CDATA[You make use of components more and more in software development with NPM, Maven and NuGet. Come learn how Visual Studio Team Services can help you manage your teams packages. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:77c36e8dc78349159baaa76d015a46ea\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4110</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4110</link>\n    <itunes:summary>You make use of components more and more in software development with NPM, Maven and NuGet. Come learn how Visual Studio Team Services can help you manage your teams packages.</itunes:summary>\n    <itunes:duration>514</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4110</guid>\n    <dc:creator>Alex Mullans, Calvin Jones</dc:creator>\n    <category>visual+studio+team+services</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/4c0a/14feb5ef-342e-4d89-8c82-b17ae4fe4c0a/P4110_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4c0a/14feb5ef-342e-4d89-8c82-b17ae4fe4c0a/P4110_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4c0a/14feb5ef-342e-4d89-8c82-b17ae4fe4c0a/P4110_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4c0a/14feb5ef-342e-4d89-8c82-b17ae4fe4c0a/P4110.mp3\" expression=\"full\" duration=\"514\" fileSize=\"8225829\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4c0a/14feb5ef-342e-4d89-8c82-b17ae4fe4c0a/P4110.mp4\" expression=\"full\" duration=\"514\" fileSize=\"11404424\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4c0a/14feb5ef-342e-4d89-8c82-b17ae4fe4c0a/P4110_high.mp4\" expression=\"full\" duration=\"514\" fileSize=\"40821300\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4c0a/14feb5ef-342e-4d89-8c82-b17ae4fe4c0a/P4110_mid.mp4\" expression=\"full\" duration=\"514\" fileSize=\"27950315\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4110.mp4\" expression=\"full\" duration=\"514\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Get my ASP.NET 4 app running in containers in Azure</title>\n    <description><![CDATA[Containers, containers, containers – I know I need to get going, but what can they do for my &quot;old&quot; ASP.NET MVC 4 application? And how can that help me get on a path to modern DevOps, cloud and easy maintenance? <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:bc12fc55ee7b481f90eaa76d015a466b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4107</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4107</link>\n    <itunes:summary>Containers, containers, containers – I know I need to get going, but what can they do for my &amp;quot;old&amp;quot; ASP.NET MVC 4 application? And how can that help me get on a path to modern DevOps, cloud and easy maintenance?</itunes:summary>\n    <itunes:duration>1021</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4107</guid>\n    <dc:creator>Mikkel Mork Hegnhoj</dc:creator>\n    <category>azure</category>\n    <category>visual+studio</category>\n    <category>service+fabric</category>\n    <category>microservices</category>\n    <category>visual+studio+team+services</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/7e48/868d6c69-865f-4370-bb9e-de80781c7e48/P4107_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7e48/868d6c69-865f-4370-bb9e-de80781c7e48/P4107.mp3\" expression=\"full\" duration=\"1021\" fileSize=\"16343680\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7e48/868d6c69-865f-4370-bb9e-de80781c7e48/P4107.mp4\" expression=\"full\" duration=\"1021\" fileSize=\"19076402\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7e48/868d6c69-865f-4370-bb9e-de80781c7e48/P4107_high.mp4\" expression=\"full\" duration=\"1021\" fileSize=\"66955172\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7e48/868d6c69-865f-4370-bb9e-de80781c7e48/P4107_mid.mp4\" expression=\"full\" duration=\"1021\" fileSize=\"46705483\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4107.mp4\" expression=\"full\" duration=\"1021\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Build a CI/CD pipeline from Visual Studio</title>\n    <description><![CDATA[In this video Donovan Brown shows you how to use the new Continuous Delivery Extension for Visual Studio to build a complete CI/CD pipeline in Visual Studio Team Service and deploy to Azure. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:bb6b3f81a70a4572962fa76d015a45ed\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4105</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4105</link>\n    <itunes:summary>In this video Donovan Brown shows you how to use the new Continuous Delivery Extension for Visual Studio to build a complete CI/CD pipeline in Visual Studio Team Service and deploy to Azure.</itunes:summary>\n    <itunes:duration>864</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4105</guid>\n    <dc:creator>Donovan Brown</dc:creator>\n    <category>visual+studio</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/187e/d0412b29-478b-4c26-bc2b-012be0e1187e/P4105_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/187e/d0412b29-478b-4c26-bc2b-012be0e1187e/P4105_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/187e/d0412b29-478b-4c26-bc2b-012be0e1187e/P4105_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/187e/d0412b29-478b-4c26-bc2b-012be0e1187e/P4105.mp3\" expression=\"full\" duration=\"864\" fileSize=\"13828400\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/187e/d0412b29-478b-4c26-bc2b-012be0e1187e/P4105.mp4\" expression=\"full\" duration=\"864\" fileSize=\"23294825\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/187e/d0412b29-478b-4c26-bc2b-012be0e1187e/P4105_high.mp4\" expression=\"full\" duration=\"864\" fileSize=\"121777120\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/187e/d0412b29-478b-4c26-bc2b-012be0e1187e/P4105_mid.mp4\" expression=\"full\" duration=\"864\" fileSize=\"75385941\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4105.mp4\" expression=\"full\" duration=\"864\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>OSS-based DevOps - All Roads lead to Azure, Part I: CI/CD with Jenkins and Netflix Spinnaker</title>\n    <description><![CDATA[<p>In this session, learn how to build, test, and deploy to Azure using best-of-breed tools such as Jenkins and Netflix Spinnaker.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:7c91897422ed4e039d08a76d015a45b0\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4104</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4104</link>\n    <itunes:summary>In this session, learn how to build, test, and deploy to Azure using best-of-breed tools such as Jenkins and Netflix Spinnaker. </itunes:summary>\n    <itunes:duration>787</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4104</guid>\n    <dc:creator>Arun Chandrasekhar</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/20ea/29f770b5-4d6b-4404-b51a-bc9841ac20ea/P4104_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/20ea/29f770b5-4d6b-4404-b51a-bc9841ac20ea/P4104_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/20ea/29f770b5-4d6b-4404-b51a-bc9841ac20ea/P4104_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/20ea/29f770b5-4d6b-4404-b51a-bc9841ac20ea/P4104.mp3\" expression=\"full\" duration=\"787\" fileSize=\"12606666\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/20ea/29f770b5-4d6b-4404-b51a-bc9841ac20ea/P4104.mp4\" expression=\"full\" duration=\"787\" fileSize=\"15094865\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/20ea/29f770b5-4d6b-4404-b51a-bc9841ac20ea/P4104_mid.mp4\" expression=\"full\" duration=\"787\" fileSize=\"28630117\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4104.mp4\" expression=\"full\" duration=\"787\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4104.mp4\" expression=\"full\" duration=\"787\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>What&#39;s new in ChakraCore</title>\n    <description><![CDATA[In this session we cover the updates to ChakraCore in the last year and lay out the road ahead. We talk about the progress we've made around performance, language support, emerging technologies like WebAssembly and Time Travel debugging. We also talk about how Chakra is now available across multiple OS platforms and the work we've been doing with the Node.js core project to help solve some of the key problems with Node.js like providing a stable Node API for native module developers. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:4b3925283ff14034a032a76d015a4581\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4103</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4103</link>\n    <itunes:summary>In this session we cover the updates to ChakraCore in the last year and lay out the road ahead. We talk about the progress we&#39;ve made around performance, language support, emerging technologies like WebAssembly and Time Travel debugging. We also talk about how Chakra is now available across multiple OS platforms and the work we&#39;ve been doing with the Node.js core project to help solve some of the key problems with Node.js like providing a stable Node API for native module developers.</itunes:summary>\n    <itunes:duration>1094</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4103</guid>\n    <dc:creator>Brian Terlson</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/0f69/384e95e1-0eda-4f3d-90f2-3c1b8ced0f69/P4103_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0f69/384e95e1-0eda-4f3d-90f2-3c1b8ced0f69/P4103_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0f69/384e95e1-0eda-4f3d-90f2-3c1b8ced0f69/P4103_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0f69/384e95e1-0eda-4f3d-90f2-3c1b8ced0f69/P4103.mp3\" expression=\"full\" duration=\"1094\" fileSize=\"17512266\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0f69/384e95e1-0eda-4f3d-90f2-3c1b8ced0f69/P4103.mp4\" expression=\"full\" duration=\"1094\" fileSize=\"27030124\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0f69/384e95e1-0eda-4f3d-90f2-3c1b8ced0f69/P4103_high.mp4\" expression=\"full\" duration=\"1094\" fileSize=\"126997330\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0f69/384e95e1-0eda-4f3d-90f2-3c1b8ced0f69/P4103_mid.mp4\" expression=\"full\" duration=\"1094\" fileSize=\"80132409\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4103.mp4\" expression=\"full\" duration=\"1094\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Git at scale</title>\n    <description><![CDATA[Learn how Microsoft uses Git in large teams, and how you can make use of the advanced Pull Request and Code Review features in Visual Studio Team Services. Peek under hood to understand how Microsoft makes large repos and servers scale to support some of the most demanding needs of any software engineering team. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:87f5d0aa40274b37b287a76d015a4557\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4101</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4101</link>\n    <itunes:summary>Learn how Microsoft uses Git in large teams, and how you can make use of the advanced Pull Request and Code Review features in Visual Studio Team Services. Peek under hood to understand how Microsoft makes large repos and servers scale to support some of the most demanding needs of any software engineering team.</itunes:summary>\n    <itunes:duration>881</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4101</guid>\n    <dc:creator>Edward Thomson</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/bcf7/66453173-1541-4e71-a56c-b515110ebcf7/P4101_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/bcf7/66453173-1541-4e71-a56c-b515110ebcf7/P4101_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/bcf7/66453173-1541-4e71-a56c-b515110ebcf7/P4101_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bcf7/66453173-1541-4e71-a56c-b515110ebcf7/P4101.mp3\" expression=\"full\" duration=\"881\" fileSize=\"14111562\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bcf7/66453173-1541-4e71-a56c-b515110ebcf7/P4101.mp4\" expression=\"full\" duration=\"881\" fileSize=\"21954282\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bcf7/66453173-1541-4e71-a56c-b515110ebcf7/P4101_high.mp4\" expression=\"full\" duration=\"881\" fileSize=\"73569324\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bcf7/66453173-1541-4e71-a56c-b515110ebcf7/P4101_mid.mp4\" expression=\"full\" duration=\"881\" fileSize=\"49434633\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4101.mp4\" expression=\"full\" duration=\"881\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>A lap around R Tools 1.0 for Visual Studio 2017</title>\n    <description><![CDATA[R Tools for Visual Studio is a new, open source and free tool for R users built on top of the powerful Visual Studio IDE. In this talk, we take you on a tour of its features and show how they can help you be a more productive R user. We look at: integrated debugging support; variable/data frame visualization; plotting and help integration; using the Editor and REPL in concert with each other; RMarkdown and Shiny integration using Microsoft Excel and SQL Server; Extensions and source control. We also demo our R remoting feature that allows developers to execute R code on SQL Server. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:a384471e1bee42708973a76d015a4528\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4096</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4096</link>\n    <itunes:summary>R Tools for Visual Studio is a new, open source and free tool for R users built on top of the powerful Visual Studio IDE. In this talk, we take you on a tour of its features and show how they can help you be a more productive R user. We look at: integrated debugging support; variable/data frame visualization; plotting and help integration; using the Editor and REPL in concert with each other; RMarkdown and Shiny integration using Microsoft Excel and SQL Server; Extensions and source control. We also demo our R remoting feature that allows developers to execute R code on SQL Server.</itunes:summary>\n    <itunes:duration>1015</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4096</guid>\n    <dc:creator>John Lam</dc:creator>\n    <category>azure</category>\n    <category>visual+studio</category>\n    <category>r</category>\n    <category>data+science</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/a967/602200d1-3888-43e7-9085-fc8ad322a967/P4096_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a967/602200d1-3888-43e7-9085-fc8ad322a967/P4096_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a967/602200d1-3888-43e7-9085-fc8ad322a967/P4096_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a967/602200d1-3888-43e7-9085-fc8ad322a967/P4096.mp3\" expression=\"full\" duration=\"1015\" fileSize=\"16248783\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a967/602200d1-3888-43e7-9085-fc8ad322a967/P4096.mp4\" expression=\"full\" duration=\"1015\" fileSize=\"22534727\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a967/602200d1-3888-43e7-9085-fc8ad322a967/P4096_high.mp4\" expression=\"full\" duration=\"1015\" fileSize=\"95701200\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a967/602200d1-3888-43e7-9085-fc8ad322a967/P4096_mid.mp4\" expression=\"full\" duration=\"1015\" fileSize=\"62687577\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4096.mp4\" expression=\"full\" duration=\"1015\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>A lap around Python tools in Visual Studio</title>\n    <description><![CDATA[Learn about the Data Science workload in Visual Studio and how it can help developers install the latest and greatest Python tools and distributions for Windows. We look at using these tools to solve machine learning problems within minutes, debug Python code running on a remote VM, and some nifty new REPL features. We demonstrate how the Cookiecutter Explorer can help developers get started with Microsoft Azure faster, and how it is easier than ever to deploy web apps to Azure App Service from the comfort of Visual Studio. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:a19e5880c0444fccbd88a76d015a44ae\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4095</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4095</link>\n    <itunes:summary>Learn about the Data Science workload in Visual Studio and how it can help developers install the latest and greatest Python tools and distributions for Windows. We look at using these tools to solve machine learning problems within minutes, debug Python code running on a remote VM, and some nifty new REPL features. We demonstrate how the Cookiecutter Explorer can help developers get started with Microsoft Azure faster, and how it is easier than ever to deploy web apps to Azure App Service from the comfort of Visual Studio.</itunes:summary>\n    <itunes:duration>1127</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4095</guid>\n    <dc:creator>Steve Dower, Usman Anwer</dc:creator>\n    <category>visual+studio</category>\n    <category>python</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/6799/9edc4033-9774-4c78-bbae-d2af93f46799/P4095_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/6799/9edc4033-9774-4c78-bbae-d2af93f46799/P4095_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/6799/9edc4033-9774-4c78-bbae-d2af93f46799/P4095_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6799/9edc4033-9774-4c78-bbae-d2af93f46799/P4095.mp3\" expression=\"full\" duration=\"1127\" fileSize=\"18044357\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6799/9edc4033-9774-4c78-bbae-d2af93f46799/P4095.mp4\" expression=\"full\" duration=\"1127\" fileSize=\"23295173\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6799/9edc4033-9774-4c78-bbae-d2af93f46799/P4095_high.mp4\" expression=\"full\" duration=\"1127\" fileSize=\"64974789\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6799/9edc4033-9774-4c78-bbae-d2af93f46799/P4095_mid.mp4\" expression=\"full\" duration=\"1127\" fileSize=\"49158202\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4095.mp4\" expression=\"full\" duration=\"1127\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Building cross platform applications with ReactNative</title>\n    <description><![CDATA[React Native is a great way to build mobile applications for iOS, Android, and Windows using JavaScript. Learn about the tools from Microsoft to super charge your React Native developer workflow. See how VSCode can enable IntelliSense and inline debugging of React Native apps. Set up an automated DevOps workflow, understand user behavior using analytics, collect crash reports and distribute your app to end users and testers seamlessly. Use CodePush to update apps instantly and deliver the latest updates to users quickly. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:461860b66e35445f9e79a76d015a4446\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4080</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4080</link>\n    <itunes:summary>React Native is a great way to build mobile applications for iOS, Android, and Windows using JavaScript. Learn about the tools from Microsoft to super charge your React Native developer workflow. See how VSCode can enable IntelliSense and inline debugging of React Native apps. Set up an automated DevOps workflow, understand user behavior using analytics, collect crash reports and distribute your app to end users and testers seamlessly. Use CodePush to update apps instantly and deliver the latest updates to users quickly.</itunes:summary>\n    <itunes:duration>1388</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4080</guid>\n    <dc:creator>Parashuram Narasimhan</dc:creator>\n    <category>visual+studio</category>\n    <category>visual+studio+code</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/798a/4aa6a710-ec20-4baf-a228-bac67057798a/P4080_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/798a/4aa6a710-ec20-4baf-a228-bac67057798a/P4080_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/798a/4aa6a710-ec20-4baf-a228-bac67057798a/P4080_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/798a/4aa6a710-ec20-4baf-a228-bac67057798a/P4080.mp3\" expression=\"full\" duration=\"1388\" fileSize=\"22215780\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/798a/4aa6a710-ec20-4baf-a228-bac67057798a/P4080.mp4\" expression=\"full\" duration=\"1388\" fileSize=\"33294946\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/798a/4aa6a710-ec20-4baf-a228-bac67057798a/P4080_high.mp4\" expression=\"full\" duration=\"1388\" fileSize=\"124794856\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/798a/4aa6a710-ec20-4baf-a228-bac67057798a/P4080_mid.mp4\" expression=\"full\" duration=\"1388\" fileSize=\"87229872\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4080.mp4\" expression=\"full\" duration=\"1388\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Learn how to deliver a compelling test-drive experience on Microsoft AppSource</title>\n    <description><![CDATA[More and more business users are looking for easier ways to discover and try apps before engaging IT. Having a compelling test-drive or trial experience is a cornerstone for your success in the marketplace. If your application uses Microsoft Azure, Microsoft Dynamics 365, PowerApps, Power BI, Microsoft Flow, etc then join us to learn how you can leverage Microsoft AppSource provisioning and Test Drive management framework to create a frictionless trial experience. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:c971be59c48e4c0a9877a76d015a43cc\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4077</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4077</link>\n    <itunes:summary>More and more business users are looking for easier ways to discover and try apps before engaging IT. Having a compelling test-drive or trial experience is a cornerstone for your success in the marketplace. If your application uses Microsoft Azure, Microsoft Dynamics 365, PowerApps, Power BI, Microsoft Flow, etc then join us to learn how you can leverage Microsoft AppSource provisioning and Test Drive management framework to create a frictionless trial experience.</itunes:summary>\n    <itunes:duration>1774</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4077</guid>\n    <dc:creator>Satish Thomas, Shefy Manayil Kareem</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/a7c6/d9aa7966-a0e2-4bd7-abdf-ed389796a7c6/P4077_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a7c6/d9aa7966-a0e2-4bd7-abdf-ed389796a7c6/P4077_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a7c6/d9aa7966-a0e2-4bd7-abdf-ed389796a7c6/P4077_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a7c6/d9aa7966-a0e2-4bd7-abdf-ed389796a7c6/P4077.mp3\" expression=\"full\" duration=\"1774\" fileSize=\"28396362\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a7c6/d9aa7966-a0e2-4bd7-abdf-ed389796a7c6/P4077.mp4\" expression=\"full\" duration=\"1774\" fileSize=\"46836311\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a7c6/d9aa7966-a0e2-4bd7-abdf-ed389796a7c6/P4077_high.mp4\" expression=\"full\" duration=\"1774\" fileSize=\"242209947\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a7c6/d9aa7966-a0e2-4bd7-abdf-ed389796a7c6/P4077_mid.mp4\" expression=\"full\" duration=\"1774\" fileSize=\"152584352\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4077.mp4\" expression=\"full\" duration=\"1774\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Bot  Human Handoff</title>\n    <description><![CDATA[Bots can’t replace our human agents, but they can augment the customer service experience. This session explores how we can use a bot to initiate a conversation with a customer, and then hand off context to a human agent. &nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:8a1a0c99516d41409e84a76d015a4360\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4075</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4075</link>\n    <itunes:summary>Bots can’t replace our human agents, but they can augment the customer service experience. This session explores how we can use a bot to initiate a conversation with a customer, and then hand off context to a human agent.  </itunes:summary>\n    <itunes:duration>1191</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4075</guid>\n    <dc:creator>Hannah Krager</dc:creator>\n    <category>bots</category>\n    <category>artificial+intelligence</category>\n    <category>bot+framework</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/787b/e3403b8f-7f74-4752-9e41-d72af572787b/P4075_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/787b/e3403b8f-7f74-4752-9e41-d72af572787b/P4075_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/787b/e3403b8f-7f74-4752-9e41-d72af572787b/P4075_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/787b/e3403b8f-7f74-4752-9e41-d72af572787b/P4075.mp3\" expression=\"full\" duration=\"1191\" fileSize=\"19062689\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/787b/e3403b8f-7f74-4752-9e41-d72af572787b/P4075.mp4\" expression=\"full\" duration=\"1191\" fileSize=\"21840474\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/787b/e3403b8f-7f74-4752-9e41-d72af572787b/P4075_high.mp4\" expression=\"full\" duration=\"1191\" fileSize=\"103656816\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/787b/e3403b8f-7f74-4752-9e41-d72af572787b/P4075_mid.mp4\" expression=\"full\" duration=\"1191\" fileSize=\"64784533\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4075.mp4\" expression=\"full\" duration=\"1191\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>The next generation of HockeyApp: Visual Studio Mobile Center</title>\n    <description><![CDATA[<p>In this video, Ian previews the first step in our [transition plan](<a href=\"https://hockeyapp.net/mobile-center\">https://hockeyapp.net/mobile-center</a>): using your existing HockeyApp apps inside Mobile Center. This will be initially limited to HockeyApp Preseason customers and will expand over the coming months to all HockeyApp customers.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:117cbba402f74ddf8f00a76d015a4182\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4069</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4069</link>\n    <itunes:summary>In this video, Ian previews the first step in our [transition plan](https://hockeyapp.net/mobile-center): using your existing HockeyApp apps inside Mobile Center. This will be initially limited to HockeyApp Preseason customers and will expand over the coming months to all HockeyApp customers. </itunes:summary>\n    <itunes:duration>524</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4069</guid>\n    <dc:creator>Ian Janicki</dc:creator>\n    <category>visual+studio</category>\n    <category>hockeyapp</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/9c4c/42257127-e174-4154-94dd-84e3e36d9c4c/P4069_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9c4c/42257127-e174-4154-94dd-84e3e36d9c4c/P4069.mp3\" expression=\"full\" duration=\"524\" fileSize=\"8399841\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9c4c/42257127-e174-4154-94dd-84e3e36d9c4c/P4069.mp4\" expression=\"full\" duration=\"524\" fileSize=\"10578402\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9c4c/42257127-e174-4154-94dd-84e3e36d9c4c/P4069_high.mp4\" expression=\"full\" duration=\"524\" fileSize=\"31363153\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9c4c/42257127-e174-4154-94dd-84e3e36d9c4c/P4069_mid.mp4\" expression=\"full\" duration=\"524\" fileSize=\"24021046\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4069.mp4\" expression=\"full\" duration=\"524\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Transform your monitoring and diagnostics with machine learning and big data</title>\n    <description><![CDATA[Analyzing tons of telemetry data, whether structured or unstructured, and deriving insights to fix problems is complex and tedious. It is further complicated when you need to correlate datasets across applications and systems and deliver information instantaneously. Monitoring solutions in Microsoft Azure such as Application Insights and OMS Insight &amp; Analytics can analyze billions of data points and terabytes of log data at scale to provide immediate actionable insights. This session demonstrates how developers and IT pros can use the log analytics, big data querying, and machine learning capabilities in these solutions to easily do deep mining and advanced analysis of telemetry from their apps, services, and infrastructure, so they can detect and diagnose service issues that are not readily apparent. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:f6409cb09a4b4bd29168a76d015a4108\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4068</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4068</link>\n    <itunes:summary>Analyzing tons of telemetry data, whether structured or unstructured, and deriving insights to fix problems is complex and tedious. It is further complicated when you need to correlate datasets across applications and systems and deliver information instantaneously. Monitoring solutions in Microsoft Azure such as Application Insights and OMS Insight &amp;amp; Analytics can analyze billions of data points and terabytes of log data at scale to provide immediate actionable insights. This session demonstrates how developers and IT pros can use the log analytics, big data querying, and machine learning capabilities in these solutions to easily do deep mining and advanced analysis of telemetry from their apps, services, and infrastructure, so they can detect and diagnose service issues that are not readily apparent.</itunes:summary>\n    <itunes:duration>1018</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4068</guid>\n    <dc:creator>Evgeny Ternovsky</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/13b3/f41e23fc-5ba9-4d26-a5f4-360519de13b3/P4068_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/13b3/f41e23fc-5ba9-4d26-a5f4-360519de13b3/P4068_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/13b3/f41e23fc-5ba9-4d26-a5f4-360519de13b3/P4068_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/13b3/f41e23fc-5ba9-4d26-a5f4-360519de13b3/P4068.mp3\" expression=\"full\" duration=\"1018\" fileSize=\"16289610\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/13b3/f41e23fc-5ba9-4d26-a5f4-360519de13b3/P4068.mp4\" expression=\"full\" duration=\"1018\" fileSize=\"22938305\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/13b3/f41e23fc-5ba9-4d26-a5f4-360519de13b3/P4068_high.mp4\" expression=\"full\" duration=\"1018\" fileSize=\"87309497\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/13b3/f41e23fc-5ba9-4d26-a5f4-360519de13b3/P4068_mid.mp4\" expression=\"full\" duration=\"1018\" fileSize=\"60164627\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4068.mp4\" expression=\"full\" duration=\"1018\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Designing conversational UI for bots (and humans)</title>\n    <description><![CDATA[The Bot Framework enables you to quickly build and publish a bot to engage with users on many of the popular messaging services like Skype, Microsoft Teams, Facebook Messenger, and Slack. But to many designers and developers, designing an “app” UI as a conversation in a messaging windows is a new and daunting prospect. In this session, you'll learn how to design a conversational UI that feels as fast, as fluid, and as natural as a messaging conversation between friends, while driving user engagement for your bot. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:b53105bcac88430bbe3fa76d015a40de\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4066</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4066</link>\n    <itunes:summary>The Bot Framework enables you to quickly build and publish a bot to engage with users on many of the popular messaging services like Skype, Microsoft Teams, Facebook Messenger, and Slack. But to many designers and developers, designing an “app” UI as a conversation in a messaging windows is a new and daunting prospect. In this session, you&#39;ll learn how to design a conversational UI that feels as fast, as fluid, and as natural as a messaging conversation between friends, while driving user engagement for your bot.</itunes:summary>\n    <itunes:duration>2373</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4066</guid>\n    <dc:creator>Chris Mayo</dc:creator>\n    <category>bots</category>\n    <category>artificial+intelligence</category>\n    <category>bot+framework</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/3bff/4465e5de-e4ce-4e2b-84d9-1550e0fd3bff/P4066_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3bff/4465e5de-e4ce-4e2b-84d9-1550e0fd3bff/P4066_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3bff/4465e5de-e4ce-4e2b-84d9-1550e0fd3bff/P4066_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3bff/4465e5de-e4ce-4e2b-84d9-1550e0fd3bff/P4066.mp3\" expression=\"full\" duration=\"2373\" fileSize=\"37979740\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3bff/4465e5de-e4ce-4e2b-84d9-1550e0fd3bff/P4066.mp4\" expression=\"full\" duration=\"2373\" fileSize=\"46513778\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3bff/4465e5de-e4ce-4e2b-84d9-1550e0fd3bff/P4066_high.mp4\" expression=\"full\" duration=\"2373\" fileSize=\"198610096\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3bff/4465e5de-e4ce-4e2b-84d9-1550e0fd3bff/P4066_mid.mp4\" expression=\"full\" duration=\"2373\" fileSize=\"127204452\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4066.mp4\" expression=\"full\" duration=\"2373\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>A Whirlwind Tour of Microsoft Security Risk Detection</title>\n    <description><![CDATA[<p>Hear from the developers of Microsoft Security Risk Detection how they built a service that brings a suite of security testing tools to you in an easy to use package. You will see “under the hood” of the service, including details of the technology used and how we used Azure to build a multi-tenant, scalable service. You will learn about why we made different design decisions guided by experience at Microsoft and how you can use this learning for your own organization.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:a1ae38387c524ee2aaf1a76d015a4077\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4065</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4065</link>\n    <itunes:summary>Hear from the developers of Microsoft Security Risk Detection how they built a service that brings a suite of security testing tools to you in an easy to use package. You will see “under the hood” of the service, including details of the technology used and how we used Azure to build a multi-tenant, scalable service. You will learn about why we made different design decisions guided by experience at Microsoft and how you can use this learning for your own organization. </itunes:summary>\n    <itunes:duration>2067</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4065</guid>\n    <dc:creator>William Blum, Marina Polishchuk</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>security</category>\n    <category>risk+detection</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/a7c1/b62e6a8a-580c-4851-96dc-f10d6fc7a7c1/P4065_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/a7c1/b62e6a8a-580c-4851-96dc-f10d6fc7a7c1/P4065_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/a7c1/b62e6a8a-580c-4851-96dc-f10d6fc7a7c1/P4065_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a7c1/b62e6a8a-580c-4851-96dc-f10d6fc7a7c1/P4065.mp3\" expression=\"full\" duration=\"2067\" fileSize=\"33080683\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a7c1/b62e6a8a-580c-4851-96dc-f10d6fc7a7c1/P4065.mp4\" expression=\"full\" duration=\"2067\" fileSize=\"54019596\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a7c1/b62e6a8a-580c-4851-96dc-f10d6fc7a7c1/P4065_high.mp4\" expression=\"full\" duration=\"2067\" fileSize=\"305451625\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a7c1/b62e6a8a-580c-4851-96dc-f10d6fc7a7c1/P4065_mid.mp4\" expression=\"full\" duration=\"2067\" fileSize=\"187881342\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4065.mp4\" expression=\"full\" duration=\"2067\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Authentication in Cortana Skills</title>\n    <description><![CDATA[Cortana Skills can make calls to other services that require authentication, such as the Microsoft Graph. The easiest way to implement this for a service that requires OAuth 2.0 authentication is to configure a Connected Service for your skill and let Cortana manage the authentication token which is passed to your skill on invocation. Alternatively, you can manage the authentication entirely within your skills service which requires more work but gives greater flexibility. In this session, we’ll walk through how to configure a Connected Service and how to access the authentication tokens within your skill service to make authenticated calls, and we’ll cover how to implement skill-managed authentication. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:3d31f595138445a7aa4ba76d015a3fea\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4063</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4063</link>\n    <itunes:summary>Cortana Skills can make calls to other services that require authentication, such as the Microsoft Graph. The easiest way to implement this for a service that requires OAuth 2.0 authentication is to configure a Connected Service for your skill and let Cortana manage the authentication token which is passed to your skill on invocation. Alternatively, you can manage the authentication entirely within your skills service which requires more work but gives greater flexibility. In this session, we’ll walk through how to configure a Connected Service and how to access the authentication tokens within your skill service to make authenticated calls, and we’ll cover how to implement skill-managed authentication.</itunes:summary>\n    <itunes:duration>1560</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4063</guid>\n    <dc:creator>Andy Wigley, Nafis Zaman</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>cortanta+skills</category>\n    <category>cortana</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/cc88/2bb18ef6-1998-4f1f-9e5d-d8e21f3ecc88/P4063_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/cc88/2bb18ef6-1998-4f1f-9e5d-d8e21f3ecc88/P4063_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/cc88/2bb18ef6-1998-4f1f-9e5d-d8e21f3ecc88/P4063_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cc88/2bb18ef6-1998-4f1f-9e5d-d8e21f3ecc88/P4063.mp3\" expression=\"full\" duration=\"1560\" fileSize=\"24965581\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cc88/2bb18ef6-1998-4f1f-9e5d-d8e21f3ecc88/P4063.mp4\" expression=\"full\" duration=\"1560\" fileSize=\"35867443\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cc88/2bb18ef6-1998-4f1f-9e5d-d8e21f3ecc88/P4063_high.mp4\" expression=\"full\" duration=\"1560\" fileSize=\"160200510\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cc88/2bb18ef6-1998-4f1f-9e5d-d8e21f3ecc88/P4063_mid.mp4\" expression=\"full\" duration=\"1560\" fileSize=\"102619003\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4063.mp4\" expression=\"full\" duration=\"1560\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Delivering world-class game experiences using Microsoft Azure: Lessons learned from titles like Halo, Hitman, and Walking Dead</title>\n    <description><![CDATA[Learn how major titles like Halo, Hitman, and Walking Dead are using Azure to build great experiences for their players. Building game servers, storing data, and managing game analytics may be easier than you think. You could be building mobile, PC or console games. You could be an Indie-developer or a large game studio. Azure has a lot of services to offer to build amazing game experiences, save money, and monetize your player base. If you have an existing backend infrastructure or are planning to create a new solution from scratch, Azure provides you the flexibility and security to get your game running quickly at global hyper scale. Learn about sample codes, reference architectures and partner solutions on Azure to quickly build your next game on cloud. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1b3c37dba5d1418a85aea76d015a3f4b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4062</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4062</link>\n    <itunes:summary>Learn how major titles like Halo, Hitman, and Walking Dead are using Azure to build great experiences for their players. Building game servers, storing data, and managing game analytics may be easier than you think. You could be building mobile, PC or console games. You could be an Indie-developer or a large game studio. Azure has a lot of services to offer to build amazing game experiences, save money, and monetize your player base. If you have an existing backend infrastructure or are planning to create a new solution from scratch, Azure provides you the flexibility and security to get your game running quickly at global hyper scale. Learn about sample codes, reference architectures and partner solutions on Azure to quickly build your next game on cloud.</itunes:summary>\n    <itunes:duration>3205</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4062</guid>\n    <dc:creator>Gowtham Prasad</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/f3d2/4d98f8a9-130b-441e-87bd-0e9841fcf3d2/P4062_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f3d2/4d98f8a9-130b-441e-87bd-0e9841fcf3d2/P4062_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f3d2/4d98f8a9-130b-441e-87bd-0e9841fcf3d2/P4062_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f3d2/4d98f8a9-130b-441e-87bd-0e9841fcf3d2/P4062.mp3\" expression=\"full\" duration=\"3205\" fileSize=\"51286218\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f3d2/4d98f8a9-130b-441e-87bd-0e9841fcf3d2/P4062.mp4\" expression=\"full\" duration=\"3205\" fileSize=\"80902865\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f3d2/4d98f8a9-130b-441e-87bd-0e9841fcf3d2/P4062_high.mp4\" expression=\"full\" duration=\"3205\" fileSize=\"392297984\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f3d2/4d98f8a9-130b-441e-87bd-0e9841fcf3d2/P4062_mid.mp4\" expression=\"full\" duration=\"3205\" fileSize=\"253385434\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4062.mp4\" expression=\"full\" duration=\"3205\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How your applications can benefit from AI using Bing APIs on Microsoft Cognitive Services</title>\n    <description><![CDATA[Bing APIs on Cognitive Services provides a wealth of AI capabilities for you to use in your enterprise or mobile applications. Learn how easy it is to incorporate knowledge and intelligence into your applications and take your business to the next level. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:2b640dbb6ca94f82907fa76d015a3ebe\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4060</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4060</link>\n    <itunes:summary>Bing APIs on Cognitive Services provides a wealth of AI capabilities for you to use in your enterprise or mobile applications. Learn how easy it is to incorporate knowledge and intelligence into your applications and take your business to the next level.</itunes:summary>\n    <itunes:duration>715</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4060</guid>\n    <dc:creator>Ansuman Kar, Brian King</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>cognitive+services</category>\n    <category>bing</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/12de/253a1855-7edb-46c7-b910-2b25301512de/P4060_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/12de/253a1855-7edb-46c7-b910-2b25301512de/P4060_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/12de/253a1855-7edb-46c7-b910-2b25301512de/P4060_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/12de/253a1855-7edb-46c7-b910-2b25301512de/P4060.mp3\" expression=\"full\" duration=\"715\" fileSize=\"11447358\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/12de/253a1855-7edb-46c7-b910-2b25301512de/P4060.mp4\" expression=\"full\" duration=\"715\" fileSize=\"23300896\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/12de/253a1855-7edb-46c7-b910-2b25301512de/P4060_high.mp4\" expression=\"full\" duration=\"715\" fileSize=\"160560426\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/12de/253a1855-7edb-46c7-b910-2b25301512de/P4060_mid.mp4\" expression=\"full\" duration=\"715\" fileSize=\"94511816\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4060.mp4\" expression=\"full\" duration=\"715\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Unleashing Visual Studio Power for Projectless Code</title>\n    <description><![CDATA[Visual Studio 2017 introduced a new way to work with codebases that don’t have projects and solutions. Remember creating artificial projects just to group files together and open them in Visual Studio? Not anymore. Learn how to bring the power of Visual Studio to any codebase and tune your favorite IDE features just right. Increase adoption of your language or platform by extending the Visual Studio open folder experience. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:3ed9022bb9c24241bcf7a76d015a3e44\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4053</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4053</link>\n    <itunes:summary>Visual Studio 2017 introduced a new way to work with codebases that don’t have projects and solutions. Remember creating artificial projects just to group files together and open them in Visual Studio? Not anymore. Learn how to bring the power of Visual Studio to any codebase and tune your favorite IDE features just right. Increase adoption of your language or platform by extending the Visual Studio open folder experience.</itunes:summary>\n    <itunes:duration>828</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4053</guid>\n    <dc:creator>Viktor Veis</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/366b/a3741086-47ac-4e40-9a2d-66dcb9e4366b/P4053_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/366b/a3741086-47ac-4e40-9a2d-66dcb9e4366b/P4053_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/366b/a3741086-47ac-4e40-9a2d-66dcb9e4366b/P4053_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/366b/a3741086-47ac-4e40-9a2d-66dcb9e4366b/P4053.mp3\" expression=\"full\" duration=\"828\" fileSize=\"13260234\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/366b/a3741086-47ac-4e40-9a2d-66dcb9e4366b/P4053.mp4\" expression=\"full\" duration=\"828\" fileSize=\"21061247\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/366b/a3741086-47ac-4e40-9a2d-66dcb9e4366b/P4053_high.mp4\" expression=\"full\" duration=\"828\" fileSize=\"79615830\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/366b/a3741086-47ac-4e40-9a2d-66dcb9e4366b/P4053_mid.mp4\" expression=\"full\" duration=\"828\" fileSize=\"54376666\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4053.mp4\" expression=\"full\" duration=\"828\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How To Fuzz It – Microsoft Security Risk Detection in Practice</title>\n    <description><![CDATA[You will learn how you can use Microsoft Security Risk Detection to find serious issues in your code, then how you can take action to manage the risk. You will see a sample library and application that hide problems, then learn how you can find these problems and reproduce them. After the session, you can download the code to study and understand the kinds of issues that Security Risk Detection helps you find. You will also learn how the broader Microsoft platform helps you manage risks from these issues. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:0c0141461e664d458d6ea76d015a3df0\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4051</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4051</link>\n    <itunes:summary>You will learn how you can use Microsoft Security Risk Detection to find serious issues in your code, then how you can take action to manage the risk. You will see a sample library and application that hide problems, then learn how you can find these problems and reproduce them. After the session, you can download the code to study and understand the kinds of issues that Security Risk Detection helps you find. You will also learn how the broader Microsoft platform helps you manage risks from these issues.</itunes:summary>\n    <itunes:duration>1717</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4051</guid>\n    <dc:creator>David Molnar</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>security</category>\n    <category>risk+detection</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/1a0c/5bbb97be-03e1-4331-b60b-0fe95c841a0c/P4051_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1a0c/5bbb97be-03e1-4331-b60b-0fe95c841a0c/P4051_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1a0c/5bbb97be-03e1-4331-b60b-0fe95c841a0c/P4051_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1a0c/5bbb97be-03e1-4331-b60b-0fe95c841a0c/P4051.mp3\" expression=\"full\" duration=\"1717\" fileSize=\"27488507\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1a0c/5bbb97be-03e1-4331-b60b-0fe95c841a0c/P4051.mp4\" expression=\"full\" duration=\"1717\" fileSize=\"35633099\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1a0c/5bbb97be-03e1-4331-b60b-0fe95c841a0c/P4051_high.mp4\" expression=\"full\" duration=\"1717\" fileSize=\"134996362\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1a0c/5bbb97be-03e1-4331-b60b-0fe95c841a0c/P4051_mid.mp4\" expression=\"full\" duration=\"1717\" fileSize=\"89830526\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4051.mp4\" expression=\"full\" duration=\"1717\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Designing mobile applications</title>\n    <description><![CDATA[Mobile applications present a unique set of design challenges and opportunities that differ from traditional desktop and browser based applications. With powerful cross-platform solutions like Xamarin you can now deliver more, more quickly. In this presentation, learn about the constraints of devices and platform ecosystems, how to optimize your workflow to address them early, and how to effectively iterate over your app's design to ensure you deliver the best possible user experience. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:3fe97183387a4f56ba1ea76d015a3d84\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4048</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4048</link>\n    <itunes:summary>Mobile applications present a unique set of design challenges and opportunities that differ from traditional desktop and browser based applications. With powerful cross-platform solutions like Xamarin you can now deliver more, more quickly. In this presentation, learn about the constraints of devices and platform ecosystems, how to optimize your workflow to address them early, and how to effectively iterate over your app&#39;s design to ensure you deliver the best possible user experience.</itunes:summary>\n    <itunes:duration>1051</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4048</guid>\n    <dc:creator>David Ortinau</dc:creator>\n    <category>xamarin+test+cloud</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/a0b2/c530bf99-3516-415e-b3e3-e8f0ab0ca0b2/P4048_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a0b2/c530bf99-3516-415e-b3e3-e8f0ab0ca0b2/P4048_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a0b2/c530bf99-3516-415e-b3e3-e8f0ab0ca0b2/P4048_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a0b2/c530bf99-3516-415e-b3e3-e8f0ab0ca0b2/P4048.mp3\" expression=\"full\" duration=\"1051\" fileSize=\"16825885\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a0b2/c530bf99-3516-415e-b3e3-e8f0ab0ca0b2/P4048.mp4\" expression=\"full\" duration=\"1051\" fileSize=\"23367658\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a0b2/c530bf99-3516-415e-b3e3-e8f0ab0ca0b2/P4048_high.mp4\" expression=\"full\" duration=\"1051\" fileSize=\"100138032\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a0b2/c530bf99-3516-415e-b3e3-e8f0ab0ca0b2/P4048_mid.mp4\" expression=\"full\" duration=\"1051\" fileSize=\"64355508\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4048.mp4\" expression=\"full\" duration=\"1051\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Azure IoT: A Developers&#39; deep dive</title>\n    <description><![CDATA[From connecting devices to Microsoft Azure to deploying, configuring, and monitoring an IoT Solution, we walk through what's available for developers in Azure IoT platform, SDKs, and tools. Whether you are a hardcore C device developer, a C# or Java expert, a Node.js aficionado, a data and analytics guru, or if you just wonder what IoT is made of and has to offer, this demo-packed session is for you.&nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:3be60e708eda48c2a2b9a76d015a3d43\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4046</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4046</link>\n    <itunes:summary>From connecting devices to Microsoft Azure to deploying, configuring, and monitoring an IoT Solution, we walk through what&#39;s available for developers in Azure IoT platform, SDKs, and tools. Whether you are a hardcore C device developer, a C# or Java expert, a Node.js aficionado, a data and analytics guru, or if you just wonder what IoT is made of and has to offer, this demo-packed session is for you. </itunes:summary>\n    <itunes:duration>1748</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4046</guid>\n    <dc:creator>Olivier Bloch</dc:creator>\n    <category>internet+of+things</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/28e4/f8fd8532-3965-4fba-a83d-3fe5f65e28e4/P4046_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/28e4/f8fd8532-3965-4fba-a83d-3fe5f65e28e4/P4046_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/28e4/f8fd8532-3965-4fba-a83d-3fe5f65e28e4/P4046_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/28e4/f8fd8532-3965-4fba-a83d-3fe5f65e28e4/P4046.mp3\" expression=\"full\" duration=\"1748\" fileSize=\"27982249\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/28e4/f8fd8532-3965-4fba-a83d-3fe5f65e28e4/P4046.mp4\" expression=\"full\" duration=\"1748\" fileSize=\"50064056\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/28e4/f8fd8532-3965-4fba-a83d-3fe5f65e28e4/P4046_high.mp4\" expression=\"full\" duration=\"1748\" fileSize=\"280196140\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/28e4/f8fd8532-3965-4fba-a83d-3fe5f65e28e4/P4046_mid.mp4\" expression=\"full\" duration=\"1748\" fileSize=\"175549709\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4046.mp4\" expression=\"full\" duration=\"1748\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Azure VNet for containers</title>\n    <description><![CDATA[Azure SDN stack offers comprehensive network virtualization functions to virtual machines running in Microsoft Azure. It provides the ability to host VMs in an isolated private network (Virtual Networks), high performance load balancing (SLB), scalable network ACLs (Network Security Groups), custom route tables (User defined Routes) and private connectivity to on-premises (Express Route). In this talk, Mario Lopez and Narayan Annamalai talk about Microsoft’s latest open source CNI plugin that will impart and integrate the rich SDN stack to containers running in Azure. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:5071b6f0a22e401ea4d5a76d015a3cfc\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4045</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4045</link>\n    <itunes:summary>Azure SDN stack offers comprehensive network virtualization functions to virtual machines running in Microsoft Azure. It provides the ability to host VMs in an isolated private network (Virtual Networks), high performance load balancing (SLB), scalable network ACLs (Network Security Groups), custom route tables (User defined Routes) and private connectivity to on-premises (Express Route). In this talk, Mario Lopez and Narayan Annamalai talk about Microsoft’s latest open source CNI plugin that will impart and integrate the rich SDN stack to containers running in Azure.</itunes:summary>\n    <itunes:duration>1837</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4045</guid>\n    <dc:creator>Narayan Annamalai, Mario Lopez</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/ef54/c78238df-6826-4bbd-83b1-545c2175ef54/P4045_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/ef54/c78238df-6826-4bbd-83b1-545c2175ef54/P4045_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/ef54/c78238df-6826-4bbd-83b1-545c2175ef54/P4045_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ef54/c78238df-6826-4bbd-83b1-545c2175ef54/P4045.mp3\" expression=\"full\" duration=\"1837\" fileSize=\"29399754\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ef54/c78238df-6826-4bbd-83b1-545c2175ef54/P4045.mp4\" expression=\"full\" duration=\"1837\" fileSize=\"36856925\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ef54/c78238df-6826-4bbd-83b1-545c2175ef54/P4045_high.mp4\" expression=\"full\" duration=\"1837\" fileSize=\"131607183\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ef54/c78238df-6826-4bbd-83b1-545c2175ef54/P4045_mid.mp4\" expression=\"full\" duration=\"1837\" fileSize=\"91515840\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4045.mp4\" expression=\"full\" duration=\"1837\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Real-time sentiment built on the Azure IoT Stack</title>\n    <description><![CDATA[Learn how Microsoft Pulse, a cloud-based sentiment collection platform, leveraged the Azure stack to enable hundreds of thousands of users to provide real-time feedback and see real-time results during major broadcast events like State of the Union and the 2016 Election Debates. Talking points include Quick Pulse Voting UI/Walkthrough, with an explanation of the product, why scalability and real-time responses are important. We describe the technical problem – the need to scale to accept data from hundreds of thousands of concurrent users engaging (pulsing) every five seconds, quickly tally the data by demographics, and report back results so that users can see the sentiment response to what is being talked about. We also discuss actual numbers (peak votes/time series, total round trip time, concurrent users). We talk about the pipeline of the pulse round-trip (i.e., user clicks the button, request goes to WebAPI front-end, event hubs, picked up by the aggregator services, tabulated, cached in Redis and reported back down to the client via SignalR). Finally, we cover other architectures that were considered, and discuss what worked, what could have worked better, and what might work. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:43c062dd315e40008dd0a76d015a3c90\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4044</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4044</link>\n    <itunes:summary>Learn how Microsoft Pulse, a cloud-based sentiment collection platform, leveraged the Azure stack to enable hundreds of thousands of users to provide real-time feedback and see real-time results during major broadcast events like State of the Union and the 2016 Election Debates. Talking points include Quick Pulse Voting UI/Walkthrough, with an explanation of the product, why scalability and real-time responses are important. We describe the technical problem – the need to scale to accept data from hundreds of thousands of concurrent users engaging (pulsing) every five seconds, quickly tally the data by demographics, and report back results so that users can see the sentiment response to what is being talked about. We also discuss actual numbers (peak votes/time series, total round trip time, concurrent users). We talk about the pipeline of the pulse round-trip (i.e., user clicks the button, request goes to WebAPI front-end, event hubs, picked up by the aggregator services, tabulated, cached in Redis and reported back down to the client via SignalR). Finally, we cover other architectures that were considered, and discuss what worked, what could have worked better, and what might work.</itunes:summary>\n    <itunes:duration>1309</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4044</guid>\n    <dc:creator>Joel Narwold</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/cee8/330162ce-2c4b-472a-854d-c2cd5f7fcee8/P4044_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/cee8/330162ce-2c4b-472a-854d-c2cd5f7fcee8/P4044_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/cee8/330162ce-2c4b-472a-854d-c2cd5f7fcee8/P4044_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cee8/330162ce-2c4b-472a-854d-c2cd5f7fcee8/P4044.mp3\" expression=\"full\" duration=\"1309\" fileSize=\"20945126\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cee8/330162ce-2c4b-472a-854d-c2cd5f7fcee8/P4044.mp4\" expression=\"full\" duration=\"1309\" fileSize=\"22824877\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cee8/330162ce-2c4b-472a-854d-c2cd5f7fcee8/P4044_high.mp4\" expression=\"full\" duration=\"1309\" fileSize=\"57979899\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cee8/330162ce-2c4b-472a-854d-c2cd5f7fcee8/P4044_mid.mp4\" expression=\"full\" duration=\"1309\" fileSize=\"37048142\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4044.mp4\" expression=\"full\" duration=\"1309\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Gain visibility into your apps with Azure Application Insights</title>\n    <description><![CDATA[In the world of constantly evolving apps and continuous deployments, knowing what is happening with your app and users can make or break your customer experience. You want to proactively detect issues as they occur and fix them, before they start affecting your users. Application Insights, an intelligent Application Performance Monitoring service, provides instant analytics over your application logs and telemetry. It includes fast, easy, and non-intrusive analytics tools to interactively diagnose problems and answer challenging questions. It also integrates seamlessly with your existing DevOps workflows. For instance, you can surface performance data in Visual Studio, link to releases and work items in Visual Studio Team Services, and access telemetry in Azure Monitor and Operations Management Suite (OMS). Join us to experience the latest capabilities through a live demo and learn about our strategy and roadmap. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:4ea00b7c8c1e4e739e6aa76d015a3c33\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4043</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4043</link>\n    <itunes:summary>In the world of constantly evolving apps and continuous deployments, knowing what is happening with your app and users can make or break your customer experience. You want to proactively detect issues as they occur and fix them, before they start affecting your users. Application Insights, an intelligent Application Performance Monitoring service, provides instant analytics over your application logs and telemetry. It includes fast, easy, and non-intrusive analytics tools to interactively diagnose problems and answer challenging questions. It also integrates seamlessly with your existing DevOps workflows. For instance, you can surface performance data in Visual Studio, link to releases and work items in Visual Studio Team Services, and access telemetry in Azure Monitor and Operations Management Suite (OMS). Join us to experience the latest capabilities through a live demo and learn about our strategy and roadmap.</itunes:summary>\n    <itunes:duration>1532</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4043</guid>\n    <dc:creator>Rahul Bagaria</dc:creator>\n    <category>application+insights</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/a031/0751ee94-27c2-4738-a18c-96b12463a031/P4043_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a031/0751ee94-27c2-4738-a18c-96b12463a031/P4043_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a031/0751ee94-27c2-4738-a18c-96b12463a031/P4043_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a031/0751ee94-27c2-4738-a18c-96b12463a031/P4043.mp3\" expression=\"full\" duration=\"1532\" fileSize=\"24520545\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a031/0751ee94-27c2-4738-a18c-96b12463a031/P4043.mp4\" expression=\"full\" duration=\"1532\" fileSize=\"34776743\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a031/0751ee94-27c2-4738-a18c-96b12463a031/P4043_high.mp4\" expression=\"full\" duration=\"1532\" fileSize=\"152259741\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a031/0751ee94-27c2-4738-a18c-96b12463a031/P4043_mid.mp4\" expression=\"full\" duration=\"1532\" fileSize=\"99190072\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4043.mp4\" expression=\"full\" duration=\"1532\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Smart buildings: Connecting Buildings to the Cloud</title>\n    <description><![CDATA[A technical overview of Microsoft’s own use of the Azure Gateway SDK, Azure IoT Hub, Stream Analytics, SQL databases, Power BI, and Microsoft Dynamics 365 Field Services to monitor building equipment (HVAC, Power Meters, etc.) on the Redmond campus and send this data into IoT Hub where it is analyzed and presented to our facility management organization to detect failures, optimize equipment functionality, and manage work orders. In this talk we discuss Microsoft’s experience in using this data to manage our own campus equipment live in Microsoft building 19. After this overview, we detail the architecture of the gateway solution (built using the Azure Gateway SDK), including how the gateway talks to legacy building equipment using the BACnet protocol, converts this information into a JSON payload, and then sends this information to IoT Hub and the IoT suite for further processing. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:bf00f8d24f384a8799d6a76d015a3bec\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4041</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4041</link>\n    <itunes:summary>A technical overview of Microsoft’s own use of the Azure Gateway SDK, Azure IoT Hub, Stream Analytics, SQL databases, Power BI, and Microsoft Dynamics 365 Field Services to monitor building equipment (HVAC, Power Meters, etc.) on the Redmond campus and send this data into IoT Hub where it is analyzed and presented to our facility management organization to detect failures, optimize equipment functionality, and manage work orders. In this talk we discuss Microsoft’s experience in using this data to manage our own campus equipment live in Microsoft building 19. After this overview, we detail the architecture of the gateway solution (built using the Azure Gateway SDK), including how the gateway talks to legacy building equipment using the BACnet protocol, converts this information into a JSON payload, and then sends this information to IoT Hub and the IoT suite for further processing.</itunes:summary>\n    <itunes:duration>1604</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4041</guid>\n    <dc:creator>Chris Segura</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/4cfe/2daaf613-be59-4bde-83d6-be58fdb54cfe/P4041_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4cfe/2daaf613-be59-4bde-83d6-be58fdb54cfe/P4041_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4cfe/2daaf613-be59-4bde-83d6-be58fdb54cfe/P4041_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4cfe/2daaf613-be59-4bde-83d6-be58fdb54cfe/P4041.mp3\" expression=\"full\" duration=\"1604\" fileSize=\"25673418\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4cfe/2daaf613-be59-4bde-83d6-be58fdb54cfe/P4041.mp4\" expression=\"full\" duration=\"1604\" fileSize=\"38462335\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4cfe/2daaf613-be59-4bde-83d6-be58fdb54cfe/P4041_high.mp4\" expression=\"full\" duration=\"1604\" fileSize=\"176503460\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4cfe/2daaf613-be59-4bde-83d6-be58fdb54cfe/P4041_mid.mp4\" expression=\"full\" duration=\"1604\" fileSize=\"116196836\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4041.mp4\" expression=\"full\" duration=\"1604\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>PowerApps, Flow and extending them using Azure pro developer tools</title>\n    <description><![CDATA[PowerApps and Microsoft Flow make it easy to build rich business applications that work across mobile and web and quickly automate workflows without writing a single line of code. Join this session to learn how you can easily build PowerApps and Flow connecting to various data sources, and how to extend your app by adding custom business logic using Azure Functions as custom APIs. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:411409c98b5b49f794a9a76d015a3b64\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4039</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4039</link>\n    <itunes:summary>PowerApps and Microsoft Flow make it easy to build rich business applications that work across mobile and web and quickly automate workflows without writing a single line of code. Join this session to learn how you can easily build PowerApps and Flow connecting to various data sources, and how to extend your app by adding custom business logic using Azure Functions as custom APIs.</itunes:summary>\n    <itunes:duration>2502</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4039</guid>\n    <dc:creator>Stephen Siciliano, Archana Nair</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/95b7/605621db-b4a2-4b7c-8cb0-496abf8295b7/P4039_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/95b7/605621db-b4a2-4b7c-8cb0-496abf8295b7/P4039_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/95b7/605621db-b4a2-4b7c-8cb0-496abf8295b7/P4039_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/95b7/605621db-b4a2-4b7c-8cb0-496abf8295b7/P4039.mp3\" expression=\"full\" duration=\"2502\" fileSize=\"40036170\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/95b7/605621db-b4a2-4b7c-8cb0-496abf8295b7/P4039.mp4\" expression=\"full\" duration=\"2502\" fileSize=\"46256127\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/95b7/605621db-b4a2-4b7c-8cb0-496abf8295b7/P4039_mid.mp4\" expression=\"full\" duration=\"2502\" fileSize=\"101854276\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4039.mp4\" expression=\"full\" duration=\"2502\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Using StorSimple data with services in Azure (Media Services, HDInsights, AzureML, etc.)</title>\n    <description><![CDATA[StorSimple provides the benefits of on-premises storage with seamless and secure extension of storage into the cloud. Microsoft recently introduced new data management services that enable using the data (sent up to Azure) with Azure Media Services, Azure HDInsight, AzureML, Azure Search, etc. Developers and IT professionals can build end-to-end scenarios, get insights on stale and orphaned data, and more within minutes. Data can be searched and analyzed without impact on production.&nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1231853cee46467ebd23a76d015a3afd\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4038</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4038</link>\n    <itunes:summary>StorSimple provides the benefits of on-premises storage with seamless and secure extension of storage into the cloud. Microsoft recently introduced new data management services that enable using the data (sent up to Azure) with Azure Media Services, Azure HDInsight, AzureML, Azure Search, etc. Developers and IT professionals can build end-to-end scenarios, get insights on stale and orphaned data, and more within minutes. Data can be searched and analyzed without impact on production. </itunes:summary>\n    <itunes:duration>1531</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4038</guid>\n    <dc:creator>Vivek N Darera</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/031e/b35c97ec-b68c-4498-b791-2ab48c8a031e/P4038_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/031e/b35c97ec-b68c-4498-b791-2ab48c8a031e/P4038_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/031e/b35c97ec-b68c-4498-b791-2ab48c8a031e/P4038_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/031e/b35c97ec-b68c-4498-b791-2ab48c8a031e/P4038.mp3\" expression=\"full\" duration=\"1531\" fileSize=\"24497994\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/031e/b35c97ec-b68c-4498-b791-2ab48c8a031e/P4038.mp4\" expression=\"full\" duration=\"1531\" fileSize=\"26641724\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/031e/b35c97ec-b68c-4498-b791-2ab48c8a031e/P4038_mid.mp4\" expression=\"full\" duration=\"1531\" fileSize=\"46360112\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4038.mp4\" expression=\"full\" duration=\"1531\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>What’s new in the Azure Portal</title>\n    <description><![CDATA[Come and learn how Azure Portal can help you manage your IaaS stack and how to make the most of your DevOps workflows. Learn about newly-added services and the roadmap for user experiences in Microsoft Azure. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:c17accab401f4586b2cea76d015a3aa9\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4036</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4036</link>\n    <itunes:summary>Come and learn how Azure Portal can help you manage your IaaS stack and how to make the most of your DevOps workflows. Learn about newly-added services and the roadmap for user experiences in Microsoft Azure.</itunes:summary>\n    <itunes:duration>2624</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4036</guid>\n    <dc:creator>Leon Welicki</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/c2de/542325f8-9793-481f-8a4b-c830b849c2de/P4036_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c2de/542325f8-9793-481f-8a4b-c830b849c2de/P4036_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c2de/542325f8-9793-481f-8a4b-c830b849c2de/P4036_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c2de/542325f8-9793-481f-8a4b-c830b849c2de/P4036.mp3\" expression=\"full\" duration=\"2624\" fileSize=\"41988810\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c2de/542325f8-9793-481f-8a4b-c830b849c2de/P4036.mp4\" expression=\"full\" duration=\"2624\" fileSize=\"75171293\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c2de/542325f8-9793-481f-8a4b-c830b849c2de/P4036_high.mp4\" expression=\"full\" duration=\"2624\" fileSize=\"432488724\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c2de/542325f8-9793-481f-8a4b-c830b849c2de/P4036_mid.mp4\" expression=\"full\" duration=\"2624\" fileSize=\"266802182\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4036.mp4\" expression=\"full\" duration=\"2624\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Agile app development with Azure API Management</title>\n    <description><![CDATA[Customers use Azure API Management to catalog, publish, protect, and monitor their APIs; managing their API lifecycle from design to deprecation. In this fast-paced, hands-on presentation we demonstrate how API Management can be used to accelerate your app development. We show how you can decouple front-end and back-end development and allow both sides to work at their own speed. Learn how Azure API Management helps API developers design and evolve an API; easily implement it using a microservices approach; ensure app developers stay abreast of API changes and upgrade to new releases when ready; and enable operators to secure, protect and monitor the APIs in production. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:9b06ffec68e34047805ca76d015a3a7a\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4034</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4034</link>\n    <itunes:summary>Customers use Azure API Management to catalog, publish, protect, and monitor their APIs; managing their API lifecycle from design to deprecation. In this fast-paced, hands-on presentation we demonstrate how API Management can be used to accelerate your app development. We show how you can decouple front-end and back-end development and allow both sides to work at their own speed. Learn how Azure API Management helps API developers design and evolve an API; easily implement it using a microservices approach; ensure app developers stay abreast of API changes and upgrade to new releases when ready; and enable operators to secure, protect and monitor the APIs in production.</itunes:summary>\n    <itunes:duration>1896</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4034</guid>\n    <dc:creator>Darrel Miller</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/8792/ef7d08ee-248e-46cd-9641-d457e3c38792/P4034_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8792/ef7d08ee-248e-46cd-9641-d457e3c38792/P4034_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8792/ef7d08ee-248e-46cd-9641-d457e3c38792/P4034_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8792/ef7d08ee-248e-46cd-9641-d457e3c38792/P4034.mp3\" expression=\"full\" duration=\"1896\" fileSize=\"30352458\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8792/ef7d08ee-248e-46cd-9641-d457e3c38792/P4034.mp4\" expression=\"full\" duration=\"1896\" fileSize=\"32295797\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8792/ef7d08ee-248e-46cd-9641-d457e3c38792/P4034_high.mp4\" expression=\"full\" duration=\"1896\" fileSize=\"80738083\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8792/ef7d08ee-248e-46cd-9641-d457e3c38792/P4034_mid.mp4\" expression=\"full\" duration=\"1896\" fileSize=\"63058523\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4034.mp4\" expression=\"full\" duration=\"1896\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Securing web applications using Web Application Firewall</title>\n    <description><![CDATA[Application Gateway is a layer 7 load balancer providing Application Delivery Controller as a service in Microsoft Azure. It provides various advanced load balancing choices like SSL termination, session affinity, URL path-based routing and multi-site hosting. Application Gateway also offers web application firewall (WAF) capability to help protect your applications from common web exploits as identified by OWASP (Open Web Application Security Project) top 10 web vulnerabilities. Learn how to protect your applications from the increasingly prevalent web vulnerabilities without modifying your application code. We discuss available protection features, monitoring, and eliminating false positives from your application deployment. We also show how to integrate WAF with Microsoft Azure Security Center and Azure Monitor for continuous monitoring, alerting, and health dashboard for all of your web applications in Azure. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1a7aa1bdad174deba1f6a76d015a3a3d\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4033</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4033</link>\n    <itunes:summary>Application Gateway is a layer 7 load balancer providing Application Delivery Controller as a service in Microsoft Azure. It provides various advanced load balancing choices like SSL termination, session affinity, URL path-based routing and multi-site hosting. Application Gateway also offers web application firewall (WAF) capability to help protect your applications from common web exploits as identified by OWASP (Open Web Application Security Project) top 10 web vulnerabilities. Learn how to protect your applications from the increasingly prevalent web vulnerabilities without modifying your application code. We discuss available protection features, monitoring, and eliminating false positives from your application deployment. We also show how to integrate WAF with Microsoft Azure Security Center and Azure Monitor for continuous monitoring, alerting, and health dashboard for all of your web applications in Azure.</itunes:summary>\n    <itunes:duration>1512</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4033</guid>\n    <dc:creator>Amit Srivastava</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/ea5c/67451101-55d0-451e-88cf-c8a0682dea5c/P4033_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/ea5c/67451101-55d0-451e-88cf-c8a0682dea5c/P4033_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/ea5c/67451101-55d0-451e-88cf-c8a0682dea5c/P4033_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ea5c/67451101-55d0-451e-88cf-c8a0682dea5c/P4033.mp3\" expression=\"full\" duration=\"1512\" fileSize=\"24199626\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ea5c/67451101-55d0-451e-88cf-c8a0682dea5c/P4033.mp4\" expression=\"full\" duration=\"1512\" fileSize=\"29939070\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ea5c/67451101-55d0-451e-88cf-c8a0682dea5c/P4033_high.mp4\" expression=\"full\" duration=\"1512\" fileSize=\"142255376\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ea5c/67451101-55d0-451e-88cf-c8a0682dea5c/P4033_mid.mp4\" expression=\"full\" duration=\"1512\" fileSize=\"90616987\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4033.mp4\" expression=\"full\" duration=\"1512\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>System performance is a feature: Understanding system health through telemetry (a continuation of real-time sentiment built on the Azure IoT Stack)</title>\n    <description><![CDATA[You just recovered from a major site outage. Luckily, the impact was low – but what you think caused the problem is still just a theory. Learn how Microsoft Pulse, a cloud-based sentiment collection platform, with the help of the Azure Customer Advisory Team (Azure CAT) introduced structured logging and telemetry best practices to gain insight into system performance and health. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:73fa98d7197d4b838928a76d015a3a0a\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4032</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4032</link>\n    <itunes:summary>You just recovered from a major site outage. Luckily, the impact was low – but what you think caused the problem is still just a theory. Learn how Microsoft Pulse, a cloud-based sentiment collection platform, with the help of the Azure Customer Advisory Team (Azure CAT) introduced structured logging and telemetry best practices to gain insight into system performance and health.</itunes:summary>\n    <itunes:duration>965</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4032</guid>\n    <dc:creator>Joel Narwold</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/8b97/2fdeb6d5-4e80-4bbf-8305-6e0a2eec8b97/P4032_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8b97/2fdeb6d5-4e80-4bbf-8305-6e0a2eec8b97/P4032_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8b97/2fdeb6d5-4e80-4bbf-8305-6e0a2eec8b97/P4032_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8b97/2fdeb6d5-4e80-4bbf-8305-6e0a2eec8b97/P4032.mp3\" expression=\"full\" duration=\"965\" fileSize=\"15442693\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8b97/2fdeb6d5-4e80-4bbf-8305-6e0a2eec8b97/P4032.mp4\" expression=\"full\" duration=\"965\" fileSize=\"17755718\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8b97/2fdeb6d5-4e80-4bbf-8305-6e0a2eec8b97/P4032_high.mp4\" expression=\"full\" duration=\"965\" fileSize=\"55400348\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8b97/2fdeb6d5-4e80-4bbf-8305-6e0a2eec8b97/P4032_mid.mp4\" expression=\"full\" duration=\"965\" fileSize=\"32254765\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4032.mp4\" expression=\"full\" duration=\"965\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Azure Active Directory v2 endpoint and MSAL: What&#39;s new</title>\n    <description><![CDATA[Cloud and mobile applications have different sign-in requirements than traditional on-premises applications. The Microsoft Azure Active Directory v2 endpoint provides a simple solution to sign in Microsoft personal accounts and Azure Active Directory work and school accounts. In this session, learn what is new with the v2 endpoint and with the Microsoft Authentication Library (MSAL). Discussion include when to use the Azure AD v1 endpoint and the Active Directory Authentication Library (ADAL), versus the v2 endpoint and MSAL. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:4874c59749a149d7b98ca76d015a39b5\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4031</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4031</link>\n    <itunes:summary>Cloud and mobile applications have different sign-in requirements than traditional on-premises applications. The Microsoft Azure Active Directory v2 endpoint provides a simple solution to sign in Microsoft personal accounts and Azure Active Directory work and school accounts. In this session, learn what is new with the v2 endpoint and with the Microsoft Authentication Library (MSAL). Discussion include when to use the Azure AD v1 endpoint and the Active Directory Authentication Library (ADAL), versus the v2 endpoint and MSAL.</itunes:summary>\n    <itunes:duration>2144</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4031</guid>\n    <dc:creator>Stuart Kwan</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/5cd2/0cda71e4-cf75-4351-89f6-fb1651fc5cd2/P4031_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/5cd2/0cda71e4-cf75-4351-89f6-fb1651fc5cd2/P4031_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/5cd2/0cda71e4-cf75-4351-89f6-fb1651fc5cd2/P4031_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5cd2/0cda71e4-cf75-4351-89f6-fb1651fc5cd2/P4031.mp3\" expression=\"full\" duration=\"2144\" fileSize=\"34319562\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5cd2/0cda71e4-cf75-4351-89f6-fb1651fc5cd2/P4031.mp4\" expression=\"full\" duration=\"2144\" fileSize=\"59948575\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5cd2/0cda71e4-cf75-4351-89f6-fb1651fc5cd2/P4031_high.mp4\" expression=\"full\" duration=\"2144\" fileSize=\"369139777\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5cd2/0cda71e4-cf75-4351-89f6-fb1651fc5cd2/P4031_mid.mp4\" expression=\"full\" duration=\"2144\" fileSize=\"222137186\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4031.mp4\" expression=\"full\" duration=\"2144\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Leverage Azure instance metadata for instance bootstrap and runtime</title>\n    <description><![CDATA[Bootstrapping your applications in Microsoft Azure sometimes requires more than just running a VM and starting your application via script/extension. At times your application would need to know which instance certain services need to run and the current size of VM. How do you know information about the location of the VM when you get a support call for your application? Azure Instance Metadata provides information like VMName, location, IP address, etc. for a running VM on Azure via a REST endpoint.&nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:6702a002134c4ae48b6ea76d015a398b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4029</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4029</link>\n    <itunes:summary>Bootstrapping your applications in Microsoft Azure sometimes requires more than just running a VM and starting your application via script/extension. At times your application would need to know which instance certain services need to run and the current size of VM. How do you know information about the location of the VM when you get a support call for your application? Azure Instance Metadata provides information like VMName, location, IP address, etc. for a running VM on Azure via a REST endpoint. </itunes:summary>\n    <itunes:duration>1030</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4029</guid>\n    <dc:creator>Hariharan Jayaraman</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/64cf/11ba33ce-b2eb-42d9-afc0-f24b59c864cf/P4029_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/64cf/11ba33ce-b2eb-42d9-afc0-f24b59c864cf/P4029_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/64cf/11ba33ce-b2eb-42d9-afc0-f24b59c864cf/P4029_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/64cf/11ba33ce-b2eb-42d9-afc0-f24b59c864cf/P4029.mp3\" expression=\"full\" duration=\"1030\" fileSize=\"16490826\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/64cf/11ba33ce-b2eb-42d9-afc0-f24b59c864cf/P4029.mp4\" expression=\"full\" duration=\"1030\" fileSize=\"20263850\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/64cf/11ba33ce-b2eb-42d9-afc0-f24b59c864cf/P4029_mid.mp4\" expression=\"full\" duration=\"1030\" fileSize=\"46095037\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4029.mp4\" expression=\"full\" duration=\"1030\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>360&#176; monitoring for your Microsoft Azure apps</title>\n    <description><![CDATA[Learn how our largest customers have used Azure Monitor to design end-to-end monitoring for their Azure applications. Join us to learn how to monitor resource utilization using Azure Monitor metrics, and monitor changes to your Azure resources using the Azure Monitor activity log. Understand how you can track the health of Azure platform using resource health, and get alerts from Azure service notifications. We show you how to integrate Azure Monitor with your insights, APM, and alerting products to get you started quickly. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:0d3af4105eb24d478f44a76d015a3937\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4028</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4028</link>\n    <itunes:summary>Learn how our largest customers have used Azure Monitor to design end-to-end monitoring for their Azure applications. Join us to learn how to monitor resource utilization using Azure Monitor metrics, and monitor changes to your Azure resources using the Azure Monitor activity log. Understand how you can track the health of Azure platform using resource health, and get alerts from Azure service notifications. We show you how to integrate Azure Monitor with your insights, APM, and alerting products to get you started quickly.</itunes:summary>\n    <itunes:duration>1914</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4028</guid>\n    <dc:creator>Dushyant Gill, John Kemnetz, Oren Rosenbloom</dc:creator>\n\t\t<media:thumbnail url=\"https://f.ch9.ms/thumbnail/3b09e31f-73f8-4d5b-a09e-09f711dd04c4.png\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0ec9/4dc54bff-455f-4d40-b27b-569d76de0ec9/P4028.mp3\" expression=\"full\" duration=\"1914\" fileSize=\"30635466\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0ec9/4dc54bff-455f-4d40-b27b-569d76de0ec9/P4028.mp4\" expression=\"full\" duration=\"1914\" fileSize=\"56890343\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0ec9/4dc54bff-455f-4d40-b27b-569d76de0ec9/P4028_high.mp4\" expression=\"full\" duration=\"1914\" fileSize=\"372298715\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0ec9/4dc54bff-455f-4d40-b27b-569d76de0ec9/P4028_mid.mp4\" expression=\"full\" duration=\"1914\" fileSize=\"229381396\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4028.mp4\" expression=\"full\" duration=\"1914\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Optimize Your Azure Marketplace Offering</title>\n    <description><![CDATA[Wondering how you can increase your lead gen? Are you fully leveraging the new Seller Insights report, publishing portal updates, Test Drives and Quick Start templates. Don’t miss out. Learn how you can optimize your offerings and improve customer engagement by using the new features available in Azure Marketplace. Finally, learn how you can take your application and publish it as a product offering on Azure Marketplace. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:d1ecb33f4d61418f84dba76d015a38c1\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4026</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4026</link>\n    <itunes:summary>Wondering how you can increase your lead gen? Are you fully leveraging the new Seller Insights report, publishing portal updates, Test Drives and Quick Start templates. Don’t miss out. Learn how you can optimize your offerings and improve customer engagement by using the new features available in Azure Marketplace. Finally, learn how you can take your application and publish it as a product offering on Azure Marketplace.</itunes:summary>\n    <itunes:duration>2234</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4026</guid>\n    <dc:creator>Dina Vaccari</dc:creator>\n    <category>application+insights</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/299a/ad4ee2a1-214f-44a5-ae3d-654d7815299a/P4026_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/299a/ad4ee2a1-214f-44a5-ae3d-654d7815299a/P4026_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/299a/ad4ee2a1-214f-44a5-ae3d-654d7815299a/P4026_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/299a/ad4ee2a1-214f-44a5-ae3d-654d7815299a/P4026.mp3\" expression=\"full\" duration=\"2234\" fileSize=\"35757108\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/299a/ad4ee2a1-214f-44a5-ae3d-654d7815299a/P4026.mp4\" expression=\"full\" duration=\"2234\" fileSize=\"49550077\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/299a/ad4ee2a1-214f-44a5-ae3d-654d7815299a/P4026_high.mp4\" expression=\"full\" duration=\"2234\" fileSize=\"227865683\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/299a/ad4ee2a1-214f-44a5-ae3d-654d7815299a/P4026_mid.mp4\" expression=\"full\" duration=\"2234\" fileSize=\"145644478\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4026.mp4\" expression=\"full\" duration=\"2234\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Introducing Azure Network Watcher</title>\n    <description><![CDATA[Explore solution, architectural, and programmatic experiences in building and enhancing network monitoring capabilities in Microsoft Azure. Use common open source tools with a combination of Azure services to build powerful solutions. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:8adede89bc134025956ca76d015a3830\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4024</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4024</link>\n    <itunes:summary>Explore solution, architectural, and programmatic experiences in building and enhancing network monitoring capabilities in Microsoft Azure. Use common open source tools with a combination of Azure services to build powerful solutions.</itunes:summary>\n    <itunes:duration>1422</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4024</guid>\n    <dc:creator>Abhishek Pathak, Matt Reat</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/9ed9/b1e1278a-683e-413a-8ad8-c01504429ed9/P4024_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/9ed9/b1e1278a-683e-413a-8ad8-c01504429ed9/P4024_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/9ed9/b1e1278a-683e-413a-8ad8-c01504429ed9/P4024_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9ed9/b1e1278a-683e-413a-8ad8-c01504429ed9/P4024.mp3\" expression=\"full\" duration=\"1422\" fileSize=\"22761930\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9ed9/b1e1278a-683e-413a-8ad8-c01504429ed9/P4024.mp4\" expression=\"full\" duration=\"1422\" fileSize=\"31313858\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9ed9/b1e1278a-683e-413a-8ad8-c01504429ed9/P4024_high.mp4\" expression=\"full\" duration=\"1422\" fileSize=\"112532277\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9ed9/b1e1278a-683e-413a-8ad8-c01504429ed9/P4024_mid.mp4\" expression=\"full\" duration=\"1422\" fileSize=\"78634677\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4024.mp4\" expression=\"full\" duration=\"1422\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Enterprise integration and hybrid</title>\n    <description><![CDATA[The cloud is changing the way we build and run software, but not all software will be in the cloud or in a single cloud. This session shows how Azure integration services enable you to build new integrated solutions in the cloud that leverage on-premises and cross cloud resources. LogicApps, API Management, and Service Bus provide you with the tools you need integrate your existing applications and services and give you the scale and efficiency of Azure to run and manage them. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:5939f2a05cfd4e379faba76d015a37c9\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4023</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4023</link>\n    <itunes:summary>The cloud is changing the way we build and run software, but not all software will be in the cloud or in a single cloud. This session shows how Azure integration services enable you to build new integrated solutions in the cloud that leverage on-premises and cross cloud resources. LogicApps, API Management, and Service Bus provide you with the tools you need integrate your existing applications and services and give you the scale and efficiency of Azure to run and manage them.</itunes:summary>\n    <itunes:duration>3256</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4023</guid>\n    <dc:creator>Kevin Lam, Jon Fancey</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/adc4/86b7af81-1c5e-4e2b-babd-d61014cdadc4/P4023_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/adc4/86b7af81-1c5e-4e2b-babd-d61014cdadc4/P4023_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/adc4/86b7af81-1c5e-4e2b-babd-d61014cdadc4/P4023_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/adc4/86b7af81-1c5e-4e2b-babd-d61014cdadc4/P4023.mp3\" expression=\"full\" duration=\"3256\" fileSize=\"52109514\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/adc4/86b7af81-1c5e-4e2b-babd-d61014cdadc4/P4023.mp4\" expression=\"full\" duration=\"3256\" fileSize=\"77327259\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/adc4/86b7af81-1c5e-4e2b-babd-d61014cdadc4/P4023_high.mp4\" expression=\"full\" duration=\"3256\" fileSize=\"413293597\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/adc4/86b7af81-1c5e-4e2b-babd-d61014cdadc4/P4023_mid.mp4\" expression=\"full\" duration=\"3256\" fileSize=\"257577626\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4023.mp4\" expression=\"full\" duration=\"3256\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>OSS just made me PaaS out</title>\n    <description><![CDATA[Messaging is a key component of any cloud application. Building on the success of open protocols such as AMQP we have continued the open source approach with our clients as well. Find out how OSS makes an impact on PaaS and gives customers a stake in how the service goes to market. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:ee0a5979843746509cd2a76d015a378c\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4021</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4021</link>\n    <itunes:summary>Messaging is a key component of any cloud application. Building on the success of open protocols such as AMQP we have continued the open source approach with our clients as well. Find out how OSS makes an impact on PaaS and gives customers a stake in how the service goes to market.</itunes:summary>\n    <itunes:duration>499</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4021</guid>\n    <dc:creator>Justin Conway</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/8c01/a33ca7bb-68c5-4444-90bc-c21962888c01/P4021_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8c01/a33ca7bb-68c5-4444-90bc-c21962888c01/P4021_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8c01/a33ca7bb-68c5-4444-90bc-c21962888c01/P4021_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8c01/a33ca7bb-68c5-4444-90bc-c21962888c01/P4021.mp3\" expression=\"full\" duration=\"499\" fileSize=\"8000970\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8c01/a33ca7bb-68c5-4444-90bc-c21962888c01/P4021.mp4\" expression=\"full\" duration=\"499\" fileSize=\"11654673\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8c01/a33ca7bb-68c5-4444-90bc-c21962888c01/P4021_high.mp4\" expression=\"full\" duration=\"499\" fileSize=\"40189422\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8c01/a33ca7bb-68c5-4444-90bc-c21962888c01/P4021_mid.mp4\" expression=\"full\" duration=\"499\" fileSize=\"26253184\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4021.mp4\" expression=\"full\" duration=\"499\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>ASP.NET Core + Azure Service Fabric</title>\n    <description><![CDATA[Learn how to use ASP.NET Core in Azure Service Fabric to host scalable, highly-available web applications and HTTP services. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:44fa5417649f44a98777a76d015a3762\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4020</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4020</link>\n    <itunes:summary>Learn how to use ASP.NET Core in Azure Service Fabric to host scalable, highly-available web applications and HTTP services.</itunes:summary>\n    <itunes:duration>894</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4020</guid>\n    <dc:creator>Vaclav Turecek</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/5f83/40ac6850-8182-497d-b87b-2f13a1ae5f83/P4020_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/5f83/40ac6850-8182-497d-b87b-2f13a1ae5f83/P4020_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/5f83/40ac6850-8182-497d-b87b-2f13a1ae5f83/P4020_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5f83/40ac6850-8182-497d-b87b-2f13a1ae5f83/P4020.mp3\" expression=\"full\" duration=\"894\" fileSize=\"14306634\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5f83/40ac6850-8182-497d-b87b-2f13a1ae5f83/P4020.mp4\" expression=\"full\" duration=\"894\" fileSize=\"20801776\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5f83/40ac6850-8182-497d-b87b-2f13a1ae5f83/P4020_high.mp4\" expression=\"full\" duration=\"894\" fileSize=\"90139879\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5f83/40ac6850-8182-497d-b87b-2f13a1ae5f83/P4020_mid.mp4\" expression=\"full\" duration=\"894\" fileSize=\"57971037\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4020.mp4\" expression=\"full\" duration=\"894\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Securing your app data with Microsoft SQL Server 2017</title>\n    <description><![CDATA[Join us for an overview of strategy and best practices to build secure applications using SQL Server. SQL Server offers a versatile toolset of security capabilities, which enable you to protect sensitive data and meet stringent compliance requirements. You’ll leave with an understanding of how these capabilities fit together to protect your application as a whole, including the new security enhancements available in the latest version of SQL Server. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:7a8c7dbc212f4ec7a79da76d015a3733\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4018</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4018</link>\n    <itunes:summary>Join us for an overview of strategy and best practices to build secure applications using SQL Server. SQL Server offers a versatile toolset of security capabilities, which enable you to protect sensitive data and meet stringent compliance requirements. You’ll leave with an understanding of how these capabilities fit together to protect your application as a whole, including the new security enhancements available in the latest version of SQL Server.</itunes:summary>\n    <itunes:duration>1053</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4018</guid>\n    <dc:creator>Tommy Mullaney</dc:creator>\n    <category>sql+server</category>\n    <category>security</category>\n    <category>data-driven+apps</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/070e/7a8187a9-ecbb-4186-b5a4-377e3a21070e/P4018_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/070e/7a8187a9-ecbb-4186-b5a4-377e3a21070e/P4018_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/070e/7a8187a9-ecbb-4186-b5a4-377e3a21070e/P4018_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/070e/7a8187a9-ecbb-4186-b5a4-377e3a21070e/P4018.mp3\" expression=\"full\" duration=\"1053\" fileSize=\"16860898\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/070e/7a8187a9-ecbb-4186-b5a4-377e3a21070e/P4018.mp4\" expression=\"full\" duration=\"1053\" fileSize=\"34175677\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/070e/7a8187a9-ecbb-4186-b5a4-377e3a21070e/P4018_high.mp4\" expression=\"full\" duration=\"1053\" fileSize=\"230336273\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/070e/7a8187a9-ecbb-4186-b5a4-377e3a21070e/P4018_mid.mp4\" expression=\"full\" duration=\"1053\" fileSize=\"135813583\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4018.mp4\" expression=\"full\" duration=\"1053\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Lambda Architecture for Connected Car Fleet Management</title>\n    <description><![CDATA[IoT scenarios of moving devices often require extensive geospatial processing capabilities. In this presentation, we show how you can use Azure Stream Analytics and Azure Data Lake/U-SQL to build geo-spatial cold/hot path analysis (lambda architecture) for connected cars. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:5a24836ed76c4c41aaa1a76d015a36d1\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4017</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4017</link>\n    <itunes:summary>IoT scenarios of moving devices often require extensive geospatial processing capabilities. In this presentation, we show how you can use Azure Stream Analytics and Azure Data Lake/U-SQL to build geo-spatial cold/hot path analysis (lambda architecture) for connected cars.</itunes:summary>\n    <itunes:duration>1387</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4017</guid>\n    <dc:creator>Michael Rys, Sam Chandrashekhar</dc:creator>\n    <category>azure</category>\n    <category>data+lake</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/0b71/b6f8e6e0-7468-4214-971f-7c5c89dd0b71/P4017_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0b71/b6f8e6e0-7468-4214-971f-7c5c89dd0b71/P4017_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0b71/b6f8e6e0-7468-4214-971f-7c5c89dd0b71/P4017_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0b71/b6f8e6e0-7468-4214-971f-7c5c89dd0b71/P4017.mp3\" expression=\"full\" duration=\"1387\" fileSize=\"22203871\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0b71/b6f8e6e0-7468-4214-971f-7c5c89dd0b71/P4017.mp4\" expression=\"full\" duration=\"1387\" fileSize=\"39690477\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0b71/b6f8e6e0-7468-4214-971f-7c5c89dd0b71/P4017_high.mp4\" expression=\"full\" duration=\"1387\" fileSize=\"220207872\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0b71/b6f8e6e0-7468-4214-971f-7c5c89dd0b71/P4017_mid.mp4\" expression=\"full\" duration=\"1387\" fileSize=\"136423752\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4017.mp4\" expression=\"full\" duration=\"1387\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Demystifying Cloud Data Services for an App Developer</title>\n    <description><![CDATA[<p>We've learned about all of the different services that are available in Azure for storage and processing, but when it comes to architecting our solution, it's always a question of which service fits our need best. In this on-demand session, we break down the features of each of the different data services in Azure and answer the question &quot;When to use what.&quot; We highlight the advantages each service has and talk through some best practices for designing your application.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:97a82e9b4b8740e99dcfa76d015a363f\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4016</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4016</link>\n    <itunes:summary>We&#39;ve learned about all of the different services that are available in Azure for storage and processing, but when it comes to architecting our solution, it&#39;s always a question of which service fits our need best. In this on-demand session, we break down the features of each of the different data services in Azure and answer the question &amp;quot;When to use what.&amp;quot; We highlight the advantages each service has and talk through some best practices for designing your application. </itunes:summary>\n    <itunes:duration>2030</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4016</guid>\n    <dc:creator>Wee-Hyong Tok, Romit Girdhar</dc:creator>\n    <category>intelligent+app</category>\n    <category>data</category>\n    <category>analytics</category>\n\t\t<media:thumbnail url=\"https://f.ch9.ms/thumbnail/3534e062-1d36-4b24-9365-c6c46b701a83.png\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/08cceccb-a317-4f91-bcce-e4f9323cc2fc.png\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/edacd903-0246-4084-a41e-e80f98231359.png\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/dc4b/d489e8b7-c389-401c-8a39-74942905dc4b/P4016.mp3\" expression=\"full\" duration=\"2030\" fileSize=\"32489707\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/dc4b/d489e8b7-c389-401c-8a39-74942905dc4b/P4016.mp4\" expression=\"full\" duration=\"2030\" fileSize=\"70352672\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/dc4b/d489e8b7-c389-401c-8a39-74942905dc4b/P4016_high.mp4\" expression=\"full\" duration=\"2030\" fileSize=\"526131845\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/dc4b/d489e8b7-c389-401c-8a39-74942905dc4b/P4016_mid.mp4\" expression=\"full\" duration=\"2030\" fileSize=\"305584773\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4016.mp4\" expression=\"full\" duration=\"2030\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Evolving SQL workloads from software to SaaS: Data for devs immersion</title>\n    <description><![CDATA[In this modern era; applications must recover from user errors efficiently, must be optimized for transactional performance, provide real-time insights into app transactions, must be secure and complaint, and support seamless integration to cloud, hybrid scenarios and other data types/systems. These applications must also learn and adapt to deliver more powerful experiences using cloud-based data services, applications, and intelligence. In this session we use a scenario-based hands-on lab program (immersion), to offer you a cohesive and consistent experience to build modern on-premises/cloud based applications with intelligence. Build hack-free, high performance, scalable applications using Microsoft SQL Server, Microsoft ML and Azure data services. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:f25d2d800e49450898dca76d015a359b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4013</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4013</link>\n    <itunes:summary>In this modern era; applications must recover from user errors efficiently, must be optimized for transactional performance, provide real-time insights into app transactions, must be secure and complaint, and support seamless integration to cloud, hybrid scenarios and other data types/systems. These applications must also learn and adapt to deliver more powerful experiences using cloud-based data services, applications, and intelligence. In this session we use a scenario-based hands-on lab program (immersion), to offer you a cohesive and consistent experience to build modern on-premises/cloud based applications with intelligence. Build hack-free, high performance, scalable applications using Microsoft SQL Server, Microsoft ML and Azure data services.</itunes:summary>\n    <itunes:duration>1518</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4013</guid>\n    <dc:creator>Tara Shankar Jana</dc:creator>\n    <category>azure+sql+database</category>\n    <category>sql+server</category>\n    <category>data-driven+apps</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/8301/4f2271f3-352b-476b-8de7-cf9f8b8e8301/P4013_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8301/4f2271f3-352b-476b-8de7-cf9f8b8e8301/P4013_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8301/4f2271f3-352b-476b-8de7-cf9f8b8e8301/P4013_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8301/4f2271f3-352b-476b-8de7-cf9f8b8e8301/P4013.mp3\" expression=\"full\" duration=\"1518\" fileSize=\"24297103\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8301/4f2271f3-352b-476b-8de7-cf9f8b8e8301/P4013.mp4\" expression=\"full\" duration=\"1518\" fileSize=\"38916409\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8301/4f2271f3-352b-476b-8de7-cf9f8b8e8301/P4013_high.mp4\" expression=\"full\" duration=\"1518\" fileSize=\"163390530\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8301/4f2271f3-352b-476b-8de7-cf9f8b8e8301/P4013_mid.mp4\" expression=\"full\" duration=\"1518\" fileSize=\"108993446\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4013.mp4\" expression=\"full\" duration=\"1518\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Azure Cosmos DB: Build planet scale mobile apps in minutes</title>\n    <description><![CDATA[Coming soon <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:f87b5ead260242298ef4a76d015a3539\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4012</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4012</link>\n    <itunes:summary>Coming soon</itunes:summary>\n    <itunes:duration>981</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4012</guid>\n    <dc:creator>Kirill Gavrylyuk</dc:creator>\n    <category>azure</category>\n    <category>xamarin</category>\n    <category>nosql</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/7f9c/8e037e1f-693f-4348-a580-39e8ed3f7f9c/P4012_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/7f9c/8e037e1f-693f-4348-a580-39e8ed3f7f9c/P4012_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/7f9c/8e037e1f-693f-4348-a580-39e8ed3f7f9c/P4012_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7f9c/8e037e1f-693f-4348-a580-39e8ed3f7f9c/P4012.mp3\" expression=\"full\" duration=\"981\" fileSize=\"15705053\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7f9c/8e037e1f-693f-4348-a580-39e8ed3f7f9c/P4012.mp4\" expression=\"full\" duration=\"981\" fileSize=\"22490113\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7f9c/8e037e1f-693f-4348-a580-39e8ed3f7f9c/P4012_high.mp4\" expression=\"full\" duration=\"981\" fileSize=\"108044027\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7f9c/8e037e1f-693f-4348-a580-39e8ed3f7f9c/P4012_mid.mp4\" expression=\"full\" duration=\"981\" fileSize=\"70103062\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4012.mp4\" expression=\"full\" duration=\"981\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Azure Cosmos DB: API for MongoDB</title>\n    <description><![CDATA[<p>Azure Cosmos DB (formerly known as Azure DocumentDB) natively supports multiple APIs; one of which is the API for MongoDB. Use existing code, applications, drivers, and tools to work with Azure Cosmos DB. Benefit from the fully managed and scalable Azure database, while continuing to use familiar skills and tools for MongoDB. Come and watch this video to learn about the feature and how to migrate to this cosmic-scale database, Azure Cosmos DB.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:d2b002f083c548a3a444a76d015a34d6\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4011</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4011</link>\n    <itunes:summary>Azure Cosmos DB (formerly known as Azure DocumentDB) natively supports multiple APIs; one of which is the API for MongoDB. Use existing code, applications, drivers, and tools to work with Azure Cosmos DB. Benefit from the fully managed and scalable Azure database, while continuing to use familiar skills and tools for MongoDB. Come and watch this video to learn about the feature and how to migrate to this cosmic-scale database, Azure Cosmos DB. </itunes:summary>\n    <itunes:duration>695</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4011</guid>\n    <dc:creator>Andrew Hoh</dc:creator>\n    <category>azure</category>\n    <category>nosql</category>\n\t\t<media:thumbnail url=\"https://f.ch9.ms/thumbnail/2164bf4c-1010-4a08-9568-74419210c5b4.png\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/716fe4db-3009-4281-95a9-3ad0339a3d67.png\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/756d1194-5a14-4742-8a76-f01f9103a738.png\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d1d5/2808f6cf-b90e-4f32-964d-fc28e6b8d1d5/P4011.mp3\" expression=\"full\" duration=\"695\" fileSize=\"11123098\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d1d5/2808f6cf-b90e-4f32-964d-fc28e6b8d1d5/P4011.mp4\" expression=\"full\" duration=\"695\" fileSize=\"12757121\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d1d5/2808f6cf-b90e-4f32-964d-fc28e6b8d1d5/P4011_high.mp4\" expression=\"full\" duration=\"695\" fileSize=\"31191100\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d1d5/2808f6cf-b90e-4f32-964d-fc28e6b8d1d5/P4011_mid.mp4\" expression=\"full\" duration=\"695\" fileSize=\"24763039\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4011.mp4\" expression=\"full\" duration=\"695\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>A lap around Azure HDInsight and Cosmos DB Open Source Analytics + NoSQL</title>\n    <description><![CDATA[<p>Recently, we released the Spark Connector for our distributed NoSQL service – Azure Cosmos DB (formerly known as Azure DocumentDB). By connecting Apache Spark running on top Azure HDInsight to Azure Cosmos DB, you can accelerate your ability to solve fast-moving data science problems and machine learning. The Spark to Azure Cosmos DB connector efficiently exploits the native Cosmos DB managed indexes and enables updateable columns when performing analytics, push-down predicate filtering against fast-changing globally-distributed data, ranging from IoT, data science, and analytics scenarios. Come learn how you can perform blazing fast planet-scale data processing with Azure Cosmos DB and HDInsight.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:6cb344df61044c7e9135a76d015a3487\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4010</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4010</link>\n    <itunes:summary>Recently, we released the Spark Connector for our distributed NoSQL service – Azure Cosmos DB (formerly known as Azure DocumentDB). By connecting Apache Spark running on top Azure HDInsight to Azure Cosmos DB, you can accelerate your ability to solve fast-moving data science problems and machine learning. The Spark to Azure Cosmos DB connector efficiently exploits the native Cosmos DB managed indexes and enables updateable columns when performing analytics, push-down predicate filtering against fast-changing globally-distributed data, ranging from IoT, data science, and analytics scenarios. Come learn how you can perform blazing fast planet-scale data processing with Azure Cosmos DB and HDInsight. </itunes:summary>\n    <itunes:duration>1779</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4010</guid>\n    <dc:creator>Andrew Liu, Raghav Mohan</dc:creator>\n\t\t<media:thumbnail url=\"https://f.ch9.ms/thumbnail/457b3894-5351-44bd-bae6-e26b678bf351.png\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/e668d145-be2f-4cdf-83e2-fa2dc4ed555e.png\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/df447e85-c304-4788-8186-790165841c65.png\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9a86/c9ccb270-a595-470e-8c5d-207ebdce9a86/P4010.mp3\" expression=\"full\" duration=\"1779\" fileSize=\"28471626\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9a86/c9ccb270-a595-470e-8c5d-207ebdce9a86/P4010.mp4\" expression=\"full\" duration=\"1779\" fileSize=\"31710525\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9a86/c9ccb270-a595-470e-8c5d-207ebdce9a86/P4010_mid.mp4\" expression=\"full\" duration=\"1779\" fileSize=\"55849560\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4010.mp4\" expression=\"full\" duration=\"1779\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Modernize your database development lifecycle with SQL Server Data Tools in Visual Studio</title>\n    <description><![CDATA[Learn how SQL Server Data Tools (SSDT) turns Visual Studio into a powerful environment for database development. Easily build, debug, maintain, and refactor databases inside Visual Studio with a declarative model that spans all the phases of database development and easily enables continuous integration and deployment for your databases. Work offline with a database project, or work directly with a connected database instance in Azure SQL Database, Azure SQL Data Warehouse, and SQL Server running on Windows, Linux, or Docker, on-premises or in any cloud. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1cece19cce514b859a70a76d015a3445\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4009</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4009</link>\n    <itunes:summary>Learn how SQL Server Data Tools (SSDT) turns Visual Studio into a powerful environment for database development. Easily build, debug, maintain, and refactor databases inside Visual Studio with a declarative model that spans all the phases of database development and easily enables continuous integration and deployment for your databases. Work offline with a database project, or work directly with a connected database instance in Azure SQL Database, Azure SQL Data Warehouse, and SQL Server running on Windows, Linux, or Docker, on-premises or in any cloud.</itunes:summary>\n    <itunes:duration>428</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4009</guid>\n    <dc:creator>Tara Raj</dc:creator>\n    <category>visual+studio</category>\n    <category>sql+server</category>\n    <category>devops</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/e305/9694f420-6770-4de5-aae0-8600b145e305/P4009_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e305/9694f420-6770-4de5-aae0-8600b145e305/P4009_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e305/9694f420-6770-4de5-aae0-8600b145e305/P4009_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e305/9694f420-6770-4de5-aae0-8600b145e305/P4009.mp3\" expression=\"full\" duration=\"428\" fileSize=\"6863135\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e305/9694f420-6770-4de5-aae0-8600b145e305/P4009.mp4\" expression=\"full\" duration=\"428\" fileSize=\"7754863\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e305/9694f420-6770-4de5-aae0-8600b145e305/P4009_high.mp4\" expression=\"full\" duration=\"428\" fileSize=\"26332616\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e305/9694f420-6770-4de5-aae0-8600b145e305/P4009_mid.mp4\" expression=\"full\" duration=\"428\" fileSize=\"18571285\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4009.mp4\" expression=\"full\" duration=\"428\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Get to the cloud faster with Azure SQLDB Managed Instance and Database Migration Service</title>\n    <description><![CDATA[A new, expanded Azure SQL Database offers fully-managed server instance with greater compatibility with SQL Server application features and more, and the ability to move hundreds of databases at once using the Database Migration Service. It provides security isolation with Azure Virtual Network, along with built-in HADR, built-in intelligent performance tuning, and intelligent security services that are already available in Azure SQL Database. To reduce the friction of transitioning your relational database estate to public cloud, expanded Azure SQL Database provides SQL Server application compatibility including commonly used cross database references using three-part names, CLR, SQL Agent, Transactional Replication, Change Data Capture, Service Broker, and a lot more. We showcase a five-step seamless migration experience from your on-premises SQL Server instances to expanded Azure SQL Database using the newly announced Azure Database Migration Service. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:091374740bea4eab88c2a76d015a33bd\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4008</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4008</link>\n    <itunes:summary>A new, expanded Azure SQL Database offers fully-managed server instance with greater compatibility with SQL Server application features and more, and the ability to move hundreds of databases at once using the Database Migration Service. It provides security isolation with Azure Virtual Network, along with built-in HADR, built-in intelligent performance tuning, and intelligent security services that are already available in Azure SQL Database. To reduce the friction of transitioning your relational database estate to public cloud, expanded Azure SQL Database provides SQL Server application compatibility including commonly used cross database references using three-part names, CLR, SQL Agent, Transactional Replication, Change Data Capture, Service Broker, and a lot more. We showcase a five-step seamless migration experience from your on-premises SQL Server instances to expanded Azure SQL Database using the newly announced Azure Database Migration Service.</itunes:summary>\n    <itunes:duration>559</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4008</guid>\n    <dc:creator>Lindsey Allen, Harini Gupta</dc:creator>\n    <category>azure+sql+database</category>\n    <category>sql+server</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/c363/e76a400f-2805-40cd-a3c1-c696394ac363/P4008_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c363/e76a400f-2805-40cd-a3c1-c696394ac363/P4008_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c363/e76a400f-2805-40cd-a3c1-c696394ac363/P4008_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c363/e76a400f-2805-40cd-a3c1-c696394ac363/P4008.mp3\" expression=\"full\" duration=\"559\" fileSize=\"8955949\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c363/e76a400f-2805-40cd-a3c1-c696394ac363/P4008.mp4\" expression=\"full\" duration=\"559\" fileSize=\"14084835\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c363/e76a400f-2805-40cd-a3c1-c696394ac363/P4008_high.mp4\" expression=\"full\" duration=\"559\" fileSize=\"70036792\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c363/e76a400f-2805-40cd-a3c1-c696394ac363/P4008_mid.mp4\" expression=\"full\" duration=\"559\" fileSize=\"43242501\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4008.mp4\" expression=\"full\" duration=\"559\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Microsoft R Server: Development to deployment workflow</title>\n    <description><![CDATA[<p>Microsoft R Server versions work in different platforms but the development to deployment workflow is almost same in all environments. In this session, we develop a simple machine learning solution to demonstrate end-to-end workflow with compute and web nodes of Microsoft R Server stand-alone version.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:c5f5722b9cc54a3ebbeba76d015a3314\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4005</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4005</link>\n    <itunes:summary>Microsoft R Server versions work in different platforms but the development to deployment workflow is almost same in all environments. In this session, we develop a simple machine learning solution to demonstrate end-to-end workflow with compute and web nodes of Microsoft R Server stand-alone version. </itunes:summary>\n    <itunes:duration>989</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4005</guid>\n    <dc:creator>Mustafa Kasap</dc:creator>\n    <category>ml+server</category>\n\t\t<media:thumbnail url=\"https://f.ch9.ms/thumbnail/c8841ec4-288f-4716-8050-5b9043fd4d46.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/aa50acf4-adc7-4211-9f3c-0950089c3990.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://f.ch9.ms/thumbnail/00571dd6-efe7-4a32-9efc-377e1f3482e9.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7b35/b9f1046c-4868-480f-ba8a-b9064f247b35/P4005.mp3\" expression=\"full\" duration=\"989\" fileSize=\"15834438\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7b35/b9f1046c-4868-480f-ba8a-b9064f247b35/P4005.mp4\" expression=\"full\" duration=\"989\" fileSize=\"20179908\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7b35/b9f1046c-4868-480f-ba8a-b9064f247b35/P4005_high.mp4\" expression=\"full\" duration=\"989\" fileSize=\"87679783\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7b35/b9f1046c-4868-480f-ba8a-b9064f247b35/P4005_mid.mp4\" expression=\"full\" duration=\"989\" fileSize=\"52949443\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4005.mp4\" expression=\"full\" duration=\"989\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Lift and shift any runtime into U-SQL for large scale processing</title>\n    <description><![CDATA[One of U-SQL’s major strengths is to scale out user code over your large data lake assets. This presentation first shows how we have used the U-SQL extensibility model to give you access to Python and then shows how to run Java from within U-SQL. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:01509cffcfca4941b959a76d015a32d3\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4004</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4004</link>\n    <itunes:summary>One of U-SQL’s major strengths is to scale out user code over your large data lake assets. This presentation first shows how we have used the U-SQL extensibility model to give you access to Python and then shows how to run Java from within U-SQL.</itunes:summary>\n    <itunes:duration>1459</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4004</guid>\n    <dc:creator>Michael Rys</dc:creator>\n    <category>data+lake</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/715a/81a5afba-f6d1-4b00-9ad9-f817efeb715a/P4004_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/715a/81a5afba-f6d1-4b00-9ad9-f817efeb715a/P4004.mp3\" expression=\"full\" duration=\"1459\" fileSize=\"23358936\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/715a/81a5afba-f6d1-4b00-9ad9-f817efeb715a/P4004.mp4\" expression=\"full\" duration=\"1459\" fileSize=\"31194062\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/715a/81a5afba-f6d1-4b00-9ad9-f817efeb715a/P4004_high.mp4\" expression=\"full\" duration=\"1459\" fileSize=\"109291048\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/715a/81a5afba-f6d1-4b00-9ad9-f817efeb715a/P4004_mid.mp4\" expression=\"full\" duration=\"1459\" fileSize=\"75904126\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4004.mp4\" expression=\"full\" duration=\"1459\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Speedup Interactive Analytics on Petabytes of Data on Azure</title>\n    <description><![CDATA[One challenge faced by almost every Hadoop user is how to enable the near-time BI capability during the data volume grows, with low-latency and seamless integration with the tools you are already familiar with, such as Microsoft Excel and Microsoft Power BI. Here comes Kylin. Apache Kylin is a top-level project of Apache Software Foundation, which provides SQL interface and multi-dimensional analysis(OLAP) on Hadoop. Kyligence is a leading data intelligence company founded by the core Apache Kylin PMC members to speed up the development and evolution of open source Apache Kylin. In this session, Kyligence introduces how to enable interactive analytics on extremely large datasets on the Microsoft Azure Cloud. Together with Azure HDInsight, Kyligence Cloud service could provision Hadoop Infrastructure and KAP into customer’s Azure environment. KAP loads data from Azure Blob storage and generates cube index based on the user designed data model. By leveraging Kyligence Cloud service and Microsoft Azure, analysts can focus on the data model and analysis requirement only, without the scale limitation of extremely large datasets. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:83fb68ae58e449c0afe5a76d015a3296\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4002</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4002</link>\n    <itunes:summary>One challenge faced by almost every Hadoop user is how to enable the near-time BI capability during the data volume grows, with low-latency and seamless integration with the tools you are already familiar with, such as Microsoft Excel and Microsoft Power BI. Here comes Kylin. Apache Kylin is a top-level project of Apache Software Foundation, which provides SQL interface and multi-dimensional analysis(OLAP) on Hadoop. Kyligence is a leading data intelligence company founded by the core Apache Kylin PMC members to speed up the development and evolution of open source Apache Kylin. In this session, Kyligence introduces how to enable interactive analytics on extremely large datasets on the Microsoft Azure Cloud. Together with Azure HDInsight, Kyligence Cloud service could provision Hadoop Infrastructure and KAP into customer’s Azure environment. KAP loads data from Azure Blob storage and generates cube index based on the user designed data model. By leveraging Kyligence Cloud service and Microsoft Azure, analysts can focus on the data model and analysis requirement only, without the scale limitation of extremely large datasets.</itunes:summary>\n    <itunes:duration>1930</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4002</guid>\n    <dc:creator>Yang Li</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/0945/f54afc1b-e7ac-4eeb-9df9-fe1fe7260945/P4002_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0945/f54afc1b-e7ac-4eeb-9df9-fe1fe7260945/P4002_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0945/f54afc1b-e7ac-4eeb-9df9-fe1fe7260945/P4002_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0945/f54afc1b-e7ac-4eeb-9df9-fe1fe7260945/P4002.mp3\" expression=\"full\" duration=\"1930\" fileSize=\"30883146\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0945/f54afc1b-e7ac-4eeb-9df9-fe1fe7260945/P4002.mp4\" expression=\"full\" duration=\"1930\" fileSize=\"37882263\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0945/f54afc1b-e7ac-4eeb-9df9-fe1fe7260945/P4002_high.mp4\" expression=\"full\" duration=\"1930\" fileSize=\"110843753\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0945/f54afc1b-e7ac-4eeb-9df9-fe1fe7260945/P4002_mid.mp4\" expression=\"full\" duration=\"1930\" fileSize=\"81755558\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4002.mp4\" expression=\"full\" duration=\"1930\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Advanced SQL Server on Linux (Docker) via Entity Framework (EF)</title>\n    <description><![CDATA[It’s SQL Server as you already know it today, but it’s now native to Linux. It works with your data, your favorite tools, application frameworks (Entity Framework) and programming languages. In this session, we pull the code for an application running in cloud to a Linux-based machine. We test and enhance the application for performance (using EF, in-memory) and security against SQL vNext (Linux). Then we re-deploy the changes using DevOps to Azure with just a flip of d, show how the application works across platforms, on-premises, and in the cloud. Best part, all of it will be done in ten minutes. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:a5bc566af8ff4bdea5e7a76d015a3241\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/P4001</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/P4001</link>\n    <itunes:summary>It’s SQL Server as you already know it today, but it’s now native to Linux. It works with your data, your favorite tools, application frameworks (Entity Framework) and programming languages. In this session, we pull the code for an application running in cloud to a Linux-based machine. We test and enhance the application for performance (using EF, in-memory) and security against SQL vNext (Linux). Then we re-deploy the changes using DevOps to Azure with just a flip of d, show how the application works across platforms, on-premises, and in the cloud. Best part, all of it will be done in ten minutes.</itunes:summary>\n    <itunes:duration>1040</itunes:duration>\n    <pubDate>Wed, 10 May 2017 18:00:00 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/P4001</guid>\n    <dc:creator>Tara Shankar Jana</dc:creator>\n    <category>sql+server</category>\n    <category>linux</category>\n    <category>entity+framework</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/b07a/ca469d1d-bbca-4c17-914d-3cbb6f84b07a/P4001_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/b07a/ca469d1d-bbca-4c17-914d-3cbb6f84b07a/P4001_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/b07a/ca469d1d-bbca-4c17-914d-3cbb6f84b07a/P4001_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b07a/ca469d1d-bbca-4c17-914d-3cbb6f84b07a/P4001.mp3\" expression=\"full\" duration=\"1040\" fileSize=\"16650486\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b07a/ca469d1d-bbca-4c17-914d-3cbb6f84b07a/P4001.mp4\" expression=\"full\" duration=\"1040\" fileSize=\"29056056\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b07a/ca469d1d-bbca-4c17-914d-3cbb6f84b07a/P4001_high.mp4\" expression=\"full\" duration=\"1040\" fileSize=\"179999411\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b07a/ca469d1d-bbca-4c17-914d-3cbb6f84b07a/P4001_mid.mp4\" expression=\"full\" duration=\"1040\" fileSize=\"106824479\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/P4001.mp4\" expression=\"full\" duration=\"1040\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Azure Cosmos DB: NoSQL capabilities everyone should know about\n</title>\n    <description><![CDATA[Microsoft Azure provides a fully managed NoSQL database service built for fast and predictable performance, high availability, elastic scaling, global distribution, and ease of development. As a schema-free NoSQL database, the service provides rich and familiar SQL query capabilities with consistent low latencies on JSON data - ensuring that 99% of your reads are served under 10 milliseconds and 99% of your writes are served under 15 milliseconds. These unique benefits make it a great fit for web, mobile, gaming, IoT, AI, and many other applications that need seamless scale and global replication. Come and learn about the NoSQL capabilities in Azure Cosmos DB that every developer should know about. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:05615bc3738048b59bbea76d010c85d3\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6058</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6058</link>\n    <itunes:summary>Microsoft Azure provides a fully managed NoSQL database service built for fast and predictable performance, high availability, elastic scaling, global distribution, and ease of development. As a schema-free NoSQL database, the service provides rich and familiar SQL query capabilities with consistent low latencies on JSON data - ensuring that 99% of your reads are served under 10 milliseconds and 99% of your writes are served under 15 milliseconds. These unique benefits make it a great fit for web, mobile, gaming, IoT, AI, and many other applications that need seamless scale and global replication. Come and learn about the NoSQL capabilities in Azure Cosmos DB that every developer should know about.</itunes:summary>\n    <itunes:duration>1283</itunes:duration>\n    <pubDate>Tue, 09 May 2017 21:22:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6058</guid>\n    <dc:creator>Aravind Ramachandran</dc:creator>\n    <category>azure</category>\n    <category>nosql</category>\n    <category>documentdb</category>\n    <category>graph+database</category>\n    <category>cosmosdb</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/7956/7b5c8d2a-ea9b-4345-ac3f-d32e63e07956/T6058_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7956/7b5c8d2a-ea9b-4345-ac3f-d32e63e07956/T6058.mp3\" expression=\"full\" duration=\"1283\" fileSize=\"20543086\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7956/7b5c8d2a-ea9b-4345-ac3f-d32e63e07956/T6058.mp4\" expression=\"full\" duration=\"1283\" fileSize=\"26647495\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7956/7b5c8d2a-ea9b-4345-ac3f-d32e63e07956/T6058_high.mp4\" expression=\"full\" duration=\"1283\" fileSize=\"141723029\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7956/7b5c8d2a-ea9b-4345-ac3f-d32e63e07956/T6058_mid.mp4\" expression=\"full\" duration=\"1283\" fileSize=\"54862594\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6058.mp4\" expression=\"full\" duration=\"1283\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Open Q&amp;A: .NET panel</title>\n    <description><![CDATA[The .NET Core 2.0 roadmap was just announced and we saw some samples of the updated framework and tools in action. We’ve learned about the future of ASP.NET Core and how .NET Standard 2.0 will make our coding processes simpler. Bring your top questions for the team that is building the next generation of the .NET Framework. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:f529efec52c841198caca768001c6fb9\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8902</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8902</link>\n    <itunes:summary>The .NET Core 2.0 roadmap was just announced and we saw some samples of the updated framework and tools in action. We’ve learned about the future of ASP.NET Core and how .NET Standard 2.0 will make our coding processes simpler. Bring your top questions for the team that is building the next generation of the .NET Framework.</itunes:summary>\n    <itunes:duration>3547</itunes:duration>\n    <pubDate>Tue, 09 May 2017 19:23:31 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8902</guid>\n    <dc:creator>Damian Edwards, Mike Harsh, Scott Hunter, Immo Landwerth, ​Richard Lander</dc:creator>\n    <category>.net</category>\n    <category>open+source</category>\n    <category>asp.net</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/470a/165da464-c034-4b84-9d4a-ac8570ef470a/B8902_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/470a/165da464-c034-4b84-9d4a-ac8570ef470a/B8902_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/470a/165da464-c034-4b84-9d4a-ac8570ef470a/B8902_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/470a/165da464-c034-4b84-9d4a-ac8570ef470a/B8902.mp3\" expression=\"full\" duration=\"3547\" fileSize=\"56753489\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/470a/165da464-c034-4b84-9d4a-ac8570ef470a/B8902.mp4\" expression=\"full\" duration=\"3547\" fileSize=\"82031526\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/470a/165da464-c034-4b84-9d4a-ac8570ef470a/B8902_high.mp4\" expression=\"full\" duration=\"3547\" fileSize=\"1174697802\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/470a/165da464-c034-4b84-9d4a-ac8570ef470a/B8902_mid.mp4\" expression=\"full\" duration=\"3547\" fileSize=\"237165933\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8902.mp4\" expression=\"full\" duration=\"3547\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>.NET Standard 2.0, UWP support and UI futures</title>\n    <description><![CDATA[<p>Join us as we meet with Scott Hunter, Tim Heuer, and Miguel de Icaza to discuss the latest updates around .NET and UWP</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:25293b4e44924450b1e2a76d014dc545\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L13</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L13</link>\n    <itunes:summary>Join us as we meet with Scott Hunter, Tim Heuer, and Miguel de Icaza to discuss the latest updates around .NET and UWP </itunes:summary>\n    <itunes:duration>1496</itunes:duration>\n    <pubDate>Tue, 09 May 2017 16:05:04 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L13</guid>\n    <dc:creator>Miguel de Icaza, Scott Hunter, Tim Heuer, Seth Juarez</dc:creator>\n    <category>.net</category>\n    <category>uwp</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/1065/a564bd30-7a6c-4a71-bac1-684e884f1065/C9L13NETStandard_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/1065/a564bd30-7a6c-4a71-bac1-684e884f1065/C9L13NETStandard_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/1065/a564bd30-7a6c-4a71-bac1-684e884f1065/C9L13NETStandard_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/25293b4e44924450b1e2a76d014dc545/C9L13NETStandard.mp4\" expression=\"full\" duration=\"1496\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1065/a564bd30-7a6c-4a71-bac1-684e884f1065/C9L13NETStandard.mp3\" expression=\"full\" duration=\"1496\" fileSize=\"23942607\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1065/a564bd30-7a6c-4a71-bac1-684e884f1065/C9L13NETStandard.mp4\" expression=\"full\" duration=\"1496\" fileSize=\"106728123\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1065/a564bd30-7a6c-4a71-bac1-684e884f1065/C9L13NETStandard_high.mp4\" expression=\"full\" duration=\"1496\" fileSize=\"779118180\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1065/a564bd30-7a6c-4a71-bac1-684e884f1065/C9L13NETStandard_mid.mp4\" expression=\"full\" duration=\"1496\" fileSize=\"465887665\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Windows Template Studio</title>\n    <description><![CDATA[<p>In this Channel 9 Live session we meet with Clint Rutkas, Michael Crump, and Matt Lacey to discuss the latest updates on Windows.</p><p>To find out more about Windows Template Studio, head to <a href=\"https://aka.ms/wts\">https://aka.ms/wts</a>.&nbsp; If you want to install, go to <a href=\"https://aka.ms/wtsinstall\">https://aka.ms/wtsinstall</a>.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:8e38ae6ee1fa45cb800da76d014dc5c3\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L12</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L12</link>\n    <itunes:summary>In this Channel 9 Live session we meet with Clint Rutkas, Michael Crump, and Matt Lacey to discuss the latest updates on Windows. To find out more about Windows Template Studio, head to https://aka.ms/wts.  If you want to install, go to https://aka.ms/wtsinstall. </itunes:summary>\n    <itunes:duration>1299</itunes:duration>\n    <pubDate>Tue, 09 May 2017 16:04:56 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L12</guid>\n    <dc:creator>Clint Rutkas, Seth Juarez, Michael Crump, Matt Lacey</dc:creator>\n    <category>windows</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/db15/43c9fbed-535e-4013-8a4a-a74cc00adb15/C9L12WinTemplateStudio_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/db15/43c9fbed-535e-4013-8a4a-a74cc00adb15/C9L12WinTemplateStudio_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/db15/43c9fbed-535e-4013-8a4a-a74cc00adb15/C9L12WinTemplateStudio_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/8e38ae6ee1fa45cb800da76d014dc5c3/C9L12WinTemplateStudio.mp4\" expression=\"full\" duration=\"1299\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/db15/43c9fbed-535e-4013-8a4a-a74cc00adb15/C9L12WinTemplateStudio.mp3\" expression=\"full\" duration=\"1299\" fileSize=\"20798368\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/db15/43c9fbed-535e-4013-8a4a-a74cc00adb15/C9L12WinTemplateStudio.mp4\" expression=\"full\" duration=\"1299\" fileSize=\"69245258\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/db15/43c9fbed-535e-4013-8a4a-a74cc00adb15/C9L12WinTemplateStudio_high.mp4\" expression=\"full\" duration=\"1299\" fileSize=\"502446047\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/db15/43c9fbed-535e-4013-8a4a-a74cc00adb15/C9L12WinTemplateStudio_mid.mp4\" expression=\"full\" duration=\"1299\" fileSize=\"280307554\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Visual Studio Mobile Center</title>\n    <description><![CDATA[<p>Find out the latest updates around the Visual Studio Mobile Center in this Channel 9 Live session with Keith Ballinger, Thomas Dohmke, and Ryan J. Salva</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:b75b5bd1c9154643aa8ca76d014dcb67\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L27</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L27</link>\n    <itunes:summary>Find out the latest updates around the Visual Studio Mobile Center in this Channel 9 Live session with Keith Ballinger, Thomas Dohmke, and Ryan J. Salva </itunes:summary>\n    <itunes:duration>1465</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L27</guid>\n    <dc:creator>Ryan J. Salva, Thomas Dohmke, Keith Ballinger</dc:creator>\n    <category>visual+studio</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/4f78/271f6759-4bcf-49df-bf3b-97afd5194f78/C9L27VSMobileCenter_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4f78/271f6759-4bcf-49df-bf3b-97afd5194f78/C9L27VSMobileCenter_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4f78/271f6759-4bcf-49df-bf3b-97afd5194f78/C9L27VSMobileCenter_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/b75b5bd1c9154643aa8ca76d014dcb67/C9L27VSMobileCenter.mp4\" expression=\"full\" duration=\"1465\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4f78/271f6759-4bcf-49df-bf3b-97afd5194f78/C9L27VSMobileCenter.mp3\" expression=\"full\" duration=\"1465\" fileSize=\"23446836\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4f78/271f6759-4bcf-49df-bf3b-97afd5194f78/C9L27VSMobileCenter.mp4\" expression=\"full\" duration=\"1465\" fileSize=\"59794482\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4f78/271f6759-4bcf-49df-bf3b-97afd5194f78/C9L27VSMobileCenter_high.mp4\" expression=\"full\" duration=\"1465\" fileSize=\"614983793\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4f78/271f6759-4bcf-49df-bf3b-97afd5194f78/C9L27VSMobileCenter_mid.mp4\" expression=\"full\" duration=\"1465\" fileSize=\"320337752\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Visual Studio Q&amp;A</title>\n    <description><![CDATA[<p>In this Q&amp;A session around Visual Studio on Channel 9 Live, we're joined by Tim Sneath, Amanda Silver, and Saqib Shaikh</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:4a1c98909b604c4ca4f7a76d014dcaf6\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L26</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L26</link>\n    <itunes:summary>In this Q&amp;amp;A session around Visual Studio on Channel 9 Live, we&#39;re joined by Tim Sneath, Amanda Silver, and Saqib Shaikh </itunes:summary>\n    <itunes:duration>1529</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L26</guid>\n    <dc:creator>Tim Sneath, Seth Juarez, Amanda Silver, Saqib Shaikh</dc:creator>\n    <category>visual+studio</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/ba5f/275ade53-d171-4c62-85fb-b30905e2ba5f/C9L26VisualStudioQA_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/ba5f/275ade53-d171-4c62-85fb-b30905e2ba5f/C9L26VisualStudioQA_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/ba5f/275ade53-d171-4c62-85fb-b30905e2ba5f/C9L26VisualStudioQA_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/4a1c98909b604c4ca4f7a76d014dcaf6/C9L26VisualStudioQA.mp4\" expression=\"full\" duration=\"1529\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ba5f/275ade53-d171-4c62-85fb-b30905e2ba5f/C9L26VisualStudioQA.mp3\" expression=\"full\" duration=\"1529\" fileSize=\"24477466\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ba5f/275ade53-d171-4c62-85fb-b30905e2ba5f/C9L26VisualStudioQA.mp4\" expression=\"full\" duration=\"1529\" fileSize=\"88178499\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ba5f/275ade53-d171-4c62-85fb-b30905e2ba5f/C9L26VisualStudioQA_high.mp4\" expression=\"full\" duration=\"1529\" fileSize=\"827602292\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ba5f/275ade53-d171-4c62-85fb-b30905e2ba5f/C9L26VisualStudioQA_mid.mp4\" expression=\"full\" duration=\"1529\" fileSize=\"445641917\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>TypeScript with Anders Hejlsberg</title>\n    <description><![CDATA[<p>Join Anders Hejlsberg in this Channel 9 Live session to learn about his latest TypeScript updates</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1d50d3c62c704ee5a061a76d014dca49\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L25</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L25</link>\n    <itunes:summary>Join Anders Hejlsberg in this Channel 9 Live session to learn about his latest TypeScript updates </itunes:summary>\n    <itunes:duration>2012</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L25</guid>\n    <dc:creator>Anders Hejlsberg, Seth Juarez</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/13e1/a6708c3f-101f-417a-a1ce-2c46a27713e1/C9L25AndersHejlsberg_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/13e1/a6708c3f-101f-417a-a1ce-2c46a27713e1/C9L25AndersHejlsberg_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/13e1/a6708c3f-101f-417a-a1ce-2c46a27713e1/C9L25AndersHejlsberg_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/1d50d3c62c704ee5a061a76d014dca49/C9L25AndersHejlsberg.mp4\" expression=\"full\" duration=\"2012\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/13e1/a6708c3f-101f-417a-a1ce-2c46a27713e1/C9L25AndersHejlsberg.mp3\" expression=\"full\" duration=\"2012\" fileSize=\"32200266\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/13e1/a6708c3f-101f-417a-a1ce-2c46a27713e1/C9L25AndersHejlsberg.mp4\" expression=\"full\" duration=\"2012\" fileSize=\"129109339\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/13e1/a6708c3f-101f-417a-a1ce-2c46a27713e1/C9L25AndersHejlsberg_high.mp4\" expression=\"full\" duration=\"2012\" fileSize=\"1117429591\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/13e1/a6708c3f-101f-417a-a1ce-2c46a27713e1/C9L25AndersHejlsberg_mid.mp4\" expression=\"full\" duration=\"2012\" fileSize=\"625124250\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Visual Studio for Mac and Xamarin Live Player</title>\n    <description><![CDATA[<p>In this Channel 9 Live session find out the latest Build 2017 updates from Miguel de Icaza, Joseph Hill, James Montemagno, and Mikayla Hutchinson</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:7568d613ebbf43da9111a76d014dca1f\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L24</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L24</link>\n    <itunes:summary>In this Channel 9 Live session find out the latest Build 2017 updates from Miguel de Icaza, Joseph Hill, James Montemagno, and Mikayla Hutchinson </itunes:summary>\n    <itunes:duration>1400</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L24</guid>\n    <dc:creator>Miguel de Icaza, Joseph Hill, Seth Juarez, James Montemagno, Mikayla Hutchinson</dc:creator>\n    <category>visual+studio</category>\n    <category>xamarin</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/de5c/a2ee4651-f6bd-499c-9925-900f15b3de5c/C9L24VSforMacXamarin_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/de5c/a2ee4651-f6bd-499c-9925-900f15b3de5c/C9L24VSforMacXamarin_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/de5c/a2ee4651-f6bd-499c-9925-900f15b3de5c/C9L24VSforMacXamarin_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/7568d613ebbf43da9111a76d014dca1f/C9L24VSforMacXamarin.mp4\" expression=\"full\" duration=\"1400\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/de5c/a2ee4651-f6bd-499c-9925-900f15b3de5c/C9L24VSforMacXamarin.mp3\" expression=\"full\" duration=\"1400\" fileSize=\"22414308\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/de5c/a2ee4651-f6bd-499c-9925-900f15b3de5c/C9L24VSforMacXamarin.mp4\" expression=\"full\" duration=\"1400\" fileSize=\"88181141\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/de5c/a2ee4651-f6bd-499c-9925-900f15b3de5c/C9L24VSforMacXamarin_high.mp4\" expression=\"full\" duration=\"1400\" fileSize=\"709892444\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/de5c/a2ee4651-f6bd-499c-9925-900f15b3de5c/C9L24VSforMacXamarin_mid.mp4\" expression=\"full\" duration=\"1400\" fileSize=\"395218857\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Microsoft Graph</title>\n    <description><![CDATA[<p>Join Yina, Tejas, Ryan, and Andrew as we discuss the latest updates around Microsoft Graph in this Channel 9 Live session</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:870b734fddf94f95bb46a76d014dc992\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L23</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L23</link>\n    <itunes:summary>Join Yina, Tejas, Ryan, and Andrew as we discuss the latest updates around Microsoft Graph in this Channel 9 Live session </itunes:summary>\n    <itunes:duration>1701</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L23</guid>\n    <dc:creator>Andrew Coates, Tejas Patel, Yina Arenas, Ryan Gregg</dc:creator>\n    <category>microsoft+graph</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/8623/8d8d8aea-37a4-43d1-aedb-bc527d528623/C9L23MicrosoftGraph_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/8623/8d8d8aea-37a4-43d1-aedb-bc527d528623/C9L23MicrosoftGraph_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/8623/8d8d8aea-37a4-43d1-aedb-bc527d528623/C9L23MicrosoftGraph_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/870b734fddf94f95bb46a76d014dc992/C9L23MicrosoftGraph.mp4\" expression=\"full\" duration=\"1701\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8623/8d8d8aea-37a4-43d1-aedb-bc527d528623/C9L23MicrosoftGraph.mp3\" expression=\"full\" duration=\"1701\" fileSize=\"27232842\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8623/8d8d8aea-37a4-43d1-aedb-bc527d528623/C9L23MicrosoftGraph.mp4\" expression=\"full\" duration=\"1701\" fileSize=\"101299275\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8623/8d8d8aea-37a4-43d1-aedb-bc527d528623/C9L23MicrosoftGraph_high.mp4\" expression=\"full\" duration=\"1701\" fileSize=\"962568555\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8623/8d8d8aea-37a4-43d1-aedb-bc527d528623/C9L23MicrosoftGraph_mid.mp4\" expression=\"full\" duration=\"1701\" fileSize=\"516455869\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Microsoft Fluent Design System</title>\n    <description><![CDATA[<p>In this session, we meet with Bojana Ostojic, Albert Shum, and Paul Gusmorino to discuss their latest Build 2017 updates</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:5bc2eea9301e4d5b8381a76d014dc95f\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L22</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L22</link>\n    <itunes:summary>In this session, we meet with Bojana Ostojic, Albert Shum, and Paul Gusmorino to discuss their latest Build 2017 updates </itunes:summary>\n    <itunes:duration>1605</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L22</guid>\n    <dc:creator>Albert Shum, Seth Juarez, Paul Gusmorino, Bojana Ostojic</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/3da8/e4325aa3-b019-4060-8ee2-c7db0c5a3da8/C9LMicrosoftFluentDesignSystem_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/3da8/e4325aa3-b019-4060-8ee2-c7db0c5a3da8/C9LMicrosoftFluentDesignSystem_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/3da8/e4325aa3-b019-4060-8ee2-c7db0c5a3da8/C9LMicrosoftFluentDesignSystem_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/5bc2eea9301e4d5b8381a76d014dc95f/C9LMicrosoftFluentDesignSystem.mp4\" expression=\"full\" duration=\"1605\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3da8/e4325aa3-b019-4060-8ee2-c7db0c5a3da8/C9LMicrosoftFluentDesignSystem.mp3\" expression=\"full\" duration=\"1605\" fileSize=\"25694922\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3da8/e4325aa3-b019-4060-8ee2-c7db0c5a3da8/C9LMicrosoftFluentDesignSystem.mp4\" expression=\"full\" duration=\"1605\" fileSize=\"106340348\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3da8/e4325aa3-b019-4060-8ee2-c7db0c5a3da8/C9LMicrosoftFluentDesignSystem_high.mp4\" expression=\"full\" duration=\"1605\" fileSize=\"905320386\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3da8/e4325aa3-b019-4060-8ee2-c7db0c5a3da8/C9LMicrosoftFluentDesignSystem_mid.mp4\" expression=\"full\" duration=\"1605\" fileSize=\"494591922\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Languages with Mads, Dustin, Phillip and Anthony</title>\n    <description><![CDATA[<p>Join us as we chat about languages with Mads Torgersen, Dustin Campbell, Phillip Carter, and Anthony D. Green in this Channel 9 Live session</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:d9e2f9c61c104f839f15a76d014dc8b6\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L21</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L21</link>\n    <itunes:summary>Join us as we chat about languages with Mads Torgersen, Dustin Campbell, Phillip Carter, and Anthony D. Green in this Channel 9 Live session </itunes:summary>\n    <itunes:duration>1206</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L21</guid>\n    <dc:creator>Mads Torgersen, Dustin Campbell, Anthony D. Green, Seth Juarez, Phillip Carter</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/cc72/73ab52bb-0a69-4dac-92ad-b3daa24ecc72/C9L21Languages_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/cc72/73ab52bb-0a69-4dac-92ad-b3daa24ecc72/C9L21Languages_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/cc72/73ab52bb-0a69-4dac-92ad-b3daa24ecc72/C9L21Languages_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/d9e2f9c61c104f839f15a76d014dc8b6/C9L21Languages.mp4\" expression=\"full\" duration=\"1206\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cc72/73ab52bb-0a69-4dac-92ad-b3daa24ecc72/C9L21Languages.mp3\" expression=\"full\" duration=\"1206\" fileSize=\"19301322\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cc72/73ab52bb-0a69-4dac-92ad-b3daa24ecc72/C9L21Languages.mp4\" expression=\"full\" duration=\"1206\" fileSize=\"77021880\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cc72/73ab52bb-0a69-4dac-92ad-b3daa24ecc72/C9L21Languages_high.mp4\" expression=\"full\" duration=\"1206\" fileSize=\"700788000\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cc72/73ab52bb-0a69-4dac-92ad-b3daa24ecc72/C9L21Languages_mid.mp4\" expression=\"full\" duration=\"1206\" fileSize=\"377370643\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>SQL Unplugged</title>\n    <description><![CDATA[<p>In this Channel 9 Live session we'll discuss all things SQL with Scott Klein, Rohan Kumar, and Lindsey Allen</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:0d423eb3440c43a5aa6ea76d014dc841\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L20</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L20</link>\n    <itunes:summary>In this Channel 9 Live session we&#39;ll discuss all things SQL with Scott Klein, Rohan Kumar, and Lindsey Allen </itunes:summary>\n    <itunes:duration>1678</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L20</guid>\n    <dc:creator>Scott Klein, Rohan Kumar</dc:creator>\n    <category>sql</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/96c1/a63599a6-4d35-4f47-a07f-b06374d196c1/C9L20SQLUnplugged_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/96c1/a63599a6-4d35-4f47-a07f-b06374d196c1/C9L20SQLUnplugged_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/96c1/a63599a6-4d35-4f47-a07f-b06374d196c1/C9L20SQLUnplugged_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/0d423eb3440c43a5aa6ea76d014dc841/C9L20SQLUnplugged.mp4\" expression=\"full\" duration=\"1678\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/96c1/a63599a6-4d35-4f47-a07f-b06374d196c1/C9L20SQLUnplugged.mp3\" expression=\"full\" duration=\"1678\" fileSize=\"26851321\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/96c1/a63599a6-4d35-4f47-a07f-b06374d196c1/C9L20SQLUnplugged.mp4\" expression=\"full\" duration=\"1678\" fileSize=\"99523943\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/96c1/a63599a6-4d35-4f47-a07f-b06374d196c1/C9L20SQLUnplugged_high.mp4\" expression=\"full\" duration=\"1678\" fileSize=\"924769459\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/96c1/a63599a6-4d35-4f47-a07f-b06374d196c1/C9L20SQLUnplugged_mid.mp4\" expression=\"full\" duration=\"1678\" fileSize=\"491050782\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>SharePoint Framework</title>\n    <description><![CDATA[<p>In this Channel 9 Live session we're joining Daniel Kogan and Vesa Juvonen to discuss the latest updates around SharePoint Framework</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:24f762fcbfdd48438f7fa76d014dc7af\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L19</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L19</link>\n    <itunes:summary>In this Channel 9 Live session we&#39;re joining Daniel Kogan and Vesa Juvonen to discuss the latest updates around SharePoint Framework </itunes:summary>\n    <itunes:duration>1389</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L19</guid>\n    <dc:creator>Andrew Coates, Vesa Juvonen, Daniel Kogan</dc:creator>\n    <category>sharepoint</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/753b/37e60427-9895-49e6-8100-872a467f753b/C9L19SharepointFramework_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/753b/37e60427-9895-49e6-8100-872a467f753b/C9L19SharepointFramework_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/753b/37e60427-9895-49e6-8100-872a467f753b/C9L19SharepointFramework_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/24f762fcbfdd48438f7fa76d014dc7af/C9L19SharepointFramework.mp4\" expression=\"full\" duration=\"1389\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/753b/37e60427-9895-49e6-8100-872a467f753b/C9L19SharepointFramework.mp3\" expression=\"full\" duration=\"1389\" fileSize=\"22240272\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/753b/37e60427-9895-49e6-8100-872a467f753b/C9L19SharepointFramework.mp4\" expression=\"full\" duration=\"1389\" fileSize=\"67430300\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/753b/37e60427-9895-49e6-8100-872a467f753b/C9L19SharepointFramework_high.mp4\" expression=\"full\" duration=\"1389\" fileSize=\"544881872\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/753b/37e60427-9895-49e6-8100-872a467f753b/C9L19SharepointFramework_mid.mp4\" expression=\"full\" duration=\"1389\" fileSize=\"298019781\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>.NET Standard 2.0 and .NET Core 2.0  </title>\n    <description><![CDATA[<p>Join us as we chat with Scott Hunter, Immo Landwerth, Richard Lander, and Damian Edwards about the latest updates to .NET Standard 2.0 and .NET Core 2.0</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:ff51c874da47402485a1a76d014dc752\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L18</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L18</link>\n    <itunes:summary>Join us as we chat with Scott Hunter, Immo Landwerth, Richard Lander, and Damian Edwards about the latest updates to .NET Standard 2.0 and .NET Core 2.0 </itunes:summary>\n    <itunes:duration>1479</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L18</guid>\n    <dc:creator>Damian Edwards, Scott Hunter, Seth Juarez, Immo Landwerth, ​Richard Lander</dc:creator>\n    <category>.net</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/4ace/d47d7b31-9586-42f7-86ec-85c182ca4ace/C9L18NETStandard2andNETCore2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/4ace/d47d7b31-9586-42f7-86ec-85c182ca4ace/C9L18NETStandard2andNETCore2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/4ace/d47d7b31-9586-42f7-86ec-85c182ca4ace/C9L18NETStandard2andNETCore2_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/ff51c874da47402485a1a76d014dc752/C9L18NETStandard2andNETCore2.mp4\" expression=\"full\" duration=\"1479\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4ace/d47d7b31-9586-42f7-86ec-85c182ca4ace/C9L18NETStandard2andNETCore2.mp3\" expression=\"full\" duration=\"1479\" fileSize=\"23672273\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4ace/d47d7b31-9586-42f7-86ec-85c182ca4ace/C9L18NETStandard2andNETCore2.mp4\" expression=\"full\" duration=\"1479\" fileSize=\"79720132\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4ace/d47d7b31-9586-42f7-86ec-85c182ca4ace/C9L18NETStandard2andNETCore2_high.mp4\" expression=\"full\" duration=\"1479\" fileSize=\"763856772\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4ace/d47d7b31-9586-42f7-86ec-85c182ca4ace/C9L18NETStandard2andNETCore2_mid.mp4\" expression=\"full\" duration=\"1479\" fileSize=\"399400821\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Windows Subsystem for Linux - Update</title>\n    <description><![CDATA[<p>In this Channel 9 Live session, find out more about Windows Subsystem for Linux from Jack Hammons, Gilles Khouzam, and Ben Hillis</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:d9ff74585e5648c88c6ea76d014dc6ca\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L17</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L17</link>\n    <itunes:summary>In this Channel 9 Live session, find out more about Windows Subsystem for Linux from Jack Hammons, Gilles Khouzam, and Ben Hillis </itunes:summary>\n    <itunes:duration>1792</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L17</guid>\n    <dc:creator>Seth Juarez, Ben Hillis, Gilles Khouzam, Jack Hammons</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/d256/d6c8485b-8027-4014-89f2-39770ffad256/C9L17WinSubsystemLinuxUpdate_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/d256/d6c8485b-8027-4014-89f2-39770ffad256/C9L17WinSubsystemLinuxUpdate_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/d256/d6c8485b-8027-4014-89f2-39770ffad256/C9L17WinSubsystemLinuxUpdate_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/d9ff74585e5648c88c6ea76d014dc6ca/C9L17WinSubsystemLinuxUpdate.mp4\" expression=\"full\" duration=\"1792\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d256/d6c8485b-8027-4014-89f2-39770ffad256/C9L17WinSubsystemLinuxUpdate.mp3\" expression=\"full\" duration=\"1792\" fileSize=\"28687050\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d256/d6c8485b-8027-4014-89f2-39770ffad256/C9L17WinSubsystemLinuxUpdate.mp4\" expression=\"full\" duration=\"1792\" fileSize=\"97335353\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d256/d6c8485b-8027-4014-89f2-39770ffad256/C9L17WinSubsystemLinuxUpdate_high.mp4\" expression=\"full\" duration=\"1792\" fileSize=\"884516838\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d256/d6c8485b-8027-4014-89f2-39770ffad256/C9L17WinSubsystemLinuxUpdate_mid.mp4\" expression=\"full\" duration=\"1792\" fileSize=\"478278271\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Microsoft Teams Developer Platform</title>\n    <description><![CDATA[<p>Join us as we chat with Larry Jin around his Build 2017 updates</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:d974118cdd8c498b8cf8a76d014dc662\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L16</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L16</link>\n    <itunes:summary>Join us as we chat with Larry Jin around his Build 2017 updates </itunes:summary>\n    <itunes:duration>1726</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L16</guid>\n    <dc:creator>Seth Juarez, Larry Jin</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/9ba9/eeaefa94-c043-4630-a589-2fd6ecf29ba9/C9L16MSFTTeamsDevPlatform_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/9ba9/eeaefa94-c043-4630-a589-2fd6ecf29ba9/C9L16MSFTTeamsDevPlatform_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/9ba9/eeaefa94-c043-4630-a589-2fd6ecf29ba9/C9L16MSFTTeamsDevPlatform_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/d974118cdd8c498b8cf8a76d014dc662/C9L16MSFTTeamsDevPlatform.mp4\" expression=\"full\" duration=\"1726\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9ba9/eeaefa94-c043-4630-a589-2fd6ecf29ba9/C9L16MSFTTeamsDevPlatform.mp3\" expression=\"full\" duration=\"1726\" fileSize=\"27622986\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9ba9/eeaefa94-c043-4630-a589-2fd6ecf29ba9/C9L16MSFTTeamsDevPlatform.mp4\" expression=\"full\" duration=\"1726\" fileSize=\"89274590\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9ba9/eeaefa94-c043-4630-a589-2fd6ecf29ba9/C9L16MSFTTeamsDevPlatform_high.mp4\" expression=\"full\" duration=\"1726\" fileSize=\"626003745\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9ba9/eeaefa94-c043-4630-a589-2fd6ecf29ba9/C9L16MSFTTeamsDevPlatform_mid.mp4\" expression=\"full\" duration=\"1726\" fileSize=\"352166783\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>C++ Panel</title>\n    <description><![CDATA[<p>In this Channel 9 Live session, join our veteran niner, Charles Torre, as he hosts a panel on C&#43;&#43;</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:408a7a7f521843e2a691a76d014dc634\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L15</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L15</link>\n    <itunes:summary>In this Channel 9 Live session, join our veteran niner, Charles Torre, as he hosts a panel on C&amp;#43;&amp;#43; </itunes:summary>\n    <itunes:duration>1856</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L15</guid>\n    <dc:creator>Marian Luparu, Charles Torre, Stephan T. Lavavej, Gabriel Dos Reis, Kenny Kerr</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/1f21/dc20f667-fc58-4fd4-ad63-33865d381f21/C9L15CPPpanel_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1f21/dc20f667-fc58-4fd4-ad63-33865d381f21/C9L15CPPpanel_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1f21/dc20f667-fc58-4fd4-ad63-33865d381f21/C9L15CPPpanel_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/408a7a7f521843e2a691a76d014dc634/C9L15CPPpanel.mp4\" expression=\"full\" duration=\"1856\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1f21/dc20f667-fc58-4fd4-ad63-33865d381f21/C9L15CPPpanel.mp3\" expression=\"full\" duration=\"1856\" fileSize=\"29700042\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1f21/dc20f667-fc58-4fd4-ad63-33865d381f21/C9L15CPPpanel.mp4\" expression=\"full\" duration=\"1856\" fileSize=\"135101979\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1f21/dc20f667-fc58-4fd4-ad63-33865d381f21/C9L15CPPpanel_high.mp4\" expression=\"full\" duration=\"1856\" fileSize=\"1013587327\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1f21/dc20f667-fc58-4fd4-ad63-33865d381f21/C9L15CPPpanel_mid.mp4\" expression=\"full\" duration=\"1856\" fileSize=\"559532578\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Mark Russinovich Unplugged</title>\n    <description><![CDATA[<p>Join us as we connect with Mark Russinovich to discuss his latest Build updates</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:2c414bab98c5465ab596a76d014dc5f2\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L14</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L14</link>\n    <itunes:summary>Join us as we connect with Mark Russinovich to discuss his latest Build updates </itunes:summary>\n    <itunes:duration>1636</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L14</guid>\n    <dc:creator>Mark Russinovich, Seth Juarez</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/194e/26b96ce7-9e7c-4503-a1ca-25319294194e/C9L14Russinovich_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/194e/26b96ce7-9e7c-4503-a1ca-25319294194e/C9L14Russinovich_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/194e/26b96ce7-9e7c-4503-a1ca-25319294194e/C9L14Russinovich_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/2c414bab98c5465ab596a76d014dc5f2/C9L14Russinovich.mp4\" expression=\"full\" duration=\"1636\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/194e/26b96ce7-9e7c-4503-a1ca-25319294194e/C9L14Russinovich.mp3\" expression=\"full\" duration=\"1636\" fileSize=\"26179530\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/194e/26b96ce7-9e7c-4503-a1ca-25319294194e/C9L14Russinovich.mp4\" expression=\"full\" duration=\"1636\" fileSize=\"102532620\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/194e/26b96ce7-9e7c-4503-a1ca-25319294194e/C9L14Russinovich_high.mp4\" expression=\"full\" duration=\"1636\" fileSize=\"852633110\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/194e/26b96ce7-9e7c-4503-a1ca-25319294194e/C9L14Russinovich_mid.mp4\" expression=\"full\" duration=\"1636\" fileSize=\"472674432\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Cloud Developer Advocacy</title>\n    <description><![CDATA[<p>John Papa talks to the new cloud advocates about winning the hearts and minds of developers around the world.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:27fb0cb64fdb45e4b201a76d014dc4cb\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L11</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L11</link>\n    <itunes:summary>John Papa talks to the new cloud advocates about winning the hearts and minds of developers around the world. </itunes:summary>\n    <itunes:duration>1655</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L11</guid>\n    <dc:creator>John Papa, Brian Peek, Shayne Boyer, Bernd Verst, Bryan Liston</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/79a7/8138a7ef-482d-486f-9d95-68c1259d79a7/C9L11CloudDevAdvocacy_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/79a7/8138a7ef-482d-486f-9d95-68c1259d79a7/C9L11CloudDevAdvocacy_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/79a7/8138a7ef-482d-486f-9d95-68c1259d79a7/C9L11CloudDevAdvocacy_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/27fb0cb64fdb45e4b201a76d014dc4cb/C9L11CloudDevAdvocacy.mp4\" expression=\"full\" duration=\"1655\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/79a7/8138a7ef-482d-486f-9d95-68c1259d79a7/C9L11CloudDevAdvocacy.mp3\" expression=\"full\" duration=\"1655\" fileSize=\"26493642\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/79a7/8138a7ef-482d-486f-9d95-68c1259d79a7/C9L11CloudDevAdvocacy.mp4\" expression=\"full\" duration=\"1655\" fileSize=\"124143689\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/79a7/8138a7ef-482d-486f-9d95-68c1259d79a7/C9L11CloudDevAdvocacy_high.mp4\" expression=\"full\" duration=\"1655\" fileSize=\"1043703075\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/79a7/8138a7ef-482d-486f-9d95-68c1259d79a7/C9L11CloudDevAdvocacy_mid.mp4\" expression=\"full\" duration=\"1655\" fileSize=\"560913525\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Keynote Recap with Kevin Gallo</title>\n    <description><![CDATA[<p>Join us as we meet with Kevin Gallo to discuss his keynote updates</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:57dc257dbfed400681a1a76d014dc476\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L10</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L10</link>\n    <itunes:summary>Join us as we meet with Kevin Gallo to discuss his keynote updates </itunes:summary>\n    <itunes:duration>1319</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L10</guid>\n    <dc:creator>Kevin Gallo, Seth Juarez</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/3728/36c71dbd-a6e0-4a6e-8792-744fc3053728/C9L10KevinGallo_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/3728/36c71dbd-a6e0-4a6e-8792-744fc3053728/C9L10KevinGallo_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/3728/36c71dbd-a6e0-4a6e-8792-744fc3053728/C9L10KevinGallo_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/57dc257dbfed400681a1a76d014dc476/C9L10KevinGallo.mp4\" expression=\"full\" duration=\"1319\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3728/36c71dbd-a6e0-4a6e-8792-744fc3053728/C9L10KevinGallo.mp3\" expression=\"full\" duration=\"1319\" fileSize=\"21119946\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3728/36c71dbd-a6e0-4a6e-8792-744fc3053728/C9L10KevinGallo.mp4\" expression=\"full\" duration=\"1319\" fileSize=\"113440520\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3728/36c71dbd-a6e0-4a6e-8792-744fc3053728/C9L10KevinGallo_high.mp4\" expression=\"full\" duration=\"1319\" fileSize=\"795936398\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3728/36c71dbd-a6e0-4a6e-8792-744fc3053728/C9L10KevinGallo_mid.mp4\" expression=\"full\" duration=\"1319\" fileSize=\"457969666\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Distributed Applications with Docker and Service Fabric</title>\n    <description><![CDATA[<p>In this session we meet with Corey Sanders and Mark Fussell to discuss some of the latest Build 2017 announcements</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:844efeed1de147078294a76d014dc447\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L09</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L09</link>\n    <itunes:summary>In this session we meet with Corey Sanders and Mark Fussell to discuss some of the latest Build 2017 announcements </itunes:summary>\n    <itunes:duration>1658</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L09</guid>\n    <dc:creator>Mark Fussell, Seth Juarez, Corey Sanders</dc:creator>\n    <category>docker</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/feec/621c2480-243c-4ae2-b152-48d50619feec/C9L09DistributedApps_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/feec/621c2480-243c-4ae2-b152-48d50619feec/C9L09DistributedApps_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/feec/621c2480-243c-4ae2-b152-48d50619feec/C9L09DistributedApps_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/844efeed1de147078294a76d014dc447/C9L09DistributedApps.mp4\" expression=\"full\" duration=\"1658\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/feec/621c2480-243c-4ae2-b152-48d50619feec/C9L09DistributedApps.mp3\" expression=\"full\" duration=\"1658\" fileSize=\"26540371\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/feec/621c2480-243c-4ae2-b152-48d50619feec/C9L09DistributedApps.mp4\" expression=\"full\" duration=\"1658\" fileSize=\"135923799\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/feec/621c2480-243c-4ae2-b152-48d50619feec/C9L09DistributedApps_high.mp4\" expression=\"full\" duration=\"1658\" fileSize=\"1049351940\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/feec/621c2480-243c-4ae2-b152-48d50619feec/C9L09DistributedApps_mid.mp4\" expression=\"full\" duration=\"1658\" fileSize=\"592245329\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>CosmosDB</title>\n    <description><![CDATA[<p>In this session we meet with Syam Kumar Nair and Seth Juarez to discuss some of the latest Build 2017 announcements around CosmosDB</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:5cd50f88562a4b5da275a76d014dc3ce\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L08</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L08</link>\n    <itunes:summary>In this session we meet with Syam Kumar Nair and Seth Juarez to discuss some of the latest Build 2017 announcements around CosmosDB </itunes:summary>\n    <itunes:duration>1482</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L08</guid>\n    <dc:creator>Seth Juarez, Syam Kumar Nair</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/e9e6/3bbbc92a-ed5b-43bf-9527-b5b15534e9e6/C9L08CosmosDB_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/e9e6/3bbbc92a-ed5b-43bf-9527-b5b15534e9e6/C9L08CosmosDB_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/e9e6/3bbbc92a-ed5b-43bf-9527-b5b15534e9e6/C9L08CosmosDB_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/5cd50f88562a4b5da275a76d014dc3ce/C9L08CosmosDB.mp4\" expression=\"full\" duration=\"1482\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e9e6/3bbbc92a-ed5b-43bf-9527-b5b15534e9e6/C9L08CosmosDB.mp3\" expression=\"full\" duration=\"1482\" fileSize=\"23728842\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e9e6/3bbbc92a-ed5b-43bf-9527-b5b15534e9e6/C9L08CosmosDB.mp4\" expression=\"full\" duration=\"1482\" fileSize=\"76193222\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e9e6/3bbbc92a-ed5b-43bf-9527-b5b15534e9e6/C9L08CosmosDB_high.mp4\" expression=\"full\" duration=\"1482\" fileSize=\"649096073\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e9e6/3bbbc92a-ed5b-43bf-9527-b5b15534e9e6/C9L08CosmosDB_mid.mp4\" expression=\"full\" duration=\"1482\" fileSize=\"352947459\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Azure Cloud Shell</title>\n    <description><![CDATA[<p>In this session we meet with Brendan Burns to discuss some of the latest Azure announcements</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:7d10dec3f7f64103a16ba76d014dc36b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L07</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L07</link>\n    <itunes:summary>In this session we meet with Brendan Burns to discuss some of the latest Azure announcements </itunes:summary>\n    <itunes:duration>1875</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L07</guid>\n    <dc:creator>Charles Torre, Brendan Burns</dc:creator>\n    <category>azure</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/8aaa/2a847310-9251-4c5d-b022-33d621a08aaa/C9L07AzureCloudShell_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8aaa/2a847310-9251-4c5d-b022-33d621a08aaa/C9L07AzureCloudShell_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8aaa/2a847310-9251-4c5d-b022-33d621a08aaa/C9L07AzureCloudShell_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/7d10dec3f7f64103a16ba76d014dc36b/C9L07AzureCloudShell.mp4\" expression=\"full\" duration=\"1875\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8aaa/2a847310-9251-4c5d-b022-33d621a08aaa/C9L07AzureCloudShell.mp3\" expression=\"full\" duration=\"1875\" fileSize=\"30006663\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8aaa/2a847310-9251-4c5d-b022-33d621a08aaa/C9L07AzureCloudShell.mp4\" expression=\"full\" duration=\"1875\" fileSize=\"115534406\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8aaa/2a847310-9251-4c5d-b022-33d621a08aaa/C9L07AzureCloudShell_high.mp4\" expression=\"full\" duration=\"1875\" fileSize=\"884658403\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8aaa/2a847310-9251-4c5d-b022-33d621a08aaa/C9L07AzureCloudShell_mid.mp4\" expression=\"full\" duration=\"1875\" fileSize=\"498423891\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Azure IoT Edge</title>\n    <description><![CDATA[<p>In this session we meet with Sam George to discuss some of the latest Azure announcements</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:d8c816af73a84b84b0cea76d014dc317\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L06</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L06</link>\n    <itunes:summary>In this session we meet with Sam George to discuss some of the latest Azure announcements </itunes:summary>\n    <itunes:duration>1616</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L06</guid>\n    <dc:creator>Seth Juarez, Sam George</dc:creator>\n    <category>azure</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/636c/01f4a8de-0603-4d5b-afe6-b4539743636c/C9L06AzureIoTEdge_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/636c/01f4a8de-0603-4d5b-afe6-b4539743636c/C9L06AzureIoTEdge_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/636c/01f4a8de-0603-4d5b-afe6-b4539743636c/C9L06AzureIoTEdge_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/d8c816af73a84b84b0cea76d014dc317/C9L06AzureIoTEdge.mp4\" expression=\"full\" duration=\"1616\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/636c/01f4a8de-0603-4d5b-afe6-b4539743636c/C9L06AzureIoTEdge.mp3\" expression=\"full\" duration=\"1616\" fileSize=\"25858287\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/636c/01f4a8de-0603-4d5b-afe6-b4539743636c/C9L06AzureIoTEdge.mp4\" expression=\"full\" duration=\"1616\" fileSize=\"111505231\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/636c/01f4a8de-0603-4d5b-afe6-b4539743636c/C9L06AzureIoTEdge_high.mp4\" expression=\"full\" duration=\"1616\" fileSize=\"835974422\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/636c/01f4a8de-0603-4d5b-afe6-b4539743636c/C9L06AzureIoTEdge_mid.mp4\" expression=\"full\" duration=\"1616\" fileSize=\"474969256\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Azure Functions</title>\n    <description><![CDATA[<p>In this session we meet with Chris Anderson and Nir Mashkowski to discuss some of the latest updates around Azure Functions</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:422ac99a3b6d4918bf63a76d014dc2d5\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L05</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L05</link>\n    <itunes:summary>In this session we meet with Chris Anderson and Nir Mashkowski to discuss some of the latest updates around Azure Functions </itunes:summary>\n    <itunes:duration>1633</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L05</guid>\n    <dc:creator>Charles Torre, Nir Mashkowski, Chris Anderson</dc:creator>\n    <category>azure</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/3cab/2bf3ec8b-0d76-4840-bc5c-ecdbd7803cab/C9L05AzureFunctions_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/3cab/2bf3ec8b-0d76-4840-bc5c-ecdbd7803cab/C9L05AzureFunctions_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/3cab/2bf3ec8b-0d76-4840-bc5c-ecdbd7803cab/C9L05AzureFunctions_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/422ac99a3b6d4918bf63a76d014dc2d5/C9L05AzureFunctions.mp4\" expression=\"full\" duration=\"1633\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3cab/2bf3ec8b-0d76-4840-bc5c-ecdbd7803cab/C9L05AzureFunctions.mp3\" expression=\"full\" duration=\"1633\" fileSize=\"26144788\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3cab/2bf3ec8b-0d76-4840-bc5c-ecdbd7803cab/C9L05AzureFunctions.mp4\" expression=\"full\" duration=\"1633\" fileSize=\"136006351\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3cab/2bf3ec8b-0d76-4840-bc5c-ecdbd7803cab/C9L05AzureFunctions_high.mp4\" expression=\"full\" duration=\"1633\" fileSize=\"999784878\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3cab/2bf3ec8b-0d76-4840-bc5c-ecdbd7803cab/C9L05AzureFunctions_mid.mp4\" expression=\"full\" duration=\"1633\" fileSize=\"567712490\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Azure Database for PostgreSQL and MySQL</title>\n    <description><![CDATA[<p>Join our Channel 9 Live session with Tony Petrossian, Sunil Kamath, Jason M. Anderson, and Gebi Liang to discuss the latest Azure announcements from Build 2017</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:34c23f5bb6444fe39b1da76d014dc281\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L04</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L04</link>\n    <itunes:summary>Join our Channel 9 Live session with Tony Petrossian, Sunil Kamath, Jason M. Anderson, and Gebi Liang to discuss the latest Azure announcements from Build 2017 </itunes:summary>\n    <itunes:duration>1719</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L04</guid>\n    <dc:creator>Tony Petrossian, Seth Juarez, Gebi Liang, Jason M. Anderson, Sunil Kamath</dc:creator>\n    <category>azure</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/8b1e/8a6053ec-508a-48ab-aca8-9167b7cb8b1e/C9L04AzureDBPostgreSQLMySQL_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/34c23f5bb6444fe39b1da76d014dc281/C9L04AzureDBPostgreSQLMySQL.mp4\" expression=\"full\" duration=\"1719\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8b1e/8a6053ec-508a-48ab-aca8-9167b7cb8b1e/C9L04AzureDBPostgreSQLMySQL.mp3\" expression=\"full\" duration=\"1719\" fileSize=\"27515347\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8b1e/8a6053ec-508a-48ab-aca8-9167b7cb8b1e/C9L04AzureDBPostgreSQLMySQL.mp4\" expression=\"full\" duration=\"1719\" fileSize=\"125780973\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8b1e/8a6053ec-508a-48ab-aca8-9167b7cb8b1e/C9L04AzureDBPostgreSQLMySQL_high.mp4\" expression=\"full\" duration=\"1719\" fileSize=\"955392668\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8b1e/8a6053ec-508a-48ab-aca8-9167b7cb8b1e/C9L04AzureDBPostgreSQLMySQL_mid.mp4\" expression=\"full\" duration=\"1719\" fileSize=\"535521080\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Project Emma - Empowering people with Parkinson&#39;s</title>\n    <description><![CDATA[<p>In this session, we find out how technologies are being used to improve the lives of those with Parkinson's disease</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:53606af08b7c480eaf96a76d014dc1e1\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L03</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L03</link>\n    <itunes:summary>In this session, we find out how technologies are being used to improve the lives of those with Parkinson&#39;s disease </itunes:summary>\n    <itunes:duration>1233</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L03</guid>\n    <dc:creator>Seth Juarez, Haiyan Zhang, Emma Lawton</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/b1de/300525fd-6aa3-43c0-bef0-ec88616db1de/C9LProjectEmma_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/b1de/300525fd-6aa3-43c0-bef0-ec88616db1de/C9LProjectEmma_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/b1de/300525fd-6aa3-43c0-bef0-ec88616db1de/C9LProjectEmma_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/53606af08b7c480eaf96a76d014dc1e1/C9LProjectEmma.mp4\" expression=\"full\" duration=\"1233\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b1de/300525fd-6aa3-43c0-bef0-ec88616db1de/C9LProjectEmma.mp3\" expression=\"full\" duration=\"1233\" fileSize=\"19741386\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b1de/300525fd-6aa3-43c0-bef0-ec88616db1de/C9LProjectEmma.mp4\" expression=\"full\" duration=\"1233\" fileSize=\"88151318\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b1de/300525fd-6aa3-43c0-bef0-ec88616db1de/C9LProjectEmma_high.mp4\" expression=\"full\" duration=\"1233\" fileSize=\"700582326\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b1de/300525fd-6aa3-43c0-bef0-ec88616db1de/C9LProjectEmma_mid.mp4\" expression=\"full\" duration=\"1233\" fileSize=\"394740820\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Microsoft AI</title>\n    <description><![CDATA[<p>Join&nbsp;Steven Guggenheimer and Seth Juarez to find out about their latest AI updates</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:ee5fbd3df0554fe39d39a76d014dc159\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L02</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L02</link>\n    <itunes:summary>Join Steven Guggenheimer and Seth Juarez to find out about their latest AI updates </itunes:summary>\n    <itunes:duration>1655</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L02</guid>\n    <dc:creator>Seth Juarez, Steven Guggenheimer</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/a671/4403dbed-68ce-4abf-9e17-bf427f64a671/C9L02MSFTAI_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/a671/4403dbed-68ce-4abf-9e17-bf427f64a671/C9L02MSFTAI_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/a671/4403dbed-68ce-4abf-9e17-bf427f64a671/C9L02MSFTAI_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/ee5fbd3df0554fe39d39a76d014dc159/C9L02MSFTAI.mp4\" expression=\"full\" duration=\"1655\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a671/4403dbed-68ce-4abf-9e17-bf427f64a671/C9L02MSFTAI.mp3\" expression=\"full\" duration=\"1655\" fileSize=\"26496330\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a671/4403dbed-68ce-4abf-9e17-bf427f64a671/C9L02MSFTAI.mp4\" expression=\"full\" duration=\"1655\" fileSize=\"121065804\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a671/4403dbed-68ce-4abf-9e17-bf427f64a671/C9L02MSFTAI_high.mp4\" expression=\"full\" duration=\"1655\" fileSize=\"948504113\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a671/4403dbed-68ce-4abf-9e17-bf427f64a671/C9L02MSFTAI_mid.mp4\" expression=\"full\" duration=\"1655\" fileSize=\"531956033\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Keynote Recap with Scott Guthrie</title>\n    <description><![CDATA[<p>In this session we discuss some of the news and announcements from the day 1 keynote of Build 2017</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:017e63c941264a339e95a76d014dc11b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/C9L01</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/C9L01</link>\n    <itunes:summary>In this session we discuss some of the news and announcements from the day 1 keynote of Build 2017 </itunes:summary>\n    <itunes:duration>1587</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/C9L01</guid>\n    <dc:creator>Seth Juarez, Scott Guthrie</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/12b1/809a1eca-294d-4a24-a2ee-e389156a12b1/C9L01KeynoteRecap_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/12b1/809a1eca-294d-4a24-a2ee-e389156a12b1/C9L01KeynoteRecap_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/12b1/809a1eca-294d-4a24-a2ee-e389156a12b1/C9L01KeynoteRecap_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://ch9northcentralus.blob.core.windows.net/mfupload/017e63c941264a339e95a76d014dc11b/C9L01KeynoteRecap.mp4\" expression=\"full\" duration=\"1587\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/12b1/809a1eca-294d-4a24-a2ee-e389156a12b1/C9L01KeynoteRecap.mp3\" expression=\"full\" duration=\"1587\" fileSize=\"25406154\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/12b1/809a1eca-294d-4a24-a2ee-e389156a12b1/C9L01KeynoteRecap.mp4\" expression=\"full\" duration=\"1587\" fileSize=\"124741279\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/12b1/809a1eca-294d-4a24-a2ee-e389156a12b1/C9L01KeynoteRecap_high.mp4\" expression=\"full\" duration=\"1587\" fileSize=\"927761844\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/12b1/809a1eca-294d-4a24-a2ee-e389156a12b1/C9L01KeynoteRecap_mid.mp4\" expression=\"full\" duration=\"1587\" fileSize=\"530714857\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Jig.Space: Using 3D game technology in progressive web apps with BabylonJS</title>\n    <description><![CDATA[Join Jig.Space to learn how to apply technology that's usually reserved for games in non-gaming applications. Devs with a gaming background will find a wealth of information about applything those skills to progress web apps. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:38df642231af40b5ade0a76d010c88e7\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6098-R3</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6098-R3</link>\n    <itunes:summary>Join Jig.Space to learn how to apply technology that&#39;s usually reserved for games in non-gaming applications. Devs with a gaming background will find a wealth of information about applything those skills to progress web apps.</itunes:summary>\n    <itunes:duration>955</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6098-R3</guid>\n    <dc:creator>Numa Berton, Zac Duff</dc:creator>\n    <category>web+platform</category>\n    <category>media</category>\n    <category>mixed+reality</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/c683/c3c55d60-6535-4c3d-9407-0ec7dfc5c683/T6098-R3_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c683/c3c55d60-6535-4c3d-9407-0ec7dfc5c683/T6098-R3_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c683/c3c55d60-6535-4c3d-9407-0ec7dfc5c683/T6098-R3_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c683/c3c55d60-6535-4c3d-9407-0ec7dfc5c683/T6098-R3.mp3\" expression=\"full\" duration=\"955\" fileSize=\"15294223\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c683/c3c55d60-6535-4c3d-9407-0ec7dfc5c683/T6098-R3.mp4\" expression=\"full\" duration=\"955\" fileSize=\"19158710\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c683/c3c55d60-6535-4c3d-9407-0ec7dfc5c683/T6098-R3_high.mp4\" expression=\"full\" duration=\"955\" fileSize=\"136441478\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c683/c3c55d60-6535-4c3d-9407-0ec7dfc5c683/T6098-R3_mid.mp4\" expression=\"full\" duration=\"955\" fileSize=\"41711487\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6098-R3.mp4\" expression=\"full\" duration=\"955\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Sketchable and Surface Dial Integration</title>\n    <description><![CDATA[Sketchable is a hybrid journal and canvas application that allows users to scribble a note, snap, and edit a picture, or paint a masterpiece using ink. During this session, Sketchable details their integration with the Surface Dial and showcases how they have been able to utilize the new APIs in Windows Creator’s update to provide a more customized user experience using both ink and Dial. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:6d5944854af64309b64ea76d010c8872\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6095-R3</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6095-R3</link>\n    <itunes:summary>Sketchable is a hybrid journal and canvas application that allows users to scribble a note, snap, and edit a picture, or paint a masterpiece using ink. During this session, Sketchable details their integration with the Surface Dial and showcases how they have been able to utilize the new APIs in Windows Creator’s update to provide a more customized user experience using both ink and Dial.</itunes:summary>\n    <itunes:duration>855</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6095-R3</guid>\n    <dc:creator>Miles Harris, Ryan Harris</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/d693/bcdc1f26-4c85-4d42-927e-1314bcb1d693/T6095-R3_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/d693/bcdc1f26-4c85-4d42-927e-1314bcb1d693/T6095-R3_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/d693/bcdc1f26-4c85-4d42-927e-1314bcb1d693/T6095-R3_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d693/bcdc1f26-4c85-4d42-927e-1314bcb1d693/T6095-R3.mp3\" expression=\"full\" duration=\"855\" fileSize=\"13691082\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d693/bcdc1f26-4c85-4d42-927e-1314bcb1d693/T6095-R3.mp4\" expression=\"full\" duration=\"855\" fileSize=\"19523644\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d693/bcdc1f26-4c85-4d42-927e-1314bcb1d693/T6095-R3_high.mp4\" expression=\"full\" duration=\"855\" fileSize=\"277908584\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d693/bcdc1f26-4c85-4d42-927e-1314bcb1d693/T6095-R3_mid.mp4\" expression=\"full\" duration=\"855\" fileSize=\"61754024\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6095-R3.mp4\" expression=\"full\" duration=\"855\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Node.js everywhere</title>\n    <description><![CDATA[The traditional full stack was web frontend development and cloud platform backend work, but if you talk to developers today this has vastly changed. A new full stack is emerging that includes the traditional web frontend and cloud platform backend, but also includes mobile phones and tablets, API services, desktop (who thought that would explode?) and IoT. Developers are tasked to build and manage one application that has to manage all of this. And, the program environment of choice for the full stack developer: Node.js. This presentation is delivered by the Node.js Foundation community manager, who talks a bit about the history of Node.js; why it's becoming the first choice for the full stack developer; and how Node.js functions everywhere from web frontend development to IoT to create a single platform for developers to create the herculean applications of today. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:68f855d0f670428a92c3a76d010c8830\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6056</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6056</link>\n    <itunes:summary>The traditional full stack was web frontend development and cloud platform backend work, but if you talk to developers today this has vastly changed. A new full stack is emerging that includes the traditional web frontend and cloud platform backend, but also includes mobile phones and tablets, API services, desktop (who thought that would explode?) and IoT. Developers are tasked to build and manage one application that has to manage all of this. And, the program environment of choice for the full stack developer: Node.js. This presentation is delivered by the Node.js Foundation community manager, who talks a bit about the history of Node.js; why it&#39;s becoming the first choice for the full stack developer; and how Node.js functions everywhere from web frontend development to IoT to create a single platform for developers to create the herculean applications of today.</itunes:summary>\n    <itunes:duration>829</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6056</guid>\n    <dc:creator>Mikeal Rogers</dc:creator>\n    <category>internet+of+things</category>\n    <category>node.js</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/e092/ed65024c-c182-486b-905a-f5b03766e092/T6056_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e092/ed65024c-c182-486b-905a-f5b03766e092/T6056_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e092/ed65024c-c182-486b-905a-f5b03766e092/T6056_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e092/ed65024c-c182-486b-905a-f5b03766e092/T6056.mp3\" expression=\"full\" duration=\"829\" fileSize=\"13271568\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e092/ed65024c-c182-486b-905a-f5b03766e092/T6056.mp4\" expression=\"full\" duration=\"829\" fileSize=\"15492748\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e092/ed65024c-c182-486b-905a-f5b03766e092/T6056_high.mp4\" expression=\"full\" duration=\"829\" fileSize=\"73027778\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e092/ed65024c-c182-486b-905a-f5b03766e092/T6056_mid.mp4\" expression=\"full\" duration=\"829\" fileSize=\"30185552\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6056.mp4\" expression=\"full\" duration=\"829\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>App engagement in Windows Timeline and Cortana with User Activities and Project Rome</title>\n    <description><![CDATA[Learn how to make your app integrate with the Activity Cloud in Windows Timeline and Cortana to supercharge app engagement. Use the new UserActivity API, Apps for Website (AFW), Adaptive Cards and MS Graph to tell Windows and Cortana how and when to get customer back into you app.&nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:02946f3f737747deb667a76d010c87dc\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8108</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8108</link>\n    <itunes:summary>Learn how to make your app integrate with the Activity Cloud in Windows Timeline and Cortana to supercharge app engagement. Use the new UserActivity API, Apps for Website (AFW), Adaptive Cards and MS Graph to tell Windows and Cortana how and when to get customer back into you app. </itunes:summary>\n    <itunes:duration>2845</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8108</guid>\n    <dc:creator>Shawn Henry, Juan Oviedo</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/1a6f/b27a1e25-5670-46e9-9d88-8023d95b1a6f/B8108_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1a6f/b27a1e25-5670-46e9-9d88-8023d95b1a6f/B8108.mp3\" expression=\"full\" duration=\"2845\" fileSize=\"45523530\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1a6f/b27a1e25-5670-46e9-9d88-8023d95b1a6f/B8108.mp4\" expression=\"full\" duration=\"2845\" fileSize=\"53069545\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1a6f/b27a1e25-5670-46e9-9d88-8023d95b1a6f/B8108_high.mp4\" expression=\"full\" duration=\"2845\" fileSize=\"424773777\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1a6f/b27a1e25-5670-46e9-9d88-8023d95b1a6f/B8108_mid.mp4\" expression=\"full\" duration=\"2845\" fileSize=\"111182436\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8108.mp4\" expression=\"full\" duration=\"2845\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Introducing Fluent Design\n</title>\n    <description><![CDATA[Microsoft is advancing its design system with Fluent Design to engage users, empower creators, and scale to a new generation of devices and inputs. Come learn about this transformation of the design principles, visuals, and interactions and the opportunity it represents for you. See how Fluent Design is being applied across Windows 10 devices and apps to create beautiful, engaging, and intuitive experiences. Get a sneak peek at the great support for Fluent Design across guidelines, platform, and tools. Join us and other designers, developers, and creators of all kinds as we all become Fluent. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:7daf4e4afa174c56bf44a76d010c8770\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8066</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8066</link>\n    <itunes:summary>Microsoft is advancing its design system with Fluent Design to engage users, empower creators, and scale to a new generation of devices and inputs. Come learn about this transformation of the design principles, visuals, and interactions and the opportunity it represents for you. See how Fluent Design is being applied across Windows 10 devices and apps to create beautiful, engaging, and intuitive experiences. Get a sneak peek at the great support for Fluent Design across guidelines, platform, and tools. Join us and other designers, developers, and creators of all kinds as we all become Fluent.</itunes:summary>\n    <itunes:duration>3234</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8066</guid>\n    <dc:creator>Paul Gusmorino, Bojana Ostojic</dc:creator>\n    <category>ux</category>\n    <category>universal+windows+platform+uwp</category>\n    <category>design</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/72b4/4bd55f40-063d-4dd9-b9af-abdb7d0e72b4/B8066_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/72b4/4bd55f40-063d-4dd9-b9af-abdb7d0e72b4/B8066.mp3\" expression=\"full\" duration=\"3234\" fileSize=\"51748034\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/72b4/4bd55f40-063d-4dd9-b9af-abdb7d0e72b4/B8066.mp4\" expression=\"full\" duration=\"3234\" fileSize=\"88379141\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/72b4/4bd55f40-063d-4dd9-b9af-abdb7d0e72b4/B8066_high.mp4\" expression=\"full\" duration=\"3234\" fileSize=\"898123657\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/72b4/4bd55f40-063d-4dd9-b9af-abdb7d0e72b4/B8066_mid.mp4\" expression=\"full\" duration=\"3234\" fileSize=\"235786815\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8066.mp4\" expression=\"full\" duration=\"3234\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Build Amazing Apps with Fluent Design</title>\n    <description><![CDATA[An app with Fluent Design draws you in and makes you want to use it. It’s smooth. It’s effortless. It’s beautiful. In this session, we’ll show you how easy it is to use familiar technologies like XAML and C# to create apps that bring Fluent Design to life on Windows 10 across a range of devices and inputs. We’ll cover the different elements of the design system and how to use the latest controls, animations, effects, and other platform capabilities to captivate your customers. We’ll build an app together showing the source and sharing guidelines, tips, tricks, and other resources. We’ll channel our creative energy, we’ll transcend our medium, and we’ll code a Fluent Design experience. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:8e2d5790c8fa4e37893ba76d010c86d5\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8034</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8034</link>\n    <itunes:summary>An app with Fluent Design draws you in and makes you want to use it. It’s smooth. It’s effortless. It’s beautiful. In this session, we’ll show you how easy it is to use familiar technologies like XAML and C# to create apps that bring Fluent Design to life on Windows 10 across a range of devices and inputs. We’ll cover the different elements of the design system and how to use the latest controls, animations, effects, and other platform capabilities to captivate your customers. We’ll build an app together showing the source and sharing guidelines, tips, tricks, and other resources. We’ll channel our creative energy, we’ll transcend our medium, and we’ll code a Fluent Design experience.</itunes:summary>\n    <itunes:duration>3655</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8034</guid>\n    <dc:creator>James Clarke, Paul Gusmorino</dc:creator>\n    <category>ux</category>\n    <category>universal+windows+platform+uwp</category>\n    <category>effects+-and-+animation</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/2534/8c18600e-d457-4c24-9537-0c39a7cc2534/B8034_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2534/8c18600e-d457-4c24-9537-0c39a7cc2534/B8034_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2534/8c18600e-d457-4c24-9537-0c39a7cc2534/B8034_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2534/8c18600e-d457-4c24-9537-0c39a7cc2534/B8034.mp3\" expression=\"full\" duration=\"3655\" fileSize=\"58489607\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2534/8c18600e-d457-4c24-9537-0c39a7cc2534/B8034.mp4\" expression=\"full\" duration=\"3655\" fileSize=\"82297630\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2534/8c18600e-d457-4c24-9537-0c39a7cc2534/B8034_high.mp4\" expression=\"full\" duration=\"3655\" fileSize=\"837659282\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2534/8c18600e-d457-4c24-9537-0c39a7cc2534/B8034_mid.mp4\" expression=\"full\" duration=\"3655\" fileSize=\"207183327\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8034.mp4\" expression=\"full\" duration=\"3655\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Microsoft Security Risk Detection – Artificial Intelligence Powered Risk Detection for Your Applications</title>\n    <description><![CDATA[Microsoft Security Risk Detection, formerly “Project Springfield,” packages pioneering artificial intelligence into a scalable cloud service that helps you find issues in code you build, code you buy, or code you are moving to the cloud. You will see how Security Risk Detection fits into these scenarios. You will learn about the issues Security Risk Detection can help you find and actions you can take. Finally, watch to the end for a new frontier in Microsoft’s journey to help developers everywhere be more secure. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:2e4ab48f44834a839247a76d010c8665\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6076</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6076</link>\n    <itunes:summary>Microsoft Security Risk Detection, formerly “Project Springfield,” packages pioneering artificial intelligence into a scalable cloud service that helps you find issues in code you build, code you buy, or code you are moving to the cloud. You will see how Security Risk Detection fits into these scenarios. You will learn about the issues Security Risk Detection can help you find and actions you can take. Finally, watch to the end for a new frontier in Microsoft’s journey to help developers everywhere be more secure.</itunes:summary>\n    <itunes:duration>959</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6076</guid>\n    <dc:creator>David Molnar</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>security</category>\n    <category>risk+detection</category>\n    <category>openid+connect</category>\n    <category>postgresql</category>\n    <category>postgres</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/1175/563c6dfc-54d5-4621-a34c-8e832dbd1175/T6076_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1175/563c6dfc-54d5-4621-a34c-8e832dbd1175/T6076.mp3\" expression=\"full\" duration=\"959\" fileSize=\"15351503\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1175/563c6dfc-54d5-4621-a34c-8e832dbd1175/T6076.mp4\" expression=\"full\" duration=\"959\" fileSize=\"19080629\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1175/563c6dfc-54d5-4621-a34c-8e832dbd1175/T6076_high.mp4\" expression=\"full\" duration=\"959\" fileSize=\"137809388\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1175/563c6dfc-54d5-4621-a34c-8e832dbd1175/T6076_mid.mp4\" expression=\"full\" duration=\"959\" fileSize=\"40674904\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6076.mp4\" expression=\"full\" duration=\"959\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Azure Resource Manager templates: Life after (first) deployment</title>\n    <description><![CDATA[This session explores new capabilities which simplify template authoring, best practices for template-driven upgrades, and integrated instrumentation with Azure Monitor. It covers sharing and monetizing templates with ARM Service Catalog and Managed Applications, and how to orchestrate bulk deployments with Azure Deployment Manager. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:e420c0820251450e99bfa76d010c8567\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8107</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8107</link>\n    <itunes:summary>This session explores new capabilities which simplify template authoring, best practices for template-driven upgrades, and integrated instrumentation with Azure Monitor. It covers sharing and monetizing templates with ARM Service Catalog and Managed Applications, and how to orchestrate bulk deployments with Azure Deployment Manager.</itunes:summary>\n    <itunes:duration>3620</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8107</guid>\n    <dc:creator>Ryan Jones</dc:creator>\n    <category>azure</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/37df/e08fa57d-f8e0-44c0-8206-ad6816bb37df/B8107RyanJones_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/37df/e08fa57d-f8e0-44c0-8206-ad6816bb37df/B8107RyanJones_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/37df/e08fa57d-f8e0-44c0-8206-ad6816bb37df/B8107RyanJones_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/37df/e08fa57d-f8e0-44c0-8206-ad6816bb37df/B8107RyanJones.mp3\" expression=\"full\" duration=\"3620\" fileSize=\"57932753\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/37df/e08fa57d-f8e0-44c0-8206-ad6816bb37df/B8107RyanJones.mp4\" expression=\"full\" duration=\"3620\" fileSize=\"67228100\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/37df/e08fa57d-f8e0-44c0-8206-ad6816bb37df/B8107RyanJones_high.mp4\" expression=\"full\" duration=\"3620\" fileSize=\"202213743\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/37df/e08fa57d-f8e0-44c0-8206-ad6816bb37df/B8107RyanJones_mid.mp4\" expression=\"full\" duration=\"3620\" fileSize=\"143870492\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8107.mp4\" expression=\"full\" duration=\"3620\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Security testing in the cloud, at scale using Microsoft Security Risk Detection</title>\n    <description><![CDATA[Microsoft Security Risk Detection, formerly “Project Springfield,” packages pioneering artificial intelligence into a scalable cloud service that helps you find issues in code you build, code you buy, or code you are moving to the cloud. You will see how Security Risk Detection fits into these scenarios. You will learn about the issues Security Risk Detection can help you find and actions you can take. Finally, watch to the end for a new frontier in Microsoft’s journey to help developers everywhere be more secure. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:00f5249331ae4eb99258a76d010c8522\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8077</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8077</link>\n    <itunes:summary>Microsoft Security Risk Detection, formerly “Project Springfield,” packages pioneering artificial intelligence into a scalable cloud service that helps you find issues in code you build, code you buy, or code you are moving to the cloud. You will see how Security Risk Detection fits into these scenarios. You will learn about the issues Security Risk Detection can help you find and actions you can take. Finally, watch to the end for a new frontier in Microsoft’s journey to help developers everywhere be more secure.</itunes:summary>\n    <itunes:duration>2397</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8077</guid>\n    <dc:creator>Dave Tamasi</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>security</category>\n    <category>risk+detection</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/3ac9/63ebc087-26fc-45f6-b36d-fedb46ce3ac9/B8077_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3ac9/63ebc087-26fc-45f6-b36d-fedb46ce3ac9/B8077.mp3\" expression=\"full\" duration=\"2397\" fileSize=\"38357662\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3ac9/63ebc087-26fc-45f6-b36d-fedb46ce3ac9/B8077.mp4\" expression=\"full\" duration=\"2397\" fileSize=\"49671436\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3ac9/63ebc087-26fc-45f6-b36d-fedb46ce3ac9/B8077_high.mp4\" expression=\"full\" duration=\"2397\" fileSize=\"589879248\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3ac9/63ebc087-26fc-45f6-b36d-fedb46ce3ac9/B8077_mid.mp4\" expression=\"full\" duration=\"2397\" fileSize=\"136923649\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8077.mp4\" expression=\"full\" duration=\"2397\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Enabling intelligence at the edge with Azure IoT Edge\n</title>\n    <description><![CDATA[IoT scenarios in many verticals require a combination of intelligence at the edge, and the power of cloud. Distributing and optimizing how much processing will happen on the edge and how much in the cloud remains an interesting design challenge to enable hybrid scenarios. Azure IoT provides the ability to deploy, update, orchestrate, and monitor a variety of workloads, including advanced analytics, at the edge. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:794a07cfe26049b285a7a76d010c848b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8049</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8049</link>\n    <itunes:summary>IoT scenarios in many verticals require a combination of intelligence at the edge, and the power of cloud. Distributing and optimizing how much processing will happen on the edge and how much in the cloud remains an interesting design challenge to enable hybrid scenarios. Azure IoT provides the ability to deploy, update, orchestrate, and monitor a variety of workloads, including advanced analytics, at the edge.</itunes:summary>\n    <itunes:duration>3155</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8049</guid>\n    <dc:creator>Briton Zurcher, Sam George, Arjmand Samuel</dc:creator>\n    <category>internet+of+things</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/4c87/fced9619-3886-45a5-aa31-9a94b22e4c87/Build2017B8049_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4c87/fced9619-3886-45a5-aa31-9a94b22e4c87/Build2017B8049_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4c87/fced9619-3886-45a5-aa31-9a94b22e4c87/Build2017B8049_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4c87/fced9619-3886-45a5-aa31-9a94b22e4c87/Build2017B8049.mp3\" expression=\"full\" duration=\"3155\" fileSize=\"50496620\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4c87/fced9619-3886-45a5-aa31-9a94b22e4c87/Build2017B8049.mp4\" expression=\"full\" duration=\"3155\" fileSize=\"62604088\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4c87/fced9619-3886-45a5-aa31-9a94b22e4c87/Build2017B8049_high.mp4\" expression=\"full\" duration=\"3155\" fileSize=\"494165249\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4c87/fced9619-3886-45a5-aa31-9a94b22e4c87/Build2017B8049_mid.mp4\" expression=\"full\" duration=\"3155\" fileSize=\"148531988\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8049.mp4\" expression=\"full\" duration=\"3155\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How to build globally-distributed, fast, billion-user applications with Azure Cosmos DB</title>\n    <description><![CDATA[<p>Join this session to learn about the NEW Azure Cosmos DB, Microsoft’s globally distributed database service designed to enable you to build planet-scale applications. We will help you understand how to start leveraging Cosmos DB for your applications and discuss some of its differentiating features. We will talk about its multi-model (Key-Value, Document &amp; Graph Database) capability and show you how easy it is to port over your existing code and data from popular open source NoSQL Databases. In this session, we will also be inviting customers on stage to discuss their experiences using the service to build scalable applications. By the end of this session, you will have learned how you can use Cosmos DB in a variety of scenarios including fraud detection, event messaging, IoT sensor-data anomaly detection and online recommendations and personalization.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:03647429c9ea4db8ab54a76d010c8411\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8047</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8047</link>\n    <itunes:summary>Join this session to learn about the NEW Azure Cosmos DB, Microsoft’s globally distributed database service designed to enable you to build planet-scale applications. We will help you understand how to start leveraging Cosmos DB for your applications and discuss some of its differentiating features. We will talk about its multi-model (Key-Value, Document &amp;amp; Graph Database) capability and show you how easy it is to port over your existing code and data from popular open source NoSQL Databases. In this session, we will also be inviting customers on stage to discuss their experiences using the service to build scalable applications. By the end of this session, you will have learned how you can use Cosmos DB in a variety of scenarios including fraud detection, event messaging, IoT sensor-data anomaly detection and online recommendations and personalization. </itunes:summary>\n    <itunes:duration>2987</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8047</guid>\n    <dc:creator>Rimma Nehme, Erik Paulson, Stephen Stchur</dc:creator>\n    <category>game+development</category>\n    <category>nosql</category>\n    <category>documentdb</category>\n    <category>cosmos+db</category>\n    <category>graph+database</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/5995/101850ba-0324-41b4-851b-5bf63d315995/B8047_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5995/101850ba-0324-41b4-851b-5bf63d315995/B8047.mp3\" expression=\"full\" duration=\"2987\" fileSize=\"47793711\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5995/101850ba-0324-41b4-851b-5bf63d315995/B8047.mp4\" expression=\"full\" duration=\"2987\" fileSize=\"58826364\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5995/101850ba-0324-41b4-851b-5bf63d315995/B8047_high.mp4\" expression=\"full\" duration=\"2987\" fileSize=\"482659042\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5995/101850ba-0324-41b4-851b-5bf63d315995/B8047_mid.mp4\" expression=\"full\" duration=\"2987\" fileSize=\"138325670\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8047.mp4\" expression=\"full\" duration=\"2987\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How to get started with the new Azure DBMS for PostgreSQL. </title>\n    <description><![CDATA[Join this session to learn about Microsoft’s latest announcement of managed PostgreSQL database on Azure. In this breakout, we will learn from two early adopting customers, how they've leveraged this latest database service to innovate faster. We will learn from their experience of using the managed PostgreSQL service, including migrating to the service, and discuss next steps in their application journey. We will walk through some of the key service features and discuss how you as a developer can migrate your existing applications or develop new applications that use this managed PostgreSQL in Azure. If you’re a developer with applications that use PostgreSQL today, whether on-premises or cloud, and want to learn about how this new managed service can help, this session is for you! <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:8cfd2f61ae3f422ea756a76d010c834c\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8046</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8046</link>\n    <itunes:summary>Join this session to learn about Microsoft’s latest announcement of managed PostgreSQL database on Azure. In this breakout, we will learn from two early adopting customers, how they&#39;ve leveraged this latest database service to innovate faster. We will learn from their experience of using the managed PostgreSQL service, including migrating to the service, and discuss next steps in their application journey. We will walk through some of the key service features and discuss how you as a developer can migrate your existing applications or develop new applications that use this managed PostgreSQL in Azure. If you’re a developer with applications that use PostgreSQL today, whether on-premises or cloud, and want to learn about how this new managed service can help, this session is for you!</itunes:summary>\n    <itunes:duration>3414</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8046</guid>\n    <dc:creator>Eric Spear, Irakliy Khaburzaniya, Sunil Kamath</dc:creator>\n    <category>data</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/0104/dcc82557-0636-4621-ab02-658258310104/B8046_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0104/dcc82557-0636-4621-ab02-658258310104/B8046.mp3\" expression=\"full\" duration=\"3414\" fileSize=\"54636908\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0104/dcc82557-0636-4621-ab02-658258310104/B8046.mp4\" expression=\"full\" duration=\"3414\" fileSize=\"62339544\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0104/dcc82557-0636-4621-ab02-658258310104/B8046_high.mp4\" expression=\"full\" duration=\"3414\" fileSize=\"502958453\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0104/dcc82557-0636-4621-ab02-658258310104/B8046_mid.mp4\" expression=\"full\" duration=\"3414\" fileSize=\"140635796\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8046.mp4\" expression=\"full\" duration=\"3414\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How to get started with the new Azure DBMS for MySQL. </title>\n    <description><![CDATA[Join this session to learn about Microsoft’s managed MySQL offering in Azure. We’ll walk through Microsoft’s strategy for supporting Open-Source database systems in Azure and what it means to you as a developer as you look to develop or deploy applications that use MySQL in Azure. An overview of the architecture of the service along with how Azure Database for MySQL is integrated with other Azure Services such as Web Apps will also be discussed and demo’d. If you’re a developer with applications using MySQL today, whether on-prem or already in Azure today, this session is for you! <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:8a55cdb4de364657af61a76d010c8246\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8045</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8045</link>\n    <itunes:summary>Join this session to learn about Microsoft’s managed MySQL offering in Azure. We’ll walk through Microsoft’s strategy for supporting Open-Source database systems in Azure and what it means to you as a developer as you look to develop or deploy applications that use MySQL in Azure. An overview of the architecture of the service along with how Azure Database for MySQL is integrated with other Azure Services such as Web Apps will also be discussed and demo’d. If you’re a developer with applications using MySQL today, whether on-prem or already in Azure today, this session is for you!</itunes:summary>\n    <itunes:duration>3723</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8045</guid>\n    <dc:creator>Gebi Liang, Jason M. Anderson, Matt Williams</dc:creator>\n    <category>data</category>\n    <category>mysql</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/43de/3b558c63-ee7c-4ee4-bdad-4e7e8e3543de/B8045_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/43de/3b558c63-ee7c-4ee4-bdad-4e7e8e3543de/B8045.mp3\" expression=\"full\" duration=\"3723\" fileSize=\"59583591\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/43de/3b558c63-ee7c-4ee4-bdad-4e7e8e3543de/B8045.mp4\" expression=\"full\" duration=\"3723\" fileSize=\"74004220\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/43de/3b558c63-ee7c-4ee4-bdad-4e7e8e3543de/B8045_high.mp4\" expression=\"full\" duration=\"3723\" fileSize=\"665423779\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/43de/3b558c63-ee7c-4ee4-bdad-4e7e8e3543de/B8045_mid.mp4\" expression=\"full\" duration=\"3723\" fileSize=\"175466031\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8045.mp4\" expression=\"full\" duration=\"3723\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Snapshot debugging and profiling in Microsoft Azure: Next generation diagnostics for your in-production cloud apps</title>\n    <description><![CDATA[This session showcases the latest in tooling that will streamline your processes to resolve issues that you might encounter in your apps deployed to the cloud. Do you add logging, redeploy, and reiterate today? Do you wish you could inspect code on all server nodes without affecting performance or pausing execution? We go demo-heavy, so you get to know the capabilities of the new Visual Studio Snapshot Debugger in a production environment. Also, see how automatic snapshotting and profiling features of Application Insights will help you detect logic and performance issues in your production app and amaze your boss as you rapidly pinpoint the line of code that requires fixing. Come prepared to leave with new insight! <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:5d91cc4d340c482d973aa76d010c817c\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8027</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8027</link>\n    <itunes:summary>This session showcases the latest in tooling that will streamline your processes to resolve issues that you might encounter in your apps deployed to the cloud. Do you add logging, redeploy, and reiterate today? Do you wish you could inspect code on all server nodes without affecting performance or pausing execution? We go demo-heavy, so you get to know the capabilities of the new Visual Studio Snapshot Debugger in a production environment. Also, see how automatic snapshotting and profiling features of Application Insights will help you detect logic and performance issues in your production app and amaze your boss as you rapidly pinpoint the line of code that requires fixing. Come prepared to leave with new insight!</itunes:summary>\n    <itunes:duration>3582</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8027</guid>\n    <dc:creator>Dan Taylor, Nikhil Joglekar</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/4add/f7e6a1cd-40a8-4972-8389-c44dd16a4add/B8027_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4add/f7e6a1cd-40a8-4972-8389-c44dd16a4add/B8027.mp3\" expression=\"full\" duration=\"3582\" fileSize=\"57318474\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4add/f7e6a1cd-40a8-4972-8389-c44dd16a4add/B8027.mp4\" expression=\"full\" duration=\"3582\" fileSize=\"74005184\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4add/f7e6a1cd-40a8-4972-8389-c44dd16a4add/B8027_high.mp4\" expression=\"full\" duration=\"3582\" fileSize=\"749697802\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4add/f7e6a1cd-40a8-4972-8389-c44dd16a4add/B8027_mid.mp4\" expression=\"full\" duration=\"3582\" fileSize=\"177125171\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8027.mp4\" expression=\"full\" duration=\"3582\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Cloud4Good: Building an inclusive chat bot for athletes with disabilities</title>\n    <description><![CDATA[<p>In February 2017, Microsoft Canada partnered with viaSport British Columbia to build an inclusive chat bot for athletes with disabilities. In this session, we demo how the Microsoft Bot Framework and Microsoft Cognitive Services APIs were used to build an bot to streamline access to highly relevant resources for people in the inclusive sporting community; improve the tone in conversations around disabilities by correcting offensive and outdated terminology; and provide viaSport with a richer way to understand and serve this community. #Cloud4Good Technologies showcased: Bot Framework, Language Understanding Intelligent Service (LUIS) API, Bing Web Search, Bing Spell Check</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:b10fb40f3a8c44feb3e2a768001cc4e3\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6999</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6999</link>\n    <itunes:summary>In February 2017, Microsoft Canada partnered with viaSport British Columbia to build an inclusive chat bot for athletes with disabilities. In this session, we demo how the Microsoft Bot Framework and Microsoft Cognitive Services APIs were used to build an bot to streamline access to highly relevant resources for people in the inclusive sporting community; improve the tone in conversations around disabilities by correcting offensive and outdated terminology; and provide viaSport with a richer way to understand and serve this community. #Cloud4Good Technologies showcased: Bot Framework, Language Understanding Intelligent Service (LUIS) API, Bing Web Search, Bing Spell Check </itunes:summary>\n    <itunes:duration>1129</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6999</guid>\n    <dc:creator>Sage Franch</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/259e/3091884b-bcc2-4814-af43-8ba1c7c8259e/T6999_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/259e/3091884b-bcc2-4814-af43-8ba1c7c8259e/T6999_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/259e/3091884b-bcc2-4814-af43-8ba1c7c8259e/T6999_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/259e/3091884b-bcc2-4814-af43-8ba1c7c8259e/T6999.mp3\" expression=\"full\" duration=\"1129\" fileSize=\"18067146\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/259e/3091884b-bcc2-4814-af43-8ba1c7c8259e/T6999.mp4\" expression=\"full\" duration=\"1129\" fileSize=\"25675591\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/259e/3091884b-bcc2-4814-af43-8ba1c7c8259e/T6999_high.mp4\" expression=\"full\" duration=\"1129\" fileSize=\"220440298\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/259e/3091884b-bcc2-4814-af43-8ba1c7c8259e/T6999_mid.mp4\" expression=\"full\" duration=\"1129\" fileSize=\"63700890\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6999.mp4\" expression=\"full\" duration=\"1129\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How to really share code with Xamarin</title>\n    <description><![CDATA[<p>Join us for a fast paced talk where we share our experiences around this topic, and how we use the MVVM (Model-View-View-Model) pattern to make this happen. We also show how we can extend the code to Xbox One.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:4d1e8ba803ba4974b189a768001cc473\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6998</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6998</link>\n    <itunes:summary>Join us for a fast paced talk where we share our experiences around this topic, and how we use the MVVM (Model-View-View-Model) pattern to make this happen. We also show how we can extend the code to Xbox One. </itunes:summary>\n    <itunes:duration>1152</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6998</guid>\n    <dc:creator>Tess Ferrandez, Peter Bryntesson</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/ff2d/4ee8ce1e-205d-4195-8dad-6984b3bdff2d/T6998_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/ff2d/4ee8ce1e-205d-4195-8dad-6984b3bdff2d/T6998_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/ff2d/4ee8ce1e-205d-4195-8dad-6984b3bdff2d/T6998_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ff2d/4ee8ce1e-205d-4195-8dad-6984b3bdff2d/T6998.mp3\" expression=\"full\" duration=\"1152\" fileSize=\"18439626\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ff2d/4ee8ce1e-205d-4195-8dad-6984b3bdff2d/T6998.mp4\" expression=\"full\" duration=\"1152\" fileSize=\"23114960\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ff2d/4ee8ce1e-205d-4195-8dad-6984b3bdff2d/T6998_high.mp4\" expression=\"full\" duration=\"1152\" fileSize=\"177909800\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ff2d/4ee8ce1e-205d-4195-8dad-6984b3bdff2d/T6998_mid.mp4\" expression=\"full\" duration=\"1152\" fileSize=\"56208117\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6998.mp4\" expression=\"full\" duration=\"1152\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How View360 is using Microsoft Azure to improve its telecom tower monitoring IoT solution</title>\n    <description><![CDATA[This talk describes why View360 technologies chose Microsoft Azure to enhance their telecom tower monitoring solution. We focus on their existing architecture, challenges, and proposed architecture. We also discuss the challenges faced during implementation and how we overcame them as a team to resolve those challenges. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:febaf3ba16e54156b6baa768001cc444\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6997</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6997</link>\n    <itunes:summary>This talk describes why View360 technologies chose Microsoft Azure to enhance their telecom tower monitoring solution. We focus on their existing architecture, challenges, and proposed architecture. We also discuss the challenges faced during implementation and how we overcame them as a team to resolve those challenges.</itunes:summary>\n    <itunes:duration>1443</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6997</guid>\n    <dc:creator>Sudhir Rawat</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/e0f8/79c2726e-3e33-49c0-872a-343c3ca6e0f8/T6997_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e0f8/79c2726e-3e33-49c0-872a-343c3ca6e0f8/T6997_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e0f8/79c2726e-3e33-49c0-872a-343c3ca6e0f8/T6997_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e0f8/79c2726e-3e33-49c0-872a-343c3ca6e0f8/T6997.mp3\" expression=\"full\" duration=\"1443\" fileSize=\"23101386\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e0f8/79c2726e-3e33-49c0-872a-343c3ca6e0f8/T6997.mp4\" expression=\"full\" duration=\"1443\" fileSize=\"29364942\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e0f8/79c2726e-3e33-49c0-872a-343c3ca6e0f8/T6997_high.mp4\" expression=\"full\" duration=\"1443\" fileSize=\"249267492\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e0f8/79c2726e-3e33-49c0-872a-343c3ca6e0f8/T6997_mid.mp4\" expression=\"full\" duration=\"1443\" fileSize=\"74250576\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6997.mp4\" expression=\"full\" duration=\"1443\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Workspace utilization with Azure IoT</title>\n    <description><![CDATA[This session demonstrates how to use sensors to capture real-time information in a workspace to visualize and analyze how it is utilized. It goes through technologies in Azure IoT Suite to accomplish this. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:a5005cd9c0c2453e8a8fa768001cc3e6\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6996</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6996</link>\n    <itunes:summary>This session demonstrates how to use sensors to capture real-time information in a workspace to visualize and analyze how it is utilized. It goes through technologies in Azure IoT Suite to accomplish this.</itunes:summary>\n    <itunes:duration>1235</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6996</guid>\n    <dc:creator>Dag K&#246;nig</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/99e2/96364939-88f3-426a-9f91-ba3fdcbd99e2/T6996_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/99e2/96364939-88f3-426a-9f91-ba3fdcbd99e2/T6996_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/99e2/96364939-88f3-426a-9f91-ba3fdcbd99e2/T6996_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/99e2/96364939-88f3-426a-9f91-ba3fdcbd99e2/T6996.mp3\" expression=\"full\" duration=\"1235\" fileSize=\"19776714\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/99e2/96364939-88f3-426a-9f91-ba3fdcbd99e2/T6996.mp4\" expression=\"full\" duration=\"1235\" fileSize=\"26538603\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/99e2/96364939-88f3-426a-9f91-ba3fdcbd99e2/T6996_high.mp4\" expression=\"full\" duration=\"1235\" fileSize=\"256226163\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/99e2/96364939-88f3-426a-9f91-ba3fdcbd99e2/T6996_mid.mp4\" expression=\"full\" duration=\"1235\" fileSize=\"67835497\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6996.mp4\" expression=\"full\" duration=\"1235\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>IoT technologies for the Mitreo archaeological site</title>\n    <description><![CDATA[In this session, see how we combined Azure IoT Hub, Stream Analytics, Azure Web Apps and Azure SQL Database in order to create an IoT architecture for the remote monitoring of the Mitreo archaeological site, starting from a project which didn’t use Microsoft technology. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:9ee7ea8dcbfd4a12aa9ca768001cc3a0\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6995</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6995</link>\n    <itunes:summary>In this session, see how we combined Azure IoT Hub, Stream Analytics, Azure Web Apps and Azure SQL Database in order to create an IoT architecture for the remote monitoring of the Mitreo archaeological site, starting from a project which didn’t use Microsoft technology.</itunes:summary>\n    <itunes:duration>1183</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6995</guid>\n    <dc:creator>Erica Barone</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/a593/78069a53-f88d-4e3e-be69-223b29a7a593/T6995_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a593/78069a53-f88d-4e3e-be69-223b29a7a593/T6995_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a593/78069a53-f88d-4e3e-be69-223b29a7a593/T6995_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a593/78069a53-f88d-4e3e-be69-223b29a7a593/T6995.mp3\" expression=\"full\" duration=\"1183\" fileSize=\"18933450\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a593/78069a53-f88d-4e3e-be69-223b29a7a593/T6995.mp4\" expression=\"full\" duration=\"1183\" fileSize=\"24270164\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a593/78069a53-f88d-4e3e-be69-223b29a7a593/T6995_high.mp4\" expression=\"full\" duration=\"1183\" fileSize=\"188601020\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a593/78069a53-f88d-4e3e-be69-223b29a7a593/T6995_mid.mp4\" expression=\"full\" duration=\"1183\" fileSize=\"51767586\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6995.mp4\" expression=\"full\" duration=\"1183\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Driving a refrigerated truck to Azure: Making an IoT solution more SaaS-ready with Quarta and TechnoKom</title>\n    <description><![CDATA[Thousands of trucks around Russia move refrigerated goods from place to place every day, and on each of those trucks, TechnoKom and Quarta are monitoring the refrigeration units. In this story, we explain how we moved the old monitoring solution and interface to a cloud architecture with Microsoft Azure. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1489cfe857d147388b5da768001cc36c\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6994</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6994</link>\n    <itunes:summary>Thousands of trucks around Russia move refrigerated goods from place to place every day, and on each of those trucks, TechnoKom and Quarta are monitoring the refrigeration units. In this story, we explain how we moved the old monitoring solution and interface to a cloud architecture with Microsoft Azure.</itunes:summary>\n    <itunes:duration>1030</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6994</guid>\n    <dc:creator>Stas Pavlov</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/51f4/a19ec276-8859-4c84-94a7-1a9dd92751f4/T6994_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/51f4/a19ec276-8859-4c84-94a7-1a9dd92751f4/T6994_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/51f4/a19ec276-8859-4c84-94a7-1a9dd92751f4/T6994_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/51f4/a19ec276-8859-4c84-94a7-1a9dd92751f4/T6994.mp3\" expression=\"full\" duration=\"1030\" fileSize=\"16487754\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/51f4/a19ec276-8859-4c84-94a7-1a9dd92751f4/T6994.mp4\" expression=\"full\" duration=\"1030\" fileSize=\"20811153\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/51f4/a19ec276-8859-4c84-94a7-1a9dd92751f4/T6994_high.mp4\" expression=\"full\" duration=\"1030\" fileSize=\"156075636\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/51f4/a19ec276-8859-4c84-94a7-1a9dd92751f4/T6994_mid.mp4\" expression=\"full\" duration=\"1030\" fileSize=\"48081399\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6994.mp4\" expression=\"full\" duration=\"1030\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How Azure enables time tracking</title>\n    <description><![CDATA[The presentation walks through every aspect needed in order to create an extendable and fully-fledged cloud connected notification system integrated into a Xamarin Forms app (Android) for time tracking and notifying purposes. The same concepts were used for Norsk Tid on their time tracking application. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:301af1863b784e7e9aefa768001cc301\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6993</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6993</link>\n    <itunes:summary>The presentation walks through every aspect needed in order to create an extendable and fully-fledged cloud connected notification system integrated into a Xamarin Forms app (Android) for time tracking and notifying purposes. The same concepts were used for Norsk Tid on their time tracking application.</itunes:summary>\n    <itunes:duration>1236</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6993</guid>\n    <dc:creator>Anders Gill</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/298f/9f004880-1b1b-42fa-8251-b0a86281298f/T6993_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/298f/9f004880-1b1b-42fa-8251-b0a86281298f/T6993_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/298f/9f004880-1b1b-42fa-8251-b0a86281298f/T6993_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/298f/9f004880-1b1b-42fa-8251-b0a86281298f/T6993.mp3\" expression=\"full\" duration=\"1236\" fileSize=\"19784778\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/298f/9f004880-1b1b-42fa-8251-b0a86281298f/T6993.mp4\" expression=\"full\" duration=\"1236\" fileSize=\"25755263\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/298f/9f004880-1b1b-42fa-8251-b0a86281298f/T6993_high.mp4\" expression=\"full\" duration=\"1236\" fileSize=\"269190428\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/298f/9f004880-1b1b-42fa-8251-b0a86281298f/T6993_mid.mp4\" expression=\"full\" duration=\"1236\" fileSize=\"66678413\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6993.mp4\" expression=\"full\" duration=\"1236\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>An IoT solution for Blue Dynamic to gauge customer visits to brick-and-mortar stores</title>\n    <description><![CDATA[Come to see how easily you can transform your retail business from a programmatic approach to a personalized customer experience using some of the latest Azure technologies like Cognitive services, IoT, Azure FX, etc. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:3b805a29fa1f4b1685cba768001cc279\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6992</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6992</link>\n    <itunes:summary>Come to see how easily you can transform your retail business from a programmatic approach to a personalized customer experience using some of the latest Azure technologies like Cognitive services, IoT, Azure FX, etc.</itunes:summary>\n    <itunes:duration>1456</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6992</guid>\n    <dc:creator>Jan Pospisil</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/f1fb/860315b0-93b3-443f-bcd1-abd47659f1fb/T6992_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f1fb/860315b0-93b3-443f-bcd1-abd47659f1fb/T6992_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f1fb/860315b0-93b3-443f-bcd1-abd47659f1fb/T6992_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f1fb/860315b0-93b3-443f-bcd1-abd47659f1fb/T6992.mp3\" expression=\"full\" duration=\"1456\" fileSize=\"23312202\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f1fb/860315b0-93b3-443f-bcd1-abd47659f1fb/T6992.mp4\" expression=\"full\" duration=\"1456\" fileSize=\"29488072\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f1fb/860315b0-93b3-443f-bcd1-abd47659f1fb/T6992_high.mp4\" expression=\"full\" duration=\"1456\" fileSize=\"246768807\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f1fb/860315b0-93b3-443f-bcd1-abd47659f1fb/T6992_mid.mp4\" expression=\"full\" duration=\"1456\" fileSize=\"70908934\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6992.mp4\" expression=\"full\" duration=\"1456\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Early detection of cancer: Developing NLP classifiers to analyze biomedical literature</title>\n    <description><![CDATA[microRNAs are bio-markers, which may indicate cancer and other diseases even at early stage. We partnered with Miroculus, a startup developing an affordable blood test to diagnose cancer and other genetic diseases. Together, we developed a pipeline and an NLP classifier to detect relations between genes and micro-RNAs in medical research documents. The generalized code and leanings are open sourced and shared on Github. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:ed0fe825c6f243738336a768001cc245\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6991</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6991</link>\n    <itunes:summary>microRNAs are bio-markers, which may indicate cancer and other diseases even at early stage. We partnered with Miroculus, a startup developing an affordable blood test to diagnose cancer and other genetic diseases. Together, we developed a pipeline and an NLP classifier to detect relations between genes and micro-RNAs in medical research documents. The generalized code and leanings are open sourced and shared on Github.</itunes:summary>\n    <itunes:duration>1179</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6991</guid>\n    <dc:creator>Limor Lahiani</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/6ff8/ac0c1009-ca6a-4ad6-aac0-5dc183d36ff8/T6991_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/6ff8/ac0c1009-ca6a-4ad6-aac0-5dc183d36ff8/T6991_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/6ff8/ac0c1009-ca6a-4ad6-aac0-5dc183d36ff8/T6991_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6ff8/ac0c1009-ca6a-4ad6-aac0-5dc183d36ff8/T6991.mp3\" expression=\"full\" duration=\"1179\" fileSize=\"18875082\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6ff8/ac0c1009-ca6a-4ad6-aac0-5dc183d36ff8/T6991.mp4\" expression=\"full\" duration=\"1179\" fileSize=\"24768874\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6ff8/ac0c1009-ca6a-4ad6-aac0-5dc183d36ff8/T6991_high.mp4\" expression=\"full\" duration=\"1179\" fileSize=\"248293390\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6ff8/ac0c1009-ca6a-4ad6-aac0-5dc183d36ff8/T6991_mid.mp4\" expression=\"full\" duration=\"1179\" fileSize=\"73359916\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6991.mp4\" expression=\"full\" duration=\"1179\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Sound and vision: Visual anomalies from audio data using deep learning</title>\n    <description><![CDATA[We walk you through an effort by Sierra Systems with help from Microsoft and the Microsoft Cognitive Toolkit to detect and classify oil pipeline leaks, using audio data from a sensor ball deployed by Pure Technologies. We convert this audio data into images and use state-of-the-art Deep Learning techniques in the realm of image recognition to find ‘visual’ anomalies and tell leaks from everyday events. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:b37a75fe028146eb8263a768001cc1e3\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6990</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6990</link>\n    <itunes:summary>We walk you through an effort by Sierra Systems with help from Microsoft and the Microsoft Cognitive Toolkit to detect and classify oil pipeline leaks, using audio data from a sensor ball deployed by Pure Technologies. We convert this audio data into images and use state-of-the-art Deep Learning techniques in the realm of image recognition to find ‘visual’ anomalies and tell leaks from everyday events.</itunes:summary>\n    <itunes:duration>1285</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6990</guid>\n    <dc:creator>Anthony Bulk, Michael Lanzetta</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/cc0a/631c32ae-e880-4694-b66f-46d19b61cc0a/T6990_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/cc0a/631c32ae-e880-4694-b66f-46d19b61cc0a/T6990_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/cc0a/631c32ae-e880-4694-b66f-46d19b61cc0a/T6990_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cc0a/631c32ae-e880-4694-b66f-46d19b61cc0a/T6990.mp3\" expression=\"full\" duration=\"1285\" fileSize=\"20574666\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cc0a/631c32ae-e880-4694-b66f-46d19b61cc0a/T6990.mp4\" expression=\"full\" duration=\"1285\" fileSize=\"28103199\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cc0a/631c32ae-e880-4694-b66f-46d19b61cc0a/T6990_high.mp4\" expression=\"full\" duration=\"1285\" fileSize=\"244183146\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cc0a/631c32ae-e880-4694-b66f-46d19b61cc0a/T6990_mid.mp4\" expression=\"full\" duration=\"1285\" fileSize=\"69438976\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6990.mp4\" expression=\"full\" duration=\"1285\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Connecting sensors, sports, and AI</title>\n    <description><![CDATA[Our goal is to help athletes improve their performance by providing insights and advice even when the coach is not around. In our study, we partnered with top athletes, sports organizations, including world-class athletes, data scientists and created an open source SensorKit to simplify data collection and processing from Bluetooth enabled sensors to the cloud and machine learning models. Being able to tell, just by looking at the data, an intermediate athlete from an expert, is truly an AI task that requires an integration of sensors, machine learning and cloud based intelligence. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:7bbed4969c734f4f8da0a768001cc151\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6989</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6989</link>\n    <itunes:summary>Our goal is to help athletes improve their performance by providing insights and advice even when the coach is not around. In our study, we partnered with top athletes, sports organizations, including world-class athletes, data scientists and created an open source SensorKit to simplify data collection and processing from Bluetooth enabled sensors to the cloud and machine learning models. Being able to tell, just by looking at the data, an intermediate athlete from an expert, is truly an AI task that requires an integration of sensors, machine learning and cloud based intelligence.</itunes:summary>\n    <itunes:duration>1265</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6989</guid>\n    <dc:creator>Kevin Ashley</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/188b/b6c02635-91ba-4066-b78d-66538a08188b/T6989_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/188b/b6c02635-91ba-4066-b78d-66538a08188b/T6989_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/188b/b6c02635-91ba-4066-b78d-66538a08188b/T6989_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/188b/b6c02635-91ba-4066-b78d-66538a08188b/T6989.mp3\" expression=\"full\" duration=\"1265\" fileSize=\"20249418\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/188b/b6c02635-91ba-4066-b78d-66538a08188b/T6989.mp4\" expression=\"full\" duration=\"1265\" fileSize=\"27006768\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/188b/b6c02635-91ba-4066-b78d-66538a08188b/T6989_high.mp4\" expression=\"full\" duration=\"1265\" fileSize=\"219209826\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/188b/b6c02635-91ba-4066-b78d-66538a08188b/T6989_mid.mp4\" expression=\"full\" duration=\"1265\" fileSize=\"66280637\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6989.mp4\" expression=\"full\" duration=\"1265\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Guide Dogs: Improving speech recognition on iOS to help the blind navigate</title>\n    <description><![CDATA[Based on a solution developed for Guide Dogs for the Blind, developers can create great voice recognition and command execution on iOS using Microsoft Cognitive Services and LUIS. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:34bf31a3188140d39f2ba768001cc11e\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6988</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6988</link>\n    <itunes:summary>Based on a solution developed for Guide Dogs for the Blind, developers can create great voice recognition and command execution on iOS using Microsoft Cognitive Services and LUIS.</itunes:summary>\n    <itunes:duration>988</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6988</guid>\n    <dc:creator>Andrei Ermilov</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/059f/468cee34-1189-4e11-ba4c-043cf2d1059f/T6988_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/059f/468cee34-1189-4e11-ba4c-043cf2d1059f/T6988_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/059f/468cee34-1189-4e11-ba4c-043cf2d1059f/T6988_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/059f/468cee34-1189-4e11-ba4c-043cf2d1059f/T6988.mp3\" expression=\"full\" duration=\"988\" fileSize=\"15813834\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/059f/468cee34-1189-4e11-ba4c-043cf2d1059f/T6988.mp4\" expression=\"full\" duration=\"988\" fileSize=\"21836374\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/059f/468cee34-1189-4e11-ba4c-043cf2d1059f/T6988_high.mp4\" expression=\"full\" duration=\"988\" fileSize=\"191383418\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/059f/468cee34-1189-4e11-ba4c-043cf2d1059f/T6988_mid.mp4\" expression=\"full\" duration=\"988\" fileSize=\"58023418\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6988.mp4\" expression=\"full\" duration=\"988\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Creating immersive experiences on the web, from mobiles to VR devices, with WebVR</title>\n    <description><![CDATA[<p>Today on the web you can create immersive 3D experiences for all modern mobiles and for VR devices as well. We’ll start showing you how Babylon.js helped Neo-Pangea build the Make Mars Home VR experience from National Geographic. We’ll explain with concrete code samples how to build a similar web app. Then, we’ll show you how to go even further supporting more powerful devices such as the Mixed Reality headsets or the HTC Vive &amp; Oculus Rift devices. Get ready for VR on the web thanks to our 20 min of demos &amp; code!</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:a7fc1d51fdb342788f26a768001cc0c0\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6987</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6987</link>\n    <itunes:summary>Today on the web you can create immersive 3D experiences for all modern mobiles and for VR devices as well. We’ll start showing you how Babylon.js helped Neo-Pangea build the Make Mars Home VR experience from National Geographic. We’ll explain with concrete code samples how to build a similar web app. Then, we’ll show you how to go even further supporting more powerful devices such as the Mixed Reality headsets or the HTC Vive &amp;amp; Oculus Rift devices. Get ready for VR on the web thanks to our 20 min of demos &amp;amp; code! </itunes:summary>\n    <itunes:duration>1311</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6987</guid>\n    <dc:creator>David Rousset, David Catuhe</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/7fd8/bd431f98-8d9f-463e-8b25-ded0a5fd7fd8/T6987_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/7fd8/bd431f98-8d9f-463e-8b25-ded0a5fd7fd8/T6987_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/7fd8/bd431f98-8d9f-463e-8b25-ded0a5fd7fd8/T6987_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7fd8/bd431f98-8d9f-463e-8b25-ded0a5fd7fd8/T6987.mp3\" expression=\"full\" duration=\"1311\" fileSize=\"20987466\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7fd8/bd431f98-8d9f-463e-8b25-ded0a5fd7fd8/T6987.mp4\" expression=\"full\" duration=\"1311\" fileSize=\"36029494\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7fd8/bd431f98-8d9f-463e-8b25-ded0a5fd7fd8/T6987_high.mp4\" expression=\"full\" duration=\"1311\" fileSize=\"313212969\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7fd8/bd431f98-8d9f-463e-8b25-ded0a5fd7fd8/T6987_mid.mp4\" expression=\"full\" duration=\"1311\" fileSize=\"100585794\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6987.mp4\" expression=\"full\" duration=\"1311\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Project Fortis: Accelerating UN humanitarian aid planning and response with GraphQL</title>\n    <description><![CDATA[How can humanitarian aid field experts use social media to gain insight, understand trends, and track key humanitarian issues? What can social media tell us that first hand data can’t? How can social media alert experts identify emerging trends that could have a profound impact? These are some of the questions that Microsoft and the United Nations set out to investigate and understand when we started working together on Project Fortis. What we learned was that by using advanced Machine Learning techniques, Apache Spark, GraphQL, React, integrated social media with a range of public and privately available data, and applying powerful data visualization techniques, we could indeed provide deeper insight and awareness to humanitarian disasters (i.e., refugee displacement, terrorist attacks, disease outbreaks, famine, etc.) Project Fortis was born. Project Fortis grew into a customizable tool that enables anyone to define a set of topics, a set of social media sources, and geography to track and monitor on their own. This talk focuses on the architecture of Fortis and how GraphQL was used to provide further insights into the post-gaddafi humanitarian situation in Libya. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:e353a2341c784db581a4a768001cc07a\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6986</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6986</link>\n    <itunes:summary>How can humanitarian aid field experts use social media to gain insight, understand trends, and track key humanitarian issues? What can social media tell us that first hand data can’t? How can social media alert experts identify emerging trends that could have a profound impact? These are some of the questions that Microsoft and the United Nations set out to investigate and understand when we started working together on Project Fortis. What we learned was that by using advanced Machine Learning techniques, Apache Spark, GraphQL, React, integrated social media with a range of public and privately available data, and applying powerful data visualization techniques, we could indeed provide deeper insight and awareness to humanitarian disasters (i.e., refugee displacement, terrorist attacks, disease outbreaks, famine, etc.) Project Fortis was born. Project Fortis grew into a customizable tool that enables anyone to define a set of topics, a set of social media sources, and geography to track and monitor on their own. This talk focuses on the architecture of Fortis and how GraphQL was used to provide further insights into the post-gaddafi humanitarian situation in Libya.</itunes:summary>\n    <itunes:duration>1095</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6986</guid>\n    <dc:creator>Erik Schlegel, Max Zilberman</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/acff/977acf8d-b379-46a8-88da-700d2881acff/T6986_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/acff/977acf8d-b379-46a8-88da-700d2881acff/T6986_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/acff/977acf8d-b379-46a8-88da-700d2881acff/T6986_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/acff/977acf8d-b379-46a8-88da-700d2881acff/T6986.mp3\" expression=\"full\" duration=\"1095\" fileSize=\"17531850\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/acff/977acf8d-b379-46a8-88da-700d2881acff/T6986.mp4\" expression=\"full\" duration=\"1095\" fileSize=\"20185813\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/acff/977acf8d-b379-46a8-88da-700d2881acff/T6986_high.mp4\" expression=\"full\" duration=\"1095\" fileSize=\"222704479\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/acff/977acf8d-b379-46a8-88da-700d2881acff/T6986_mid.mp4\" expression=\"full\" duration=\"1095\" fileSize=\"41430642\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6986.mp4\" expression=\"full\" duration=\"1095\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>A real world use for Blockchain: Certification and attestation of Office documents</title>\n    <description><![CDATA[Blockchain is the latest buzzword but what can actually be done with the blockchain today? This session looks at an attestation and certification blockchain use case which can be used today. It looks at the code from the user in Microsoft Office to the transaction on the chain and talks about the present issues of using the blockchain. All demo and code, no Powerpoint! <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:a754264834c849d8a37aa768001cbfe4\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6985</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6985</link>\n    <itunes:summary>Blockchain is the latest buzzword but what can actually be done with the blockchain today? This session looks at an attestation and certification blockchain use case which can be used today. It looks at the code from the user in Microsoft Office to the transaction on the chain and talks about the present issues of using the blockchain. All demo and code, no Powerpoint!</itunes:summary>\n    <itunes:duration>1205</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6985</guid>\n    <dc:creator>Michael Platt</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/a99c/87a69e5b-050d-4dda-94e8-d7b5bceaa99c/T6985_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a99c/87a69e5b-050d-4dda-94e8-d7b5bceaa99c/T6985_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a99c/87a69e5b-050d-4dda-94e8-d7b5bceaa99c/T6985_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a99c/87a69e5b-050d-4dda-94e8-d7b5bceaa99c/T6985.mp3\" expression=\"full\" duration=\"1205\" fileSize=\"19287498\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a99c/87a69e5b-050d-4dda-94e8-d7b5bceaa99c/T6985.mp4\" expression=\"full\" duration=\"1205\" fileSize=\"24631206\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a99c/87a69e5b-050d-4dda-94e8-d7b5bceaa99c/T6985_high.mp4\" expression=\"full\" duration=\"1205\" fileSize=\"206831644\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a99c/87a69e5b-050d-4dda-94e8-d7b5bceaa99c/T6985_mid.mp4\" expression=\"full\" duration=\"1205\" fileSize=\"55079045\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6985.mp4\" expression=\"full\" duration=\"1205\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Fraud detection for a mobile banking app using Cortana Intelligence Suite</title>\n    <description><![CDATA[Are you interested in how to build a hybrid solution for transactions of data coming from an on-premises system and getting extracted, stored, feature selected, a feature vector built and scored in the cloud with a feedback loop to on-premises systems? Come to this talk to hear about lessons learned, design pattern, solution architecture, and code snippets. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:ec23cac119be458eb9dea768001cbf8f\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6984</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6984</link>\n    <itunes:summary>Are you interested in how to build a hybrid solution for transactions of data coming from an on-premises system and getting extracted, stored, feature selected, a feature vector built and scored in the cloud with a feedback loop to on-premises systems? Come to this talk to hear about lessons learned, design pattern, solution architecture, and code snippets.</itunes:summary>\n    <itunes:duration>1322</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6984</guid>\n    <dc:creator>Michael Hlobil</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/56cf/86bb6caa-869b-4b2f-be02-9291143256cf/T6984_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/56cf/86bb6caa-869b-4b2f-be02-9291143256cf/T6984_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/56cf/86bb6caa-869b-4b2f-be02-9291143256cf/T6984_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/56cf/86bb6caa-869b-4b2f-be02-9291143256cf/T6984.mp3\" expression=\"full\" duration=\"1322\" fileSize=\"21166794\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/56cf/86bb6caa-869b-4b2f-be02-9291143256cf/T6984.mp4\" expression=\"full\" duration=\"1322\" fileSize=\"26405563\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/56cf/86bb6caa-869b-4b2f-be02-9291143256cf/T6984_high.mp4\" expression=\"full\" duration=\"1322\" fileSize=\"219608181\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/56cf/86bb6caa-869b-4b2f-be02-9291143256cf/T6984_mid.mp4\" expression=\"full\" duration=\"1322\" fileSize=\"58849003\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6984.mp4\" expression=\"full\" duration=\"1322\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Unlocking Fusion with Containers and Kubernetes</title>\n    <description><![CDATA[Containers and Kubernetes are the perfect storm for data scientists. General Fusion, a Canadian cleantech company, is leveraging Kubernetes and Pachyderm, a container-based data science platform, to help in their development of the world’s first fusion energy power plant. In this talk, we share the strategies and lessons learned by General Fusion to build a reproducible data workflow to help physicists and data scientists make sense of data generated from their prototype plasma injectors. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:a039f5592cf14f23a467a768001cbf3b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6983</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6983</link>\n    <itunes:summary>Containers and Kubernetes are the perfect storm for data scientists. General Fusion, a Canadian cleantech company, is leveraging Kubernetes and Pachyderm, a container-based data science platform, to help in their development of the world’s first fusion energy power plant. In this talk, we share the strategies and lessons learned by General Fusion to build a reproducible data workflow to help physicists and data scientists make sense of data generated from their prototype plasma injectors.</itunes:summary>\n    <itunes:duration>1177</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6983</guid>\n    <dc:creator>Brendan Cassidy, Jason Poon</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/b90a/ff7e04cc-14e1-4567-a51f-aa8b6230b90a/T6983_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/b90a/ff7e04cc-14e1-4567-a51f-aa8b6230b90a/T6983_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/b90a/ff7e04cc-14e1-4567-a51f-aa8b6230b90a/T6983_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b90a/ff7e04cc-14e1-4567-a51f-aa8b6230b90a/T6983.mp3\" expression=\"full\" duration=\"1177\" fileSize=\"18834378\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b90a/ff7e04cc-14e1-4567-a51f-aa8b6230b90a/T6983.mp4\" expression=\"full\" duration=\"1177\" fileSize=\"24544040\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b90a/ff7e04cc-14e1-4567-a51f-aa8b6230b90a/T6983_high.mp4\" expression=\"full\" duration=\"1177\" fileSize=\"229994152\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b90a/ff7e04cc-14e1-4567-a51f-aa8b6230b90a/T6983_mid.mp4\" expression=\"full\" duration=\"1177\" fileSize=\"55122854\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6983.mp4\" expression=\"full\" duration=\"1177\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Building a smart glucometer with IoT Hub</title>\n    <description><![CDATA[IoT is valuable when you create a smarter world based on the devices that are in your every day life. Medilync (https://www.medilync.com/) is a medical devices company that is creating a smart glucometer connected to IoT Hub. By collecting the data and applying machine learning to it as it’s being collected, they are able to change the nature of the conversation with the doctor as well as proactively predict potential hypoglycemic events. This talk goes through the realities of building a connected device from how to implement the IoT Hub SDK on the device, connectivity to IoT Hub, bidirectional communications with the device and what programming is needed to consume the data on the back end. Then we dive into the some of the ML models to show how those are built, operationalized, and utilized. http://joshholmes.com/blog/aboutme/ for bio and photos and the like. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:e00d7587b9604f6d98d7a768001cbe9c\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6982</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6982</link>\n    <itunes:summary>IoT is valuable when you create a smarter world based on the devices that are in your every day life. Medilync (https://www.medilync.com/) is a medical devices company that is creating a smart glucometer connected to IoT Hub. By collecting the data and applying machine learning to it as it’s being collected, they are able to change the nature of the conversation with the doctor as well as proactively predict potential hypoglycemic events. This talk goes through the realities of building a connected device from how to implement the IoT Hub SDK on the device, connectivity to IoT Hub, bidirectional communications with the device and what programming is needed to consume the data on the back end. Then we dive into the some of the ML models to show how those are built, operationalized, and utilized. http://joshholmes.com/blog/aboutme/ for bio and photos and the like.</itunes:summary>\n    <itunes:duration>1277</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6982</guid>\n    <dc:creator>Josh Holmes (DPE)</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/fc9b/d27dd7b8-759d-4839-8468-5357f825fc9b/T6982_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/fc9b/d27dd7b8-759d-4839-8468-5357f825fc9b/T6982_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/fc9b/d27dd7b8-759d-4839-8468-5357f825fc9b/T6982_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/fc9b/d27dd7b8-759d-4839-8468-5357f825fc9b/T6982.mp3\" expression=\"full\" duration=\"1277\" fileSize=\"20433354\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/fc9b/d27dd7b8-759d-4839-8468-5357f825fc9b/T6982.mp4\" expression=\"full\" duration=\"1277\" fileSize=\"29609852\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/fc9b/d27dd7b8-759d-4839-8468-5357f825fc9b/T6982_high.mp4\" expression=\"full\" duration=\"1277\" fileSize=\"295890164\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/fc9b/d27dd7b8-759d-4839-8468-5357f825fc9b/T6982_mid.mp4\" expression=\"full\" duration=\"1277\" fileSize=\"74694963\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6982.mp4\" expression=\"full\" duration=\"1277\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Building Fluent Robots: How we developed a smart cache for LUIS and conversational robotics</title>\n    <description><![CDATA[In robotics natural language processing provides a level of personalization and comfort that leads to increased trust and productivity. Microsoft offers LUIS, an intent and entity recognition service, that converts natural language text into actionable data. We recently partnered with the R&amp;D department of Roboteam, an innovative global robotics company, that was interested in using LUIS to provide natural interaction to it’s robots, but required low latency lookups and offline support. In this talk attendees learn about LUIS and how to use the Smart Conversational Client API, to enables client side LUIS caching and offline support for their applications. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:24505d1348eb4c348033a768001cbe3e\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6981</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6981</link>\n    <itunes:summary>In robotics natural language processing provides a level of personalization and comfort that leads to increased trust and productivity. Microsoft offers LUIS, an intent and entity recognition service, that converts natural language text into actionable data. We recently partnered with the R&amp;amp;D department of Roboteam, an innovative global robotics company, that was interested in using LUIS to provide natural interaction to it’s robots, but required low latency lookups and offline support. In this talk attendees learn about LUIS and how to use the Smart Conversational Client API, to enables client side LUIS caching and offline support for their applications.</itunes:summary>\n    <itunes:duration>843</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6981</guid>\n    <dc:creator>Ari Bornstein</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/d794/92a65cb5-e1ab-4267-9f09-e181d7a6d794/T6981_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/d794/92a65cb5-e1ab-4267-9f09-e181d7a6d794/T6981_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/d794/92a65cb5-e1ab-4267-9f09-e181d7a6d794/T6981_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d794/92a65cb5-e1ab-4267-9f09-e181d7a6d794/T6981.mp3\" expression=\"full\" duration=\"843\" fileSize=\"13499082\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d794/92a65cb5-e1ab-4267-9f09-e181d7a6d794/T6981.mp4\" expression=\"full\" duration=\"843\" fileSize=\"18056208\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d794/92a65cb5-e1ab-4267-9f09-e181d7a6d794/T6981_high.mp4\" expression=\"full\" duration=\"843\" fileSize=\"197472399\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d794/92a65cb5-e1ab-4267-9f09-e181d7a6d794/T6981_mid.mp4\" expression=\"full\" duration=\"843\" fileSize=\"50201939\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6981.mp4\" expression=\"full\" duration=\"843\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Tag and detect: Object detection made easy</title>\n    <description><![CDATA[In recent years, machine learning-based algorithms have become a popular choice for solving computer vision tasks. Training these algorithms, however, often requires a large quantity of labeled data that is traditionally difficult to prepare. In this talk, we present a recent collaboration between the Microsoft Partner Catalyst team and InSoundz, an audio-tracking startup, to build an Object Detection System using CNTK, Microsoft’s Deep Learning framework. As part of the project, the Partner Catalyst Team has developed the “Visual Object Tagging Tool,” which provides an end-to-end solution for building training sets for Object Detection algorithms from video files, as well as the ability to review the Object Detection Model on new data. As part of the talk, we demonstrate how to build an Object Detection Model using CNTK and the Visual Object Tagging Tool. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:7bbfe76fad0a4c999ccca768001cbde5\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6980</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6980</link>\n    <itunes:summary>In recent years, machine learning-based algorithms have become a popular choice for solving computer vision tasks. Training these algorithms, however, often requires a large quantity of labeled data that is traditionally difficult to prepare. In this talk, we present a recent collaboration between the Microsoft Partner Catalyst team and InSoundz, an audio-tracking startup, to build an Object Detection System using CNTK, Microsoft’s Deep Learning framework. As part of the project, the Partner Catalyst Team has developed the “Visual Object Tagging Tool,” which provides an end-to-end solution for building training sets for Object Detection algorithms from video files, as well as the ability to review the Object Detection Model on new data. As part of the talk, we demonstrate how to build an Object Detection Model using CNTK and the Visual Object Tagging Tool.</itunes:summary>\n    <itunes:duration>1134</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6980</guid>\n    <dc:creator>Ari Bornstein, Guy Etgar, Nadav Bar</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/97b7/a6cf9122-580d-443b-9975-0ce81f8897b7/T6980_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/97b7/a6cf9122-580d-443b-9975-0ce81f8897b7/T6980_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/97b7/a6cf9122-580d-443b-9975-0ce81f8897b7/T6980_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/97b7/a6cf9122-580d-443b-9975-0ce81f8897b7/T6980.mp3\" expression=\"full\" duration=\"1134\" fileSize=\"18156618\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/97b7/a6cf9122-580d-443b-9975-0ce81f8897b7/T6980.mp4\" expression=\"full\" duration=\"1134\" fileSize=\"27491771\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/97b7/a6cf9122-580d-443b-9975-0ce81f8897b7/T6980_high.mp4\" expression=\"full\" duration=\"1134\" fileSize=\"289433729\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/97b7/a6cf9122-580d-443b-9975-0ce81f8897b7/T6980_mid.mp4\" expression=\"full\" duration=\"1134\" fileSize=\"68345353\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6980.mp4\" expression=\"full\" duration=\"1134\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How Azure and Blockchain solved Webjet&#39;s Reconciliation Challenge</title>\n    <description><![CDATA[Webjet is a travel booking conglomerate operating predominantly in Asia-Pacific. Webjet has grown through acquisition of mature companies with different technology stacks, leading to a lack of a unified bookkeeping system. These disparate systems have created discrepancies in the closing entries of Webjet companies, resulting in an expensive and time-consuming reconciliation process. In this talk, we will show how the use of Azure and Blockchain helped Webjet reconcile their records. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:07914837d6a74961b393a768001cbd08\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6979</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6979</link>\n    <itunes:summary>Webjet is a travel booking conglomerate operating predominantly in Asia-Pacific. Webjet has grown through acquisition of mature companies with different technology stacks, leading to a lack of a unified bookkeeping system. These disparate systems have created discrepancies in the closing entries of Webjet companies, resulting in an expensive and time-consuming reconciliation process. In this talk, we will show how the use of Azure and Blockchain helped Webjet reconcile their records.</itunes:summary>\n    <itunes:duration>960</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6979</guid>\n    <dc:creator>Ali Hajimirza</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/22fa/90336db9-c5d9-4397-9160-91efa46022fa/T6979_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/22fa/90336db9-c5d9-4397-9160-91efa46022fa/T6979_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/22fa/90336db9-c5d9-4397-9160-91efa46022fa/T6979_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/22fa/90336db9-c5d9-4397-9160-91efa46022fa/T6979.mp3\" expression=\"full\" duration=\"960\" fileSize=\"15366858\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/22fa/90336db9-c5d9-4397-9160-91efa46022fa/T6979.mp4\" expression=\"full\" duration=\"960\" fileSize=\"22167313\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/22fa/90336db9-c5d9-4397-9160-91efa46022fa/T6979_high.mp4\" expression=\"full\" duration=\"960\" fileSize=\"203814424\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/22fa/90336db9-c5d9-4397-9160-91efa46022fa/T6979_mid.mp4\" expression=\"full\" duration=\"960\" fileSize=\"61328134\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6979.mp4\" expression=\"full\" duration=\"960\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Computer vision for humanitarian impact: Building an image processing pipeline with the Red Cross</title>\n    <description><![CDATA[<p>Building technology that has a humanitarian impact is always a worthy a goal. Come learn how Microsoft and the Red Cross collaborated to build an image classification pipeline using serverless architecture and Microsoft Cognitive Services to empower scenarios like reuniting refugee families.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:9c5b96af236b422094f2a768001cbc6e\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6978</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6978</link>\n    <itunes:summary>Building technology that has a humanitarian impact is always a worthy a goal. Come learn how Microsoft and the Red Cross collaborated to build an image classification pipeline using serverless architecture and Microsoft Cognitive Services to empower scenarios like reuniting refugee families. </itunes:summary>\n    <itunes:duration>1094</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6978</guid>\n    <dc:creator>Jason Fox</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/dbf4/8b0bedf5-856c-4eef-8e1d-ee78ac07dbf4/T6978_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/dbf4/8b0bedf5-856c-4eef-8e1d-ee78ac07dbf4/T6978_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/dbf4/8b0bedf5-856c-4eef-8e1d-ee78ac07dbf4/T6978_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/dbf4/8b0bedf5-856c-4eef-8e1d-ee78ac07dbf4/T6978.mp3\" expression=\"full\" duration=\"1094\" fileSize=\"17512650\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/dbf4/8b0bedf5-856c-4eef-8e1d-ee78ac07dbf4/T6978.mp4\" expression=\"full\" duration=\"1094\" fileSize=\"21659163\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/dbf4/8b0bedf5-856c-4eef-8e1d-ee78ac07dbf4/T6978_high.mp4\" expression=\"full\" duration=\"1094\" fileSize=\"157944855\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/dbf4/8b0bedf5-856c-4eef-8e1d-ee78ac07dbf4/T6978_mid.mp4\" expression=\"full\" duration=\"1094\" fileSize=\"48635247\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6978.mp4\" expression=\"full\" duration=\"1094\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Chat bots for the Win: Autonomous support using Cherwell Service Management and the Microsoft Bot Framework</title>\n    <description><![CDATA[Join us to see how the Microsoft Bot Framework is being used to bring about a better experience for Cherwell users. Instead of requiring people to come to IT service management tools and systems to submit requests and report issues, the future of service management is all about providing services to people where they are, using the tools and technologies that they already use every day. We’ll dig in and show how the Bot Framework allows us to easily add support features into various chat clients.&nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:f05ff5c1c97a41848607a768001cbbfd\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6977</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6977</link>\n    <itunes:summary>Join us to see how the Microsoft Bot Framework is being used to bring about a better experience for Cherwell users. Instead of requiring people to come to IT service management tools and systems to submit requests and report issues, the future of service management is all about providing services to people where they are, using the tools and technologies that they already use every day. We’ll dig in and show how the Bot Framework allows us to easily add support features into various chat clients. </itunes:summary>\n    <itunes:duration>1034</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6977</guid>\n    <dc:creator>Thiago Almeida, John Hellyer</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/5988/d3673899-891f-4165-8d9a-b5759fe85988/T6977_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/5988/d3673899-891f-4165-8d9a-b5759fe85988/T6977_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/5988/d3673899-891f-4165-8d9a-b5759fe85988/T6977_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5988/d3673899-891f-4165-8d9a-b5759fe85988/T6977.mp3\" expression=\"full\" duration=\"1034\" fileSize=\"16554570\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5988/d3673899-891f-4165-8d9a-b5759fe85988/T6977.mp4\" expression=\"full\" duration=\"1034\" fileSize=\"19928060\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5988/d3673899-891f-4165-8d9a-b5759fe85988/T6977_high.mp4\" expression=\"full\" duration=\"1034\" fileSize=\"182522149\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5988/d3673899-891f-4165-8d9a-b5759fe85988/T6977_mid.mp4\" expression=\"full\" duration=\"1034\" fileSize=\"43676772\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6977.mp4\" expression=\"full\" duration=\"1034\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>NodeRT: Using native Windows features from Node.js and Electron</title>\n    <description><![CDATA[Cross-platform JavaScript-based technologies such as Node.js and Electron have gained traction within the developer community in recent years. While these technologies enable a “write once, run everywhere” approach, in certain instances, a deeper integration with the hosting operating system may be required. In this talk, we describe a recent collaboration between the Partner Catalyst team at Microsoft and the Slack Desktop team, which introduces native Windows notification APIs to the Electron platform. The core of the solution is comprised of NodeRT, which exposes the entire Windows Runtime stack to Node.js and Electron. The talk features a deep dive into the workings of NodeRT and how it was built, and demonstrates how it can be used in your Node.js and Electron apps. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:e192f8c244724f9b97dca768001cbb8d\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6976</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6976</link>\n    <itunes:summary>Cross-platform JavaScript-based technologies such as Node.js and Electron have gained traction within the developer community in recent years. While these technologies enable a “write once, run everywhere” approach, in certain instances, a deeper integration with the hosting operating system may be required. In this talk, we describe a recent collaboration between the Partner Catalyst team at Microsoft and the Slack Desktop team, which introduces native Windows notification APIs to the Electron platform. The core of the solution is comprised of NodeRT, which exposes the entire Windows Runtime stack to Node.js and Electron. The talk features a deep dive into the workings of NodeRT and how it was built, and demonstrates how it can be used in your Node.js and Electron apps.</itunes:summary>\n    <itunes:duration>968</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6976</guid>\n    <dc:creator>Felix Rieseberg, Nadav Bar</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/a603/a8378abe-7491-4452-8480-febe9732a603/T6976_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a603/a8378abe-7491-4452-8480-febe9732a603/T6976_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a603/a8378abe-7491-4452-8480-febe9732a603/T6976_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a603/a8378abe-7491-4452-8480-febe9732a603/T6976.mp3\" expression=\"full\" duration=\"968\" fileSize=\"15492810\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a603/a8378abe-7491-4452-8480-febe9732a603/T6976.mp4\" expression=\"full\" duration=\"968\" fileSize=\"20927464\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a603/a8378abe-7491-4452-8480-febe9732a603/T6976_high.mp4\" expression=\"full\" duration=\"968\" fileSize=\"183162138\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a603/a8378abe-7491-4452-8480-febe9732a603/T6976_mid.mp4\" expression=\"full\" duration=\"968\" fileSize=\"54535507\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6976.mp4\" expression=\"full\" duration=\"968\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Advanced architecture and development practices when engineering Cortana skills for multiple device types</title>\n    <description><![CDATA[Voice is the new UI. Capital One is a pioneer in creating voice-driven skills and will talk about their engineering approach to a Cortana skill optimized for both screens and headless devices, and in a way that is agile, flexible, fast, efficient and secure. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:2df31c2f61ea4e6db156a768001cbaf2\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6974</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6974</link>\n    <itunes:summary>Voice is the new UI. Capital One is a pioneer in creating voice-driven skills and will talk about their engineering approach to a Cortana skill optimized for both screens and headless devices, and in a way that is agile, flexible, fast, efficient and secure.</itunes:summary>\n    <itunes:duration>1254</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6974</guid>\n    <dc:creator>Eric Miles, James Kresge</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/c257/88ed7022-07af-4e82-863e-c66fa7cec257/T6974_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c257/88ed7022-07af-4e82-863e-c66fa7cec257/T6974_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c257/88ed7022-07af-4e82-863e-c66fa7cec257/T6974_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c257/88ed7022-07af-4e82-863e-c66fa7cec257/T6974.mp3\" expression=\"full\" duration=\"1254\" fileSize=\"20072010\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c257/88ed7022-07af-4e82-863e-c66fa7cec257/T6974.mp4\" expression=\"full\" duration=\"1254\" fileSize=\"23767230\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c257/88ed7022-07af-4e82-863e-c66fa7cec257/T6974_high.mp4\" expression=\"full\" duration=\"1254\" fileSize=\"170396320\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c257/88ed7022-07af-4e82-863e-c66fa7cec257/T6974_mid.mp4\" expression=\"full\" duration=\"1254\" fileSize=\"53888435\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6974.mp4\" expression=\"full\" duration=\"1254\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Creating natural conversational interfaces for robots using the power of Microsoft cloud</title>\n    <description><![CDATA[Learn how Microsoft is collaborating with ASUS to explore how to make the robot Zenbo communicate better with humans and understand the world by using the power of billions of entities from Bing, Microsoft Cognitive Services, Microsoft Azure and Bot Framework. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:a190e8f555aa42bca61ba768001cba53\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6973</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6973</link>\n    <itunes:summary>Learn how Microsoft is collaborating with ASUS to explore how to make the robot Zenbo communicate better with humans and understand the world by using the power of billions of entities from Bing, Microsoft Cognitive Services, Microsoft Azure and Bot Framework.</itunes:summary>\n    <itunes:duration>1050</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6973</guid>\n    <dc:creator>Mat Velloso</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/9171/1a0db2c4-b210-46a6-bc8d-32a9e92b9171/T6973_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/9171/1a0db2c4-b210-46a6-bc8d-32a9e92b9171/T6973_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/9171/1a0db2c4-b210-46a6-bc8d-32a9e92b9171/T6973_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9171/1a0db2c4-b210-46a6-bc8d-32a9e92b9171/T6973.mp3\" expression=\"full\" duration=\"1050\" fileSize=\"16812618\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9171/1a0db2c4-b210-46a6-bc8d-32a9e92b9171/T6973.mp4\" expression=\"full\" duration=\"1050\" fileSize=\"21621702\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9171/1a0db2c4-b210-46a6-bc8d-32a9e92b9171/T6973_high.mp4\" expression=\"full\" duration=\"1050\" fileSize=\"150918306\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9171/1a0db2c4-b210-46a6-bc8d-32a9e92b9171/T6973_mid.mp4\" expression=\"full\" duration=\"1050\" fileSize=\"48175675\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6973.mp4\" expression=\"full\" duration=\"1050\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Advanced LUIS models enabling rich query support in bots and Cortana skills</title>\n    <description><![CDATA[Gigseekr is a new live music discovery service committed to helping you find and stay up to date with events. Gigseekr talks about how they have built their solutions around the Microsoft Bot Framework, Azure Search, and now Cortana skills, and in particular about advanced application of co-operating LUIS.ai models to handle a wide variety of natural language queries. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:69c314dd349d470eb542a768001cba1f\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6972</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6972</link>\n    <itunes:summary>Gigseekr is a new live music discovery service committed to helping you find and stay up to date with events. Gigseekr talks about how they have built their solutions around the Microsoft Bot Framework, Azure Search, and now Cortana skills, and in particular about advanced application of co-operating LUIS.ai models to handle a wide variety of natural language queries.</itunes:summary>\n    <itunes:duration>1205</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6972</guid>\n    <dc:creator>David Hamilton</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/80aa/c54ecca2-6659-4afe-acb4-cddb51cb80aa/T6972_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/80aa/c54ecca2-6659-4afe-acb4-cddb51cb80aa/T6972_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/80aa/c54ecca2-6659-4afe-acb4-cddb51cb80aa/T6972_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/80aa/c54ecca2-6659-4afe-acb4-cddb51cb80aa/T6972.mp3\" expression=\"full\" duration=\"1205\" fileSize=\"19290954\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/80aa/c54ecca2-6659-4afe-acb4-cddb51cb80aa/T6972.mp4\" expression=\"full\" duration=\"1205\" fileSize=\"24267860\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/80aa/c54ecca2-6659-4afe-acb4-cddb51cb80aa/T6972_high.mp4\" expression=\"full\" duration=\"1205\" fileSize=\"189375255\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/80aa/c54ecca2-6659-4afe-acb4-cddb51cb80aa/T6972_mid.mp4\" expression=\"full\" duration=\"1205\" fileSize=\"54912603\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6972.mp4\" expression=\"full\" duration=\"1205\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Automated provisioning of Azure Functions on CarMax.com</title>\n    <description><![CDATA[CarMax, the largest used car dealer in the United States, sees more than 15 million visitors per month to their website hosted in Microsoft Azure. CarMax engineers discuss wins and lessons learned in building scalable and fault-isolated microservices using (1) Azure Functions, Service Bus and other Azure PaaS offerings and (2) automated provisioning using ARM templates. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:3ab19f9ad7194567b4a9a768001cb9c1\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6971-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6971-R2</link>\n    <itunes:summary>CarMax, the largest used car dealer in the United States, sees more than 15 million visitors per month to their website hosted in Microsoft Azure. CarMax engineers discuss wins and lessons learned in building scalable and fault-isolated microservices using (1) Azure Functions, Service Bus and other Azure PaaS offerings and (2) automated provisioning using ARM templates.</itunes:summary>\n    <itunes:duration>1222</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6971-R2</guid>\n    <dc:creator>Chris Ferguson, Pallavi Athale</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/3282/76a3a344-2834-4926-aa32-ada582fe3282/T6971-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3282/76a3a344-2834-4926-aa32-ada582fe3282/T6971-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3282/76a3a344-2834-4926-aa32-ada582fe3282/T6971-R2_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3282/76a3a344-2834-4926-aa32-ada582fe3282/T6971-R2.mp3\" expression=\"full\" duration=\"1222\" fileSize=\"19560138\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3282/76a3a344-2834-4926-aa32-ada582fe3282/T6971-R2.mp4\" expression=\"full\" duration=\"1222\" fileSize=\"23418446\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3282/76a3a344-2834-4926-aa32-ada582fe3282/T6971-R2_high.mp4\" expression=\"full\" duration=\"1222\" fileSize=\"185701597\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3282/76a3a344-2834-4926-aa32-ada582fe3282/T6971-R2_mid.mp4\" expression=\"full\" duration=\"1222\" fileSize=\"53649061\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6971-R2.mp4\" expression=\"full\" duration=\"1222\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Automated provisioning of Azure Functions on CarMax.com</title>\n    <description><![CDATA[CarMax, the largest used car dealer in the United States, sees more than 15 million visitors per month to their website hosted in Microsoft Azure. CarMax engineers discuss wins and lessons learned in building scalable and fault-isolated microservices using (1) Azure Functions, Service Bus and other Azure PaaS offerings and (2) automated provisioning using ARM templates. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:4380e437a59344bfa615a768001cb92b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6971-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6971-R1</link>\n    <itunes:summary>CarMax, the largest used car dealer in the United States, sees more than 15 million visitors per month to their website hosted in Microsoft Azure. CarMax engineers discuss wins and lessons learned in building scalable and fault-isolated microservices using (1) Azure Functions, Service Bus and other Azure PaaS offerings and (2) automated provisioning using ARM templates.</itunes:summary>\n    <itunes:duration>1246</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6971-R1</guid>\n    <dc:creator>Chris Ferguson, Pallavi Athale</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/185a/6c53e20a-c4d1-470d-b3ab-7c2b3bc1185a/T6971-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/185a/6c53e20a-c4d1-470d-b3ab-7c2b3bc1185a/T6971-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/185a/6c53e20a-c4d1-470d-b3ab-7c2b3bc1185a/T6971-R1_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/185a/6c53e20a-c4d1-470d-b3ab-7c2b3bc1185a/T6971-R1.mp3\" expression=\"full\" duration=\"1246\" fileSize=\"19949130\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/185a/6c53e20a-c4d1-470d-b3ab-7c2b3bc1185a/T6971-R1.mp4\" expression=\"full\" duration=\"1246\" fileSize=\"24313369\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/185a/6c53e20a-c4d1-470d-b3ab-7c2b3bc1185a/T6971-R1_high.mp4\" expression=\"full\" duration=\"1246\" fileSize=\"174814103\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/185a/6c53e20a-c4d1-470d-b3ab-7c2b3bc1185a/T6971-R1_mid.mp4\" expression=\"full\" duration=\"1246\" fileSize=\"54618816\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6971-R1.mp4\" expression=\"full\" duration=\"1246\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How Brainshark is making salespeople better through artificial intelligence and Microsoft HoloLens</title>\n    <description><![CDATA[Brainshark is working on building a platform that combines HoloLens, Azure Cognitive Services and Azure Machine Learning to put humans in an interactive meeting simulation, and score their performance using objective ML models. Come and check out this highly interactive session where we demonstrate how we built a real-world simulator powered by advanced Azure services in real time. We also show you how we are able to leverage Azure Cognitive Services and a custom Azure ML model to provide objective feedback on public speaking and presentation skills using a microservice approach based on Azure functions, WebJobs, and API Apps. Look under the hood and see how we’re leveraging next generation Microsoft technologies to improve human to human interactions. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:16a99830316c437f9503a768001cb887\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6969-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6969-R2</link>\n    <itunes:summary>Brainshark is working on building a platform that combines HoloLens, Azure Cognitive Services and Azure Machine Learning to put humans in an interactive meeting simulation, and score their performance using objective ML models. Come and check out this highly interactive session where we demonstrate how we built a real-world simulator powered by advanced Azure services in real time. We also show you how we are able to leverage Azure Cognitive Services and a custom Azure ML model to provide objective feedback on public speaking and presentation skills using a microservice approach based on Azure functions, WebJobs, and API Apps. Look under the hood and see how we’re leveraging next generation Microsoft technologies to improve human to human interactions.</itunes:summary>\n    <itunes:duration>1255</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6969-R2</guid>\n    <dc:creator>Chris Caruso, Dan Cokely, Michael Ferioli</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/c1d1/c17f3acc-e5ca-4f9a-a3c8-35bc9918c1d1/T6969-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c1d1/c17f3acc-e5ca-4f9a-a3c8-35bc9918c1d1/T6969-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c1d1/c17f3acc-e5ca-4f9a-a3c8-35bc9918c1d1/T6969-R2_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c1d1/c17f3acc-e5ca-4f9a-a3c8-35bc9918c1d1/T6969-R2.mp3\" expression=\"full\" duration=\"1255\" fileSize=\"20087754\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c1d1/c17f3acc-e5ca-4f9a-a3c8-35bc9918c1d1/T6969-R2.mp4\" expression=\"full\" duration=\"1255\" fileSize=\"26172749\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c1d1/c17f3acc-e5ca-4f9a-a3c8-35bc9918c1d1/T6969-R2_high.mp4\" expression=\"full\" duration=\"1255\" fileSize=\"234630333\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c1d1/c17f3acc-e5ca-4f9a-a3c8-35bc9918c1d1/T6969-R2_mid.mp4\" expression=\"full\" duration=\"1255\" fileSize=\"66608333\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6969-R2.mp4\" expression=\"full\" duration=\"1255\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How Brainshark is making salespeople better through artificial intelligence and Microsoft HoloLens</title>\n    <description><![CDATA[Brainshark is working on building a platform that combines HoloLens, Azure Cognitive Services and Azure Machine Learning to put humans in an interactive meeting simulation, and score their performance using objective ML models. Come and check out this highly interactive session where we demonstrate how we built a real-world simulator powered by advanced Azure services in real time. We also show you how we are able to leverage Azure Cognitive Services and a custom Azure ML model to provide objective feedback on public speaking and presentation skills using a microservice approach based on Azure functions, WebJobs, and API Apps. Look under the hood and see how we’re leveraging next generation Microsoft technologies to improve human to human interactions. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:31f9046ae39747f1bdbfa768001cb7b9\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6969-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6969-R1</link>\n    <itunes:summary>Brainshark is working on building a platform that combines HoloLens, Azure Cognitive Services and Azure Machine Learning to put humans in an interactive meeting simulation, and score their performance using objective ML models. Come and check out this highly interactive session where we demonstrate how we built a real-world simulator powered by advanced Azure services in real time. We also show you how we are able to leverage Azure Cognitive Services and a custom Azure ML model to provide objective feedback on public speaking and presentation skills using a microservice approach based on Azure functions, WebJobs, and API Apps. Look under the hood and see how we’re leveraging next generation Microsoft technologies to improve human to human interactions.</itunes:summary>\n    <itunes:duration>1288</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6969-R1</guid>\n    <dc:creator>Chris Caruso, Dan Cokely, Michael Ferioli</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/043b/90e0b3c1-85ac-43ac-b5de-444061c0043b/T6969-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/043b/90e0b3c1-85ac-43ac-b5de-444061c0043b/T6969-R1.mp3\" expression=\"full\" duration=\"1288\" fileSize=\"20620362\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/043b/90e0b3c1-85ac-43ac-b5de-444061c0043b/T6969-R1.mp4\" expression=\"full\" duration=\"1288\" fileSize=\"26419426\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/043b/90e0b3c1-85ac-43ac-b5de-444061c0043b/T6969-R1_high.mp4\" expression=\"full\" duration=\"1288\" fileSize=\"221689028\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/043b/90e0b3c1-85ac-43ac-b5de-444061c0043b/T6969-R1_mid.mp4\" expression=\"full\" duration=\"1288\" fileSize=\"64151789\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6969-R1.mp4\" expression=\"full\" duration=\"1288\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Service Fabric architecture in the Swiss Re Digital Platform: An IoT scenario</title>\n    <description><![CDATA[Service Fabric builds the foundation of the digital platform at Swiss Re. The platform is highly scalable and able to process millions of messages. This session demonstrates how to process and enrich messages in Service Fabric using reliable actors and state full/stateless services. Swiss Re starts with an architecture overview of the solution and will then immediately dive into the implementation. We show two parts in detail: how to consume messages from EventHubs at scale by leveraging stateful services; and using Stream Analytics with the Avro protocol to prepare hopping windows for maneuver detection. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:e233fb1d41f14903af01a768001cb692\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6968-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6968-R2</link>\n    <itunes:summary>Service Fabric builds the foundation of the digital platform at Swiss Re. The platform is highly scalable and able to process millions of messages. This session demonstrates how to process and enrich messages in Service Fabric using reliable actors and state full/stateless services. Swiss Re starts with an architecture overview of the solution and will then immediately dive into the implementation. We show two parts in detail: how to consume messages from EventHubs at scale by leveraging stateful services; and using Stream Analytics with the Avro protocol to prepare hopping windows for maneuver detection.</itunes:summary>\n    <itunes:duration>1241</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6968-R2</guid>\n    <dc:creator>Alan Wales, J&#252;rg Staub</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/7dd6/1e373544-3c7e-4aa0-b2f8-49fb0a107dd6/T6968-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/7dd6/1e373544-3c7e-4aa0-b2f8-49fb0a107dd6/T6968-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/7dd6/1e373544-3c7e-4aa0-b2f8-49fb0a107dd6/T6968-R2_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7dd6/1e373544-3c7e-4aa0-b2f8-49fb0a107dd6/T6968-R2.mp3\" expression=\"full\" duration=\"1241\" fileSize=\"19867722\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7dd6/1e373544-3c7e-4aa0-b2f8-49fb0a107dd6/T6968-R2.mp4\" expression=\"full\" duration=\"1241\" fileSize=\"26673857\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7dd6/1e373544-3c7e-4aa0-b2f8-49fb0a107dd6/T6968-R2_high.mp4\" expression=\"full\" duration=\"1241\" fileSize=\"265902068\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7dd6/1e373544-3c7e-4aa0-b2f8-49fb0a107dd6/T6968-R2_mid.mp4\" expression=\"full\" duration=\"1241\" fileSize=\"72529582\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6968-R2.mp4\" expression=\"full\" duration=\"1241\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Service Fabric architecture in the Swiss Re Digital Platform: An IoT scenario</title>\n    <description><![CDATA[Service Fabric builds the foundation of the digital platform at Swiss Re. The platform is highly scalable and able to process millions of messages. This session demonstrates how to process and enrich messages in Service Fabric using reliable actors and state full/stateless services. Swiss Re starts with an architecture overview of the solution and will then immediately dive into the implementation. We show two parts in detail: how to consume messages from EventHubs at scale by leveraging stateful services; and using Stream Analytics with the Avro protocol to prepare hopping windows for maneuver detection. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:790b8ec0e4564fd1a26da768001cb5fc\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6968-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6968-R1</link>\n    <itunes:summary>Service Fabric builds the foundation of the digital platform at Swiss Re. The platform is highly scalable and able to process millions of messages. This session demonstrates how to process and enrich messages in Service Fabric using reliable actors and state full/stateless services. Swiss Re starts with an architecture overview of the solution and will then immediately dive into the implementation. We show two parts in detail: how to consume messages from EventHubs at scale by leveraging stateful services; and using Stream Analytics with the Avro protocol to prepare hopping windows for maneuver detection.</itunes:summary>\n    <itunes:duration>1255</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6968-R1</guid>\n    <dc:creator>Alan Wales, J&#252;rg Staub</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/071e/730f9dfc-a2d1-4e88-a3f8-97ca1421071e/T6968-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/071e/730f9dfc-a2d1-4e88-a3f8-97ca1421071e/T6968-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/071e/730f9dfc-a2d1-4e88-a3f8-97ca1421071e/T6968-R1_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/071e/730f9dfc-a2d1-4e88-a3f8-97ca1421071e/T6968-R1.mp3\" expression=\"full\" duration=\"1255\" fileSize=\"20086218\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/071e/730f9dfc-a2d1-4e88-a3f8-97ca1421071e/T6968-R1.mp4\" expression=\"full\" duration=\"1255\" fileSize=\"27487594\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/071e/730f9dfc-a2d1-4e88-a3f8-97ca1421071e/T6968-R1_high.mp4\" expression=\"full\" duration=\"1255\" fileSize=\"266933416\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/071e/730f9dfc-a2d1-4e88-a3f8-97ca1421071e/T6968-R1_mid.mp4\" expression=\"full\" duration=\"1255\" fileSize=\"76053938\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6968-R1.mp4\" expression=\"full\" duration=\"1255\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Developer&#39;s Guide to the Galaxy #WinDev, Part 1</title>\n    <description><![CDATA[Bleeding edge Windows 10 demos wrapped in a bit of fun. Mixed Reality, My People, shoulder taps, WebVR, composition, Progressive Web Apps, UWP Community Toolkit and more. No slides, just demos and code. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:eb0d729da0494f8d9b1ea768001cb561\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6967</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6967</link>\n    <itunes:summary>Bleeding edge Windows 10 demos wrapped in a bit of fun. Mixed Reality, My People, shoulder taps, WebVR, composition, Progressive Web Apps, UWP Community Toolkit and more. No slides, just demos and code.</itunes:summary>\n    <itunes:duration>1733</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6967</guid>\n    <dc:creator>Jeff Burtoft</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/e8ba/faece28b-ac82-4c10-acad-ac33c407e8ba/T6967_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e8ba/faece28b-ac82-4c10-acad-ac33c407e8ba/T6967_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e8ba/faece28b-ac82-4c10-acad-ac33c407e8ba/T6967_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e8ba/faece28b-ac82-4c10-acad-ac33c407e8ba/T6967.mp3\" expression=\"full\" duration=\"1733\" fileSize=\"27733578\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e8ba/faece28b-ac82-4c10-acad-ac33c407e8ba/T6967.mp4\" expression=\"full\" duration=\"1733\" fileSize=\"41047548\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e8ba/faece28b-ac82-4c10-acad-ac33c407e8ba/T6967_high.mp4\" expression=\"full\" duration=\"1733\" fileSize=\"380121294\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e8ba/faece28b-ac82-4c10-acad-ac33c407e8ba/T6967_mid.mp4\" expression=\"full\" duration=\"1733\" fileSize=\"106799230\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6967.mp4\" expression=\"full\" duration=\"1733\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Building touch enabled restaurant tables with Windows 10 IoT and UWP</title>\n    <description><![CDATA[<p>Learn about the Interactive Table: an IoT device that provides a new way for collaborative experiences in public places.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:47fb71f16f4347318d95a768001cb532\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6966</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6966</link>\n    <itunes:summary>Learn about the Interactive Table: an IoT device that provides a new way for collaborative experiences in public places. </itunes:summary>\n    <itunes:duration>902</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6966</guid>\n    <dc:creator>Dymtro Kostyk</dc:creator>\n    <category>windows+iot</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/b316/06af3969-ebb5-4fe3-b948-2e03c49bb316/T6966_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/b316/06af3969-ebb5-4fe3-b948-2e03c49bb316/T6966_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/b316/06af3969-ebb5-4fe3-b948-2e03c49bb316/T6966_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b316/06af3969-ebb5-4fe3-b948-2e03c49bb316/T6966.mp3\" expression=\"full\" duration=\"902\" fileSize=\"14437194\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b316/06af3969-ebb5-4fe3-b948-2e03c49bb316/T6966.mp4\" expression=\"full\" duration=\"902\" fileSize=\"27934566\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b316/06af3969-ebb5-4fe3-b948-2e03c49bb316/T6966_high.mp4\" expression=\"full\" duration=\"902\" fileSize=\"277590756\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b316/06af3969-ebb5-4fe3-b948-2e03c49bb316/T6966_mid.mp4\" expression=\"full\" duration=\"902\" fileSize=\"82741026\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6966.mp4\" expression=\"full\" duration=\"902\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Creating robots with Windows 10 IoT Core</title>\n    <description><![CDATA[<p>Coming soon</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:339de8a499b74a40b9c8a768001cb4d0\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6965</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6965</link>\n    <itunes:summary>Coming soon </itunes:summary>\n    <itunes:duration>932</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6965</guid>\n    <dc:creator>Morgan Bell</dc:creator>\n    <category>windows+iot</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/d634/00376dd3-4e14-4bd8-b541-70797382d634/T6965_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/d634/00376dd3-4e14-4bd8-b541-70797382d634/T6965_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/d634/00376dd3-4e14-4bd8-b541-70797382d634/T6965_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d634/00376dd3-4e14-4bd8-b541-70797382d634/T6965.mp3\" expression=\"full\" duration=\"932\" fileSize=\"14921418\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d634/00376dd3-4e14-4bd8-b541-70797382d634/T6965.mp4\" expression=\"full\" duration=\"932\" fileSize=\"17934704\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d634/00376dd3-4e14-4bd8-b541-70797382d634/T6965_high.mp4\" expression=\"full\" duration=\"932\" fileSize=\"154556360\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d634/00376dd3-4e14-4bd8-b541-70797382d634/T6965_mid.mp4\" expression=\"full\" duration=\"932\" fileSize=\"33705708\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6965.mp4\" expression=\"full\" duration=\"932\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Enrichment Panel: Developer Non-profits Standing Out Through Technology </title>\n    <description><![CDATA[Diversity in technology and learning to code are two hot topics in the tech world, as both create solutions empowering future diverse leaders in all STEM fields. Join this group of local thought leaders for a dynamic conversation about empowering youth and underrepresented communities who are creating change in Seattle’s tech industry. We hope you’ll take these learnings and apply them in your own communities to help bridge the gap of diversity in tech. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:ea49a4ed66624664b60ba768001cb477\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6963</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6963</link>\n    <itunes:summary>Diversity in technology and learning to code are two hot topics in the tech world, as both create solutions empowering future diverse leaders in all STEM fields. Join this group of local thought leaders for a dynamic conversation about empowering youth and underrepresented communities who are creating change in Seattle’s tech industry. We hope you’ll take these learnings and apply them in your own communities to help bridge the gap of diversity in tech.</itunes:summary>\n    <itunes:duration>2114</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6963</guid>\n    <dc:creator></dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/93f6/4d61f4d6-acd7-4dca-a00f-d1f59e4f93f6/T6963_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/93f6/4d61f4d6-acd7-4dca-a00f-d1f59e4f93f6/T6963_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/93f6/4d61f4d6-acd7-4dca-a00f-d1f59e4f93f6/T6963_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/93f6/4d61f4d6-acd7-4dca-a00f-d1f59e4f93f6/T6963.mp3\" expression=\"full\" duration=\"2114\" fileSize=\"33824586\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/93f6/4d61f4d6-acd7-4dca-a00f-d1f59e4f93f6/T6963.mp4\" expression=\"full\" duration=\"2114\" fileSize=\"40000953\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/93f6/4d61f4d6-acd7-4dca-a00f-d1f59e4f93f6/T6963_high.mp4\" expression=\"full\" duration=\"2114\" fileSize=\"371732134\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/93f6/4d61f4d6-acd7-4dca-a00f-d1f59e4f93f6/T6963_mid.mp4\" expression=\"full\" duration=\"2114\" fileSize=\"79087175\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6963.mp4\" expression=\"full\" duration=\"2114\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Leadership Panel: Women Leaders Standing Out Through Technology</title>\n    <description><![CDATA[Don’t miss this inspiring panel of professional women as they share their stories and offer worldly advice about being fearless, standing out as successful leaders, and how they make a difference for themselves and others. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1fcc3e0650cf49328fb5a768001cb45b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6962</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6962</link>\n    <itunes:summary>Don’t miss this inspiring panel of professional women as they share their stories and offer worldly advice about being fearless, standing out as successful leaders, and how they make a difference for themselves and others.</itunes:summary>\n    <itunes:duration>2385</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6962</guid>\n    <dc:creator></dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/e2ee/1ea6c244-c33a-45ea-a16d-94fffa52e2ee/T6962_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e2ee/1ea6c244-c33a-45ea-a16d-94fffa52e2ee/T6962_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e2ee/1ea6c244-c33a-45ea-a16d-94fffa52e2ee/T6962_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e2ee/1ea6c244-c33a-45ea-a16d-94fffa52e2ee/T6962.mp3\" expression=\"full\" duration=\"2385\" fileSize=\"38174538\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e2ee/1ea6c244-c33a-45ea-a16d-94fffa52e2ee/T6962.mp4\" expression=\"full\" duration=\"2385\" fileSize=\"45997384\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e2ee/1ea6c244-c33a-45ea-a16d-94fffa52e2ee/T6962_high.mp4\" expression=\"full\" duration=\"2385\" fileSize=\"459286586\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e2ee/1ea6c244-c33a-45ea-a16d-94fffa52e2ee/T6962_mid.mp4\" expression=\"full\" duration=\"2385\" fileSize=\"97130207\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6962.mp4\" expression=\"full\" duration=\"2385\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How Microsoft gets the most out of games with UWP</title>\n    <description><![CDATA[Come meet a developer who has been on the front line of Microsoft platform game development for nearly a decade, from Win32, to Xbox, and now the Windows Store. Get insights into how UWP games have evolved on Windows and are coming home to the Xbox One family of consoles. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:7aa12683a8dc4c9c8a60a768001cb43e\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6960</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6960</link>\n    <itunes:summary>Come meet a developer who has been on the front line of Microsoft platform game development for nearly a decade, from Win32, to Xbox, and now the Windows Store. Get insights into how UWP games have evolved on Windows and are coming home to the Xbox One family of consoles.</itunes:summary>\n    <itunes:duration>1096</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6960</guid>\n    <dc:creator>James Yarrow</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/3ee3/3201fbc9-47a5-4363-8684-2104811f3ee3/T6960_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3ee3/3201fbc9-47a5-4363-8684-2104811f3ee3/T6960_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3ee3/3201fbc9-47a5-4363-8684-2104811f3ee3/T6960_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3ee3/3201fbc9-47a5-4363-8684-2104811f3ee3/T6960.mp3\" expression=\"full\" duration=\"1096\" fileSize=\"17547210\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3ee3/3201fbc9-47a5-4363-8684-2104811f3ee3/T6960.mp4\" expression=\"full\" duration=\"1096\" fileSize=\"22347254\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3ee3/3201fbc9-47a5-4363-8684-2104811f3ee3/T6960_high.mp4\" expression=\"full\" duration=\"1096\" fileSize=\"250910091\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3ee3/3201fbc9-47a5-4363-8684-2104811f3ee3/T6960_mid.mp4\" expression=\"full\" duration=\"1096\" fileSize=\"56052381\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6960.mp4\" expression=\"full\" duration=\"1096\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Diversity and Accessibility as Technical Differentiators</title>\n    <description><![CDATA[Come hear from three professionals who have used their diverse backgrounds to learn how to improve accessibility and create awesome products that solve real problems. This panel will inspire you to use technology to make a difference for others. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:818a4aed5ed949f0bed4a768001cb3e5\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6958</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6958</link>\n    <itunes:summary>Come hear from three professionals who have used their diverse backgrounds to learn how to improve accessibility and create awesome products that solve real problems. This panel will inspire you to use technology to make a difference for others.</itunes:summary>\n    <itunes:duration>1615</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6958</guid>\n    <dc:creator></dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/bcda/53b23e22-6345-4f9e-9b91-5a42522ebcda/T6958_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/bcda/53b23e22-6345-4f9e-9b91-5a42522ebcda/T6958_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/bcda/53b23e22-6345-4f9e-9b91-5a42522ebcda/T6958_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bcda/53b23e22-6345-4f9e-9b91-5a42522ebcda/T6958.mp3\" expression=\"full\" duration=\"1615\" fileSize=\"25850058\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bcda/53b23e22-6345-4f9e-9b91-5a42522ebcda/T6958.mp4\" expression=\"full\" duration=\"1615\" fileSize=\"31156275\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bcda/53b23e22-6345-4f9e-9b91-5a42522ebcda/T6958_high.mp4\" expression=\"full\" duration=\"1615\" fileSize=\"369354837\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bcda/53b23e22-6345-4f9e-9b91-5a42522ebcda/T6958_mid.mp4\" expression=\"full\" duration=\"1615\" fileSize=\"68149496\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6958.mp4\" expression=\"full\" duration=\"1615\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Developer&#39;s Guide to the Galaxy #WinDev, Part 2</title>\n    <description><![CDATA[Bleeding edge Windows 10 demos wrapped in a bit of fun. Mixed Reality, My People, shoulder taps, WebVR, composition, Progressive Web Apps, UWP Community Toolkit and more. No slides, just demos and code. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:c61fdeda63c24d3bb55ea768001cb3ce\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6957</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6957</link>\n    <itunes:summary>Bleeding edge Windows 10 demos wrapped in a bit of fun. Mixed Reality, My People, shoulder taps, WebVR, composition, Progressive Web Apps, UWP Community Toolkit and more. No slides, just demos and code.</itunes:summary>\n    <itunes:duration>1852</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6957</guid>\n    <dc:creator>Jeff Burtoft</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/f1ac/d6ba4207-0ee7-48ac-aabc-f6688094f1ac/T6957_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f1ac/d6ba4207-0ee7-48ac-aabc-f6688094f1ac/T6957_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f1ac/d6ba4207-0ee7-48ac-aabc-f6688094f1ac/T6957_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f1ac/d6ba4207-0ee7-48ac-aabc-f6688094f1ac/T6957.mp3\" expression=\"full\" duration=\"1852\" fileSize=\"29638218\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f1ac/d6ba4207-0ee7-48ac-aabc-f6688094f1ac/T6957.mp4\" expression=\"full\" duration=\"1852\" fileSize=\"36706281\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f1ac/d6ba4207-0ee7-48ac-aabc-f6688094f1ac/T6957_high.mp4\" expression=\"full\" duration=\"1852\" fileSize=\"331111750\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f1ac/d6ba4207-0ee7-48ac-aabc-f6688094f1ac/T6957_mid.mp4\" expression=\"full\" duration=\"1852\" fileSize=\"87758622\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6957.mp4\" expression=\"full\" duration=\"1852\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Cloud4Good Project: Harnessing Azure Functions to aid in the search for missing children</title>\n    <description><![CDATA[Children today are technology natives, harnessing technology to play, share, and learn. With this empowerment comes responsibility, both of parents and of the children themselves. Who kids chat with online and what they share can come at a price should it fall into the wrong hands. This challenge is something that keep CEO Amanda Pick and the team at Missing Children Society of Canada (MCSC) up at night as more and more predators are using online sources to lure children. Last year 45,000 children in Canada went missing. The sole mission of Calgary-based non-profit MCSC is to bring every child home. Part of their challenge is acquiring information on a child (such as last-known whereabouts and contacts) and providing that information to local law enforcement. Alongside members of the City of Calgary and Calgary Police, MCSC partnered with Microsoft in an innovation workshop to understand how Azure Functions, Xamarin, and DevOps best practices can better address their need to quickly provide police with information about children who are reported missing. The resulting application used the following services and practices: Azure Functions, Azure Storage, Continuous Integration, Infrastructure as Code, Visual Studio Team Services, and Xamarin Tools. The goal of the initial 4-day project was to enable MCSC to use automated Azure functionality to extract last-known coordinates, who the child was in contact with, and the sentiment of conversation from social-media platforms such as Twitter and Facebook. The innovation workshop team comprised members from Microsoft, MCSC, Calgary Police, and the City of Calgary. Attend this session to learn how Azure Function utilization was instrumental in acquiring information from the Twitter API which cut down research time from 30 days to 30 minutes to further aid police in the search for missing children. #Cloud4Good <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:e9b690212a814247ac77a768001cb39f\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6956</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6956</link>\n    <itunes:summary>Children today are technology natives, harnessing technology to play, share, and learn. With this empowerment comes responsibility, both of parents and of the children themselves. Who kids chat with online and what they share can come at a price should it fall into the wrong hands. This challenge is something that keep CEO Amanda Pick and the team at Missing Children Society of Canada (MCSC) up at night as more and more predators are using online sources to lure children. Last year 45,000 children in Canada went missing. The sole mission of Calgary-based non-profit MCSC is to bring every child home. Part of their challenge is acquiring information on a child (such as last-known whereabouts and contacts) and providing that information to local law enforcement. Alongside members of the City of Calgary and Calgary Police, MCSC partnered with Microsoft in an innovation workshop to understand how Azure Functions, Xamarin, and DevOps best practices can better address their need to quickly provide police with information about children who are reported missing. The resulting application used the following services and practices: Azure Functions, Azure Storage, Continuous Integration, Infrastructure as Code, Visual Studio Team Services, and Xamarin Tools. The goal of the initial 4-day project was to enable MCSC to use automated Azure functionality to extract last-known coordinates, who the child was in contact with, and the sentiment of conversation from social-media platforms such as Twitter and Facebook. The innovation workshop team comprised members from Microsoft, MCSC, Calgary Police, and the City of Calgary. Attend this session to learn how Azure Function utilization was instrumental in acquiring information from the Twitter API which cut down research time from 30 days to 30 minutes to further aid police in the search for missing children. #Cloud4Good</itunes:summary>\n    <itunes:duration>815</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6956</guid>\n    <dc:creator>Anthony Bartolo</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/157a/5a8f02a0-01c0-4370-a795-dae9505c157a/T6956_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/157a/5a8f02a0-01c0-4370-a795-dae9505c157a/T6956_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/157a/5a8f02a0-01c0-4370-a795-dae9505c157a/T6956_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/157a/5a8f02a0-01c0-4370-a795-dae9505c157a/T6956.mp3\" expression=\"full\" duration=\"815\" fileSize=\"13044426\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/157a/5a8f02a0-01c0-4370-a795-dae9505c157a/T6956.mp4\" expression=\"full\" duration=\"815\" fileSize=\"18681588\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/157a/5a8f02a0-01c0-4370-a795-dae9505c157a/T6956_high.mp4\" expression=\"full\" duration=\"815\" fileSize=\"180238932\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/157a/5a8f02a0-01c0-4370-a795-dae9505c157a/T6956_mid.mp4\" expression=\"full\" duration=\"815\" fileSize=\"48485536\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6956.mp4\" expression=\"full\" duration=\"815\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Ink Analysis in SOLIDWORKS</title>\n    <description><![CDATA[SOLIDWORKS offers complete 3D software tools that let you create, simulate, publish, and manage your data. During this session, SOLIDWORKS illustrates their integration with Ink Analysis APIs to show how users can use the pen to create the basis for their 3D designs more naturally and without the need to pre-identify which shapes they want to draw. The new tools using Ink Analysis APIs allow users to create conceptual sketches and generate the sketch geometry that they can use for their 3D creations in a new and more natural way. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:a656e52871d3455a938ea768001cb341\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6116-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6116-R2</link>\n    <itunes:summary>SOLIDWORKS offers complete 3D software tools that let you create, simulate, publish, and manage your data. During this session, SOLIDWORKS illustrates their integration with Ink Analysis APIs to show how users can use the pen to create the basis for their 3D designs more naturally and without the need to pre-identify which shapes they want to draw. The new tools using Ink Analysis APIs allow users to create conceptual sketches and generate the sketch geometry that they can use for their 3D creations in a new and more natural way.</itunes:summary>\n    <itunes:duration>1027</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6116-R2</guid>\n    <dc:creator>Kevin Berni</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>ink</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/ddbd/cdd9bfd6-ce12-4e42-b56a-6c509025ddbd/T6116-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/ddbd/cdd9bfd6-ce12-4e42-b56a-6c509025ddbd/T6116-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/ddbd/cdd9bfd6-ce12-4e42-b56a-6c509025ddbd/T6116-R2_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ddbd/cdd9bfd6-ce12-4e42-b56a-6c509025ddbd/T6116-R2.mp3\" expression=\"full\" duration=\"1027\" fileSize=\"16434984\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ddbd/cdd9bfd6-ce12-4e42-b56a-6c509025ddbd/T6116-R2.mp4\" expression=\"full\" duration=\"1027\" fileSize=\"21831685\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ddbd/cdd9bfd6-ce12-4e42-b56a-6c509025ddbd/T6116-R2_high.mp4\" expression=\"full\" duration=\"1027\" fileSize=\"191451058\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ddbd/cdd9bfd6-ce12-4e42-b56a-6c509025ddbd/T6116-R2_mid.mp4\" expression=\"full\" duration=\"1027\" fileSize=\"52588192\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6116-R2.mp4\" expression=\"full\" duration=\"1027\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Ink Analysis in SOLIDWORKS</title>\n    <description><![CDATA[SOLIDWORKS offers complete 3D software tools that let you create, simulate, publish, and manage your data. During this session, SOLIDWORKS illustrates their integration with Ink Analysis APIs to show how users can use the pen to create the basis for their 3D designs more naturally and without the need to pre-identify which shapes they want to draw. The new tools using Ink Analysis APIs allow users to create conceptual sketches and generate the sketch geometry that they can use for their 3D creations in a new and more natural way. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:7332b1e1016447aa8154a768001cb2b9\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6116-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6116-R1</link>\n    <itunes:summary>SOLIDWORKS offers complete 3D software tools that let you create, simulate, publish, and manage your data. During this session, SOLIDWORKS illustrates their integration with Ink Analysis APIs to show how users can use the pen to create the basis for their 3D designs more naturally and without the need to pre-identify which shapes they want to draw. The new tools using Ink Analysis APIs allow users to create conceptual sketches and generate the sketch geometry that they can use for their 3D creations in a new and more natural way.</itunes:summary>\n    <itunes:duration>1096</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6116-R1</guid>\n    <dc:creator>Kevin Berni</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>ink</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/57bf/afba5bdd-e9df-4af4-b4c6-9cf9d09457bf/T6116-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/57bf/afba5bdd-e9df-4af4-b4c6-9cf9d09457bf/T6116-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/57bf/afba5bdd-e9df-4af4-b4c6-9cf9d09457bf/T6116-R1_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/57bf/afba5bdd-e9df-4af4-b4c6-9cf9d09457bf/T6116-R1.mp3\" expression=\"full\" duration=\"1096\" fileSize=\"17549352\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/57bf/afba5bdd-e9df-4af4-b4c6-9cf9d09457bf/T6116-R1.mp4\" expression=\"full\" duration=\"1096\" fileSize=\"23347707\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/57bf/afba5bdd-e9df-4af4-b4c6-9cf9d09457bf/T6116-R1_high.mp4\" expression=\"full\" duration=\"1096\" fileSize=\"205254357\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/57bf/afba5bdd-e9df-4af4-b4c6-9cf9d09457bf/T6116-R1_mid.mp4\" expression=\"full\" duration=\"1096\" fileSize=\"56992953\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6116-R1.mp4\" expression=\"full\" duration=\"1096\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Design and prototype with Adobe XD: Even if you’re a developer</title>\n    <description><![CDATA[Experience Design (Xd) is new powerful UI/X design and prototyping tool from Adobe. See how important it is to create captivating and engaging app UI for your next app. Adobe Xd has built in UWP templates to get you started quickly and accurately. This demonstration shows you how to design a UWP app, prototype behaviors or transitions, and share your design with others. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:fbb8f5832fe34ab29177a768001cb03c\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6114-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6114-R2</link>\n    <itunes:summary>Experience Design (Xd) is new powerful UI/X design and prototyping tool from Adobe. See how important it is to create captivating and engaging app UI for your next app. Adobe Xd has built in UWP templates to get you started quickly and accurately. This demonstration shows you how to design a UWP app, prototype behaviors or transitions, and share your design with others.</itunes:summary>\n    <itunes:duration>1377</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6114-R2</guid>\n    <dc:creator>Andrew Shorten, Jonathan Pimento</dc:creator>\n    <category>ux</category>\n    <category>universal+windows+platform+uwp</category>\n    <category>tools</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/aa7f/a71abf19-2c9a-4351-a864-c580e1dbaa7f/T6114-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/aa7f/a71abf19-2c9a-4351-a864-c580e1dbaa7f/T6114-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/aa7f/a71abf19-2c9a-4351-a864-c580e1dbaa7f/T6114-R2_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/aa7f/a71abf19-2c9a-4351-a864-c580e1dbaa7f/T6114-R2.mp3\" expression=\"full\" duration=\"1377\" fileSize=\"22034185\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/aa7f/a71abf19-2c9a-4351-a864-c580e1dbaa7f/T6114-R2.mp4\" expression=\"full\" duration=\"1377\" fileSize=\"24508611\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/aa7f/a71abf19-2c9a-4351-a864-c580e1dbaa7f/T6114-R2_high.mp4\" expression=\"full\" duration=\"1377\" fileSize=\"183539267\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/aa7f/a71abf19-2c9a-4351-a864-c580e1dbaa7f/T6114-R2_mid.mp4\" expression=\"full\" duration=\"1377\" fileSize=\"49064943\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6114-R2.mp4\" expression=\"full\" duration=\"1377\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Design and prototype with Adobe XD: Even if you’re a developer</title>\n    <description><![CDATA[Experience Design (Xd) is new powerful UI/X design and prototyping tool from Adobe. See how important it is to create captivating and engaging app UI for your next app. Adobe Xd has built in UWP templates to get you started quickly and accurately. This demonstration shows you how to design a UWP app, prototype behaviors or transitions, and share your design with others. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:f6ed095b0d954a429e62a768001caf64\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6114-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6114-R1</link>\n    <itunes:summary>Experience Design (Xd) is new powerful UI/X design and prototyping tool from Adobe. See how important it is to create captivating and engaging app UI for your next app. Adobe Xd has built in UWP templates to get you started quickly and accurately. This demonstration shows you how to design a UWP app, prototype behaviors or transitions, and share your design with others.</itunes:summary>\n    <itunes:duration>1367</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6114-R1</guid>\n    <dc:creator>Andrew Shorten, Jonathan Pimento</dc:creator>\n    <category>ux</category>\n    <category>universal+windows+platform+uwp</category>\n    <category>tools</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/a7f3/20c0b16d-29a4-4fde-b02a-2e5c9ed3a7f3/T6114-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a7f3/20c0b16d-29a4-4fde-b02a-2e5c9ed3a7f3/T6114-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a7f3/20c0b16d-29a4-4fde-b02a-2e5c9ed3a7f3/T6114-R1_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a7f3/20c0b16d-29a4-4fde-b02a-2e5c9ed3a7f3/T6114-R1.mp3\" expression=\"full\" duration=\"1367\" fileSize=\"21877897\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a7f3/20c0b16d-29a4-4fde-b02a-2e5c9ed3a7f3/T6114-R1.mp4\" expression=\"full\" duration=\"1367\" fileSize=\"24271090\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a7f3/20c0b16d-29a4-4fde-b02a-2e5c9ed3a7f3/T6114-R1_high.mp4\" expression=\"full\" duration=\"1367\" fileSize=\"183269291\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a7f3/20c0b16d-29a4-4fde-b02a-2e5c9ed3a7f3/T6114-R1_mid.mp4\" expression=\"full\" duration=\"1367\" fileSize=\"49371202\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6114-R1.mp4\" expression=\"full\" duration=\"1367\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How business can enable their digital transformation with TeamViewer</title>\n    <description><![CDATA[Come and learn how TeamViewer leveraged new innovations like UWP and Desktop Bridge so you can benefit and accelerate your digital transformation. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:fb1284226f9b439a9e43a768001cae8d\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6113-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6113-R2</link>\n    <itunes:summary>Come and learn how TeamViewer leveraged new innovations like UWP and Desktop Bridge so you can benefit and accelerate your digital transformation.</itunes:summary>\n    <itunes:duration>1003</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6113-R2</guid>\n    <dc:creator>Alfredo Patron</dc:creator>\n    <category>windows+store</category>\n    <category>desktop+bridge</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/285e/af59a530-f8d5-4881-9640-5d0145ae285e/T6113-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/285e/af59a530-f8d5-4881-9640-5d0145ae285e/T6113-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/285e/af59a530-f8d5-4881-9640-5d0145ae285e/T6113-R2_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/285e/af59a530-f8d5-4881-9640-5d0145ae285e/T6113-R2.mp3\" expression=\"full\" duration=\"1003\" fileSize=\"16056823\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/285e/af59a530-f8d5-4881-9640-5d0145ae285e/T6113-R2.mp4\" expression=\"full\" duration=\"1003\" fileSize=\"18803044\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/285e/af59a530-f8d5-4881-9640-5d0145ae285e/T6113-R2_high.mp4\" expression=\"full\" duration=\"1003\" fileSize=\"177731617\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/285e/af59a530-f8d5-4881-9640-5d0145ae285e/T6113-R2_mid.mp4\" expression=\"full\" duration=\"1003\" fileSize=\"42925328\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6113-R2.mp4\" expression=\"full\" duration=\"1003\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How business can enable their digital transformation with TeamViewer</title>\n    <description><![CDATA[Come and learn how TeamViewer leveraged new innovations like UWP and Desktop Bridge so you can benefit and accelerate your digital transformation. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:f663e55308f144d497b5a768001caded\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6113-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6113-R1</link>\n    <itunes:summary>Come and learn how TeamViewer leveraged new innovations like UWP and Desktop Bridge so you can benefit and accelerate your digital transformation.</itunes:summary>\n    <itunes:duration>854</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6113-R1</guid>\n    <dc:creator>Alfredo Patron</dc:creator>\n    <category>windows+store</category>\n    <category>desktop+bridge</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/a36d/4f0b7c17-1433-47c3-b36e-16b83b4fa36d/T6113-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a36d/4f0b7c17-1433-47c3-b36e-16b83b4fa36d/T6113-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a36d/4f0b7c17-1433-47c3-b36e-16b83b4fa36d/T6113-R1_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a36d/4f0b7c17-1433-47c3-b36e-16b83b4fa36d/T6113-R1.mp3\" expression=\"full\" duration=\"854\" fileSize=\"13668343\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a36d/4f0b7c17-1433-47c3-b36e-16b83b4fa36d/T6113-R1.mp4\" expression=\"full\" duration=\"854\" fileSize=\"15996195\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a36d/4f0b7c17-1433-47c3-b36e-16b83b4fa36d/T6113-R1_high.mp4\" expression=\"full\" duration=\"854\" fileSize=\"159654370\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a36d/4f0b7c17-1433-47c3-b36e-16b83b4fa36d/T6113-R1_mid.mp4\" expression=\"full\" duration=\"854\" fileSize=\"37832858\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6113-R1.mp4\" expression=\"full\" duration=\"854\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Build data driven solutions using Microsoft Visio</title>\n    <description><![CDATA[Learn to create data driven solutions using Visio, one the most advance diagramming tools, on both web and desktop. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:4ae2b25f78c344569b60a768001cad99\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6111</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6111</link>\n    <itunes:summary>Learn to create data driven solutions using Visio, one the most advance diagramming tools, on both web and desktop.</itunes:summary>\n    <itunes:duration>1173</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6111</guid>\n    <dc:creator>Kulo Rajasekaran, Rishabh Agrawal</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/8bb5/80a0bc48-4a8a-4ecb-97e8-b8c063f48bb5/T6111_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8bb5/80a0bc48-4a8a-4ecb-97e8-b8c063f48bb5/T6111_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8bb5/80a0bc48-4a8a-4ecb-97e8-b8c063f48bb5/T6111_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8bb5/80a0bc48-4a8a-4ecb-97e8-b8c063f48bb5/T6111.mp3\" expression=\"full\" duration=\"1173\" fileSize=\"18779466\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8bb5/80a0bc48-4a8a-4ecb-97e8-b8c063f48bb5/T6111.mp4\" expression=\"full\" duration=\"1173\" fileSize=\"24133680\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8bb5/80a0bc48-4a8a-4ecb-97e8-b8c063f48bb5/T6111_high.mp4\" expression=\"full\" duration=\"1173\" fileSize=\"139723987\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8bb5/80a0bc48-4a8a-4ecb-97e8-b8c063f48bb5/T6111_mid.mp4\" expression=\"full\" duration=\"1173\" fileSize=\"51761054\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6111.mp4\" expression=\"full\" duration=\"1173\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Sapho connects legacy systems with Microsoft Teams</title>\n    <description><![CDATA[Microsoft Teams is new and exciting, however it is not obvious how to connect in legacy on-premises systems. In this Tech Talk, we will show how Sapho detects events in legacy systems including SAP ERP and Oracle EBS and turns the events into actionable cards in Microsoft Teams, as well as how users can query those systems with bot questions. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:4b1700ce49de42cfb2afa768001cad07\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6110</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6110</link>\n    <itunes:summary>Microsoft Teams is new and exciting, however it is not obvious how to connect in legacy on-premises systems. In this Tech Talk, we will show how Sapho detects events in legacy systems including SAP ERP and Oracle EBS and turns the events into actionable cards in Microsoft Teams, as well as how users can query those systems with bot questions.</itunes:summary>\n    <itunes:duration>1186</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6110</guid>\n    <dc:creator>Peter Yared</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/2a0a/687df64a-d52c-472c-96af-6b8354ab2a0a/T6110_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2a0a/687df64a-d52c-472c-96af-6b8354ab2a0a/T6110_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2a0a/687df64a-d52c-472c-96af-6b8354ab2a0a/T6110_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2a0a/687df64a-d52c-472c-96af-6b8354ab2a0a/T6110.mp3\" expression=\"full\" duration=\"1186\" fileSize=\"18979530\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2a0a/687df64a-d52c-472c-96af-6b8354ab2a0a/T6110.mp4\" expression=\"full\" duration=\"1186\" fileSize=\"21534233\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2a0a/687df64a-d52c-472c-96af-6b8354ab2a0a/T6110_high.mp4\" expression=\"full\" duration=\"1186\" fileSize=\"172016651\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2a0a/687df64a-d52c-472c-96af-6b8354ab2a0a/T6110_mid.mp4\" expression=\"full\" duration=\"1186\" fileSize=\"43333854\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6110.mp4\" expression=\"full\" duration=\"1186\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Black Marble: What did UWP ever do for us?</title>\n    <description><![CDATA[Come hear how UWP transformed our experience of developing an enterprise grade application for operational policing. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1e3eebcd02ef48a8aecea768001cacae\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6109-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6109-R2</link>\n    <itunes:summary>Come hear how UWP transformed our experience of developing an enterprise grade application for operational policing.</itunes:summary>\n    <itunes:duration>1163</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6109-R2</guid>\n    <dc:creator>Robert Hogg, James Croft</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/bbb9/6ada403c-787f-4cba-9d7e-bef40ca7bbb9/T6109-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/bbb9/6ada403c-787f-4cba-9d7e-bef40ca7bbb9/T6109-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/bbb9/6ada403c-787f-4cba-9d7e-bef40ca7bbb9/T6109-R2_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bbb9/6ada403c-787f-4cba-9d7e-bef40ca7bbb9/T6109-R2.mp3\" expression=\"full\" duration=\"1163\" fileSize=\"18622672\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bbb9/6ada403c-787f-4cba-9d7e-bef40ca7bbb9/T6109-R2.mp4\" expression=\"full\" duration=\"1163\" fileSize=\"21901172\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bbb9/6ada403c-787f-4cba-9d7e-bef40ca7bbb9/T6109-R2_high.mp4\" expression=\"full\" duration=\"1163\" fileSize=\"277942962\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bbb9/6ada403c-787f-4cba-9d7e-bef40ca7bbb9/T6109-R2_mid.mp4\" expression=\"full\" duration=\"1163\" fileSize=\"45824040\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6109-R2.mp4\" expression=\"full\" duration=\"1163\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Black Marble: What did UWP ever do for us?</title>\n    <description><![CDATA[Come hear how UWP transformed our experience of developing an enterprise grade application for operational policing. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1fbbe499a73c4616a797a768001cac30\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6109-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6109-R1</link>\n    <itunes:summary>Come hear how UWP transformed our experience of developing an enterprise grade application for operational policing.</itunes:summary>\n    <itunes:duration>1069</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6109-R1</guid>\n    <dc:creator>Robert Hogg, James Croft</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/cb8b/01f66a86-8e20-417c-8bc2-d2974af0cb8b/T6109-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/cb8b/01f66a86-8e20-417c-8bc2-d2974af0cb8b/T6109-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/cb8b/01f66a86-8e20-417c-8bc2-d2974af0cb8b/T6109-R1_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cb8b/01f66a86-8e20-417c-8bc2-d2974af0cb8b/T6109-R1.mp3\" expression=\"full\" duration=\"1069\" fileSize=\"17107024\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cb8b/01f66a86-8e20-417c-8bc2-d2974af0cb8b/T6109-R1.mp4\" expression=\"full\" duration=\"1069\" fileSize=\"20310152\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cb8b/01f66a86-8e20-417c-8bc2-d2974af0cb8b/T6109-R1_high.mp4\" expression=\"full\" duration=\"1069\" fileSize=\"268686127\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cb8b/01f66a86-8e20-417c-8bc2-d2974af0cb8b/T6109-R1_mid.mp4\" expression=\"full\" duration=\"1069\" fileSize=\"42998094\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6109-R1.mp4\" expression=\"full\" duration=\"1069\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Using Microsoft Graph&#160;to connect to Office 365 data</title>\n    <description><![CDATA[Come find out how you can incorporate Microsoft Graph in your apps to pull in the most relevant user, group, file, mail and more pieces of information to build an engaging experience.&nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:fe1cb7b5c31f4f3b9072a768001cabad\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6108</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6108</link>\n    <itunes:summary>Come find out how you can incorporate Microsoft Graph in your apps to pull in the most relevant user, group, file, mail and more pieces of information to build an engaging experience. </itunes:summary>\n    <itunes:duration>1166</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6108</guid>\n    <dc:creator>Yina Arenas</dc:creator>\n    <category>office</category>\n    <category>office+365</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/1b84/9f269f5a-1bdc-49ee-a9b4-d11269c21b84/T6108_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1b84/9f269f5a-1bdc-49ee-a9b4-d11269c21b84/T6108_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1b84/9f269f5a-1bdc-49ee-a9b4-d11269c21b84/T6108_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1b84/9f269f5a-1bdc-49ee-a9b4-d11269c21b84/T6108.mp3\" expression=\"full\" duration=\"1166\" fileSize=\"18659529\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1b84/9f269f5a-1bdc-49ee-a9b4-d11269c21b84/T6108.mp4\" expression=\"full\" duration=\"1166\" fileSize=\"22946370\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1b84/9f269f5a-1bdc-49ee-a9b4-d11269c21b84/T6108_high.mp4\" expression=\"full\" duration=\"1166\" fileSize=\"113243032\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1b84/9f269f5a-1bdc-49ee-a9b4-d11269c21b84/T6108_mid.mp4\" expression=\"full\" duration=\"1166\" fileSize=\"47224525\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6108.mp4\" expression=\"full\" duration=\"1166\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Kodi goes Windows Store with the Desktop Bridge</title>\n    <description><![CDATA[Kodi is a free and open source software media player and entertainment hub. Last September, we made our app available in the Windows Store using the Desktop Bridge and reached millions of Windows 10 users. In this presentation we discuss our experience with the Desktop Bridge and demo some cool new Kodi features. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:cb3a81a032f04873863da768001cab54\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6107-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6107-R2</link>\n    <itunes:summary>Kodi is a free and open source software media player and entertainment hub. Last September, we made our app available in the Windows Store using the Desktop Bridge and reached millions of Windows 10 users. In this presentation we discuss our experience with the Desktop Bridge and demo some cool new Kodi features.</itunes:summary>\n    <itunes:duration>1202</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6107-R2</guid>\n    <dc:creator>P&#228;r Bj&#246;rklund</dc:creator>\n    <category>windows+store</category>\n    <category>desktop+bridge</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/d83f/57a27b9f-431a-4f7e-a2ba-0a4b4f15d83f/T6107-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/d83f/57a27b9f-431a-4f7e-a2ba-0a4b4f15d83f/T6107-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/d83f/57a27b9f-431a-4f7e-a2ba-0a4b4f15d83f/T6107-R2_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d83f/57a27b9f-431a-4f7e-a2ba-0a4b4f15d83f/T6107-R2.mp3\" expression=\"full\" duration=\"1202\" fileSize=\"19248974\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d83f/57a27b9f-431a-4f7e-a2ba-0a4b4f15d83f/T6107-R2.mp4\" expression=\"full\" duration=\"1202\" fileSize=\"22900905\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d83f/57a27b9f-431a-4f7e-a2ba-0a4b4f15d83f/T6107-R2_high.mp4\" expression=\"full\" duration=\"1202\" fileSize=\"140264250\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d83f/57a27b9f-431a-4f7e-a2ba-0a4b4f15d83f/T6107-R2_mid.mp4\" expression=\"full\" duration=\"1202\" fileSize=\"46816964\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6107-R2.mp4\" expression=\"full\" duration=\"1202\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Kodi goes Windows Store with the Desktop Bridge</title>\n    <description><![CDATA[Kodi is a free and open source software media player and entertainment hub. Last September, we made our app available in the Windows Store using the Desktop Bridge and reached millions of Windows 10 users. In this presentation we discuss our experience with the Desktop Bridge and demo some cool new Kodi features. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:9e34ddd79666446085f2a768001caad0\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6107-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6107-R1</link>\n    <itunes:summary>Kodi is a free and open source software media player and entertainment hub. Last September, we made our app available in the Windows Store using the Desktop Bridge and reached millions of Windows 10 users. In this presentation we discuss our experience with the Desktop Bridge and demo some cool new Kodi features.</itunes:summary>\n    <itunes:duration>1212</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6107-R1</guid>\n    <dc:creator>P&#228;r Bj&#246;rklund</dc:creator>\n    <category>windows+store</category>\n    <category>desktop+bridge</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/c2d9/e6c07476-b207-4025-b827-4e5fb51ac2d9/T6107-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c2d9/e6c07476-b207-4025-b827-4e5fb51ac2d9/T6107-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c2d9/e6c07476-b207-4025-b827-4e5fb51ac2d9/T6107-R1_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c2d9/e6c07476-b207-4025-b827-4e5fb51ac2d9/T6107-R1.mp3\" expression=\"full\" duration=\"1212\" fileSize=\"19397582\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c2d9/e6c07476-b207-4025-b827-4e5fb51ac2d9/T6107-R1.mp4\" expression=\"full\" duration=\"1212\" fileSize=\"24663786\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c2d9/e6c07476-b207-4025-b827-4e5fb51ac2d9/T6107-R1_high.mp4\" expression=\"full\" duration=\"1212\" fileSize=\"355589772\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c2d9/e6c07476-b207-4025-b827-4e5fb51ac2d9/T6107-R1_mid.mp4\" expression=\"full\" duration=\"1212\" fileSize=\"79524708\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6107-R1.mp4\" expression=\"full\" duration=\"1212\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>ByteCubed: Making the move to mixed reality</title>\n    <description><![CDATA[Mixed reality opens up new ways of interacting with the world and working with each other. In this session, we'll describe how we took a traditional analog business process and found new opportunities to deliver value to the national security and public safety community with the Microsoft HoloLens. We will also share some tips and tricks for designing mixed reality experiences and building them in Unity3D that can help developers and designers new to Windows Holographic build high-quality experiences faster. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:c8960bbd276342f4a33ca768001caa56\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6106-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6106-R2</link>\n    <itunes:summary>Mixed reality opens up new ways of interacting with the world and working with each other. In this session, we&#39;ll describe how we took a traditional analog business process and found new opportunities to deliver value to the national security and public safety community with the Microsoft HoloLens. We will also share some tips and tricks for designing mixed reality experiences and building them in Unity3D that can help developers and designers new to Windows Holographic build high-quality experiences faster.</itunes:summary>\n    <itunes:duration>1256</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6106-R2</guid>\n    <dc:creator>Jordan Higgins</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>hololens</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/9265/ce1b4a33-149e-4967-9399-c91c93bf9265/T6106-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9265/ce1b4a33-149e-4967-9399-c91c93bf9265/T6106-R2.mp3\" expression=\"full\" duration=\"1256\" fileSize=\"20109522\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9265/ce1b4a33-149e-4967-9399-c91c93bf9265/T6106-R2.mp4\" expression=\"full\" duration=\"1256\" fileSize=\"26713306\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9265/ce1b4a33-149e-4967-9399-c91c93bf9265/T6106-R2_high.mp4\" expression=\"full\" duration=\"1256\" fileSize=\"328650584\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9265/ce1b4a33-149e-4967-9399-c91c93bf9265/T6106-R2_mid.mp4\" expression=\"full\" duration=\"1256\" fileSize=\"70442723\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6106-R2.mp4\" expression=\"full\" duration=\"1256\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>ByteCubed: Making the move to mixed reality</title>\n    <description><![CDATA[Mixed reality opens up new ways of interacting with the world and working with each other. In this session, we'll describe how we took a traditional analog business process and found new opportunities to deliver value to the national security and public safety community with the Microsoft HoloLens. We will also share some tips and tricks for designing mixed reality experiences and building them in Unity3D that can help developers and designers new to Windows Holographic build high-quality experiences faster. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:74694fa8d4574693ab85a768001ca9d3\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6106-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6106-R1</link>\n    <itunes:summary>Mixed reality opens up new ways of interacting with the world and working with each other. In this session, we&#39;ll describe how we took a traditional analog business process and found new opportunities to deliver value to the national security and public safety community with the Microsoft HoloLens. We will also share some tips and tricks for designing mixed reality experiences and building them in Unity3D that can help developers and designers new to Windows Holographic build high-quality experiences faster.</itunes:summary>\n    <itunes:duration>1094</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6106-R1</guid>\n    <dc:creator>Jordan Higgins</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>hololens</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/59f0/10498358-4341-4a12-a415-7b042d2b59f0/T6106-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/59f0/10498358-4341-4a12-a415-7b042d2b59f0/T6106-R1.mp3\" expression=\"full\" duration=\"1094\" fileSize=\"17507922\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/59f0/10498358-4341-4a12-a415-7b042d2b59f0/T6106-R1.mp4\" expression=\"full\" duration=\"1094\" fileSize=\"25774354\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/59f0/10498358-4341-4a12-a415-7b042d2b59f0/T6106-R1_high.mp4\" expression=\"full\" duration=\"1094\" fileSize=\"303111015\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/59f0/10498358-4341-4a12-a415-7b042d2b59f0/T6106-R1_mid.mp4\" expression=\"full\" duration=\"1094\" fileSize=\"70861447\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6106-R1.mp4\" expression=\"full\" duration=\"1094\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Immersive technology at Merck: Using Microsoft HoloLens to reimagine the molecular R&amp;D process</title>\n    <description><![CDATA[In Spring 2016, Merck’s Applied Technology Team asked Infusion to review some use-cases that they had identified for Immersive Technology. They were curious about our understanding of the hardware market for these devices. We closed a short, one-person, five-week engagement to review their identified scenarios and suggest what areas of AR/VR/MR were most suitable and what devices would be the best fit. Upon delivering a report that identified HoloLens as the front-runner, due to their scenarios being best realized in mixed reality, Merck engaged us to develop a prototype for one use-case. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:941883cc22be4e2d8ca2a768001ca849\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6105-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6105-R1</link>\n    <itunes:summary>In Spring 2016, Merck’s Applied Technology Team asked Infusion to review some use-cases that they had identified for Immersive Technology. They were curious about our understanding of the hardware market for these devices. We closed a short, one-person, five-week engagement to review their identified scenarios and suggest what areas of AR/VR/MR were most suitable and what devices would be the best fit. Upon delivering a report that identified HoloLens as the front-runner, due to their scenarios being best realized in mixed reality, Merck engaged us to develop a prototype for one use-case.</itunes:summary>\n    <itunes:duration>1388</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6105-R1</guid>\n    <dc:creator>Jeremy Bibby, Giovanna Scapin, Prashant Shah</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>hololens</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/0817/843a7a5a-9937-46e5-9a03-a636a1d90817/T6105-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0817/843a7a5a-9937-46e5-9a03-a636a1d90817/T6105-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0817/843a7a5a-9937-46e5-9a03-a636a1d90817/T6105-R1_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0817/843a7a5a-9937-46e5-9a03-a636a1d90817/T6105-R1.mp3\" expression=\"full\" duration=\"1388\" fileSize=\"22218198\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0817/843a7a5a-9937-46e5-9a03-a636a1d90817/T6105-R1.mp4\" expression=\"full\" duration=\"1388\" fileSize=\"28701250\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0817/843a7a5a-9937-46e5-9a03-a636a1d90817/T6105-R1_high.mp4\" expression=\"full\" duration=\"1388\" fileSize=\"271752087\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0817/843a7a5a-9937-46e5-9a03-a636a1d90817/T6105-R1_mid.mp4\" expression=\"full\" duration=\"1388\" fileSize=\"65412060\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6105-R1.mp4\" expression=\"full\" duration=\"1388\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Random Salad Games: How to monetize your Windows app, acquire users, and make a million dollars doing it</title>\n    <description><![CDATA[The Microsoft Cloud Monetization Platform provides effective ways to make money from your app. In this session, learn how to integrate ads into your app from the founders of Random Salad Games. Discover how to promote your app, acquire users, and hear some of the optimization tips that helped Random Salad Games earn a million dollars on the Windows Platform. Attendees with published app will get free app promotion credits and optimization tips to promote their app after the session. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:f3e9d8b6a08248aea8aba768001ca776\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6104-R3</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6104-R3</link>\n    <itunes:summary>The Microsoft Cloud Monetization Platform provides effective ways to make money from your app. In this session, learn how to integrate ads into your app from the founders of Random Salad Games. Discover how to promote your app, acquire users, and hear some of the optimization tips that helped Random Salad Games earn a million dollars on the Windows Platform. Attendees with published app will get free app promotion credits and optimization tips to promote their app after the session.</itunes:summary>\n    <itunes:duration>1290</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6104-R3</guid>\n    <dc:creator>Jake Poznanski, Sam Kaufmann</dc:creator>\n    <category>windows+store</category>\n    <category>monetization</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/2109/b73205fe-a9e9-46f9-a26c-59318cc22109/T6104-R3_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2109/b73205fe-a9e9-46f9-a26c-59318cc22109/T6104-R3_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2109/b73205fe-a9e9-46f9-a26c-59318cc22109/T6104-R3_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2109/b73205fe-a9e9-46f9-a26c-59318cc22109/T6104-R3.mp3\" expression=\"full\" duration=\"1290\" fileSize=\"20644939\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2109/b73205fe-a9e9-46f9-a26c-59318cc22109/T6104-R3.mp4\" expression=\"full\" duration=\"1290\" fileSize=\"25797204\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2109/b73205fe-a9e9-46f9-a26c-59318cc22109/T6104-R3_high.mp4\" expression=\"full\" duration=\"1290\" fileSize=\"165270644\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2109/b73205fe-a9e9-46f9-a26c-59318cc22109/T6104-R3_mid.mp4\" expression=\"full\" duration=\"1290\" fileSize=\"56562393\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6104-R3.mp4\" expression=\"full\" duration=\"1290\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Random Salad Games: How to monetize your Windows app, acquire users, and make a million dollars doing it</title>\n    <description><![CDATA[The Microsoft Cloud Monetization Platform provides effective ways to make money from your app. In this session, learn how to integrate ads into your app from the founders of Random Salad Games. Discover how to promote your app, acquire users, and hear some of the optimization tips that helped Random Salad Games earn a million dollars on the Windows Platform. Attendees with published app will get free app promotion credits and optimization tips to promote their app after the session. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1f84498b3e9445c4a75fa768001ca706\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6104-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6104-R2</link>\n    <itunes:summary>The Microsoft Cloud Monetization Platform provides effective ways to make money from your app. In this session, learn how to integrate ads into your app from the founders of Random Salad Games. Discover how to promote your app, acquire users, and hear some of the optimization tips that helped Random Salad Games earn a million dollars on the Windows Platform. Attendees with published app will get free app promotion credits and optimization tips to promote their app after the session.</itunes:summary>\n    <itunes:duration>1292</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6104-R2</guid>\n    <dc:creator>Jake Poznanski, Sam Kaufmann</dc:creator>\n    <category>windows+store</category>\n    <category>monetization</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/75af/6a4b3d66-97cd-48e2-94a2-8eaf459b75af/T6104-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/75af/6a4b3d66-97cd-48e2-94a2-8eaf459b75af/T6104-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/75af/6a4b3d66-97cd-48e2-94a2-8eaf459b75af/T6104-R2_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/75af/6a4b3d66-97cd-48e2-94a2-8eaf459b75af/T6104-R2.mp3\" expression=\"full\" duration=\"1292\" fileSize=\"20682187\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/75af/6a4b3d66-97cd-48e2-94a2-8eaf459b75af/T6104-R2.mp4\" expression=\"full\" duration=\"1292\" fileSize=\"24595679\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/75af/6a4b3d66-97cd-48e2-94a2-8eaf459b75af/T6104-R2_high.mp4\" expression=\"full\" duration=\"1292\" fileSize=\"153180081\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/75af/6a4b3d66-97cd-48e2-94a2-8eaf459b75af/T6104-R2_mid.mp4\" expression=\"full\" duration=\"1292\" fileSize=\"50320913\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6104-R2.mp4\" expression=\"full\" duration=\"1292\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Random Salad Games: How to monetize your Windows app, acquire users, and make a million dollars doing it</title>\n    <description><![CDATA[The Microsoft Cloud Monetization Platform provides effective ways to make money from your app. In this session, learn how to integrate ads into your app from the founders of Random Salad Games. Discover how to promote your app, acquire users, and hear some of the optimization tips that helped Random Salad Games earn a million dollars on the Windows Platform. Attendees with published app will get free app promotion credits and optimization tips to promote their app after the session. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:32446f2d6ba54e09b614a768001ca69a\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6104-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6104-R1</link>\n    <itunes:summary>The Microsoft Cloud Monetization Platform provides effective ways to make money from your app. In this session, learn how to integrate ads into your app from the founders of Random Salad Games. Discover how to promote your app, acquire users, and hear some of the optimization tips that helped Random Salad Games earn a million dollars on the Windows Platform. Attendees with published app will get free app promotion credits and optimization tips to promote their app after the session.</itunes:summary>\n    <itunes:duration>1263</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6104-R1</guid>\n    <dc:creator>Jake Poznanski, Sam Kaufmann</dc:creator>\n    <category>windows+store</category>\n    <category>monetization</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/2b40/c3dc5842-42b2-463e-b9c4-10a1c86e2b40/T6104-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2b40/c3dc5842-42b2-463e-b9c4-10a1c86e2b40/T6104-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2b40/c3dc5842-42b2-463e-b9c4-10a1c86e2b40/T6104-R1_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2b40/c3dc5842-42b2-463e-b9c4-10a1c86e2b40/T6104-R1.mp3\" expression=\"full\" duration=\"1263\" fileSize=\"20215243\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2b40/c3dc5842-42b2-463e-b9c4-10a1c86e2b40/T6104-R1.mp4\" expression=\"full\" duration=\"1263\" fileSize=\"22929793\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2b40/c3dc5842-42b2-463e-b9c4-10a1c86e2b40/T6104-R1_high.mp4\" expression=\"full\" duration=\"1263\" fileSize=\"136503957\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2b40/c3dc5842-42b2-463e-b9c4-10a1c86e2b40/T6104-R1_mid.mp4\" expression=\"full\" duration=\"1263\" fileSize=\"47262647\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6104-R1.mp4\" expression=\"full\" duration=\"1263\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Ayzenberg/Praeses: Jurisdiction Unlimited: Extending Jurisdiction Online to Microsoft HoloLens, so building inspectors make better decisions, faster, for increased safety</title>\n    <description><![CDATA[Between paper notes, retyping data, and underwriter verification, the entire inspection process can take up to three months. Jurisdiction Unlimited is a Mixed Reality extension of the existing Jurisdiction Online software solution from Praeses, targeted at improving the efficiency and accuracy of the jurisdictional inspection and risk evaluation processes. By increasing data quality, communicating contextual data more effectively, and streamlining the data entry system, this will ultimately lead to a safer community. This demo shows a work-in-progress build of the Jurisdiction Unlimited Proof of Concept, showing a functional slice of what the application could do to resolve industry issues, within a specific scenario and a scripted/self-contained Unity environment. We show how an inspector will go through an inspection process using Jurisdiction Unlimited, resolve an existing violation and add a new one, easily add annotations and interact with past annotations, submit their inspection, and review findings with stakeholders. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:12c5c770a17b4d57a99aa768001ca62a\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6103-R3</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6103-R3</link>\n    <itunes:summary>Between paper notes, retyping data, and underwriter verification, the entire inspection process can take up to three months. Jurisdiction Unlimited is a Mixed Reality extension of the existing Jurisdiction Online software solution from Praeses, targeted at improving the efficiency and accuracy of the jurisdictional inspection and risk evaluation processes. By increasing data quality, communicating contextual data more effectively, and streamlining the data entry system, this will ultimately lead to a safer community. This demo shows a work-in-progress build of the Jurisdiction Unlimited Proof of Concept, showing a functional slice of what the application could do to resolve industry issues, within a specific scenario and a scripted/self-contained Unity environment. We show how an inspector will go through an inspection process using Jurisdiction Unlimited, resolve an existing violation and add a new one, easily add annotations and interact with past annotations, submit their inspection, and review findings with stakeholders.</itunes:summary>\n    <itunes:duration>1393</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6103-R3</guid>\n    <dc:creator>Matt Bretz</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>hololens</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/4083/a2267d85-d7c2-42ee-a635-49942ea84083/T6103-R3_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4083/a2267d85-d7c2-42ee-a635-49942ea84083/T6103-R3_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4083/a2267d85-d7c2-42ee-a635-49942ea84083/T6103-R3_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4083/a2267d85-d7c2-42ee-a635-49942ea84083/T6103-R3.mp3\" expression=\"full\" duration=\"1393\" fileSize=\"22295500\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4083/a2267d85-d7c2-42ee-a635-49942ea84083/T6103-R3.mp4\" expression=\"full\" duration=\"1393\" fileSize=\"30649327\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4083/a2267d85-d7c2-42ee-a635-49942ea84083/T6103-R3_high.mp4\" expression=\"full\" duration=\"1393\" fileSize=\"282718618\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4083/a2267d85-d7c2-42ee-a635-49942ea84083/T6103-R3_mid.mp4\" expression=\"full\" duration=\"1393\" fileSize=\"70033888\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6103-R3.mp4\" expression=\"full\" duration=\"1393\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Ayzenberg/Praeses: Jurisdiction Unlimited: Extending Jurisdiction Online to Microsoft HoloLens, so building inspectors make better decisions, faster, for increased safety</title>\n    <description><![CDATA[Between paper notes, retyping data, and underwriter verification, the entire inspection process can take up to three months. Jurisdiction Unlimited is a Mixed Reality extension of the existing Jurisdiction Online software solution from Praeses, targeted at improving the efficiency and accuracy of the jurisdictional inspection and risk evaluation processes. By increasing data quality, communicating contextual data more effectively, and streamlining the data entry system, this will ultimately lead to a safer community. This demo shows a work-in-progress build of the Jurisdiction Unlimited Proof of Concept, showing a functional slice of what the application could do to resolve industry issues, within a specific scenario and a scripted/self-contained Unity environment. We show how an inspector will go through an inspection process using Jurisdiction Unlimited, resolve an existing violation and add a new one, easily add annotations and interact with past annotations, submit their inspection, and review findings with stakeholders. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:9e0900d7dc40466f9815a768001ca598\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6103-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6103-R2</link>\n    <itunes:summary>Between paper notes, retyping data, and underwriter verification, the entire inspection process can take up to three months. Jurisdiction Unlimited is a Mixed Reality extension of the existing Jurisdiction Online software solution from Praeses, targeted at improving the efficiency and accuracy of the jurisdictional inspection and risk evaluation processes. By increasing data quality, communicating contextual data more effectively, and streamlining the data entry system, this will ultimately lead to a safer community. This demo shows a work-in-progress build of the Jurisdiction Unlimited Proof of Concept, showing a functional slice of what the application could do to resolve industry issues, within a specific scenario and a scripted/self-contained Unity environment. We show how an inspector will go through an inspection process using Jurisdiction Unlimited, resolve an existing violation and add a new one, easily add annotations and interact with past annotations, submit their inspection, and review findings with stakeholders.</itunes:summary>\n    <itunes:duration>1272</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6103-R2</guid>\n    <dc:creator>Matt Bretz</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>hololens</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/faf2/d78b6fd0-043e-404e-b94e-ecc41f15faf2/T6103-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/faf2/d78b6fd0-043e-404e-b94e-ecc41f15faf2/T6103-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/faf2/d78b6fd0-043e-404e-b94e-ecc41f15faf2/T6103-R2_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/faf2/d78b6fd0-043e-404e-b94e-ecc41f15faf2/T6103-R2.mp3\" expression=\"full\" duration=\"1272\" fileSize=\"20364364\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/faf2/d78b6fd0-043e-404e-b94e-ecc41f15faf2/T6103-R2.mp4\" expression=\"full\" duration=\"1272\" fileSize=\"28460697\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/faf2/d78b6fd0-043e-404e-b94e-ecc41f15faf2/T6103-R2_high.mp4\" expression=\"full\" duration=\"1272\" fileSize=\"291823800\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/faf2/d78b6fd0-043e-404e-b94e-ecc41f15faf2/T6103-R2_mid.mp4\" expression=\"full\" duration=\"1272\" fileSize=\"68862697\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6103-R2.mp4\" expression=\"full\" duration=\"1272\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Ayzenberg/Praeses: Jurisdiction Unlimited: Extending Jurisdiction Online to Microsoft HoloLens, so building inspectors make better decisions, faster, for increased safety</title>\n    <description><![CDATA[Between paper notes, retyping data, and underwriter verification, the entire inspection process can take up to three months. Jurisdiction Unlimited is a Mixed Reality extension of the existing Jurisdiction Online software solution from Praeses, targeted at improving the efficiency and accuracy of the jurisdictional inspection and risk evaluation processes. By increasing data quality, communicating contextual data more effectively, and streamlining the data entry system, this will ultimately lead to a safer community. This demo shows a work-in-progress build of the Jurisdiction Unlimited Proof of Concept, showing a functional slice of what the application could do to resolve industry issues, within a specific scenario and a scripted/self-contained Unity environment. We show how an inspector will go through an inspection process using Jurisdiction Unlimited, resolve an existing violation and add a new one, easily add annotations and interact with past annotations, submit their inspection, and review findings with stakeholders. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:bb314593609345cab20aa768001ca510\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6103-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6103-R1</link>\n    <itunes:summary>Between paper notes, retyping data, and underwriter verification, the entire inspection process can take up to three months. Jurisdiction Unlimited is a Mixed Reality extension of the existing Jurisdiction Online software solution from Praeses, targeted at improving the efficiency and accuracy of the jurisdictional inspection and risk evaluation processes. By increasing data quality, communicating contextual data more effectively, and streamlining the data entry system, this will ultimately lead to a safer community. This demo shows a work-in-progress build of the Jurisdiction Unlimited Proof of Concept, showing a functional slice of what the application could do to resolve industry issues, within a specific scenario and a scripted/self-contained Unity environment. We show how an inspector will go through an inspection process using Jurisdiction Unlimited, resolve an existing violation and add a new one, easily add annotations and interact with past annotations, submit their inspection, and review findings with stakeholders.</itunes:summary>\n    <itunes:duration>1294</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6103-R1</guid>\n    <dc:creator>Matt Bretz</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>hololens</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/639d/59885a6c-b669-4e5d-b672-969ae96e639d/T6103-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/639d/59885a6c-b669-4e5d-b672-969ae96e639d/T6103-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/639d/59885a6c-b669-4e5d-b672-969ae96e639d/T6103-R1_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/639d/59885a6c-b669-4e5d-b672-969ae96e639d/T6103-R1.mp3\" expression=\"full\" duration=\"1294\" fileSize=\"20708812\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/639d/59885a6c-b669-4e5d-b672-969ae96e639d/T6103-R1.mp4\" expression=\"full\" duration=\"1294\" fileSize=\"28391775\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/639d/59885a6c-b669-4e5d-b672-969ae96e639d/T6103-R1_high.mp4\" expression=\"full\" duration=\"1294\" fileSize=\"287099213\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/639d/59885a6c-b669-4e5d-b672-969ae96e639d/T6103-R1_mid.mp4\" expression=\"full\" duration=\"1294\" fileSize=\"65533672\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6103-R1.mp4\" expression=\"full\" duration=\"1294\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Drawboard: Building a business by differentiating on UWP and Microsoft Surface</title>\n    <description><![CDATA[<p>Learn how we identified an opportunity to create an app on UWP and Surface and successfully commercialize it. In this chat, we explain how we matched the purpose of the app with differentiating features of the platform to wow our audiences.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:25a97c6fe04b43eda0caa768001ca48d\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6102-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6102-R2</link>\n    <itunes:summary>Learn how we identified an opportunity to create an app on UWP and Surface and successfully commercialize it. In this chat, we explain how we matched the purpose of the app with differentiating features of the platform to wow our audiences. </itunes:summary>\n    <itunes:duration>1054</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6102-R2</guid>\n    <dc:creator>Nick Waggoner, Alistair Michener</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/c6b3/7aa4ad2c-2a68-4150-b3bc-fd717a9ac6b3/T6102-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/c6b3/7aa4ad2c-2a68-4150-b3bc-fd717a9ac6b3/T6102-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/c6b3/7aa4ad2c-2a68-4150-b3bc-fd717a9ac6b3/T6102-R2_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c6b3/7aa4ad2c-2a68-4150-b3bc-fd717a9ac6b3/T6102-R2.mp3\" expression=\"full\" duration=\"1054\" fileSize=\"16867530\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c6b3/7aa4ad2c-2a68-4150-b3bc-fd717a9ac6b3/T6102-R2.mp4\" expression=\"full\" duration=\"1054\" fileSize=\"20794716\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c6b3/7aa4ad2c-2a68-4150-b3bc-fd717a9ac6b3/T6102-R2_high.mp4\" expression=\"full\" duration=\"1054\" fileSize=\"134304107\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c6b3/7aa4ad2c-2a68-4150-b3bc-fd717a9ac6b3/T6102-R2_mid.mp4\" expression=\"full\" duration=\"1054\" fileSize=\"45487451\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6102-R2.mp4\" expression=\"full\" duration=\"1054\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Drawboard: Building a business by differentiating on UWP and Microsoft Surface</title>\n    <description><![CDATA[<p>Learn how we identified an opportunity to create an app on UWP and Surface and successfully commercialize it. In this chat, we explain how we matched the purpose of the app with differentiating features of the platform to wow our audiences.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:bd611f46008f4938ba61a768001ca3fc\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6102-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6102-R1</link>\n    <itunes:summary>Learn how we identified an opportunity to create an app on UWP and Surface and successfully commercialize it. In this chat, we explain how we matched the purpose of the app with differentiating features of the platform to wow our audiences. </itunes:summary>\n    <itunes:duration>1006</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6102-R1</guid>\n    <dc:creator>Nick Waggoner, Alistair Michener</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/ec97/e04bdeb9-3538-4205-b6a4-87ac88dbec97/T6102-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/ec97/e04bdeb9-3538-4205-b6a4-87ac88dbec97/T6102-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/ec97/e04bdeb9-3538-4205-b6a4-87ac88dbec97/T6102-R1_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ec97/e04bdeb9-3538-4205-b6a4-87ac88dbec97/T6102-R1.mp3\" expression=\"full\" duration=\"1006\" fileSize=\"16104906\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ec97/e04bdeb9-3538-4205-b6a4-87ac88dbec97/T6102-R1.mp4\" expression=\"full\" duration=\"1006\" fileSize=\"18838500\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ec97/e04bdeb9-3538-4205-b6a4-87ac88dbec97/T6102-R1_high.mp4\" expression=\"full\" duration=\"1006\" fileSize=\"132425416\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ec97/e04bdeb9-3538-4205-b6a4-87ac88dbec97/T6102-R1_mid.mp4\" expression=\"full\" duration=\"1006\" fileSize=\"39787402\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6102-R1.mp4\" expression=\"full\" duration=\"1006\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Bullclip: Differentiating UX with UWP experiences in a connected devices environment</title>\n    <description><![CDATA[<p>In this chat, we cover why we chose UWP before other mobile platforms as our first mobile app in a connected devices environment. We also chat about leveraging the UWP and Surface user experiences to create a delightful app, and how Bullclip uses Project Orleans for real-time collaboration on PDF.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:b34971e93c3442e6a662a768001ca38b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6101-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6101-R2</link>\n    <itunes:summary>In this chat, we cover why we chose UWP before other mobile platforms as our first mobile app in a connected devices environment. We also chat about leveraging the UWP and Surface user experiences to create a delightful app, and how Bullclip uses Project Orleans for real-time collaboration on PDF. </itunes:summary>\n    <itunes:duration>971</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6101-R2</guid>\n    <dc:creator>Lindsay Kubasik, Alistair Michener</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/c3e7/60f488dc-b3db-47cf-92ff-3fab3601c3e7/T6101-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/c3e7/60f488dc-b3db-47cf-92ff-3fab3601c3e7/T6101-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/c3e7/60f488dc-b3db-47cf-92ff-3fab3601c3e7/T6101-R2_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c3e7/60f488dc-b3db-47cf-92ff-3fab3601c3e7/T6101-R2.mp3\" expression=\"full\" duration=\"971\" fileSize=\"15536970\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c3e7/60f488dc-b3db-47cf-92ff-3fab3601c3e7/T6101-R2.mp4\" expression=\"full\" duration=\"971\" fileSize=\"18826520\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c3e7/60f488dc-b3db-47cf-92ff-3fab3601c3e7/T6101-R2_high.mp4\" expression=\"full\" duration=\"971\" fileSize=\"154396848\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c3e7/60f488dc-b3db-47cf-92ff-3fab3601c3e7/T6101-R2_mid.mp4\" expression=\"full\" duration=\"971\" fileSize=\"40813304\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6101-R2.mp4\" expression=\"full\" duration=\"971\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Bullclip: Differentiating UX with UWP experiences in a connected devices environment</title>\n    <description><![CDATA[<p>In this chat, we cover why we chose UWP before other mobile platforms as our first mobile app in a connected devices environment. We also chat about leveraging the UWP and Surface user experiences to create a delightful app, and how Bullclip uses Project Orleans for real-time collaboration on PDF.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:12da18fbdc9245a3aadba768001ca31b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6101-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6101-R1</link>\n    <itunes:summary>In this chat, we cover why we chose UWP before other mobile platforms as our first mobile app in a connected devices environment. We also chat about leveraging the UWP and Surface user experiences to create a delightful app, and how Bullclip uses Project Orleans for real-time collaboration on PDF. </itunes:summary>\n    <itunes:duration>963</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6101-R1</guid>\n    <dc:creator>Lindsay Kubasik, Alistair Michener</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/9d7b/5654d217-85cc-4c83-92be-fe8faec19d7b/T6101-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/9d7b/5654d217-85cc-4c83-92be-fe8faec19d7b/T6101-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/9d7b/5654d217-85cc-4c83-92be-fe8faec19d7b/T6101-R1_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9d7b/5654d217-85cc-4c83-92be-fe8faec19d7b/T6101-R1.mp3\" expression=\"full\" duration=\"963\" fileSize=\"15411018\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9d7b/5654d217-85cc-4c83-92be-fe8faec19d7b/T6101-R1.mp4\" expression=\"full\" duration=\"963\" fileSize=\"18192966\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9d7b/5654d217-85cc-4c83-92be-fe8faec19d7b/T6101-R1_high.mp4\" expression=\"full\" duration=\"963\" fileSize=\"140180807\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9d7b/5654d217-85cc-4c83-92be-fe8faec19d7b/T6101-R1_mid.mp4\" expression=\"full\" duration=\"963\" fileSize=\"36954427\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6101-R1.mp4\" expression=\"full\" duration=\"963\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Cakewalk SONAR: Win32 lighting up on Windows 10</title>\n    <description><![CDATA[Cakewalk Sonar is a top music creation and production application for Windows. In this session, learn about the audio, bluetooth, MIDI, and other features Cakewalk has used to light up on Windows 10 from their traditional Win32 app. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:e4eb363e7eb141b2a226a768001ca2a5\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6100-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6100-R2</link>\n    <itunes:summary>Cakewalk Sonar is a top music creation and production application for Windows. In this session, learn about the audio, bluetooth, MIDI, and other features Cakewalk has used to light up on Windows 10 from their traditional Win32 app.</itunes:summary>\n    <itunes:duration>1436</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6100-R2</guid>\n    <dc:creator>Pete Brown, Noel Borthwick</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>desktop+bridge</category>\n    <category>media</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/db4e/ebfde69c-172c-4a01-878e-d1420c6ddb4e/T6100-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/db4e/ebfde69c-172c-4a01-878e-d1420c6ddb4e/T6100-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/db4e/ebfde69c-172c-4a01-878e-d1420c6ddb4e/T6100-R2_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/db4e/ebfde69c-172c-4a01-878e-d1420c6ddb4e/T6100-R2.mp3\" expression=\"full\" duration=\"1436\" fileSize=\"22983411\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/db4e/ebfde69c-172c-4a01-878e-d1420c6ddb4e/T6100-R2.mp4\" expression=\"full\" duration=\"1436\" fileSize=\"28131389\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/db4e/ebfde69c-172c-4a01-878e-d1420c6ddb4e/T6100-R2_high.mp4\" expression=\"full\" duration=\"1436\" fileSize=\"185802583\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/db4e/ebfde69c-172c-4a01-878e-d1420c6ddb4e/T6100-R2_mid.mp4\" expression=\"full\" duration=\"1436\" fileSize=\"60157685\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6100-R2.mp4\" expression=\"full\" duration=\"1436\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Cakewalk SONAR: Win32 lighting up on Windows 10</title>\n    <description><![CDATA[Cakewalk Sonar is a top music creation and production application for Windows. In this session, learn about the audio, bluetooth, MIDI, and other features Cakewalk has used to light up on Windows 10 from their traditional Win32 app. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:550f9e02e8b240ee80d6a768001ca1f8\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6100-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6100-R1</link>\n    <itunes:summary>Cakewalk Sonar is a top music creation and production application for Windows. In this session, learn about the audio, bluetooth, MIDI, and other features Cakewalk has used to light up on Windows 10 from their traditional Win32 app.</itunes:summary>\n    <itunes:duration>1364</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6100-R1</guid>\n    <dc:creator>Pete Brown, Noel Borthwick</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>desktop+bridge</category>\n    <category>media</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/a4a7/c15f02d2-76e5-4021-8d71-6955a1f3a4a7/T6100-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a4a7/c15f02d2-76e5-4021-8d71-6955a1f3a4a7/T6100-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a4a7/c15f02d2-76e5-4021-8d71-6955a1f3a4a7/T6100-R1_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a4a7/c15f02d2-76e5-4021-8d71-6955a1f3a4a7/T6100-R1.mp3\" expression=\"full\" duration=\"1364\" fileSize=\"21839475\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a4a7/c15f02d2-76e5-4021-8d71-6955a1f3a4a7/T6100-R1.mp4\" expression=\"full\" duration=\"1364\" fileSize=\"27071884\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a4a7/c15f02d2-76e5-4021-8d71-6955a1f3a4a7/T6100-R1_high.mp4\" expression=\"full\" duration=\"1364\" fileSize=\"175645153\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a4a7/c15f02d2-76e5-4021-8d71-6955a1f3a4a7/T6100-R1_mid.mp4\" expression=\"full\" duration=\"1364\" fileSize=\"57711971\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6100-R1.mp4\" expression=\"full\" duration=\"1364\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Jig.Space: Using 3D game technology in progressive web apps with BabylonJS</title>\n    <description><![CDATA[Join Jig.Space to learn how to apply technology that's usually reserved for games in non-gaming applications. Devs with a gaming background will find a wealth of information about applything those skills to progress web apps. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:b77372eda6d04fa0b0a3a768001ca146\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6098-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6098-R2</link>\n    <itunes:summary>Join Jig.Space to learn how to apply technology that&#39;s usually reserved for games in non-gaming applications. Devs with a gaming background will find a wealth of information about applything those skills to progress web apps.</itunes:summary>\n    <itunes:duration>918</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6098-R2</guid>\n    <dc:creator>Numa Berton, Zac Duff</dc:creator>\n    <category>web+platform</category>\n    <category>media</category>\n    <category>mixed+reality</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/1b94/7e47c313-d319-471f-ae63-6b7e02e41b94/T6098-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1b94/7e47c313-d319-471f-ae63-6b7e02e41b94/T6098-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1b94/7e47c313-d319-471f-ae63-6b7e02e41b94/T6098-R2_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1b94/7e47c313-d319-471f-ae63-6b7e02e41b94/T6098-R2.mp3\" expression=\"full\" duration=\"918\" fileSize=\"14702479\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1b94/7e47c313-d319-471f-ae63-6b7e02e41b94/T6098-R2.mp4\" expression=\"full\" duration=\"918\" fileSize=\"17247214\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1b94/7e47c313-d319-471f-ae63-6b7e02e41b94/T6098-R2_high.mp4\" expression=\"full\" duration=\"918\" fileSize=\"105069404\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1b94/7e47c313-d319-471f-ae63-6b7e02e41b94/T6098-R2_mid.mp4\" expression=\"full\" duration=\"918\" fileSize=\"35468758\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6098-R2.mp4\" expression=\"full\" duration=\"918\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Jig.Space: Using 3D game technology in progressive web apps with BabylonJS</title>\n    <description><![CDATA[Join Jig.Space to learn how to apply technology that's usually reserved for games in non-gaming applications. Devs with a gaming background will find a wealth of information about applything those skills to progress web apps. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:5f155d03ed194713964ea768001ca036\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6098-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6098-R1</link>\n    <itunes:summary>Join Jig.Space to learn how to apply technology that&#39;s usually reserved for games in non-gaming applications. Devs with a gaming background will find a wealth of information about applything those skills to progress web apps.</itunes:summary>\n    <itunes:duration>867</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6098-R1</guid>\n    <dc:creator>Numa Berton, Zac Duff</dc:creator>\n    <category>web+platform</category>\n    <category>media</category>\n    <category>mixed+reality</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/5879/472cc72d-a659-4b24-85b4-bfcd4dae5879/T6098-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/5879/472cc72d-a659-4b24-85b4-bfcd4dae5879/T6098-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/5879/472cc72d-a659-4b24-85b4-bfcd4dae5879/T6098-R1_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5879/472cc72d-a659-4b24-85b4-bfcd4dae5879/T6098-R1.mp3\" expression=\"full\" duration=\"867\" fileSize=\"13888015\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5879/472cc72d-a659-4b24-85b4-bfcd4dae5879/T6098-R1.mp4\" expression=\"full\" duration=\"867\" fileSize=\"15988795\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5879/472cc72d-a659-4b24-85b4-bfcd4dae5879/T6098-R1_high.mp4\" expression=\"full\" duration=\"867\" fileSize=\"97752839\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/5879/472cc72d-a659-4b24-85b4-bfcd4dae5879/T6098-R1_mid.mp4\" expression=\"full\" duration=\"867\" fileSize=\"32584667\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6098-R1.mp4\" expression=\"full\" duration=\"867\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Lessons learned developing for mixed reality</title>\n    <description><![CDATA[Learn how an internal Microsoft team developed an application that works on Microsoft HoloLens and Virtual Reality devices. The presenters talk about how to use Unity to leverage the Microsoft Mixed Reality APIs, differences you will encounter when working with different types of devices, and techniques they used to build their application. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:be6fa041374b4bdfa5bfa768001c9ec4\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6097-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6097-R2</link>\n    <itunes:summary>Learn how an internal Microsoft team developed an application that works on Microsoft HoloLens and Virtual Reality devices. The presenters talk about how to use Unity to leverage the Microsoft Mixed Reality APIs, differences you will encounter when working with different types of devices, and techniques they used to build their application.</itunes:summary>\n    <itunes:duration>1556</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6097-R2</guid>\n    <dc:creator>Richard Wifall</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>hololens</category>\n    <category>mixed+reality</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/4ac3/24d2a1ab-e1cd-4887-8630-7a2a99f24ac3/T6097-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4ac3/24d2a1ab-e1cd-4887-8630-7a2a99f24ac3/T6097-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4ac3/24d2a1ab-e1cd-4887-8630-7a2a99f24ac3/T6097-R2_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4ac3/24d2a1ab-e1cd-4887-8630-7a2a99f24ac3/T6097-R2.mp3\" expression=\"full\" duration=\"1556\" fileSize=\"24911459\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4ac3/24d2a1ab-e1cd-4887-8630-7a2a99f24ac3/T6097-R2.mp4\" expression=\"full\" duration=\"1556\" fileSize=\"39533541\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4ac3/24d2a1ab-e1cd-4887-8630-7a2a99f24ac3/T6097-R2_high.mp4\" expression=\"full\" duration=\"1556\" fileSize=\"439589672\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4ac3/24d2a1ab-e1cd-4887-8630-7a2a99f24ac3/T6097-R2_mid.mp4\" expression=\"full\" duration=\"1556\" fileSize=\"119088182\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6097-R2.mp4\" expression=\"full\" duration=\"1556\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Lessons learned developing for mixed reality</title>\n    <description><![CDATA[Learn how an internal Microsoft team developed an application that works on Microsoft HoloLens and Virtual Reality devices. The presenters talk about how to use Unity to leverage the Microsoft Mixed Reality APIs, differences you will encounter when working with different types of devices, and techniques they used to build their application. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:c2d7cd54d7824af8b500a768001c9df5\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6097-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6097-R1</link>\n    <itunes:summary>Learn how an internal Microsoft team developed an application that works on Microsoft HoloLens and Virtual Reality devices. The presenters talk about how to use Unity to leverage the Microsoft Mixed Reality APIs, differences you will encounter when working with different types of devices, and techniques they used to build their application.</itunes:summary>\n    <itunes:duration>1578</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6097-R1</guid>\n    <dc:creator>Dan Anderson (APS), Richard Wifall</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>hololens</category>\n    <category>mixed+reality</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/2097/6b6dcad6-aa86-4c63-b81b-b89a1b342097/T6097-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2097/6b6dcad6-aa86-4c63-b81b-b89a1b342097/T6097-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2097/6b6dcad6-aa86-4c63-b81b-b89a1b342097/T6097-R1_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2097/6b6dcad6-aa86-4c63-b81b-b89a1b342097/T6097-R1.mp3\" expression=\"full\" duration=\"1578\" fileSize=\"25253623\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2097/6b6dcad6-aa86-4c63-b81b-b89a1b342097/T6097-R1.mp4\" expression=\"full\" duration=\"1578\" fileSize=\"38424281\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2097/6b6dcad6-aa86-4c63-b81b-b89a1b342097/T6097-R1_high.mp4\" expression=\"full\" duration=\"1578\" fileSize=\"428350704\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2097/6b6dcad6-aa86-4c63-b81b-b89a1b342097/T6097-R1_mid.mp4\" expression=\"full\" duration=\"1578\" fileSize=\"114383098\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6097-R1.mp4\" expression=\"full\" duration=\"1578\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Simplygon: All 3D assets, any platform</title>\n    <description><![CDATA[Prettier, smoother applications on more devices, automatically. Building mixed reality experiences for Windows 10 usually requires 3D content. This session shows developers how to optimize their content for Microsoft HoloLens and other form factors. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:b52952bb1f1f4efe9224a768001c9cfd\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6096-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6096-R2</link>\n    <itunes:summary>Prettier, smoother applications on more devices, automatically. Building mixed reality experiences for Windows 10 usually requires 3D content. This session shows developers how to optimize their content for Microsoft HoloLens and other form factors.</itunes:summary>\n    <itunes:duration>824</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6096-R2</guid>\n    <dc:creator>Koshi Hamedi, Roger Kurtz, Sebastian Wiberg</dc:creator>\n    <category>graphics</category>\n    <category>media</category>\n    <category>mixed+reality</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/222c/f8a7908d-794e-4ab1-9b69-5f1e0be6222c/T6096-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/222c/f8a7908d-794e-4ab1-9b69-5f1e0be6222c/T6096-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/222c/f8a7908d-794e-4ab1-9b69-5f1e0be6222c/T6096-R2_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/222c/f8a7908d-794e-4ab1-9b69-5f1e0be6222c/T6096-R2.mp3\" expression=\"full\" duration=\"824\" fileSize=\"13187929\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/222c/f8a7908d-794e-4ab1-9b69-5f1e0be6222c/T6096-R2.mp4\" expression=\"full\" duration=\"824\" fileSize=\"16410196\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/222c/f8a7908d-794e-4ab1-9b69-5f1e0be6222c/T6096-R2_high.mp4\" expression=\"full\" duration=\"824\" fileSize=\"107445361\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/222c/f8a7908d-794e-4ab1-9b69-5f1e0be6222c/T6096-R2_mid.mp4\" expression=\"full\" duration=\"824\" fileSize=\"33306878\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6096-R2.mp4\" expression=\"full\" duration=\"824\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Simplygon: All 3D assets, any platform</title>\n    <description><![CDATA[Prettier, smoother applications on more devices, automatically. Building mixed reality experiences for Windows 10 usually requires 3D content. This session shows developers how to optimize their content for Microsoft HoloLens and other form factors. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:d1e1e369586346feb1dda768001c9b7e\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6096-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6096-R1</link>\n    <itunes:summary>Prettier, smoother applications on more devices, automatically. Building mixed reality experiences for Windows 10 usually requires 3D content. This session shows developers how to optimize their content for Microsoft HoloLens and other form factors.</itunes:summary>\n    <itunes:duration>1152</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6096-R1</guid>\n    <dc:creator>Koshi Hamedi, Roger Kurtz, Sebastian Wiberg</dc:creator>\n    <category>graphics</category>\n    <category>media</category>\n    <category>mixed+reality</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/33e8/02bb3fff-4f2a-4e9a-8c45-f72bb3ae33e8/T6096-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/33e8/02bb3fff-4f2a-4e9a-8c45-f72bb3ae33e8/T6096-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/33e8/02bb3fff-4f2a-4e9a-8c45-f72bb3ae33e8/T6096-R1_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/33e8/02bb3fff-4f2a-4e9a-8c45-f72bb3ae33e8/T6096-R1.mp3\" expression=\"full\" duration=\"1152\" fileSize=\"18445273\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/33e8/02bb3fff-4f2a-4e9a-8c45-f72bb3ae33e8/T6096-R1.mp4\" expression=\"full\" duration=\"1152\" fileSize=\"22663702\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/33e8/02bb3fff-4f2a-4e9a-8c45-f72bb3ae33e8/T6096-R1_high.mp4\" expression=\"full\" duration=\"1152\" fileSize=\"159574245\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/33e8/02bb3fff-4f2a-4e9a-8c45-f72bb3ae33e8/T6096-R1_mid.mp4\" expression=\"full\" duration=\"1152\" fileSize=\"47205154\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6096-R1.mp4\" expression=\"full\" duration=\"1152\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Sketchable and Surface Dial integration</title>\n    <description><![CDATA[Sketchable is a hybrid journal and canvas application that allows users to scribble a note, snap, and edit a picture, or paint a masterpiece using ink. During this session, Sketchable details their integration with the Surface Dial and showcases how they have been able to utilize the new APIs in Windows Creator’s update to provide a more customized user experience using both ink and Dial. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:acdf27ce4e934122ab38a768001c9a14\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6095-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6095-R2</link>\n    <itunes:summary>Sketchable is a hybrid journal and canvas application that allows users to scribble a note, snap, and edit a picture, or paint a masterpiece using ink. During this session, Sketchable details their integration with the Surface Dial and showcases how they have been able to utilize the new APIs in Windows Creator’s update to provide a more customized user experience using both ink and Dial.</itunes:summary>\n    <itunes:duration>952</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6095-R2</guid>\n    <dc:creator>Miles Harris, Ryan Harris</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>dial</category>\n    <category>ink</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/48e0/1e93f5b9-771c-4a6b-82fd-9133642948e0/T6095-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/48e0/1e93f5b9-771c-4a6b-82fd-9133642948e0/T6095-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/48e0/1e93f5b9-771c-4a6b-82fd-9133642948e0/T6095-R2_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/48e0/1e93f5b9-771c-4a6b-82fd-9133642948e0/T6095-R2.mp3\" expression=\"full\" duration=\"952\" fileSize=\"15246550\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/48e0/1e93f5b9-771c-4a6b-82fd-9133642948e0/T6095-R2.mp4\" expression=\"full\" duration=\"952\" fileSize=\"25424207\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/48e0/1e93f5b9-771c-4a6b-82fd-9133642948e0/T6095-R2_high.mp4\" expression=\"full\" duration=\"952\" fileSize=\"270774686\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/48e0/1e93f5b9-771c-4a6b-82fd-9133642948e0/T6095-R2_mid.mp4\" expression=\"full\" duration=\"952\" fileSize=\"77043969\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6095-R2.mp4\" expression=\"full\" duration=\"952\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Sketchable and Surface Dial integration</title>\n    <description><![CDATA[Sketchable is a hybrid journal and canvas application that allows users to scribble a note, snap, and edit a picture, or paint a masterpiece using ink. During this session, Sketchable details their integration with the Surface Dial and showcases how they have been able to utilize the new APIs in Windows Creator’s update to provide a more customized user experience using both ink and Dial. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:805a4a389e664deabc15a768001c993c\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6095-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6095-R1</link>\n    <itunes:summary>Sketchable is a hybrid journal and canvas application that allows users to scribble a note, snap, and edit a picture, or paint a masterpiece using ink. During this session, Sketchable details their integration with the Surface Dial and showcases how they have been able to utilize the new APIs in Windows Creator’s update to provide a more customized user experience using both ink and Dial.</itunes:summary>\n    <itunes:duration>930</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6095-R1</guid>\n    <dc:creator>Miles Harris, Ryan Harris</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>dial</category>\n    <category>ink</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/9eac/1e8441f9-0ab5-4c6a-b762-d1af908b9eac/T6095-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/9eac/1e8441f9-0ab5-4c6a-b762-d1af908b9eac/T6095-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/9eac/1e8441f9-0ab5-4c6a-b762-d1af908b9eac/T6095-R1_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9eac/1e8441f9-0ab5-4c6a-b762-d1af908b9eac/T6095-R1.mp3\" expression=\"full\" duration=\"930\" fileSize=\"14882902\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9eac/1e8441f9-0ab5-4c6a-b762-d1af908b9eac/T6095-R1.mp4\" expression=\"full\" duration=\"930\" fileSize=\"22763045\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9eac/1e8441f9-0ab5-4c6a-b762-d1af908b9eac/T6095-R1_high.mp4\" expression=\"full\" duration=\"930\" fileSize=\"257385646\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9eac/1e8441f9-0ab5-4c6a-b762-d1af908b9eac/T6095-R1_mid.mp4\" expression=\"full\" duration=\"930\" fileSize=\"68732814\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6095-R1.mp4\" expression=\"full\" duration=\"930\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>MusixMatch: Increase your reach with the Desktop Bridge: Bring an Electron app to the Windows Store</title>\n    <description><![CDATA[Musixmatch is a startup founded in Italy in 2010, which brought for the first time a very popular request from users in a legal way, thanks to a partnership with the major worldwide music labels: having the chance to easily find song’s lyrics. With an innovative application available for the most important platforms on the market, the service integrates with the most popular music services and players (like Spotify and iTunes) and display lyrics synced in real time, allowing you to turn any device into a Karaoke machine. The application is available also on Windows and Mac as a traditional desktop application, built with the popular web framework Electron. However, Musixmatch wanted to expand the reach of its app and make it easier for Windows users to find it: the Desktop Bridge helped to achieve this goal, allowing them to take the Electron app and turn it into a Store that is available on the Windows Store and that makes easier for them to integrate it with all the new Windows 10 features. In this session, learn more about this exciting app, the conversion process and how, thanks to the Desktop Bridge, the company has been able to quickly reach the Store and make it better thanks to the Universal Windows Platform. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:6c6b6cc9efb448878db1a768001c9877\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6094-R3</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6094-R3</link>\n    <itunes:summary>Musixmatch is a startup founded in Italy in 2010, which brought for the first time a very popular request from users in a legal way, thanks to a partnership with the major worldwide music labels: having the chance to easily find song’s lyrics. With an innovative application available for the most important platforms on the market, the service integrates with the most popular music services and players (like Spotify and iTunes) and display lyrics synced in real time, allowing you to turn any device into a Karaoke machine. The application is available also on Windows and Mac as a traditional desktop application, built with the popular web framework Electron. However, Musixmatch wanted to expand the reach of its app and make it easier for Windows users to find it: the Desktop Bridge helped to achieve this goal, allowing them to take the Electron app and turn it into a Store that is available on the Windows Store and that makes easier for them to integrate it with all the new Windows 10 features. In this session, learn more about this exciting app, the conversion process and how, thanks to the Desktop Bridge, the company has been able to quickly reach the Store and make it better thanks to the Universal Windows Platform.</itunes:summary>\n    <itunes:duration>1035</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6094-R3</guid>\n    <dc:creator>Francesco Delfino</dc:creator>\n    <category>windows+store</category>\n    <category>desktop+bridge</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/1e81/41cf1d28-51d0-467c-8287-96f00dd81e81/T6094-R3_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1e81/41cf1d28-51d0-467c-8287-96f00dd81e81/T6094-R3_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1e81/41cf1d28-51d0-467c-8287-96f00dd81e81/T6094-R3_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1e81/41cf1d28-51d0-467c-8287-96f00dd81e81/T6094-R3.mp3\" expression=\"full\" duration=\"1035\" fileSize=\"16568376\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1e81/41cf1d28-51d0-467c-8287-96f00dd81e81/T6094-R3.mp4\" expression=\"full\" duration=\"1035\" fileSize=\"20207923\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1e81/41cf1d28-51d0-467c-8287-96f00dd81e81/T6094-R3_high.mp4\" expression=\"full\" duration=\"1035\" fileSize=\"228496922\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1e81/41cf1d28-51d0-467c-8287-96f00dd81e81/T6094-R3_mid.mp4\" expression=\"full\" duration=\"1035\" fileSize=\"56185796\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6094-R3.mp4\" expression=\"full\" duration=\"1035\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>MusixMatch: Increase your reach with the Desktop Bridge: Bring an Electron app to the Windows Store</title>\n    <description><![CDATA[Musixmatch is a startup founded in Italy in 2010, which brought for the first time a very popular request from users in a legal way, thanks to a partnership with the major worldwide music labels: having the chance to easily find song’s lyrics. With an innovative application available for the most important platforms on the market, the service integrates with the most popular music services and players (like Spotify and iTunes) and display lyrics synced in real time, allowing you to turn any device into a Karaoke machine. The application is available also on Windows and Mac as a traditional desktop application, built with the popular web framework Electron. However, Musixmatch wanted to expand the reach of its app and make it easier for Windows users to find it: the Desktop Bridge helped to achieve this goal, allowing them to take the Electron app and turn it into a Store that is available on the Windows Store and that makes easier for them to integrate it with all the new Windows 10 features. In this session, learn more about this exciting app, the conversion process and how, thanks to the Desktop Bridge, the company has been able to quickly reach the Store and make it better thanks to the Universal Windows Platform. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:a3802e63ac7e400cacb8a768001c9827\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6094-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6094-R2</link>\n    <itunes:summary>Musixmatch is a startup founded in Italy in 2010, which brought for the first time a very popular request from users in a legal way, thanks to a partnership with the major worldwide music labels: having the chance to easily find song’s lyrics. With an innovative application available for the most important platforms on the market, the service integrates with the most popular music services and players (like Spotify and iTunes) and display lyrics synced in real time, allowing you to turn any device into a Karaoke machine. The application is available also on Windows and Mac as a traditional desktop application, built with the popular web framework Electron. However, Musixmatch wanted to expand the reach of its app and make it easier for Windows users to find it: the Desktop Bridge helped to achieve this goal, allowing them to take the Electron app and turn it into a Store that is available on the Windows Store and that makes easier for them to integrate it with all the new Windows 10 features. In this session, learn more about this exciting app, the conversion process and how, thanks to the Desktop Bridge, the company has been able to quickly reach the Store and make it better thanks to the Universal Windows Platform.</itunes:summary>\n    <itunes:duration>1120</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6094-R2</guid>\n    <dc:creator>Francesco Delfino</dc:creator>\n    <category>windows+store</category>\n    <category>desktop+bridge</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/71bb/144202b1-196a-4fe7-8539-e3fb7cf571bb/T6094-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/71bb/144202b1-196a-4fe7-8539-e3fb7cf571bb/T6094-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/71bb/144202b1-196a-4fe7-8539-e3fb7cf571bb/T6094-R2_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/71bb/144202b1-196a-4fe7-8539-e3fb7cf571bb/T6094-R2.mp3\" expression=\"full\" duration=\"1120\" fileSize=\"17926968\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/71bb/144202b1-196a-4fe7-8539-e3fb7cf571bb/T6094-R2.mp4\" expression=\"full\" duration=\"1120\" fileSize=\"21892179\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/71bb/144202b1-196a-4fe7-8539-e3fb7cf571bb/T6094-R2_high.mp4\" expression=\"full\" duration=\"1120\" fileSize=\"251601427\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/71bb/144202b1-196a-4fe7-8539-e3fb7cf571bb/T6094-R2_mid.mp4\" expression=\"full\" duration=\"1120\" fileSize=\"61905996\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6094-R2.mp4\" expression=\"full\" duration=\"1120\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>MusixMatch: Increase your reach with the Desktop Bridge: Bring an Electron app to the Windows Store</title>\n    <description><![CDATA[Musixmatch is a startup founded in Italy in 2010, which brought for the first time a very popular request from users in a legal way, thanks to a partnership with the major worldwide music labels: having the chance to easily find song’s lyrics. With an innovative application available for the most important platforms on the market, the service integrates with the most popular music services and players (like Spotify and iTunes) and display lyrics synced in real time, allowing you to turn any device into a Karaoke machine. The application is available also on Windows and Mac as a traditional desktop application, built with the popular web framework Electron. However, Musixmatch wanted to expand the reach of its app and make it easier for Windows users to find it: the Desktop Bridge helped to achieve this goal, allowing them to take the Electron app and turn it into a Store that is available on the Windows Store and that makes easier for them to integrate it with all the new Windows 10 features. In this session, learn more about this exciting app, the conversion process and how, thanks to the Desktop Bridge, the company has been able to quickly reach the Store and make it better thanks to the Universal Windows Platform. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:345e93d1ca29498ab031a768001c97ca\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6094-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6094-R1</link>\n    <itunes:summary>Musixmatch is a startup founded in Italy in 2010, which brought for the first time a very popular request from users in a legal way, thanks to a partnership with the major worldwide music labels: having the chance to easily find song’s lyrics. With an innovative application available for the most important platforms on the market, the service integrates with the most popular music services and players (like Spotify and iTunes) and display lyrics synced in real time, allowing you to turn any device into a Karaoke machine. The application is available also on Windows and Mac as a traditional desktop application, built with the popular web framework Electron. However, Musixmatch wanted to expand the reach of its app and make it easier for Windows users to find it: the Desktop Bridge helped to achieve this goal, allowing them to take the Electron app and turn it into a Store that is available on the Windows Store and that makes easier for them to integrate it with all the new Windows 10 features. In this session, learn more about this exciting app, the conversion process and how, thanks to the Desktop Bridge, the company has been able to quickly reach the Store and make it better thanks to the Universal Windows Platform.</itunes:summary>\n    <itunes:duration>1100</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6094-R1</guid>\n    <dc:creator>Francesco Delfino</dc:creator>\n    <category>windows+store</category>\n    <category>desktop+bridge</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/0860/a0d9e883-2632-47bd-a26b-f587359f0860/T6094-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0860/a0d9e883-2632-47bd-a26b-f587359f0860/T6094-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0860/a0d9e883-2632-47bd-a26b-f587359f0860/T6094-R1_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0860/a0d9e883-2632-47bd-a26b-f587359f0860/T6094-R1.mp3\" expression=\"full\" duration=\"1100\" fileSize=\"17612472\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0860/a0d9e883-2632-47bd-a26b-f587359f0860/T6094-R1.mp4\" expression=\"full\" duration=\"1100\" fileSize=\"21265774\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0860/a0d9e883-2632-47bd-a26b-f587359f0860/T6094-R1_high.mp4\" expression=\"full\" duration=\"1100\" fileSize=\"255900884\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0860/a0d9e883-2632-47bd-a26b-f587359f0860/T6094-R1_mid.mp4\" expression=\"full\" duration=\"1100\" fileSize=\"61381597\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6094-R1.mp4\" expression=\"full\" duration=\"1100\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Introduction to Microsoft AppSource: How to build and list your line-of-business SaaS app&#160;</title>\n    <description><![CDATA[Join us for this overview session on AppSource and learn how to build and list your line-of-business SaaS app. We provide you with an overview of&nbsp;AppSource&nbsp;and how to package and provision you app, and how to enable a customer-led trial experience for apps that are built on or work with Microsoft technologies, such as Azure, Cortana Intelligence, Dynamics 365, Office 365, and Power BI.&nbsp;&nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:486dd756581d4555a19fa768001c9775\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6093</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6093</link>\n    <itunes:summary>Join us for this overview session on AppSource and learn how to build and list your line-of-business SaaS app. We provide you with an overview of AppSource and how to package and provision you app, and how to enable a customer-led trial experience for apps that are built on or work with Microsoft technologies, such as Azure, Cortana Intelligence, Dynamics 365, Office 365, and Power BI.  </itunes:summary>\n    <itunes:duration>1273</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6093</guid>\n    <dc:creator>Satish Thomas</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/b82b/fa8a6049-1c06-42d2-a0e1-67425e78b82b/T6093_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/b82b/fa8a6049-1c06-42d2-a0e1-67425e78b82b/T6093_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/b82b/fa8a6049-1c06-42d2-a0e1-67425e78b82b/T6093_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b82b/fa8a6049-1c06-42d2-a0e1-67425e78b82b/T6093.mp3\" expression=\"full\" duration=\"1273\" fileSize=\"20371146\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b82b/fa8a6049-1c06-42d2-a0e1-67425e78b82b/T6093.mp4\" expression=\"full\" duration=\"1273\" fileSize=\"22799753\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b82b/fa8a6049-1c06-42d2-a0e1-67425e78b82b/T6093_high.mp4\" expression=\"full\" duration=\"1273\" fileSize=\"138299246\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b82b/fa8a6049-1c06-42d2-a0e1-67425e78b82b/T6093_mid.mp4\" expression=\"full\" duration=\"1273\" fileSize=\"45973521\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6093.mp4\" expression=\"full\" duration=\"1273\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Creating delightful app experiences using Windows design principles</title>\n    <description><![CDATA[Join Windows NEXT design director for an introduction of universal and Windows design principles and how they’re expressed in the latest versions of desktop apps that come with the Windows Creators Update. Learn how relatable Materials, Lighting, Motion, and Conscious User Interface elements can help you deliver your users not just a product, but an immersive and emotional experience. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:43c724dbbdc04d2888fba768001c971c\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6092-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6092-R2</link>\n    <itunes:summary>Join Windows NEXT design director for an introduction of universal and Windows design principles and how they’re expressed in the latest versions of desktop apps that come with the Windows Creators Update. Learn how relatable Materials, Lighting, Motion, and Conscious User Interface elements can help you deliver your users not just a product, but an immersive and emotional experience.</itunes:summary>\n    <itunes:duration>1378</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6092-R2</guid>\n    <dc:creator>Claudio Goralczuk, Dominic Hopton, Mike Harnisch</dc:creator>\n    <category>ux</category>\n    <category>universal+windows+platform+uwp</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/156d/868784c3-36ed-44c6-935f-396bf34e156d/T6092-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/156d/868784c3-36ed-44c6-935f-396bf34e156d/T6092-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/156d/868784c3-36ed-44c6-935f-396bf34e156d/T6092-R2_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/156d/868784c3-36ed-44c6-935f-396bf34e156d/T6092-R2.mp3\" expression=\"full\" duration=\"1378\" fileSize=\"22059166\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/156d/868784c3-36ed-44c6-935f-396bf34e156d/T6092-R2.mp4\" expression=\"full\" duration=\"1378\" fileSize=\"35676195\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/156d/868784c3-36ed-44c6-935f-396bf34e156d/T6092-R2_high.mp4\" expression=\"full\" duration=\"1378\" fileSize=\"381781853\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/156d/868784c3-36ed-44c6-935f-396bf34e156d/T6092-R2_mid.mp4\" expression=\"full\" duration=\"1378\" fileSize=\"95473450\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6092-R2.mp4\" expression=\"full\" duration=\"1378\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Creating delightful app experiences using Windows design principles</title>\n    <description><![CDATA[Join the Windows NEXT design director for an introduction of universal and Windows design principles and how they’re expressed in the latest versions of desktop apps that come with the Windows Creators Update. Learn how relatable Materials, Lighting, Motion, and Conscious User Interface elements can help you deliver your users not just a product, but an immersive and emotional experience. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:2bab2a3f30984c8e9e4da768001c9624\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6092-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6092-R1</link>\n    <itunes:summary>Join the Windows NEXT design director for an introduction of universal and Windows design principles and how they’re expressed in the latest versions of desktop apps that come with the Windows Creators Update. Learn how relatable Materials, Lighting, Motion, and Conscious User Interface elements can help you deliver your users not just a product, but an immersive and emotional experience.</itunes:summary>\n    <itunes:duration>1327</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6092-R1</guid>\n    <dc:creator>Claudio Goralczuk, Dominic Hopton, Mike Harnisch</dc:creator>\n    <category>ux</category>\n    <category>universal+windows+platform+uwp</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/0c9a/222ad8f2-04af-4203-a844-c1a007140c9a/T6092-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0c9a/222ad8f2-04af-4203-a844-c1a007140c9a/T6092-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0c9a/222ad8f2-04af-4203-a844-c1a007140c9a/T6092-R1_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0c9a/222ad8f2-04af-4203-a844-c1a007140c9a/T6092-R1.mp3\" expression=\"full\" duration=\"1327\" fileSize=\"21237022\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0c9a/222ad8f2-04af-4203-a844-c1a007140c9a/T6092-R1.mp4\" expression=\"full\" duration=\"1327\" fileSize=\"34180505\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0c9a/222ad8f2-04af-4203-a844-c1a007140c9a/T6092-R1_high.mp4\" expression=\"full\" duration=\"1327\" fileSize=\"356059260\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0c9a/222ad8f2-04af-4203-a844-c1a007140c9a/T6092-R1_mid.mp4\" expression=\"full\" duration=\"1327\" fileSize=\"89953206\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6092-R1.mp4\" expression=\"full\" duration=\"1327\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How Wolters Kluwer created an isolated job system and containerization strategy on Azure Service Fabric</title>\n    <description><![CDATA[How Wolters Kluwer built their massive scale, compute, data, and tenant isolated job system and mapped their containerization strategy to Azure Service Fabric. Wolters Kluwer moved from a monolith existing design to a microservices design, leveraging multiple Azure platforms including Service Fabric for building mission-critical applications. Hear about lessons learned and best practices including monitoring, isolation, and containerization, in transforming to a microservice architecture. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:72163f1d0f43429db235a768001c9547\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6089</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6089</link>\n    <itunes:summary>How Wolters Kluwer built their massive scale, compute, data, and tenant isolated job system and mapped their containerization strategy to Azure Service Fabric. Wolters Kluwer moved from a monolith existing design to a microservices design, leveraging multiple Azure platforms including Service Fabric for building mission-critical applications. Hear about lessons learned and best practices including monitoring, isolation, and containerization, in transforming to a microservice architecture.</itunes:summary>\n    <itunes:duration>1105</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6089</guid>\n    <dc:creator>Jason Hamilton</dc:creator>\n    <category>service+fabric</category>\n    <category>microservices</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/b03b/29844581-1895-4b12-a14e-ee6d3ac6b03b/T6089_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b03b/29844581-1895-4b12-a14e-ee6d3ac6b03b/T6089.mp3\" expression=\"full\" duration=\"1105\" fileSize=\"17688522\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b03b/29844581-1895-4b12-a14e-ee6d3ac6b03b/T6089.mp4\" expression=\"full\" duration=\"1105\" fileSize=\"21142261\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b03b/29844581-1895-4b12-a14e-ee6d3ac6b03b/T6089_high.mp4\" expression=\"full\" duration=\"1105\" fileSize=\"158541200\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b03b/29844581-1895-4b12-a14e-ee6d3ac6b03b/T6089_mid.mp4\" expression=\"full\" duration=\"1105\" fileSize=\"45100332\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6089.mp4\" expression=\"full\" duration=\"1105\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Managing secure, scalable Azure Service Fabric clusters and applications</title>\n    <description><![CDATA[Learn about the lifecycle management capabilities of Service Fabric for managing microservices at scale. Use Azure PS or CLI to create and manage secure Service Fabric clusters. Monitor, troubleshoot, and upgrade microservices on Service Fabric clusters with no downtime. Come and see this live in action! <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:3eabf26c13304bdea35aa768001c94ce\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6084</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6084</link>\n    <itunes:summary>Learn about the lifecycle management capabilities of Service Fabric for managing microservices at scale. Use Azure PS or CLI to create and manage secure Service Fabric clusters. Monitor, troubleshoot, and upgrade microservices on Service Fabric clusters with no downtime. Come and see this live in action!</itunes:summary>\n    <itunes:duration>1309</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6084</guid>\n    <dc:creator>Chacko Daniel</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/d078/f338d1ff-2f41-49ed-881f-bbea2fccd078/T6084_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/d078/f338d1ff-2f41-49ed-881f-bbea2fccd078/T6084_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/d078/f338d1ff-2f41-49ed-881f-bbea2fccd078/T6084_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d078/f338d1ff-2f41-49ed-881f-bbea2fccd078/T6084.mp3\" expression=\"full\" duration=\"1309\" fileSize=\"20947146\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d078/f338d1ff-2f41-49ed-881f-bbea2fccd078/T6084.mp4\" expression=\"full\" duration=\"1309\" fileSize=\"26238447\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d078/f338d1ff-2f41-49ed-881f-bbea2fccd078/T6084_high.mp4\" expression=\"full\" duration=\"1309\" fileSize=\"131969982\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d078/f338d1ff-2f41-49ed-881f-bbea2fccd078/T6084_mid.mp4\" expression=\"full\" duration=\"1309\" fileSize=\"53610696\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6084.mp4\" expression=\"full\" duration=\"1309\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Unity game development with Visual Studio</title>\n    <description><![CDATA[Unity is a game creation environment you can use to create high quality cross-platform games for all the major platforms: mobiles, desktops, consoles, AR and VR devices and even the web! Better yet, you get to use C# and .NET to script your games! This session is our opportunity to show what’s new for Unity developers with Visual Studio, C#, and .NET. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1268bad17c91480bb615a768001c9491\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6083</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6083</link>\n    <itunes:summary>Unity is a game creation environment you can use to create high quality cross-platform games for all the major platforms: mobiles, desktops, consoles, AR and VR devices and even the web! Better yet, you get to use C# and .NET to script your games! This session is our opportunity to show what’s new for Unity developers with Visual Studio, C#, and .NET.</itunes:summary>\n    <itunes:duration>854</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6083</guid>\n    <dc:creator>Jb Evain</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/bf5c/6138b641-4d5d-44c7-aeae-ae476c64bf5c/T6083_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/bf5c/6138b641-4d5d-44c7-aeae-ae476c64bf5c/T6083_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/bf5c/6138b641-4d5d-44c7-aeae-ae476c64bf5c/T6083_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bf5c/6138b641-4d5d-44c7-aeae-ae476c64bf5c/T6083.mp3\" expression=\"full\" duration=\"854\" fileSize=\"13679946\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bf5c/6138b641-4d5d-44c7-aeae-ae476c64bf5c/T6083.mp4\" expression=\"full\" duration=\"854\" fileSize=\"15462033\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bf5c/6138b641-4d5d-44c7-aeae-ae476c64bf5c/T6083_high.mp4\" expression=\"full\" duration=\"854\" fileSize=\"79558110\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bf5c/6138b641-4d5d-44c7-aeae-ae476c64bf5c/T6083_mid.mp4\" expression=\"full\" duration=\"854\" fileSize=\"30118879\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6083.mp4\" expression=\"full\" duration=\"854\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>When bad things happen to good apps: Azure App Service Support Center</title>\n    <description><![CDATA[This is a sequel to the Build 2015 session “When Bad Things Happen to Good Apps.&quot; Every app will sometimes fail. When your app has performance or availability issues, you need to become aware of the issue and then resolve it quickly. Even though Azure App Service is &quot;platform as a service&quot; and we want a layer of abstraction, at no point are things HIDDEN from us. If you want to see the hardware, you can. If you want to see the process tree, you can. Join us as we dive deep into Azure App Service Support Center, an evolution of tooling and diagnostics into self-serve troubleshooting exercise. The team also displays the available tools, best practices, and guidance for troubleshooting Azure websites, highlighting examples from real customers and incidents. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:e3c6babe1fe1409f849aa768001c945d\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6082</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6082</link>\n    <itunes:summary>This is a sequel to the Build 2015 session “When Bad Things Happen to Good Apps.&amp;quot; Every app will sometimes fail. When your app has performance or availability issues, you need to become aware of the issue and then resolve it quickly. Even though Azure App Service is &amp;quot;platform as a service&amp;quot; and we want a layer of abstraction, at no point are things HIDDEN from us. If you want to see the hardware, you can. If you want to see the process tree, you can. Join us as we dive deep into Azure App Service Support Center, an evolution of tooling and diagnostics into self-serve troubleshooting exercise. The team also displays the available tools, best practices, and guidance for troubleshooting Azure websites, highlighting examples from real customers and incidents.</itunes:summary>\n    <itunes:duration>1260</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6082</guid>\n    <dc:creator>Apurva Joshi</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/25f6/e90287f9-1364-4a17-afa0-3a307c6c25f6/T6082_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/25f6/e90287f9-1364-4a17-afa0-3a307c6c25f6/T6082_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/25f6/e90287f9-1364-4a17-afa0-3a307c6c25f6/T6082_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/25f6/e90287f9-1364-4a17-afa0-3a307c6c25f6/T6082.mp3\" expression=\"full\" duration=\"1260\" fileSize=\"20173770\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/25f6/e90287f9-1364-4a17-afa0-3a307c6c25f6/T6082.mp4\" expression=\"full\" duration=\"1260\" fileSize=\"23920203\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/25f6/e90287f9-1364-4a17-afa0-3a307c6c25f6/T6082_high.mp4\" expression=\"full\" duration=\"1260\" fileSize=\"130467731\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/25f6/e90287f9-1364-4a17-afa0-3a307c6c25f6/T6082_mid.mp4\" expression=\"full\" duration=\"1260\" fileSize=\"49674113\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6082.mp4\" expression=\"full\" duration=\"1260\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>What’s Nu in NuGet?</title>\n    <description><![CDATA[Come learn what's &quot;Nu&quot; with NuGet and Visual Studio 2017. With PackageReference, and pack and restore as MSBuild targets. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:f9d78c564d024b74bf75a768001c942a\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6081</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6081</link>\n    <itunes:summary>Come learn what&#39;s &amp;quot;Nu&amp;quot; with NuGet and Visual Studio 2017. With PackageReference, and pack and restore as MSBuild targets.</itunes:summary>\n    <itunes:duration>1411</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6081</guid>\n    <dc:creator>Anand Gaurav</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/2495/f9fcdbb8-eaa4-4ebc-b17d-5ddf438a2495/T6081_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2495/f9fcdbb8-eaa4-4ebc-b17d-5ddf438a2495/T6081_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2495/f9fcdbb8-eaa4-4ebc-b17d-5ddf438a2495/T6081_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2495/f9fcdbb8-eaa4-4ebc-b17d-5ddf438a2495/T6081.mp3\" expression=\"full\" duration=\"1411\" fileSize=\"22578378\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2495/f9fcdbb8-eaa4-4ebc-b17d-5ddf438a2495/T6081.mp4\" expression=\"full\" duration=\"1411\" fileSize=\"26407445\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2495/f9fcdbb8-eaa4-4ebc-b17d-5ddf438a2495/T6081_high.mp4\" expression=\"full\" duration=\"1411\" fileSize=\"259782573\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2495/f9fcdbb8-eaa4-4ebc-b17d-5ddf438a2495/T6081_mid.mp4\" expression=\"full\" duration=\"1411\" fileSize=\"66528409\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6081.mp4\" expression=\"full\" duration=\"1411\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>WCF microservices in containers</title>\n    <description><![CDATA[Windows Communication Foundation (WCF) services are easily deployed to Windows VMs, but they’re even easier to use in Windows containers. In this session, we look at how to lift and shift your existing service architecture with WCF in containers and then we see how easy it is to deploy them for use on Azure. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:6447fe71851f4e9fb2a1a768001c93d0\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6080</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6080</link>\n    <itunes:summary>Windows Communication Foundation (WCF) services are easily deployed to Windows VMs, but they’re even easier to use in Windows containers. In this session, we look at how to lift and shift your existing service architecture with WCF in containers and then we see how easy it is to deploy them for use on Azure.</itunes:summary>\n    <itunes:duration>1271</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6080</guid>\n    <dc:creator>Jeff Fritz</dc:creator>\n    <category>containers</category>\n    <category>wcf</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/c81c/f3f76ae7-abb2-4b17-93b7-10b372aec81c/T6080_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c81c/f3f76ae7-abb2-4b17-93b7-10b372aec81c/T6080_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c81c/f3f76ae7-abb2-4b17-93b7-10b372aec81c/T6080_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c81c/f3f76ae7-abb2-4b17-93b7-10b372aec81c/T6080.mp3\" expression=\"full\" duration=\"1271\" fileSize=\"20343707\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c81c/f3f76ae7-abb2-4b17-93b7-10b372aec81c/T6080.mp4\" expression=\"full\" duration=\"1271\" fileSize=\"25442881\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c81c/f3f76ae7-abb2-4b17-93b7-10b372aec81c/T6080_high.mp4\" expression=\"full\" duration=\"1271\" fileSize=\"186363547\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c81c/f3f76ae7-abb2-4b17-93b7-10b372aec81c/T6080_mid.mp4\" expression=\"full\" duration=\"1271\" fileSize=\"58530400\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6080.mp4\" expression=\"full\" duration=\"1271\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Visual Studio Mobile Center and Visual Studio Team Services: Better together for your Mobile DevOps</title>\n    <description><![CDATA[If you are a mobile developer Visual Studio Team Services, you are in for a treat! Learn how to use Visual Studio Team Services and Visual Studio Mobile Center to iterate fast on your mobile apps, learn from your users and keep them happy. If your app's source code is already in VSTS, or if you are already using VSTS for continuous integration, you can take advantage of Mobile Center to make your Mobile DevOps flow easier then ever. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:81aa76df7fb24a028b45a768001c937c\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6079</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6079</link>\n    <itunes:summary>If you are a mobile developer Visual Studio Team Services, you are in for a treat! Learn how to use Visual Studio Team Services and Visual Studio Mobile Center to iterate fast on your mobile apps, learn from your users and keep them happy. If your app&#39;s source code is already in VSTS, or if you are already using VSTS for continuous integration, you can take advantage of Mobile Center to make your Mobile DevOps flow easier then ever.</itunes:summary>\n    <itunes:duration>1208</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6079</guid>\n    <dc:creator>Simina Pasat</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/dfce/bfef1970-c57e-4d5e-b363-319a36e1dfce/T6079_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/dfce/bfef1970-c57e-4d5e-b363-319a36e1dfce/T6079_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/dfce/bfef1970-c57e-4d5e-b363-319a36e1dfce/T6079_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/dfce/bfef1970-c57e-4d5e-b363-319a36e1dfce/T6079.mp3\" expression=\"full\" duration=\"1208\" fileSize=\"19330890\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/dfce/bfef1970-c57e-4d5e-b363-319a36e1dfce/T6079.mp4\" expression=\"full\" duration=\"1208\" fileSize=\"22640610\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/dfce/bfef1970-c57e-4d5e-b363-319a36e1dfce/T6079_high.mp4\" expression=\"full\" duration=\"1208\" fileSize=\"107613310\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/dfce/bfef1970-c57e-4d5e-b363-319a36e1dfce/T6079_mid.mp4\" expression=\"full\" duration=\"1208\" fileSize=\"43089857\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6079.mp4\" expression=\"full\" duration=\"1208\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Visual Studio Code: The most useful (and underused) tips and tricks</title>\n    <description><![CDATA[Want to wow all your friends? In this talk we show you the most useful, and often underused, tips and tricks in Visual Studio Code. Learn to be an elite power user, including learning keybindings, using font ligatures, and becoming a zen mode master. Come learn in a few short minutes how to shave hours off your day-to-day coding tasks. #HappyCoding <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:e35f8ef0f73a426d82c1a768001c934d\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6078</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6078</link>\n    <itunes:summary>Want to wow all your friends? In this talk we show you the most useful, and often underused, tips and tricks in Visual Studio Code. Learn to be an elite power user, including learning keybindings, using font ligatures, and becoming a zen mode master. Come learn in a few short minutes how to shave hours off your day-to-day coding tasks. #HappyCoding</itunes:summary>\n    <itunes:duration>1194</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6078</guid>\n    <dc:creator>Wade Anderson</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/3acc/170fca61-ab0c-4ff9-9cd4-7fc4b55f3acc/T6078_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3acc/170fca61-ab0c-4ff9-9cd4-7fc4b55f3acc/T6078_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3acc/170fca61-ab0c-4ff9-9cd4-7fc4b55f3acc/T6078_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3acc/170fca61-ab0c-4ff9-9cd4-7fc4b55f3acc/T6078.mp3\" expression=\"full\" duration=\"1194\" fileSize=\"19105866\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3acc/170fca61-ab0c-4ff9-9cd4-7fc4b55f3acc/T6078.mp4\" expression=\"full\" duration=\"1194\" fileSize=\"24783450\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3acc/170fca61-ab0c-4ff9-9cd4-7fc4b55f3acc/T6078_high.mp4\" expression=\"full\" duration=\"1194\" fileSize=\"338395796\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3acc/170fca61-ab0c-4ff9-9cd4-7fc4b55f3acc/T6078_mid.mp4\" expression=\"full\" duration=\"1194\" fileSize=\"82447320\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6078.mp4\" expression=\"full\" duration=\"1194\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Using Visual Studio for Machine Learning</title>\n    <description><![CDATA[Whether it is building a model for online product recommendation, or developing a project using Microsoft SQL Server 2016 with R, where you need to develop both the models, and the stored procedure, Visual Studio enables both developers and data scientists to work together to build your next generation intelligent apps and services. All the tooling you need to analyze, build models, and create smart apps, including: Python Tools for Visual Studio and R Tools for Visual Studio. Join us in this this session, as we show you how Visual Studio can be used to do data science, and help you create the next intelligent application! <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:6708efc71ea844b4a1d8a768001c931a\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6077</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6077</link>\n    <itunes:summary>Whether it is building a model for online product recommendation, or developing a project using Microsoft SQL Server 2016 with R, where you need to develop both the models, and the stored procedure, Visual Studio enables both developers and data scientists to work together to build your next generation intelligent apps and services. All the tooling you need to analyze, build models, and create smart apps, including: Python Tools for Visual Studio and R Tools for Visual Studio. Join us in this this session, as we show you how Visual Studio can be used to do data science, and help you create the next intelligent application!</itunes:summary>\n    <itunes:duration>1257</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6077</guid>\n    <dc:creator>Joanna Podgoetsky, Julie Koesmarno</dc:creator>\n    <category>visual+studio</category>\n    <category>machine+learning</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/94be/3209bb05-3486-4052-bafc-04aaa63894be/T6077_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/94be/3209bb05-3486-4052-bafc-04aaa63894be/T6077_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/94be/3209bb05-3486-4052-bafc-04aaa63894be/T6077_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/94be/3209bb05-3486-4052-bafc-04aaa63894be/T6077.mp3\" expression=\"full\" duration=\"1257\" fileSize=\"20121813\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/94be/3209bb05-3486-4052-bafc-04aaa63894be/T6077.mp4\" expression=\"full\" duration=\"1257\" fileSize=\"22545805\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/94be/3209bb05-3486-4052-bafc-04aaa63894be/T6077_high.mp4\" expression=\"full\" duration=\"1257\" fileSize=\"131544390\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/94be/3209bb05-3486-4052-bafc-04aaa63894be/T6077_mid.mp4\" expression=\"full\" duration=\"1257\" fileSize=\"44425027\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6077.mp4\" expression=\"full\" duration=\"1257\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Linux C++ development with Visual Studio 2017</title>\n    <description><![CDATA[Learn about the new Linux development with C&#43;&#43; workload in Visual Studio 2017. This talk shows what you can do from the basic hello world, calling a Linux C&#43;&#43; service from ASP.NET Core and building a cross platform OpenGL desktop application targeting Windows and Linux. All using Visual Studio 2017 and the Windows Subsystem for Linux in Windows 10. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:7b1ac2cb59674a51aa84a768001c9263\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6075</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6075</link>\n    <itunes:summary>Learn about the new Linux development with C&amp;#43;&amp;#43; workload in Visual Studio 2017. This talk shows what you can do from the basic hello world, calling a Linux C&amp;#43;&amp;#43; service from ASP.NET Core and building a cross platform OpenGL desktop application targeting Windows and Linux. All using Visual Studio 2017 and the Windows Subsystem for Linux in Windows 10.</itunes:summary>\n    <itunes:duration>1142</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6075</guid>\n    <dc:creator>Marc Goodner</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/e727/1af8384a-170f-4890-bf2a-88eed362e727/T6075_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e727/1af8384a-170f-4890-bf2a-88eed362e727/T6075.mp3\" expression=\"full\" duration=\"1142\" fileSize=\"18286410\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e727/1af8384a-170f-4890-bf2a-88eed362e727/T6075.mp4\" expression=\"full\" duration=\"1142\" fileSize=\"20981675\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e727/1af8384a-170f-4890-bf2a-88eed362e727/T6075_high.mp4\" expression=\"full\" duration=\"1142\" fileSize=\"245296342\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e727/1af8384a-170f-4890-bf2a-88eed362e727/T6075_mid.mp4\" expression=\"full\" duration=\"1142\" fileSize=\"58872821\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6075.mp4\" expression=\"full\" duration=\"1142\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Distill information into conversational, easy to navigate answers with Microsoft Cognitive Services QnA Maker</title>\n    <description><![CDATA[Microsoft Cognitive Services QnA Maker is an easy-to-use API that trains AI to respond to users’ questions in a more natural, conversational way. QnA Maker is a question and answer service with a graphical user interface—meaning you don’t need to be a developer to train, manage, and use it for a wide range of solutions.&nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:e7e840c8555b4ff69698a768001c9234\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6074</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6074</link>\n    <itunes:summary>Microsoft Cognitive Services QnA Maker is an easy-to-use API that trains AI to respond to users’ questions in a more natural, conversational way. QnA Maker is a question and answer service with a graphical user interface—meaning you don’t need to be a developer to train, manage, and use it for a wide range of solutions. </itunes:summary>\n    <itunes:duration>933</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6074</guid>\n    <dc:creator>Prashant Choudhari</dc:creator>\n    <category>bots</category>\n    <category>artificial+intelligence</category>\n    <category>cognitive+services</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/c949/76f28ab4-9b76-4462-ab1b-a98c7403c949/T6074_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c949/76f28ab4-9b76-4462-ab1b-a98c7403c949/T6074_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c949/76f28ab4-9b76-4462-ab1b-a98c7403c949/T6074_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c949/76f28ab4-9b76-4462-ab1b-a98c7403c949/T6074.mp3\" expression=\"full\" duration=\"933\" fileSize=\"14937185\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c949/76f28ab4-9b76-4462-ab1b-a98c7403c949/T6074.mp4\" expression=\"full\" duration=\"933\" fileSize=\"16763098\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c949/76f28ab4-9b76-4462-ab1b-a98c7403c949/T6074_high.mp4\" expression=\"full\" duration=\"933\" fileSize=\"112789839\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c949/76f28ab4-9b76-4462-ab1b-a98c7403c949/T6074_mid.mp4\" expression=\"full\" duration=\"933\" fileSize=\"33457824\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6074.mp4\" expression=\"full\" duration=\"933\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Contextual decisions for you</title>\n    <description><![CDATA[Do you want to recommend a news story? Have your interface optimize for its user? Maybe you just wish that when you used machine learning it actually worked in deployment? In all of these cases, you want to make decisions amongst a set of actions based on a context to optimize an outcome. Doing this consistently and effectively requires a system that combines exploration and learning together to adaptively discover performant policies. We have created that system and deployed it several ways with great results. That system can now be used by you, most easily for simple content personalization, but more generally in any system where you have many repeated events where context matters in making a decision and the quality of that decision can be evaluated. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:aaf4110c4bac42bc8896a768001c915c\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6073</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6073</link>\n    <itunes:summary>Do you want to recommend a news story? Have your interface optimize for its user? Maybe you just wish that when you used machine learning it actually worked in deployment? In all of these cases, you want to make decisions amongst a set of actions based on a context to optimize an outcome. Doing this consistently and effectively requires a system that combines exploration and learning together to adaptively discover performant policies. We have created that system and deployed it several ways with great results. That system can now be used by you, most easily for simple content personalization, but more generally in any system where you have many repeated events where context matters in making a decision and the quality of that decision can be evaluated.</itunes:summary>\n    <itunes:duration>1399</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6073</guid>\n    <dc:creator>John Langford</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>cognitive+services</category>\n    <category>machine+learning</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/db5c/fab59cbf-5b6e-41e4-96c1-2995bff6db5c/T6073_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/db5c/fab59cbf-5b6e-41e4-96c1-2995bff6db5c/T6073_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/db5c/fab59cbf-5b6e-41e4-96c1-2995bff6db5c/T6073_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/db5c/fab59cbf-5b6e-41e4-96c1-2995bff6db5c/T6073.mp3\" expression=\"full\" duration=\"1399\" fileSize=\"22400838\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/db5c/fab59cbf-5b6e-41e4-96c1-2995bff6db5c/T6073.mp4\" expression=\"full\" duration=\"1399\" fileSize=\"27561254\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/db5c/fab59cbf-5b6e-41e4-96c1-2995bff6db5c/T6073_high.mp4\" expression=\"full\" duration=\"1399\" fileSize=\"155494860\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/db5c/fab59cbf-5b6e-41e4-96c1-2995bff6db5c/T6073_mid.mp4\" expression=\"full\" duration=\"1399\" fileSize=\"56208346\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6073.mp4\" expression=\"full\" duration=\"1399\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Support for ASP.NET Core: What is an LTS?</title>\n    <description><![CDATA[.NET Core is new and open source, but it can be confusing how one gets support? We explain the Current branch vs. the LTS (Long Term Support) branch. What version of .NET Core will set you up for success? How do you balance stable enterprise software and daily builds of Open Source? <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:e72d8ad17f654e2fba8aa768001c90cb\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6072</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6072</link>\n    <itunes:summary>.NET Core is new and open source, but it can be confusing how one gets support? We explain the Current branch vs. the LTS (Long Term Support) branch. What version of .NET Core will set you up for success? How do you balance stable enterprise software and daily builds of Open Source?</itunes:summary>\n    <itunes:duration>798</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6072</guid>\n    <dc:creator>Maria Naggaga Nakanwagi</dc:creator>\n    <category>.net</category>\n    <category>open+source</category>\n    <category>asp.net</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/4ef3/34919b38-8e16-4867-a0e5-eac4b0124ef3/T6072_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4ef3/34919b38-8e16-4867-a0e5-eac4b0124ef3/T6072_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4ef3/34919b38-8e16-4867-a0e5-eac4b0124ef3/T6072_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4ef3/34919b38-8e16-4867-a0e5-eac4b0124ef3/T6072.mp3\" expression=\"full\" duration=\"798\" fileSize=\"12773575\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4ef3/34919b38-8e16-4867-a0e5-eac4b0124ef3/T6072.mp4\" expression=\"full\" duration=\"798\" fileSize=\"14527084\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4ef3/34919b38-8e16-4867-a0e5-eac4b0124ef3/T6072_high.mp4\" expression=\"full\" duration=\"798\" fileSize=\"88966454\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4ef3/34919b38-8e16-4867-a0e5-eac4b0124ef3/T6072_mid.mp4\" expression=\"full\" duration=\"798\" fileSize=\"30785033\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6072.mp4\" expression=\"full\" duration=\"798\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Supercharge your JavaScript debugging workflow with Visual Studio Code</title>\n    <description><![CDATA[This session shows how to supercharge your JavaScript debugging workflow when working with React, AngularJS, and Node in Visual Studio Code. We talk about debugging principles, workflows, and how to be more productive by staying inside your editor. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:94aeef838cbb4e3bbc7aa768001c9064\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6071</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6071</link>\n    <itunes:summary>This session shows how to supercharge your JavaScript debugging workflow when working with React, AngularJS, and Node in Visual Studio Code. We talk about debugging principles, workflows, and how to be more productive by staying inside your editor.</itunes:summary>\n    <itunes:duration>1215</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6071</guid>\n    <dc:creator>Kenneth Auchenberg</dc:creator>\n    <category>visual+studio</category>\n    <category>node.js</category>\n    <category>react+native</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/7e47/391d66d9-04f6-4cb1-a32e-293f93a97e47/T6071_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/7e47/391d66d9-04f6-4cb1-a32e-293f93a97e47/T6071_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/7e47/391d66d9-04f6-4cb1-a32e-293f93a97e47/T6071_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7e47/391d66d9-04f6-4cb1-a32e-293f93a97e47/T6071.mp3\" expression=\"full\" duration=\"1215\" fileSize=\"19445638\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7e47/391d66d9-04f6-4cb1-a32e-293f93a97e47/T6071.mp4\" expression=\"full\" duration=\"1215\" fileSize=\"23119753\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7e47/391d66d9-04f6-4cb1-a32e-293f93a97e47/T6071_high.mp4\" expression=\"full\" duration=\"1215\" fileSize=\"119527251\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7e47/391d66d9-04f6-4cb1-a32e-293f93a97e47/T6071_mid.mp4\" expression=\"full\" duration=\"1215\" fileSize=\"45292969\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6071.mp4\" expression=\"full\" duration=\"1215\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How to do predictive modeling using R and SQL Server Machine Learning Services</title>\n    <description><![CDATA[Learn how to use R scripts from T-SQL to perform training and scoring and leverage parallelism and streaming capabilities to get better performance. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:6cf07756a9f84c22bf31a768001c8ff8\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6070</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6070</link>\n    <itunes:summary>Learn how to use R scripts from T-SQL to perform training and scoring and leverage parallelism and streaming capabilities to get better performance.</itunes:summary>\n    <itunes:duration>1323</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6070</guid>\n    <dc:creator>Umachandar Jayachandran, Nellie Gustafsson</dc:creator>\n    <category>machine+learning</category>\n    <category>sql+server</category>\n    <category>r</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/f22f/b54f1d0c-20f2-49df-8167-b1697076f22f/T6070_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f22f/b54f1d0c-20f2-49df-8167-b1697076f22f/T6070.mp3\" expression=\"full\" duration=\"1323\" fileSize=\"21171727\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f22f/b54f1d0c-20f2-49df-8167-b1697076f22f/T6070.mp4\" expression=\"full\" duration=\"1323\" fileSize=\"24716628\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f22f/b54f1d0c-20f2-49df-8167-b1697076f22f/T6070_high.mp4\" expression=\"full\" duration=\"1323\" fileSize=\"150580356\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f22f/b54f1d0c-20f2-49df-8167-b1697076f22f/T6070_mid.mp4\" expression=\"full\" duration=\"1323\" fileSize=\"51153044\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6070.mp4\" expression=\"full\" duration=\"1323\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Simplified app development with plug-ins for Xamarin and Windows</title>\n    <description><![CDATA[Plug-ins for Xamarin are libraries that expose a single set of APIs for accessing common mobile device functionality across iOS, Android, and Windows. This increases the amount of code developers can share across mobile platforms, making mobile app development easier and faster. Come see how plug-ins for Xamarin abstract several APIs across iOS, Android, and Windows platforms including camera, geo-location, settings, permissions, connectivity, file system, notifications, and a lot more. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:90a5902b43a6463192eca768001c8f75\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6069</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6069</link>\n    <itunes:summary>Plug-ins for Xamarin are libraries that expose a single set of APIs for accessing common mobile device functionality across iOS, Android, and Windows. This increases the amount of code developers can share across mobile platforms, making mobile app development easier and faster. Come see how plug-ins for Xamarin abstract several APIs across iOS, Android, and Windows platforms including camera, geo-location, settings, permissions, connectivity, file system, notifications, and a lot more.</itunes:summary>\n    <itunes:duration>1211</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6069</guid>\n    <dc:creator>James Montemagno</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/92e4/52052d87-80f8-41d6-bf63-2763d7db92e4/T6069_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/92e4/52052d87-80f8-41d6-bf63-2763d7db92e4/T6069_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/92e4/52052d87-80f8-41d6-bf63-2763d7db92e4/T6069_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/92e4/52052d87-80f8-41d6-bf63-2763d7db92e4/T6069.mp3\" expression=\"full\" duration=\"1211\" fileSize=\"19391562\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/92e4/52052d87-80f8-41d6-bf63-2763d7db92e4/T6069.mp4\" expression=\"full\" duration=\"1211\" fileSize=\"24369456\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/92e4/52052d87-80f8-41d6-bf63-2763d7db92e4/T6069_high.mp4\" expression=\"full\" duration=\"1211\" fileSize=\"269872445\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/92e4/52052d87-80f8-41d6-bf63-2763d7db92e4/T6069_mid.mp4\" expression=\"full\" duration=\"1211\" fileSize=\"64989964\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6069.mp4\" expression=\"full\" duration=\"1211\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Securely sign-in your customers with Azure Active Directory B2C</title>\n    <description><![CDATA[Getting your customers to seamlessly sign-up or sign-in to an application is paramount to its success. Achieving this at scale while following constantly evolving security practices is hard. Fortunately, developers can leverage Azure AD B2C. Come and learn about this enterprise-grade consumer identity and access management service and how it allows you to easily secure your consumer-facing web and mobile applications. No matter where your users live, reach them with customizable user experiences that allow your users to sign-up/sign-in with social accounts such as Facebook or Google) or new accounts in the application. With Azure AD B2C you can take care of the identity functions for your app in minutes. With an ever-growing list of supported identity providers, Azure AD B2C helps you to reach your customers regardless of their provider of choice. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:a9b5ac581c2c40959579a768001c8f46\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6068</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6068</link>\n    <itunes:summary>Getting your customers to seamlessly sign-up or sign-in to an application is paramount to its success. Achieving this at scale while following constantly evolving security practices is hard. Fortunately, developers can leverage Azure AD B2C. Come and learn about this enterprise-grade consumer identity and access management service and how it allows you to easily secure your consumer-facing web and mobile applications. No matter where your users live, reach them with customizable user experiences that allow your users to sign-up/sign-in with social accounts such as Facebook or Google) or new accounts in the application. With Azure AD B2C you can take care of the identity functions for your app in minutes. With an ever-growing list of supported identity providers, Azure AD B2C helps you to reach your customers regardless of their provider of choice.</itunes:summary>\n    <itunes:duration>1116</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6068</guid>\n    <dc:creator>Gerardo Saca</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/7554/6bb1740d-9645-4d20-8ff2-fe43a8f67554/T6068_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/7554/6bb1740d-9645-4d20-8ff2-fe43a8f67554/T6068_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/7554/6bb1740d-9645-4d20-8ff2-fe43a8f67554/T6068_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7554/6bb1740d-9645-4d20-8ff2-fe43a8f67554/T6068.mp3\" expression=\"full\" duration=\"1116\" fileSize=\"17859402\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7554/6bb1740d-9645-4d20-8ff2-fe43a8f67554/T6068.mp4\" expression=\"full\" duration=\"1116\" fileSize=\"21251157\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7554/6bb1740d-9645-4d20-8ff2-fe43a8f67554/T6068_high.mp4\" expression=\"full\" duration=\"1116\" fileSize=\"181665171\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7554/6bb1740d-9645-4d20-8ff2-fe43a8f67554/T6068_mid.mp4\" expression=\"full\" duration=\"1116\" fileSize=\"43748175\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6068.mp4\" expression=\"full\" duration=\"1116\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Built-in machine learning in Microsoft SQL Server 2017 with Python</title>\n    <description><![CDATA[Machine learning services in SQL Server 2017 provides Python support for in-database machine learning, now. In this session we show the basics of how to run Python code in SQL Server. We then discuss how any app that can talk to SQL Server can get intelligence from machine learning models running in SQL Server. We showcase an app that uses a Python-based deep learning model built and deployed in SQL Server. The model leverages an open source deep learning framework running with SQL Server and utilizes GPU for boosting model training performance. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:060ad4c8e1bf4bec8a9ea768001c8eb9\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6067</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6067</link>\n    <itunes:summary>Machine learning services in SQL Server 2017 provides Python support for in-database machine learning, now. In this session we show the basics of how to run Python code in SQL Server. We then discuss how any app that can talk to SQL Server can get intelligence from machine learning models running in SQL Server. We showcase an app that uses a Python-based deep learning model built and deployed in SQL Server. The model leverages an open source deep learning framework running with SQL Server and utilizes GPU for boosting model training performance.</itunes:summary>\n    <itunes:duration>1249</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6067</guid>\n    <dc:creator>Sumit Kumar</dc:creator>\n    <category>machine+learning</category>\n    <category>sql+server</category>\n    <category>python</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/b29d/cd14d081-6ab3-498d-9382-2ce9c276b29d/T6067_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/b29d/cd14d081-6ab3-498d-9382-2ce9c276b29d/T6067_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/b29d/cd14d081-6ab3-498d-9382-2ce9c276b29d/T6067_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b29d/cd14d081-6ab3-498d-9382-2ce9c276b29d/T6067.mp3\" expression=\"full\" duration=\"1249\" fileSize=\"19987063\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b29d/cd14d081-6ab3-498d-9382-2ce9c276b29d/T6067.mp4\" expression=\"full\" duration=\"1249\" fileSize=\"25489734\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b29d/cd14d081-6ab3-498d-9382-2ce9c276b29d/T6067_high.mp4\" expression=\"full\" duration=\"1249\" fileSize=\"217984771\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b29d/cd14d081-6ab3-498d-9382-2ce9c276b29d/T6067_mid.mp4\" expression=\"full\" duration=\"1249\" fileSize=\"57658306\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6067.mp4\" expression=\"full\" duration=\"1249\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Building Cross platform applications with React Native</title>\n    <description><![CDATA[ReactJS and React Native are two very popular frameworks to build websites and Mobile applications. In this talk, speakers from Microsoft and Facebook look at React and GraphQL as first principles of developer abstraction and how they are used to build some of the most popular large scale apps like Instagram, Facebook Ads Manager and the Facebook app. We look at the underlying frameworks like React/React Native, Relay and Litho. We also explore the various tools that Microsoft offers in this space, including debugging React Native apps with VSCode. We look at the end to end workflow - from a single commit on github triggering continuous builds and tests, to the final, signed app distributed to testers, clients or end users. From monitoring services like JavaScript enabled crashes to understanding user behavior with analytics, we look at ways to get better mobile apps to your users. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:e653a6981467433d81c3a768001c8e23\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6065-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6065-R2</link>\n    <itunes:summary>ReactJS and React Native are two very popular frameworks to build websites and Mobile applications. In this talk, speakers from Microsoft and Facebook look at React and GraphQL as first principles of developer abstraction and how they are used to build some of the most popular large scale apps like Instagram, Facebook Ads Manager and the Facebook app. We look at the underlying frameworks like React/React Native, Relay and Litho. We also explore the various tools that Microsoft offers in this space, including debugging React Native apps with VSCode. We look at the end to end workflow - from a single commit on github triggering continuous builds and tests, to the final, signed app distributed to testers, clients or end users. From monitoring services like JavaScript enabled crashes to understanding user behavior with analytics, we look at ways to get better mobile apps to your users.</itunes:summary>\n    <itunes:duration>1492</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6065-R2</guid>\n    <dc:creator>Adam Wolff, Parasuraman Narasimhan</dc:creator>\n    <category>visual+studio+code</category>\n    <category>react+native</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/8b6b/c46dedd6-243a-4ab2-b5c4-37b59f178b6b/T6065-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8b6b/c46dedd6-243a-4ab2-b5c4-37b59f178b6b/T6065-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8b6b/c46dedd6-243a-4ab2-b5c4-37b59f178b6b/T6065-R2_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8b6b/c46dedd6-243a-4ab2-b5c4-37b59f178b6b/T6065-R2.mp3\" expression=\"full\" duration=\"1492\" fileSize=\"23879666\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8b6b/c46dedd6-243a-4ab2-b5c4-37b59f178b6b/T6065-R2.mp4\" expression=\"full\" duration=\"1492\" fileSize=\"28432770\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8b6b/c46dedd6-243a-4ab2-b5c4-37b59f178b6b/T6065-R2_high.mp4\" expression=\"full\" duration=\"1492\" fileSize=\"521247333\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8b6b/c46dedd6-243a-4ab2-b5c4-37b59f178b6b/T6065-R2_mid.mp4\" expression=\"full\" duration=\"1492\" fileSize=\"111555928\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6065-R2.mp4\" expression=\"full\" duration=\"1492\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Building cross platform applications with React Native</title>\n    <description><![CDATA[ReactJS and React Native are two very popular frameworks to build websites and mobile applications. In this talk, speakers from Microsoft and Facebook look at React and GraphQL as first principles of developer abstraction and how they are used to build some of the most popular large scale apps like Instagram, Facebook Ads Manager and the Facebook app. We look at the underlying frameworks like React/React Native, Relay and Litho. We also explore the various tools that Microsoft offers in this space, including debugging React Native apps with VSCode. We look at the end to end workflow - from a single commit on github triggering continuous builds and tests, to the final, signed app distributed to testers, clients or end users. From monitoring services like JavaScript enabled crashes to understanding user behavior with analytics, we look at ways to get better mobile apps to your users. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:01e16406eb0643b1b982a768001c8d6d\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6065-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6065-R1</link>\n    <itunes:summary>ReactJS and React Native are two very popular frameworks to build websites and mobile applications. In this talk, speakers from Microsoft and Facebook look at React and GraphQL as first principles of developer abstraction and how they are used to build some of the most popular large scale apps like Instagram, Facebook Ads Manager and the Facebook app. We look at the underlying frameworks like React/React Native, Relay and Litho. We also explore the various tools that Microsoft offers in this space, including debugging React Native apps with VSCode. We look at the end to end workflow - from a single commit on github triggering continuous builds and tests, to the final, signed app distributed to testers, clients or end users. From monitoring services like JavaScript enabled crashes to understanding user behavior with analytics, we look at ways to get better mobile apps to your users.</itunes:summary>\n    <itunes:duration>2074</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6065-R1</guid>\n    <dc:creator>Adam Wolff, Parasuraman Narasimhan</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/95aa/a7fdd782-d6c4-4e97-b7dd-4212e67895aa/T6065-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/95aa/a7fdd782-d6c4-4e97-b7dd-4212e67895aa/T6065-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/95aa/a7fdd782-d6c4-4e97-b7dd-4212e67895aa/T6065-R1_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/95aa/a7fdd782-d6c4-4e97-b7dd-4212e67895aa/T6065-R1.mp3\" expression=\"full\" duration=\"2074\" fileSize=\"33196362\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/95aa/a7fdd782-d6c4-4e97-b7dd-4212e67895aa/T6065-R1.mp4\" expression=\"full\" duration=\"2074\" fileSize=\"40256023\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/95aa/a7fdd782-d6c4-4e97-b7dd-4212e67895aa/T6065-R1_high.mp4\" expression=\"full\" duration=\"2074\" fileSize=\"254717763\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/95aa/a7fdd782-d6c4-4e97-b7dd-4212e67895aa/T6065-R1_mid.mp4\" expression=\"full\" duration=\"2074\" fileSize=\"86211113\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6065-R1.mp4\" expression=\"full\" duration=\"2074\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Why you should use F#</title>\n    <description><![CDATA[Get a view into why F# is important for .NET moving forward and learn about the vastly improved tools in Visual Studio 2017. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:c3b007923b22426a901ba768001c8ca3\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6064</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6064</link>\n    <itunes:summary>Get a view into why F# is important for .NET moving forward and learn about the vastly improved tools in Visual Studio 2017.</itunes:summary>\n    <itunes:duration>1192</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6064</guid>\n    <dc:creator>Mads Torgersen, Phillip Carter</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/3644/f0515ec9-d34f-4216-8668-40aa75a43644/T6064_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3644/f0515ec9-d34f-4216-8668-40aa75a43644/T6064_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3644/f0515ec9-d34f-4216-8668-40aa75a43644/T6064_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3644/f0515ec9-d34f-4216-8668-40aa75a43644/T6064.mp3\" expression=\"full\" duration=\"1192\" fileSize=\"19081290\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3644/f0515ec9-d34f-4216-8668-40aa75a43644/T6064.mp4\" expression=\"full\" duration=\"1192\" fileSize=\"22359940\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3644/f0515ec9-d34f-4216-8668-40aa75a43644/T6064_high.mp4\" expression=\"full\" duration=\"1192\" fileSize=\"259815635\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3644/f0515ec9-d34f-4216-8668-40aa75a43644/T6064_mid.mp4\" expression=\"full\" duration=\"1192\" fileSize=\"68109187\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6064.mp4\" expression=\"full\" duration=\"1192\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>What&#39;s New in Office UI Fabric</title>\n    <description><![CDATA[Office UI Fabric has come a long way in the last year, and we have plans to do even more. Come learn how you can start harnessing the power of Fabric in your projects today. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:803307a10fb6474eaf0fa768001c8c6b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6063</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6063</link>\n    <itunes:summary>Office UI Fabric has come a long way in the last year, and we have plans to do even more. Come learn how you can start harnessing the power of Fabric in your projects today.</itunes:summary>\n    <itunes:duration>1011</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6063</guid>\n    <dc:creator>Micah Godbolt</dc:creator>\n    <category>office</category>\n    <category>office+365</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/55db/42d17831-571f-4cc1-bc66-b2ac08e755db/T6063_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/55db/42d17831-571f-4cc1-bc66-b2ac08e755db/T6063_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/55db/42d17831-571f-4cc1-bc66-b2ac08e755db/T6063_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/55db/42d17831-571f-4cc1-bc66-b2ac08e755db/T6063.mp3\" expression=\"full\" duration=\"1011\" fileSize=\"16185377\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/55db/42d17831-571f-4cc1-bc66-b2ac08e755db/T6063.mp4\" expression=\"full\" duration=\"1011\" fileSize=\"18274827\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/55db/42d17831-571f-4cc1-bc66-b2ac08e755db/T6063_high.mp4\" expression=\"full\" duration=\"1011\" fileSize=\"150070660\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/55db/42d17831-571f-4cc1-bc66-b2ac08e755db/T6063_mid.mp4\" expression=\"full\" duration=\"1011\" fileSize=\"43750895\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6063.mp4\" expression=\"full\" duration=\"1011\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>DocuSign and Microsoft Office.js APIs integration</title>\n    <description><![CDATA[See how DocuSign used the new Microsoft Office.js APIs in their integrations and how it gets tied to completing a DocuSign transaction.&nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:ae8b4e7e066a469dad5da768001c8bf5\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6061</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6061</link>\n    <itunes:summary>See how DocuSign used the new Microsoft Office.js APIs in their integrations and how it gets tied to completing a DocuSign transaction. </itunes:summary>\n    <itunes:duration>845</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6061</guid>\n    <dc:creator>Kiah Jones</dc:creator>\n    <category>office</category>\n    <category>office+365</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/3072/6905be10-469e-425b-9fa8-ea0721683072/T6061_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3072/6905be10-469e-425b-9fa8-ea0721683072/T6061_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3072/6905be10-469e-425b-9fa8-ea0721683072/T6061_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3072/6905be10-469e-425b-9fa8-ea0721683072/T6061.mp3\" expression=\"full\" duration=\"845\" fileSize=\"13523906\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3072/6905be10-469e-425b-9fa8-ea0721683072/T6061.mp4\" expression=\"full\" duration=\"845\" fileSize=\"16052973\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3072/6905be10-469e-425b-9fa8-ea0721683072/T6061_high.mp4\" expression=\"full\" duration=\"845\" fileSize=\"141046097\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3072/6905be10-469e-425b-9fa8-ea0721683072/T6061_mid.mp4\" expression=\"full\" duration=\"845\" fileSize=\"36558275\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6061.mp4\" expression=\"full\" duration=\"845\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Integration with Microsoft Office 365 Data Loss Prevention with Remedy by BMC</title>\n    <description><![CDATA[Go &quot;behind the code&quot; with Office platform partner BMC on how they've built ew integration with Microsoft Office 365 Data Loss Prevention (DLP) solution enables Security and Compliance Administrators to manage data policy breaches as a Remedy ticket. &nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:d4d18e4d091541d6ac4ca768001c8b85\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6060</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6060</link>\n    <itunes:summary>Go &amp;quot;behind the code&amp;quot; with Office platform partner BMC on how they&#39;ve built ew integration with Microsoft Office 365 Data Loss Prevention (DLP) solution enables Security and Compliance Administrators to manage data policy breaches as a Remedy ticket.  </itunes:summary>\n    <itunes:duration>823</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6060</guid>\n    <dc:creator>Darius Wallace, Jeff Desroches, Rick Nelson</dc:creator>\n    <category>office</category>\n    <category>office+365</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/245d/84c0078d-beb0-48aa-974b-b3d936db245d/T6060_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/245d/84c0078d-beb0-48aa-974b-b3d936db245d/T6060_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/245d/84c0078d-beb0-48aa-974b-b3d936db245d/T6060_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/245d/84c0078d-beb0-48aa-974b-b3d936db245d/T6060.mp3\" expression=\"full\" duration=\"823\" fileSize=\"13183771\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/245d/84c0078d-beb0-48aa-974b-b3d936db245d/T6060.mp4\" expression=\"full\" duration=\"823\" fileSize=\"15958029\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/245d/84c0078d-beb0-48aa-974b-b3d936db245d/T6060_high.mp4\" expression=\"full\" duration=\"823\" fileSize=\"78484417\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/245d/84c0078d-beb0-48aa-974b-b3d936db245d/T6060_mid.mp4\" expression=\"full\" duration=\"823\" fileSize=\"31551964\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6060.mp4\" expression=\"full\" duration=\"823\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Adobe Creative Cloud and Adobe Document Cloud in Microsoft Teams</title>\n    <description><![CDATA[Join speakers from Adobe as they delve into how seamlessly and quickly they integrated Adobe Creative Cloud and Adobe Document Cloud with Microsoft Teams. A live demo using tab and input extensions that enables teams to access, share and collaborate on assets from Adobe Creative Cloud, send and track Adobe Sign agreements using bot and tab, and get notified within the channel when there are any updates. Speakers dive into development details that includes how they leveraged Microsoft Teams extensibility framework, Adobe Creative Cloud API and Adobe Document Cloud API to build this integration. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:c5f1aa94861d40268830a768001c8a91\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6059</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6059</link>\n    <itunes:summary>Join speakers from Adobe as they delve into how seamlessly and quickly they integrated Adobe Creative Cloud and Adobe Document Cloud with Microsoft Teams. A live demo using tab and input extensions that enables teams to access, share and collaborate on assets from Adobe Creative Cloud, send and track Adobe Sign agreements using bot and tab, and get notified within the channel when there are any updates. Speakers dive into development details that includes how they leveraged Microsoft Teams extensibility framework, Adobe Creative Cloud API and Adobe Document Cloud API to build this integration.</itunes:summary>\n    <itunes:duration>982</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6059</guid>\n    <dc:creator>Ashwani Chandil, Rajeev Sharma, Ram Prasad</dc:creator>\n    <category>office</category>\n    <category>office+365</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/cd7c/bee36ef9-0588-4893-8cb7-20a06171cd7c/T6059_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/cd7c/bee36ef9-0588-4893-8cb7-20a06171cd7c/T6059_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/cd7c/bee36ef9-0588-4893-8cb7-20a06171cd7c/T6059_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cd7c/bee36ef9-0588-4893-8cb7-20a06171cd7c/T6059.mp3\" expression=\"full\" duration=\"982\" fileSize=\"15720832\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cd7c/bee36ef9-0588-4893-8cb7-20a06171cd7c/T6059.mp4\" expression=\"full\" duration=\"982\" fileSize=\"18590336\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cd7c/bee36ef9-0588-4893-8cb7-20a06171cd7c/T6059_high.mp4\" expression=\"full\" duration=\"982\" fileSize=\"113347352\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cd7c/bee36ef9-0588-4893-8cb7-20a06171cd7c/T6059_mid.mp4\" expression=\"full\" duration=\"982\" fileSize=\"40284323\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6059.mp4\" expression=\"full\" duration=\"982\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Never break the build with live unit testing</title>\n    <description><![CDATA[<p>Unit tests make your continuous integration and deployment system dependable by ensuring all tests pass before deployment. With Visual Studio Live Unit Testing, learn how to keep your code working before you commit a byte of code to source control. In this session, learn how to configure and start using Live Unit Testing effectively</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:f6b4c0b1ceac4fd4853ba768001c8889\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6055</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6055</link>\n    <itunes:summary>Unit tests make your continuous integration and deployment system dependable by ensuring all tests pass before deployment. With Visual Studio Live Unit Testing, learn how to keep your code working before you commit a byte of code to source control. In this session, learn how to configure and start using Live Unit Testing effectively </itunes:summary>\n    <itunes:duration>1138</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6055</guid>\n    <dc:creator>manish jayaswal</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/6eb0/589539a6-94e4-422b-abcc-db332fc16eb0/T6055_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/6eb0/589539a6-94e4-422b-abcc-db332fc16eb0/T6055_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/6eb0/589539a6-94e4-422b-abcc-db332fc16eb0/T6055_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6eb0/589539a6-94e4-422b-abcc-db332fc16eb0/T6055.mp3\" expression=\"full\" duration=\"1138\" fileSize=\"18208458\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6eb0/589539a6-94e4-422b-abcc-db332fc16eb0/T6055.mp4\" expression=\"full\" duration=\"1138\" fileSize=\"20557390\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6eb0/589539a6-94e4-422b-abcc-db332fc16eb0/T6055_high.mp4\" expression=\"full\" duration=\"1138\" fileSize=\"96900312\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6eb0/589539a6-94e4-422b-abcc-db332fc16eb0/T6055_mid.mp4\" expression=\"full\" duration=\"1138\" fileSize=\"40976993\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6055.mp4\" expression=\"full\" duration=\"1138\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>NodeSource N|Solid runtime on Microsoft Azure</title>\n    <description><![CDATA[NodeSource N|Solid is a fully compatible Node.js runtime that has been enhanced to address the needs of the enterprise. It is created and maintained by NodeSource, the Node.js company. In partnership with Microsoft, NodeSource brought the power of N|Solid to the Azure Marketplace. N|Solid is also available to scale Node.js using Kubernetes in Azure Container Service. In this session, NodeSource talks about their journey and how Azure provides a great end-to-end cloud hosting solution for Node.js development. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:fa64e5451a404f648358a768001c885f\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6053-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6053-R2</link>\n    <itunes:summary>NodeSource N|Solid is a fully compatible Node.js runtime that has been enhanced to address the needs of the enterprise. It is created and maintained by NodeSource, the Node.js company. In partnership with Microsoft, NodeSource brought the power of N|Solid to the Azure Marketplace. N|Solid is also available to scale Node.js using Kubernetes in Azure Container Service. In this session, NodeSource talks about their journey and how Azure provides a great end-to-end cloud hosting solution for Node.js development.</itunes:summary>\n    <itunes:duration>1035</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6053-R2</guid>\n    <dc:creator>Dan Shaw, Joe Doyle</dc:creator>\n    <category>node.js</category>\n    <category>azure+container+service</category>\n    <category>azure+marketplace</category>\n    <category>authentication</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/d702/2af580f8-908a-45ff-a01b-c0442820d702/T6053-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/d702/2af580f8-908a-45ff-a01b-c0442820d702/T6053-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/d702/2af580f8-908a-45ff-a01b-c0442820d702/T6053-R2_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d702/2af580f8-908a-45ff-a01b-c0442820d702/T6053-R2.mp3\" expression=\"full\" duration=\"1035\" fileSize=\"16569460\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d702/2af580f8-908a-45ff-a01b-c0442820d702/T6053-R2.mp4\" expression=\"full\" duration=\"1035\" fileSize=\"18292188\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d702/2af580f8-908a-45ff-a01b-c0442820d702/T6053-R2_high.mp4\" expression=\"full\" duration=\"1035\" fileSize=\"93076021\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d702/2af580f8-908a-45ff-a01b-c0442820d702/T6053-R2_mid.mp4\" expression=\"full\" duration=\"1035\" fileSize=\"35366628\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6053-R2.mp4\" expression=\"full\" duration=\"1035\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>NodeSource N|Solid runtime on Microsoft Azure</title>\n    <description><![CDATA[NodeSource N|Solid is a fully compatible Node.js runtime that has been enhanced to address the needs of the enterprise. It is created and maintained by NodeSource, the Node.js company. In partnership with Microsoft, NodeSource brought the power of N|Solid to the Azure Marketplace. N|Solid is also available to scale Node.js using Kubernetes in Azure Container Service. In this session, NodeSource talks about their journey and how Azure provides a great end-to-end cloud hosting solution for Node.js development. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:abc60999ab584c589723a768001c8779\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6053-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6053-R1</link>\n    <itunes:summary>NodeSource N|Solid is a fully compatible Node.js runtime that has been enhanced to address the needs of the enterprise. It is created and maintained by NodeSource, the Node.js company. In partnership with Microsoft, NodeSource brought the power of N|Solid to the Azure Marketplace. N|Solid is also available to scale Node.js using Kubernetes in Azure Container Service. In this session, NodeSource talks about their journey and how Azure provides a great end-to-end cloud hosting solution for Node.js development.</itunes:summary>\n    <itunes:duration>1069</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6053-R1</guid>\n    <dc:creator>Dan Shaw, Joe Doyle</dc:creator>\n    <category>azure</category>\n    <category>node.js</category>\n    <category>azure+container+service</category>\n    <category>azure+marketplace</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/b166/ba98b687-56bf-48c7-a9fd-527a12e6b166/T6053-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/b166/ba98b687-56bf-48c7-a9fd-527a12e6b166/T6053-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/b166/ba98b687-56bf-48c7-a9fd-527a12e6b166/T6053-R1_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b166/ba98b687-56bf-48c7-a9fd-527a12e6b166/T6053-R1.mp3\" expression=\"full\" duration=\"1069\" fileSize=\"17118571\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b166/ba98b687-56bf-48c7-a9fd-527a12e6b166/T6053-R1.mp4\" expression=\"full\" duration=\"1069\" fileSize=\"19126241\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b166/ba98b687-56bf-48c7-a9fd-527a12e6b166/T6053-R1_high.mp4\" expression=\"full\" duration=\"1069\" fileSize=\"109364823\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b166/ba98b687-56bf-48c7-a9fd-527a12e6b166/T6053-R1_mid.mp4\" expression=\"full\" duration=\"1069\" fileSize=\"37992373\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6053-R1.mp4\" expression=\"full\" duration=\"1069\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Virtual and mixed reality apps with C#</title>\n    <description><![CDATA[Are you interested in developing holographic and mobile apps that include interactive 3D elements? UrhoSharp is a code-first, cross-platform 3D and 2D game framework that's easy to integrate into your C# and F# apps. Come learn how to add UrhoSharp to your app, work with its scene graph and component model, and develop real-world interactions using Microsoft HoloLens. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:00dde4e0abd047a4b115a768001c86a6\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6052</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6052</link>\n    <itunes:summary>Are you interested in developing holographic and mobile apps that include interactive 3D elements? UrhoSharp is a code-first, cross-platform 3D and 2D game framework that&#39;s easy to integrate into your C# and F# apps. Come learn how to add UrhoSharp to your app, work with its scene graph and component model, and develop real-world interactions using Microsoft HoloLens.</itunes:summary>\n    <itunes:duration>1183</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6052</guid>\n    <dc:creator>Mikayla Hutchinson</dc:creator>\n    <category>hololens</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/aab7/e79686e9-bd20-4514-9bd3-7ab57fdcaab7/T6052_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/aab7/e79686e9-bd20-4514-9bd3-7ab57fdcaab7/T6052_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/aab7/e79686e9-bd20-4514-9bd3-7ab57fdcaab7/T6052_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/aab7/e79686e9-bd20-4514-9bd3-7ab57fdcaab7/T6052.mp3\" expression=\"full\" duration=\"1183\" fileSize=\"18938666\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/aab7/e79686e9-bd20-4514-9bd3-7ab57fdcaab7/T6052.mp4\" expression=\"full\" duration=\"1183\" fileSize=\"21970179\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/aab7/e79686e9-bd20-4514-9bd3-7ab57fdcaab7/T6052_high.mp4\" expression=\"full\" duration=\"1183\" fileSize=\"133034592\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/aab7/e79686e9-bd20-4514-9bd3-7ab57fdcaab7/T6052_mid.mp4\" expression=\"full\" duration=\"1183\" fileSize=\"45990070\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6052.mp4\" expression=\"full\" duration=\"1183\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Microservice architecture with ASP.NET Core</title>\n    <description><![CDATA[Microservices are a hot topic and in this session, get an overview of microservices and how ASP.NET Core helps solve those challenges. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:42ebfb10be154291974da768001c8664\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6051</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6051</link>\n    <itunes:summary>Microservices are a hot topic and in this session, get an overview of microservices and how ASP.NET Core helps solve those challenges.</itunes:summary>\n    <itunes:duration>1676</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6051</guid>\n    <dc:creator>Glenn Condron, Cesar De Ia Torre Llorente</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/06f0/23eee9dc-57b4-4db9-8ac2-85b37d3906f0/T6051_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/06f0/23eee9dc-57b4-4db9-8ac2-85b37d3906f0/T6051_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/06f0/23eee9dc-57b4-4db9-8ac2-85b37d3906f0/T6051_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/06f0/23eee9dc-57b4-4db9-8ac2-85b37d3906f0/T6051.mp3\" expression=\"full\" duration=\"1676\" fileSize=\"26821194\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/06f0/23eee9dc-57b4-4db9-8ac2-85b37d3906f0/T6051.mp4\" expression=\"full\" duration=\"1676\" fileSize=\"34869011\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/06f0/23eee9dc-57b4-4db9-8ac2-85b37d3906f0/T6051_high.mp4\" expression=\"full\" duration=\"1676\" fileSize=\"254541485\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/06f0/23eee9dc-57b4-4db9-8ac2-85b37d3906f0/T6051_mid.mp4\" expression=\"full\" duration=\"1676\" fileSize=\"79338024\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6051.mp4\" expression=\"full\" duration=\"1676\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>From Zero to Hero: Building an Office add-in in one day</title>\n    <description><![CDATA[A step-by-step breakdown of how I built a completely functional Office add-in, with no previous experience. Find out how to build an add-in that allows PowerPoint users to import content from your app or site. And I'll also share the No. 1 time-saving tip I learned while developing the Pixton add-in. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:cbc2171ffa04461cbcdaa768001c85ce\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6050</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6050</link>\n    <itunes:summary>A step-by-step breakdown of how I built a completely functional Office add-in, with no previous experience. Find out how to build an add-in that allows PowerPoint users to import content from your app or site. And I&#39;ll also share the No. 1 time-saving tip I learned while developing the Pixton add-in.</itunes:summary>\n    <itunes:duration>821</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6050</guid>\n    <dc:creator>Mike Ammerlaan, Clive Goodinson</dc:creator>\n    <category>office</category>\n    <category>office+365</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/0a39/cb637dd9-f5d0-41a9-ba92-caab0f360a39/T6050_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0a39/cb637dd9-f5d0-41a9-ba92-caab0f360a39/T6050_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0a39/cb637dd9-f5d0-41a9-ba92-caab0f360a39/T6050_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0a39/cb637dd9-f5d0-41a9-ba92-caab0f360a39/T6050.mp3\" expression=\"full\" duration=\"821\" fileSize=\"13146083\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0a39/cb637dd9-f5d0-41a9-ba92-caab0f360a39/T6050.mp4\" expression=\"full\" duration=\"821\" fileSize=\"16731130\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0a39/cb637dd9-f5d0-41a9-ba92-caab0f360a39/T6050_high.mp4\" expression=\"full\" duration=\"821\" fileSize=\"79667480\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0a39/cb637dd9-f5d0-41a9-ba92-caab0f360a39/T6050_mid.mp4\" expression=\"full\" duration=\"821\" fileSize=\"32334624\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6050.mp4\" expression=\"full\" duration=\"821\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Make better product and feature decisions with Application Insights&#160;</title>\n    <description><![CDATA[Development teams are always looking for the next improvements to make to their products: creating, updating, and removing features. Ideally these decisions would be data-driven, but often products don’t send usage telemetry data. Even for products with usage data, making sound product and feature decisions often involves writing lots of repetitive, manual queries. New features in Application Insights dramatically simplify this process with tools for exploring user interactions and engagement and creating funnels to understand conversion rates. With these product usage analytics capabilities, you can get a more complete picture of your app, from the server to the browser to the user, empowering your team to build better products. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:91fb09013d774487be95a768001c853d\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6049</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6049</link>\n    <itunes:summary>Development teams are always looking for the next improvements to make to their products: creating, updating, and removing features. Ideally these decisions would be data-driven, but often products don’t send usage telemetry data. Even for products with usage data, making sound product and feature decisions often involves writing lots of repetitive, manual queries. New features in Application Insights dramatically simplify this process with tools for exploring user interactions and engagement and creating funnels to understand conversion rates. With these product usage analytics capabilities, you can get a more complete picture of your app, from the server to the browser to the user, empowering your team to build better products.</itunes:summary>\n    <itunes:duration>988</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6049</guid>\n    <dc:creator>David Stephens, Bo-ying Fu</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/1a68/b474647e-13fe-41b4-8792-a196ee341a68/T6049_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1a68/b474647e-13fe-41b4-8792-a196ee341a68/T6049_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1a68/b474647e-13fe-41b4-8792-a196ee341a68/T6049_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1a68/b474647e-13fe-41b4-8792-a196ee341a68/T6049.mp3\" expression=\"full\" duration=\"988\" fileSize=\"15822282\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1a68/b474647e-13fe-41b4-8792-a196ee341a68/T6049.mp4\" expression=\"full\" duration=\"988\" fileSize=\"17991423\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1a68/b474647e-13fe-41b4-8792-a196ee341a68/T6049_high.mp4\" expression=\"full\" duration=\"988\" fileSize=\"83456558\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1a68/b474647e-13fe-41b4-8792-a196ee341a68/T6049_mid.mp4\" expression=\"full\" duration=\"988\" fileSize=\"34735542\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6049.mp4\" expression=\"full\" duration=\"988\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Machine learning based diagnostics and analytics with Application Insights&#160;</title>\n    <description><![CDATA[Multi-tiered applications are complex to manage due to the inherent dependencies across different layers. In addition, any unexpected change in the behavior of a component can affect others. Developers may not always know the right questions to ask in such situations or may not anticipate the impact to the overall application. Application Insights can provide you ‘automatic’ insights, by employing statistical and machine learning algorithms to analyze and correlate thousands of time-series data points to perform anomaly detection and cause and effect analysis, helping you diagnose potential problems quickly and easily. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:70d9722d316e4276be18a768001c84d1\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6048</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6048</link>\n    <itunes:summary>Multi-tiered applications are complex to manage due to the inherent dependencies across different layers. In addition, any unexpected change in the behavior of a component can affect others. Developers may not always know the right questions to ask in such situations or may not anticipate the impact to the overall application. Application Insights can provide you ‘automatic’ insights, by employing statistical and machine learning algorithms to analyze and correlate thousands of time-series data points to perform anomaly detection and cause and effect analysis, helping you diagnose potential problems quickly and easily.</itunes:summary>\n    <itunes:duration>1188</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6048</guid>\n    <dc:creator>Harel Broitman, Yossi Attas</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/afe3/46c28b07-24a0-464f-b42e-21c95951afe3/T6048_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/afe3/46c28b07-24a0-464f-b42e-21c95951afe3/T6048_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/afe3/46c28b07-24a0-464f-b42e-21c95951afe3/T6048_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/afe3/46c28b07-24a0-464f-b42e-21c95951afe3/T6048.mp3\" expression=\"full\" duration=\"1188\" fileSize=\"19019850\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/afe3/46c28b07-24a0-464f-b42e-21c95951afe3/T6048.mp4\" expression=\"full\" duration=\"1188\" fileSize=\"21475208\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/afe3/46c28b07-24a0-464f-b42e-21c95951afe3/T6048_high.mp4\" expression=\"full\" duration=\"1188\" fileSize=\"122798404\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/afe3/46c28b07-24a0-464f-b42e-21c95951afe3/T6048_mid.mp4\" expression=\"full\" duration=\"1188\" fileSize=\"43840130\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6048.mp4\" expression=\"full\" duration=\"1188\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Leveraging Cortana user knowledge to personalize your Cortana skill</title>\n    <description><![CDATA[As a personal assistant, Cortana learns about each user and develops a deep understanding of their preferences, habits, and context. This session shows you step-by-step how to use the Cortana Skills Kit to leverage Cortana user knowledge to create highly personalized skills that drive deep user engagement. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:3f643bfce72d456a933ba768001c844e\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6046</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6046</link>\n    <itunes:summary>As a personal assistant, Cortana learns about each user and develops a deep understanding of their preferences, habits, and context. This session shows you step-by-step how to use the Cortana Skills Kit to leverage Cortana user knowledge to create highly personalized skills that drive deep user engagement.</itunes:summary>\n    <itunes:duration>968</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6046</guid>\n    <dc:creator>Adi Miller, Haim Somech</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>cortanta+skills</category>\n    <category>cortana</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/96ca/55aee96a-dec7-42ec-8cb3-3d75896796ca/T6046_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/96ca/55aee96a-dec7-42ec-8cb3-3d75896796ca/T6046_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/96ca/55aee96a-dec7-42ec-8cb3-3d75896796ca/T6046_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/96ca/55aee96a-dec7-42ec-8cb3-3d75896796ca/T6046.mp3\" expression=\"full\" duration=\"968\" fileSize=\"15501586\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/96ca/55aee96a-dec7-42ec-8cb3-3d75896796ca/T6046.mp4\" expression=\"full\" duration=\"968\" fileSize=\"18276545\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/96ca/55aee96a-dec7-42ec-8cb3-3d75896796ca/T6046_high.mp4\" expression=\"full\" duration=\"968\" fileSize=\"99209844\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/96ca/55aee96a-dec7-42ec-8cb3-3d75896796ca/T6046_mid.mp4\" expression=\"full\" duration=\"968\" fileSize=\"37448757\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6046.mp4\" expression=\"full\" duration=\"968\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Supercharge your business with the power of AI</title>\n    <description><![CDATA[Our industry is on the cusp of a new frontier that pairs the power of natural human language with advanced machine intelligence. At Microsoft, we want to democratize AI. This means making it readily available to everyone. This session walks through common but widespread business experiences that can immediately be enhanced with AI. You will walk away appreciating how you can use AI immediately to supercharge your business, enterprise apps, and experiences. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:d6a19542f12e41518c26a768001c838e\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6045</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6045</link>\n    <itunes:summary>Our industry is on the cusp of a new frontier that pairs the power of natural human language with advanced machine intelligence. At Microsoft, we want to democratize AI. This means making it readily available to everyone. This session walks through common but widespread business experiences that can immediately be enhanced with AI. You will walk away appreciating how you can use AI immediately to supercharge your business, enterprise apps, and experiences.</itunes:summary>\n    <itunes:duration>989</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6045</guid>\n    <dc:creator>Mujtaba Khambatti</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>cognitive+services</category>\n    <category>machine+learning</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/8a64/687b6f31-a8ac-4993-90dc-8ac971538a64/T6045_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8a64/687b6f31-a8ac-4993-90dc-8ac971538a64/T6045_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/8a64/687b6f31-a8ac-4993-90dc-8ac971538a64/T6045_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8a64/687b6f31-a8ac-4993-90dc-8ac971538a64/T6045.mp3\" expression=\"full\" duration=\"989\" fileSize=\"15837166\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8a64/687b6f31-a8ac-4993-90dc-8ac971538a64/T6045.mp4\" expression=\"full\" duration=\"989\" fileSize=\"18774434\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8a64/687b6f31-a8ac-4993-90dc-8ac971538a64/T6045_high.mp4\" expression=\"full\" duration=\"989\" fileSize=\"190347662\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8a64/687b6f31-a8ac-4993-90dc-8ac971538a64/T6045_mid.mp4\" expression=\"full\" duration=\"989\" fileSize=\"49026489\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6045.mp4\" expression=\"full\" duration=\"989\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Building Smart Contracts with Azure blockchain middleware</title>\n    <description><![CDATA[Cryptlets introduce a development environment for building next generation blockchain applications targeting enterprise blockchain environments. The Cryptlet Fabric provides an abstraction layer on top of the most popular blockchains like Ethereum, Quorum, Chain, and Corda along with a secure multiparty execution environment for building distributed trust applications with familiar platforms like .NET and Java. This session provides an overview of the platform, development stack, and use cases. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:68e417d972814d92a48ca768001c832b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6044</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6044</link>\n    <itunes:summary>Cryptlets introduce a development environment for building next generation blockchain applications targeting enterprise blockchain environments. The Cryptlet Fabric provides an abstraction layer on top of the most popular blockchains like Ethereum, Quorum, Chain, and Corda along with a secure multiparty execution environment for building distributed trust applications with familiar platforms like .NET and Java. This session provides an overview of the platform, development stack, and use cases.</itunes:summary>\n    <itunes:duration>1294</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6044</guid>\n    <dc:creator>Marley Gray</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/7a3f/6e7da8c0-78c4-4d84-9854-5f92e2547a3f/T6044_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/7a3f/6e7da8c0-78c4-4d84-9854-5f92e2547a3f/T6044_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/7a3f/6e7da8c0-78c4-4d84-9854-5f92e2547a3f/T6044_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7a3f/6e7da8c0-78c4-4d84-9854-5f92e2547a3f/T6044.mp3\" expression=\"full\" duration=\"1294\" fileSize=\"20712906\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7a3f/6e7da8c0-78c4-4d84-9854-5f92e2547a3f/T6044.mp4\" expression=\"full\" duration=\"1294\" fileSize=\"26854116\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7a3f/6e7da8c0-78c4-4d84-9854-5f92e2547a3f/T6044_high.mp4\" expression=\"full\" duration=\"1294\" fileSize=\"136993601\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/7a3f/6e7da8c0-78c4-4d84-9854-5f92e2547a3f/T6044_mid.mp4\" expression=\"full\" duration=\"1294\" fileSize=\"55939038\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6044.mp4\" expression=\"full\" duration=\"1294\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Intelligent databases in action</title>\n    <description><![CDATA[In this session, see demos of our intelligent PaaS database capabilities, including: intelligent performance - recommendations and tuning; insight at scale; security intelligence - security recommendations and threat detection; learning based query processing with Adaptive QP; and graph data processing with SQL Graph. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:885b4dc22f394003be2ea768001c82d2\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6043</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6043</link>\n    <itunes:summary>In this session, see demos of our intelligent PaaS database capabilities, including: intelligent performance - recommendations and tuning; insight at scale; security intelligence - security recommendations and threat detection; learning based query processing with Adaptive QP; and graph data processing with SQL Graph.</itunes:summary>\n    <itunes:duration>1504</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6043</guid>\n    <dc:creator>Lindsey Allen</dc:creator>\n    <category>azure+sql+database</category>\n    <category>intelligence</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/b7d2/3c609fea-e1ae-486a-949c-780c5f4fb7d2/T6043_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/b7d2/3c609fea-e1ae-486a-949c-780c5f4fb7d2/T6043_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/b7d2/3c609fea-e1ae-486a-949c-780c5f4fb7d2/T6043_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b7d2/3c609fea-e1ae-486a-949c-780c5f4fb7d2/T6043.mp3\" expression=\"full\" duration=\"1504\" fileSize=\"24066223\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b7d2/3c609fea-e1ae-486a-949c-780c5f4fb7d2/T6043.mp4\" expression=\"full\" duration=\"1504\" fileSize=\"28150318\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b7d2/3c609fea-e1ae-486a-949c-780c5f4fb7d2/T6043_high.mp4\" expression=\"full\" duration=\"1504\" fileSize=\"223925673\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b7d2/3c609fea-e1ae-486a-949c-780c5f4fb7d2/T6043_mid.mp4\" expression=\"full\" duration=\"1504\" fileSize=\"57632018\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6043.mp4\" expression=\"full\" duration=\"1504\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Integrating applications with Microsoft Intune</title>\n    <description><![CDATA[Learn about how your solutions can integrate with, automate, and get native mobile application management support with Microsoft Intune. If you’re an ISV wanting to build integrated solutions for Intune, learn how to take advantage of newly-released Intune APIs.&nbsp;For mobile application developers, understand how to leverage the Intune MAM SDK to build device applications for the Intune application ecosystem. We demonstrate many techniques throughout the session, and set you up to develop amazing integrated solutions for Microsoft’s fastest growing business – Enterprise Mobility &amp; Security! <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:f0656fcbda2c4bd291a6a768001c8262\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6041</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6041</link>\n    <itunes:summary>Learn about how your solutions can integrate with, automate, and get native mobile application management support with Microsoft Intune. If you’re an ISV wanting to build integrated solutions for Intune, learn how to take advantage of newly-released Intune APIs. For mobile application developers, understand how to leverage the Intune MAM SDK to build device applications for the Intune application ecosystem. We demonstrate many techniques throughout the session, and set you up to develop amazing integrated solutions for Microsoft’s fastest growing business – Enterprise Mobility &amp;amp; Security!</itunes:summary>\n    <itunes:duration>1205</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6041</guid>\n    <dc:creator>Dave Randall, Peter Richards, Roxana Drake</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/f4d4/e20ea15d-39b5-4bb4-b366-c71910fdf4d4/T6041_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f4d4/e20ea15d-39b5-4bb4-b366-c71910fdf4d4/T6041_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f4d4/e20ea15d-39b5-4bb4-b366-c71910fdf4d4/T6041_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f4d4/e20ea15d-39b5-4bb4-b366-c71910fdf4d4/T6041.mp3\" expression=\"full\" duration=\"1205\" fileSize=\"19292490\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f4d4/e20ea15d-39b5-4bb4-b366-c71910fdf4d4/T6041.mp4\" expression=\"full\" duration=\"1205\" fileSize=\"21767864\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f4d4/e20ea15d-39b5-4bb4-b366-c71910fdf4d4/T6041_high.mp4\" expression=\"full\" duration=\"1205\" fileSize=\"126667615\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f4d4/e20ea15d-39b5-4bb4-b366-c71910fdf4d4/T6041_mid.mp4\" expression=\"full\" duration=\"1205\" fileSize=\"44492995\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6041.mp4\" expression=\"full\" duration=\"1205\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Image processing at scale using U-SQL in Azure Data Lake</title>\n    <description><![CDATA[Making use of cognitive capabilities such as Image OCR or Sentiment Analysis of text is straightforward with small datasets of a few terabytes. But, at the scale of hundreds of terabytes or even a petabyte, you need a different approach to that can massively scale out *AND* be simple to build. Azure Data Lake offers a straightforward way of programming using .NET code against these massive Petabyte-scale datasets without the need to become a deep expert in distributed computing, big data technologies, or machine learning. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:5193e78a5b9e4dcba0a5a768001c8157\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6040</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6040</link>\n    <itunes:summary>Making use of cognitive capabilities such as Image OCR or Sentiment Analysis of text is straightforward with small datasets of a few terabytes. But, at the scale of hundreds of terabytes or even a petabyte, you need a different approach to that can massively scale out *AND* be simple to build. Azure Data Lake offers a straightforward way of programming using .NET code against these massive Petabyte-scale datasets without the need to become a deep expert in distributed computing, big data technologies, or machine learning.</itunes:summary>\n    <itunes:duration>1342</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6040</guid>\n    <dc:creator>Saveen Reddy</dc:creator>\n    <category>intelligence</category>\n    <category>data</category>\n    <category>data+lake</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/48f9/a32e227c-6b75-4421-8493-9cdd441c48f9/T6040_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/48f9/a32e227c-6b75-4421-8493-9cdd441c48f9/T6040_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/48f9/a32e227c-6b75-4421-8493-9cdd441c48f9/T6040_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/48f9/a32e227c-6b75-4421-8493-9cdd441c48f9/T6040.mp3\" expression=\"full\" duration=\"1342\" fileSize=\"21486557\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/48f9/a32e227c-6b75-4421-8493-9cdd441c48f9/T6040.mp4\" expression=\"full\" duration=\"1342\" fileSize=\"25216889\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/48f9/a32e227c-6b75-4421-8493-9cdd441c48f9/T6040_high.mp4\" expression=\"full\" duration=\"1342\" fileSize=\"118390075\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/48f9/a32e227c-6b75-4421-8493-9cdd441c48f9/T6040_mid.mp4\" expression=\"full\" duration=\"1342\" fileSize=\"49810628\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6040.mp4\" expression=\"full\" duration=\"1342\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>New Virtual Health Templates extend Skype for Business as platform for developers</title>\n    <description><![CDATA[Skype for Business includes powerful support for audio/video conversations and meetings.&nbsp; Find out how we built a complete &quot;Virtual Consult&quot; facility for doctors, and how you can weave the power of audio/video conversations into your own apps. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:417aa05d808844ad9c2aa768001c80f4\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6039</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6039</link>\n    <itunes:summary>Skype for Business includes powerful support for audio/video conversations and meetings.  Find out how we built a complete &amp;quot;Virtual Consult&amp;quot; facility for doctors, and how you can weave the power of audio/video conversations into your own apps.</itunes:summary>\n    <itunes:duration>1044</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6039</guid>\n    <dc:creator>David Newman, Daniel Canning</dc:creator>\n    <category>office</category>\n    <category>office+365</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/0718/3b591aaa-d37e-4b28-bcd5-63df0de50718/T6039_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0718/3b591aaa-d37e-4b28-bcd5-63df0de50718/T6039_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0718/3b591aaa-d37e-4b28-bcd5-63df0de50718/T6039_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0718/3b591aaa-d37e-4b28-bcd5-63df0de50718/T6039.mp3\" expression=\"full\" duration=\"1044\" fileSize=\"16715796\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0718/3b591aaa-d37e-4b28-bcd5-63df0de50718/T6039.mp4\" expression=\"full\" duration=\"1044\" fileSize=\"24443725\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0718/3b591aaa-d37e-4b28-bcd5-63df0de50718/T6039_high.mp4\" expression=\"full\" duration=\"1044\" fileSize=\"164297006\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0718/3b591aaa-d37e-4b28-bcd5-63df0de50718/T6039_mid.mp4\" expression=\"full\" duration=\"1044\" fileSize=\"57314966\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6039.mp4\" expression=\"full\" duration=\"1044\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Chat bots on Bing.com</title>\n    <description><![CDATA[Learn how chat bots enhance the Bing experience and how you can add your custom bots to Bing. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:6c4428dacdac4e229f59a768001c808d\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6038</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6038</link>\n    <itunes:summary>Learn how chat bots enhance the Bing experience and how you can add your custom bots to Bing.</itunes:summary>\n    <itunes:duration>940</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6038</guid>\n    <dc:creator>Marcelo De Barros</dc:creator>\n    <category>bots</category>\n    <category>artificial+intelligence</category>\n    <category>bing</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/9ca6/c0ed86f2-98ba-4235-97fc-d2be76999ca6/T6038_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/9ca6/c0ed86f2-98ba-4235-97fc-d2be76999ca6/T6038_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/9ca6/c0ed86f2-98ba-4235-97fc-d2be76999ca6/T6038_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9ca6/c0ed86f2-98ba-4235-97fc-d2be76999ca6/T6038.mp3\" expression=\"full\" duration=\"940\" fileSize=\"15056418\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9ca6/c0ed86f2-98ba-4235-97fc-d2be76999ca6/T6038.mp4\" expression=\"full\" duration=\"940\" fileSize=\"17095098\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9ca6/c0ed86f2-98ba-4235-97fc-d2be76999ca6/T6038_high.mp4\" expression=\"full\" duration=\"940\" fileSize=\"116089325\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/9ca6/c0ed86f2-98ba-4235-97fc-d2be76999ca6/T6038_mid.mp4\" expression=\"full\" duration=\"940\" fileSize=\"35294240\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6038.mp4\" expression=\"full\" duration=\"940\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Writing an awesome Mobile Outlook add-in</title>\n    <description><![CDATA[Nimble provides a CRM system designed around social sales and marketing. Come find out how they integrated and built with Office 365 to grow an engaged user base. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:26dbaff5dcb647bfae99a768001c7ffc\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6037</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6037</link>\n    <itunes:summary>Nimble provides a CRM system designed around social sales and marketing. Come find out how they integrated and built with Office 365 to grow an engaged user base.</itunes:summary>\n    <itunes:duration>1417</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6037</guid>\n    <dc:creator>Dwight Foster, Sergey Shvets</dc:creator>\n    <category>office</category>\n    <category>office+365</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/e053/ca53f6eb-c4e5-46fa-80cf-e11a26cde053/T6037_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e053/ca53f6eb-c4e5-46fa-80cf-e11a26cde053/T6037_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/e053/ca53f6eb-c4e5-46fa-80cf-e11a26cde053/T6037_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e053/ca53f6eb-c4e5-46fa-80cf-e11a26cde053/T6037.mp3\" expression=\"full\" duration=\"1417\" fileSize=\"22687682\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e053/ca53f6eb-c4e5-46fa-80cf-e11a26cde053/T6037.mp4\" expression=\"full\" duration=\"1417\" fileSize=\"28509326\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e053/ca53f6eb-c4e5-46fa-80cf-e11a26cde053/T6037_high.mp4\" expression=\"full\" duration=\"1417\" fileSize=\"132405149\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e053/ca53f6eb-c4e5-46fa-80cf-e11a26cde053/T6037_mid.mp4\" expression=\"full\" duration=\"1417\" fileSize=\"56530919\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6037.mp4\" expression=\"full\" duration=\"1417\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How do I secure my IoT solution?&#160;</title>\n    <description><![CDATA[Mirai, a recent IoT hack, was able to take down many well-known Internet sites such as GitHub, Twitter, Reddit, Netflix, and Airbnb, highlighting not only the vulnerabilities of IoT infrastructure today, but also that IoT infrastructure can be used to launch attacks at a scale not possible previously. In this session we present some of the key IoT vulnerabilities exploited today, and how to design, develop, deploy, and operate an IoT infrastructure you can trust using Azure IoT. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:9b82e6c165ac495ea63aa768001c7f4a\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6036</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6036</link>\n    <itunes:summary>Mirai, a recent IoT hack, was able to take down many well-known Internet sites such as GitHub, Twitter, Reddit, Netflix, and Airbnb, highlighting not only the vulnerabilities of IoT infrastructure today, but also that IoT infrastructure can be used to launch attacks at a scale not possible previously. In this session we present some of the key IoT vulnerabilities exploited today, and how to design, develop, deploy, and operate an IoT infrastructure you can trust using Azure IoT.</itunes:summary>\n    <itunes:duration>1215</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6036</guid>\n    <dc:creator>Arjmand Samuel</dc:creator>\n    <category>application+insights</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/1b1e/6b28cec7-f8ad-4422-a9d7-29d7ab571b1e/T6036_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1b1e/6b28cec7-f8ad-4422-a9d7-29d7ab571b1e/T6036_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1b1e/6b28cec7-f8ad-4422-a9d7-29d7ab571b1e/T6036_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1b1e/6b28cec7-f8ad-4422-a9d7-29d7ab571b1e/T6036.mp3\" expression=\"full\" duration=\"1215\" fileSize=\"19448618\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1b1e/6b28cec7-f8ad-4422-a9d7-29d7ab571b1e/T6036.mp4\" expression=\"full\" duration=\"1215\" fileSize=\"23787659\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1b1e/6b28cec7-f8ad-4422-a9d7-29d7ab571b1e/T6036_high.mp4\" expression=\"full\" duration=\"1215\" fileSize=\"104210516\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1b1e/6b28cec7-f8ad-4422-a9d7-29d7ab571b1e/T6036_mid.mp4\" expression=\"full\" duration=\"1215\" fileSize=\"45869650\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6036.mp4\" expression=\"full\" duration=\"1215\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Hidden gems in Microsoft Azure Portal&#160;</title>\n    <description><![CDATA[Deep dive into Azure Portal. Come and experience all the tools and hidden gems that are available to you to easily manage your Azure resources. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:cd92bfc731d246dcbdeea768001c7f0d\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6035</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6035</link>\n    <itunes:summary>Deep dive into Azure Portal. Come and experience all the tools and hidden gems that are available to you to easily manage your Azure resources.</itunes:summary>\n    <itunes:duration>1464</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6035</guid>\n    <dc:creator>Leon Welicki, Rajmohan Rajagopalan</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/73e7/6cc17f5b-98ad-43b8-a550-1fa11b1d73e7/T6035_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/73e7/6cc17f5b-98ad-43b8-a550-1fa11b1d73e7/T6035_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/73e7/6cc17f5b-98ad-43b8-a550-1fa11b1d73e7/T6035_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/73e7/6cc17f5b-98ad-43b8-a550-1fa11b1d73e7/T6035.mp3\" expression=\"full\" duration=\"1464\" fileSize=\"23426250\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/73e7/6cc17f5b-98ad-43b8-a550-1fa11b1d73e7/T6035.mp4\" expression=\"full\" duration=\"1464\" fileSize=\"28730356\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/73e7/6cc17f5b-98ad-43b8-a550-1fa11b1d73e7/T6035_high.mp4\" expression=\"full\" duration=\"1464\" fileSize=\"153478011\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/73e7/6cc17f5b-98ad-43b8-a550-1fa11b1d73e7/T6035_mid.mp4\" expression=\"full\" duration=\"1464\" fileSize=\"58436456\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6035.mp4\" expression=\"full\" duration=\"1464\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Use the power of Video AI in your apps with Video Indexer</title>\n    <description><![CDATA[Got video? We can help you turn your video into insights and transform your business. Join us as we show you are latest video intelligence capabilities. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:0aef4c60fba74c5fb255a768001c7ed4\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6034</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6034</link>\n    <itunes:summary>Got video? We can help you turn your video into insights and transform your business. Join us as we show you are latest video intelligence capabilities.</itunes:summary>\n    <itunes:duration>1051</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6034</guid>\n    <dc:creator>Nagu Rangan</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>cognitive+services</category>\n    <category>bing</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/22b6/ca2581a5-c42a-4afb-9c00-90ac98ff22b6/T6034_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/22b6/ca2581a5-c42a-4afb-9c00-90ac98ff22b6/T6034_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/22b6/ca2581a5-c42a-4afb-9c00-90ac98ff22b6/T6034_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/22b6/ca2581a5-c42a-4afb-9c00-90ac98ff22b6/T6034.mp3\" expression=\"full\" duration=\"1051\" fileSize=\"16820210\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/22b6/ca2581a5-c42a-4afb-9c00-90ac98ff22b6/T6034.mp4\" expression=\"full\" duration=\"1051\" fileSize=\"19351952\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/22b6/ca2581a5-c42a-4afb-9c00-90ac98ff22b6/T6034_high.mp4\" expression=\"full\" duration=\"1051\" fileSize=\"108445611\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/22b6/ca2581a5-c42a-4afb-9c00-90ac98ff22b6/T6034_mid.mp4\" expression=\"full\" duration=\"1051\" fileSize=\"38687085\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6034.mp4\" expression=\"full\" duration=\"1051\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Keeping “wolves” out of your platform</title>\n    <description><![CDATA[Learn how Microsoft’s Content Moderator machine-assisted moderation of text and images, augmented with human review tools can help you discover inappropriate content. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:f1814f042e4a4a23afada768001c7e72\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6033</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6033</link>\n    <itunes:summary>Learn how Microsoft’s Content Moderator machine-assisted moderation of text and images, augmented with human review tools can help you discover inappropriate content.</itunes:summary>\n    <itunes:duration>972</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6033</guid>\n    <dc:creator>Greg Clark</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>cognitive+services</category>\n    <category>machine+learning</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/2d72/6de6eb60-ee0a-4f00-8318-5707d4582d72/T6033_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2d72/6de6eb60-ee0a-4f00-8318-5707d4582d72/T6033_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2d72/6de6eb60-ee0a-4f00-8318-5707d4582d72/T6033_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2d72/6de6eb60-ee0a-4f00-8318-5707d4582d72/T6033.mp3\" expression=\"full\" duration=\"972\" fileSize=\"15554513\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2d72/6de6eb60-ee0a-4f00-8318-5707d4582d72/T6033.mp4\" expression=\"full\" duration=\"972\" fileSize=\"17776727\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2d72/6de6eb60-ee0a-4f00-8318-5707d4582d72/T6033_high.mp4\" expression=\"full\" duration=\"972\" fileSize=\"118929577\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2d72/6de6eb60-ee0a-4f00-8318-5707d4582d72/T6033_mid.mp4\" expression=\"full\" duration=\"972\" fileSize=\"36170981\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6033.mp4\" expression=\"full\" duration=\"972\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Getting started with Aurelia and ASP.NET Core</title>\n    <description><![CDATA[<p>Interested in building a modern JavaScript SPA or progressive web app? Is Microsoft ASP.NET your primary web development platform? You’ll want to be here. In this talk, get a crash course on using Microsoft tools to build a new Aurelia ASP.NET Core app. We start by creating the project from scratch, learn how to use Aurelia core concepts and then run our new app in all its glory.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1efa1dacdb624156ba01a768001c7dea\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6032</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6032</link>\n    <itunes:summary>Interested in building a modern JavaScript SPA or progressive web app? Is Microsoft ASP.NET your primary web development platform? You’ll want to be here. In this talk, get a crash course on using Microsoft tools to build a new Aurelia ASP.NET Core app. We start by creating the project from scratch, learn how to use Aurelia core concepts and then run our new app in all its glory. </itunes:summary>\n    <itunes:duration>1136</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6032</guid>\n    <dc:creator>Rob Eisenberg</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/ff31/e389faa9-fca3-4d29-a623-da69eb64ff31/T6032_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/ff31/e389faa9-fca3-4d29-a623-da69eb64ff31/T6032_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/ff31/e389faa9-fca3-4d29-a623-da69eb64ff31/T6032_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ff31/e389faa9-fca3-4d29-a623-da69eb64ff31/T6032.mp3\" expression=\"full\" duration=\"1136\" fileSize=\"18179658\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ff31/e389faa9-fca3-4d29-a623-da69eb64ff31/T6032.mp4\" expression=\"full\" duration=\"1136\" fileSize=\"19729952\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ff31/e389faa9-fca3-4d29-a623-da69eb64ff31/T6032_high.mp4\" expression=\"full\" duration=\"1136\" fileSize=\"106396318\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/ff31/e389faa9-fca3-4d29-a623-da69eb64ff31/T6032_mid.mp4\" expression=\"full\" duration=\"1136\" fileSize=\"37781889\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6032.mp4\" expression=\"full\" duration=\"1136\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Better, faster, automated! Windows app deployment in Visual Studio Mobile Center</title>\n    <description><![CDATA[Windows developers! Come meet Microsoft’s first-of-its-kind lifecycle solution–now supporting UWP! Learn how Visual Studio Mobile Center streamlines mobile development by bringing together build, testing, distribution, app analytics, and crash notifications in one simple, automated solution. Visual Studio Mobile Center will make developing on the Windows platform easier and faster. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:5a85108c65f247f8904aa768001c7dc5\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6031</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6031</link>\n    <itunes:summary>Windows developers! Come meet Microsoft’s first-of-its-kind lifecycle solution–now supporting UWP! Learn how Visual Studio Mobile Center streamlines mobile development by bringing together build, testing, distribution, app analytics, and crash notifications in one simple, automated solution. Visual Studio Mobile Center will make developing on the Windows platform easier and faster.</itunes:summary>\n    <itunes:duration>1090</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6031</guid>\n    <dc:creator>Ela Malani</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/66b0/3d7db68f-0a1f-417b-abb7-28fa63da66b0/T6031_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/66b0/3d7db68f-0a1f-417b-abb7-28fa63da66b0/T6031_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/66b0/3d7db68f-0a1f-417b-abb7-28fa63da66b0/T6031_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/66b0/3d7db68f-0a1f-417b-abb7-28fa63da66b0/T6031.mp3\" expression=\"full\" duration=\"1090\" fileSize=\"17441994\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/66b0/3d7db68f-0a1f-417b-abb7-28fa63da66b0/T6031.mp4\" expression=\"full\" duration=\"1090\" fileSize=\"18184570\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/66b0/3d7db68f-0a1f-417b-abb7-28fa63da66b0/T6031_high.mp4\" expression=\"full\" duration=\"1090\" fileSize=\"105145123\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/66b0/3d7db68f-0a1f-417b-abb7-28fa63da66b0/T6031_mid.mp4\" expression=\"full\" duration=\"1090\" fileSize=\"35963256\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6031.mp4\" expression=\"full\" duration=\"1090\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Geospatial services and solutions for the logistics sector</title>\n    <description><![CDATA[Bing Maps powers a broad set of solutions across all industries. With a focus on the logistics sector we explore some of the new services and quick start solution launched this week. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:62cb897d67c040a9aba6a768001c7d9a\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6030</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6030</link>\n    <itunes:summary>Bing Maps powers a broad set of solutions across all industries. With a focus on the logistics sector we explore some of the new services and quick start solution launched this week.</itunes:summary>\n    <itunes:duration>1307</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6030</guid>\n    <dc:creator>Johannes Kebeck</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>bing</category>\n    <category>maps</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/35bc/7ff44408-d7a2-4c44-aa77-1dfc465835bc/T6030_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/35bc/7ff44408-d7a2-4c44-aa77-1dfc465835bc/T6030_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/35bc/7ff44408-d7a2-4c44-aa77-1dfc465835bc/T6030_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/35bc/7ff44408-d7a2-4c44-aa77-1dfc465835bc/T6030.mp3\" expression=\"full\" duration=\"1307\" fileSize=\"20922858\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/35bc/7ff44408-d7a2-4c44-aa77-1dfc465835bc/T6030.mp4\" expression=\"full\" duration=\"1307\" fileSize=\"25876195\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/35bc/7ff44408-d7a2-4c44-aa77-1dfc465835bc/T6030_high.mp4\" expression=\"full\" duration=\"1307\" fileSize=\"177499659\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/35bc/7ff44408-d7a2-4c44-aa77-1dfc465835bc/T6030_mid.mp4\" expression=\"full\" duration=\"1307\" fileSize=\"55014977\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6030.mp4\" expression=\"full\" duration=\"1307\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Script Lab, a Microsoft Garage project</title>\n    <description><![CDATA[Create, run, and share your Office Add-in snippets instantly inside Microsoft Word, Excel, and PowerPoint.&nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1e71852a1c9a43f594a1a768001c7d33\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6029</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6029</link>\n    <itunes:summary>Create, run, and share your Office Add-in snippets instantly inside Microsoft Word, Excel, and PowerPoint. </itunes:summary>\n    <itunes:duration>1219</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6029</guid>\n    <dc:creator>Michael Saunders</dc:creator>\n    <category>office</category>\n    <category>office+365</category>\n    <category>office+add-ins</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/4960/a9dc555a-59b2-4c1a-bfa0-0201927e4960/T6029_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4960/a9dc555a-59b2-4c1a-bfa0-0201927e4960/T6029_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4960/a9dc555a-59b2-4c1a-bfa0-0201927e4960/T6029_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4960/a9dc555a-59b2-4c1a-bfa0-0201927e4960/T6029.mp3\" expression=\"full\" duration=\"1219\" fileSize=\"19507394\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4960/a9dc555a-59b2-4c1a-bfa0-0201927e4960/T6029.mp4\" expression=\"full\" duration=\"1219\" fileSize=\"21827733\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4960/a9dc555a-59b2-4c1a-bfa0-0201927e4960/T6029_high.mp4\" expression=\"full\" duration=\"1219\" fileSize=\"104380170\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4960/a9dc555a-59b2-4c1a-bfa0-0201927e4960/T6029_mid.mp4\" expression=\"full\" duration=\"1219\" fileSize=\"42152640\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6029.mp4\" expression=\"full\" duration=\"1219\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Azure Event Hubs: From agile startups to Fortune 500</title>\n    <description><![CDATA[Event Hubs handles close to a trillion events a day encompassing a wide variety of verticals. Find out how Event Hubs handles telemetry data from games, cars, planes, raceways, thermostats, mobile apps, trading platforms, and processes it for insights into the business and customer behaviors. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:8b9465337de448ecb781a768001c7cc7\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6028</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6028</link>\n    <itunes:summary>Event Hubs handles close to a trillion events a day encompassing a wide variety of verticals. Find out how Event Hubs handles telemetry data from games, cars, planes, raceways, thermostats, mobile apps, trading platforms, and processes it for insights into the business and customer behaviors.</itunes:summary>\n    <itunes:duration>1038</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6028</guid>\n    <dc:creator>Justin Conway, Shubha Vijayasarathy</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/421e/7d61fa2f-b5bb-4dd0-b791-45c30769421e/T6028_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/421e/7d61fa2f-b5bb-4dd0-b791-45c30769421e/T6028_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/421e/7d61fa2f-b5bb-4dd0-b791-45c30769421e/T6028_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/421e/7d61fa2f-b5bb-4dd0-b791-45c30769421e/T6028.mp3\" expression=\"full\" duration=\"1038\" fileSize=\"16617546\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/421e/7d61fa2f-b5bb-4dd0-b791-45c30769421e/T6028.mp4\" expression=\"full\" duration=\"1038\" fileSize=\"19803061\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/421e/7d61fa2f-b5bb-4dd0-b791-45c30769421e/T6028_high.mp4\" expression=\"full\" duration=\"1038\" fileSize=\"145972492\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/421e/7d61fa2f-b5bb-4dd0-b791-45c30769421e/T6028_mid.mp4\" expression=\"full\" duration=\"1038\" fileSize=\"41755778\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6028.mp4\" expression=\"full\" duration=\"1038\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Embedded analytics with Microsoft Power BI</title>\n    <description><![CDATA[Business users need data in their applications. Learn how Power BI makes it easy to integrate world-class analytics into your packaged applications, line-of-business applications, and internal or external portals. See how quickly and deeply you can integrate Power BI into your application workflows to unlock the power of the data within your applications. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:ed552758a0334a02b00da768001c7bf0\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6027</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6027</link>\n    <itunes:summary>Business users need data in their applications. Learn how Power BI makes it easy to integrate world-class analytics into your packaged applications, line-of-business applications, and internal or external portals. See how quickly and deeply you can integrate Power BI into your application workflows to unlock the power of the data within your applications.</itunes:summary>\n    <itunes:duration>1178</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6027</guid>\n    <dc:creator>Lukasz Pawlowski, Eyal Carmel</dc:creator>\n    <category>data</category>\n    <category>power+bi</category>\n    <category>data-driven+apps</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/185c/5b32b2b5-6a58-4418-b587-b8ce1b1e185c/T6027_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/185c/5b32b2b5-6a58-4418-b587-b8ce1b1e185c/T6027_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/185c/5b32b2b5-6a58-4418-b587-b8ce1b1e185c/T6027_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/185c/5b32b2b5-6a58-4418-b587-b8ce1b1e185c/T6027.mp3\" expression=\"full\" duration=\"1178\" fileSize=\"18858069\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/185c/5b32b2b5-6a58-4418-b587-b8ce1b1e185c/T6027.mp4\" expression=\"full\" duration=\"1178\" fileSize=\"20857743\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/185c/5b32b2b5-6a58-4418-b587-b8ce1b1e185c/T6027_high.mp4\" expression=\"full\" duration=\"1178\" fileSize=\"183861900\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/185c/5b32b2b5-6a58-4418-b587-b8ce1b1e185c/T6027_mid.mp4\" expression=\"full\" duration=\"1178\" fileSize=\"47447028\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6027.mp4\" expression=\"full\" duration=\"1178\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Time Series insights on your Internet of Things</title>\n    <description><![CDATA[Transform your business using Time Series insights by quickly exploring and analyzing your connected devices. Learn how Azure Time Series insights enables you to store and analyze hundreds of millions of your sensor data near real time with an intuitive user experience that gets you started in minutes. This provides you a real business advantage in reducing the time to investigate and mitigate issues, validate, and optimize your sensors, and improve operational efficiencies. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:3e7179198e2a4fd0bc0ea768001c7b7f\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6026</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6026</link>\n    <itunes:summary>Transform your business using Time Series insights by quickly exploring and analyzing your connected devices. Learn how Azure Time Series insights enables you to store and analyze hundreds of millions of your sensor data near real time with an intuitive user experience that gets you started in minutes. This provides you a real business advantage in reducing the time to investigate and mitigate issues, validate, and optimize your sensors, and improve operational efficiencies.</itunes:summary>\n    <itunes:duration>1255</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6026</guid>\n    <dc:creator>OP Ravi</dc:creator>\n    <category>internet+of+things</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/2336/06771ccf-3f89-4e26-a42b-466c41f02336/T6026_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2336/06771ccf-3f89-4e26-a42b-466c41f02336/T6026_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2336/06771ccf-3f89-4e26-a42b-466c41f02336/T6026_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2336/06771ccf-3f89-4e26-a42b-466c41f02336/T6026.mp3\" expression=\"full\" duration=\"1255\" fileSize=\"20087227\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2336/06771ccf-3f89-4e26-a42b-466c41f02336/T6026.mp4\" expression=\"full\" duration=\"1255\" fileSize=\"24263965\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2336/06771ccf-3f89-4e26-a42b-466c41f02336/T6026_high.mp4\" expression=\"full\" duration=\"1255\" fileSize=\"173529738\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2336/06771ccf-3f89-4e26-a42b-466c41f02336/T6026_mid.mp4\" expression=\"full\" duration=\"1255\" fileSize=\"50106478\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6026.mp4\" expression=\"full\" duration=\"1255\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Design Patterns for SaaS applications on Azure SQL Database</title>\n    <description><![CDATA[Experience the power of building multi-tenant SaaS applications on Azure SQL Database, Microsoft’s fully managed database as a service platform: Using a sample SaaS application, we walk through a series of SaaS-focused design and management patterns that have been distilled from work with a multitude of customers. Patterns spans from multi-tenant provisioning, schema management, performance monitoring and management to operational analytics. The code for the sample application, plus management scripts, ARM templates and tutorials, will be available for download in an easy-to-explore “SaaS-in-a-Box” package, enabling you to jump-start your own SaaS application. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1ae6daedf6f1409784bda768001c7b22\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6025</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6025</link>\n    <itunes:summary>Experience the power of building multi-tenant SaaS applications on Azure SQL Database, Microsoft’s fully managed database as a service platform: Using a sample SaaS application, we walk through a series of SaaS-focused design and management patterns that have been distilled from work with a multitude of customers. Patterns spans from multi-tenant provisioning, schema management, performance monitoring and management to operational analytics. The code for the sample application, plus management scripts, ARM templates and tutorials, will be available for download in an easy-to-explore “SaaS-in-a-Box” package, enabling you to jump-start your own SaaS application.</itunes:summary>\n    <itunes:duration>1404</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6025</guid>\n    <dc:creator>Julie Strauss, Bill Gibson</dc:creator>\n    <category>azure+sql+database</category>\n    <category>data</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/0ac8/a5f72f1a-4d49-4971-ae13-6e1cce4f0ac8/T6025_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0ac8/a5f72f1a-4d49-4971-ae13-6e1cce4f0ac8/T6025_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/0ac8/a5f72f1a-4d49-4971-ae13-6e1cce4f0ac8/T6025_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0ac8/a5f72f1a-4d49-4971-ae13-6e1cce4f0ac8/T6025.mp3\" expression=\"full\" duration=\"1404\" fileSize=\"22468844\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0ac8/a5f72f1a-4d49-4971-ae13-6e1cce4f0ac8/T6025.mp4\" expression=\"full\" duration=\"1404\" fileSize=\"26134957\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0ac8/a5f72f1a-4d49-4971-ae13-6e1cce4f0ac8/T6025_high.mp4\" expression=\"full\" duration=\"1404\" fileSize=\"135417750\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0ac8/a5f72f1a-4d49-4971-ae13-6e1cce4f0ac8/T6025_mid.mp4\" expression=\"full\" duration=\"1404\" fileSize=\"51898002\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6025.mp4\" expression=\"full\" duration=\"1404\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Deploy, manage, and customize with SharePoint Patterns and Practices tools and guidance</title>\n    <description><![CDATA[The SharePoint Patterns and Practices team has built a suite of open-source tools used by hundreds of companies. Come find out how to super-charge your SharePoint development with tools, frameworks, and more. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:cda0e8268fc6464c8c0ca768001c7ac4\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6024</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6024</link>\n    <itunes:summary>The SharePoint Patterns and Practices team has built a suite of open-source tools used by hundreds of companies. Come find out how to super-charge your SharePoint development with tools, frameworks, and more.</itunes:summary>\n    <itunes:duration>1370</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6024</guid>\n    <dc:creator>Vesa Juvonen</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/cde0/3e40b023-ebf9-4d5a-8716-c5aa153dcde0/T6024_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/cde0/3e40b023-ebf9-4d5a-8716-c5aa153dcde0/T6024_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/cde0/3e40b023-ebf9-4d5a-8716-c5aa153dcde0/T6024_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cde0/3e40b023-ebf9-4d5a-8716-c5aa153dcde0/T6024.mp3\" expression=\"full\" duration=\"1370\" fileSize=\"21928650\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cde0/3e40b023-ebf9-4d5a-8716-c5aa153dcde0/T6024.mp4\" expression=\"full\" duration=\"1370\" fileSize=\"29521071\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cde0/3e40b023-ebf9-4d5a-8716-c5aa153dcde0/T6024_high.mp4\" expression=\"full\" duration=\"1370\" fileSize=\"266378498\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/cde0/3e40b023-ebf9-4d5a-8716-c5aa153dcde0/T6024_mid.mp4\" expression=\"full\" duration=\"1370\" fileSize=\"65853140\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6024.mp4\" expression=\"full\" duration=\"1370\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Don’t let data slow down your application: Learn about Azure Analysis Services</title>\n    <description><![CDATA[Is your application running slow because the data queries take a long time to return the data? Make your application come back to life by showcasing your data in a powerful way with the help of Azure Analysis Services. Provide your customers with quick access to their data and blazing fast query speeds. This new service enables creation of large in-memory data models enabling your application's users fast interactive querying over easy to understand data. Join us for this tech talk to see how simple it is to use Azure Analysis Services with your own application! <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1aad5adf5fa144248506a768001c7a95\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6023</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6023</link>\n    <itunes:summary>Is your application running slow because the data queries take a long time to return the data? Make your application come back to life by showcasing your data in a powerful way with the help of Azure Analysis Services. Provide your customers with quick access to their data and blazing fast query speeds. This new service enables creation of large in-memory data models enabling your application&#39;s users fast interactive querying over easy to understand data. Join us for this tech talk to see how simple it is to use Azure Analysis Services with your own application!</itunes:summary>\n    <itunes:duration>1263</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6023</guid>\n    <dc:creator>Josh Caplan</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/f31c/7e107aac-68ff-4ad1-b1e5-573eb547f31c/T6023_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f31c/7e107aac-68ff-4ad1-b1e5-573eb547f31c/T6023_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f31c/7e107aac-68ff-4ad1-b1e5-573eb547f31c/T6023_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f31c/7e107aac-68ff-4ad1-b1e5-573eb547f31c/T6023.mp3\" expression=\"full\" duration=\"1263\" fileSize=\"20214858\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f31c/7e107aac-68ff-4ad1-b1e5-573eb547f31c/T6023.mp4\" expression=\"full\" duration=\"1263\" fileSize=\"23378454\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f31c/7e107aac-68ff-4ad1-b1e5-573eb547f31c/T6023_high.mp4\" expression=\"full\" duration=\"1263\" fileSize=\"156034062\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f31c/7e107aac-68ff-4ad1-b1e5-573eb547f31c/T6023_mid.mp4\" expression=\"full\" duration=\"1263\" fileSize=\"47603596\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6023.mp4\" expression=\"full\" duration=\"1263\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Custom Vision from Cognitive Services: easily build a custom image classifier</title>\n    <description><![CDATA[Custom Vision is a tool for easily building an image classifier to recognize content you care about. In a few minutes, you can train a classifier and deploy it to an API endpoint. Using suggestions from the software, it is easy to improve the quality of your classifier. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:a3528a1b88874d13a44fa768001c7a6b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6022</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6022</link>\n    <itunes:summary>Custom Vision is a tool for easily building an image classifier to recognize content you care about. In a few minutes, you can train a classifier and deploy it to an API endpoint. Using suggestions from the software, it is easy to improve the quality of your classifier.</itunes:summary>\n    <itunes:duration>924</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6022</guid>\n    <dc:creator>Anna Roth, Chris Sienkiewicz</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>cognitive+services</category>\n    <category>machine+learning</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/a3f0/3e54fc7a-ebb3-412f-ac65-92ff06cca3f0/T6022_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a3f0/3e54fc7a-ebb3-412f-ac65-92ff06cca3f0/T6022_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/a3f0/3e54fc7a-ebb3-412f-ac65-92ff06cca3f0/T6022_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a3f0/3e54fc7a-ebb3-412f-ac65-92ff06cca3f0/T6022.mp3\" expression=\"full\" duration=\"924\" fileSize=\"14788919\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a3f0/3e54fc7a-ebb3-412f-ac65-92ff06cca3f0/T6022.mp4\" expression=\"full\" duration=\"924\" fileSize=\"16500145\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a3f0/3e54fc7a-ebb3-412f-ac65-92ff06cca3f0/T6022_high.mp4\" expression=\"full\" duration=\"924\" fileSize=\"85651033\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a3f0/3e54fc7a-ebb3-412f-ac65-92ff06cca3f0/T6022_mid.mp4\" expression=\"full\" duration=\"924\" fileSize=\"33088840\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6022.mp4\" expression=\"full\" duration=\"924\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Use Bing and Microsoft Cognitive Services to create unique domain and site search</title>\n    <description><![CDATA[In this session we discuss how you can use Bing and Cognitive Services to enhance your domain and site-specific solutions to best benefit your enterprise. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:29cdaa6868814e838b32a768001c79d0\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6021</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6021</link>\n    <itunes:summary>In this session we discuss how you can use Bing and Cognitive Services to enhance your domain and site-specific solutions to best benefit your enterprise.</itunes:summary>\n    <itunes:duration>932</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6021</guid>\n    <dc:creator>David Simpson (POWERSET)</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>cognitive+services</category>\n    <category>bing</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/d639/f3584d93-6481-4476-8d92-0ba8dc19d639/T6021_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/d639/f3584d93-6481-4476-8d92-0ba8dc19d639/T6021_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/d639/f3584d93-6481-4476-8d92-0ba8dc19d639/T6021_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d639/f3584d93-6481-4476-8d92-0ba8dc19d639/T6021.mp3\" expression=\"full\" duration=\"932\" fileSize=\"14914095\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d639/f3584d93-6481-4476-8d92-0ba8dc19d639/T6021.mp4\" expression=\"full\" duration=\"932\" fileSize=\"17144732\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d639/f3584d93-6481-4476-8d92-0ba8dc19d639/T6021_high.mp4\" expression=\"full\" duration=\"932\" fileSize=\"86146024\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d639/f3584d93-6481-4476-8d92-0ba8dc19d639/T6021_mid.mp4\" expression=\"full\" duration=\"932\" fileSize=\"33529477\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6021.mp4\" expression=\"full\" duration=\"932\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Microsoft Teams Developer Tool Integrations</title>\n    <description><![CDATA[Learn how the development tools you use every day can be integrated with Microsoft Teams to make it easier to collaborate with your co-workers. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:3c93bf0de5ad47b09666a768001c793f\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6020</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6020</link>\n    <itunes:summary>Learn how the development tools you use every day can be integrated with Microsoft Teams to make it easier to collaborate with your co-workers.</itunes:summary>\n    <itunes:duration>730</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6020</guid>\n    <dc:creator>Bill Bliss, Mansoor Malik</dc:creator>\n    <category>office</category>\n    <category>office+365</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/36a7/bcb2cc82-89e4-434e-8fdc-5f8ede9c36a7/T6020_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/36a7/bcb2cc82-89e4-434e-8fdc-5f8ede9c36a7/T6020_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/36a7/bcb2cc82-89e4-434e-8fdc-5f8ede9c36a7/T6020_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/36a7/bcb2cc82-89e4-434e-8fdc-5f8ede9c36a7/T6020.mp3\" expression=\"full\" duration=\"730\" fileSize=\"11680709\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/36a7/bcb2cc82-89e4-434e-8fdc-5f8ede9c36a7/T6020.mp4\" expression=\"full\" duration=\"730\" fileSize=\"13504081\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/36a7/bcb2cc82-89e4-434e-8fdc-5f8ede9c36a7/T6020_high.mp4\" expression=\"full\" duration=\"730\" fileSize=\"102024454\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/36a7/bcb2cc82-89e4-434e-8fdc-5f8ede9c36a7/T6020_mid.mp4\" expression=\"full\" duration=\"730\" fileSize=\"28219011\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6020.mp4\" expression=\"full\" duration=\"730\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Building and distributing solutions built on Microsoft PowerApps, Flow, and CDS</title>\n    <description><![CDATA[Join this session to learn how easy it is to build rich applications with PowerApps without writing code, quickly automate workflows with Microsoft Flow, and learn how to leverage the Common Data Service to unite your organization’s information from across Microsoft Dynamics, Office, and beyond in a common model and easy extensibility point. No slides for this session, instead we’ll walk through building an end-to-end solution with PowerApps, Microsoft Flow, and the Common Data Service. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:41a3e8b8b26944088a5ca768001c788d\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6018</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6018</link>\n    <itunes:summary>Join this session to learn how easy it is to build rich applications with PowerApps without writing code, quickly automate workflows with Microsoft Flow, and learn how to leverage the Common Data Service to unite your organization’s information from across Microsoft Dynamics, Office, and beyond in a common model and easy extensibility point. No slides for this session, instead we’ll walk through building an end-to-end solution with PowerApps, Microsoft Flow, and the Common Data Service.</itunes:summary>\n    <itunes:duration>1300</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6018</guid>\n    <dc:creator>James Oleinik</dc:creator>\n    <category>application+lifecycle+management</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/3654/645cc80b-b0ee-4816-8e24-dc72467e3654/T6018_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3654/645cc80b-b0ee-4816-8e24-dc72467e3654/T6018_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3654/645cc80b-b0ee-4816-8e24-dc72467e3654/T6018_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3654/645cc80b-b0ee-4816-8e24-dc72467e3654/T6018.mp3\" expression=\"full\" duration=\"1300\" fileSize=\"20811535\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3654/645cc80b-b0ee-4816-8e24-dc72467e3654/T6018.mp4\" expression=\"full\" duration=\"1300\" fileSize=\"23932914\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3654/645cc80b-b0ee-4816-8e24-dc72467e3654/T6018_high.mp4\" expression=\"full\" duration=\"1300\" fileSize=\"148182727\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3654/645cc80b-b0ee-4816-8e24-dc72467e3654/T6018_mid.mp4\" expression=\"full\" duration=\"1300\" fileSize=\"47417230\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6018.mp4\" expression=\"full\" duration=\"1300\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Tap into the YARN ecosystem using Azure HDInsight</title>\n    <description><![CDATA[The ecosystem of YARN applications has exploded with a diverse range of distributed big data tools and engines. The strength of this ecosystem is one of the primary drivers behind the health of Hadoop/YARN. HDInsight is a fully managed distribution of Apache Hadoop that features a number of YARN applications as first class workloads (Hive, HBase, Spark, Storm, Kafka and Interactive Hive), but many of the popular YARN applications are either difficult or impossible to install. Additionally, once an application is installed, system administrators expect it to be managed and monitored through a common interface rather than a special case. In this session, the Apache Ambari HDInsight framework will be presented with real-world examples of YARN applications that may be deployed directly onto the cluster and managed through the shared Ambari web interface. We’ll show how these applications can be configured, monitored and managed to be resilient to node failures and become truly elastic as the cluster is scaled. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:0921cb89f43d49e4a495a768001c784b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6017</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6017</link>\n    <itunes:summary>The ecosystem of YARN applications has exploded with a diverse range of distributed big data tools and engines. The strength of this ecosystem is one of the primary drivers behind the health of Hadoop/YARN. HDInsight is a fully managed distribution of Apache Hadoop that features a number of YARN applications as first class workloads (Hive, HBase, Spark, Storm, Kafka and Interactive Hive), but many of the popular YARN applications are either difficult or impossible to install. Additionally, once an application is installed, system administrators expect it to be managed and monitored through a common interface rather than a special case. In this session, the Apache Ambari HDInsight framework will be presented with real-world examples of YARN applications that may be deployed directly onto the cluster and managed through the shared Ambari web interface. We’ll show how these applications can be configured, monitored and managed to be resilient to node failures and become truly elastic as the cluster is scaled.</itunes:summary>\n    <itunes:duration>1434</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6017</guid>\n    <dc:creator>James Baker (DPE)</dc:creator>\n    <category>hdinsight</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/3173/898aaa22-b47e-4581-9266-b20abf833173/T6017_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3173/898aaa22-b47e-4581-9266-b20abf833173/T6017_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3173/898aaa22-b47e-4581-9266-b20abf833173/T6017_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3173/898aaa22-b47e-4581-9266-b20abf833173/T6017.mp3\" expression=\"full\" duration=\"1434\" fileSize=\"22954944\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3173/898aaa22-b47e-4581-9266-b20abf833173/T6017.mp4\" expression=\"full\" duration=\"1434\" fileSize=\"26525023\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3173/898aaa22-b47e-4581-9266-b20abf833173/T6017_high.mp4\" expression=\"full\" duration=\"1434\" fileSize=\"117622760\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3173/898aaa22-b47e-4581-9266-b20abf833173/T6017_mid.mp4\" expression=\"full\" duration=\"1434\" fileSize=\"52016509\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6017.mp4\" expression=\"full\" duration=\"1434\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Building a mobile development pipeline</title>\n    <description><![CDATA[Create a fully-tested, installable app package automatically with every commit or push. With no manual configuration on your part and without having to provision any agents (even for iOS apps), Visual Studio Mobile Center will compile mobile apps right from the source code and automatically run UI tests so you can have complete confidence in your app and get back to coding. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:d6a2730868954c41a5d4a768001c77e4\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6016</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6016</link>\n    <itunes:summary>Create a fully-tested, installable app package automatically with every commit or push. With no manual configuration on your part and without having to provision any agents (even for iOS apps), Visual Studio Mobile Center will compile mobile apps right from the source code and automatically run UI tests so you can have complete confidence in your app and get back to coding.</itunes:summary>\n    <itunes:duration>1151</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6016</guid>\n    <dc:creator>Piyush Joshi</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/4810/490aa043-9d65-4fea-a957-be5062854810/T6016_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4810/490aa043-9d65-4fea-a957-be5062854810/T6016_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/4810/490aa043-9d65-4fea-a957-be5062854810/T6016_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4810/490aa043-9d65-4fea-a957-be5062854810/T6016.mp3\" expression=\"full\" duration=\"1151\" fileSize=\"18417354\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4810/490aa043-9d65-4fea-a957-be5062854810/T6016.mp4\" expression=\"full\" duration=\"1151\" fileSize=\"19725328\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4810/490aa043-9d65-4fea-a957-be5062854810/T6016_high.mp4\" expression=\"full\" duration=\"1151\" fileSize=\"118506734\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4810/490aa043-9d65-4fea-a957-be5062854810/T6016_mid.mp4\" expression=\"full\" duration=\"1151\" fileSize=\"39341285\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6016.mp4\" expression=\"full\" duration=\"1151\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Building a Better Bot: How Pullstring built the Doctor Who Bot</title>\n    <description><![CDATA[Pullstring offers a deep conversational understanding platform that can be used to build Bots.&nbsp; Come find how Pullstring built bots that integrate with Skype and beyond. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:d1a0da745bc94c4c9c89a768001c77b5\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6015</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6015</link>\n    <itunes:summary>Pullstring offers a deep conversational understanding platform that can be used to build Bots.  Come find how Pullstring built bots that integrate with Skype and beyond.</itunes:summary>\n    <itunes:duration>866</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6015</guid>\n    <dc:creator>Scott Ganz</dc:creator>\n    <category>office</category>\n    <category>office+365</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/089b/c5fc5bd2-b0a4-4fb6-a84f-ee1ca032089b/T6015_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/089b/c5fc5bd2-b0a4-4fb6-a84f-ee1ca032089b/T6015_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/089b/c5fc5bd2-b0a4-4fb6-a84f-ee1ca032089b/T6015_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/089b/c5fc5bd2-b0a4-4fb6-a84f-ee1ca032089b/T6015.mp3\" expression=\"full\" duration=\"866\" fileSize=\"13869916\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/089b/c5fc5bd2-b0a4-4fb6-a84f-ee1ca032089b/T6015.mp4\" expression=\"full\" duration=\"866\" fileSize=\"16805326\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/089b/c5fc5bd2-b0a4-4fb6-a84f-ee1ca032089b/T6015_high.mp4\" expression=\"full\" duration=\"866\" fileSize=\"201800333\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/089b/c5fc5bd2-b0a4-4fb6-a84f-ee1ca032089b/T6015_mid.mp4\" expression=\"full\" duration=\"866\" fileSize=\"37739321\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6015.mp4\" expression=\"full\" duration=\"866\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Dun &amp; Bradstreet powers data driven insight in Microsoft Teams and Excel</title>\n    <description><![CDATA[Learn how D&amp;B is empowering business-critical decisions by making information on more than 270M businesses available in Microsoft Teams, and through the D&amp;B Business Solutions app in Excel. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:f1761aecf8dc4e47ac99a768001c7740\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6014</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6014</link>\n    <itunes:summary>Learn how D&amp;amp;B is empowering business-critical decisions by making information on more than 270M businesses available in Microsoft Teams, and through the D&amp;amp;B Business Solutions app in Excel.</itunes:summary>\n    <itunes:duration>780</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6014</guid>\n    <dc:creator>Chris Pardo</dc:creator>\n    <category>office</category>\n    <category>office+365</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/d570/a0e58228-e87b-4e55-a944-73ae8b28d570/T6014_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/d570/a0e58228-e87b-4e55-a944-73ae8b28d570/T6014_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/d570/a0e58228-e87b-4e55-a944-73ae8b28d570/T6014_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d570/a0e58228-e87b-4e55-a944-73ae8b28d570/T6014.mp3\" expression=\"full\" duration=\"780\" fileSize=\"12495985\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d570/a0e58228-e87b-4e55-a944-73ae8b28d570/T6014.mp4\" expression=\"full\" duration=\"780\" fileSize=\"14599658\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d570/a0e58228-e87b-4e55-a944-73ae8b28d570/T6014_high.mp4\" expression=\"full\" duration=\"780\" fileSize=\"75694626\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/d570/a0e58228-e87b-4e55-a944-73ae8b28d570/T6014_mid.mp4\" expression=\"full\" duration=\"780\" fileSize=\"28955748\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6014.mp4\" expression=\"full\" duration=\"780\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Deep Dive: Office Add-in Single Sign On</title>\n    <description><![CDATA[Ask Office anything about the new single-sign on flow for Add-ins.&nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:4dc3124d11914405b409a768001c7684\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6013</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6013</link>\n    <itunes:summary>Ask Office anything about the new single-sign on flow for Add-ins. </itunes:summary>\n    <itunes:duration>1363</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6013</guid>\n    <dc:creator>Tim McConnell</dc:creator>\n    <category>office</category>\n    <category>office+365</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/fab8/e4c673bc-6543-4cfa-87b6-6a904868fab8/T6013_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/fab8/e4c673bc-6543-4cfa-87b6-6a904868fab8/T6013_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/fab8/e4c673bc-6543-4cfa-87b6-6a904868fab8/T6013_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/fab8/e4c673bc-6543-4cfa-87b6-6a904868fab8/T6013.mp3\" expression=\"full\" duration=\"1363\" fileSize=\"21819825\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/fab8/e4c673bc-6543-4cfa-87b6-6a904868fab8/T6013.mp4\" expression=\"full\" duration=\"1363\" fileSize=\"35002653\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/fab8/e4c673bc-6543-4cfa-87b6-6a904868fab8/T6013_high.mp4\" expression=\"full\" duration=\"1363\" fileSize=\"313707354\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/fab8/e4c673bc-6543-4cfa-87b6-6a904868fab8/T6013_mid.mp4\" expression=\"full\" duration=\"1363\" fileSize=\"99466393\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6013.mp4\" expression=\"full\" duration=\"1363\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Azure Commandline Interface: Power of automation scripts in a truly cross-platform way</title>\n    <description><![CDATA[Azure CLI 2.0 is Azure’s new idiomatic command line interface for managing Azure resources that integrates natively with Bash and POSIX tools. It is easy to install, use and learn. It can be used on macOS, Linux, and Windows. Come and learn how to use Azure CLI 2.0 in automation and interactive modes and discover the power of simple but powerful commands with smart defaults for most common operations. You will also learn useful productivity features like pipe-able outputs, use of JMESpath queries and options for multiple output formats etc. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:9c76b78e677f4c9ab736a768001c7630\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6011</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6011</link>\n    <itunes:summary>Azure CLI 2.0 is Azure’s new idiomatic command line interface for managing Azure resources that integrates natively with Bash and POSIX tools. It is easy to install, use and learn. It can be used on macOS, Linux, and Windows. Come and learn how to use Azure CLI 2.0 in automation and interactive modes and discover the power of simple but powerful commands with smart defaults for most common operations. You will also learn useful productivity features like pipe-able outputs, use of JMESpath queries and options for multiple output formats etc.</itunes:summary>\n    <itunes:duration>1543</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6011</guid>\n    <dc:creator>Kamaljit Bath</dc:creator>\n    <category>azure</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/6917/83fc1ae1-e265-49be-8332-86a30efd6917/T6011_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/6917/83fc1ae1-e265-49be-8332-86a30efd6917/T6011_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/6917/83fc1ae1-e265-49be-8332-86a30efd6917/T6011_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6917/83fc1ae1-e265-49be-8332-86a30efd6917/T6011.mp3\" expression=\"full\" duration=\"1543\" fileSize=\"24692226\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6917/83fc1ae1-e265-49be-8332-86a30efd6917/T6011.mp4\" expression=\"full\" duration=\"1543\" fileSize=\"29280930\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6917/83fc1ae1-e265-49be-8332-86a30efd6917/T6011_high.mp4\" expression=\"full\" duration=\"1543\" fileSize=\"163452430\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6917/83fc1ae1-e265-49be-8332-86a30efd6917/T6011_mid.mp4\" expression=\"full\" duration=\"1543\" fileSize=\"59159962\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6011.mp4\" expression=\"full\" duration=\"1543\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Building scalable IoT solutions on Microsoft Azure</title>\n    <description><![CDATA[In this session, learn how to sort through the variables and decisions involved with designing a scalable IoT solution. Learn the tips and tricks to keep in mind as you scale the system across more devices, more countries, and more business scenarios. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:ec3da4200550482783f3a768001c75e0\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6010</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6010</link>\n    <itunes:summary>In this session, learn how to sort through the variables and decisions involved with designing a scalable IoT solution. Learn the tips and tricks to keep in mind as you scale the system across more devices, more countries, and more business scenarios.</itunes:summary>\n    <itunes:duration>1235</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6010</guid>\n    <dc:creator>Nicole Berdy</dc:creator>\n    <category>internet+of+things</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/62d4/8a426079-ef76-4f49-a486-0e8dbd6e62d4/T6010_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/62d4/8a426079-ef76-4f49-a486-0e8dbd6e62d4/T6010_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/62d4/8a426079-ef76-4f49-a486-0e8dbd6e62d4/T6010_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/62d4/8a426079-ef76-4f49-a486-0e8dbd6e62d4/T6010.mp3\" expression=\"full\" duration=\"1235\" fileSize=\"19768134\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/62d4/8a426079-ef76-4f49-a486-0e8dbd6e62d4/T6010.mp4\" expression=\"full\" duration=\"1235\" fileSize=\"20711651\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/62d4/8a426079-ef76-4f49-a486-0e8dbd6e62d4/T6010_high.mp4\" expression=\"full\" duration=\"1235\" fileSize=\"140493920\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/62d4/8a426079-ef76-4f49-a486-0e8dbd6e62d4/T6010_mid.mp4\" expression=\"full\" duration=\"1235\" fileSize=\"42274179\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6010.mp4\" expression=\"full\" duration=\"1235\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>ASP.NET Web Forms updates</title>\n    <description><![CDATA[Web Forms is still being worked on with new features being added. Learn about the new JavaScript features, Dependency Injection capabilities, and new cache providers that you can use with your application. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:c1627d29144744d4af50a768001c75b1\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6009</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6009</link>\n    <itunes:summary>Web Forms is still being worked on with new features being added. Learn about the new JavaScript features, Dependency Injection capabilities, and new cache providers that you can use with your application.</itunes:summary>\n    <itunes:duration>1128</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6009</guid>\n    <dc:creator>Jeff Fritz</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/b915/24a615db-2eac-4e72-94c2-b5ae96a6b915/T6009_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/b915/24a615db-2eac-4e72-94c2-b5ae96a6b915/T6009_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/b915/24a615db-2eac-4e72-94c2-b5ae96a6b915/T6009_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b915/24a615db-2eac-4e72-94c2-b5ae96a6b915/T6009.mp3\" expression=\"full\" duration=\"1128\" fileSize=\"18052554\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b915/24a615db-2eac-4e72-94c2-b5ae96a6b915/T6009.mp4\" expression=\"full\" duration=\"1128\" fileSize=\"21278423\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b915/24a615db-2eac-4e72-94c2-b5ae96a6b915/T6009_high.mp4\" expression=\"full\" duration=\"1128\" fileSize=\"156306223\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b915/24a615db-2eac-4e72-94c2-b5ae96a6b915/T6009_mid.mp4\" expression=\"full\" duration=\"1128\" fileSize=\"44173450\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6009.mp4\" expression=\"full\" duration=\"1128\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Application Insights for developers: Integrating with your DevOps workflows&#160;</title>\n    <description><![CDATA[See the latest innovations in the developer experience for Application Insights. These integrations range from great new capabilities in Visual Studio and Visual Studio Code, to integrations with Visual Studio Team Services, and GitHub to improve a complete application lifecycle management story; to a data access REST API which enables you to build your own solutions on top of your Application Insights data. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:7f8e4f3b8fa94e19bdd3a768001c7587\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6008</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6008</link>\n    <itunes:summary>See the latest innovations in the developer experience for Application Insights. These integrations range from great new capabilities in Visual Studio and Visual Studio Code, to integrations with Visual Studio Team Services, and GitHub to improve a complete application lifecycle management story; to a data access REST API which enables you to build your own solutions on top of your Application Insights data.</itunes:summary>\n    <itunes:duration>824</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6008</guid>\n    <dc:creator>David Stephens, Bo-ying Fu</dc:creator>\n    <category>devops</category>\n    <category>application+insights</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/45cf/edc8c3a1-36f8-4fb0-8873-250dafe545cf/T6008_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/45cf/edc8c3a1-36f8-4fb0-8873-250dafe545cf/T6008_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/45cf/edc8c3a1-36f8-4fb0-8873-250dafe545cf/T6008_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/45cf/edc8c3a1-36f8-4fb0-8873-250dafe545cf/T6008.mp3\" expression=\"full\" duration=\"824\" fileSize=\"13197204\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/45cf/edc8c3a1-36f8-4fb0-8873-250dafe545cf/T6008.mp4\" expression=\"full\" duration=\"824\" fileSize=\"15880198\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/45cf/edc8c3a1-36f8-4fb0-8873-250dafe545cf/T6008_high.mp4\" expression=\"full\" duration=\"824\" fileSize=\"81591072\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/45cf/edc8c3a1-36f8-4fb0-8873-250dafe545cf/T6008_mid.mp4\" expression=\"full\" duration=\"824\" fileSize=\"31905992\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6008.mp4\" expression=\"full\" duration=\"824\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Angular and TypeScript</title>\n    <description><![CDATA[In this session, learn why the Angular team uses Typescript to develop at scale inside Google, and how Typescript and Angular work together to provide a powerful platform for developers and great experiences for their users. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:3097dde2558c4b85a7f4a768001c7520\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6006-R2</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6006-R2</link>\n    <itunes:summary>In this session, learn why the Angular team uses Typescript to develop at scale inside Google, and how Typescript and Angular work together to provide a powerful platform for developers and great experiences for their users.</itunes:summary>\n    <itunes:duration>1280</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6006-R2</guid>\n    <dc:creator>Rob Wormald</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/f937/f77f9da7-4bea-4027-a2b0-8ce0dab4f937/T6006-R2_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f937/f77f9da7-4bea-4027-a2b0-8ce0dab4f937/T6006-R2_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f937/f77f9da7-4bea-4027-a2b0-8ce0dab4f937/T6006-R2_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f937/f77f9da7-4bea-4027-a2b0-8ce0dab4f937/T6006-R2.mp3\" expression=\"full\" duration=\"1280\" fileSize=\"20483274\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f937/f77f9da7-4bea-4027-a2b0-8ce0dab4f937/T6006-R2.mp4\" expression=\"full\" duration=\"1280\" fileSize=\"25988738\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f937/f77f9da7-4bea-4027-a2b0-8ce0dab4f937/T6006-R2_high.mp4\" expression=\"full\" duration=\"1280\" fileSize=\"164244715\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f937/f77f9da7-4bea-4027-a2b0-8ce0dab4f937/T6006-R2_mid.mp4\" expression=\"full\" duration=\"1280\" fileSize=\"56176617\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6006-R2.mp4\" expression=\"full\" duration=\"1280\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Angular and TypeScript</title>\n    <description><![CDATA[In this session, learn why the Angular team uses Typescript to develop at scale inside Google, and how Typescript and Angular work together to provide a powerful platform for your developers and great experiences for your users. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:5e7d07033fbe4eb38d8ba768001c74d0\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6006-R1</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6006-R1</link>\n    <itunes:summary>In this session, learn why the Angular team uses Typescript to develop at scale inside Google, and how Typescript and Angular work together to provide a powerful platform for your developers and great experiences for your users.</itunes:summary>\n    <itunes:duration>1243</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6006-R1</guid>\n    <dc:creator>Rob Wormald</dc:creator>\n    <category>typescript</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/2fd2/977b19ab-0e6d-4a1f-941d-46cec3d82fd2/T6006-R1_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2fd2/977b19ab-0e6d-4a1f-941d-46cec3d82fd2/T6006-R1_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/2fd2/977b19ab-0e6d-4a1f-941d-46cec3d82fd2/T6006-R1_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2fd2/977b19ab-0e6d-4a1f-941d-46cec3d82fd2/T6006-R1.mp3\" expression=\"full\" duration=\"1243\" fileSize=\"19902085\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2fd2/977b19ab-0e6d-4a1f-941d-46cec3d82fd2/T6006-R1.mp4\" expression=\"full\" duration=\"1243\" fileSize=\"22597546\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2fd2/977b19ab-0e6d-4a1f-941d-46cec3d82fd2/T6006-R1_high.mp4\" expression=\"full\" duration=\"1243\" fileSize=\"120682486\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2fd2/977b19ab-0e6d-4a1f-941d-46cec3d82fd2/T6006-R1_mid.mp4\" expression=\"full\" duration=\"1243\" fileSize=\"44564585\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6006-R1.mp4\" expression=\"full\" duration=\"1243\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Agile planning with Visual Studio Team Services (VSTS)</title>\n    <description><![CDATA[Coming Soon. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:3c54271903bf4cdfbbb1a768001c7464\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6005</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6005</link>\n    <itunes:summary>Coming Soon.</itunes:summary>\n    <itunes:duration>1165</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6005</guid>\n    <dc:creator>Jose Rady Allende</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/07f2/2dde5853-4808-47ae-9ad3-5c03f52807f2/T6005_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/07f2/2dde5853-4808-47ae-9ad3-5c03f52807f2/T6005_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/07f2/2dde5853-4808-47ae-9ad3-5c03f52807f2/T6005_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/07f2/2dde5853-4808-47ae-9ad3-5c03f52807f2/T6005.mp3\" expression=\"full\" duration=\"1165\" fileSize=\"18644682\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/07f2/2dde5853-4808-47ae-9ad3-5c03f52807f2/T6005.mp4\" expression=\"full\" duration=\"1165\" fileSize=\"21276550\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/07f2/2dde5853-4808-47ae-9ad3-5c03f52807f2/T6005_high.mp4\" expression=\"full\" duration=\"1165\" fileSize=\"276196900\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/07f2/2dde5853-4808-47ae-9ad3-5c03f52807f2/T6005_mid.mp4\" expression=\"full\" duration=\"1165\" fileSize=\"56472258\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6005.mp4\" expression=\"full\" duration=\"1165\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Accelerate setting up your DevOps environment using Azure Marketplace&#160;</title>\n    <description><![CDATA[Lean how you can set up Chef, Jenkins, and other popular dev tools on Microsoft Azure using the Azure Marketplace. We also walk you through exciting new features such as Test Drive, an easy way to try out Marketplace products and introduce Quick Start templates as a way to stand up full dev stacks. &nbsp;&nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:788fb2af513a4db1be0da768001c7415\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6004</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6004</link>\n    <itunes:summary>Lean how you can set up Chef, Jenkins, and other popular dev tools on Microsoft Azure using the Azure Marketplace. We also walk you through exciting new features such as Test Drive, an easy way to try out Marketplace products and introduce Quick Start templates as a way to stand up full dev stacks.   </itunes:summary>\n    <itunes:duration>1181</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6004</guid>\n    <dc:creator>Vybava Ramadoss</dc:creator>\n    <category>devops</category>\n    <category>azure+marketplace</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/f79a/93953fab-83c7-47ca-a3aa-17ca77b8f79a/T6004_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f79a/93953fab-83c7-47ca-a3aa-17ca77b8f79a/T6004_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f79a/93953fab-83c7-47ca-a3aa-17ca77b8f79a/T6004_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f79a/93953fab-83c7-47ca-a3aa-17ca77b8f79a/T6004.mp3\" expression=\"full\" duration=\"1181\" fileSize=\"18905722\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f79a/93953fab-83c7-47ca-a3aa-17ca77b8f79a/T6004.mp4\" expression=\"full\" duration=\"1181\" fileSize=\"24015136\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f79a/93953fab-83c7-47ca-a3aa-17ca77b8f79a/T6004_high.mp4\" expression=\"full\" duration=\"1181\" fileSize=\"147474027\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f79a/93953fab-83c7-47ca-a3aa-17ca77b8f79a/T6004_mid.mp4\" expression=\"full\" duration=\"1181\" fileSize=\"51244548\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6004.mp4\" expression=\"full\" duration=\"1181\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>A day in the life of an Azure serverless developer</title>\n    <description><![CDATA[<p>Serverless is a great computing abstraction. When combined with great tools, developers can be more productive than ever.&nbsp;In this session, see the end-to-end experience of a developer a building serverless application on Microsoft Azure. Through the demos, learn how to build, deploy, manage, and monitor your applications. We focus on Azure Functions and Azure Logic Apps and show tools such as Application Insights, Visual Studio, Visual Studio Code, Visual Studio Team Services, and more.&nbsp;</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:e8b76d80f54f47a38a3fa768001c73e1\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6003</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6003</link>\n    <itunes:summary>Serverless is a great computing abstraction. When combined with great tools, developers can be more productive than ever. In this session, see the end-to-end experience of a developer a building serverless application on Microsoft Azure. Through the demos, learn how to build, deploy, manage, and monitor your applications. We focus on Azure Functions and Azure Logic Apps and show tools such as Application Insights, Visual Studio, Visual Studio Code, Visual Studio Team Services, and more.  </itunes:summary>\n    <itunes:duration>943</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6003</guid>\n    <dc:creator>Donna Malayeri, Chris Anderson</dc:creator>\n    <category>azure+functions</category>\n    <category>logic+apps</category>\n    <category>serverless</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/a113/031762cf-21f3-4006-be49-22999466a113/T6003_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/a113/031762cf-21f3-4006-be49-22999466a113/T6003_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/a113/031762cf-21f3-4006-be49-22999466a113/T6003_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a113/031762cf-21f3-4006-be49-22999466a113/T6003.mp3\" expression=\"full\" duration=\"943\" fileSize=\"15099885\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a113/031762cf-21f3-4006-be49-22999466a113/T6003.mp4\" expression=\"full\" duration=\"943\" fileSize=\"19762438\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a113/031762cf-21f3-4006-be49-22999466a113/T6003_high.mp4\" expression=\"full\" duration=\"943\" fileSize=\"145450387\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a113/031762cf-21f3-4006-be49-22999466a113/T6003_mid.mp4\" expression=\"full\" duration=\"943\" fileSize=\"45273787\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6003.mp4\" expression=\"full\" duration=\"943\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Containerizing your Microsoft ASP.NET 4.x apps</title>\n    <description><![CDATA[What can Container do for me and my &quot;old&quot; ASP.NET application? How can that help me get on a path to modern DevOps, cloud, and easy maintenance? In this session we walk through containerizing a Microsoft ASP.NET Framework application and getting it deployed to Azure. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:561aba9b5c6c49e4bc7ba768001c73a0\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/T6001</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/T6001</link>\n    <itunes:summary>What can Container do for me and my &amp;quot;old&amp;quot; ASP.NET application? How can that help me get on a path to modern DevOps, cloud, and easy maintenance? In this session we walk through containerizing a Microsoft ASP.NET Framework application and getting it deployed to Azure.</itunes:summary>\n    <itunes:duration>1403</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/T6001</guid>\n    <dc:creator>Mikkel Mork Hegnhoj</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/c93a/c6ba9ff5-b7d4-4b52-9253-e3026befc93a/T6001_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c93a/c6ba9ff5-b7d4-4b52-9253-e3026befc93a/T6001_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/c93a/c6ba9ff5-b7d4-4b52-9253-e3026befc93a/T6001_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c93a/c6ba9ff5-b7d4-4b52-9253-e3026befc93a/T6001.mp3\" expression=\"full\" duration=\"1403\" fileSize=\"22463178\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c93a/c6ba9ff5-b7d4-4b52-9253-e3026befc93a/T6001.mp4\" expression=\"full\" duration=\"1403\" fileSize=\"28487366\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c93a/c6ba9ff5-b7d4-4b52-9253-e3026befc93a/T6001_high.mp4\" expression=\"full\" duration=\"1403\" fileSize=\"207270031\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c93a/c6ba9ff5-b7d4-4b52-9253-e3026befc93a/T6001_mid.mp4\" expression=\"full\" duration=\"1403\" fileSize=\"61932525\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/T6001.mp4\" expression=\"full\" duration=\"1403\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Open Q&amp;A: Windows 10 - UWP, mixed reality, design, and Project Rome</title>\n    <description><![CDATA[Join us for a panel discussion and open Q&amp;A session with Windows engineering and design leadership. The panel covers the Windows 10 Platform, ranging from new UWP capabilities to design considerations to mixed reality to the cross-device capabilities in Project Rome. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:0843b78ec55c493b97e0a768001c7350\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8908</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8908</link>\n    <itunes:summary>Join us for a panel discussion and open Q&amp;amp;A session with Windows engineering and design leadership. The panel covers the Windows 10 Platform, ranging from new UWP capabilities to design considerations to mixed reality to the cross-device capabilities in Project Rome.</itunes:summary>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8908</guid>\n    <dc:creator>Albert Shum, Kevin Gallo, Andrew Clinick, Scott Evans</dc:creator>\n\t\t\n  </item>\n  <item>\n    <title>Open Q&amp;A: Mobile Development</title>\n    <description><![CDATA[Any developer. Any app. Any platform. Come learn how we’re fulfilling that promise with tools and services for developers building apps for Windows, iOS, Android, and more. Join us for a live Q&amp;A with industry-leading engineers from Microsoft covering mobile development with Visual Studio 2017, Visual Studio for Mac, Visual Studio Mobile Center, and Xamarin. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:6d418e52fa7d4138b599a768001c72cd\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8907</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8907</link>\n    <itunes:summary>Any developer. Any app. Any platform. Come learn how we’re fulfilling that promise with tools and services for developers building apps for Windows, iOS, Android, and more. Join us for a live Q&amp;amp;A with industry-leading engineers from Microsoft covering mobile development with Visual Studio 2017, Visual Studio for Mac, Visual Studio Mobile Center, and Xamarin.</itunes:summary>\n    <itunes:duration>3804</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8907</guid>\n    <dc:creator>Miguel de Icaza, James Montemagno, Ryan Salva, Thomas Dohmke, Keith Ballinger</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/bc37/ad783410-a934-4037-bc60-0dece488bc37/B8907_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/bc37/ad783410-a934-4037-bc60-0dece488bc37/B8907_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/bc37/ad783410-a934-4037-bc60-0dece488bc37/B8907_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bc37/ad783410-a934-4037-bc60-0dece488bc37/B8907.mp3\" expression=\"full\" duration=\"3804\" fileSize=\"60872010\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bc37/ad783410-a934-4037-bc60-0dece488bc37/B8907.mp4\" expression=\"full\" duration=\"3804\" fileSize=\"96875905\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bc37/ad783410-a934-4037-bc60-0dece488bc37/B8907_high.mp4\" expression=\"full\" duration=\"3804\" fileSize=\"1363713221\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bc37/ad783410-a934-4037-bc60-0dece488bc37/B8907_mid.mp4\" expression=\"full\" duration=\"3804\" fileSize=\"293919817\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8907.mp4\" expression=\"full\" duration=\"3804\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Open Q&amp;A: Moving 65,000 Microsofties to DevOps on the public cloud</title>\n    <description><![CDATA[Join us for a panel discussion on the transformation of Microsoft to One Engineering System with a globally distributed 24x7x365 service on Microsoft Azure and Visual Studio Team Services. Come along to hear about the challenges faced and some of the lessons we learned that you can apply to your own teams and organizations. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:fd84033697234345b6c9a768001c7253\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8906</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8906</link>\n    <itunes:summary>Join us for a panel discussion on the transformation of Microsoft to One Engineering System with a globally distributed 24x7x365 service on Microsoft Azure and Visual Studio Team Services. Come along to hear about the challenges faced and some of the lessons we learned that you can apply to your own teams and organizations.</itunes:summary>\n    <itunes:duration>3630</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8906</guid>\n    <dc:creator>Sam Guckenheimer, Gabriel Aul, Jordan Edwards, Mike Kippen</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/6c33/7cdcc756-e4ad-48d1-9ef3-6de0c1f76c33/B8906_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/6c33/7cdcc756-e4ad-48d1-9ef3-6de0c1f76c33/B8906_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/6c33/7cdcc756-e4ad-48d1-9ef3-6de0c1f76c33/B8906_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6c33/7cdcc756-e4ad-48d1-9ef3-6de0c1f76c33/B8906.mp3\" expression=\"full\" duration=\"3630\" fileSize=\"58092234\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6c33/7cdcc756-e4ad-48d1-9ef3-6de0c1f76c33/B8906.mp4\" expression=\"full\" duration=\"3630\" fileSize=\"63141573\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6c33/7cdcc756-e4ad-48d1-9ef3-6de0c1f76c33/B8906_high.mp4\" expression=\"full\" duration=\"3630\" fileSize=\"741345708\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6c33/7cdcc756-e4ad-48d1-9ef3-6de0c1f76c33/B8906_mid.mp4\" expression=\"full\" duration=\"3630\" fileSize=\"151566583\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8906.mp4\" expression=\"full\" duration=\"3630\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Open Q&amp;A: Hear from experts from Office 365, SharePoint, Microsoft Teams, and Microsoft Graph</title>\n    <description><![CDATA[In this session, we’ll discuss everything new and emerging across the Office 365 platform, including SharePoint, Microsoft Teams, Microsoft Graph, and beyond. We’ll discuss both the breadth of the Office 365 landscape and the depth of specific apps and APIs, and help you chart a path towards engaging more users by building successful Office integrations. Stop by to have your key product and technical questions answered by product leaders within Office 365. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:9b6f0ea4b7404ce1a362a768001c7164\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8905</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8905</link>\n    <itunes:summary>In this session, we’ll discuss everything new and emerging across the Office 365 platform, including SharePoint, Microsoft Teams, Microsoft Graph, and beyond. We’ll discuss both the breadth of the Office 365 landscape and the depth of specific apps and APIs, and help you chart a path towards engaging more users by building successful Office integrations. Stop by to have your key product and technical questions answered by product leaders within Office 365.</itunes:summary>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8905</guid>\n    <dc:creator>Rob Howard, Pedro DeRose, Vesa Juvonen, Yina Arenas, Tristan Davis</dc:creator>\n\t\t\n  </item>\n  <item>\n    <title>Open Q&amp;A: Maximizing the value of your DATA and leveraging the power of AI to build Intelligent applications</title>\n    <description><![CDATA[Do you have questions about using the different data services in Azure? Want to find out more about the technical roadmap of the different data services, or just want to understand how to make your apps &amp; bots more intelligent? Join this Q&amp;A session and get a chance to ask any question you'd like around Microsoft data products or services, from SQL Server to Azure Data Lake to Azure Search. Hear from the experienced panelists about the future of data technologies and learn about how we're interweaving data and AI to help you build Intelligent applications! <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1b06cc9616b44e61ae0ca768001c70e0\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8904</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8904</link>\n    <itunes:summary>Do you have questions about using the different data services in Azure? Want to find out more about the technical roadmap of the different data services, or just want to understand how to make your apps &amp;amp; bots more intelligent? Join this Q&amp;amp;A session and get a chance to ask any question you&#39;d like around Microsoft data products or services, from SQL Server to Azure Data Lake to Azure Search. Hear from the experienced panelists about the future of data technologies and learn about how we&#39;re interweaving data and AI to help you build Intelligent applications!</itunes:summary>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8904</guid>\n    <dc:creator>Pablo Castro, Rohan Kumar, Joseph Sirosh, Dharma Shukla</dc:creator>\n    <category>intelligent+app</category>\n    <category>artificial+intelligence</category>\n    <category>data</category>\n\t\t\n  </item>\n  <item>\n    <title>Open Q&amp;A: Artificial intelligence tools for developers</title>\n    <description><![CDATA[Join Microsoft Artificial Intelligence &#43; Research executives for an open Q&amp;A on our Microsoft AI tools for developers including Cognitive Services, Cognitive Toolkit, Bot Framework, Azure Bot Service, Cortana Skills and more. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:584caa6226ea4cd5ba04a768001c7038\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8903</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8903</link>\n    <itunes:summary>Join Microsoft Artificial Intelligence &amp;#43; Research executives for an open Q&amp;amp;A on our Microsoft AI tools for developers including Cognitive Services, Cognitive Toolkit, Bot Framework, Azure Bot Service, Cortana Skills and more.</itunes:summary>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8903</guid>\n    <dc:creator>Lili Cheng, Steven Guggenheimer, Eric Horvitz</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>machine+learning</category>\n    <category>intelligence</category>\n\t\t\n  </item>\n  <item>\n    <title>Creating connected healthcare applications using Microsoft HealthVault</title>\n    <description><![CDATA[<p>Microsoft HealthVault is a platform that businesses and consumers can use to store personal health information – and then generate insights for it. This session provides an overview of how your apps and devices can work with the HealthVault Insights app to drive increased provider/patient engagement. We discuss the new open-source projects that we have launched, as well as how apps can leverage our cross-platform SDK to deliver HealthVault-enabled experiences on mobile and web platforms.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:c5ee70a017da4e9c8a17a768001c6f0c\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8121</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8121</link>\n    <itunes:summary>Microsoft HealthVault is a platform that businesses and consumers can use to store personal health information – and then generate insights for it. This session provides an overview of how your apps and devices can work with the HealthVault Insights app to drive increased provider/patient engagement. We discuss the new open-source projects that we have launched, as well as how apps can leverage our cross-platform SDK to deliver HealthVault-enabled experiences on mobile and web platforms. </itunes:summary>\n    <itunes:duration>3572</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8121</guid>\n    <dc:creator>Justin Hutchings, Heather Cartwright</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>cross-platform+development</category>\n    <category>health</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/6831/cb79c468-eea5-4b18-a71f-be85fac96831/B8121_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/6831/cb79c468-eea5-4b18-a71f-be85fac96831/B8121_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/6831/cb79c468-eea5-4b18-a71f-be85fac96831/B8121_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6831/cb79c468-eea5-4b18-a71f-be85fac96831/B8121.mp3\" expression=\"full\" duration=\"3572\" fileSize=\"57155227\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6831/cb79c468-eea5-4b18-a71f-be85fac96831/B8121.mp4\" expression=\"full\" duration=\"3572\" fileSize=\"63554211\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6831/cb79c468-eea5-4b18-a71f-be85fac96831/B8121_high.mp4\" expression=\"full\" duration=\"3572\" fileSize=\"495882662\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/6831/cb79c468-eea5-4b18-a71f-be85fac96831/B8121_mid.mp4\" expression=\"full\" duration=\"3572\" fileSize=\"133041216\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8121.mp4\" expression=\"full\" duration=\"3572\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Innovate and get your apps in front of 100 Million business users with AppSource, PowerApps, Microsoft Flow, and the Common Data Service</title>\n    <description><![CDATA[<p>Learn how to build custom connectors and APIs that promote application extensibility and deeper data integration by leveraging PowerApps, Microsoft Flow, and the Common Data Service for a richer customer experience with your application. Walk away with the knowledge of how to package and list your app on AppSource, to expand your reach and help business users discover and try your app.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:9e1a3bcf7f4d41a4bc2ba768001c6ea9\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8120</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8120</link>\n    <itunes:summary>Learn how to build custom connectors and APIs that promote application extensibility and deeper data integration by leveraging PowerApps, Microsoft Flow, and the Common Data Service for a richer customer experience with your application. Walk away with the knowledge of how to package and list your app on AppSource, to expand your reach and help business users discover and try your app. </itunes:summary>\n    <itunes:duration>3876</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8120</guid>\n    <dc:creator>Theresa Palmer-Boroski, Satish Thomas, Peter Villadsen</dc:creator>\n    <category>office+365</category>\n    <category>power+apps</category>\n    <category>flow</category>\n    <category>power+bi</category>\n    <category>app+source</category>\n    <category>common+data+service</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/1153/9dce7a77-e72e-44fc-a1c7-fb14590c1153/B8120_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1153/9dce7a77-e72e-44fc-a1c7-fb14590c1153/B8120.mp3\" expression=\"full\" duration=\"3876\" fileSize=\"62025664\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1153/9dce7a77-e72e-44fc-a1c7-fb14590c1153/B8120.mp4\" expression=\"full\" duration=\"3876\" fileSize=\"77479426\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1153/9dce7a77-e72e-44fc-a1c7-fb14590c1153/B8120_high.mp4\" expression=\"full\" duration=\"3876\" fileSize=\"568448027\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1153/9dce7a77-e72e-44fc-a1c7-fb14590c1153/B8120_mid.mp4\" expression=\"full\" duration=\"3876\" fileSize=\"212996466\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8120.mp4\" expression=\"full\" duration=\"3876\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Past, present, and future of GPUs in Microsoft Azure</title>\n    <description><![CDATA[Azure N-series VMs powered by NVIDIA GPUs enable a range of new accelerated scenarios. Learn how you can take advantage of GPUs using CUDA or OpenCL for scenarios like ray traced rendering, machine learning, and artificial intelligence. Stream or remotely access content and engineering designs, digital media or graphics rich applications utilizing DirectX or OpenGL along with workstation in the cloud capabilities. This session delves deep into the exciting current offerings, customers use cases and live examples, partner solutions, and offers a view of what’s to come in the future. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:328170dc9f4f4927afc2a768001c6e05\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8119</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8119</link>\n    <itunes:summary>Azure N-series VMs powered by NVIDIA GPUs enable a range of new accelerated scenarios. Learn how you can take advantage of GPUs using CUDA or OpenCL for scenarios like ray traced rendering, machine learning, and artificial intelligence. Stream or remotely access content and engineering designs, digital media or graphics rich applications utilizing DirectX or OpenGL along with workstation in the cloud capabilities. This session delves deep into the exciting current offerings, customers use cases and live examples, partner solutions, and offers a view of what’s to come in the future.</itunes:summary>\n    <itunes:duration>3850</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8119</guid>\n    <dc:creator>Alex Sutton, Karan Batta</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/12bb/fd96f05e-161e-4e69-8e52-ff02a96a12bb/B8119_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/12bb/fd96f05e-161e-4e69-8e52-ff02a96a12bb/B8119_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/12bb/fd96f05e-161e-4e69-8e52-ff02a96a12bb/B8119_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/12bb/fd96f05e-161e-4e69-8e52-ff02a96a12bb/B8119.mp3\" expression=\"full\" duration=\"3850\" fileSize=\"61602378\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/12bb/fd96f05e-161e-4e69-8e52-ff02a96a12bb/B8119.mp4\" expression=\"full\" duration=\"3850\" fileSize=\"68224433\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/12bb/fd96f05e-161e-4e69-8e52-ff02a96a12bb/B8119_high.mp4\" expression=\"full\" duration=\"3850\" fileSize=\"905470514\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/12bb/fd96f05e-161e-4e69-8e52-ff02a96a12bb/B8119_mid.mp4\" expression=\"full\" duration=\"3850\" fileSize=\"205629808\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8119.mp4\" expression=\"full\" duration=\"3850\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How to run massively scaling mobile games on Microsoft Azure</title>\n    <description><![CDATA[Come hear how Next Games, the disruptive mobile gaming company who owns exclusive license for games related to the hit TV series &quot;The Walking Dead,&quot; has built its infrastructure and a generative platform on Azure. You will learn how to run games (or any service) as a service, and hear about the experiences, mistakes and lessons learned along their journey. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:e526a099dbfa4bf3ac37a768001c6dc8\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8118</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8118</link>\n    <itunes:summary>Come hear how Next Games, the disruptive mobile gaming company who owns exclusive license for games related to the hit TV series &amp;quot;The Walking Dead,&amp;quot; has built its infrastructure and a generative platform on Azure. You will learn how to run games (or any service) as a service, and hear about the experiences, mistakes and lessons learned along their journey.</itunes:summary>\n    <itunes:duration>3032</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8118</guid>\n    <dc:creator>Kalle Hiitola, Remo Kallio</dc:creator>\n    <category>azure</category>\n    <category>documentdb</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/0ec8/0218c517-d8cd-4c57-b1ea-72b061f20ec8/B8118_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0ec8/0218c517-d8cd-4c57-b1ea-72b061f20ec8/B8118.mp3\" expression=\"full\" duration=\"3032\" fileSize=\"48529383\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0ec8/0218c517-d8cd-4c57-b1ea-72b061f20ec8/B8118.mp4\" expression=\"full\" duration=\"3032\" fileSize=\"51348865\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0ec8/0218c517-d8cd-4c57-b1ea-72b061f20ec8/B8118_high.mp4\" expression=\"full\" duration=\"3032\" fileSize=\"249455308\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0ec8/0218c517-d8cd-4c57-b1ea-72b061f20ec8/B8118_mid.mp4\" expression=\"full\" duration=\"3032\" fileSize=\"94345181\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8118.mp4\" expression=\"full\" duration=\"3032\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Reimagine what is possible with your videos using state-of-the-art AI technologies</title>\n    <description><![CDATA[Your media is a treasure trove of information. Learn how you can use AI technologies with your videos to improve consumer engagement and extract valuable business insights. Simple APIs streamlines extracting actionable information from videos and dramatically improves your productivity in building applications based on the insights. Explore, deconstruct, and understand the various elements of your video. Enable new forms of content discovery such as search that includes extracting spoken words, faces, characters, and emotions for richer and more relevant recommendations. We also show how you can take advantage of the power of the cloud and rapidly build workflows based on the information in your videos. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:60258bd8ebcd4602abc4a768001c6d66\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8117</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8117</link>\n    <itunes:summary>Your media is a treasure trove of information. Learn how you can use AI technologies with your videos to improve consumer engagement and extract valuable business insights. Simple APIs streamlines extracting actionable information from videos and dramatically improves your productivity in building applications based on the insights. Explore, deconstruct, and understand the various elements of your video. Enable new forms of content discovery such as search that includes extracting spoken words, faces, characters, and emotions for richer and more relevant recommendations. We also show how you can take advantage of the power of the cloud and rapidly build workflows based on the information in your videos.</itunes:summary>\n    <itunes:duration>3836</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8117</guid>\n    <dc:creator>Milan Gada, Ohad Jassin</dc:creator>\n    <category>azure</category>\n    <category>application+insights</category>\n    <category>media</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/4567/9c71e01a-c718-44ab-a2df-655548634567/B8117_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4567/9c71e01a-c718-44ab-a2df-655548634567/B8117.mp3\" expression=\"full\" duration=\"3836\" fileSize=\"61378847\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4567/9c71e01a-c718-44ab-a2df-655548634567/B8117.mp4\" expression=\"full\" duration=\"3836\" fileSize=\"70900118\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4567/9c71e01a-c718-44ab-a2df-655548634567/B8117_high.mp4\" expression=\"full\" duration=\"3836\" fileSize=\"643070487\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/4567/9c71e01a-c718-44ab-a2df-655548634567/B8117_mid.mp4\" expression=\"full\" duration=\"3836\" fileSize=\"155646747\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8117.mp4\" expression=\"full\" duration=\"3836\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Using the Windows Subsystem for Linux and the Windows Console for a next generation development experience</title>\n    <description><![CDATA[Last year Microsoft released the Windows Subsystem for Linux (WSL) to allow developers to run a broad range of native Linux tools, utilities, and applications directly on Windows. Since then we have taken WSL to new heights, improving its compatibility with open source software and tightening its integration with Windows. Come learn about these improvements as well as our plan for the future of this incredible developer tool. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:091ff1ef0ab84fd9b71da768001c6c8e\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8113</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8113</link>\n    <itunes:summary>Last year Microsoft released the Windows Subsystem for Linux (WSL) to allow developers to run a broad range of native Linux tools, utilities, and applications directly on Windows. Since then we have taken WSL to new heights, improving its compatibility with open source software and tightening its integration with Windows. Come learn about these improvements as well as our plan for the future of this incredible developer tool.</itunes:summary>\n    <itunes:duration>3331</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8113</guid>\n    <dc:creator>Gilles Khouzam, Jack Hammons</dc:creator>\n    <category>web+platform</category>\n    <category>tools</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/f21a/f75824f6-ce7c-4107-9c69-ec3e0cc3f21a/B8113_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f21a/f75824f6-ce7c-4107-9c69-ec3e0cc3f21a/B8113_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/f21a/f75824f6-ce7c-4107-9c69-ec3e0cc3f21a/B8113_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f21a/f75824f6-ce7c-4107-9c69-ec3e0cc3f21a/B8113.mp3\" expression=\"full\" duration=\"3331\" fileSize=\"53303751\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f21a/f75824f6-ce7c-4107-9c69-ec3e0cc3f21a/B8113.mp4\" expression=\"full\" duration=\"3331\" fileSize=\"62869106\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f21a/f75824f6-ce7c-4107-9c69-ec3e0cc3f21a/B8113_high.mp4\" expression=\"full\" duration=\"3331\" fileSize=\"523298347\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f21a/f75824f6-ce7c-4107-9c69-ec3e0cc3f21a/B8113_mid.mp4\" expression=\"full\" duration=\"3331\" fileSize=\"149087577\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8113.mp4\" expression=\"full\" duration=\"3331\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Modernize WinForms and WPF apps with maximum code reuse, cross-platform reach, and efficient DevOps</title>\n    <description><![CDATA[Windows 10 provides developer features and services that can yield high-quality and engaging apps that delight users across platforms. At the same time, developers have existing investments in technology and skills that they shouldn't have to abandon in order to move forward. In this session, we explore these new features and capabilities from the perspective of WinForms and WPF .NET developers with an emphasis on being able to move forward incrementally from your existing investments as you see value. Discover the flexibility to enrich your existing apps with Windows 10 features, extend to new platforms with Xamarin, and modernize your DevOps software lifecycle with Mobile Center. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:1018e8b13d7848d9bdd5a768001c6be5\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8110</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8110</link>\n    <itunes:summary>Windows 10 provides developer features and services that can yield high-quality and engaging apps that delight users across platforms. At the same time, developers have existing investments in technology and skills that they shouldn&#39;t have to abandon in order to move forward. In this session, we explore these new features and capabilities from the perspective of WinForms and WPF .NET developers with an emphasis on being able to move forward incrementally from your existing investments as you see value. Discover the flexibility to enrich your existing apps with Windows 10 features, extend to new platforms with Xamarin, and modernize your DevOps software lifecycle with Mobile Center.</itunes:summary>\n    <itunes:duration>3472</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8110</guid>\n    <dc:creator>Joshua Weber, Mike Battista</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>.net</category>\n    <category>devops</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/1384/48b48d54-8d0a-4b79-802e-76a3af3a1384/B8110_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1384/48b48d54-8d0a-4b79-802e-76a3af3a1384/B8110_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1384/48b48d54-8d0a-4b79-802e-76a3af3a1384/B8110_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1384/48b48d54-8d0a-4b79-802e-76a3af3a1384/B8110.mp3\" expression=\"full\" duration=\"3472\" fileSize=\"55565139\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1384/48b48d54-8d0a-4b79-802e-76a3af3a1384/B8110.mp4\" expression=\"full\" duration=\"3472\" fileSize=\"67509541\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1384/48b48d54-8d0a-4b79-802e-76a3af3a1384/B8110_high.mp4\" expression=\"full\" duration=\"3472\" fileSize=\"325865181\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1384/48b48d54-8d0a-4b79-802e-76a3af3a1384/B8110_mid.mp4\" expression=\"full\" duration=\"3472\" fileSize=\"137013902\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8110.mp4\" expression=\"full\" duration=\"3472\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Azure Service Fabric, microservices, containers, and the road ahead</title>\n    <description><![CDATA[Service Fabric is the Microsoft Azure microservices platform. This session is a developer’s tour and roadmap and dives into the latest Service Fabric capabilities, including containerized services, container orchestration including using Docker Compose, ASP.NET Core service support, integration with other Azure services and the latest developments in Visual Studio 2017 tooling, all sprinkled with customers scenarios. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:23f06f6d70af4af0bc1aa768001c6b41\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8106</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8106</link>\n    <itunes:summary>Service Fabric is the Microsoft Azure microservices platform. This session is a developer’s tour and roadmap and dives into the latest Service Fabric capabilities, including containerized services, container orchestration including using Docker Compose, ASP.NET Core service support, integration with other Azure services and the latest developments in Visual Studio 2017 tooling, all sprinkled with customers scenarios.</itunes:summary>\n    <itunes:duration>3350</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8106</guid>\n    <dc:creator>Mark Fussell, Vaclav Turecek</dc:creator>\n    <category>visual+studio</category>\n    <category>service+fabric</category>\n    <category>microservices</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/e838/478fea07-c853-42d2-b616-d35d9145e838/B8106_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e838/478fea07-c853-42d2-b616-d35d9145e838/B8106.mp3\" expression=\"full\" duration=\"3350\" fileSize=\"53607442\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e838/478fea07-c853-42d2-b616-d35d9145e838/B8106.mp4\" expression=\"full\" duration=\"3350\" fileSize=\"67999680\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e838/478fea07-c853-42d2-b616-d35d9145e838/B8106_high.mp4\" expression=\"full\" duration=\"3350\" fileSize=\"524007494\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e838/478fea07-c853-42d2-b616-d35d9145e838/B8106_mid.mp4\" expression=\"full\" duration=\"3350\" fileSize=\"153735799\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8106.mp4\" expression=\"full\" duration=\"3350\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>7++ reasons to move your C++ code to Visual Studio 2017</title>\n    <description><![CDATA[Come learn the top 7 reasons you should be excited about Visual Studio 2017 if you are a C&#43;&#43; developer. Whether you are using the product and are looking to upgrade, or you never used it before but you are considering it now, join us to discover how Visual Studio 2017 raises the bar in terms of C&#43;&#43; productivity. From C&#43;&#43; standards conformance to coding productivity, cross-platform development for Windows, Linux, Android, and iOS and CMake support, these are only a few of the topics we discuss in this demo-packed session. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:2e7dfa4f99c5478ca7bfa768001c6b00\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8105</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8105</link>\n    <itunes:summary>Come learn the top 7 reasons you should be excited about Visual Studio 2017 if you are a C&amp;#43;&amp;#43; developer. Whether you are using the product and are looking to upgrade, or you never used it before but you are considering it now, join us to discover how Visual Studio 2017 raises the bar in terms of C&amp;#43;&amp;#43; productivity. From C&amp;#43;&amp;#43; standards conformance to coding productivity, cross-platform development for Windows, Linux, Android, and iOS and CMake support, these are only a few of the topics we discuss in this demo-packed session.</itunes:summary>\n    <itunes:duration>2931</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8105</guid>\n    <dc:creator>Marian Luparu</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/1d62/8b29455c-0fb1-48c5-9c5e-8df6aebc1d62/B8105_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1d62/8b29455c-0fb1-48c5-9c5e-8df6aebc1d62/B8105.mp3\" expression=\"full\" duration=\"2931\" fileSize=\"46900554\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1d62/8b29455c-0fb1-48c5-9c5e-8df6aebc1d62/B8105.mp4\" expression=\"full\" duration=\"2931\" fileSize=\"59298775\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1d62/8b29455c-0fb1-48c5-9c5e-8df6aebc1d62/B8105_high.mp4\" expression=\"full\" duration=\"2931\" fileSize=\"495917239\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1d62/8b29455c-0fb1-48c5-9c5e-8df6aebc1d62/B8105_mid.mp4\" expression=\"full\" duration=\"2931\" fileSize=\"136989553\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8105.mp4\" expression=\"full\" duration=\"2931\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>The future of C#</title>\n    <description><![CDATA[<p>We’re back! With C# 7.0 and Visual Studio 2017 just recently shipped, we paint the big picture: let’s lay out where the C# language and tooling experience is headed, and show early glimpses of what we’re currently working on.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:4d874d217823480eab08a768001c6acc\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8104</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8104</link>\n    <itunes:summary>We’re back! With C# 7.0 and Visual Studio 2017 just recently shipped, we paint the big picture: let’s lay out where the C# language and tooling experience is headed, and show early glimpses of what we’re currently working on. </itunes:summary>\n    <itunes:duration>3719</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8104</guid>\n    <dc:creator>Mads Torgersen, Dustin Campbell</dc:creator>\n    <category>visual+studio</category>\n    <category>.net</category>\n    <category>csharp</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/aa5d/1c0e3d7f-114d-4bed-8a58-95b6bd54aa5d/B8104_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/aa5d/1c0e3d7f-114d-4bed-8a58-95b6bd54aa5d/B8104_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/aa5d/1c0e3d7f-114d-4bed-8a58-95b6bd54aa5d/B8104_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/aa5d/1c0e3d7f-114d-4bed-8a58-95b6bd54aa5d/B8104.mp3\" expression=\"full\" duration=\"3719\" fileSize=\"59512858\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/aa5d/1c0e3d7f-114d-4bed-8a58-95b6bd54aa5d/B8104.mp4\" expression=\"full\" duration=\"3719\" fileSize=\"83728936\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/aa5d/1c0e3d7f-114d-4bed-8a58-95b6bd54aa5d/B8104_high.mp4\" expression=\"full\" duration=\"3719\" fileSize=\"775688223\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/aa5d/1c0e3d7f-114d-4bed-8a58-95b6bd54aa5d/B8104_mid.mp4\" expression=\"full\" duration=\"3719\" fileSize=\"199423326\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8104.mp4\" expression=\"full\" duration=\"3719\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Xamarin: The future of mobile app development</title>\n    <description><![CDATA[Xamarin enables C# developers to become native iOS, Android, and Windows mobile app developers overnight. In this session, learn how to leverage your existing .NET and C# skills to create iOS and Android mobile apps in Visual Studio with Xamarin. In addition to allowing you to write your iOS and Android apps in C#, Xamarin lets you reuse existing .NET libraries and share your business logic across iOS, Android, and Windows apps. During this session we cover the Xamarin platform and how to create native iOS, Android, and Windows apps in C#. See what is new and next for Xamarin development inside of Visual Studio. Moreover, we focus on the code, with several live coding adventures throughout the entire session and showing you the latest and greatest in native cross-platform development.  <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:902b82d42af8475e9c9fa768001c6a3b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8103</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8103</link>\n    <itunes:summary>Xamarin enables C# developers to become native iOS, Android, and Windows mobile app developers overnight. In this session, learn how to leverage your existing .NET and C# skills to create iOS and Android mobile apps in Visual Studio with Xamarin. In addition to allowing you to write your iOS and Android apps in C#, Xamarin lets you reuse existing .NET libraries and share your business logic across iOS, Android, and Windows apps. During this session we cover the Xamarin platform and how to create native iOS, Android, and Windows apps in C#. See what is new and next for Xamarin development inside of Visual Studio. Moreover, we focus on the code, with several live coding adventures throughout the entire session and showing you the latest and greatest in native cross-platform development. </itunes:summary>\n    <itunes:duration>3545</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8103</guid>\n    <dc:creator>Miguel de Icaza, James Montemagno</dc:creator>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/bc2c/f0c3395b-1cc5-4715-8c54-badd6e9bbc2c/B8103_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bc2c/f0c3395b-1cc5-4715-8c54-badd6e9bbc2c/B8103.mp3\" expression=\"full\" duration=\"3545\" fileSize=\"56734410\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bc2c/f0c3395b-1cc5-4715-8c54-badd6e9bbc2c/B8103.mp4\" expression=\"full\" duration=\"3545\" fileSize=\"76194507\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bc2c/f0c3395b-1cc5-4715-8c54-badd6e9bbc2c/B8103_high.mp4\" expression=\"full\" duration=\"3545\" fileSize=\"883841750\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/bc2c/f0c3395b-1cc5-4715-8c54-badd6e9bbc2c/B8103_mid.mp4\" expression=\"full\" duration=\"3545\" fileSize=\"195678281\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8103.mp4\" expression=\"full\" duration=\"3545\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Proven tips for a successful Windows Store app</title>\n    <description><![CDATA[Join this session to hear some of the proven best practices that the most successful Windows Store app publishers use to drive their goals in the Windows Store. This session offers tips for all steps of the app life cycle, including user acquisition and discovery, retention and engagement, and, of course, monetization. &nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:7a9fc304710c4ad1bf0fa768001c69f9\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8102</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8102</link>\n    <itunes:summary>Join this session to hear some of the proven best practices that the most successful Windows Store app publishers use to drive their goals in the Windows Store. This session offers tips for all steps of the app life cycle, including user acquisition and discovery, retention and engagement, and, of course, monetization.  </itunes:summary>\n    <itunes:duration>3453</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8102</guid>\n    <dc:creator>Jaime Rodriguez, Sonia Carlson</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>windows+store</category>\n    <category>monetization</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/b481/30e799f5-60aa-4cf6-80a1-7ec5ba21b481/B8102_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b481/30e799f5-60aa-4cf6-80a1-7ec5ba21b481/B8102.mp3\" expression=\"full\" duration=\"3453\" fileSize=\"55263611\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b481/30e799f5-60aa-4cf6-80a1-7ec5ba21b481/B8102.mp4\" expression=\"full\" duration=\"3453\" fileSize=\"60958164\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b481/30e799f5-60aa-4cf6-80a1-7ec5ba21b481/B8102_high.mp4\" expression=\"full\" duration=\"3453\" fileSize=\"378957241\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/b481/30e799f5-60aa-4cf6-80a1-7ec5ba21b481/B8102_mid.mp4\" expression=\"full\" duration=\"3453\" fileSize=\"122928355\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8102.mp4\" expression=\"full\" duration=\"3453\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Windows 10 identity overview</title>\n    <description><![CDATA[Windows 10 delivers several key advancements in identity and authentication with Windows Hello, Azure Active Directory Join, Web Account Manager, Windows Hello Companion Device Framework, and Dynamic Lock. With the adoption of FIDO (Fast Identity Online alliance) standards across the industry, now is the time to update your websites and applications to support secure user authentication. Come join us to learn how you can build websites and applications that provide a single sign-on experience with strong password-less authentication.&nbsp;We promise some exciting demos! <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:bc2d70b23a5c4b8eb625a768001c6984\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8101</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8101</link>\n    <itunes:summary>Windows 10 delivers several key advancements in identity and authentication with Windows Hello, Azure Active Directory Join, Web Account Manager, Windows Hello Companion Device Framework, and Dynamic Lock. With the adoption of FIDO (Fast Identity Online alliance) standards across the industry, now is the time to update your websites and applications to support secure user authentication. Come join us to learn how you can build websites and applications that provide a single sign-on experience with strong password-less authentication. We promise some exciting demos!</itunes:summary>\n    <itunes:duration>3654</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8101</guid>\n    <dc:creator>Yogesh Mehta, Matthew Palko</dc:creator>\n    <category>enterprise</category>\n    <category>security</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/83a4/4a1936e9-f87a-4593-b9e2-f8e371e883a4/B8101_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/83a4/4a1936e9-f87a-4593-b9e2-f8e371e883a4/B8101.mp3\" expression=\"full\" duration=\"3654\" fileSize=\"58472619\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/83a4/4a1936e9-f87a-4593-b9e2-f8e371e883a4/B8101.mp4\" expression=\"full\" duration=\"3654\" fileSize=\"67574014\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/83a4/4a1936e9-f87a-4593-b9e2-f8e371e883a4/B8101_high.mp4\" expression=\"full\" duration=\"3654\" fileSize=\"495572636\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/83a4/4a1936e9-f87a-4593-b9e2-f8e371e883a4/B8101_mid.mp4\" expression=\"full\" duration=\"3654\" fileSize=\"149555948\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8101.mp4\" expression=\"full\" duration=\"3654\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>What&#39;s new and coming for Windows UI: XAML and composition</title>\n    <description><![CDATA[Great user experiences can delight and engage your users, and make them more productive. Innovations in the Windows UI platform in XAML and Visual Layer make creating these experiences easy on Windows. This session shows you how to easily enable these experiences in your apps – be they consumer, enterprise, or line-of-business. We also tease you with what’s in store for Windows UI in the future and how we progressively make the 'possible' even easier. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:93d975688db1480caf70a768001c68fc\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8100</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8100</link>\n    <itunes:summary>Great user experiences can delight and engage your users, and make them more productive. Innovations in the Windows UI platform in XAML and Visual Layer make creating these experiences easy on Windows. This session shows you how to easily enable these experiences in your apps – be they consumer, enterprise, or line-of-business. We also tease you with what’s in store for Windows UI in the future and how we progressively make the &#39;possible&#39; even easier.</itunes:summary>\n    <itunes:duration>3953</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8100</guid>\n    <dc:creator>Ashish Shetty, Tim Heuer</dc:creator>\n    <category>ux</category>\n    <category>universal+windows+platform+uwp</category>\n    <category>xaml</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/77cf/c031eb56-813f-408d-9d94-b8040c8b77cf/B8100_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/77cf/c031eb56-813f-408d-9d94-b8040c8b77cf/B8100.mp3\" expression=\"full\" duration=\"3953\" fileSize=\"63255036\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/77cf/c031eb56-813f-408d-9d94-b8040c8b77cf/B8100.mp4\" expression=\"full\" duration=\"3953\" fileSize=\"78731518\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/77cf/c031eb56-813f-408d-9d94-b8040c8b77cf/B8100_high.mp4\" expression=\"full\" duration=\"3953\" fileSize=\"991345343\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/77cf/c031eb56-813f-408d-9d94-b8040c8b77cf/B8100_mid.mp4\" expression=\"full\" duration=\"3953\" fileSize=\"193401326\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8100.mp4\" expression=\"full\" duration=\"3953\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>What&#39;s new in Xamarin.Forms</title>\n    <description><![CDATA[Building cross-platform native UIs with one shared codebase was once just a dream. With Xamarin.Forms, this dream is now a reality. Xamarin.Forms allows you to build a native UI for three platforms with one shared C# codebase. Simply put, if you know C# then you're ready to build iOS, Android, and Windows apps with more platforms on the horizon. Xamarin.Forms is already packed with tons of awesome features, and recently has seen major improvements in stability and performance. The fun doesn't stop there as we continue to make significant advancements. Join us as we give you a full breakdown of all the spectacular features that have been released and a peek into the future of Xamarin.Forms. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:0a5958ad91be49bca77fa768001c684a\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8099</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8099</link>\n    <itunes:summary>Building cross-platform native UIs with one shared codebase was once just a dream. With Xamarin.Forms, this dream is now a reality. Xamarin.Forms allows you to build a native UI for three platforms with one shared C# codebase. Simply put, if you know C# then you&#39;re ready to build iOS, Android, and Windows apps with more platforms on the horizon. Xamarin.Forms is already packed with tons of awesome features, and recently has seen major improvements in stability and performance. The fun doesn&#39;t stop there as we continue to make significant advancements. Join us as we give you a full breakdown of all the spectacular features that have been released and a peek into the future of Xamarin.Forms.</itunes:summary>\n    <itunes:duration>3328</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8099</guid>\n    <dc:creator>Jason Smith</dc:creator>\n    <category>xamarin</category>\n    <category>xamarin+test+cloud</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/e613/96a58de3-75e5-4d9e-9b15-e216a03fe613/B8099_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e613/96a58de3-75e5-4d9e-9b15-e216a03fe613/B8099.mp3\" expression=\"full\" duration=\"3328\" fileSize=\"53258826\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e613/96a58de3-75e5-4d9e-9b15-e216a03fe613/B8099.mp4\" expression=\"full\" duration=\"3328\" fileSize=\"75573236\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e613/96a58de3-75e5-4d9e-9b15-e216a03fe613/B8099_high.mp4\" expression=\"full\" duration=\"3328\" fileSize=\"624116933\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e613/96a58de3-75e5-4d9e-9b15-e216a03fe613/B8099_mid.mp4\" expression=\"full\" duration=\"3328\" fileSize=\"172177873\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8099.mp4\" expression=\"full\" duration=\"3328\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Windows Store: Manage and promote apps your way</title>\n    <description><![CDATA[Join this session to learn how the Windows Store is adding new capabilities to make developers more productive and successful on all Windows device families: Desktop, Xbox, HoloLens, and Phone. We review how Dev Center provides more flexibility and agility through the lifecycle of your apps: submission, release, Store listing, post-release analytics, promotions, sales, and discounts. We also talk about new monetization features, more ways the Store can showcase and distribute your apps, and highlight new options to deliver and promote games that can run on Xbox One. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:6c04f21fb6cc4a51a65aa768001c6816\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8098</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8098</link>\n    <itunes:summary>Join this session to learn how the Windows Store is adding new capabilities to make developers more productive and successful on all Windows device families: Desktop, Xbox, HoloLens, and Phone. We review how Dev Center provides more flexibility and agility through the lifecycle of your apps: submission, release, Store listing, post-release analytics, promotions, sales, and discounts. We also talk about new monetization features, more ways the Store can showcase and distribute your apps, and highlight new options to deliver and promote games that can run on Xbox One.</itunes:summary>\n    <itunes:duration>3511</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8098</guid>\n    <dc:creator>Bernardo Zamora, Jonathan Garrigues</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>windows+store</category>\n    <category>dev+center</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/29c5/ae7956da-41a6-4536-939e-48c6545929c5/B8098_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/29c5/ae7956da-41a6-4536-939e-48c6545929c5/B8098_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/29c5/ae7956da-41a6-4536-939e-48c6545929c5/B8098_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/29c5/ae7956da-41a6-4536-939e-48c6545929c5/B8098.mp3\" expression=\"full\" duration=\"3511\" fileSize=\"56183680\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/29c5/ae7956da-41a6-4536-939e-48c6545929c5/B8098.mp4\" expression=\"full\" duration=\"3511\" fileSize=\"74989225\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/29c5/ae7956da-41a6-4536-939e-48c6545929c5/B8098_high.mp4\" expression=\"full\" duration=\"3511\" fileSize=\"606816587\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/29c5/ae7956da-41a6-4536-939e-48c6545929c5/B8098_mid.mp4\" expression=\"full\" duration=\"3511\" fileSize=\"173923291\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8098.mp4\" expression=\"full\" duration=\"3511\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>What’s new with the Microsoft Bot Framework</title>\n    <description><![CDATA[Come see how we have made it easier for developers to build more intelligent bots and to reach more channels, across all modalities. See the future of building bots with a preview of next Bot Framework release. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:ab31effbb53c49be9e54a768001c6798\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8097</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8097</link>\n    <itunes:summary>Come see how we have made it easier for developers to build more intelligent bots and to reach more channels, across all modalities. See the future of building bots with a preview of next Bot Framework release.</itunes:summary>\n    <itunes:duration>2923</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8097</guid>\n    <dc:creator>Chris Mullins, Henrik Frystyk Nielsen, Vishwac Sena Kannan</dc:creator>\n    <category>azure</category>\n    <category>artificial+intelligence</category>\n    <category>bot+framework</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/85b3/7c24c927-b008-4274-9941-662c3a4085b3/B8097_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/85b3/7c24c927-b008-4274-9941-662c3a4085b3/B8097_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/85b3/7c24c927-b008-4274-9941-662c3a4085b3/B8097_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/85b3/7c24c927-b008-4274-9941-662c3a4085b3/B8097.mp3\" expression=\"full\" duration=\"2923\" fileSize=\"46776447\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/85b3/7c24c927-b008-4274-9941-662c3a4085b3/B8097.mp4\" expression=\"full\" duration=\"2923\" fileSize=\"53137976\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/85b3/7c24c927-b008-4274-9941-662c3a4085b3/B8097_high.mp4\" expression=\"full\" duration=\"2923\" fileSize=\"556511938\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/85b3/7c24c927-b008-4274-9941-662c3a4085b3/B8097_mid.mp4\" expression=\"full\" duration=\"2923\" fileSize=\"112912922\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8097.mp4\" expression=\"full\" duration=\"2923\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Ten things you didn’t know about Visual Studio 2017 for building .NET UWP apps</title>\n    <description><![CDATA[<p>With the new Windows 10 Creators Update, .NET Standard, and changes to NuGet, there is a lot going on in the world of .NET Windows development. We made this session to keep you up to date with the new tools for UWP development. Improvements have been made all around - from installation and getting started, all the way to tools that help you test and publish your apps. Along the way we show you tips and tricks to accelerate your Windows app development.</p><div class=\"itemBody holder\"><div class=\"container\"><div class=\"ch9tabGroup descriptionEmbedFormat\"><div class=\"ch9tabContent\" dir=\"ltr\" lang=\"en\"><p>To find out more about Windows Template Studio, head to <a href=\"https://aka.ms/wts\">https://aka.ms/wts</a>. If you want to install, go to <a href=\"https://aka.ms/wtsinstall\">https://aka.ms/wtsinstall</a>.</p></div></div></div></div> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:79d09cc7e5734e57a3a5a768001c66a4\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8096</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8096</link>\n    <itunes:summary>With the new Windows 10 Creators Update, .NET Standard, and changes to NuGet, there is a lot going on in the world of .NET Windows development. We made this session to keep you up to date with the new tools for UWP development. Improvements have been made all around - from installation and getting started, all the way to tools that help you test and publish your apps. Along the way we show you tips and tricks to accelerate your Windows app development. To find out more about Windows Template Studio, head to https://aka.ms/wts. If you want to install, go to https://aka.ms/wtsinstall. </itunes:summary>\n    <itunes:duration>3115</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8096</guid>\n    <dc:creator>Clint Rutkas, Daniel Jacobson</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>visual+studio</category>\n    <category>windows+template+studio</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/e695/2b64220a-a141-4d4f-a98f-2b8a01e8e695/B8096_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/e695/2b64220a-a141-4d4f-a98f-2b8a01e8e695/B8096_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/e695/2b64220a-a141-4d4f-a98f-2b8a01e8e695/B8096_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e695/2b64220a-a141-4d4f-a98f-2b8a01e8e695/B8096.mp3\" expression=\"full\" duration=\"3115\" fileSize=\"49850410\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e695/2b64220a-a141-4d4f-a98f-2b8a01e8e695/B8096.mp4\" expression=\"full\" duration=\"3115\" fileSize=\"62119419\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e695/2b64220a-a141-4d4f-a98f-2b8a01e8e695/B8096_high.mp4\" expression=\"full\" duration=\"3115\" fileSize=\"635264495\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/e695/2b64220a-a141-4d4f-a98f-2b8a01e8e695/B8096_mid.mp4\" expression=\"full\" duration=\"3115\" fileSize=\"156978148\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8096.mp4\" expression=\"full\" duration=\"3115\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Visual Studio for Mac</title>\n    <description><![CDATA[<p>Visual Studio for Mac has just been released! Come join us for a tour of this fully-featured IDE that will help every Mac developer create mobile and cloud applications. We started with a solid foundation for mobile development using Xamarin, and cloud development using .NET Core and recently added ASP.NET Core support. We’ve just announced support for game development with Unity, and new preview features for Azure developers using Docker or Azure Functions. In this hour and a half, learn about the basics of the IDE such as navigation, debugging, code editing, and refactoring tools to ease your C# and F# development. We also take a whirlwind tour through the mobile and cloud features included in the IDE. Finally, we look at what’s coming up next.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:0a6469c7088042d4a756a768001c664b\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8095</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8095</link>\n    <itunes:summary>Visual Studio for Mac has just been released! Come join us for a tour of this fully-featured IDE that will help every Mac developer create mobile and cloud applications. We started with a solid foundation for mobile development using Xamarin, and cloud development using .NET Core and recently added ASP.NET Core support. We’ve just announced support for game development with Unity, and new preview features for Azure developers using Docker or Azure Functions. In this hour and a half, learn about the basics of the IDE such as navigation, debugging, code editing, and refactoring tools to ease your C# and F# development. We also take a whirlwind tour through the mobile and cloud features included in the IDE. Finally, we look at what’s coming up next. </itunes:summary>\n    <itunes:duration>3630</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8095</guid>\n    <dc:creator>Miguel de Icaza, Joseph Hill, Kendra Havens</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/c8c7/be96ecfb-8cbb-42b1-8059-b45fbc61c8c7/B8095_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c8c7/be96ecfb-8cbb-42b1-8059-b45fbc61c8c7/B8095.mp3\" expression=\"full\" duration=\"3630\" fileSize=\"58088394\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c8c7/be96ecfb-8cbb-42b1-8059-b45fbc61c8c7/B8095.mp4\" expression=\"full\" duration=\"3630\" fileSize=\"77913199\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c8c7/be96ecfb-8cbb-42b1-8059-b45fbc61c8c7/B8095_high.mp4\" expression=\"full\" duration=\"3630\" fileSize=\"819582502\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c8c7/be96ecfb-8cbb-42b1-8059-b45fbc61c8c7/B8095_mid.mp4\" expression=\"full\" duration=\"3630\" fileSize=\"203240097\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8095.mp4\" expression=\"full\" duration=\"3630\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Visual Studio Code: Conquer the cloud with an editor and a CLI</title>\n    <description><![CDATA[Bring your laptop and VS Code and in less than 60 minutes learn how to configure Code for great editing, navigation, linting, and debugging experiences building modern Node.js based (MEAN, MERN, etc.) applications. Learn how to use a rich set of (new!) extensions to build, deploy, and diagnose (containerized!) cloud apps that run on Azure PaaS services (App Service, DocDB, and more). Also, set up Team System for continuous deployment. Throughout it all, leverage the new Azure cross platform CLI, enhanced with VS Code’s signature rich editing experiences. Conquer the cloud with VS Code! <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:071e8bee4e164173b2a5a768001c660e\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8094</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8094</link>\n    <itunes:summary>Bring your laptop and VS Code and in less than 60 minutes learn how to configure Code for great editing, navigation, linting, and debugging experiences building modern Node.js based (MEAN, MERN, etc.) applications. Learn how to use a rich set of (new!) extensions to build, deploy, and diagnose (containerized!) cloud apps that run on Azure PaaS services (App Service, DocDB, and more). Also, set up Team System for continuous deployment. Throughout it all, leverage the new Azure cross platform CLI, enhanced with VS Code’s signature rich editing experiences. Conquer the cloud with VS Code!</itunes:summary>\n    <itunes:duration>3516</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8094</guid>\n    <dc:creator>Jonathan Carter, Chris Dias</dc:creator>\n    <category>containers</category>\n    <category>node.js</category>\n    <category>visual+studio+code</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/66bf/faa98d9c-3b80-47af-867d-95f4e48a66bf/B8094_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/66bf/faa98d9c-3b80-47af-867d-95f4e48a66bf/B8094.mp3\" expression=\"full\" duration=\"3516\" fileSize=\"56269698\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/66bf/faa98d9c-3b80-47af-867d-95f4e48a66bf/B8094.mp4\" expression=\"full\" duration=\"3516\" fileSize=\"69570031\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/66bf/faa98d9c-3b80-47af-867d-95f4e48a66bf/B8094_high.mp4\" expression=\"full\" duration=\"3516\" fileSize=\"497616858\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/66bf/faa98d9c-3b80-47af-867d-95f4e48a66bf/B8094_mid.mp4\" expression=\"full\" duration=\"3516\" fileSize=\"151290804\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8094.mp4\" expression=\"full\" duration=\"3516\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Nextgen UWP app distribution:  Building extensible, stream-able, componentized apps</title>\n    <description><![CDATA[With the Windows 10 Creators Update we have grown the Universal Windows Platform for building, selling, and distributing apps. Learn how to quickly engage your user with streaming app installation. The session also covers how you can use optional packages to extend your existing apps and what optional packages mean for distribution, monetization, and user experience. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:a62d306e0d864f8d9237a768001c6594\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8093</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8093</link>\n    <itunes:summary>With the Windows 10 Creators Update we have grown the Universal Windows Platform for building, selling, and distributing apps. Learn how to quickly engage your user with streaming app installation. The session also covers how you can use optional packages to extend your existing apps and what optional packages mean for distribution, monetization, and user experience.</itunes:summary>\n    <itunes:duration>3742</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8093</guid>\n    <dc:creator>John Vintzel, Sandeep George</dc:creator>\n    <category>app+model</category>\n    <category>universal+windows+platform+uwp</category>\n    <category>enterprise</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/acd1/8aba7ee2-d56a-4931-838d-08d3f9b4acd1/B8093_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/acd1/8aba7ee2-d56a-4931-838d-08d3f9b4acd1/B8093_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/acd1/8aba7ee2-d56a-4931-838d-08d3f9b4acd1/B8093_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/acd1/8aba7ee2-d56a-4931-838d-08d3f9b4acd1/B8093.mp3\" expression=\"full\" duration=\"3742\" fileSize=\"59882045\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/acd1/8aba7ee2-d56a-4931-838d-08d3f9b4acd1/B8093.mp4\" expression=\"full\" duration=\"3742\" fileSize=\"73593877\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/acd1/8aba7ee2-d56a-4931-838d-08d3f9b4acd1/B8093_high.mp4\" expression=\"full\" duration=\"3742\" fileSize=\"675823879\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/acd1/8aba7ee2-d56a-4931-838d-08d3f9b4acd1/B8093_mid.mp4\" expression=\"full\" duration=\"3742\" fileSize=\"170690160\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8093.mp4\" expression=\"full\" duration=\"3742\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Using Microsoft Cognitive Services to bring the power of speech recognition to your apps</title>\n    <description><![CDATA[<p>Learn about Microsoft Cognitive Services Speech APIs - Bing Speech, Customer Speech Service and Speaker Recognition - and how they recognize audio, speech and individual speakers to bring the power of speech to your apps.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:44f21bb191864a8cb9afa768001c64f9\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8092</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8092</link>\n    <itunes:summary>Learn about Microsoft Cognitive Services Speech APIs - Bing Speech, Customer Speech Service and Speaker Recognition - and how they recognize audio, speech and individual speakers to bring the power of speech to your apps. </itunes:summary>\n    <itunes:duration>3880</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8092</guid>\n    <dc:creator>Khuram Shahid, Panos Periorellis, Ivo Santos</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>cognitive+services</category>\n    <category>machine+learning</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/f453/c0438bb0-390b-40a1-9a40-5a55f709f453/B8092_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f453/c0438bb0-390b-40a1-9a40-5a55f709f453/B8092.mp3\" expression=\"full\" duration=\"3880\" fileSize=\"62086594\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f453/c0438bb0-390b-40a1-9a40-5a55f709f453/B8092.mp4\" expression=\"full\" duration=\"3880\" fileSize=\"69876631\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f453/c0438bb0-390b-40a1-9a40-5a55f709f453/B8092_high.mp4\" expression=\"full\" duration=\"3880\" fileSize=\"449763942\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/f453/c0438bb0-390b-40a1-9a40-5a55f709f453/B8092_mid.mp4\" expression=\"full\" duration=\"3880\" fileSize=\"143235414\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8092.mp4\" expression=\"full\" duration=\"3880\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Build intelligence into your business apps with ease using Bing APIs in Microsoft Cognitive Services</title>\n    <description><![CDATA[The Bing API's in Cognitive Services let you bring the intelligence and knowledge of the planet to your app in just a few lines of code. Join us to learn about the Bing Search APIs, get a sneak peek at the next version of “Search” APIs, and learn how you can leverage these services in conjunction with the Microsoft Bot Framework to build an intelligent assistant. See useful demos, experience the simplicity of calling this code, and get ideas for adding this functionality to your own applications. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:190c0997e623412aa21ca768001c6472\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8091</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8091</link>\n    <itunes:summary>The Bing API&#39;s in Cognitive Services let you bring the intelligence and knowledge of the planet to your app in just a few lines of code. Join us to learn about the Bing Search APIs, get a sneak peek at the next version of “Search” APIs, and learn how you can leverage these services in conjunction with the Microsoft Bot Framework to build an intelligent assistant. See useful demos, experience the simplicity of calling this code, and get ideas for adding this functionality to your own applications.</itunes:summary>\n    <itunes:duration>2755</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8091</guid>\n    <dc:creator>Ansuman Kar, Brian King</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>cognitive+services</category>\n    <category>bing</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/1512/5245526b-012b-415d-bfd8-3fd4eb261512/B8091_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1512/5245526b-012b-415d-bfd8-3fd4eb261512/B8091_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/1512/5245526b-012b-415d-bfd8-3fd4eb261512/B8091_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1512/5245526b-012b-415d-bfd8-3fd4eb261512/B8091.mp3\" expression=\"full\" duration=\"2755\" fileSize=\"44086996\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1512/5245526b-012b-415d-bfd8-3fd4eb261512/B8091.mp4\" expression=\"full\" duration=\"2755\" fileSize=\"55797976\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1512/5245526b-012b-415d-bfd8-3fd4eb261512/B8091_high.mp4\" expression=\"full\" duration=\"2755\" fileSize=\"369371985\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/1512/5245526b-012b-415d-bfd8-3fd4eb261512/B8091_mid.mp4\" expression=\"full\" duration=\"2755\" fileSize=\"131688926\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8091.mp4\" expression=\"full\" duration=\"2755\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How Microsoft Cognitive Services can help your apps communicate with people</title>\n    <description><![CDATA[Microsoft Cognitive Services Language APIs - Bing Spell Check, Language Understanding, Linguistic Analysis, Text Analytics, Translator and Web LM - can enable your apps to understand language and communicate with people. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:243378ff438a4d6c8c1da768001c6374\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8090</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8090</link>\n    <itunes:summary>Microsoft Cognitive Services Language APIs - Bing Spell Check, Language Understanding, Linguistic Analysis, Text Analytics, Translator and Web LM - can enable your apps to understand language and communicate with people.</itunes:summary>\n    <itunes:duration>3783</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8090</guid>\n    <dc:creator>Darren Jefford</dc:creator>\n    <category>artificial+intelligence</category>\n    <category>cognitive+services</category>\n    <category>machine+learning</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/2305/dbdb1a03-6fc9-4770-b7b0-f87764ec2305/B8090_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2305/dbdb1a03-6fc9-4770-b7b0-f87764ec2305/B8090.mp3\" expression=\"full\" duration=\"3783\" fileSize=\"60537125\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2305/dbdb1a03-6fc9-4770-b7b0-f87764ec2305/B8090.mp4\" expression=\"full\" duration=\"3783\" fileSize=\"66991551\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2305/dbdb1a03-6fc9-4770-b7b0-f87764ec2305/B8090_high.mp4\" expression=\"full\" duration=\"3783\" fileSize=\"559613109\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/2305/dbdb1a03-6fc9-4770-b7b0-f87764ec2305/B8090_mid.mp4\" expression=\"full\" duration=\"3783\" fileSize=\"151130187\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8090.mp4\" expression=\"full\" duration=\"3783\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>What&#39;s new in TypeScript?</title>\n    <description><![CDATA[<p>TypeScript continues its growth journey with more and more JavaScript developers and framework authors taking advantage of the excellent tooling and productivity boost that TypeScript provides in order to create apps that scale. In this session, we talk about the Typescript journey with a focus on some of the most exciting recent features and a preview of things to come. Apart from the language and tools enhancements, see efforts already underway to bring some of the power of TypeScript to existing JavaScript projects.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:5da75cbad921410d90f4a768001c6309\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8088</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8088</link>\n    <itunes:summary>TypeScript continues its growth journey with more and more JavaScript developers and framework authors taking advantage of the excellent tooling and productivity boost that TypeScript provides in order to create apps that scale. In this session, we talk about the Typescript journey with a focus on some of the most exciting recent features and a preview of things to come. Apart from the language and tools enhancements, see efforts already underway to bring some of the power of TypeScript to existing JavaScript projects. </itunes:summary>\n    <itunes:duration>3636</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8088</guid>\n    <dc:creator>Anders Hejlsberg</dc:creator>\n    <category>typescript</category>\n    <category>javascript</category>\n\t\t<media:thumbnail url=\"https://f.ch9.ms/thumbnail/9a202a48-4a34-4bd2-a7db-d45b7bc00a4d.png\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/3418/c38b5045-5fad-45ab-a058-e51b7ebb3418/B8088_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3418/c38b5045-5fad-45ab-a058-e51b7ebb3418/B8088.mp3\" expression=\"full\" duration=\"3636\" fileSize=\"58180766\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3418/c38b5045-5fad-45ab-a058-e51b7ebb3418/B8088.mp4\" expression=\"full\" duration=\"3636\" fileSize=\"84230846\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3418/c38b5045-5fad-45ab-a058-e51b7ebb3418/B8088_high.mp4\" expression=\"full\" duration=\"3636\" fileSize=\"759596763\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3418/c38b5045-5fad-45ab-a058-e51b7ebb3418/B8088_mid.mp4\" expression=\"full\" duration=\"3636\" fileSize=\"197743343\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8088.mp4\" expression=\"full\" duration=\"3636\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Azure Compute: New features and roadmap</title>\n    <description><![CDATA[<p>A can’t-miss session for everyone building in the cloud! We take a look at some of the newest features and upcoming capabilities in the Azure Compute platform. We show some new sizes, new experiences, and new integration technology available at //build or coming soon across VMs, Azure Service Fabric, Azure Container Service, Azure Functions, and more.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:7f270052bbb1432fbaa4a768001c62b4\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8087</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8087</link>\n    <itunes:summary>A can’t-miss session for everyone building in the cloud! We take a look at some of the newest features and upcoming capabilities in the Azure Compute platform. We show some new sizes, new experiences, and new integration technology available at //build or coming soon across VMs, Azure Service Fabric, Azure Container Service, Azure Functions, and more. </itunes:summary>\n    <itunes:duration>3506</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8087</guid>\n    <dc:creator>Corey Sanders</dc:creator>\n    <category>azure</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/c25b/3c2748e6-ada7-4be7-91d3-ac4f0102c25b/B8087_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c25b/3c2748e6-ada7-4be7-91d3-ac4f0102c25b/B8087.mp3\" expression=\"full\" duration=\"3506\" fileSize=\"56107722\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c25b/3c2748e6-ada7-4be7-91d3-ac4f0102c25b/B8087.mp4\" expression=\"full\" duration=\"3506\" fileSize=\"90588265\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c25b/3c2748e6-ada7-4be7-91d3-ac4f0102c25b/B8087_high.mp4\" expression=\"full\" duration=\"3506\" fileSize=\"757569864\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c25b/3c2748e6-ada7-4be7-91d3-ac4f0102c25b/B8087_mid.mp4\" expression=\"full\" duration=\"3506\" fileSize=\"219646997\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8087.mp4\" expression=\"full\" duration=\"3506\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Office 365 as a platform: Reach 100 million Microsoft Office users with your web applications</title>\n    <description><![CDATA[Learn about the latest that Office has to offer developers, from Microsoft Teams extensibility and the Microsoft Graph to Office add-ins and Office UI Fabric. Get a demo-packed overview of the platform, and a guide to Office sessions you should see through the rest of the conference. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:75eccbad3e434f9790b2a768001c628a\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8086</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8086</link>\n    <itunes:summary>Learn about the latest that Office has to offer developers, from Microsoft Teams extensibility and the Microsoft Graph to Office add-ins and Office UI Fabric. Get a demo-packed overview of the platform, and a guide to Office sessions you should see through the rest of the conference.</itunes:summary>\n    <itunes:duration>3638</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8086</guid>\n    <dc:creator>Rob Howard, Tristan Davis</dc:creator>\n    <category>office</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/c6e4/8388f20d-c35b-47c4-9395-82738203c6e4/B8086_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c6e4/8388f20d-c35b-47c4-9395-82738203c6e4/B8086.mp3\" expression=\"full\" duration=\"3638\" fileSize=\"58218525\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c6e4/8388f20d-c35b-47c4-9395-82738203c6e4/B8086.mp4\" expression=\"full\" duration=\"3638\" fileSize=\"69852956\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c6e4/8388f20d-c35b-47c4-9395-82738203c6e4/B8086_high.mp4\" expression=\"full\" duration=\"3638\" fileSize=\"573343652\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c6e4/8388f20d-c35b-47c4-9395-82738203c6e4/B8086_mid.mp4\" expression=\"full\" duration=\"3638\" fileSize=\"152247731\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8086.mp4\" expression=\"full\" duration=\"3638\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>The road to commercialization for your Windows IoT solution&#160;</title>\n    <description><![CDATA[<p>With Windows 10 IoT Core we have made it so anyone can build and commercialize things—intelligent, connected devices—with apps. In this session, entrepreneurs, product owners and developers learn how to create IoT solutions with Windows IoT Core. We detail the path to commercialization and how to prototype, configure, deploy, manage, and sunset your devices. Learn how to harness enterprise-grade scalable OS updates and application servicing. We go in-depth on how to defend against modern security threats and how to lock down your devices from physical and remote attacks. Developers learn how they can be productive utilizing familiar tools and languages to rapidly build solutions and how to leverage the new capabilities of RS2.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:6feb3acd884741d1bd64a768001c623a\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8085</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8085</link>\n    <itunes:summary>With Windows 10 IoT Core we have made it so anyone can build and commercialize things—intelligent, connected devices—with apps. In this session, entrepreneurs, product owners and developers learn how to create IoT solutions with Windows IoT Core. We detail the path to commercialization and how to prototype, configure, deploy, manage, and sunset your devices. Learn how to harness enterprise-grade scalable OS updates and application servicing. We go in-depth on how to defend against modern security threats and how to lock down your devices from physical and remote attacks. Developers learn how they can be productive utilizing familiar tools and languages to rapidly build solutions and how to leverage the new capabilities of RS2. </itunes:summary>\n    <itunes:duration>1607</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8085</guid>\n    <dc:creator>Jason Farmer</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>internet+of+things</category>\n    <category>windows+iot</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/0c48/86897754-891b-40c5-b5d8-b6d59b9e0c48/B8085_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/0c48/86897754-891b-40c5-b5d8-b6d59b9e0c48/B8085_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/0c48/86897754-891b-40c5-b5d8-b6d59b9e0c48/B8085_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0c48/86897754-891b-40c5-b5d8-b6d59b9e0c48/B8085.mp3\" expression=\"full\" duration=\"1607\" fileSize=\"25719806\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0c48/86897754-891b-40c5-b5d8-b6d59b9e0c48/B8085.mp4\" expression=\"full\" duration=\"1607\" fileSize=\"30123969\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0c48/86897754-891b-40c5-b5d8-b6d59b9e0c48/B8085_high.mp4\" expression=\"full\" duration=\"1607\" fileSize=\"213105831\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/0c48/86897754-891b-40c5-b5d8-b6d59b9e0c48/B8085_mid.mp4\" expression=\"full\" duration=\"1607\" fileSize=\"59414293\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8085.mp4\" expression=\"full\" duration=\"1607\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>The keys to the cloud: Use Microsoft identities to sign in and access API from your mobile and web apps</title>\n    <description><![CDATA[Microsoft identities are the entry point for every Microsoft cloud API and a large ecosystem of SaaS apps. Join the 150,000 apps active today in Azure Active Directory, making your apps available to more than 100M active business users! Based on the same enterprise-grade infrastructure, Azure AD B2C provides to your apps their own hosted identity system – offering social providers integration, local accounts, and advanced customization you can add to your app in minutes. Attend this session and learn how you can easily integrate with Microsoft identities in your mobile and web apps, thanks to the new MSAL libraries. Build a data-rich application thanks to the power of Microsoft Graph API and the rich data about users, groups, mail, calendar, docs, and more. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:05bc7fe592ab4eb89469a768001c61d8\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8084</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8084</link>\n    <itunes:summary>Microsoft identities are the entry point for every Microsoft cloud API and a large ecosystem of SaaS apps. Join the 150,000 apps active today in Azure Active Directory, making your apps available to more than 100M active business users! Based on the same enterprise-grade infrastructure, Azure AD B2C provides to your apps their own hosted identity system – offering social providers integration, local accounts, and advanced customization you can add to your app in minutes. Attend this session and learn how you can easily integrate with Microsoft identities in your mobile and web apps, thanks to the new MSAL libraries. Build a data-rich application thanks to the power of Microsoft Graph API and the rich data about users, groups, mail, calendar, docs, and more.</itunes:summary>\n    <itunes:duration>3651</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8084</guid>\n    <dc:creator>Vittorio Bertocci</dc:creator>\n    <category>azure+active+directory</category>\n    <category>azure+active+directory+b2c</category>\n    <category>microsoft+graph</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/c2f8/9c051fa9-1425-4cc4-af3c-1225a0fac2f8/B8084_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c2f8/9c051fa9-1425-4cc4-af3c-1225a0fac2f8/B8084.mp3\" expression=\"full\" duration=\"3651\" fileSize=\"58427494\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c2f8/9c051fa9-1425-4cc4-af3c-1225a0fac2f8/B8084.mp4\" expression=\"full\" duration=\"3651\" fileSize=\"68011595\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c2f8/9c051fa9-1425-4cc4-af3c-1225a0fac2f8/B8084_high.mp4\" expression=\"full\" duration=\"3651\" fileSize=\"494768659\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/c2f8/9c051fa9-1425-4cc4-af3c-1225a0fac2f8/B8084_mid.mp4\" expression=\"full\" duration=\"3651\" fileSize=\"141920207\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8084.mp4\" expression=\"full\" duration=\"3651\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>The future of Visual Studio</title>\n    <description><![CDATA[<p>Even though we only just released Visual Studio 2017 a couple of months ago, the team has been busy. In this session we take you on a rollercoaster ride through a number of features we’re working on. We show you investments we’re making to increase development productivity, how we’re bringing testing and code analysis even more deeply into the development “inner loop”, and highlight new areas that we’re working on to extend Visual Studio to new platforms and application categories. Expect a demo-heavy, so-new-the-paint-hasn’t-dried session!</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:26748dadf830422e973ca768001c61ae\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8083</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8083</link>\n    <itunes:summary>Even though we only just released Visual Studio 2017 a couple of months ago, the team has been busy. In this session we take you on a rollercoaster ride through a number of features we’re working on. We show you investments we’re making to increase development productivity, how we’re bringing testing and code analysis even more deeply into the development “inner loop”, and highlight new areas that we’re working on to extend Visual Studio to new platforms and application categories. Expect a demo-heavy, so-new-the-paint-hasn’t-dried session! </itunes:summary>\n    <itunes:duration>3780</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8083</guid>\n    <dc:creator>Tim Sneath, Amanda Silver</dc:creator>\n    <category>visual+studio</category>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/8746/18a82030-e1bb-44cb-a698-0e79ccbc8746/B8083_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/8746/18a82030-e1bb-44cb-a698-0e79ccbc8746/B8083_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/8746/18a82030-e1bb-44cb-a698-0e79ccbc8746/B8083_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8746/18a82030-e1bb-44cb-a698-0e79ccbc8746/B8083.mp3\" expression=\"full\" duration=\"3780\" fileSize=\"60493216\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8746/18a82030-e1bb-44cb-a698-0e79ccbc8746/B8083.mp4\" expression=\"full\" duration=\"3780\" fileSize=\"85537516\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8746/18a82030-e1bb-44cb-a698-0e79ccbc8746/B8083_high.mp4\" expression=\"full\" duration=\"3780\" fileSize=\"834140321\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/8746/18a82030-e1bb-44cb-a698-0e79ccbc8746/B8083_mid.mp4\" expression=\"full\" duration=\"3780\" fileSize=\"205916928\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8083.mp4\" expression=\"full\" duration=\"3780\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Surviving success: Performance tuning under pressure</title>\n    <description><![CDATA[Rapid and runaway success is the best way to expose all of the gaps, rough edges and pain points in your back end services.&nbsp;Under live-site pressure to fix issues, making the crucial set of engineering choices and investments can be challenging.&nbsp; This session will take a hands-on walk through scaling a representative back-end application (written in .NET Core and Docker on Linux) from hundreds to hundreds of thousands of requests per second, illustrating data, techniques, and common performance barriers from real customer deployments. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:d556ed35888c40f18e64a768001c6163\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8082</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8082</link>\n    <itunes:summary>Rapid and runaway success is the best way to expose all of the gaps, rough edges and pain points in your back end services. Under live-site pressure to fix issues, making the crucial set of engineering choices and investments can be challenging.  This session will take a hands-on walk through scaling a representative back-end application (written in .NET Core and Docker on Linux) from hundreds to hundreds of thousands of requests per second, illustrating data, techniques, and common performance barriers from real customer deployments.</itunes:summary>\n    <itunes:duration>3563</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8082</guid>\n    <dc:creator>Mark Simms</dc:creator>\n    <category>docker</category>\n    <category>linux</category>\n    <category>.net+core</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/605d/b137fd93-58d6-470c-a180-fd02fee9605d/B8082_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/605d/b137fd93-58d6-470c-a180-fd02fee9605d/B8082_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/605d/b137fd93-58d6-470c-a180-fd02fee9605d/B8082_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/605d/b137fd93-58d6-470c-a180-fd02fee9605d/B8082.mp3\" expression=\"full\" duration=\"3563\" fileSize=\"57023822\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/605d/b137fd93-58d6-470c-a180-fd02fee9605d/B8082.mp4\" expression=\"full\" duration=\"3563\" fileSize=\"68336881\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/605d/b137fd93-58d6-470c-a180-fd02fee9605d/B8082_high.mp4\" expression=\"full\" duration=\"3563\" fileSize=\"488396114\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/605d/b137fd93-58d6-470c-a180-fd02fee9605d/B8082_mid.mp4\" expression=\"full\" duration=\"3563\" fileSize=\"146264050\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8082.mp4\" expression=\"full\" duration=\"3563\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>How to serve AI with data: The future of the Microsoft Data Platform</title>\n    <description><![CDATA[The cloud is truly becoming the “brain” for our connected planet. You’re not just running algorithms in the cloud, rather you’re connecting that with data from sensors from around the world. By bringing data into the cloud, you can integrate all of the information, apply machine learning and AI on top of that, and deliver apps that are continuously learning and evolving in the cloud. Consequently, the devices and applications connected to cloud are learning and becoming increasingly intelligent. Please join us on a journey through the core new patterns that are emerging as we bring advanced intelligence, the cloud, IoT, and big data together. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:ac45cfa64e19424a9df2a768001c6134\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8081</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8081</link>\n    <itunes:summary>The cloud is truly becoming the “brain” for our connected planet. You’re not just running algorithms in the cloud, rather you’re connecting that with data from sensors from around the world. By bringing data into the cloud, you can integrate all of the information, apply machine learning and AI on top of that, and deliver apps that are continuously learning and evolving in the cloud. Consequently, the devices and applications connected to cloud are learning and becoming increasingly intelligent. Please join us on a journey through the core new patterns that are emerging as we bring advanced intelligence, the cloud, IoT, and big data together.</itunes:summary>\n    <itunes:duration>3776</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8081</guid>\n    <dc:creator>Joseph Sirosh, Alex Miller</dc:creator>\n    <category>intelligent+app</category>\n    <category>artificial+intelligence</category>\n    <category>data</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/98b7/b11dd1bd-af55-4420-a350-1bdf456098b7/B8081_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/98b7/b11dd1bd-af55-4420-a350-1bdf456098b7/B8081_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/98b7/b11dd1bd-af55-4420-a350-1bdf456098b7/B8081_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/98b7/b11dd1bd-af55-4420-a350-1bdf456098b7/B8081.mp3\" expression=\"full\" duration=\"3776\" fileSize=\"60421141\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/98b7/b11dd1bd-af55-4420-a350-1bdf456098b7/B8081.mp4\" expression=\"full\" duration=\"3776\" fileSize=\"90782240\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/98b7/b11dd1bd-af55-4420-a350-1bdf456098b7/B8081_high.mp4\" expression=\"full\" duration=\"3776\" fileSize=\"799785159\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/98b7/b11dd1bd-af55-4420-a350-1bdf456098b7/B8081_mid.mp4\" expression=\"full\" duration=\"3776\" fileSize=\"229113321\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8081.mp4\" expression=\"full\" duration=\"3776\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Microsoft SQL Server 2017 in the modern datacenter: how to run on Linux, Docker, OpenShift, and Kubernetes</title>\n    <description><![CDATA[With the on-premises data center evolving into a private cloud, the fast pace of innovation in public clouds, and the strong interest in container technology it begs the question: How do you run a database in this new environment? In this session we examine what it means that SQL Server is evolving to support both Windows and Linux, including running inside a container on both platforms. Should you run SQL Server inside a Docker container? How does it play with orchestration technologies like OpenShift and Kubernetes? The brief answer is that we believe SQL Server should be ubiquitous and run in our customers environment of choice. Come to the session to hear the long answer with a bunch of demos! <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:9c00f6229722483f9417a768001c609e\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8080</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8080</link>\n    <itunes:summary>With the on-premises data center evolving into a private cloud, the fast pace of innovation in public clouds, and the strong interest in container technology it begs the question: How do you run a database in this new environment? In this session we examine what it means that SQL Server is evolving to support both Windows and Linux, including running inside a container on both platforms. Should you run SQL Server inside a Docker container? How does it play with orchestration technologies like OpenShift and Kubernetes? The brief answer is that we believe SQL Server should be ubiquitous and run in our customers environment of choice. Come to the session to hear the long answer with a bunch of demos!</itunes:summary>\n    <itunes:duration>3565</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8080</guid>\n    <dc:creator>Travis Wright, Tobias Ternstrom</dc:creator>\n    <category>docker</category>\n    <category>sql+server</category>\n    <category>linux+containers</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/3e00/5b35e76f-15b0-442d-999a-6065b66c3e00/B8080_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3e00/5b35e76f-15b0-442d-999a-6065b66c3e00/B8080_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/3e00/5b35e76f-15b0-442d-999a-6065b66c3e00/B8080_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3e00/5b35e76f-15b0-442d-999a-6065b66c3e00/B8080.mp3\" expression=\"full\" duration=\"3565\" fileSize=\"57055835\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3e00/5b35e76f-15b0-442d-999a-6065b66c3e00/B8080.mp4\" expression=\"full\" duration=\"3565\" fileSize=\"70333580\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3e00/5b35e76f-15b0-442d-999a-6065b66c3e00/B8080_high.mp4\" expression=\"full\" duration=\"3565\" fileSize=\"590009328\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/3e00/5b35e76f-15b0-442d-999a-6065b66c3e00/B8080_mid.mp4\" expression=\"full\" duration=\"3565\" fileSize=\"163597014\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8080.mp4\" expression=\"full\" duration=\"3565\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Slice, dice, and route your SharePoint documents with Microsoft Flow, Azure Logic Apps and Microsoft PowerApps&#160;</title>\n    <description><![CDATA[Developers can build modern business process applications with Microsoft Flow and PowerApps and extend them with Azure Functions to fully customize how content flows within their organization.&nbsp; <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:056e9a1732b547a69218a768001c601f\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8079</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8079</link>\n    <itunes:summary>Developers can build modern business process applications with Microsoft Flow and PowerApps and extend them with Azure Functions to fully customize how content flows within their organization. </itunes:summary>\n    <itunes:duration>3864</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8079</guid>\n    <dc:creator>Kerem Yuceturk, Merwan Hade</dc:creator>\n    <category>office</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/41c1/d05d7f04-60f9-4182-b37e-e06d80c541c1/B8079_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/41c1/d05d7f04-60f9-4182-b37e-e06d80c541c1/B8079_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"http://video.ch9.ms/ch9/41c1/d05d7f04-60f9-4182-b37e-e06d80c541c1/B8079_Custom.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/41c1/d05d7f04-60f9-4182-b37e-e06d80c541c1/B8079.mp3\" expression=\"full\" duration=\"3864\" fileSize=\"61838917\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/41c1/d05d7f04-60f9-4182-b37e-e06d80c541c1/B8079.mp4\" expression=\"full\" duration=\"3864\" fileSize=\"73436404\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/41c1/d05d7f04-60f9-4182-b37e-e06d80c541c1/B8079_high.mp4\" expression=\"full\" duration=\"3864\" fileSize=\"652586958\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/41c1/d05d7f04-60f9-4182-b37e-e06d80c541c1/B8079_mid.mp4\" expression=\"full\" duration=\"3864\" fileSize=\"166693996\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8079.mp4\" expression=\"full\" duration=\"3864\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>SignalR .NET Core: Realtime cross-platform open web communication</title>\n    <description><![CDATA[<p>SignalR is being reimagined for ASP.NET Core. In this session, we explore how we’re bringing the real-time web goodness you know and love to ASP.NET Core, while laying the foundations for bigger and bolder capabilities beyond HTTP.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:13edd14384224412bd6ba768001c5fd4\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8078</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8078</link>\n    <itunes:summary>SignalR is being reimagined for ASP.NET Core. In this session, we explore how we’re bringing the real-time web goodness you know and love to ASP.NET Core, while laying the foundations for bigger and bolder capabilities beyond HTTP. </itunes:summary>\n    <itunes:duration>3621</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8078</guid>\n    <dc:creator>Damian Edwards, David Fowler</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/a6b6/be9b834e-1fc5-4e0d-9672-1e41a59aa6b6/B8078_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a6b6/be9b834e-1fc5-4e0d-9672-1e41a59aa6b6/B8078.mp3\" expression=\"full\" duration=\"3621\" fileSize=\"57945162\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a6b6/be9b834e-1fc5-4e0d-9672-1e41a59aa6b6/B8078.mp4\" expression=\"full\" duration=\"3621\" fileSize=\"75684742\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a6b6/be9b834e-1fc5-4e0d-9672-1e41a59aa6b6/B8078_high.mp4\" expression=\"full\" duration=\"3621\" fileSize=\"381309738\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/a6b6/be9b834e-1fc5-4e0d-9672-1e41a59aa6b6/B8078_mid.mp4\" expression=\"full\" duration=\"3621\" fileSize=\"162686396\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8078.mp4\" expression=\"full\" duration=\"3621\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Serving AI with data: How to use R, Python, and machine learning with Microsoft SQL Server 2017</title>\n    <description><![CDATA[In this session, learn how to use R and Python to perform statistical and machine learning tasks in SQL Server 2017. Also, learn how to operationalize your R or Python scripts using the SQL Server integration. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:3eab84c4f52849d09e50a768001c5f93\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8076</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8076</link>\n    <itunes:summary>In this session, learn how to use R and Python to perform statistical and machine learning tasks in SQL Server 2017. Also, learn how to operationalize your R or Python scripts using the SQL Server integration.</itunes:summary>\n    <itunes:duration>4231</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8076</guid>\n    <dc:creator>Umachandar Jayachandran, Nellie Gustafsson</dc:creator>\n    <category>sql+server</category>\n    <category>r</category>\n    <category>python</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/40a1/02e66a03-214e-4302-94da-9fb66e4040a1/B8076_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/40a1/02e66a03-214e-4302-94da-9fb66e4040a1/B8076.mp3\" expression=\"full\" duration=\"4231\" fileSize=\"67705665\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/40a1/02e66a03-214e-4302-94da-9fb66e4040a1/B8076.mp4\" expression=\"full\" duration=\"4231\" fileSize=\"79643805\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/40a1/02e66a03-214e-4302-94da-9fb66e4040a1/B8076_high.mp4\" expression=\"full\" duration=\"4231\" fileSize=\"586350942\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/40a1/02e66a03-214e-4302-94da-9fb66e4040a1/B8076_mid.mp4\" expression=\"full\" duration=\"4231\" fileSize=\"175254428\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8076.mp4\" expression=\"full\" duration=\"4231\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Progressive web apps and the Windows ecosystem</title>\n    <description><![CDATA[Whether at home or at work, the web plays an increasingly critical role in our daily lives. As we have become more dependent on accessing the tools it powers, we’ve also struggled to overcome some of its limitations—network connectivity, for instance. At Microsoft, we’ve long been interested in the power of the web for software development and we are even more excited for the future possibilities offered by progressive web apps (PWAs). In this session, we discuss what PWAs are, how they can be integrated into the development process of modern websites, the advantages and disadvantages of PWAs vs. native development, and what opportunities they present when installed alongside native apps in Windows. <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:0e40dbd63a2d49aea4b8a768001c5ec0\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8075</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8075</link>\n    <itunes:summary>Whether at home or at work, the web plays an increasingly critical role in our daily lives. As we have become more dependent on accessing the tools it powers, we’ve also struggled to overcome some of its limitations—network connectivity, for instance. At Microsoft, we’ve long been interested in the power of the web for software development and we are even more excited for the future possibilities offered by progressive web apps (PWAs). In this session, we discuss what PWAs are, how they can be integrated into the development process of modern websites, the advantages and disadvantages of PWAs vs. native development, and what opportunities they present when installed alongside native apps in Windows.</itunes:summary>\n    <itunes:duration>3909</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8075</guid>\n    <dc:creator>Aaron Gustafson</dc:creator>\n    <category>universal+windows+platform+uwp</category>\n    <category>web+platform</category>\n\t\t<media:thumbnail url=\"http://video.ch9.ms/ch9/69d6/cde44404-854a-4c7a-aabd-e8d0af5d69d6/B8075_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/69d6/cde44404-854a-4c7a-aabd-e8d0af5d69d6/B8075.mp3\" expression=\"full\" duration=\"3909\" fileSize=\"62548829\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/69d6/cde44404-854a-4c7a-aabd-e8d0af5d69d6/B8075.mp4\" expression=\"full\" duration=\"3909\" fileSize=\"72580386\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/69d6/cde44404-854a-4c7a-aabd-e8d0af5d69d6/B8075_high.mp4\" expression=\"full\" duration=\"3909\" fileSize=\"636172372\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/69d6/cde44404-854a-4c7a-aabd-e8d0af5d69d6/B8075_mid.mp4\" expression=\"full\" duration=\"3909\" fileSize=\"154122192\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8075.mp4\" expression=\"full\" duration=\"3909\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>\n  <item>\n    <title>Modern front-end web development in Visual Studio 2017</title>\n    <description><![CDATA[<p>A lot of work has gone into making Visual Studio 2017 the fastest and most productive version ever. Join us for a tour of the new features for web developers that makes writing modern web applications easier, more productive and fun. We look at new techniques like “dotnet new angular” and see how ASP.NET Core and Visual Studio 2017 are a great partner for your front-end web development needs.</p> <img src=\"http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=https://s.ch9.ms/Events/Build/2017/RSS&WT.dl=0&WT.entryid=Session:RSSView:6d08e0f320f4401d9611a768001c5e4f\">]]></description>\n    <comments>https://s.ch9.ms/Events/Build/2017/B8073</comments>\n    <link>https://s.ch9.ms/Events/Build/2017/B8073</link>\n    <itunes:summary>A lot of work has gone into making Visual Studio 2017 the fastest and most productive version ever. Join us for a tour of the new features for web developers that makes writing modern web applications easier, more productive and fun. We look at new techniques like “dotnet new angular” and see how ASP.NET Core and Visual Studio 2017 are a great partner for your front-end web development needs. </itunes:summary>\n    <itunes:duration>3668</itunes:duration>\n    <pubDate>Mon, 08 May 2017 20:21:24 GMT</pubDate>\n    <guid isPermaLink=\"false\">https://s.ch9.ms/Events/Build/2017/B8073</guid>\n    <dc:creator>Mads Kristensen</dc:creator>\n\t\t<media:thumbnail url=\"https://sec.ch9.ms/ch9/dafe/0520c5cd-c0db-4442-84c2-8d9635f6dafe/B8073_220.jpg\" height=\"165\" width=\"220\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/dafe/0520c5cd-c0db-4442-84c2-8d9635f6dafe/B8073_512.jpg\" height=\"288\" width=\"512\"></media:thumbnail><media:thumbnail url=\"https://sec.ch9.ms/ch9/dafe/0520c5cd-c0db-4442-84c2-8d9635f6dafe/B8073_960.jpg\" height=\"540\" width=\"960\"></media:thumbnail>\n\t\t\t\t<media:group>          \n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/dafe/0520c5cd-c0db-4442-84c2-8d9635f6dafe/B8073.mp3\" expression=\"full\" duration=\"3668\" fileSize=\"58690890\" type=\"audio/mp3\" medium=\"audio\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/dafe/0520c5cd-c0db-4442-84c2-8d9635f6dafe/B8073.mp4\" expression=\"full\" duration=\"3668\" fileSize=\"81974542\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/dafe/0520c5cd-c0db-4442-84c2-8d9635f6dafe/B8073_high.mp4\" expression=\"full\" duration=\"3668\" fileSize=\"919631950\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"http://video.ch9.ms/ch9/dafe/0520c5cd-c0db-4442-84c2-8d9635f6dafe/B8073_mid.mp4\" expression=\"full\" duration=\"3668\" fileSize=\"222668895\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t\t<media:content url=\"https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8073.mp4\" expression=\"full\" duration=\"3668\" fileSize=\"1\" type=\"video/mp4\" medium=\"video\"></media:content>\n\t\t\t\t</media:group>\n  </item>    \n</channel>\n</rss>"
  },
  {
    "path": "src/BuildCast/BuildCast.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProjectGuid>{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>BuildCast</RootNamespace>\n    <AssemblyName>BuildCast</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion Condition=\" '$(TargetPlatformVersion)' == '' \">10.0.16299.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <WindowsXamlEnableOverview>true</WindowsXamlEnableOverview>\n    <PackageCertificateKeyFile>BuildCast_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>\n    <AppxBundle>Always</AppxBundle>\n    <AppxBundlePlatforms>x86|x64</AppxBundlePlatforms>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n    <CodeAnalysisRuleSet>Microsoft.BuildCast.ruleset</CodeAnalysisRuleSet>\n    <RunCodeAnalysis>false</RunCodeAnalysis>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n    <CodeAnalysisRuleSet>Microsoft.BuildCast.ruleset</CodeAnalysisRuleSet>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n    <CodeAnalysisRuleSet>Microsoft.BuildCast.ruleset</CodeAnalysisRuleSet>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n    <CodeAnalysisRuleSet>Microsoft.BuildCast.ruleset</CodeAnalysisRuleSet>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n    <CodeAnalysisRuleSet>Microsoft.BuildCast.ruleset</CodeAnalysisRuleSet>\n    <WarningsAsErrors>CS4014</WarningsAsErrors>\n    <RunCodeAnalysis>false</RunCodeAnalysis>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n    <CodeAnalysisRuleSet>Microsoft.BuildCast.ruleset</CodeAnalysisRuleSet>\n  </PropertyGroup>\n  <PropertyGroup>\n    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\CustomMediaPlayer.xaml.cs\">\n      <DependentUpon>CustomMediaPlayer.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\CustomMTC.xaml.cs\">\n      <DependentUpon>CustomMTC.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\RemoteControl.xaml.cs\">\n      <DependentUpon>RemoteControl.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\TimeControl.cs\" />\n    <Compile Include=\"Controls\\Timeline.cs\" />\n    <Compile Include=\"DataModel\\Episode.cs\" />\n    <Compile Include=\"DataModel\\EpisodePlaybackState.cs\" />\n    <Compile Include=\"DataModel\\EpisodeWithState.cs\" />\n    <Compile Include=\"DataModel\\Favorite.cs\" />\n    <Compile Include=\"DataModel\\Feed.cs\" />\n    <Compile Include=\"DataModel\\FeedStore.cs\" />\n    <Compile Include=\"DataModel\\InkNote.cs\" />\n    <Compile Include=\"DataModel\\InkNoteData.cs\" />\n    <Compile Include=\"DataModel\\LocalStorageContext.cs\" />\n    <Compile Include=\"DataModel\\NowPlayingState.cs\" />\n    <Compile Include=\"GlobalSuppressions.cs\" />\n    <Compile Include=\"Helpers\\AsyncHelpers.cs\" />\n    <Compile Include=\"Helpers\\BackgroundDownloadHelper.cs\" />\n    <Compile Include=\"Helpers\\BufferingVisualManager.cs\" />\n    <Compile Include=\"Helpers\\NavigationAnimationHelpers.cs\" />\n    <Compile Include=\"Helpers\\DateTimeHelper.cs\" />\n    <Compile Include=\"Helpers\\EnumToBooleanConverter.cs\" />\n    <Compile Include=\"Helpers\\EpisodeCommands.cs\" />\n    <Compile Include=\"Helpers\\Json.cs\" />\n    <Compile Include=\"Helpers\\LinqExtensions.cs\" />\n    <Compile Include=\"Helpers\\SettingsStorageExtensions.cs\" />\n    <Compile Include=\"Helpers\\TitleBarHelper.cs\" />\n    <Compile Include=\"Helpers\\UIHelpers.cs\" />\n    <Compile Include=\"Helpers\\ValueSetHelper.cs\" />\n    <Compile Include=\"Helpers\\RelayCommand.cs\" />\n    <Compile Include=\"Services\\ViewModeService.cs\" />\n    <Compile Include=\"Helpers\\VisualHelpers.cs\" />\n    <Compile Include=\"Migrations\\20170927020747_initial.cs\" />\n    <Compile Include=\"Migrations\\20170927020747_initial.designer.cs\">\n      <DependentUpon>20170927020747_initial.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"Migrations\\LocalStorageContextModelSnapshot.cs\" />\n    <Compile Include=\"Services\\IFullscreenPage.cs\" />\n    <Compile Include=\"ViewModels\\DownloadsViewModel.cs\" />\n    <Compile Include=\"ViewModels\\NotesViewModel.cs\" />\n    <Compile Include=\"Views\\Downloads.xaml.cs\">\n      <DependentUpon>Downloads.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\Notes.xaml.cs\">\n      <DependentUpon>Notes.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\NavigationRoot.xaml.cs\">\n      <DependentUpon>NavigationRoot.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Services\\ElementThemeExtended.cs\" />\n    <Compile Include=\"Services\\IAvailableSystemsObserver.cs\" />\n    <Compile Include=\"Services\\IRemotePlayerService.cs\" />\n    <Compile Include=\"Services\\IPlayerService.cs\" />\n    <Compile Include=\"Services\\IRemoteConnection.cs\" />\n    <Compile Include=\"Services\\IRemoteSystemDescription.cs\" />\n    <Compile Include=\"Services\\Navigation\\FrameAdapter.cs\" />\n    <Compile Include=\"Services\\Navigation\\IFrameAdapter.cs\" />\n    <Compile Include=\"Services\\Navigation\\INavigableTo.cs\" />\n    <Compile Include=\"Services\\Navigation\\INavigationCommand.cs\" />\n    <Compile Include=\"Services\\Navigation\\INavigationService.cs\" />\n    <Compile Include=\"Services\\Navigation\\IPageWithViewModel.cs\" />\n    <Compile Include=\"Services\\Navigation\\NavigationService.cs\" />\n    <Compile Include=\"Services\\PlayerService.cs\" />\n    <Compile Include=\"Services\\RemotePlayService.cs\" />\n    <Compile Include=\"Services\\ThemeSelectorService.cs\" />\n    <Compile Include=\"ViewModels\\EpisodeDetailsViewModel.cs\" />\n    <Compile Include=\"ViewModels\\FavoritesViewModel.cs\" />\n    <Compile Include=\"ViewModels\\FeedDetailsViewModel.cs\" />\n    <Compile Include=\"ViewModels\\HomeViewModel.cs\" />\n    <Compile Include=\"ViewModels\\InkNoteViewModel.cs\" />\n    <Compile Include=\"ViewModels\\PlayerViewModel.cs\" />\n    <Compile Include=\"ViewModels\\SettingsViewModel.cs\" />\n    <Compile Include=\"Views\\Home.xaml.cs\">\n      <DependentUpon>Home.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\EpisodeDetails.xaml.cs\">\n      <DependentUpon>EpisodeDetails.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\NoteDataTemplateSelector.cs\" />\n    <Compile Include=\"Views\\Favorites.xaml.cs\">\n      <DependentUpon>Favorites.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\FeedDetails.xaml.cs\">\n      <DependentUpon>FeedDetails.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\InkNote.xaml.cs\">\n      <DependentUpon>InkNote.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\Player.xaml.cs\">\n      <DependentUpon>Player.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\PopupPlayer.xaml.cs\">\n      <DependentUpon>PopupPlayer.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\SettingsPage.xaml.cs\">\n      <DependentUpon>SettingsPage.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <Content Include=\"Assets\\BCastMDL2.ttf\" />\n    <Content Include=\"Assets\\buildcast.db\">\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Content>\n    <None Include=\"Assets\\BuildCastIcon.ai\" />\n    <None Include=\"Microsoft.BuildCast.ruleset\" />\n    <PRIResource Include=\"Strings\\en-us\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\BUILD2017_Seattle_Skyline.jpg\" />\n    <Content Include=\"Assets\\BUILD2017_Seattle_Skyline_night.jpg\" />\n    <Content Include=\"Assets\\BuildCast.svg\" />\n    <Content Include=\"Assets\\build2016windowsdevfeed.xml\" />\n    <Content Include=\"Assets\\BuildCastDarkTheme.svg\" />\n    <Content Include=\"Assets\\LargeTile.scale-100.png\" />\n    <Content Include=\"Assets\\LargeTile.scale-125.png\" />\n    <Content Include=\"Assets\\LargeTile.scale-150.png\" />\n    <Content Include=\"Assets\\LargeTile.scale-200.png\" />\n    <Content Include=\"Assets\\LargeTile.scale-400.png\" />\n    <Content Include=\"Assets\\SmallTile.scale-100.png\" />\n    <Content Include=\"Assets\\SmallTile.scale-125.png\" />\n    <Content Include=\"Assets\\SmallTile.scale-150.png\" />\n    <Content Include=\"Assets\\SmallTile.scale-200.png\" />\n    <Content Include=\"Assets\\SmallTile.scale-400.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-125.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-150.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-400.png\" />\n    <Content Include=\"Assets\\Square150x150Logo.scale-100.png\" />\n    <Content Include=\"Assets\\Square150x150Logo.scale-125.png\" />\n    <Content Include=\"Assets\\Square150x150Logo.scale-150.png\" />\n    <Content Include=\"Assets\\Square150x150Logo.scale-400.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.scale-100.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.scale-125.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.scale-150.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.scale-400.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.targetsize-16.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.targetsize-16_altform-unplated.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.targetsize-24.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.targetsize-256.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.targetsize-256_altform-unplated.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.targetsize-32.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.targetsize-32_altform-unplated.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.targetsize-48.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.targetsize-48_altform-unplated.png\" />\n    <Content Include=\"Assets\\Wide310x150Logo.scale-100.png\" />\n    <Content Include=\"Assets\\Wide310x150Logo.scale-125.png\" />\n    <Content Include=\"Assets\\Wide310x150Logo.scale-150.png\" />\n    <Content Include=\"Assets\\Wide310x150Logo.scale-400.png\" />\n    <Content Include=\"Assets\\win10dev.png\" />\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\LockScreenLogo.scale-200.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-200.png\" />\n    <Content Include=\"Assets\\Square150x150Logo.scale-200.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.scale-200.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.targetsize-24_altform-unplated.png\" />\n    <Content Include=\"Assets\\StoreLogo.png\" />\n    <Content Include=\"Assets\\Wide310x150Logo.scale-200.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"Controls\\CustomMediaPlayer.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Controls\\CustomMTC.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Controls\\RemoteControl.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\Downloads.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\Notes.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\NavigationRoot.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Styles\\Common.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Page>\n    <Page Include=\"Styles\\Settings.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Page>\n    <Page Include=\"Themes\\Branded.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Themes\\BrandedXbox.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Themes\\Generic.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Themes\\Stock.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\Home.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\EpisodeDetails.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\Favorites.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\FeedDetails.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\InkNote.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\Player.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\PopupPlayer.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\SettingsPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <PackageReference Include=\"Autofac\">\n      <Version>4.6.1</Version>\n    </PackageReference>\n    <PackageReference Include=\"Microsoft.EntityFrameworkCore.Sqlite\">\n      <Version>2.0.0</Version>\n    </PackageReference>\n    <PackageReference Include=\"Microsoft.EntityFrameworkCore.Tools\">\n      <Version>2.0.0</Version>\n    </PackageReference>\n    <PackageReference Include=\"Microsoft.NETCore.UniversalWindowsPlatform\">\n      <Version>6.0.1</Version>\n    </PackageReference>\n    <PackageReference Include=\"Microsoft.Toolkit.Uwp.Notifications\">\n      <Version>2.1.0</Version>\n    </PackageReference>\n    <PackageReference Include=\"Microsoft.Toolkit.Uwp.UI\">\n      <Version>2.1.0</Version>\n    </PackageReference>\n    <PackageReference Include=\"Microsoft.Toolkit.Uwp.UI.Animations\">\n      <Version>2.1.0</Version>\n    </PackageReference>\n    <PackageReference Include=\"Microsoft.Toolkit.Uwp.UI.Controls\">\n      <Version>2.1.0</Version>\n    </PackageReference>\n    <PackageReference Include=\"StyleCop.Analyzers\">\n      <Version>1.1.0-beta004</Version>\n    </PackageReference>\n    <PackageReference Include=\"UWPAudioVisualizer\">\n      <Version>0.1.96</Version>\n    </PackageReference>\n    <PackageReference Include=\"Win2D.uwp\">\n      <Version>1.21.0</Version>\n    </PackageReference>\n  </ItemGroup>\n  <ItemGroup />\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "src/BuildCast/Controls/CustomMTC.xaml",
    "content": "﻿<UserControl\n    x:Class=\"BuildCast.Controls.CustomMTC\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\"\n    d:DesignHeight=\"30\"\n    d:DesignWidth=\"400\"\n    xmlns:custom=\"using:BuildCast.Controls\"\n    Loaded=\"UserControl_Loaded\"\n    Unloaded=\"UserControl_Unloaded\"\n    xmlns:xaml=\"using:Windows.UI.Xaml\"\n    xmlns:rs=\"using:BuildCast.Services\"\n    xmlns:local=\"using:BuildCast\"\n    XYFocusDown=\"{x:Bind playpause}\" >\n\n    <Grid >\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"50\"></RowDefinition>\n            <RowDefinition Height=\"55\"></RowDefinition>\n        </Grid.RowDefinitions>\n        <custom:Timeline \n                Grid.Row=\"0\"\n                VerticalAlignment=\"Stretch\"\n                DragStop=\"DoneSrubbing\"\n                x:Name=\"timelinectrl\" HorizontalAlignment=\"Stretch\" IsEnabled=\"True\"></custom:Timeline>\n\n        <custom:TimeControl Background=\"Transparent\" Grid.Row=\"1\" HorizontalAlignment=\"Left\" Width=\"70\" Height=\"40\" x:Name=\"elapsed\"></custom:TimeControl>\n        <Grid Grid.Row=\"1\"  BorderThickness=\"0,2,0,2\" >\n            <StackPanel Grid.Row=\"1\" HorizontalAlignment=\"Center\" Orientation=\"Horizontal\" >\n                <Button x:Name=\"rwnd\" Style=\"{StaticResource transportButton}\" Click=\"Rwnd_click\"  XYFocusRight=\"{x:Bind playpause}\" >\n                    <FontIcon FontFamily=\"Segoe MDL2 Assets\" Glyph=\"&#xED3C;\" ></FontIcon>\n                </Button>\n                <Button x:Name=\"playpause\" Style=\"{StaticResource transportButton}\" Click=\"Playpause_click\" XYFocusLeft=\"{x:Bind rwnd}\" XYFocusRight=\"{x:Bind ffwd}\">\n                    <FontIcon FontFamily=\"Segoe MDL2 Assets\" Glyph=\"&#xE103;\" ></FontIcon>\n                </Button>\n                <Button x:Name=\"ffwd\" Style=\"{StaticResource transportButton}\" Click=\"Ffwd_click\" XYFocusLeft=\"{x:Bind playpause}\" XYFocusRight=\"{x:Bind sendtodevice}\">\n                    <FontIcon FontFamily=\"Segoe MDL2 Assets\" Glyph=\"&#xED3D;\" ></FontIcon>\n                </Button>\n            </StackPanel>\n            <StackPanel  HorizontalAlignment=\"Right\" Orientation=\"Horizontal\">\n                <Button AccessKey=\"D\" x:Name=\"sendtodevice\" XYFocusLeft=\"{x:Bind ffwd}\" XYFocusRight=\"{x:Bind pip}\">\n                    <Button.Resources>\n                        <DataTemplate x:Key=\"remotesystemtemplate\" x:DataType=\"rs:IRemoteSystemDescription\">\n                            <StackPanel Orientation=\"Horizontal\">\n                                <FontIcon FontFamily=\"Segoe MDL2 Assets\" Glyph=\"{x:Bind Glyph}\"/>\n                                <TextBlock Margin=\"5,0,0,0\" Text=\"{x:Bind Name}\"/>\n                            </StackPanel>\n                        </DataTemplate>\n                    </Button.Resources>\n                    <Button.Style>\n                        <StaticResource ResourceKey=\"transportSecondaryButton\"/>\n                    </Button.Style>\n                    <Button.Flyout>\n                        <Flyout Opened=\"Flyout_Opened\">\n                            <ListView MaxHeight=\"250\" x:Name=\"deviceList\"  IsItemClickEnabled=\"True\" ItemClick=\"RomeItemClick\" ItemTemplate=\"{StaticResource remotesystemtemplate}\" ItemsSource=\"{x:Bind RemoteSystems, Mode=TwoWay}\"/>\n                        </Flyout>\n                    </Button.Flyout>\n                    <FontIcon FontFamily=\"Segoe MDL2 Assets\" Glyph=\"&#xEC16;\" />\n                </Button>\n                <Button x:Name=\"pip\" Style=\"{StaticResource transportSecondaryButton}\" Click=\"Pip_click\" XYFocusLeft=\"{x:Bind sendtodevice}\" XYFocusRight=\"{x:Bind fs}\">\n                    <FontIcon FontFamily=\"Segoe MDL2 Assets\" Glyph=\"&#xE8A7;\" />\n                </Button>\n                <Button x:Name=\"fs\" Style=\"{StaticResource transportSecondaryButton}\" Click=\"Fs_click\" XYFocusLeft=\"{x:Bind pip}\">\n                    <FontIcon FontFamily=\"Segoe MDL2 Assets\" Glyph=\"&#xE1D9;\" />\n                </Button>\n            </StackPanel>\n            <ProgressBar x:Name=\"romeProgress\" HorizontalAlignment=\"Stretch\" VerticalAlignment=\"Top\" IsEnabled=\"False\" Visibility=\"Collapsed\">\n            </ProgressBar>\n        </Grid>\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "src/BuildCast/Controls/CustomMTC.xaml.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nnamespace BuildCast.Controls\n{\n    using System;\n    using System.Collections.ObjectModel;\n    using System.Diagnostics;\n    using System.Threading.Tasks;\n    using BuildCast.Helpers;\n    using BuildCast.Services;\n    using BuildCast.ViewModels;\n    using BuildCast.Views;\n    using Windows.UI.Core;\n    using Windows.UI.Xaml;\n    using Windows.UI.Xaml.Controls;\n\n    public sealed partial class CustomMTC : UserControl\n    {\n        public static readonly DependencyProperty RemoteSystemsProperty =\n            DependencyProperty.Register(nameof(RemoteSystems), typeof(ObservableCollection<IRemoteSystemDescription>), typeof(CustomMTC), new PropertyMetadata(null));\n\n        private static TimeSpan _currentTime;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"CustomMTC\"/> class.\n        /// </summary>\n        public CustomMTC()\n        {\n            this.InitializeComponent();\n        }\n\n        public event EventHandler<IRemoteSystemDescription> RemoteSystemSelected;\n\n        public event EventHandler RefreshRequested;\n\n        public ObservableCollection<IRemoteSystemDescription> RemoteSystems\n        {\n            get { return (ObservableCollection<IRemoteSystemDescription>)GetValue(RemoteSystemsProperty); }\n            set { SetValue(RemoteSystemsProperty, value); }\n        }\n\n        #region View Modes\n        public static async Task LeaveCompactOverlayMode()\n        {\n            await ViewModeService.Instance.SwitchToNormalMode();\n        }\n\n        private void Fs_click(object sender, RoutedEventArgs e)\n        {\n            var navRoot = ((App)Application.Current).GetNavigationRoot();\n\n            navRoot.ToggleFullscreen();\n        }\n\n        private async void Pip_click(object sender, RoutedEventArgs e)\n        {\n            var navRoot = ((App)Application.Current).GetNavigationRoot();\n\n            navRoot.ExitFullScreen();\n\n            var pipModes = await SettingsViewModel.GetCurrentMode();\n\n            if (pipModes == PipModes.SingleView)\n            {\n                await ViewModeService.Instance.SwitchToCompactOverlay<PopupPlayer>(new PopupPlayer(pipModes), player => player.StartVideo());\n            }\n            else\n            {\n                await ViewModeService.Instance.CreateNewView<PopupPlayer>(() => { return new PopupPlayer(pipModes); }, player => player.StartVideo());\n            }\n        }\n        #endregion\n\n        private void UserControl_Loaded(object sender, RoutedEventArgs e)\n        {\n            timelinectrl.SetElapsedTimeControl(elapsed);\n            Window.Current.CoreWindow.PointerPressed += CoreWindow_PointerPressed;\n            PlayerService.Current.PlayPauseChanged += Current_PlayPauseChanged;\n            PlayerService.Current.SetTimeControls(timelinectrl);\n            Current_PlayPauseChanged(this, PlayerService.Current.State);\n        }\n\n        // Playback\n        #region Playback Logic\n\n        private void Current_PlayPauseChanged(object sender, Windows.Media.Playback.MediaPlaybackState e)\n        {\n            if (e == Windows.Media.Playback.MediaPlaybackState.Playing)\n            {\n                // GlyphString = @\"\";\n                playpause.Content = new FontIcon() { Glyph = @\"\" };\n            }\n            else\n            {\n                // GlyphString = @\"\";\n                playpause.Content = new FontIcon() { Glyph = @\"\" };\n            }\n        }\n\n        private void DoneSrubbing(object sender, EventArgs e)\n        {\n            Debug.WriteLine(timelinectrl.CurrentPercentage);\n            _currentTime = timelinectrl.CurrentTime;\n            PlayerService.Current.SetTime(timelinectrl.CurrentTime);\n        }\n\n        private void CoreWindow_PointerPressed(CoreWindow sender, PointerEventArgs args)\n        {\n            timelinectrl.NotifyPointerPressed(args);\n        }\n\n        private async void Playpause_click(object sender, RoutedEventArgs e)\n        {\n            await PlayerService.Current.TogglePlayPaused();\n        }\n\n        private void UserControl_Unloaded(object sender, RoutedEventArgs e)\n        {\n            Window.Current.CoreWindow.PointerPressed -= CoreWindow_PointerPressed;\n            PlayerService.Current.PlayPauseChanged -= Current_PlayPauseChanged;\n        }\n\n        private void Rwnd_click(object sender, RoutedEventArgs e)\n        {\n            PlayerService.Current.Rewind();\n        }\n\n        private void Ffwd_click(object sender, RoutedEventArgs e)\n        {\n            PlayerService.Current.FastForward();\n        }\n\n        #endregion\n\n        #region Rome logic\n        private void RomeItemClick(object sender, ItemClickEventArgs e)\n        {\n            romeProgress.IsIndeterminate = true;\n            romeProgress.IsEnabled = true;\n            romeProgress.Visibility = Visibility.Visible;\n            this.sendtodevice.Flyout?.Hide();\n            this.sendtodevice.IsEnabled = false;\n\n            RemoteSystemSelected?.Invoke(this, e.ClickedItem as IRemoteSystemDescription);\n\n            romeProgress.IsEnabled = false;\n            romeProgress.IsIndeterminate = false;\n            romeProgress.Visibility = Visibility.Collapsed;\n\n            this.sendtodevice.IsEnabled = true;\n        }\n\n        private void Flyout_Opened(object sender, object e)\n        {\n            RefreshRequested?.Invoke(this, EventArgs.Empty);\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Controls/CustomMediaPlayer.xaml",
    "content": "﻿<UserControl\n    x:Class=\"BuildCast.Controls.CustomMediaPlayer\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\"\n    d:DesignHeight=\"300\"\n    d:DesignWidth=\"400\"\n    Loaded=\"UserControl_Loaded\"\n    Unloaded=\"UserControl_Unloaded\" >\n    <Grid>\n        <!-- Note that HostElement must have a background color or size in order to be correctly rendered by RenderTargetBitmap-->\n        <Grid x:Name=\"HostElement\" SizeChanged=\"HostElement_SizeChanged\" Background=\"Transparent\"/>\n        <ProgressBar x:Name=\"pgrloading\" IsIndeterminate=\"False\" Visibility=\"Collapsed\" HorizontalAlignment=\"Stretch\" VerticalAlignment=\"Top\" Margin=\"0,-2,0,0\" />\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "src/BuildCast/Controls/CustomMediaPlayer.xaml.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nnamespace BuildCast.Controls\n{\n    using System;\n    using System.Runtime.InteropServices.WindowsRuntime;\n    using System.Threading.Tasks;\n    using BuildCast.Helpers;\n    using BuildCast.Services;\n    using Windows.Graphics.Imaging;\n    using Windows.Storage.Streams;\n    using Windows.UI;\n    using Windows.UI.Composition;\n    using Windows.UI.Core;\n    using Windows.UI.Xaml;\n    using Windows.UI.Xaml.Controls;\n    using Windows.UI.Xaml.Hosting;\n    using Windows.UI.Xaml.Media;\n    using Windows.UI.Xaml.Media.Imaging;\n\n    public sealed partial class CustomMediaPlayer : UserControl\n    {\n        private Compositor _compositor;\n        private ContainerVisual _container;\n        private SpriteVisual _tintVisual;\n        private SpriteVisual _posterVisual;\n        private SpriteVisual _videoVisual;\n        private LoadedImageSurface _surface;\n        private Uri _currentPosterUri;\n        private CoreDispatcher _dispatcher;\n        private BufferingVisualManager _bvm;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"CustomMediaPlayer\"/> class.\n        /// </summary>\n        public CustomMediaPlayer()\n        {\n            this.InitializeComponent();\n            InitializeComposition();\n            ConfigureAnimations();\n\n            // Capture dispatcher from current window on the UI thread\n            _dispatcher = Window.Current.Dispatcher;\n\n            _bvm = new BufferingVisualManager();\n            _bvm.SetCompositor(Window.Current.Compositor);\n        }\n\n        /// <summary>\n        /// Causes placdeholder image to be loaded and displayed\n        /// </summary>\n        /// <param name=\"uri\">Uri for placeholder image</param>\n        public void LoadPoster(string uri)\n        {\n            if (!string.IsNullOrEmpty(uri))\n            {\n                LoadPlaceholderImage(new System.Uri(uri));\n            }\n        }\n\n        /// <summary>\n        /// Get bitmap from current frame of video using RenderTarget method.\n        /// Only used if video is not already downloaded.\n        /// </summary>\n        /// <returns>Byte array representing bitmap</returns>\n        public async Task<byte[]> GetBitmapFromRenderTarget()\n        {\n            var tweet = new RenderTargetBitmap();\n            await tweet.RenderAsync(HostElement);\n\n            var pixels = await tweet.GetPixelsAsync();\n\n            InMemoryRandomAccessStream randomAccessStream = new InMemoryRandomAccessStream();\n\n            var be = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, randomAccessStream);\n\n            be.SetPixelData(\n                BitmapPixelFormat.Bgra8,\n                BitmapAlphaMode.Ignore,\n                (uint)tweet.PixelWidth,\n                (uint)tweet.PixelHeight,\n                92.0,\n                92.0,\n                pixels.ToArray());\n\n            await be.FlushAsync();\n\n            var bytes = new byte[randomAccessStream.Size];\n            await randomAccessStream.ReadAsync(bytes.AsBuffer(), (uint)randomAccessStream.Size, InputStreamOptions.None);\n            return bytes;\n        }\n\n        private void HostElement_SizeChanged(object sender, Windows.UI.Xaml.SizeChangedEventArgs e)\n        {\n            _container.SetSize(HostElement);\n        }\n\n        private void InitializeComposition()\n        {\n            _compositor = Window.Current.Compositor;\n            _container = Window.Current.Compositor.CreateContainerVisual();\n            ElementCompositionPreview.SetElementChildVisual(HostElement, _container);\n\n            _tintVisual = _compositor.CreateSpriteVisual();\n            _tintVisual.Brush = _compositor.CreateColorBrush(Colors.Black);\n            _tintVisual.Opacity = 0.6f;\n            _tintVisual.RelativeSizeAdjustment = new System.Numerics.Vector2(1.0f);\n            _container.Children.InsertAtBottom(_tintVisual);\n\n            _posterVisual = _compositor.CreateSpriteVisual();\n            _posterVisual.Brush = _compositor.CreateColorBrush(Colors.Black);\n            _posterVisual.RelativeSizeAdjustment = new System.Numerics.Vector2(1.0f);\n            _posterVisual.Opacity = 0;\n            _posterVisual.FadeVisual(2);\n\n            _videoVisual = _compositor.CreateSpriteVisual();\n            _videoVisual.RelativeSizeAdjustment = new System.Numerics.Vector2(1.0f);\n            if (!PlayerService.Current.IsPlaying && !PlayerService.Current.IsPaused)\n            {\n                _videoVisual.Opacity = 0;\n            }\n\n            _videoVisual.FadeVisual(2);\n            _videoVisual.Brush = PlayerService.Current.GetBrush(Window.Current.Compositor);\n            _container.Children.InsertAtTop(_videoVisual);\n            _container.Children.InsertAtTop(_posterVisual);\n        }\n\n        private void ConfigureAnimations()\n        {\n            // TODO: collapse all this into a single helper method\n            ElementCompositionPreview.SetIsTranslationEnabled(HostElement, true);\n            ElementCompositionPreview.SetImplicitShowAnimation(HostElement,\n                VisualHelpers.CreateAnimationGroup(\n                VisualHelpers.CreateVerticalOffsetAnimationFrom(0.45, -50f),\n                VisualHelpers.CreateOpacityAnimation(0.5)\n                ));\n            ElementCompositionPreview.SetImplicitHideAnimation(HostElement, VisualHelpers.CreateOpacityAnimation(0.8, 0));\n        }\n\n        private void LoadPlaceholderImage(Uri load)\n        {\n            _currentPosterUri = load;\n            Action setSurface = () =>\n            {\n                _posterVisual.Brush = Window.Current.Compositor.CreateSurfaceBrush(_surface);\n                if (PlayerService.Current.IsOpening || PlayerService.Current.IsClosed)\n                {\n                    _posterVisual.Opacity = 1.0f;\n                }\n            };\n\n            if (_surface == null)\n            {\n                _surface = LoadedImageSurface.StartLoadFromUri(load);\n                _surface.LoadCompleted += (o, l) =>\n                {\n                    setSurface();\n                };\n            }\n            else\n            {\n                setSurface();\n            }\n        }\n\n        private async Task SetLoadingProgress()\n        {\n            pgrloading.IsIndeterminate = true;\n            pgrloading.Visibility = Visibility.Visible;\n            await _bvm.StartBuffering(HostElement, HostElement, false);\n        }\n\n        private void UserControl_Loaded(object sender, RoutedEventArgs e)\n        {\n            PlayerService.Current.MediaLoaded += Current_MediaLoaded;\n            PlayerService.Current.MediaLoading += Current_MediaLoading;\n        }\n\n        private void UserControl_Unloaded(object sender, RoutedEventArgs e)\n        {\n            PlayerService.Current.MediaLoaded -= Current_MediaLoaded;\n            PlayerService.Current.MediaLoading -= Current_MediaLoading;\n        }\n\n        private async void Current_MediaLoading(object sender, EventArgs e)\n        {\n            await SetLoadingProgress();\n        }\n\n        private async void Current_MediaLoaded(object sender, EventArgs e)\n        {\n            _posterVisual.Opacity = 0.0f;\n            _videoVisual.Opacity = 1.0f;\n\n            await _dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>\n            {\n                _bvm.StopBuffering(false);\n                pgrloading.IsIndeterminate = false;\n                pgrloading.Visibility = Visibility.Collapsed;\n            });\n        }\n    }\n}"
  },
  {
    "path": "src/BuildCast/Controls/RemoteControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"BuildCast.Controls.RemoteControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:BuildCast.Controls\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\"\n    d:DesignHeight=\"300\"\n    d:DesignWidth=\"400\">\n\n    <Grid Background=\"Transparent\" >\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition />\n        </Grid.RowDefinitions>\n        <Button  x:Name=\"Close\" Grid.Row=\"0\" HorizontalAlignment=\"Right\" Click=\"Close_Click\" Margin=\"0,0,0,20\">\n            <FontIcon Glyph=\"&#xE8BB;\"></FontIcon>\n        </Button>\n        <StackPanel Grid.Row=\"1\" Orientation=\"Horizontal\">\n        <Button x:Name=\"Rewind\" Click=\"Rewind_Click\" Style=\"{StaticResource transportButton}\">\n            <FontIcon Glyph=\"&#xEB9E;\"></FontIcon>\n        </Button>\n            <Button x:Name=\"Play\" Click=\"Play_Click\" Style=\"{StaticResource transportButton}\">\n            <FontIcon Glyph=\"&#xE768;\"></FontIcon>\n        </Button>\n            <Button x:Name=\"Pause\" Click=\"Pause_Click\" Style=\"{StaticResource transportButton}\">\n            <FontIcon Glyph=\"&#xE769;\"></FontIcon>\n        </Button>\n            <Button x:Name=\"FastForward\" Click=\"FastForward_Click\" Style=\"{StaticResource transportButton}\">\n            <FontIcon Glyph=\"&#xEB9D;\"></FontIcon>\n        </Button>\n        \n        <!--Not yet implemented:-->\n        <!--<Button x:Name=\"SnapRemoteBitmap\" Grid.Row=\"1\" Grid.Column=\"4\" Click=\"RemoteSnap_Click\">\n            <FontIcon Glyph=\"&#xEA9D;\"></FontIcon>\n        </Button>-->\n        </StackPanel>\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "src/BuildCast/Controls/RemoteControl.xaml.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing BuildCast.Services;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\n// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236\nnamespace BuildCast.Controls\n{\n    public sealed partial class RemoteControl : UserControl\n    {\n        // Using a DependencyProperty as the backing store for RemoteConnection.  This enables animation, styling, binding, etc...\n        public static readonly DependencyProperty RemoteConnectionProperty =\n            DependencyProperty.Register(nameof(RemoteConnection), typeof(IRemoteConnection), typeof(RemoteControl), new PropertyMetadata(null));\n\n        public event EventHandler CloseClicked;\n\n        public IRemoteConnection RemoteConnection\n        {\n            get { return (IRemoteConnection)GetValue(RemoteConnectionProperty); }\n            set { SetValue(RemoteConnectionProperty, value); }\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"RemoteControl\"/> class.\n        /// </summary>\n        public RemoteControl()\n        {\n            this.InitializeComponent();\n        }\n\n        private void Close_Click(object sender, RoutedEventArgs e)\n        {\n            RemoteConnection?.Disconnect();\n            CloseClicked?.Invoke(this, EventArgs.Empty);\n        }\n\n        private void Rewind_Click(object sender, RoutedEventArgs e)\n        {\n            RemoteConnection.Rewind();\n        }\n\n        private void Play_Click(object sender, RoutedEventArgs e)\n        {\n            RemoteConnection.Play();\n        }\n\n        private void Pause_Click(object sender, RoutedEventArgs e)\n        {\n            RemoteConnection.Pause();\n        }\n\n        private void FastForward_Click(object sender, RoutedEventArgs e)\n        {\n            RemoteConnection.FastForward();\n        }\n\n        private void RemoteSnap_Click(object sender, RoutedEventArgs e)\n        {\n            RemoteConnection.GetRemoteBitmap();\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Controls/TimeControl.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nnamespace BuildCast.Controls\n{\n    using System;\n    using System.Numerics;\n    using System.Threading;\n    using BuildCast.Helpers;\n    using Microsoft.Graphics.Canvas;\n    using Microsoft.Graphics.Canvas.Text;\n    using Microsoft.Graphics.Canvas.UI.Composition;\n    using Windows.Foundation;\n    using Windows.UI;\n    using Windows.UI.Composition;\n    using Windows.UI.Xaml;\n    using Windows.UI.Xaml.Controls;\n    using Windows.UI.Xaml.Hosting;\n    using Windows.UI.Xaml.Media;\n    using Windows.UI.Xaml.Shapes;\n\n    public class TimeControl : Control, IDisposable\n    {\n        private object drawlock = new object();\n        private ContainerVisual rootVisual;\n        private CanvasSwapChain swapChain;\n        private SpriteVisual swapChainVisual;\n        private CanvasDevice canvasDevice;\n\n        private Rectangle hostElement;\n\n        private CancellationTokenSource drawLoopCancellationTokenSource;\n        private int drawCount;\n\n        private TimeSpan currentTime;\n\n        private Color foregroundColor;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"TimeControl\"/> class.\n        /// </summary>\n        public TimeControl()\n        {\n            drawLoopCancellationTokenSource = new CancellationTokenSource();\n            this.DefaultStyleKey = typeof(TimeControl);\n        }\n\n        public bool Scrubbing { get; set; }\n\n        public TimeSpan Duration\n        {\n            get; set;\n        }\n\n        public bool ShowAsPercentage { get; set; }\n\n        public TimeSpan CurrentTime\n        {\n            get\n            {\n                return currentTime;\n            }\n\n            set\n            {\n                currentTime = value;\n                if (swapChain != null && Duration > TimeSpan.Zero)\n                {\n                    DrawSwapChain(swapChain);\n                    swapChain.Present();\n                }\n            }\n        }\n\n        public double CurrentPercentage\n        {\n            get\n            {\n                return 0;\n            }\n\n            set\n            {\n                if (Duration > TimeSpan.MinValue)\n                {\n                    CurrentTime = TimeSpan.FromMilliseconds(value * Duration.TotalMilliseconds);\n                }\n            }\n        }\n\n        public void Dispose()\n        {\n            drawLoopCancellationTokenSource?.Cancel();\n            swapChain?.Dispose();\n        }\n\n        public void SetDevice(CanvasDevice device)\n        {\n            drawLoopCancellationTokenSource?.Cancel();\n\n            var displayInfo = Windows.Graphics.Display.DisplayInformation.GetForCurrentView();\n\n            this.swapChain = new CanvasSwapChain(\n                device,\n                (int)this.ActualWidth,\n                (int)this.ActualHeight,\n                displayInfo.LogicalDpi,\n                Windows.Graphics.DirectX.DirectXPixelFormat.B8G8R8A8UIntNormalized,\n                2,\n                CanvasAlphaMode.Premultiplied);\n\n            swapChainVisual.Brush = Window.Current.Compositor.CreateSurfaceBrush(CanvasComposition.CreateCompositionSurfaceForSwapChain(Window.Current.Compositor, swapChain));\n\n            drawLoopCancellationTokenSource = new CancellationTokenSource();\n        }\n\n        protected override void OnApplyTemplate()\n        {\n            base.OnApplyTemplate();\n            hostElement = GetTemplateChild(\"DrawHolder\") as Rectangle;\n            hostElement.SizeChanged += ElementCompositionVisual_SizeChanged;\n            rootVisual = Window.Current.Compositor.CreateContainerVisual();\n            swapChainVisual = Window.Current.Compositor.CreateSpriteVisual();\n            swapChainVisual.Brush = Window.Current.Compositor.CreateColorBrush(Colors.Pink);\n            rootVisual.Children.InsertAtTop(swapChainVisual);\n            ElementCompositionPreview.SetElementChildVisual(hostElement, rootVisual);\n\n            foregroundColor = ((SolidColorBrush)Foreground).Color;\n        }\n\n        private void ElementCompositionVisual_SizeChanged(object sender, SizeChangedEventArgs e)\n        {\n            rootVisual.SetSize(hostElement);\n            swapChainVisual.SetSize(hostElement);\n\n            if (canvasDevice != null)\n            {\n                Dispose();\n                canvasDevice = null;\n            }\n\n            if (canvasDevice == null)\n            {\n                canvasDevice = CanvasDevice.GetSharedDevice();\n                SetDevice(canvasDevice);\n            }\n\n            DrawSwapChain(swapChain);\n            swapChain.Present();\n        }\n\n        private void DrawSwapChain(CanvasSwapChain sc)\n        {\n            var result = Monitor.TryEnter(drawlock);\n            if (result)\n            {\n                try\n                {\n                    ++drawCount;\n\n                    using (var ds = sc.CreateDrawingSession(Colors.Transparent))\n                    {\n                        var size = sc.Size.ToVector2();\n\n                        if (ShowAsPercentage)\n                        {\n                            ds.DrawText($\"{CalcPercentage()}%\", new Rect(0, 0, this.swapChain.Size.Width, this.swapChain.Size.Height), foregroundColor, new CanvasTextFormat()\n                            {\n                                FontSize = 17,\n                                VerticalAlignment = CanvasVerticalAlignment.Bottom,\n                                HorizontalAlignment = CanvasHorizontalAlignment.Center,\n                            });\n                        }\n                        else\n                        {\n                            ds.DrawText($\"{this.CurrentTime.ToString(@\"hh\\:mm\\:ss\")}\", new Rect(0, 0, this.swapChain.Size.Width, this.swapChain.Size.Height), foregroundColor, new CanvasTextFormat()\n                            {\n                                FontSize = 15,\n                                VerticalAlignment = CanvasVerticalAlignment.Center,\n                                HorizontalAlignment = CanvasHorizontalAlignment.Center,\n                            });\n                        }\n                    }\n                }\n                finally\n                {\n                    Monitor.Exit(drawlock);\n                }\n            }\n        }\n\n        private double CalcPercentage()\n        {\n            return Math.Round((CurrentTime.TotalMilliseconds / Duration.TotalMilliseconds) * 100);\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Controls/Timeline.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nnamespace BuildCast.Controls\n{\n    using System;\n    using System.ComponentModel;\n    using System.Diagnostics;\n    using System.Runtime.CompilerServices;\n    using Microsoft.Toolkit.Uwp.UI.Animations.Expressions;\n    using Windows.UI.Composition;\n    using Windows.UI.Composition.Interactions;\n    using Windows.UI.Core;\n    using Windows.UI.Xaml;\n    using Windows.UI.Xaml.Controls;\n    using Windows.UI.Xaml.Hosting;\n    using Windows.UI.Xaml.Input;\n\n    public class Timeline : Control, IInteractionTrackerOwner, INotifyPropertyChanged\n    {\n        private Compositor compositor;\n        private Visual thumbVisual;\n        private Visual trackVisual;\n        private InteractionTracker tracker;\n        private VisualInteractionSource interactionSource;\n        private ExpressionNode thumbExpressionAnimation;\n        private CompositionPropertySet propSet;\n        private TimeControl myPercentageTimeControl;\n        private TimeControl elapsedTimeControl;\n\n        private double currentPercentage;\n\n        private FrameworkElement thumb;\n        private FrameworkElement trackCanvas;\n\n        private double trackCanvasWidth;\n        private bool dragging;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"Timeline\"/> class.\n        /// </summary>\n        public Timeline()\n        {\n            this.DefaultStyleKey = typeof(Timeline);\n            this.Loaded += Timeline_Loaded;\n            this.Unloaded += this.Timeline_Unloaded;\n        }\n\n        public event EventHandler DragStart;\n\n        public event EventHandler DragStop;\n\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        #region Public Properties\n        public double CurrentPercentage\n        {\n            get\n            {\n                return currentPercentage;\n            }\n\n            set\n            {\n                this.currentPercentage = value;\n                myPercentageTimeControl.CurrentPercentage = value;\n                if (elapsedTimeControl != null)\n                {\n                    elapsedTimeControl.CurrentPercentage = value;\n                }\n\n                RaisePropertyChanged();\n            }\n        }\n\n        public TimeSpan CurrentTime\n        {\n            get\n            {\n                return TimeSpan.FromSeconds(TimeDuration.TotalSeconds * CurrentPercentage);\n            }\n        }\n\n        public bool IsScrubbing\n        {\n            get\n            {\n                return dragging;\n            }\n        }\n#endregion\n\n        private TimeSpan TimeDuration\n        {\n            get; set;\n        }\n\n        #region public methods\n\n        public void SetTime(TimeSpan postition, TimeSpan duration)\n        {\n            if (!IsScrubbing && myPercentageTimeControl != null)\n            {\n                myPercentageTimeControl.CurrentTime = postition;\n                myPercentageTimeControl.Duration = duration;\n\n                if (elapsedTimeControl != null)\n                {\n                    elapsedTimeControl.CurrentTime = postition;\n                    elapsedTimeControl.Duration = duration;\n                }\n\n                TimeDuration = duration;\n\n                var temp = (postition.TotalMilliseconds / duration.TotalMilliseconds) * 100;\n\n                var newPos = this.CalcPosition(temp);\n                if (!double.IsNaN(newPos) || !double.IsNaN(newPos))\n                {\n                    var anim = compositor.CreateVector3KeyFrameAnimation();\n                    var easing = compositor.CreateLinearEasingFunction();\n\n                    anim.InsertExpressionKeyFrame(1f, ExpressionFunctions.Vector3((float)-newPos, 0, 0), easing);\n                    try\n                    {\n                        var result = this.tracker.TryUpdatePositionWithAnimation(anim);\n                    }\n                    catch (ArgumentException)\n                    {\n                        // since new if statement is somehow letting NaN through, need to catch exception when it does\n                    }\n                }\n            }\n        }\n\n        public void SetElapsedTimeControl(TimeControl elapsed)\n        {\n            this.elapsedTimeControl = elapsed;\n            if (elapsed != null)\n            {\n                this.elapsedTimeControl.CurrentTime = TimeSpan.Zero;\n                this.elapsedTimeControl.Duration = TimeSpan.FromSeconds(1);\n            }\n        }\n\n        public void NotifyPointerPressed(PointerEventArgs args)\n        {\n            try\n            {\n                interactionSource.TryRedirectForManipulation(args.CurrentPoint);\n            }\n            catch (Exception)\n            {\n            }\n        }\n        #endregion\n\n        #region INotifyPropertyChanged\n        private void RaisePropertyChanged([CallerMemberName] string caller = \"\")\n        {\n            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(caller));\n        }\n        #endregion\n\n        #region PositionHandling\n        private void SetPosition(double percentage)\n        {\n            this.currentPercentage = percentage;\n\n            this.UpdatePosition();\n        }\n\n        private void UpdatePosition()\n        {\n            var newPos = this.CalcPosition(this.currentPercentage);\n            this.SetPositionAbsoluteClamped(newPos);\n        }\n\n        private double Clamp(double position)\n        {\n            if (position < 0)\n            {\n                return 0.0;\n            }\n            else if (position > this.trackCanvasWidth - this.thumb.Width)\n            {\n                return this.trackCanvasWidth - this.thumb.Width;\n            }\n            else\n            {\n                return position;\n            }\n        }\n\n        private void SetPositionAbsoluteClamped(double position)\n        {\n            if (this.thumb != null && this.trackCanvas != null)\n            {\n                this.thumb.SetValue(Canvas.LeftProperty, this.Clamp(position));\n            }\n        }\n\n        private double CalcPosition(double percent)\n        {\n            if (this.thumb == null)\n            {\n                return 0.0;\n            }\n\n            return ((percent / 100.0) * this.trackCanvasWidth) - (45 * (percent / 100.0));\n        }\n        #endregion\n\n        #region eventhandlers\n        private void Timeline_Loaded(object sender, RoutedEventArgs e)\n        {\n            this.SizeChanged += this.Timeline_SizeChanged;\n            this.trackCanvas.SizeChanged += this.TrackCanvas_SizeChanged;\n\n            this.StartComposition();\n        }\n\n        private void Timeline_Unloaded(object sender, RoutedEventArgs e)\n        {\n            this.SizeChanged -= this.Timeline_SizeChanged;\n\n            if (this.trackCanvas != null)\n            {\n                this.trackCanvas.SizeChanged -= this.TrackCanvas_SizeChanged;\n            }\n        }\n\n        private void Timeline_SizeChanged(object sender, SizeChangedEventArgs e)\n        {\n            this.UpdatePosition();\n        }\n\n        // This captures when a mousewheel interaction occurs. We will then take the \"delta\" from the mousewheel and\n        // funnel that into an animation and animate the position of InteractionTracker. Tracker's position ultimately defines position of the scrubber\n        private void PointerWheel_Changed(object sender, PointerRoutedEventArgs e)\n        {\n            // Calling OnDragStart() so we can change the position of the scrubber\n            OnDragStart();\n\n            // Grab the delta of the mousewheel from the event handler\n            var wheelDelta = e.GetCurrentPoint(trackCanvas).Properties.MouseWheelDelta;\n            propSet.InsertVector3(\"wheelDelta\", new System.Numerics.Vector3(wheelDelta, 0f, 0f));\n\n            // Create the animation that we will use to animate the position of InteractionTracker\n            var wheelKFA = this.compositor.CreateVector3KeyFrameAnimation();\n            wheelKFA.Duration = TimeSpan.FromSeconds(1);\n\n            // We are using strings here instead of ExpressionBuilder. We need an extension method added to ExpressionBuilder for TryUpdatePositionWithAnimation to take in\n            // an ExpressionNode. Then we can use ExpressionNodes in the ExpressionKeyFrame instead of strings\n            wheelKFA.InsertExpressionKeyFrame(1f, \"this.CurrentValue + props.wheelDelta\");\n            wheelKFA.SetReferenceParameter(\"tracker\", this.tracker);\n            wheelKFA.SetReferenceParameter(\"props\", propSet);\n\n            // Update the position of InteractionTracker with the animation based on the scroll wheel delta\n            this.tracker.TryUpdatePositionWithAnimation(wheelKFA);\n        }\n\n        // We are capturing the move events of the mouse. THis will be for when we want to click and drag the scrubber around.\n        // Note this event gets fired for anytime the pointers moves in general. To make sure we only animate when scrubbing,\n        // We are assuming the left mouse button will be pressed\n        private void MousePointer_Moved(object sender, PointerRoutedEventArgs e)\n        {\n            // Detecting that the pointer type is of mouse\n            if (e.Pointer.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse)\n            {\n                // Detecting that the left mouse button is clicked\n                if (e.GetCurrentPoint(thumb).Properties.IsLeftButtonPressed)\n                {\n                    // Calling OnDragStart() so we can change the position of the scrubber\n                    OnDragStart();\n\n                    // Grab the X position of the pointer in the TrackCanvas\n                    float xPosition = (float)e.GetCurrentPoint(trackCanvas).Position.X;\n                    propSet.InsertVector3(\"xMoved\", new System.Numerics.Vector3(xPosition, 0f, 0f));\n\n                    // Create the animation that we will use to animate the position of InteractionTracker\n                    // Using an Expression since the deltas will be so small that a KFA would be a bit odd\n                    // We are using strings here instead of ExpressionBuilder. We need an extension method added to ExpressionBuilder for TryUpdatePositionWithAnimation to take in\n                    // an ExpressionNode. Then we can use ExpressionNodes in the ExpressionKeyFrame instead of strings\n                    var pointerExp = this.compositor.CreateExpressionAnimation(\"-props.xMoved\");\n                    pointerExp.SetReferenceParameter(\"props\", propSet);\n                    this.tracker.TryUpdatePositionWithAnimation(pointerExp);\n                }\n            }\n        }\n\n        // This is for click-to-seek. Event current commented out on the trackCanvas, weird eventing issues between when this event gets called and when need to call OnDragStart() and OnDragStop()\n        private void MousePointer_ThumbPressed(object sender, PointerRoutedEventArgs e)\n        {\n            if (e.Pointer.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse)\n            {\n                var xPosition = (float)e.GetCurrentPoint(trackCanvas).Position.X;\n                propSet.InsertVector3(\"xPress\", new System.Numerics.Vector3(-xPosition, 0f, 0f));\n\n                if (e.GetCurrentPoint(thumb).Properties.IsLeftButtonPressed)\n                {\n                    OnDragStart();\n\n                    // var pointerExp = propSet.GetReference().GetVector3Property(\"xPress\");\n                    var pointerExp = this.compositor.CreateExpressionAnimation(\"props.xPress\");\n                    pointerExp.SetReferenceParameter(\"props\", propSet);\n\n                    this.tracker.TryUpdatePositionWithAnimation(pointerExp);\n                }\n            }\n        }\n\n        private void MousePointer_Released(object sender, PointerRoutedEventArgs e)\n        {\n            if (IsScrubbing)\n            {\n                this.OnDragStop();\n            }\n        }\n\n        // This is for click-to-seek. Event current commented out on the trackCanvas, weird eventing issues between when this event gets called and when need to call OnDragStart() and OnDragStop()\n        private void MousePointer_Pressed(object sender, PointerRoutedEventArgs e)\n        {\n            if (e.Pointer.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse)\n            {\n                OnDragStart();\n                var xPosition = (float)e.GetCurrentPoint(trackCanvas).Position.X;\n                propSet.InsertVector3(\"xClickLocation\", new System.Numerics.Vector3(-xPosition, 0f, 0f));\n\n                var pointerKFA = this.compositor.CreateVector3KeyFrameAnimation();\n                pointerKFA.Duration = TimeSpan.FromSeconds(1);\n\n                // pointerKFA.InsertExpressionKeyFrame(1f, \"props.xClickLocation\");\n                // pointerKFA.SetReferenceParameter(\"props\", propSet);\n                pointerKFA.InsertExpressionKeyFrame(1f, propSet.GetReference().GetVector3Property(\"xClickLocation\"));\n\n                this.tracker.TryUpdatePositionWithAnimation(pointerKFA);\n            }\n        }\n\n        private void TrackCanvas_SizeChanged(object sender, SizeChangedEventArgs e)\n        {\n            this.trackVisual.Size = new System.Numerics.Vector2((float)trackCanvas.ActualWidth, (float)trackCanvas.ActualHeight);\n            this.thumbVisual.Size = new System.Numerics.Vector2((float)thumb.ActualWidth, (float)thumb.ActualHeight);\n\n            this.tracker.MinPosition = new System.Numerics.Vector3(-this.trackVisual.Size.X, 0, 0);\n\n            this.trackCanvasWidth = e.NewSize.Width;\n        }\n\n        private void OnDragStart()\n        {\n            this.dragging = true;\n            myPercentageTimeControl.Scrubbing = true;\n            if (elapsedTimeControl != null)\n            {\n                elapsedTimeControl.Scrubbing = true;\n            }\n\n            this.DragStart?.Invoke(this, EventArgs.Empty);\n        }\n\n        private void OnDragStop()\n        {\n            this.dragging = false;\n            myPercentageTimeControl.Scrubbing = false;\n            if (elapsedTimeControl != null)\n            {\n                elapsedTimeControl.Scrubbing = false;\n            }\n\n            this.DragStop?.Invoke(this, EventArgs.Empty);\n        }\n\n        #endregion\n\n        #region InternalInitialization\n#pragma warning disable SA1202 // Elements should be ordered by access\n        protected override void OnApplyTemplate()\n#pragma warning restore SA1202 // Elements should be ordered by access\n        {\n            base.OnApplyTemplate();\n            this.thumb = this.GetTemplateChild(\"positionIndicator\") as FrameworkElement;\n            this.trackCanvas = this.GetTemplateChild(\"trackCanvas\") as FrameworkElement;\n            this.myPercentageTimeControl = this.GetTemplateChild(\"timeControl\") as TimeControl;\n            this.myPercentageTimeControl.CurrentTime = TimeSpan.Zero;\n            this.myPercentageTimeControl.Duration = TimeSpan.FromSeconds(1);\n            this.trackCanvas.SizeChanged += this.TrackCanvas_SizeChanged;\n\n            InitializeComposition();\n        }\n\n        private void InitializeComposition()\n        {\n            this.compositor = ElementCompositionPreview.GetElementVisual(this).Compositor;\n            this.thumbVisual = ElementCompositionPreview.GetElementVisual(thumb);\n            this.trackVisual = ElementCompositionPreview.GetElementVisual(trackCanvas);\n\n            propSet = this.compositor.CreatePropertySet();\n            trackCanvas.PointerWheelChanged += new PointerEventHandler(PointerWheel_Changed);\n            trackCanvas.PointerMoved += new PointerEventHandler(MousePointer_Moved);\n            trackCanvas.PointerReleased += new PointerEventHandler(MousePointer_Released);\n\n            // These pointer events are needed if want to click-to-seek. Weird eventing issues between when these get called and when need to call OnDragStart() and OnDragStop() methods\n            // trackCanvas.PointerPressed += new PointerEventHandler(MousePointer_Pressed);\n            // thumb.PointerPressed += new PointerEventHandler(MousePointer_ThumbPressed);\n            this.interactionSource = VisualInteractionSource.Create(this.trackVisual);\n            this.interactionSource.PositionXSourceMode = InteractionSourceMode.EnabledWithInertia;\n            this.tracker = InteractionTracker.CreateWithOwner(this.compositor, this);\n            this.tracker.InteractionSources.Add(this.interactionSource);\n\n            // This is the Expression that we will use to drive the position of the Thumb Scrubber\n            // Idea is that we will then update the position of InteractionTracker to move thes scrubber around - this is done via the Pointer Events tied to the TrackCanvas object\n            // Note: this is using ExpressionBuilder\n            this.thumbExpressionAnimation = -tracker.GetReference().Position.X;\n        }\n\n        private void StartComposition()\n        {\n            // Starting the Expression on the thumb scrubber that will leverage the position of InteractionTracker\n            this.thumbVisual.StartAnimation(nameof(Visual.Offset) + \".X\", thumbExpressionAnimation);\n        }\n        #endregion\n\n        #region IInteractionTrackerOwner\n#pragma warning disable SA1202 // Elements should be ordered by access\n        public void CustomAnimationStateEntered(InteractionTracker sender, InteractionTrackerCustomAnimationStateEnteredArgs args)\n        {\n        }\n\n        public void IdleStateEntered(InteractionTracker sender, InteractionTrackerIdleStateEnteredArgs args)\n        {\n            if (IsScrubbing)\n            {\n                this.OnDragStop();\n            }\n\n            Debug.WriteLine(\"Idle\");\n        }\n\n        public void InertiaStateEntered(InteractionTracker sender, InteractionTrackerInertiaStateEnteredArgs args)\n        {\n            OnDragStart();\n        }\n\n        public void InteractingStateEntered(InteractionTracker sender, InteractionTrackerInteractingStateEnteredArgs args)\n        {\n            OnDragStart();\n        }\n\n        public void RequestIgnored(InteractionTracker sender, InteractionTrackerRequestIgnoredArgs args)\n        {\n        }\n\n        public void ValuesChanged(InteractionTracker sender, InteractionTrackerValuesChangedArgs args)\n        {\n            if (IsScrubbing)\n            {\n                var percent = -args.Position.X / this.ActualWidth;\n                this.CurrentPercentage = percent;\n            }\n        }\n#pragma warning restore SA1202 // Elements should be ordered by access\n        #endregion\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/DataModel/Episode.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing BuildCast.Helpers;\nusing Windows.Foundation.Collections;\nusing System.Diagnostics;\n\nnamespace BuildCast.DataModel\n{\n    public class Episode\n    {\n        private string _uri;\n        private string _localFilename;\n        private string _title;\n        private string _description;\n        private string _subtitle;\n        private string _itemThumbnail;\n        private Feed _feed;\n        private DateTimeOffset _publishDate;\n        private string _formattedPublishDate;\n        private TimeSpan _duration;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"Episode\"/> class.\n        /// Public Constructor required by EF\n        /// </summary>\n        public Episode()\n        {\n        }\n\n        public Episode(\n            string key,\n            string title,\n            string description,\n            string itemThumbnail,\n            DateTimeOffset publishDate,\n            TimeSpan duration,\n            string subtitle,\n            Feed feed = null,\n            string feedId = \"\")\n        {\n            this.Id = Guid.NewGuid();\n            this.Key = key;\n            this.LocalFileName = BackgroundDownloadHelper.SafeHashUri(new Uri(this.Key));\n            this._title = title;\n            this._description = description;\n            this._itemThumbnail = itemThumbnail;\n\n            this._publishDate = publishDate;\n            this._duration = duration;\n            this.Subtitle = subtitle;\n\n            if (feed != null)\n            {\n                this._feed = feed;\n                this.FeedId = feed?.Uri?.ToString();\n            }\n            else if (!string.IsNullOrEmpty(feedId))\n            {\n                this.FeedId = feedId;\n            }\n        }\n\n        public Episode(string key, string title, string description, string itemThumbnail)\n            : this(\n            key,\n            title,\n            description,\n            itemThumbnail,\n            DateTimeOffset.MinValue,\n            TimeSpan.MinValue,\n            string.Empty)\n        {\n        }\n\n        public Guid Id { get; set; }\n\n        public string Key\n        {\n            get\n            {\n                return _uri;\n            }\n\n            set\n            {\n                if (value == null)\n                {\n                    throw new ArgumentException(\"Key cannot be null\");\n                }\n\n                _uri = value;\n                LocalFileName = BackgroundDownloadHelper.SafeHashUri(new Uri(_uri));\n            }\n        }\n\n        public string LocalFileName { get => _localFilename; set => _localFilename = value; }\n\n        public string Title { get => _title; set => _title = value; }\n\n        public string Description { get => _description; set => _description = value; }\n\n        public string ItemThumbnail { get => _itemThumbnail; set => _itemThumbnail = value; }\n\n        public bool IsDownloaded { get; set; }\n\n        public string FeedId\n        {\n            get; set;\n        }\n\n        [System.ComponentModel.DataAnnotations.Schema.NotMapped]\n        public Feed Feed\n        {\n            get\n            {\n                if (_feed == null)\n                {\n                    _feed = GetFeed();\n                }\n\n                return _feed;\n            }\n\n            set => _feed = value;\n        }\n\n        public DateTimeOffset PublishDate { get => _publishDate; set => _publishDate = value; }\n        \n        public string FormatPublishDate (Episode e)\n        {\n            string formattedDate = e.PublishDate.Month.ToString() + \"/\" + e.PublishDate.Day.ToString() + \"/\" + e.PublishDate.Year.ToString();\n            return formattedDate;\n        }\n\n        public TimeSpan Duration { get => _duration; set => _duration = value; }\n\n        public string Subtitle { get => _subtitle; set => _subtitle = value; }\n\n        public override string ToString()\n        {\n            return _title ?? string.Empty;\n        }\n\n        public async Task SetDownloaded()\n        {\n            using (LocalStorageContext lsc = new LocalStorageContext())\n            {\n                lsc.Update(this);\n                this.IsDownloaded = true;\n                await lsc.SaveChangesAsync();\n            }\n        }\n\n        public async Task DeleteDownloaded()\n        {\n            if (IsDownloaded)\n            {\n                using (LocalStorageContext lsc = new LocalStorageContext())\n                {\n                    lsc.Update(this);\n                    var localFileName = LocalFileName;\n                    LocalFileName = null;\n                    IsDownloaded = false;\n\n                    await BackgroundDownloadHelper.DeleteDownload(localFileName);\n                    await lsc.SaveChangesAsync();\n                }\n            }\n        }\n\n        internal static Episode BuildFromValueSet(ValueSet values)\n        {\n            Episode fi = new Episode(\n                key: values.GetString(nameof(Key)),\n                title: values.GetString(nameof(Title)),\n                description: values.GetString(nameof(Description)),\n                itemThumbnail: values.GetString(nameof(ItemThumbnail)),\n                publishDate: values.GetDateTimeOffset(nameof(PublishDate)),\n                duration: values.GetTimeSpan(nameof(Duration)),\n                subtitle: values.GetString(nameof(Subtitle)),\n                feedId: values.GetString(nameof(FeedId)));\n\n            return fi;\n        }\n\n        internal void AddToValueSet(ValueSet values)\n        {\n            ValueSet feedItem = new ValueSet();\n            values.Add(\"feeditem\", feedItem);\n            feedItem.Add(nameof(Id), Id.ToString());\n            feedItem.Add(nameof(Key), Key.ToString());\n            feedItem.Add(nameof(Title), Title);\n            feedItem.Add(nameof(Description), Description);\n            feedItem.Add(nameof(ItemThumbnail), ItemThumbnail);\n            feedItem.Add(nameof(FeedId), FeedId);\n            feedItem.Add(nameof(PublishDate), PublishDate.ToUnixTimeMilliseconds());\n            feedItem.Add(nameof(Duration), Duration.TotalMilliseconds);\n            feedItem.Add(nameof(Subtitle), Subtitle);\n        }\n\n        private Feed GetFeed()\n        {\n            return FeedStore.AllFeeds.Where(l => l.Uri.OriginalString == this.FeedId).FirstOrDefault();\n        }\n    }\n}"
  },
  {
    "path": "src/BuildCast/DataModel/EpisodePlaybackState.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\n\nnamespace BuildCast.DataModel\n{\n    public class EpisodePlaybackState\n    {\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"EpisodePlaybackState\"/> class.\n        /// Public Constructor required by EF\n        /// </summary>\n        public EpisodePlaybackState()\n        {\n        }\n\n        public EpisodePlaybackState(Episode episode)\n        {\n            this.Id = Guid.NewGuid();\n            this.EpisodeKey = episode?.Key;\n        }\n\n        public Guid Id { get; set; }\n\n        public string EpisodeKey { get; set; }\n\n        public double ListenProgress { get; set; }\n\n        public double GetPercentDouble (Episode e)\n        {\n            return (ListenProgress / e.Duration.TotalMilliseconds) * 100;\n        }\n\n        public string GetPercent(Episode e)\n        {\n            return $\"{(int)((ListenProgress / e.Duration.TotalMilliseconds) * 100)}%\";\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/DataModel/EpisodeWithState.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nnamespace BuildCast.DataModel\n{\n    public class EpisodeWithState\n    {\n        public Episode Episode { get; set; }\n\n        public EpisodePlaybackState PlaybackState { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/DataModel/Favorite.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Linq;\n\nnamespace BuildCast.DataModel\n{\n    public class Favorite\n    {\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"Favorite\"/> class.\n        /// Public Constructor required by EF\n        /// </summary>\n        public Favorite()\n        {\n        }\n\n        public Favorite(Episode item)\n        {\n            this.Id = Guid.NewGuid();\n            this.EpisodeId = item.Id;\n        }\n\n        public Guid Id { get; set; }\n\n        public Guid EpisodeId { get; set; }\n\n        internal Episode GetEpisode()\n        {\n            using (var db = new LocalStorageContext())\n            {\n                return db.EpisodeCache.Where(ep => ep.Id == this.EpisodeId).FirstOrDefault();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/DataModel/Feed.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Xml.Linq;\nusing BuildCast.Helpers;\nusing Windows.ApplicationModel;\nusing Windows.Foundation.Collections;\nusing Windows.Storage.Streams;\nusing Windows.Web.Http;\n\nnamespace BuildCast.DataModel\n{\n    public class Feed\n    {\n        public Feed(Uri feedUri, string title, string description, Uri imageUri, string author)\n        {\n            Uri = feedUri;\n            Title = title;\n            Description = description;\n            ImageUri = imageUri;\n            Author = author;\n        }\n\n        public Uri Uri { get; internal set; }\n\n        public string Title { get; set; }\n\n        public string Description { get; set; }\n\n        public string Author { get; set; }\n\n        public Uri ImageUri { get; set; }\n\n        public async Task<List<Episode>> GetEpisodes()\n        {\n            using (var db = new LocalStorageContext())\n            {\n                var cached = db.EpisodeCache.Where(i => i.FeedId == this.Uri.ToString())\n                    .OrderByDescending(ob => ob.PublishDate);\n                if (cached.Count() > 0)\n                {\n                    foreach (var item in cached)\n                    {\n                        item.Feed = this;\n                    }\n\n                    return cached.ToList();\n                }\n            }\n\n            return await GetNewEpisodesAsync();\n        }\n\n        internal async Task<List<Episode>> GetNewEpisodesAsync()\n        {\n            List<Episode> newEpisodes = new List<Episode>();\n            var results = await GetEpisodesInternalAsync();\n            using (var db = new LocalStorageContext())\n            {\n                foreach (var item in results)\n                {\n                    if (db.EpisodeCache.Where(i => (i.Key == item.Key && i.Feed == item.Feed)).Count() == 0)\n                    {\n                        db.EpisodeCache.Add(item);\n                        newEpisodes.Add(item);\n                    }\n                }\n\n                db.SaveChanges();\n            }\n\n            return newEpisodes;\n        }\n\n        internal async Task RemoveTopThreeItems()\n        {\n            using (var db = new LocalStorageContext())\n            {\n                var episodes = await GetEpisodes();\n                db.EpisodeCache.Remove(episodes[0]);\n                db.EpisodeCache.Remove(episodes[1]);\n                db.EpisodeCache.Remove(episodes[2]);\n                await db.SaveChangesAsync();\n            }\n        }\n\n        internal async Task<List<Episode>> GetEpisodesInternalAsync()\n        {\n            switch (this.Uri.Scheme)\n            {\n                case \"http\":\n                case \"https\":\n                    return await GetEpisodesInternalFromWebAsync();\n                case \"local\":\n                    return await GetEpisodesInternalFromResAsync(this.Uri.DnsSafeHost);\n                default:\n                    return null;\n            }\n        }\n\n        internal async Task<List<Episode>> GetEpisodesInternalFromWebAsync()\n        {\n            HttpClient client = new HttpClient();\n            using (var stream = await client.GetInputStreamAsync(this.Uri))\n            {\n                return ParseRssFeed(stream, this);\n            }\n        }\n\n        internal async Task<List<Episode>> GetEpisodesInternalFromResAsync(string name)\n        {\n            var file = await Package.Current.InstalledLocation.GetFileAsync($\"Assets\\\\{name}\");\n\n            using (var stream = await file.OpenStreamForReadAsync())\n            {\n                return ParseRssFeed(stream.AsInputStream(), this);\n            }\n        }\n\n        internal static List<Episode> ParseRssFeed(IInputStream stream, Feed parent)\n        {\n            List<Episode> results = new List<Episode>();\n\n            XNamespace ns = \"http://purl.org/rss/1.0/\";\n            XNamespace mrss = \"http://search.yahoo.com/mrss/\";\n            XNamespace itunes = \"http://www.itunes.com/dtds/podcast-1.0.dtd\";\n            var media = mrss.GetName(\"media\");\n\n            XDocument xdoc = XDocument.Load(stream.AsStreamForRead());\n\n            var items = xdoc.Descendants(\"item\");\n            foreach (var item in items)\n            {\n                string thumbUri = string.Empty;\n                XAttribute mediadownload;\n\n                var pubDateStr = item.Element(\"pubDate\")?.Value;\n                DateTimeOffset pubDate = DateTimeOffset.MinValue;\n                if (!string.IsNullOrEmpty(pubDateStr))\n                {\n                    pubDate = DateTimeHelper.ParseDateTimeRFC822(pubDateStr);\n                }\n\n                var durationStr = item.Element(itunes + \"duration\")?.Value;\n                TimeSpan duration = TimeSpan.MinValue;\n                if (!string.IsNullOrEmpty(durationStr) && durationStr.Contains(\":\"))\n                {\n                    duration = TimeSpan.Parse(durationStr);\n                }\n#pragma warning disable SA1108 // Block statements must not contain embedded comments\n                else if (!string.IsNullOrEmpty(durationStr) && !durationStr.Contains(\":\")) // channel9\n#pragma warning restore SA1108 // Block statements must not contain embedded comments\n                {\n                    duration = TimeSpan.FromSeconds(Convert.ToInt32(durationStr));\n                }\n\n                var subtitleStr = item.Element(itunes + \"subtitle\")?.Value;\n\n                if (string.IsNullOrEmpty(subtitleStr))\n                {\n                    var cats = item.Elements(\"category\");\n                    if (cats != null && cats.Count() > 0)\n                    {\n                        StringBuilder sb = new StringBuilder();\n                        cats.ToList().ForEach(f => { sb.Append($\"{f.Value} \"); });\n                        subtitleStr = sb.ToString();\n                    }\n                }\n\n                var desc = item.Element(\"description\");\n                var content = item.Elements(mrss + \"content\").FirstOrDefault();\n                if (content != null)\n                {\n                    mediadownload = content.Attribute(\"url\");\n                    var thumbnailElement = content.Element(mrss + \"thumbnail\");\n                    if (thumbnailElement != null)\n                    {\n                        var thumbnail = thumbnailElement.Attribute(\"url\");\n                        thumbUri = thumbnail.Value;\n                    }\n                }\n                else\n                {\n                    var thumbnailElements = item.Elements(mrss + \"thumbnail\");\n                    XElement thumbElement = null;\n                    if (thumbnailElements.Count() >= 4)\n                    {\n                        thumbElement = thumbnailElements.ElementAt(3);\n                    }\n                    else if (thumbnailElements.Count() >= 1)\n                    {\n                        thumbElement = thumbnailElements.ElementAt(0);\n                    }\n\n                    if (thumbElement != null)\n                    {\n                        thumbUri = thumbElement.Attribute(\"url\").Value;\n                    }\n\n                    var mediaGroup = item.Elements(mrss + \"group\");\n                    var mediaUriElements = mediaGroup.Elements(mrss + \"content\");\n                    XElement mediaUriElement = null;\n                    if (mediaUriElements.Count() >= 4)\n                    {\n                        mediaUriElement = mediaUriElements.ElementAt(3);\n                    }\n\n                    if (mediaUriElements.Count() == 1)\n                    {\n                        mediaUriElement = mediaUriElements.ElementAt(0);\n                    }\n\n                    mediadownload = mediaUriElement?.Attribute(\"url\");\n                }\n\n                if (mediadownload == null)\n                {\n                    var mediadownloadElements = item.Element(\"enclosure\");\n                    mediadownload = mediadownloadElements?.Attribute(\"url\");\n                }\n\n                if (mediadownload != null)\n                {\n                    var feed = new Episode(\n                               title: item.Element(\"title\").Value,\n                               description: desc.Value,\n                               key: mediadownload.Value,\n                               itemThumbnail: thumbUri,\n                               feed: parent,\n                               publishDate: pubDate,\n                               duration: duration,\n                               subtitle: subtitleStr);\n                    results.Add(feed);\n                }\n                else\n                {\n                    Debug.WriteLine($\"Skipping\");\n                }\n            }\n\n            return results;\n        }\n\n        internal static Feed BuildFeedFromValueSet(ValueSet values)\n        {\n            Feed built = new Feed(\n                feedUri: values.GetURI(nameof(Uri)),\n                title: values.GetString(nameof(Title)),\n                description: values.GetString(nameof(Description)),\n                author: values.GetString(nameof(Author)),\n                imageUri: values.GetURI(nameof(ImageUri)));\n\n            return built;\n        }\n\n        internal void AddToValueSet(ValueSet values)\n        {\n            ValueSet feedvs = new ValueSet();\n            values.Add(\"feed\", feedvs);\n            feedvs.Add(nameof(Description), Description);\n            feedvs.Add(nameof(ImageUri), ImageUri?.ToString());\n            feedvs.Add(nameof(Title), Title);\n            feedvs.Add(nameof(Uri), Uri?.ToString());\n            feedvs.Add(nameof(Author), Author);\n        }\n    }\n}"
  },
  {
    "path": "src/BuildCast/DataModel/FeedStore.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nnamespace BuildCast.DataModel\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Diagnostics;\n    using System.Linq;\n    using System.Threading.Tasks;\n    using BuildCast.Helpers;\n\n    public class FeedStore\n    {\n        private static List<Feed> _allFeeds = new List<Feed>();\n\n        static FeedStore()\n        {\n            AddFeeds();\n        }\n\n        public static List<Feed> AllFeeds { get => _allFeeds; }\n\n        public static async Task CheckDownloadsPresent()\n        {\n            await Task.Run(async () =>\n            {\n                try\n                {\n                    using (var db = new LocalStorageContext())\n                    {\n                        var results2 = from eps in db.EpisodeCache\n                                       join state in db.PlaybackState\n                                       on eps.Key equals state.EpisodeKey into myJoin\n                                       from sub in myJoin.DefaultIfEmpty()\n                                       where eps.IsDownloaded == true\n                                       select new EpisodeWithState { Episode = eps, PlaybackState = sub ?? new EpisodePlaybackState() };\n\n                        foreach (var item in results2)\n                        {\n                            if ((await BackgroundDownloadHelper.CheckLocalFileExistsFromUriHash(new Uri(item.Episode.Key))) == null\n                            && item.Episode.IsDownloaded)\n                            {\n                                // Item is flagged as downloaded but isn't in the local cache hence update db\n                                Debug.WriteLine($\"Episode {item.Episode.Title} is flagged as downloaded but file not present\");\n                                item.Episode.IsDownloaded = false;\n                            }\n                        }\n                        await db.SaveChangesAsync();\n\n                        await ScanDownloads();\n                    }\n                }\n                catch (Exception ex)\n                {\n                    Debug.WriteLine($\"Download scan failed with error {ex.Message}\");\n                    throw ex;\n                }\n            });\n        }\n\n        private static async Task ScanDownloads()\n        {\n            using (var db = new LocalStorageContext())\n            {\n                var items = await BackgroundDownloadHelper.GetAllFiles();\n                foreach (var item in items)\n                {\n                    var found = db.EpisodeCache.Where(e => e.LocalFileName == item.Name).FirstOrDefault();\n                    if (found != null && found.IsDownloaded == false)\n                    {\n                        found.IsDownloaded = true;\n                    }\n                }\n\n                await db.SaveChangesAsync();\n            }\n        }\n\n        private static void AddFeeds()\n        {\n            // Developer\n            AllFeeds.Add(new Feed(new Uri(\"https://s.ch9.ms/Events/Ch9Live/Windows-Community-Standup/RSS\"), \"Windows Community Standup  Sessions\", \"Sessions for Windows Community Standup\", new Uri(\"https://sec.ch9.ms/content/feedimage.png\"), \"Microsoft\"));\n            AllFeeds.Add(new Feed(new Uri(\"https://s.ch9.ms/Events/Build/2017/RSS\"), \"Build 2017 Sessions\", \"Sessions for Build 2017\", new Uri(\"https://f.ch9.ms/thumbnail/c2635543-13a9-4082-892a-1da55baa9bce.png\"), \"Microsoft\"));\n            AllFeeds.Add(new Feed(new Uri(\"https://s.ch9.ms/Feeds/RSS\"), \"Channel9\", \"Channel 9 keeps you up to date with the latest news and behind the scenes info from Microsoft that developers love to keep up with. From LINQ to SilverLight – Watch videos and hear about all the cool technologies coming and the people behind them.\", new Uri(\"https://sec.ch9.ms/content/feedimage.png\"), \"Microsoft\"));\n            AllFeeds.Add(new Feed(new Uri(\"https://channel9.msdn.com/Shows/msdevshow/feed/mp4high\"), \"MS Dev Show - Channel 9\", \"A NEW podcast for Microsoft developers covering topics such as Azure/cloud, Windows, Windows Phone, .NET, Visual Studio, and more! Hosted by Jason Young and Carl Schweitzer. Check out the full episode archive at http://msdevshow.com. \", new Uri(\"http://files.channel9.msdn.com/thumbnail/e35f4617-32e1-4f71-a4f3-7691de443952.png\"), \"Microsoft\"));\n            AllFeeds.Add(new Feed(new Uri(\"https://s.ch9.ms/Shows/XamarinShow/feed\"), \"The Xamarin Show  - Channel 9\", \"The Xamarin Show is all about native cross-platform mobile development for iOS, Android, macOS, and Windows with Xamarin. Join your host James Montemagno and his guests as they discuss building mobiles apps, integrating SDKs, extending mobile apps, the latest Xamarin news, awesome apps developers are building, and so much more. Follow @JamesMontemagno and send him topics with #XamarinShow of what and who you would like to see on the show.\", new Uri(\"https://f.ch9.ms/thumbnail/64fd4835-d6d3-4004-89ea-3f31b43b5dcf.png\"), \"Microsoft\"));\n            AllFeeds.Add(new Feed(new Uri(\"http://feeds.twit.tv/ww_video_hd.xml\"), \"Windows Weekly\", \"A weekly look at all things Microsoft, including Windows, Windows Phone, Office, Xbox, and more, from two of the foremost Windows watchers in the world, Paul Thurrott of Thurrott.com and Mary Jo Foley of All About Microsoft.\\n\\nRecords live every Wednesday at 2:00pm Eastern / 11:00am Pacific/ 18:00 UTC.\", new Uri(\"https://elroycdn.twit.tv/sites/default/files/styles/twit_album_art_2048x2048/public/images/shows/windows_weekly/album_art/sd/ww1400videohi.jpg?itok=GHeTXWKP\"), \"TwIT\"));\n            AllFeeds.Add(new Feed(new Uri(\"https://channel9.msdn.com/Shows/cloud+cover/feed/mp4high\"), \"Microsoft Azure Cloud Cover Show (HD) - Channel 9\", \"Microsoft Azure Cloud Cover is your eye on the Microsoft Cloud. Join Chris Risner and Thiago Almeida as they cover Microsoft Azure, demonstrate features, discuss the latest news &amp;#43; announcements, and share tips and tricks.\", new Uri(\"https://f.ch9.ms/thumbnail/19ef0544-3f18-4e11-8379-0326d8e493b9.png\"), \"Microsoft\"));\n            AllFeeds.Add(new Feed(new Uri(\"https://channel9.msdn.com/Blogs/One-Dev-Minute/feed\"), \"One-Dev-minute\", \"These short videos - usually 1-3 minutes - give developers a quick look at different Windows technologies and how to use them to build great apps.\", new Uri(\"https://f.ch9.ms/thumbnail/3e1f59af-78b2-41ea-adcd-30856ed4c756.png\"), \"Microsoft\"));\n            AllFeeds.Add(new Feed(new Uri(\"https://channel9.msdn.com/Shows/GALs/feed/mp4high\"), \"GALs\", \"GALs is a show about the women who work in Tech (at Microsoft or outside) from three ladies that currently work on the Channel 9 team. Golnaz Alibeigi, Soumow Atitallah, and Kaitlin McKinnon have started a new series featuring women in Tech who work in development, management, marketing and research who have interesting stories to share about their success in the industry and ideas on how to grow diversity in IT.\", new Uri(\"https://f.ch9.ms/thumbnail/37d388be-13a3-48f0-9063-5deddcec05d4.jpg\"), \"Microsoft\"));\n            AllFeeds.Add(new Feed(new Uri(\"https://channel9.msdn.com/Shows/C9-goingnative/feed/mp4high\"), \"Going Native\", \"C9::GoingNative is a show dedicated to native development with an emphasis on C&amp;#43;&amp;#43; and C&amp;#43;&amp;#43; developers. Each episode will have a segment including an interview with a native dev in his/her native habitat (office) where we&#39;ll talk about what they do and how they use native code and associated toolchains, as well as get their insights and wisdom—geek out. There will be a small news component or segment, but the show will primarily focus on technical tips and conversations with active C/C&amp;#43;&amp;#43; coders, demonstrations of new core language features, libraries, compilers, toolchains, etc. We will bring in guests from around the industry for conversations, tutorials, and demos. As we progress, we will also have segments on other native languages (C, D, Go, etc...). It&#39;s all native all the time. You, our viewers, fly first class. We&#39;ll deliver what you want to see. That&#39;s how it works. Go native! ---&amp;gt; Please follow us at @C9GoingNative on Twitter!\", new Uri(\"http://files.channel9.msdn.com/itunesimage/0593d56e-a15c-4666-b229-f2250bfdd485.png\"), \"Microsoft\"));\n            AllFeeds.Add(new Feed(new Uri(\"https://s.ch9.ms/Events/Build/2016/RSS\"), \"Build 2016 Sessions\", \"Sessions for Build 2016\", new Uri(\"http://files.channel9.msdn.com/thumbnail/dc1f8b69-a4a3-422c-b7a7-b29a9183bc79.jpg\"), \"Microsoft\"));\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/DataModel/InkNote.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Linq;\n\nnamespace BuildCast.DataModel\n{\n    public class InkNote\n    {\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"InkNote\"/> class.\n        /// Public Constructor required by EF\n        /// </summary>\n        public InkNote()\n        {\n        }\n\n        public InkNote(string episodeKey, double time)\n        {\n            Id = Guid.NewGuid();\n            this.EpisodeKey = episodeKey;\n            this.Time = time;\n        }\n\n        public bool HasInk { get; set; }\n\n        public string EpisodeKey { get; set; }\n\n        public byte[] Thumbnail { get; set; }\n\n        public double Time { get; internal set; }\n\n        public string NoteText { get; internal set; }\n\n        public Guid Id { get; set; }\n\n        internal Episode GetEpisode()\n        {\n            using (var db = new LocalStorageContext())\n            {\n                return db.EpisodeCache.Where(ep => ep.Key == this.EpisodeKey).FirstOrDefault();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/DataModel/InkNoteData.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.IO;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing System.Threading.Tasks;\nusing Windows.Storage.Streams;\nusing Windows.UI.Xaml.Media.Imaging;\n\nnamespace BuildCast.DataModel\n{\n    public class InkNoteData\n    {\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"InkNoteData\"/> class.\n        /// Public constructor required by EF\n        /// </summary>\n        public InkNoteData()\n        {\n        }\n\n        public Guid InkMeme { get; set; }\n\n        public byte[] Ink { get; set; }\n\n        public byte[] ImageBytes { get; set; }\n\n        public Guid Id { get; set; }\n\n        public async Task<BitmapImage> GetImage(Action onOpened)\n        {\n            return await GetImage(this.ImageBytes, onOpened);\n        }\n\n        public async Task<InMemoryRandomAccessStream> GetImageStream()\n        {\n            return await GetImageStream(this.ImageBytes);\n        }\n\n        private static async Task<InMemoryRandomAccessStream> GetImageStream(byte[] imageBytes)\n        {\n            InMemoryRandomAccessStream randomAccessStream = new InMemoryRandomAccessStream();\n            await RandomAccessStream.CopyAsync(imageBytes.AsBuffer().AsStream().AsRandomAccessStream(), randomAccessStream);\n            randomAccessStream.Seek(0);\n            return randomAccessStream;\n        }\n\n        private async Task<BitmapImage> GetImage(byte[] imageBytes, Action onOpened)\n        {\n            BitmapImage bitmapImage = new BitmapImage();\n            bitmapImage.ImageOpened += (s, e) => { onOpened(); };\n            InMemoryRandomAccessStream randomAccessStream = await GetImageStream(imageBytes);\n            bitmapImage.SetSource(randomAccessStream);\n            return bitmapImage;\n        }\n    }\n}"
  },
  {
    "path": "src/BuildCast/DataModel/LocalStorageContext.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Threading.Tasks;\nusing BuildCast.Helpers;\nusing Microsoft.EntityFrameworkCore;\nusing Windows.Storage;\n\nnamespace BuildCast.DataModel\n{\n    // documnetation is here: https://docs.microsoft.com/en-us/ef/core/get-started/uwp/getting-started\n    // under package manager console, use Add-Migration <nameofchange> every time this class updated\n    public class LocalStorageContext : DbContext\n    {\n        private static AsyncInitilizer<LocalStorageContext> _initializer = new AsyncInitilizer<LocalStorageContext>();\n        private DbSet<Favorite> _favorites;\n        private DbSet<Episode> _episodeCache;\n        private DbSet<InkNote> _memes;\n        private DbSet<InkNoteData> _inkNotes;\n        private DbSet<EpisodePlaybackState> _playbackState;\n\n        static LocalStorageContext()\n        {\n            _initializer.InitializeWith(CheckForDatabase);\n        }\n\n        public DbSet<Favorite> Favorites\n        {\n            get\n            {\n                _initializer.CheckInitialized();\n                return _favorites;\n            }\n\n            set\n            {\n                _favorites = value;\n            }\n        }\n\n        public DbSet<Episode> EpisodeCache\n        {\n            get\n            {\n                _initializer.CheckInitialized();\n                return _episodeCache;\n            }\n\n            set\n            {\n                _episodeCache = value;\n            }\n        }\n\n        public DbSet<InkNote> Memes\n        {\n            get\n            {\n                _initializer.CheckInitialized();\n                return _memes;\n            }\n\n            set\n            {\n                _memes = value;\n            }\n        }\n\n        public DbSet<InkNoteData> MemeData\n        {\n            get\n            {\n                _initializer.CheckInitialized();\n                return _inkNotes;\n            }\n\n            set\n            {\n                _inkNotes = value;\n            }\n        }\n\n        public DbSet<EpisodePlaybackState> PlaybackState\n        {\n            get\n            {\n                _initializer.CheckInitialized();\n                return _playbackState;\n            }\n\n            set\n            {\n                _playbackState = value;\n            }\n        }\n\n        public static void CheckMigrations()\n        {\n            _initializer.CheckInitialized();\n            using (var db = new LocalStorageContext())\n            {\n                db.Database.Migrate();\n            }\n        }\n\n        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n        {\n            optionsBuilder.UseSqlite(\"Data Source=buildcast.db\");\n        }\n\n        private static async Task CheckForDatabase()\n        {\n            var mainDbFileName = \"buildcast.db\";\n            var mainDbAssetPath = $\"ms-appx:///Assets/{mainDbFileName}\";\n\n            var data = Windows.Storage.ApplicationData.Current.LocalFolder;\n\n            var exists = await data.TryGetItemAsync(mainDbFileName);\n\n            if (exists == null)\n            {\n                var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri(mainDbAssetPath)).AsTask().ConfigureAwait(false);\n                var database = await file.CopyAsync(data).AsTask().ConfigureAwait(false);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/DataModel/NowPlayingState.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Linq;\nusing System.Threading.Tasks;\n\nnamespace BuildCast.DataModel\n{\n    public class NowPlayingState\n    {\n        private static Feed _currentFeed;\n        private static Episode _currentEpisode;\n        private static TimeSpan _currentTime;\n\n        public Episode CurrentEpisode { get => _currentEpisode; set => _currentEpisode = value; }\n\n        public Feed CurrentFeed { get => _currentFeed; set => _currentFeed = value; }\n\n        public TimeSpan CurrentTime { get => _currentTime; set => _currentTime = value; }\n\n        public bool HasItem\n        {\n            get\n            {\n                return _currentEpisode != null;\n            }\n        }\n\n        public async Task LoadStateAsync()\n        {\n            await Task.Run(() =>\n            {\n                DePersistLastPlayed(out Feed feed, out Episode episode, out TimeSpan position);\n                this.CurrentFeed = feed;\n                this.CurrentEpisode = episode;\n            });\n        }\n\n        public async Task<Tuple<bool, bool>> HandlePlayRequest(Episode paramItem)\n        {\n            var shouldSwitch = ShouldSwitch(paramItem);\n\n            if (shouldSwitch)\n            {\n                _currentEpisode = paramItem;\n                _currentFeed = _currentEpisode?.Feed;\n                _currentTime = TimeSpan.Zero;\n            }\n\n            if (_currentFeed != null && _currentEpisode != null)\n            {\n                await LoadEpisodePlaybackState();\n                PersistLastPlayed(_currentFeed, _currentEpisode, _currentTime);\n            }\n\n            return new Tuple<bool, bool>(shouldSwitch, paramItem != null);\n        }\n\n        public bool HandlePlayRequest(InkNote paramItem)\n        {\n            Episode newEpisode = null;\n            using (LocalStorageContext lsc = new LocalStorageContext())\n            {\n                newEpisode = lsc.EpisodeCache.Where(ep => ep.Key == paramItem.EpisodeKey).FirstOrDefault();\n            }\n\n            var shouldSwitch = ShouldSwitch(newEpisode);\n\n            if (shouldSwitch)\n            {\n                _currentEpisode = newEpisode;\n                _currentFeed = _currentEpisode?.Feed;\n                _currentTime = TimeSpan.Zero;\n            }\n\n            _currentTime = TimeSpan.FromMilliseconds(paramItem.Time);\n            if (_currentFeed != null)\n            {\n                PersistLastPlayed(_currentFeed, _currentEpisode, _currentTime);\n            }\n\n            return paramItem != null;\n        }\n\n        public bool ShouldSwitch(Episode parameter)\n        {\n            if (parameter == null)\n            {\n                return false;\n            }\n\n            if (_currentFeed == null || (_currentFeed != null && string.Compare(parameter.Key, _currentEpisode?.Key, StringComparison.Ordinal) != 0))\n            {\n                return true;\n            }\n\n            return false;\n        }\n\n        public void SetNowPlaying(Feed feed, Episode feedItem, TimeSpan currenttime)\n        {\n            _currentFeed = feed;\n            _currentEpisode = feedItem;\n            _currentTime = currenttime;\n        }\n\n        public async Task PeristEpisodePlaybackState()\n        {\n            using (LocalStorageContext lsc = new LocalStorageContext())\n            {\n                EpisodePlaybackState state = lsc.PlaybackState.Where(i => i.EpisodeKey == _currentEpisode.Key).FirstOrDefault();\n\n                if (state == null)\n                {\n                    state = new EpisodePlaybackState(this.CurrentEpisode);\n                    lsc.PlaybackState.Add(state);\n                }\n                else\n                {\n                    state.ListenProgress = this.CurrentTime.TotalMilliseconds;\n                    lsc.PlaybackState.Update(state);\n                }\n\n                await lsc.SaveChangesAsync();\n            }\n        }\n\n        public async Task LoadEpisodePlaybackState()\n        {\n            await Task.Run(async () =>\n            {\n                using (LocalStorageContext lsc = new LocalStorageContext())\n                {\n                    EpisodePlaybackState state = null;\n                    if (_currentEpisode != null)\n                    {\n                        state = lsc.PlaybackState.Where(i => i.EpisodeKey == CurrentEpisode.Key).FirstOrDefault();\n\n                        if (state == null)\n                        {\n                            EpisodePlaybackState eps = new EpisodePlaybackState(CurrentEpisode);\n                            lsc.PlaybackState.Add(eps);\n                            await lsc.SaveChangesAsync();\n                        }\n                        else\n                        {\n                            CurrentTime = TimeSpan.FromMilliseconds(state.ListenProgress);\n                        }\n                    }\n                }\n            });\n        }\n\n        private void PersistLastPlayed(Feed feed, Episode episode, TimeSpan timespan)\n        {\n            var settings = Windows.Storage.ApplicationData.Current.LocalSettings;\n\n            var composite = new Windows.Storage.ApplicationDataCompositeValue();\n            composite[\"feedUri\"] = feed.Uri.ToString();\n            composite[\"feedTitle\"] = feed.Title;\n            composite[\"feedDescription\"] = feed.Description;\n            composite[\"feedImageUri\"] = feed.ImageUri.ToString();\n            composite[\"feedAuthor\"] = feed.Author;\n            composite[\"episodeUri\"] = episode.Key.ToString();\n\n            settings.Values[\"currentState\"] = composite;\n        }\n\n        private void DePersistLastPlayed(out Feed feed, out Episode episode, out TimeSpan timespan)\n        {\n            var settings = Windows.Storage.ApplicationData.Current.LocalSettings;\n\n            var composite = (Windows.Storage.ApplicationDataCompositeValue)settings.Values[\"currentState\"];\n\n            if (composite != null)\n            {\n                feed = new Feed(\n                    feedUri: new Uri((string)composite[\"feedUri\"]),\n                    title: (string)composite[\"feedTitle\"],\n                    description: (string)composite[\"feedDescription\"],\n                    imageUri: new Uri((string)composite[\"feedImageUri\"]),\n                    author: (string)composite[\"feedAuthor\"]);\n\n                var uri = (string)composite[\"episodeUri\"];\n                using (LocalStorageContext lcs = new LocalStorageContext())\n                {\n                    episode = lcs.EpisodeCache.Where(e => e.Key == uri).FirstOrDefault();\n                }\n            }\n            else\n            {\n                feed = null;\n                episode = null;\n                timespan = TimeSpan.MinValue;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/GlobalSuppressions.cs",
    "content": "﻿// This file is used by Code Analysis to maintain SuppressMessage\n// attributes that are applied to this project.\n// Project-level suppressions either have no target or are given\n// a specific target and scoped to a namespace, type, member, etc.\n\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.ReadabilityRules\", \"SA1124:Do not use regions\", Justification = \"<Pending>\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.DocumentationRules\", \"SA1633:File must have header\", Justification = \"<Pending>\")]\n\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.SpacingRules\", \"SA1008:Opening parenthesis must be spaced correctly\", Justification = \"<Pending>\", Scope = \"type\", Target = \"~T:BuildCast.Services.RemotePlayService\")]\n\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.SpacingRules\", \"SA1009:Closing parenthesis must be spaced correctly\", Justification = \"<Pending>\", Scope = \"type\", Target = \"~T:BuildCast.Services.RemotePlayService\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.LayoutRules\", \"SA1516:Elements must be separated by blank line\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~P:BuildCast.Services.Navigation.NavigationService.NavigationCommand.ViewModelType\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.LayoutRules\", \"SA1516:Elements must be separated by blank line\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.Navigation.NavigationService.NavigationCommand.LoadViewModel(Windows.UI.Xaml.Controls.Page)~System.Threading.Tasks.Task\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.LayoutRules\", \"SA1516:Elements must be separated by blank line\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.Navigation.NavigationService.NavigationCommand.GoBackAsync~System.Threading.Tasks.Task\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.LayoutRules\", \"SA1516:Elements must be separated by blank line\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.Navigation.IPageWithViewModel`1.UpdateBindings\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.SpacingRules\", \"SA1009:Closing parenthesis must be spaced correctly\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.PlayerService.GetSourceForUri~System.Threading.Tasks.Task{System.}\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.SpacingRules\", \"SA1009:Closing parenthesis must be spaced correctly\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.PlayerService.GetSourceForUri~System.Threading.Tasks.Task{System.}\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.LayoutRules\", \"SA1516:Elements must be separated by blank line\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~P:BuildCast.Services.IRemoteSystemDescription.Name\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.LayoutRules\", \"SA1516:Elements must be separated by blank line\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~P:BuildCast.Services.IRemoteSystemDescription.Glyph\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.SpacingRules\", \"SA1009:Closing parenthesis must be spaced correctly\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.PlayerService.GetSourceForUri~System.Threading.Tasks.Task{System.}\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.SpacingRules\", \"SA1009:Closing parenthesis must be spaced correctly\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.PlayerService.GetSourceForUri~System.Threading.Tasks.Task{System.}\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.LayoutRules\", \"SA1516:Elements must be separated by blank line\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.IAvailableSystemsObserver.Removed(BuildCast.Services.IRemoteSystemDescription)\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.SpacingRules\", \"SA1009:Closing parenthesis must be spaced correctly\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.PlayerService.GetSourceForUri~System.Threading.Tasks.Task{System.}\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.LayoutRules\", \"SA1516:Elements must be separated by blank line\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.IRemotePlayerService.SubscribeSystemsChange(BuildCast.Services.IAvailableSystemsObserver)~System.IDisposable\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.LayoutRules\", \"SA1516:Elements must be separated by blank line\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.IRemotePlayerService.FindDevices~System.Threading.Tasks.Task{System.Boolean}\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.LayoutRules\", \"SA1516:Elements must be separated by blank line\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.IRemotePlayerService.RemoteActivation(Windows.ApplicationModel.Background.BackgroundTaskDeferral,Windows.ApplicationModel.AppService.AppServiceConnection)\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.SpacingRules\", \"SA1009:Closing parenthesis must be spaced correctly\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.PlayerService.GetSourceForUri~System.Threading.Tasks.Task{System.}\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.SpacingRules\", \"SA1009:Closing parenthesis must be spaced correctly\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.PlayerService.GetSourceForUri~System.Threading.Tasks.Task{System.}\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.SpacingRules\", \"SA1009:Closing parenthesis must be spaced correctly\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.PlayerService.GetSourceForUri~System.Threading.Tasks.Task{System.}\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.SpacingRules\", \"SA1009:Closing parenthesis must be spaced correctly\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.PlayerService.GetSourceForUri~System.Threading.Tasks.Task{System.}\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.SpacingRules\", \"SA1009:Closing parenthesis must be spaced correctly\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.PlayerService.GetSourceForUri~System.Threading.Tasks.Task{System.}\")]\n[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(\"StyleCop.CSharp.SpacingRules\", \"SA1009:Closing parenthesis must be spaced correctly\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BuildCast.Services.PlayerService.GetSourceForUri~System.Threading.Tasks.Task{System.}\")]"
  },
  {
    "path": "src/BuildCast/Helpers/AsyncHelpers.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace BuildCast.Helpers\n{\n    /// <summary>\n    /// A helper class to assist with the Asynchronous class initialization pattern\n    /// </summary>\n    /// <typeparam name=\"T\"></typeparam>\n    public class AsyncInitilizer<T>\n    {\n        private ManualResetEvent _initializeLock = new ManualResetEvent(false);\n        private bool _hasInitialized;\n        private bool _hasErrored;\n        private Exception _initializationException;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"AsyncInitilizer{T}\"/> class.\n        /// </summary>\n        public AsyncInitilizer()\n        {\n        }\n\n        internal void InitializeWith(Func<Task> initializationTask)\n        {\n            try\n            {\n                initializationTask().ContinueWith((e) =>\n                {\n                    try\n                    {\n                        if (e.Exception != null)\n                        {\n                            _hasErrored = true;\n                            _initializationException = e.Exception;\n                        }\n                    }\n                    finally\n                    {\n                        _hasInitialized = true;\n                        _initializeLock.Set();\n                    }\n                });\n            }\n            catch (Exception synchronous)\n            {\n                _hasErrored = true;\n                _initializationException = synchronous;\n            }\n        }\n\n        internal void CheckInitialized()\n        {\n            if (!_hasInitialized)\n            {\n                _initializeLock.WaitOne();\n            }\n\n            if (_hasErrored)\n            {\n                throw new Exception($\"Initialization of {typeof(T).FullName} failed with an exception\");\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Helpers/BackgroundDownloadHelper.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing System.Text;\nusing System.Threading.Tasks;\nusing BuildCast.DataModel;\nusing Microsoft.Toolkit.Uwp.Helpers;\nusing Microsoft.Toolkit.Uwp.Notifications;\nusing Windows.ApplicationModel.Background;\nusing Windows.Networking.BackgroundTransfer;\nusing Windows.Security.Cryptography;\nusing Windows.Security.Cryptography.Core;\nusing Windows.Storage;\nusing Windows.Storage.Streams;\nusing Windows.UI.Notifications;\n\nnamespace BuildCast.Helpers\n{\n    public enum DownloadStartResult\n    {\n        Started,\n        Error,\n        AllreadyDownloaded,\n    }\n\n    public static class BackgroundDownloadHelper\n    {\n        private static ToastNotifier _notifier = ToastNotificationManager.CreateToastNotifier();\n\n        public static async Task<DownloadStartResult> Download(Uri sourceUri)\n        {\n            var hash = SafeHashUri(sourceUri);\n            var file = await CheckLocalFileExistsFromUriHash(sourceUri);\n\n            var downloadingAlready = await IsDownloading(sourceUri);\n\n            if (file == null && !downloadingAlready)\n            {\n                await Task.Run(() =>\n                {\n                    var task = StartDownload(sourceUri, BackgroundTransferPriority.High, hash);\n                    task.ContinueWith((state) =>\n                    {\n                        if (state.Exception != null)\n                        {\n                            DispatcherHelper.ExecuteOnUIThreadAsync(async () =>\n                            {\n                                await UIHelpers.ShowContentAsync($\"An error occured with this download {state.Exception}\");\n                            });\n                        }\n                        else\n                        {\n                            Debug.WriteLine(\"Download Completed\");\n                        }\n                    });\n                });\n                return DownloadStartResult.Started;\n            }\n            else if (file != null)\n            {\n                await SetItemDownloaded(hash);\n                await UIHelpers.ShowContentAsync($\"Already downloaded.\");\n                return DownloadStartResult.AllreadyDownloaded;\n            }\n            else\n            {\n                return DownloadStartResult.Error;\n            }\n        }\n\n        public static async Task<bool> IsDownloading(Uri sourceUri)\n        {\n            var downloads = await BackgroundDownloader.GetCurrentDownloadsAsync();\n            if (downloads.Where(dl => dl.RequestedUri == sourceUri).FirstOrDefault() != null)\n            {\n                return true;\n            }\n\n            return false;\n        }\n\n        public static async Task<StorageFile> CheckLocalFileExistsFromUriHash(Uri sourceUri)\n        {\n            string hash = SafeHashUri(sourceUri);\n            return await CheckLocalFileExists(hash);\n        }\n\n        public static async Task<IReadOnlyList<IStorageItem>> GetAllFiles()\n        {\n            var files = await ApplicationData.Current.LocalCacheFolder.GetItemsAsync();\n            return files;\n        }\n\n        public static string SafeHashUri(Uri sourceUri)\n        {\n            string safeUri = sourceUri.ToString().ToLower();\n            var hash = Hash(safeUri);\n            return hash;\n        }\n\n        public static async Task UpdateDownloadedFromCache()\n        {\n            using (LocalStorageContext c = new LocalStorageContext())\n            {\n                var foundInDb = c.EpisodeCache.FirstOrDefault();\n                foundInDb.IsDownloaded = true;\n                await c.SaveChangesAsync();\n            }\n        }\n\n        public static void RegisterBackgroundTask(IBackgroundTrigger trigger)\n        {\n            var builder = new BackgroundTaskBuilder();\n            builder.Name = \"DownloadCompleteTrigger\";\n            builder.SetTrigger(trigger);\n\n            BackgroundTaskRegistration task = builder.Register();\n        }\n\n        public static async Task AttachToDownloads()\n        {\n            var downloads = await BackgroundDownloader.GetCurrentDownloadsAsync();\n            foreach (var download in downloads)\n            {\n                Progress<DownloadOperation> progressCallback = new Progress<DownloadOperation>(DownloadProgress);\n                await download.AttachAsync().AsTask(progressCallback);\n            }\n        }\n\n        /// <summary>\n        /// Deletes the downloaded file.\n        /// </summary>\n        /// <param name=\"fileName\">filename</param>\n        /// <returns>Task</returns>\n        public static async Task DeleteDownload(string fileName)\n        {\n            var fileItem = await ApplicationData.Current.LocalCacheFolder.TryGetItemAsync(fileName);\n            if (fileItem != null)\n            {\n                await fileItem.DeleteAsync();\n            }\n        }\n\n        /// <summary>\n        /// This will be called when the app is background activated as a result of a download trigger\n        /// Enables the database to be updated according to result of download\n        /// </summary>\n        /// <param name=\"instance\">A background task instance</param>\n        /// <returns>a task</returns>\n        internal static async Task CheckCompletionResult(IBackgroundTaskInstance instance)\n        {\n            var deferral = instance.GetDeferral();\n            var trigger = instance.TriggerDetails as BackgroundTransferCompletionGroupTriggerDetails;\n            if (trigger != null)\n            {\n                foreach (var item in trigger.Downloads)\n                {\n                    // TODO: handle other bad statuses\n                    if (item.Progress.Status == BackgroundTransferStatus.Error)\n                    {\n                        await item.ResultFile.DeleteAsync();\n                    }\n                    else if (item.Progress.Status == BackgroundTransferStatus.Completed)\n                    {\n                        await SetItemDownloaded(item);\n                    }\n                }\n            }\n\n            deferral?.Complete();\n        }\n\n        private static async Task SetItemDownloaded(DownloadOperation item)\n        {\n            await SetItemDownloaded(item.ResultFile.Name);\n            DownloadProgress(item);\n        }\n\n        private static async Task SetItemDownloaded(string filename)\n        {\n            using (var db = new LocalStorageContext())\n            {\n                var dbItems = db.EpisodeCache.Where(ep => ep.LocalFileName == filename);\n                foreach (var dbMatch in dbItems)\n                {\n                    dbMatch.IsDownloaded = true;\n                }\n\n                await db.SaveChangesAsync();\n            }\n        }\n\n        private static async Task<StorageFile> CheckLocalFileExists(string fileName)\n        {\n            StorageFile file = null;\n            try\n            {\n                file = await ApplicationData.Current.LocalCacheFolder.GetFileAsync(fileName);\n                var props = await file.GetBasicPropertiesAsync();\n                if (props.Size == 0)\n                {\n                    await file.DeleteAsync();\n                    return null;\n                }\n            }\n            catch (FileNotFoundException)\n            {\n            }\n\n            return file;\n        }\n\n        private static string Hash(string input)\n        {\n            IBuffer buffer = CryptographicBuffer.ConvertStringToBinary(input, BinaryStringEncoding.Utf8);\n            HashAlgorithmProvider hashAlgorithm = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha1);\n            var hashByte = hashAlgorithm.HashData(buffer).ToArray();\n            var sb = new StringBuilder(hashByte.Length * 2);\n            foreach (byte b in hashByte)\n            {\n                sb.Append(b.ToString(\"x2\"));\n            }\n\n            return sb.ToString();\n        }\n\n        private static async Task<bool> IsFileEmpty(StorageFile file)\n        {\n            if (file != null)\n            {\n                var props = await file.GetBasicPropertiesAsync();\n                return props.Size == 0;\n            }\n\n            return true;\n        }\n\n        private static async Task<StorageFile> GetLocalFileFromUri(Uri sourceUri)\n        {\n            string filename = GetFileNameFromUri(sourceUri);\n            StorageFile file = null;\n            try\n            {\n                file = await ApplicationData.Current.LocalCacheFolder.CreateFileAsync(filename);\n            }\n            catch (FileNotFoundException)\n            {\n            }\n\n            return file;\n        }\n\n        private static async Task<StorageFile> GetLocalFileFromName(string filename)\n        {\n            StorageFile file = null;\n            try\n            {\n                file = await ApplicationData.Current.LocalCacheFolder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);\n            }\n            catch (FileNotFoundException)\n            {\n            }\n\n            return file;\n        }\n\n        private static string GetFileNameFromUri(Uri sourceUri)\n        {\n            return System.IO.Path.GetFileName(sourceUri.PathAndQuery);\n        }\n\n        private static async Task StartDownload(Uri target, BackgroundTransferPriority priority, string localFilename)\n        {\n            var result = await BackgroundExecutionManager.RequestAccessAsync();\n            StorageFile destinationFile;\n            destinationFile = await GetLocalFileFromName(localFilename);\n\n            var group = BackgroundTransferGroup.CreateGroup(Guid.NewGuid().ToString());\n            group.TransferBehavior = BackgroundTransferBehavior.Serialized;\n\n            BackgroundTransferCompletionGroup completionGroup = new BackgroundTransferCompletionGroup();\n\n            // this will cause the app to be activated when the download completes and\n            // CheckCompletionResult will be called for the final download state\n            RegisterBackgroundTask(completionGroup.Trigger);\n\n            BackgroundDownloader downloader = new BackgroundDownloader(completionGroup);\n            downloader.TransferGroup = group;\n            group.TransferBehavior = BackgroundTransferBehavior.Serialized;\n            CreateNotifications(downloader);\n            DownloadOperation download = downloader.CreateDownload(target, destinationFile);\n            download.Priority = priority;\n\n            completionGroup.Enable();\n\n            Progress<DownloadOperation> progressCallback = new Progress<DownloadOperation>(DownloadProgress);\n            var downloadTask = download.StartAsync().AsTask(progressCallback);\n\n            string tag = GetFileNameFromUri(target);\n\n            CreateToast(tag, localFilename);\n\n            try\n            {\n                await downloadTask;\n\n                // Will occur after download completes\n                ResponseInformation response = download.GetResponseInformation();\n            }\n            catch (Exception)\n            {\n                Debug.WriteLine(\"Download exception\");\n            }\n        }\n\n        private static void DownloadProgress(DownloadOperation obj)\n        {\n            Debug.WriteLine(obj.Progress.ToString());\n\n            var progress = (double)obj.Progress.BytesReceived / (double)obj.Progress.TotalBytesToReceive;\n\n            string tag = GetFileNameFromUri(obj.RequestedUri);\n\n            UpdateToast(obj.ResultFile.Name, progress);\n        }\n\n        private static void CreateNotifications(BackgroundDownloader downloader)\n        {\n            var successToastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01);\n            successToastXml.GetElementsByTagName(\"text\").Item(0).InnerText =\n                \"Downloads completed successfully.\";\n            ToastNotification successToast = new ToastNotification(successToastXml);\n            downloader.SuccessToastNotification = successToast;\n\n            var failureToastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01);\n            failureToastXml.GetElementsByTagName(\"text\").Item(0).InnerText =\n                \"At least one download completed with failure.\";\n            ToastNotification failureToast = new ToastNotification(failureToastXml);\n            downloader.FailureToastNotification = failureToast;\n        }\n\n        private static void CreateToast(string title, string tag)\n        {\n            ToastContent toastContent = new ToastContent()\n            {\n                Visual = new ToastVisual()\n                {\n                    BindingGeneric = new ToastBindingGeneric()\n                    {\n                        Children =\n                        {\n                            new AdaptiveText()\n                            {\n                                Text = \"File downloading...\",\n                            },\n\n                            new AdaptiveProgressBar()\n                            {\n                                Title = title,\n                                Value = new BindableProgressBarValue(\"progressValue\"),\n                                ValueStringOverride = new BindableString(\"p\"),\n                                Status = \"Downloading...\",\n                            },\n                        },\n                    },\n                },\n            };\n\n            var data = new Dictionary<string, string>\n            {\n                { \"progressValue\", \"0\" },\n                { \"p\", $\"cool\" }, // TODO: better than cool\n            };\n\n            // And create the toast notification\n            ToastNotification notification = new ToastNotification(toastContent.GetXml())\n            {\n                Tag = tag,\n                Data = new NotificationData(data),\n            };\n\n            // And then send the toast\n            ToastNotificationManager.CreateToastNotifier().Show(notification);\n        }\n\n        private static void UpdateToast(string toastTag, double progressValue)\n        {\n            var data = new Dictionary<string, string>\n            {\n                { \"progressValue\", progressValue.ToString() },\n                { \"p\", $\"cool\" }, // TODO: better than cool\n            };\n\n            try\n            {\n                _notifier.Update(new NotificationData(data), toastTag);\n            }\n            catch (Exception ex)\n            {\n                Debug.WriteLine(ex.ToString());\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Helpers/BufferingVisualManager.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Numerics;\nusing System.Threading.Tasks;\nusing Windows.UI;\nusing Windows.UI.Composition;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace BuildCast.Helpers\n{\n    public class BufferingVisualManager\n    {\n        private Compositor _compositor;\n        private PointLight _pointLight;\n        private AmbientLight _ambientLight;\n\n        private TextBlock _bufferingMessage;\n\n        private Panel _textHolder;\n        private FrameworkElement _lightingTarget;\n\n        public bool IsBuffering { get; private set; }\n\n        public async Task StartBuffering(Panel textHolder, FrameworkElement lightingTarget, bool lightingdisabled)\n        {\n            if (!this.IsBuffering)\n            {\n                this.IsBuffering = true;\n                this._textHolder = textHolder;\n                if (!lightingdisabled)\n                {\n                    this._lightingTarget = lightingTarget;\n                    this.ConfigureLighting(this._lightingTarget);\n                }\n\n                this._bufferingMessage = await this.ConfigureText(this._textHolder);\n            }\n        }\n\n        public void StopBuffering(bool lightingdisabled)\n        {\n            if (this.IsBuffering)\n            {\n                CompositionScopedBatch batch = null;\n\n                if (!lightingdisabled)\n                {\n                    batch = this.RemoveLighting();\n                }\n                else\n                {\n                    batch = this._compositor.CreateScopedBatch(CompositionBatchTypes.Animation);\n                }\n\n                this.RemoveText(batch, this._bufferingMessage);\n                if (batch != null)\n                {\n                    batch.Completed += (o, e) =>\n                    {\n                        this.IsBuffering = false;\n                    };\n\n                    batch.End();\n                }\n            }\n        }\n\n        public void SetCompositor(Compositor compositor)\n        {\n            this._compositor = compositor;\n        }\n\n        private async Task<TextBlock> ConfigureText(Panel target)\n        {\n            TextBlock tb = new TextBlock();\n            tb.FontSize = 30;\n            tb.Text = \"Loading..\";\n            tb.HorizontalAlignment = HorizontalAlignment.Center;\n            tb.VerticalAlignment = VerticalAlignment.Center;\n            tb.SetValue(Grid.RowProperty, 2);\n            target.Children.Add(tb);\n            var visual = tb.GetVisual();\n            var batch = visual.ApplyImplicitAnimation(TimeSpan.FromSeconds(2));\n\n            Func<Task> delega = null;\n\n            delega = async () =>\n             {\n                 if (batch.IsEnded)\n                 {\n                     visual.Opacity = 1.0f;\n                 }\n                 else\n                 {\n                     await Window.Current.Dispatcher.RunIdleAsync((s) => { delega(); });\n                 }\n             };\n\n            await Window.Current.Dispatcher.RunIdleAsync((s) => { delega(); });\n            return tb;\n        }\n\n        private void RemoveText(CompositionScopedBatch batch, TextBlock textElement)\n        {\n            if (textElement != null)\n            {\n                var visual = textElement.GetVisual();\n                visual.Opacity = 0;\n            }\n\n            if (batch != null)\n            {\n                batch.Completed += (o, e) =>\n                {\n                    this._textHolder.Children.Remove(this._bufferingMessage);\n                    this._bufferingMessage = null;\n                };\n            }\n        }\n\n        private void ConfigureLighting(FrameworkElement element)\n        {\n            if (this._compositor != null)\n            {\n                // get interop visual for element\n                var text = element.GetVisual();\n\n                this._ambientLight = this._compositor.CreateAmbientLight();\n                this._ambientLight.Color = Colors.White;\n                this._ambientLight.Targets.Add(text);\n\n                this._pointLight = this._compositor.CreatePointLight();\n                this._pointLight.Color = Colors.White;\n                this._pointLight.CoordinateSpace = text;\n                this._pointLight.Targets.Add(text);\n\n                // starts out to the left; vertically centered; light's z-offset is related to fontsize\n                this._pointLight.Offset = new Vector3(0, (float)element.ActualHeight / 2, 480);\n\n                // simple offset.X animation that runs forever\n                var animation = this._compositor.CreateScalarKeyFrameAnimation();\n                animation.InsertKeyFrame(1, (float)element.ActualWidth);\n                animation.Duration = TimeSpan.FromMilliseconds(800);\n                animation.IterationBehavior = AnimationIterationBehavior.Forever;\n                animation.Direction = AnimationDirection.Alternate;\n\n                var animation2 = this._compositor.CreateColorKeyFrameAnimation();\n                animation2.Duration = TimeSpan.FromSeconds(2);\n                animation2.InsertKeyFrame(1, Color.FromArgb(0xFF, 0x50, 0x50, 0x50));\n                this._ambientLight.StartAnimation(nameof(AmbientLight.Color), animation2);\n\n                this._pointLight.StartAnimation(\"Offset.X\", animation);\n            }\n        }\n\n        private CompositionScopedBatch RemoveLighting()\n        {\n            CompositionScopedBatch returnBatch = null;\n            if (this._compositor != null)\n            {\n                returnBatch = this._compositor.CreateScopedBatch(CompositionBatchTypes.Animation);\n                var animation2 = this._compositor.CreateColorKeyFrameAnimation();\n                animation2.Duration = TimeSpan.FromSeconds(2);\n                animation2.InsertKeyFrame(1, Colors.White);\n                this._ambientLight.StartAnimation(\"Color\", animation2);\n\n                var animation = this._compositor.CreateScalarKeyFrameAnimation();\n                animation.Duration = TimeSpan.FromSeconds(2);\n                animation.InsertKeyFrame(1, 40.0f);\n                this._pointLight.StartAnimation(\"LinearAttenuation\", animation);\n\n                returnBatch.Completed += (o, e) =>\n                {\n                    if (this._pointLight != null)\n                    {\n                        this._pointLight.Dispose();\n                        this._pointLight = null;\n                    }\n\n                    if (this._ambientLight != null)\n                    {\n                        this._ambientLight.Dispose();\n                        this._ambientLight = null;\n                    }\n                };\n            }\n\n            return returnBatch;\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Helpers/DateTimeHelper.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Diagnostics;\nusing System.Globalization;\nusing System.Text;\n\nnamespace BuildCast.Helpers\n{\n    public static class DateTimeHelper\n    {\n        public static DateTimeOffset ParseDateTimeRFC822(string dateTimeString)\n        {\n            StringBuilder dateTimeStringBuilder = new StringBuilder(dateTimeString.Trim());\n            if (dateTimeStringBuilder.Length < 18)\n            {\n                throw new FormatException(\"Invalid date format. Expected date in RFC 822 format\");\n            }\n\n            if (dateTimeStringBuilder[3] == ',')\n            {\n                // There is a leading (e.g.) \"Tue, \", strip it off\n                dateTimeStringBuilder.Remove(0, 4);\n\n                // There's supposed to be a space here but some implementations dont have one\n                RemoveExtraWhiteSpaceAtStart(dateTimeStringBuilder);\n            }\n\n            ReplaceMultipleWhiteSpaceWithSingleWhiteSpace(dateTimeStringBuilder);\n            if (char.IsDigit(dateTimeStringBuilder[1]))\n            {\n                // two-digit day, we are good\n            }\n            else\n            {\n                dateTimeStringBuilder.Insert(0, '0');\n            }\n\n            if (dateTimeStringBuilder.Length < 19)\n            {\n                throw new FormatException(\"Invalid date format. Expected date in RFC 822 format\");\n            }\n\n            bool thereAreSeconds = dateTimeStringBuilder[17] == ':';\n            int timeZoneStartIndex;\n            if (thereAreSeconds)\n            {\n                timeZoneStartIndex = 21;\n            }\n            else\n            {\n                timeZoneStartIndex = 18;\n            }\n\n            string timeZoneSuffix = dateTimeStringBuilder.ToString().Substring(timeZoneStartIndex);\n            dateTimeStringBuilder.Remove(timeZoneStartIndex, dateTimeStringBuilder.Length - timeZoneStartIndex);\n            bool isUtc;\n            dateTimeStringBuilder.Append(NormalizeTimeZone(timeZoneSuffix, out isUtc));\n            string wellFormattedString = dateTimeStringBuilder.ToString();\n\n            DateTimeOffset theTime;\n            string parseFormat;\n            if (thereAreSeconds)\n            {\n                parseFormat = \"dd MMM yyyy HH:mm:ss zzz\";\n            }\n            else\n            {\n                parseFormat = \"dd MMM yyyy HH:mm zzz\";\n            }\n\n            if (DateTimeOffset.TryParseExact(wellFormattedString, parseFormat,\n                CultureInfo.InvariantCulture.DateTimeFormat,\n                isUtc ? DateTimeStyles.AdjustToUniversal : DateTimeStyles.None, out theTime))\n            {\n                return theTime;\n            }\n\n            throw new FormatException(\"Invalid date format. Expected date in RFC 822 format\");\n        }\n\n        private static string NormalizeTimeZone(string rfc822TimeZone, out bool isUtc)\n        {\n            isUtc = false;\n\n            // return a string in \"-08:00\" format\n            if (rfc822TimeZone[0] == '+' || rfc822TimeZone[0] == '-')\n            {\n                // the time zone is supposed to be 4 digits but some feeds omit the initial 0\n                StringBuilder result = new StringBuilder(rfc822TimeZone);\n                if (result.Length == 4)\n                {\n                    // the timezone is +/-HMM. Convert to +/-HHMM\n                    result.Insert(1, '0');\n                }\n\n                result.Insert(3, ':');\n                return result.ToString();\n            }\n\n            switch (rfc822TimeZone)\n            {\n                case \"UT\":\n                case \"Z\":\n                    isUtc = true;\n                    return \"-00:00\";\n                case \"GMT\":\n                    return \"-00:00\";\n                case \"A\":\n                    return \"-01:00\";\n                case \"B\":\n                    return \"-02:00\";\n                case \"C\":\n                    return \"-03:00\";\n                case \"D\":\n                case \"EDT\":\n                    return \"-04:00\";\n                case \"E\":\n                case \"EST\":\n                case \"CDT\":\n                    return \"-05:00\";\n                case \"F\":\n                case \"CST\":\n                case \"MDT\":\n                    return \"-06:00\";\n                case \"G\":\n                case \"MST\":\n                case \"PDT\":\n                    return \"-07:00\";\n                case \"H\":\n                case \"PST\":\n                    return \"-08:00\";\n                case \"I\":\n                    return \"-09:00\";\n                case \"K\":\n                    return \"-10:00\";\n                case \"L\":\n                    return \"-11:00\";\n                case \"M\":\n                    return \"-12:00\";\n                case \"N\":\n                    return \"+01:00\";\n                case \"O\":\n                    return \"+02:00\";\n                case \"P\":\n                    return \"+03:00\";\n                case \"Q\":\n                    return \"+04:00\";\n                case \"R\":\n                    return \"+05:00\";\n                case \"S\":\n                    return \"+06:00\";\n                case \"T\":\n                    return \"+07:00\";\n                case \"U\":\n                    return \"+08:00\";\n                case \"V\":\n                    return \"+09:00\";\n                case \"W\":\n                    return \"+10:00\";\n                case \"X\":\n                    return \"+11:00\";\n                case \"Y\":\n                    return \"+12:00\";\n                default:\n                    return string.Empty;\n            }\n        }\n\n        private static void RemoveExtraWhiteSpaceAtStart(StringBuilder stringBuilder)\n        {\n            int i = 0;\n            while (i < stringBuilder.Length)\n            {\n                if (!char.IsWhiteSpace(stringBuilder[i]))\n                {\n                    break;\n                }\n\n                ++i;\n            }\n\n            if (i > 0)\n            {\n                stringBuilder.Remove(0, i);\n            }\n        }\n\n        private static void ReplaceMultipleWhiteSpaceWithSingleWhiteSpace(StringBuilder builder)\n        {\n            int index = 0;\n            int whiteSpaceStart = -1;\n            while (index < builder.Length)\n            {\n                if (char.IsWhiteSpace(builder[index]))\n                {\n                    if (whiteSpaceStart < 0)\n                    {\n                        whiteSpaceStart = index;\n\n                        // normalize all white spaces to be ' ' so that the date time parsing works\n                        builder[index] = ' ';\n                    }\n                }\n                else if (whiteSpaceStart >= 0)\n                {\n                    if (index > whiteSpaceStart + 1)\n                    {\n                        // there are at least 2 spaces... replace by 1\n                        builder.Remove(whiteSpaceStart, index - whiteSpaceStart - 1);\n                        index = whiteSpaceStart + 1;\n                    }\n\n                    whiteSpaceStart = -1;\n                }\n\n                ++index;\n            }\n\n            // we have already trimmed the start and end so there cannot be a trail of white spaces in the end\n            Debug.Assert(builder.Length == 0 || builder[builder.Length - 1] != ' ', \"The string builder doesnt end in a white space\");\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Helpers/EnumToBooleanConverter.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing Windows.UI.Xaml.Data;\n\nnamespace BuildCast.Helpers\n{\n    public class EnumToBooleanConverter : IValueConverter\n    {\n        public Type EnumType { get; set; }\n\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (parameter is string enumString)\n            {\n                if (!Enum.IsDefined(EnumType, value))\n                {\n                    throw new ArgumentException(\"value must be an Enum!\");\n                }\n\n                var enumValue = Enum.Parse(EnumType, enumString);\n\n                return enumValue.Equals(value);\n            }\n\n            throw new ArgumentException(\"parameter must be an Enum name!\");\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            if (parameter is string enumString)\n            {\n                return Enum.Parse(EnumType, enumString);\n            }\n\n            throw new ArgumentException(\"parameter must be an Enum name!\");\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Helpers/EpisodeCommands.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Windows.Input;\nusing BuildCast.DataModel;\n\nnamespace BuildCast.Helpers\n{\n    public class FavoriteCommand : ICommand\n    {\n#pragma warning disable CS0067\n        public event EventHandler CanExecuteChanged;\n#pragma warning restore CS0067\n\n        public bool CanExecute(object parameter) => true;\n\n        public void Execute(object parameter)\n        {\n            if (parameter == null || (parameter as Episode) == null)\n            {\n                return;\n            }\n\n            using (var db = new LocalStorageContext())\n            {\n                db.Favorites.Add(new Favorite(parameter as Episode));\n                db.SaveChanges();\n            }\n        }\n    }\n\n    public class DeleteEpisodeNoteCommand : ICommand\n    {\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"DeleteEpisodeNoteCommand\"/> class.\n        /// </summary>\n        public DeleteEpisodeNoteCommand()\n        {\n        }\n\n#pragma warning disable CS0067\n        public event EventHandler CanExecuteChanged;\n#pragma warning restore CS0067\n\n        public bool CanExecute(object parameter) => true;\n\n        public void Execute(object parameter)\n        {\n            var noteParameter = parameter as dynamic;\n\n            if (noteParameter == null)\n            {\n                return;\n            }\n\n            System.Guid noteId = noteParameter?.InkId;\n\n            switch (noteParameter.Type)\n            {\n                case \"Ink\":\n                    using (var db = new LocalStorageContext())\n                    {\n                        var ink = db.Memes.Remove(db.Memes.Find(noteId));\n                        db.SaveChanges();\n                    }\n\n                    break;\n                case \"Bookmark\":\n                    using (var db = new LocalStorageContext())\n                    {\n                        var ink = db.Memes.Remove(db.Memes.Find(noteId));\n                        db.SaveChanges();\n                    }\n\n                    break;\n            }\n        }\n    }\n\n    public class DeleteEpisodeCommand : ICommand\n    {\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"DeleteEpisodeCommand\"/> class.\n        /// </summary>\n        public DeleteEpisodeCommand()\n        {\n        }\n\n#pragma warning disable CS0067\n        public event EventHandler CanExecuteChanged;\n\n#pragma warning restore CS0067\n        public bool CanExecute(object parameter) => true;\n\n        public async void Execute(object parameter)\n        {\n            var episodeWithState = parameter as EpisodeWithState;\n            Episode episode = episodeWithState?.Episode;\n\n            if (episode == null)\n            {\n                episode = parameter as Episode;\n            }\n\n            if (episode == null)\n            {\n                return;\n            }\n\n            if (episode != null)\n            {\n                await episode.DeleteDownloaded();\n            }\n        }\n    }\n\n    public class UnfavoriteCommand : ICommand\n    {\n#pragma warning disable CS0067\n        public event EventHandler CanExecuteChanged;\n#pragma warning restore CS0067\n        public UnfavoriteCommand()\n        {\n        }\n\n        public bool CanExecute(object parameter) => true;\n\n        public void Execute(object parameter)\n        {\n            var episodeWithState = parameter as EpisodeWithState;\n            Episode episode = episodeWithState?.Episode;\n\n            if (episode == null)\n            {\n                episode = parameter as Episode;\n            }\n\n            if (episode == null)\n            {\n                return;\n            }\n\n            using (var db = new LocalStorageContext())\n            {\n                foreach (Favorite favEntity in db.Favorites)\n                {\n                    if (favEntity.EpisodeId == episode.Id)\n                    {\n                        db.Favorites.Remove(favEntity);\n                        break;\n                    }\n                }\n\n                db.SaveChanges();\n            }\n        }\n    }\n\n    public class DownloadCommand : ICommand\n    {\n        public DownloadCommand()\n        {\n        }\n\n#pragma warning disable CS0067\n        public event EventHandler CanExecuteChanged;\n#pragma warning restore CS0067\n\n        public bool CanExecute(object parameter) => true;\n\n        public void Execute(object parameter)\n        {\n            var episodeWithState = parameter as EpisodeWithState;\n            Episode episode = episodeWithState?.Episode;\n\n            if (episode == null)\n            {\n                episode = parameter as Episode;\n            }\n\n            if (episode == null)\n            {\n                return;\n            }\n\n            var task = BackgroundDownloadHelper.Download(new Uri(episode.Key));\n            task.ContinueWith(async (state) =>\n            {\n                if (state.Result == DownloadStartResult.AllreadyDownloaded)\n                {\n                    await episode.SetDownloaded();\n                }\n            });\n\n            System.Diagnostics.Debug.WriteLine(\"Downloading episode...\");\n        }\n    }\n\n    public class BindingProxyCommand : ICommand\n    {\n        private ICommand _realCommand;\n\n        public event EventHandler CanExecuteChanged;\n\n        public ICommand RealCommand\n        {\n            get => _realCommand;\n            set\n            {\n                _realCommand = value;\n                _realCommand.CanExecuteChanged += OnRealCanExecute;\n            }\n        }\n\n        public bool CanExecute(object parameter) => _realCommand?.CanExecute(parameter) ?? false;\n\n        public void Execute(object parameter) => _realCommand.Execute(parameter);\n\n        private void OnRealCanExecute(object sender, EventArgs e) => CanExecuteChanged?.Invoke(sender, e);\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Helpers/Json.cs",
    "content": "// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System.Threading.Tasks;\nusing Newtonsoft.Json;\n\nnamespace BuildCast.Helpers\n{\n    public static class Json\n    {\n        public static async Task<T> ToObjectAsync<T>(string value)\n        {\n            return await Task.Run<T>(() =>\n            {\n                return JsonConvert.DeserializeObject<T>(value);\n            });\n        }\n\n        public static async Task<string> StringifyAsync(object value)\n        {\n            return await Task.Run<string>(() =>\n            {\n                return JsonConvert.SerializeObject(value);\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Helpers/LinqExtensions.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace BuildCast.Helpers\n{\n    public static class LinqExtensions\n    {\n        public static IEnumerable<T> LambdaDistinct<T>(this IEnumerable<T> list, Func<T, T, bool> lambda)\n        {\n            return list.Distinct(new LambdaCompare<T>(lambda));\n        }\n\n        public class LambdaCompare<T> : IEqualityComparer<T>\n        {\n            private readonly Func<T, T, bool> _expr;\n\n            public LambdaCompare(Func<T, T, bool> lambda)\n            {\n                _expr = lambda;\n            }\n\n            public bool Equals(T x, T y)\n            {\n                return _expr(x, y);\n            }\n\n            public int GetHashCode(T obj)\n            {\n                return obj.GetHashCode();\n            }\n        }\n    }\n}"
  },
  {
    "path": "src/BuildCast/Helpers/NavigationAnimationHelpers.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Hosting;\nusing Windows.UI.Xaml.Media.Animation;\n\nnamespace BuildCast.Helpers\n{\n    public static class NavigationAnimationHelpers\n    {\n        public static bool NavigateWithFadeOutgoing(this Frame frame, object parameter, Type destination)\n        {\n            ImplicitHideFrameContent(frame);\n\n            return frame.Navigate(destination, parameter);\n        }\n\n        private static void ImplicitHideFrameContent(Frame frame)\n        {\n            if (frame.Content != null)\n            {\n                SetImplicitHide(frame.Content as UIElement);\n            }\n        }\n\n        private static void SetImplicitHide(UIElement thisPtr)\n        {\n            ElementCompositionPreview.SetImplicitHideAnimation(thisPtr, VisualHelpers.CreateOpacityAnimation(0.4, 0));\n            Canvas.SetTop(thisPtr, 1);\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Helpers/RelayCommand.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Windows.Input;\n\nnamespace BuildCast.Helpers\n{\n    public class RelayCommand : ICommand\n    {\n        private readonly Action _execute;\n\n        private readonly Func<bool> _canExecute;\n\n        public RelayCommand(Action execute)\n            : this(execute, null)\n        {\n        }\n\n        public RelayCommand(Action execute, Func<bool> canExecute)\n        {\n            _execute = execute ?? throw new ArgumentNullException(nameof(execute));\n            _canExecute = canExecute;\n        }\n\n        public event EventHandler CanExecuteChanged;\n\n        public bool CanExecute(object parameter) => _canExecute == null || _canExecute();\n\n        public void Execute(object parameter) => _execute();\n\n        public void OnCanExecuteChanged() => CanExecuteChanged?.Invoke(this, EventArgs.Empty);\n    }\n\n#pragma warning disable SA1402 // File may only contain a single class\n    public class RelayCommand<T> : ICommand\n#pragma warning restore SA1402 // File may only contain a single class\n    {\n        private readonly Action<T> _execute;\n\n        private readonly Func<T, bool> _canExecute;\n\n        public RelayCommand(Action<T> execute)\n            : this(execute, null)\n        {\n        }\n\n        public RelayCommand(Action<T> execute, Func<T, bool> canExecute)\n        {\n            _execute = execute ?? throw new ArgumentNullException(nameof(execute));\n            _canExecute = canExecute;\n        }\n\n        public event EventHandler CanExecuteChanged;\n\n        public bool CanExecute(object parameter) => _canExecute == null || _canExecute((T)parameter);\n\n        public void Execute(object parameter) => _execute((T)parameter);\n\n        public void OnCanExecuteChanged() => CanExecuteChanged?.Invoke(this, EventArgs.Empty);\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Helpers/SettingsStorageExtensions.cs",
    "content": "// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.IO;\nusing System.Threading.Tasks;\nusing Windows.Storage;\n\nnamespace BuildCast.Helpers\n{\n    public static class SettingsStorageExtensions\n    {\n        // Use this extension methods to store and retrieve in local and roaming app data        // For more info regarding storing and retrieving app data,\n        // Documentation: https://docs.microsoft.com/windows/uwp/app-settings/store-and-retrieve-app-data\n        private const string FILE_EXTENSION = \".json\";\n\n        public static bool IsRoamingStorageAvailable(this ApplicationData appData)\n        {\n            return appData.RoamingStorageQuota == 0;\n        }\n\n        public static async Task SaveAsync<T>(this StorageFolder folder, string name, T content)\n        {\n            var file = await folder.CreateFileAsync(GetFileName(name), CreationCollisionOption.ReplaceExisting);\n            var fileContent = await Json.StringifyAsync(content);\n\n            await FileIO.WriteTextAsync(file, fileContent);\n        }\n\n        public static async Task<T> ReadAsync<T>(this StorageFolder folder, string name)\n        {\n            if (!File.Exists(Path.Combine(folder.Path, GetFileName(name))))\n            {\n                return default(T);\n            }\n\n            var file = await folder.GetFileAsync($\"{name}.json\");\n            var fileContent = await FileIO.ReadTextAsync(file);\n\n            return await Json.ToObjectAsync<T>(fileContent);\n        }\n\n        public static async Task SaveAsync<T>(this ApplicationDataContainer settings, string key, T value)\n        {\n            settings.Values[key] = await Json.StringifyAsync(value);\n        }\n\n        public static async Task<T> ReadAsync<T>(this ApplicationDataContainer settings, string key)\n        {\n            if (settings.Values.TryGetValue(key, out object obj))\n            {\n                return await Json.ToObjectAsync<T>((string)obj);\n            }\n\n            return default(T);\n        }\n\n        private static string GetFileName(string name)\n        {\n            return string.Concat(name, FILE_EXTENSION);\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Helpers/TitleBarHelper.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System.ComponentModel;\nusing Windows.ApplicationModel.Core;\nusing Windows.UI.Xaml;\n\nnamespace BuildCast.Helpers\n{\n    public class TitleBarHelper : INotifyPropertyChanged\n    {\n        private static TitleBarHelper _instance = new TitleBarHelper();\n        private static CoreApplicationViewTitleBar _coreTitleBar;\n        private Thickness _titlePosition;\n        private Visibility _titleVisibility;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"TitleBarHelper\"/> class.\n        /// </summary>\n        public TitleBarHelper()\n        {\n            _coreTitleBar = CoreApplication.GetCurrentView().TitleBar;\n            _coreTitleBar.LayoutMetricsChanged += CoreTitleBar_LayoutMetricsChanged;\n            _titlePosition = CalculateTilebarOffset(_coreTitleBar.SystemOverlayLeftInset, _coreTitleBar.Height);\n            _titleVisibility = Visibility.Visible;\n        }\n\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public static TitleBarHelper Instance\n        {\n            get\n            {\n                return _instance;\n            }\n        }\n\n        public CoreApplicationViewTitleBar TitleBar\n        {\n            get\n            {\n                return _coreTitleBar;\n            }\n        }\n\n        public Thickness TitlePosition\n        {\n            get\n            {\n                return _titlePosition;\n            }\n\n            set\n            {\n                if (value.Left != _titlePosition.Left || value.Top != _titlePosition.Top)\n                {\n                    _titlePosition = value;\n                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(TitlePosition)));\n                }\n            }\n        }\n\n        public Visibility TitleVisibility\n        {\n            get\n            {\n                return _titleVisibility;\n            }\n\n            set\n            {\n                _titleVisibility = value;\n                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(TitleVisibility)));\n            }\n        }\n\n        public void ExitFullscreen()\n        {\n            TitleVisibility = Visibility.Visible;\n        }\n\n        public void GoFullscreen()\n        {\n            TitleVisibility = Visibility.Collapsed;\n        }\n\n        private void CoreTitleBar_LayoutMetricsChanged(CoreApplicationViewTitleBar sender, object args)\n        {\n            TitlePosition = CalculateTilebarOffset(_coreTitleBar.SystemOverlayLeftInset, _coreTitleBar.Height);\n        }\n\n        private Thickness CalculateTilebarOffset(double leftPosition, double height)\n        {\n            // top position should be 6 pixels for a 32 pixel high titlebar hence scale by actual height\n            var correctHeight = height / 32 * 6;\n\n            return new Thickness(leftPosition + 12, correctHeight, 0, 0);\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Helpers/UIHelpers.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Threading.Tasks;\nusing Microsoft.Toolkit.Uwp.Helpers;\nusing Windows.UI.Xaml.Controls;\n\nnamespace BuildCast.Helpers\n{\n    public class UIHelpers\n    {\n        public static async Task ShowContentAsync(string content)\n        {\n            await DispatcherHelper.ExecuteOnUIThreadAsync(async () =>\n            {\n                ContentDialog cd = new ContentDialog\n                {\n                    CloseButtonText = \"Ok\",\n                    Content = content,\n                };\n                await cd.ShowAsync();\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Helpers/ValueSetHelper.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing Windows.Foundation.Collections;\n\nnamespace BuildCast.Helpers\n{\n    public static class ValueSetHelper\n    {\n        public static ValueSet GetValueSet(this ValueSet values, string key)\n        {\n            ValueSet result = null;\n\n            if (values.TryGetValue(key, out object retrieveObject))\n            {\n                result = (ValueSet)retrieveObject;\n            }\n\n            return result;\n        }\n\n        public static TimeSpan GetTimeSpan(this ValueSet values, string key)\n        {\n            TimeSpan value = TimeSpan.MinValue;\n\n            if (values.TryGetValue(key, out object retrieveObject))\n            {\n                if (retrieveObject != null)\n                {\n                    value = TimeSpan.FromMilliseconds((double)retrieveObject);\n                }\n            }\n\n            return value;\n        }\n\n        public static DateTimeOffset GetDateTimeOffset(this ValueSet values, string key)\n        {\n            DateTimeOffset value = DateTimeOffset.MinValue;\n\n            if (values.TryGetValue(key, out object retrieveObject))\n            {\n                if (retrieveObject != null)\n                {\n                    value = DateTimeOffset.FromUnixTimeMilliseconds((long)retrieveObject);\n                }\n            }\n\n            return value;\n        }\n\n        public static Uri GetURI(this ValueSet values, string key)\n        {\n            Uri value = null;\n\n            if (values.TryGetValue(key, out object retrieveObject))\n            {\n                if (retrieveObject != null)\n                {\n                    value = new Uri((string)retrieveObject);\n                }\n            }\n\n            return value;\n        }\n\n        public static string GetString(this ValueSet values, string key)\n        {\n            string result = string.Empty;\n\n            if (values.TryGetValue(key, out object retrieveObject))\n            {\n                result = (string)retrieveObject;\n            }\n\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Helpers/VisualHelpers.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing Windows.UI.Composition;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Hosting;\nusing Windows.UI.Xaml.Media;\n\nnamespace BuildCast.Helpers\n{\n    public static class VisualHelpers\n    {\n        public static Visual GetVisual(this UIElement element)\n        {\n            return ElementCompositionPreview.GetElementVisual(element);\n        }\n\n        public static CompositionCommitBatch ApplyImplicitAnimation(this Visual target, TimeSpan duration)\n        {\n            var myBatch = target.Compositor.GetCommitBatch(CompositionBatchTypes.Animation);\n            target.Opacity = 0.0f;\n            ImplicitAnimationCollection implicitAnimationCollection = target.Compositor.CreateImplicitAnimationCollection();\n\n            implicitAnimationCollection[nameof(Visual.Opacity)] = CreateOpacityAnimation(target.Compositor, duration);\n            target.ImplicitAnimations = implicitAnimationCollection;\n            return myBatch;\n        }\n\n        public static KeyFrameAnimation CreateOpacityAnimation(Compositor compositor, TimeSpan duration)\n        {\n            ScalarKeyFrameAnimation kf = compositor.CreateScalarKeyFrameAnimation();\n            kf.InsertExpressionKeyFrame(1.0f, \"this.FinalValue\");\n            kf.Duration = duration;\n            kf.Target = \"Opacity\";\n            return kf;\n        }\n\n        public static void SetSize(this Visual v, FrameworkElement element)\n        {\n            v.Size = new System.Numerics.Vector2((float)element.ActualWidth, (float)element.ActualHeight);\n        }\n\n        public static void FadeVisual(this Visual v, double seconds)\n        {\n            var fadeAnimation = CreateImplicitFadeAnimation(seconds);\n            v.ImplicitAnimations = Window.Current.Compositor.CreateImplicitAnimationCollection();\n            v.ImplicitAnimations.Add(nameof(Visual.Opacity), fadeAnimation);\n        }\n\n        // TODO: kill this function\n        public static ScalarKeyFrameAnimation CreateOpacityAnimation(double seconds)\n        {\n            var animation = Window.Current.Compositor.CreateScalarKeyFrameAnimation();\n            animation.Target = \"Opacity\";\n            animation.Duration = TimeSpan.FromSeconds(seconds);\n            animation.InsertKeyFrame(0, 0);\n            animation.InsertKeyFrame(0.25f, 0);\n            animation.InsertKeyFrame(1, 1);\n            return animation;\n        }\n\n        public static ICompositionAnimationBase CreateOpacityAnimation(double seconds, float finalvalue)\n        {\n            var animation = Window.Current.Compositor.CreateScalarKeyFrameAnimation();\n            animation.Target = nameof(Visual.Opacity);\n            animation.Duration = TimeSpan.FromSeconds(seconds);\n            animation.InsertKeyFrame(1, finalvalue);\n            return animation;\n        }\n\n        public static ICompositionAnimationBase CreateAnimationGroup(CompositionAnimation listContentShowAnimations, ScalarKeyFrameAnimation listContentOpacityAnimations)\n        {\n            var group = Window.Current.Compositor.CreateAnimationGroup();\n            group.Add(listContentShowAnimations);\n            group.Add(listContentOpacityAnimations);\n            return group;\n        }\n\n        public static void EnableLayoutImplicitAnimations(this UIElement element, TimeSpan t)\n        {\n            Compositor compositor;\n            var result = element.GetVisual();\n            compositor = result.Compositor;\n\n            var elementImplicitAnimation = compositor.CreateImplicitAnimationCollection();\n            elementImplicitAnimation[nameof(Visual.Offset)] = CreateOffsetAnimation(compositor, t);\n\n            result.ImplicitAnimations = elementImplicitAnimation;\n        }\n\n        private static CompositionAnimation CreateImplicitFadeAnimation(double seconds)\n        {\n            var animation = Window.Current.Compositor.CreateScalarKeyFrameAnimation();\n            animation.InsertExpressionKeyFrame(1.0f, \"this.FinalValue\");\n            animation.Target = nameof(Visual.Opacity);\n            animation.Duration = TimeSpan.FromSeconds(seconds);\n            return animation;\n        }\n\n        private static KeyFrameAnimation CreateOffsetAnimation(Compositor compositor, TimeSpan duration)\n        {\n            Vector3KeyFrameAnimation kf = compositor.CreateVector3KeyFrameAnimation();\n            kf.InsertExpressionKeyFrame(1.0f, \"this.FinalValue\");\n            kf.Duration = duration;\n            kf.Target = \"Offset\";\n            return kf;\n        }\n\n        public static CompositionAnimation CreateHorizontalOffsetAnimation(double seconds, float offset, double delaySeconds, bool from)\n        {\n            var animation = Window.Current.Compositor.CreateScalarKeyFrameAnimation();\n            if (delaySeconds != 0.0)\n            {\n                animation.DelayBehavior = AnimationDelayBehavior.SetInitialValueBeforeDelay;\n                animation.DelayTime = TimeSpan.FromSeconds(delaySeconds);\n            }\n\n            animation.Duration = TimeSpan.FromSeconds(seconds);\n            animation.Target = \"Translation.X\";\n            if (from)\n            {\n                animation.InsertKeyFrame(0, offset);\n                animation.InsertKeyFrame(1, 0);\n            }\n            else\n            {\n                animation.InsertKeyFrame(1, offset);\n            }\n\n            return animation;\n        }\n\n        public static CompositionAnimation CreateHorizontalOffsetAnimation(double seconds, float offset, double delaySeconds)\n        {\n            return CreateHorizontalOffsetAnimation(seconds, offset, delaySeconds, true);\n        }\n\n        public static CompositionAnimation CreateVerticalOffsetAnimation(double seconds, float offset, double delaySeconds, bool from)\n        {\n            var animation = Window.Current.Compositor.CreateScalarKeyFrameAnimation();\n            if (delaySeconds != 0.0)\n            {\n                animation.DelayBehavior = AnimationDelayBehavior.SetInitialValueBeforeDelay;\n                animation.DelayTime = TimeSpan.FromSeconds(delaySeconds);\n            }\n\n            animation.Duration = TimeSpan.FromSeconds(seconds);\n            animation.Target = \"Translation.Y\";\n            if (from)\n            {\n                animation.InsertKeyFrame(0, offset);\n                animation.InsertKeyFrame(1, 0);\n            }\n            else\n            {\n                animation.InsertKeyFrame(1, offset);\n            }\n\n            return animation;\n        }\n\n        public static CompositionAnimation CreateVerticalOffsetAnimation(double seconds, float offset, double delaySeconds)\n        {\n            return CreateVerticalOffsetAnimation(seconds, offset, delaySeconds, true);\n        }\n\n        public static CompositionAnimation CreateVerticalOffsetAnimationFrom(double seconds, float offset)\n        {\n            return CreateVerticalOffsetAnimation(seconds, offset, 0.0f);\n        }\n\n        public static CompositionAnimation CreateVerticalOffsetAnimationTo(double seconds, float offset)\n        {\n            return CreateVerticalOffsetAnimation(seconds, offset, 0.0f, false);\n        }\n\n        public static T GetVisualChildByName<T>(this FrameworkElement root, string name)\n            where T : FrameworkElement\n        {\n            var chil = VisualTreeHelper.GetChild(root, 0);\n            FrameworkElement child = null;\n\n            int count = VisualTreeHelper.GetChildrenCount(root);\n\n            for (int i = 0; i < count && child == null; i++)\n            {\n                var current = (FrameworkElement)VisualTreeHelper.GetChild(root, i);\n                if (current != null && current.Name != null && current.Name == name)\n                {\n                    child = current;\n                    break;\n                }\n                else\n                {\n                    child = current.GetVisualChildByName<FrameworkElement>(name);\n                }\n            }\n\n            return child as T;\n        }\n    }\n}"
  },
  {
    "path": "src/BuildCast/Microsoft.BuildCast.ruleset",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RuleSet Name=\"Microsoft Managed Recommended Rules\" Description=\"These rules focus on the most critical problems in your code, including potential security holes, application crashes, and other important logic and design errors. It is recommended to include this rule set in any custom rule set you create for your projects.\" ToolsVersion=\"15.0\">\n  <Localization ResourceAssembly=\"Microsoft.VisualStudio.CodeAnalysis.RuleSets.Strings.dll\" ResourceBaseName=\"Microsoft.VisualStudio.CodeAnalysis.RuleSets.Strings.Localized\">\n    <Name Resource=\"MinimumRecommendedRules_Name\" />\n    <Description Resource=\"MinimumRecommendedRules_Description\" />\n  </Localization>\n  <Rules AnalyzerId=\"Microsoft.Analyzers.ManagedCodeAnalysis\" RuleNamespace=\"Microsoft.Rules.Managed\">\n    <Rule Id=\"CA1001\" Action=\"Warning\" />\n    <Rule Id=\"CA1009\" Action=\"Warning\" />\n    <Rule Id=\"CA1016\" Action=\"Warning\" />\n    <Rule Id=\"CA1033\" Action=\"Warning\" />\n    <Rule Id=\"CA1049\" Action=\"Warning\" />\n    <Rule Id=\"CA1060\" Action=\"Warning\" />\n    <Rule Id=\"CA1061\" Action=\"Warning\" />\n    <Rule Id=\"CA1063\" Action=\"Warning\" />\n    <Rule Id=\"CA1065\" Action=\"Warning\" />\n    <Rule Id=\"CA1301\" Action=\"Warning\" />\n    <Rule Id=\"CA1400\" Action=\"Warning\" />\n    <Rule Id=\"CA1401\" Action=\"Warning\" />\n    <Rule Id=\"CA1403\" Action=\"Warning\" />\n    <Rule Id=\"CA1404\" Action=\"Warning\" />\n    <Rule Id=\"CA1405\" Action=\"Warning\" />\n    <Rule Id=\"CA1410\" Action=\"Warning\" />\n    <Rule Id=\"CA1415\" Action=\"Warning\" />\n    <Rule Id=\"CA1821\" Action=\"Warning\" />\n    <Rule Id=\"CA1900\" Action=\"Warning\" />\n    <Rule Id=\"CA1901\" Action=\"Warning\" />\n    <Rule Id=\"CA2002\" Action=\"Warning\" />\n    <Rule Id=\"CA2100\" Action=\"Warning\" />\n    <Rule Id=\"CA2101\" Action=\"Warning\" />\n    <Rule Id=\"CA2108\" Action=\"Warning\" />\n    <Rule Id=\"CA2111\" Action=\"Warning\" />\n    <Rule Id=\"CA2112\" Action=\"Warning\" />\n    <Rule Id=\"CA2114\" Action=\"Warning\" />\n    <Rule Id=\"CA2116\" Action=\"Warning\" />\n    <Rule Id=\"CA2117\" Action=\"Warning\" />\n    <Rule Id=\"CA2122\" Action=\"Warning\" />\n    <Rule Id=\"CA2123\" Action=\"Warning\" />\n    <Rule Id=\"CA2124\" Action=\"Warning\" />\n    <Rule Id=\"CA2126\" Action=\"Warning\" />\n    <Rule Id=\"CA2131\" Action=\"Warning\" />\n    <Rule Id=\"CA2132\" Action=\"Warning\" />\n    <Rule Id=\"CA2133\" Action=\"Warning\" />\n    <Rule Id=\"CA2134\" Action=\"Warning\" />\n    <Rule Id=\"CA2137\" Action=\"Warning\" />\n    <Rule Id=\"CA2138\" Action=\"Warning\" />\n    <Rule Id=\"CA2140\" Action=\"Warning\" />\n    <Rule Id=\"CA2141\" Action=\"Warning\" />\n    <Rule Id=\"CA2146\" Action=\"Warning\" />\n    <Rule Id=\"CA2147\" Action=\"Warning\" />\n    <Rule Id=\"CA2149\" Action=\"Warning\" />\n    <Rule Id=\"CA2200\" Action=\"Warning\" />\n    <Rule Id=\"CA2202\" Action=\"Warning\" />\n    <Rule Id=\"CA2207\" Action=\"Warning\" />\n    <Rule Id=\"CA2212\" Action=\"Warning\" />\n    <Rule Id=\"CA2213\" Action=\"Warning\" />\n    <Rule Id=\"CA2214\" Action=\"Warning\" />\n    <Rule Id=\"CA2216\" Action=\"Warning\" />\n    <Rule Id=\"CA2220\" Action=\"Warning\" />\n    <Rule Id=\"CA2229\" Action=\"Warning\" />\n    <Rule Id=\"CA2231\" Action=\"Warning\" />\n    <Rule Id=\"CA2232\" Action=\"Warning\" />\n    <Rule Id=\"CA2235\" Action=\"Warning\" />\n    <Rule Id=\"CA2236\" Action=\"Warning\" />\n    <Rule Id=\"CA2237\" Action=\"Warning\" />\n    <Rule Id=\"CA2238\" Action=\"Warning\" />\n    <Rule Id=\"CA2240\" Action=\"Warning\" />\n    <Rule Id=\"CA2241\" Action=\"Warning\" />\n    <Rule Id=\"CA2242\" Action=\"Warning\" />\n  </Rules>\n  <Rules AnalyzerId=\"RefactoringEssentials\" RuleNamespace=\"RefactoringEssentials\">\n    <Rule Id=\"RECS0145\" Action=\"None\" />\n  </Rules>\n  <Rules AnalyzerId=\"StyleCop.Analyzers\" RuleNamespace=\"StyleCop.Analyzers\">\n    <Rule Id=\"SA1101\" Action=\"None\" />\n    <Rule Id=\"SA1116\" Action=\"None\" />\n    <Rule Id=\"SA1117\" Action=\"None\" />\n    <Rule Id=\"SA1118\" Action=\"None\" />\n    <Rule Id=\"SA1200\" Action=\"None\" />\n    <Rule Id=\"SA1309\" Action=\"None\" />\n    <Rule Id=\"SA1310\" Action=\"None\" />\n    <Rule Id=\"SA1633\" Action=\"None\" />\n    <Rule Id=\"SA1652\" Action=\"None\" />\n  </Rules>\n</RuleSet>"
  },
  {
    "path": "src/BuildCast/Migrations/20170927020747_initial.Designer.cs",
    "content": "﻿using System;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Infrastructure;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Migrations;\nusing BuildCast.DataModel;\n\nnamespace BuildCast.Migrations\n{\n    [DbContext(typeof(LocalStorageContext))]\n    [Migration(\"20170927020747_initial\")]\n    partial class initial\n    {\n        protected override void BuildTargetModel(ModelBuilder modelBuilder)\n        {\n            modelBuilder\n                .HasAnnotation(\"ProductVersion\", \"1.1.2\");\n\n            modelBuilder.Entity(\"BuildCast.DataModel.Episode\", b =>\n                {\n                    b.Property<Guid>(\"Id\")\n                        .ValueGeneratedOnAdd();\n\n                    b.Property<string>(\"Description\");\n\n                    b.Property<TimeSpan>(\"Duration\");\n\n                    b.Property<string>(\"FeedId\");\n\n                    b.Property<bool>(\"IsDownloaded\");\n\n                    b.Property<string>(\"ItemThumbnail\");\n\n                    b.Property<string>(\"Key\");\n\n                    b.Property<string>(\"LocalFileName\");\n\n                    b.Property<DateTimeOffset>(\"PublishDate\");\n\n                    b.Property<string>(\"Subtitle\");\n\n                    b.Property<string>(\"Title\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"EpisodeCache\");\n                });\n\n            modelBuilder.Entity(\"BuildCast.DataModel.EpisodePlaybackState\", b =>\n                {\n                    b.Property<Guid>(\"Id\")\n                        .ValueGeneratedOnAdd();\n\n                    b.Property<string>(\"EpisodeKey\");\n\n                    b.Property<double>(\"ListenProgress\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"PlaybackState\");\n                });\n\n            modelBuilder.Entity(\"BuildCast.DataModel.Favorite\", b =>\n                {\n                    b.Property<Guid>(\"Id\")\n                        .ValueGeneratedOnAdd();\n\n                    b.Property<Guid>(\"EpisodeId\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Favorites\");\n                });\n\n            modelBuilder.Entity(\"BuildCast.DataModel.InkNote\", b =>\n                {\n                    b.Property<Guid>(\"Id\")\n                        .ValueGeneratedOnAdd();\n\n                    b.Property<string>(\"EpisodeKey\");\n\n                    b.Property<bool>(\"HasInk\");\n\n                    b.Property<string>(\"NoteText\");\n\n                    b.Property<byte[]>(\"Thumbnail\");\n\n                    b.Property<double>(\"Time\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Memes\");\n                });\n\n            modelBuilder.Entity(\"BuildCast.DataModel.InkNoteData\", b =>\n                {\n                    b.Property<Guid>(\"Id\")\n                        .ValueGeneratedOnAdd();\n\n                    b.Property<byte[]>(\"ImageBytes\");\n\n                    b.Property<byte[]>(\"Ink\");\n\n                    b.Property<Guid>(\"InkMeme\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"MemeData\");\n                });\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Migrations/20170927020747_initial.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing Microsoft.EntityFrameworkCore.Migrations;\n\nnamespace BuildCast.Migrations\n{\n    public partial class initial : Migration\n    {\n        protected override void Up(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.CreateTable(\n                name: \"EpisodeCache\",\n                columns: table => new\n                {\n                    Id = table.Column<Guid>(nullable: false),\n                    Description = table.Column<string>(nullable: true),\n                    Duration = table.Column<TimeSpan>(nullable: false),\n                    FeedId = table.Column<string>(nullable: true),\n                    IsDownloaded = table.Column<bool>(nullable: false),\n                    ItemThumbnail = table.Column<string>(nullable: true),\n                    Key = table.Column<string>(nullable: true),\n                    LocalFileName = table.Column<string>(nullable: true),\n                    PublishDate = table.Column<DateTimeOffset>(nullable: false),\n                    Subtitle = table.Column<string>(nullable: true),\n                    Title = table.Column<string>(nullable: true)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_EpisodeCache\", x => x.Id);\n                });\n\n            migrationBuilder.CreateTable(\n                name: \"PlaybackState\",\n                columns: table => new\n                {\n                    Id = table.Column<Guid>(nullable: false),\n                    EpisodeKey = table.Column<string>(nullable: true),\n                    ListenProgress = table.Column<double>(nullable: false)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_PlaybackState\", x => x.Id);\n                });\n\n            migrationBuilder.CreateTable(\n                name: \"Favorites\",\n                columns: table => new\n                {\n                    Id = table.Column<Guid>(nullable: false),\n                    EpisodeId = table.Column<Guid>(nullable: false)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_Favorites\", x => x.Id);\n                });\n\n            migrationBuilder.CreateTable(\n                name: \"Memes\",\n                columns: table => new\n                {\n                    Id = table.Column<Guid>(nullable: false),\n                    EpisodeKey = table.Column<string>(nullable: true),\n                    HasInk = table.Column<bool>(nullable: false),\n                    NoteText = table.Column<string>(nullable: true),\n                    Thumbnail = table.Column<byte[]>(nullable: true),\n                    Time = table.Column<double>(nullable: false)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_Memes\", x => x.Id);\n                });\n\n            migrationBuilder.CreateTable(\n                name: \"MemeData\",\n                columns: table => new\n                {\n                    Id = table.Column<Guid>(nullable: false),\n                    ImageBytes = table.Column<byte[]>(nullable: true),\n                    Ink = table.Column<byte[]>(nullable: true),\n                    InkMeme = table.Column<Guid>(nullable: false)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_MemeData\", x => x.Id);\n                });\n        }\n\n        protected override void Down(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.DropTable(\n                name: \"EpisodeCache\");\n\n            migrationBuilder.DropTable(\n                name: \"PlaybackState\");\n\n            migrationBuilder.DropTable(\n                name: \"Favorites\");\n\n            migrationBuilder.DropTable(\n                name: \"Memes\");\n\n            migrationBuilder.DropTable(\n                name: \"MemeData\");\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Migrations/LocalStorageContextModelSnapshot.cs",
    "content": "﻿using System;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Infrastructure;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Migrations;\nusing BuildCast.DataModel;\n\nnamespace BuildCast.Migrations\n{\n    [DbContext(typeof(LocalStorageContext))]\n    partial class LocalStorageContextModelSnapshot : ModelSnapshot\n    {\n        protected override void BuildModel(ModelBuilder modelBuilder)\n        {\n            modelBuilder\n                .HasAnnotation(\"ProductVersion\", \"1.1.2\");\n\n            modelBuilder.Entity(\"BuildCast.DataModel.Episode\", b =>\n                {\n                    b.Property<Guid>(\"Id\")\n                        .ValueGeneratedOnAdd();\n\n                    b.Property<string>(\"Description\");\n\n                    b.Property<TimeSpan>(\"Duration\");\n\n                    b.Property<string>(\"FeedId\");\n\n                    b.Property<bool>(\"IsDownloaded\");\n\n                    b.Property<string>(\"ItemThumbnail\");\n\n                    b.Property<string>(\"Key\");\n\n                    b.Property<string>(\"LocalFileName\");\n\n                    b.Property<DateTimeOffset>(\"PublishDate\");\n\n                    b.Property<string>(\"Subtitle\");\n\n                    b.Property<string>(\"Title\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"EpisodeCache\");\n                });\n\n            modelBuilder.Entity(\"BuildCast.DataModel.EpisodePlaybackState\", b =>\n                {\n                    b.Property<Guid>(\"Id\")\n                        .ValueGeneratedOnAdd();\n\n                    b.Property<string>(\"EpisodeKey\");\n\n                    b.Property<double>(\"ListenProgress\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"PlaybackState\");\n                });\n\n            modelBuilder.Entity(\"BuildCast.DataModel.Favorite\", b =>\n                {\n                    b.Property<Guid>(\"Id\")\n                        .ValueGeneratedOnAdd();\n\n                    b.Property<Guid>(\"EpisodeId\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Favorites\");\n                });\n\n            modelBuilder.Entity(\"BuildCast.DataModel.InkNote\", b =>\n                {\n                    b.Property<Guid>(\"Id\")\n                        .ValueGeneratedOnAdd();\n\n                    b.Property<string>(\"EpisodeKey\");\n\n                    b.Property<bool>(\"HasInk\");\n\n                    b.Property<string>(\"NoteText\");\n\n                    b.Property<byte[]>(\"Thumbnail\");\n\n                    b.Property<double>(\"Time\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Memes\");\n                });\n\n            modelBuilder.Entity(\"BuildCast.DataModel.InkNoteData\", b =>\n                {\n                    b.Property<Guid>(\"Id\")\n                        .ValueGeneratedOnAdd();\n\n                    b.Property<byte[]>(\"ImageBytes\");\n\n                    b.Property<byte[]>(\"Ink\");\n\n                    b.Property<Guid>(\"InkMeme\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"MemeData\");\n                });\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\" xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\" xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\" xmlns:uap3=\"http://schemas.microsoft.com/appx/manifest/uap/windows10/3\" IgnorableNamespaces=\"uap mp uap3\">\n  <Identity Name=\"08a4bbae-2ae8-45b9-a64e-62e542c8b241\" Publisher=\"CN=jeclarke\" Version=\"1.0.0.0\" />\n  <mp:PhoneIdentity PhoneProductId=\"08a4bbae-2ae8-45b9-a64e-62e542c8b241\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\" />\n  <Properties>\n    <DisplayName>BuildCast</DisplayName>\n    <PublisherDisplayName>jeclarke</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.0.0\" MaxVersionTested=\"10.0.0.0\" />\n  </Dependencies>\n  <Resources>\n    <Resource Language=\"x-generate\" />\n  </Resources>\n  <Applications>\n    <Application Id=\"App\" Executable=\"$targetnametoken$.exe\" EntryPoint=\"BuildCast.App\">\n      <uap:VisualElements DisplayName=\"BuildCast\" Square150x150Logo=\"Assets\\Square150x150Logo.png\" Square44x44Logo=\"Assets\\Square44x44Logo.png\" Description=\"BuildCast\" BackgroundColor=\"transparent\">\n        <uap:DefaultTile Wide310x150Logo=\"Assets\\Wide310x150Logo.png\" Square310x310Logo=\"Assets\\LargeTile.png\" Square71x71Logo=\"Assets\\SmallTile.png\">\n        </uap:DefaultTile>\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n      <Extensions>\n        <uap:Extension Category=\"windows.appService\">\n          <uap3:AppService Name=\"InProcessAppService\" SupportsRemoteSystems=\"true\" />\n        </uap:Extension>\n        <uap3:Extension Category=\"windows.protocol\">\n          <uap3:Protocol Name=\"media-video-podcast-listenremote\" />\n        </uap3:Extension>\n      </Extensions>\n    </Application>\n  </Applications>\n  <Extensions>\n    <Extension Category=\"windows.activatableClass.inProcessServer\">\n      <InProcessServer>\n        <Path>AudioVisualizer.dll</Path>\n        <ActivatableClass ActivatableClassId=\"AudioVisualizer.MediaAnalyzer\" ThreadingModel=\"both\" />\n      </InProcessServer>\n    </Extension>\n  </Extensions>\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n    <Capability Name=\"privateNetworkClientServer\" />\n    <uap3:Capability Name=\"remoteSystem\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "src/BuildCast/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following\n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"BuildCast\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"BuildCast\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2017\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version\n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers\n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "src/BuildCast/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at https://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n</Directives>"
  },
  {
    "path": "src/BuildCast/Services/ElementThemeExtended.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing Windows.UI.Xaml;\n\nnamespace BuildCast.Services\n{\n    /// <summary>\n    /// Defines the type of theme\n    /// </summary>\n    public enum ElementThemeExtended\n    {\n        Default = ElementTheme.Default,\n        Light = ElementTheme.Light,\n        Dark = ElementTheme.Dark,\n        Custom = 1000\n    }\n\n    /// <summary>\n    /// Defines the different Picture-in-picture modes\n    /// </summary>\n    public enum PipModes\n    {\n        SingleView,\n        MultiView\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Services/IAvailableSystemsObserver.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nnamespace BuildCast.Services\n{\n    public interface IAvailableSystemsObserver\n    {\n        void Add(IRemoteSystemDescription description);\n        void Removed(IRemoteSystemDescription description);\n    }\n}"
  },
  {
    "path": "src/BuildCast/Services/IFullscreenPage.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nnamespace BuildCast.Services\n{\n    public interface IFullscreenPage\n    {\n        void ExitFullscreen();\n\n        void EnterFullscreen();\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Services/IPlayerService.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Threading.Tasks;\nusing BuildCast.DataModel;\n\nnamespace BuildCast.Services\n{\n    public interface IPlayerService\n    {\n        NowPlayingState NowPlaying { get; }\n\n        Task SetNewItem(Uri currentItem, TimeSpan currentTime, bool startPlayback, string localFilename);\n\n        void SetTime(TimeSpan currentTime);\n\n        Task Play(Episode episode, TimeSpan playTime);\n\n        void Pause();\n\n        void FastForward();\n\n        void Rewind();\n\n        Task<byte[]> GetBitmapForCurrentFrameFromLocalFile();\n    }\n}"
  },
  {
    "path": "src/BuildCast/Services/IRemoteConnection.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Threading.Tasks;\n\nnamespace BuildCast.Services\n{\n    public interface IRemoteConnection : IDisposable\n    {\n        Task Play();\n\n        Task Pause();\n\n        Task Seek(TimeSpan timeStamp);\n\n        Task Disconnect();\n\n        Task FastForward();\n\n        Task Rewind();\n\n        Task GetRemoteBitmap();\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Services/IRemotePlayerService.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.AppService;\nusing Windows.ApplicationModel.Background;\n\nnamespace BuildCast.Services\n{\n    public interface IRemotePlayerService\n    {\n        IEnumerable<IRemoteSystemDescription> AvailableSystems { get; }\n        IDisposable SubscribeSystemsChange(IAvailableSystemsObserver observer);\n        Task<bool> FindDevices();\n        void RemoteActivation(BackgroundTaskDeferral backgroundTaskDeferral, AppServiceConnection appServiceConnection);\n    }\n}"
  },
  {
    "path": "src/BuildCast/Services/IRemoteSystemDescription.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System.Threading.Tasks;\n\nnamespace BuildCast.Services\n{\n    public interface IRemoteSystemDescription\n    {\n        string Id { get; }\n        string Name { get; }\n        string Glyph { get; }\n\n        Task<IRemoteConnection> PlayTo();\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Services/Navigation/FrameAdapter.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing BuildCast.Helpers;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace BuildCast.Services.Navigation\n{\n    public class FrameAdapter : IFrameAdapter\n    {\n        private Frame _internalFrame;\n\n        public event NavigatedEventHandler Navigated { add => _internalFrame.Navigated += value; remove => _internalFrame.Navigated -= value; }\n\n        public event NavigatingCancelEventHandler Navigating { add => _internalFrame.Navigating += value; remove => _internalFrame.Navigating -= value; }\n\n        public event NavigationFailedEventHandler NavigationFailed { add => _internalFrame.NavigationFailed += value; remove => _internalFrame.NavigationFailed -= value; }\n\n        public event NavigationStoppedEventHandler NavigationStopped { add => _internalFrame.NavigationStopped += value; remove => _internalFrame.NavigationStopped -= value; }\n\n        public FrameAdapter(Frame internalFrame)\n        {\n            _internalFrame = internalFrame;\n        }\n\n        public bool IsNavigating { get; private set; }\n\n        public bool CanGoBack => _internalFrame.CanGoBack;\n\n        public bool CanGoForward => _internalFrame.CanGoForward;\n\n        public object Content => _internalFrame.Content;\n\n        public void GoForward()\n        {\n            _internalFrame.GoForward();\n        }\n\n        public void GoBack() => _internalFrame.GoBack();\n\n        public string GetNavigationState() => _internalFrame.GetNavigationState();\n\n        public void SetNavigationState(string navigationState) => _internalFrame.SetNavigationState(navigationState);\n\n        public bool Navigate(Type sourcePageType, object parameter)\n        {\n            return _internalFrame.NavigateWithFadeOutgoing(parameter, sourcePageType);\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Services/Navigation/IFrameAdapter.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace BuildCast.Services.Navigation\n{\n    public interface IFrameAdapter\n    {\n        event NavigatedEventHandler Navigated;\n\n        event NavigatingCancelEventHandler Navigating;\n\n        event NavigationFailedEventHandler NavigationFailed;\n\n        event NavigationStoppedEventHandler NavigationStopped;\n\n        object Content { get; }\n\n        bool CanGoBack { get; }\n\n        bool CanGoForward { get; }\n\n        string GetNavigationState();\n\n        void GoBack();\n\n        void GoForward();\n\n        bool Navigate(Type sourcePageType, object parameter);\n\n        void SetNavigationState(string navigationState);\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Services/Navigation/INavigableTo.cs",
    "content": "// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace BuildCast.Services.Navigation\n{\n    public interface INavigableTo\n    {\n        /// <summary>\n        /// The event that gets called by the Navigation Service after navigation has completed.\n        /// </summary>\n        /// <remarks>\n        /// This gets called prior to <see cref=\"Windows.UI.Xaml.Controls.Page.OnNavigatedTo(Windows.UI.Xaml.Navigation.NavigationEventArgs)\"/>\n        /// </remarks>\n        /// <param name=\"navigationMode\">The navigation stack characteristic of the navigation.</param>\n        /// <param name=\"parameter\">The parameter passed to the navigation service</param>\n        /// <returns>An awaitable Task</returns>\n        Task NavigatedTo(NavigationMode navigationMode, object parameter);\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Services/Navigation/INavigationCommand.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System.Threading.Tasks;\n\nnamespace BuildCast.Services.Navigation\n{\n    public interface INavigationCommand<T>\n    {\n        bool CanExecute(T parameter);\n\n        Task ExecuteAsync(T parameter);\n\n        Task GoBackAsync();\n    }\n\n    public interface INavigationCommand : INavigationCommand<object>\n    {\n        bool CanExecute();\n\n        Task ExecuteAsync();\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Services/Navigation/INavigationService.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Threading.Tasks;\nusing BuildCast.DataModel;\n\nnamespace BuildCast.Services.Navigation\n{\n    public interface INavigationService\n    {\n        event EventHandler<bool> IsNavigatingChanged;\n\n        event EventHandler Navigated;\n\n        bool CanGoBack { get; }\n\n        bool IsNavigating { get; }\n\n        Task NavigateToPodcastsAsync();\n\n        Task NavigateToFavoritesAsync();\n\n        Task NavigateToDownloadsAsync();\n\n        Task NavigateToNotesAsync();\n\n        Task NavigateToNowPlayingAsync();\n\n        Task NavigateToSettingsAsync();\n\n        Task NavigateToFeedAsync(Feed feed);\n\n        Task NavigateToEpisodeAsync(Episode episode);\n\n        Task NavigateToPlayerAsync(Episode episode);\n\n        Task NavigateToPlayerAsync(InkNote inkNote);\n\n        Task NavigateToInkNoteAsync(InkNote inkNote);\n        Task GoBackAsync();\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Services/Navigation/IPageWithViewModel.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nnamespace BuildCast.Services.Navigation\n{\n    public interface IPageWithViewModel<T>\n        where T : class\n    {\n        T ViewModel { get; set; }\n\n        void UpdateBindings();\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Services/Navigation/NavigationService.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing Autofac;\nusing BuildCast.DataModel;\nusing BuildCast.ViewModels;\nusing BuildCast.Views;\nusing Microsoft.Toolkit.Uwp.Helpers;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace BuildCast.Services.Navigation\n{\n    public class NavigationService : INavigationService\n    {\n        private bool _isNavigating;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"NavigationService\"/> class.\n        /// </summary>\n        /// <param name=\"frameAdapter\"></param>\n        /// <param name=\"iocResolver\"></param>\n        public NavigationService(IFrameAdapter frameAdapter, IComponentContext iocResolver)\n        {\n            Frame = frameAdapter;\n            AutofacDepedencyResolver = iocResolver;\n\n            // Investigate a way to put these mappings into the IOC container so that we don't have a hard dependency on the page types for multiplatform\n            PageViewModels = new Dictionary<Type, NavigatedToViewModelDelegate>();\n            RegisterPageViewModel<Home, HomeViewModel>();\n            RegisterPageViewModel<Favorites, FavoritesViewModel>();\n            RegisterPageViewModel<Notes, NotesViewModel>();\n            RegisterPageViewModel<Downloads, DownloadsViewModel>();\n            RegisterPageViewModel<Player, PlayerViewModel>();\n            RegisterPageViewModel<SettingsPage, SettingsViewModel>();\n            RegisterPageViewModel<FeedDetails, FeedDetailsViewModel>();\n            RegisterPageViewModel<EpisodeDetails, EpisodeDetailsViewModel>();\n            RegisterPageViewModel<Player, PlayerViewModel>();\n            RegisterPageViewModel<Views.InkNote, InkNoteViewModel>();\n            Frame.Navigated += Frame_Navigated;\n        }\n\n        public event EventHandler<bool> IsNavigatingChanged;\n\n        public event EventHandler Navigated;\n\n        public Task NavigateToPodcastsAsync() => NavigateToPage<Home>();\n\n        public Task NavigateToFavoritesAsync() => NavigateToPage<Favorites>();\n\n        public Task NavigateToDownloadsAsync() => NavigateToPage<Downloads>();\n\n        public Task NavigateToNotesAsync() => NavigateToPage<Notes>();\n\n        public Task NavigateToNowPlayingAsync() => NavigateToPage<Player>();\n\n        public Task NavigateToSettingsAsync() => NavigateToPage<SettingsPage>();\n\n        public Task NavigateToFeedAsync(Feed feed) => NavigateToPage<FeedDetails>(feed);\n\n        public Task NavigateToEpisodeAsync(Episode episode) => NavigateToPage<EpisodeDetails>(episode);\n\n        public Task NavigateToPlayerAsync(Episode episode) => NavigateToPage<Player>(episode);\n\n        public Task NavigateToPlayerAsync(DataModel.InkNote inkNote) => NavigateToPage<Player>(inkNote);\n\n        public Task NavigateToInkNoteAsync(DataModel.InkNote inkNote) => NavigateToPage<Views.InkNote>(inkNote);\n\n        public bool CanGoBack => Frame.CanGoBack;\n\n        private IComponentContext AutofacDepedencyResolver { get; }\n\n        private IFrameAdapter Frame { get; }\n\n        private delegate Task NavigatedToViewModelDelegate(object page, object parameter, NavigationEventArgs navigationArgs);\n\n        private Dictionary<Type, NavigatedToViewModelDelegate> PageViewModels { get; }\n\n        public bool IsNavigating\n        {\n            get => _isNavigating;\n\n            set\n            {\n                if (value != _isNavigating)\n                {\n                    _isNavigating = value;\n                    IsNavigatingChanged?.Invoke(this, _isNavigating);\n\n                    // Check that navigation just finished\n                    if (!_isNavigating)\n                    {\n                        // Navigation finished\n                        Navigated?.Invoke(this, EventArgs.Empty);\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// Navigate in the back direction\n        /// </summary>\n        /// <returns>A task that can be awaited</returns>\n        public async Task GoBackAsync()\n        {\n            if (Frame.CanGoBack)\n            {\n                IsNavigating = true;\n\n                Page navigatedPage = await DispatcherHelper.ExecuteOnUIThreadAsync(() =>\n                {\n                    Frame.GoBack();\n                    return Frame.Content as Page;\n                });\n            }\n        }\n\n        /// <summary>\n        /// The Navigated event. This event is raised BEFORE <see cref=\"Windows.UI.Xaml.Controls.Page.OnNavigatedTo(Windows.UI.Xaml.Navigation.NavigationEventArgs)\"/>\n        /// </summary>\n        /// <param name=\"sender\">The frame</param>\n        /// <param name=\"e\">The args coming from the frame</param>\n        private void Frame_Navigated(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)\n        {\n            IsNavigating = false;\n            if (PageViewModels.ContainsKey(e.SourcePageType))\n            {\n                var loadViewModelDelegate = PageViewModels[e.SourcePageType];\n                var ignoredTask = loadViewModelDelegate(e.Content, e.Parameter, e);\n            }\n        }\n\n        private void RegisterPageViewModel<TPage, TViewModel>()\n            where TViewModel : class\n        {\n            NavigatedToViewModelDelegate navigatedTo = async (page, parameter, navArgs) =>\n            {\n                if (page is IPageWithViewModel<TViewModel> pageWithVM)\n                {\n                    pageWithVM.ViewModel = AutofacDepedencyResolver.Resolve<TViewModel>();\n\n                    if (pageWithVM.ViewModel is INavigableTo navVM)\n                    {\n                        await navVM.NavigatedTo(navArgs.NavigationMode, parameter);\n                    }\n\n                    // Async loading\n                    pageWithVM.UpdateBindings();\n                }\n            };\n\n            PageViewModels[typeof(TPage)] = navigatedTo;\n        }\n\n        private Task NavigateToPage<TPage>()\n        {\n            return NavigateToPage<TPage>(parameter: null);\n        }\n\n        private async Task NavigateToPage<TPage>(object parameter)\n        {\n            // Early out if already in the middle of a Navigation\n            if (_isNavigating)\n            {\n                return;\n            }\n\n            _isNavigating = true;\n\n            await DispatcherHelper.ExecuteOnUIThreadAsync(() =>\n            {\n                Frame.Navigate(typeof(TPage), parameter: parameter);\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Services/PlayerService.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Diagnostics;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing System.Threading.Tasks;\nusing AudioVisualizer;\nusing BuildCast.Controls;\nusing BuildCast.DataModel;\nusing BuildCast.Helpers;\nusing Microsoft.Toolkit.Uwp.Helpers;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.Media.Core;\nusing Windows.Media.Editing;\nusing Windows.Media.Playback;\nusing Windows.Storage;\nusing Windows.Storage.Streams;\nusing Windows.System.Display;\nusing Windows.UI.Composition;\nusing Windows.UI.Core;\nusing Windows.UI.Xaml;\n\nnamespace BuildCast.Services\n{\n    public class PlayerService : IPlayerService\n    {\n        private static PlayerService _current;\n\n        private NowPlayingState _nowPlayingState;\n\n        private MediaPlayer _mediaPlayer;\n        private AudioVisualizer.PlaybackSource _source;\n\n        private string _localFilename;\n        private Uri _sourceUri;\n        private TimeSpan _startTime;\n\n        private DispatcherTimer _playerEventDebounceTimer;\n        private CoreDispatcher _dispatcher;\n        private object _syncLock = new object();\n\n        private Timeline _timelinectrl;\n        private MediaPlaybackState _nextEventtoFire;\n        private MediaPlaybackState _lastEventFired;\n        private StorageFile _currentFile;\n\n        public event EventHandler<MediaPlaybackState> PlayPauseChanged;\n\n        public event EventHandler MediaLoaded;\n\n        public event EventHandler MediaLoading;\n\n        public event EventHandler<IVisualizationSource> VisualizationSourceChanged;\n\n        public static PlayerService Current\n        {\n            get\n            {\n                if (_current == null)\n                {\n                    _current = new PlayerService();\n                }\n\n                return _current;\n            }\n        }\n\n        public CompositionBrush GetBrush(Compositor compositor)\n        {\n            var surface = _mediaPlayer.GetSurface(compositor);\n            var surfaceBrush = compositor.CreateSurfaceBrush(surface.CompositionSurface);\n            surfaceBrush.Stretch = CompositionStretch.Uniform;\n            return surfaceBrush;\n        }\n\n        public async Task HandlePlayRequest(BuildCast.DataModel.InkNote i)\n        {\n            var shouldPlay = _nowPlayingState.HandlePlayRequest(i);\n            await SetNewItem(new Uri(_nowPlayingState.CurrentEpisode.Key), _nowPlayingState.CurrentTime, shouldPlay, _nowPlayingState.CurrentEpisode.Id.ToString());\n        }\n\n        public async Task HandlePlayRequest(Episode e)\n        {\n            var shouldPlay = await _nowPlayingState.HandlePlayRequest(e);\n\n            if (_nowPlayingState.CurrentEpisode != null && shouldPlay.Item1)\n            {\n                // if we need to switch to a new item, set new item and open it for playback\n                await SetNewItem(new Uri(_nowPlayingState.CurrentEpisode.Key), _nowPlayingState.CurrentTime, shouldPlay.Item2, _nowPlayingState.CurrentEpisode.Id.ToString());\n            }\n            else if (_nowPlayingState.CurrentEpisode != null && !shouldPlay.Item1)\n            {\n                // if we don't need to switch (being asked to play what is already playing), just set the time - unless the time is already set.\n                if (_startTime <= TimeSpan.Zero)\n                {\n                    SetTime(_nowPlayingState.CurrentTime);\n                }\n\n                if (shouldPlay.Item2)\n                {\n                    _mediaPlayer.Play();\n                }\n            }\n        }\n\n        #region Playback Commands\n        public async Task Play(Episode ep, TimeSpan playTime)\n        {\n            await Microsoft.Toolkit.Uwp.Helpers.DispatcherHelper.AwaitableRunAsync(_dispatcher, () =>\n            {\n                if (_mediaPlayer.PlaybackSession.PlaybackState == MediaPlaybackState.None)\n                {\n                    return SetNewItem(new Uri(ep.Key), playTime, true, string.Empty);\n                }\n                else\n                {\n                    SetTime(playTime);\n                    return HandlePlayRequest(ep);\n                }\n            });\n        }\n\n        public void Pause()\n        {\n            var ignored = DispatcherHelper.ExecuteOnUIThreadAsync(() =>\n            {\n                _mediaPlayer.Pause();\n            });\n        }\n\n        public async Task TogglePlayPaused()\n        {\n            if (NowPlaying.HasItem)\n            {\n                switch (_mediaPlayer.PlaybackSession.PlaybackState)\n                {\n                    case MediaPlaybackState.None:\n                        await OpenAndPlayNewItem();\n                        break;\n                    case MediaPlaybackState.Playing:\n                        _mediaPlayer.Pause();\n                        break;\n                    case MediaPlaybackState.Paused:\n                        _mediaPlayer.Play();\n                        break;\n                }\n            }\n        }\n\n        public void Rewind()\n        {\n            var ignored = DispatcherHelper.ExecuteOnUIThreadAsync(() => _mediaPlayer.PlaybackSession.Position = _mediaPlayer.PlaybackSession.Position - TimeSpan.FromSeconds(10));\n        }\n\n        public void FastForward()\n        {\n            var ignored = DispatcherHelper.ExecuteOnUIThreadAsync(() => _mediaPlayer.PlaybackSession.Position = _mediaPlayer.PlaybackSession.Position + TimeSpan.FromSeconds(30));\n        }\n        #endregion\n\n        public async Task SetNewItem(Uri currentItem, TimeSpan currentTime, bool startPlayback, string localFilename)\n        {\n            var wasPlaying = _mediaPlayer?.PlaybackSession.PlaybackState == MediaPlaybackState.Playing;\n\n            ClearPlayback();\n\n            _startTime = currentTime;\n            _sourceUri = currentItem;\n            _localFilename = localFilename;\n\n            if (startPlayback)\n            {\n                await OpenAndPlayNewItem();\n            }\n        }\n\n        public void SetTime(TimeSpan currentTime)\n        {\n            if (_mediaPlayer.PlaybackSession.PlaybackState == MediaPlaybackState.Playing || _mediaPlayer.PlaybackSession.PlaybackState == MediaPlaybackState.Paused)\n            {\n                _mediaPlayer.PlaybackSession.Position = currentTime;\n                _timelinectrl?.SetTime(currentTime, _mediaPlayer.PlaybackSession.NaturalDuration);\n            }\n            else\n            {\n                _startTime = currentTime;\n            }\n        }\n\n        public void SetTimeControls(Timeline timeCtrl)\n        {\n            this._timelinectrl = timeCtrl;\n        }\n\n        public async Task<byte[]> GetBitmapForCurrentFrameFromLocalFile()\n        {\n            if (_currentFile != null)\n            {\n                return await GetBitmapBytesFromLocalFile(_mediaPlayer.PlaybackSession.Position);\n            }\n\n            return null;\n        }\n\n        #region Properties\n        public bool IsPaused\n        {\n            get\n            {\n                return _mediaPlayer.PlaybackSession.PlaybackState == MediaPlaybackState.Paused;\n            }\n        }\n\n        public bool IsPlaying\n        {\n            get\n            {\n                return this.IsPlayingInternal(_mediaPlayer.PlaybackSession.PlaybackState);\n            }\n        }\n\n        public MediaPlaybackState State\n        {\n            get\n            {\n                return _mediaPlayer.PlaybackSession.PlaybackState;\n            }\n        }\n\n        public bool IsOpening\n        {\n            get\n            {\n                return this.IsOpeningInternal(_mediaPlayer.PlaybackSession.PlaybackState);\n            }\n        }\n\n        public bool IsClosed\n        {\n            get\n            {\n                return _mediaPlayer.PlaybackSession.PlaybackState == MediaPlaybackState.None;\n            }\n        }\n\n        public double CurrentTime\n        {\n            get\n            {\n                return _mediaPlayer.PlaybackSession.Position.TotalMilliseconds;\n            }\n        }\n\n        public NowPlayingState NowPlaying { get => _nowPlayingState; }\n\n        public PlaybackSource VisualizationSource { get => _source; set => _source = value; }\n        #endregion\n\n        private PlayerService()\n        {\n            _dispatcher = Window.Current.Dispatcher;\n            InitializeMediaPlayer();\n\n            _playerEventDebounceTimer = new DispatcherTimer()\n            {\n                Interval = TimeSpan.FromMilliseconds(250)\n            };\n            _playerEventDebounceTimer.Tick += PlayerEventDebounceTimer_Tick;\n\n            _nowPlayingState = new NowPlayingState();\n\n            _nowPlayingState.LoadStateAsync().ContinueWith((a) =>\n            {\n                // TODO: handle error\n                if (_nowPlayingState.CurrentEpisode != null)\n                {\n                    var setItemTask = SetNewItem(new Uri(_nowPlayingState.CurrentEpisode.Key), _nowPlayingState.CurrentTime, false, _nowPlayingState.CurrentEpisode.Id.ToString());\n                }\n            });\n        }\n\n        private void InitializeMediaPlayer()\n        {\n            _mediaPlayer = new MediaPlayer();\n            VisualizationSource = new PlaybackSource(_mediaPlayer);\n            VisualizationSource.SourceChanged += _source_SourceChanged;\n            _mediaPlayer.PlaybackSession.PositionChanged += PlaybackSession_PositionChanged;\n\n            _mediaPlayer.PlaybackSession.PlaybackStateChanged += PlaybackSession_PlaybackStateChanged;\n\n            _mediaPlayer.MediaFailed += MediaPlayer_MediaFailed;\n\n            _mediaPlayer.PlaybackSession.NaturalVideoSizeChanged += (sender, args) =>\n            {\n                sender.MediaPlayer.SetSurfaceSize(new Size(sender.NaturalVideoWidth, sender.NaturalVideoHeight));\n            };\n        }\n\n        private void _source_SourceChanged(object sender, AudioVisualizer.IVisualizationSource args)\n        {\n            VisualizationSourceChanged?.Invoke(sender, args);\n        }\n\n        private async Task OpenAndPlayNewItem()\n        {\n            TypedEventHandler<MediaPlayer, object> openedHandler = null;\n\n            OnMediaLoading();\n\n            openedHandler = (s, e) =>\n            {\n                OnMediaLoaded();\n                _mediaPlayer.MediaOpened -= openedHandler;\n                if (_startTime > TimeSpan.Zero)\n                {\n                    _mediaPlayer.PlaybackSession.Position = _startTime;\n                }\n            };\n\n            _mediaPlayer.MediaOpened += openedHandler;\n\n            var result = await GetSourceForUri();\n\n            _mediaPlayer.Source = result.source;\n            _currentFile = result.storageFile;\n\n            _mediaPlayer.Play();\n\n            var disp = new DisplayRequest();\n            disp.RequestActive();\n        }\n\n        private async Task<(MediaSource source, StorageFile storageFile)> GetSourceForUri()\n        {\n            MediaSource source = null;\n            var currentFile = await BackgroundDownloadHelper.CheckLocalFileExistsFromUriHash(_sourceUri);\n\n            if (currentFile != null)\n            {\n                source = MediaSource.CreateFromStorageFile(currentFile);\n            }\n            else\n            {\n                source = MediaSource.CreateFromUri(_sourceUri);\n            }\n\n            return (source, currentFile);\n        }\n\n        private async Task<byte[]> GetBitmapBytesFromLocalFile(TimeSpan span)\n        {\n            var thumbnail = await GetThumbnailAsync(_currentFile, span);\n            InMemoryRandomAccessStream randomAccessStream = new InMemoryRandomAccessStream();\n            await RandomAccessStream.CopyAsync(thumbnail, randomAccessStream);\n            randomAccessStream.Seek(0);\n\n            var bytes = new byte[randomAccessStream.Size];\n            await randomAccessStream.ReadAsync(bytes.AsBuffer(), (uint)randomAccessStream.Size, InputStreamOptions.None);\n            return bytes;\n        }\n\n        private async Task<IInputStream> GetThumbnailAsync(StorageFile file, TimeSpan span)\n        {\n            var mediaClip = await MediaClip.CreateFromFileAsync(file);\n            var mediaComposition = new MediaComposition();\n            mediaComposition.Clips.Add(mediaClip);\n            return await mediaComposition.GetThumbnailAsync(\n                span, 0, 0, VideoFramePrecision.NearestFrame);\n        }\n\n        private void ClearPlayback()\n        {\n            if (_mediaPlayer.PlaybackSession.PlaybackState != MediaPlaybackState.None)\n            {\n                _mediaPlayer.Source = null;\n            }\n        }\n\n        private void PlaybackSession_PositionChanged(MediaPlaybackSession sender, object args)\n        {\n            _timelinectrl?.SetTime(_mediaPlayer.PlaybackSession.Position, _mediaPlayer.PlaybackSession.NaturalDuration);\n            _nowPlayingState.CurrentTime = _mediaPlayer.PlaybackSession.Position;\n        }\n\n        private async void PlaybackSession_PlaybackStateChanged(MediaPlaybackSession sender, object args)\n        {\n            await _dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>\n            {\n                lock (_syncLock)\n                {\n                    _nextEventtoFire = sender.PlaybackState;\n                    if (_playerEventDebounceTimer.IsEnabled)\n                    {\n                        Debug.WriteLine($\"Debounce\");\n                        _playerEventDebounceTimer.Stop();\n                        _playerEventDebounceTimer.Start();\n                    }\n                    _playerEventDebounceTimer.Start();\n                }\n            });\n        }\n\n        private void MediaPlayer_MediaFailed(MediaPlayer sender, MediaPlayerFailedEventArgs args)\n        {\n            Debug.WriteLine($\"failed:{args.ErrorMessage}\");\n        }\n\n        private async Task HandlePlayPauseChanged(MediaPlaybackState playOrPause)\n        {\n            if (playOrPause == MediaPlaybackState.Paused)\n            {\n                await _nowPlayingState.PeristEpisodePlaybackState();\n            }\n        }\n\n        private void PlayerEventDebounceTimer_Tick(object sender, object e)\n        {\n            lock (_syncLock)\n            {\n                _playerEventDebounceTimer.Stop();\n                CheckFireStateChanged();\n            }\n        }\n\n        private void CheckFireStateChanged()\n        {\n            // Only fire the event if state has actually changed based on what was last fired\n            var wasPlaying = IsPlayingInternal(_lastEventFired);\n\n            var isPlaying = IsPlayingInternal(_nextEventtoFire);\n\n            if (wasPlaying != isPlaying)\n            {\n                if (PlayPauseChanged != null)\n                {\n                    // Don't fire the event while the lock is held\n                    var dispatcherTask = _dispatcher.RunIdleAsync(async (s) =>\n                     {\n                         var playOrPause = IsPlayingInternal(_nextEventtoFire) ? MediaPlaybackState.Playing : MediaPlaybackState.Paused;\n\n                         Debug.WriteLine($\"Fire either play or pause : {playOrPause}\");\n                         await OnPlayPauseChanged(playOrPause);\n                     });\n                }\n            }\n\n            _lastEventFired = _nextEventtoFire;\n        }\n\n        private async Task OnPlayPauseChanged(MediaPlaybackState playOrPause)\n        {\n            await HandlePlayPauseChanged(playOrPause);\n            PlayPauseChanged(this, playOrPause);\n        }\n\n        /// <summary>\n        /// Use by callers who care about playing vs paused like play pause button\n        /// </summary>\n        /// <param name=\"eventToTest\"></param>\n        /// <returns></returns>\n        private bool IsPlayingInternal(MediaPlaybackState eventToTest)\n        {\n            return eventToTest == MediaPlaybackState.Buffering\n             || eventToTest == MediaPlaybackState.Opening\n             || eventToTest == MediaPlaybackState.Playing;\n        }\n\n        /// <summary>\n        /// Used by callers who are showing loading UX\n        /// </summary>\n        /// <param name=\"eventToTest\"></param>\n        /// <returns></returns>\n        private bool IsOpeningInternal(MediaPlaybackState eventToTest)\n        {\n            return eventToTest == MediaPlaybackState.Buffering\n             || eventToTest == MediaPlaybackState.Opening;\n        }\n\n        private void OnMediaLoaded()\n        {\n            this.MediaLoaded?.Invoke(this, EventArgs.Empty);\n        }\n\n        private void OnMediaLoading()\n        {\n            this.MediaLoading?.Invoke(this, EventArgs.Empty);\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Services/RemotePlayService.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing BuildCast.DataModel;\nusing BuildCast.Helpers;\nusing BuildCast.Services.Navigation;\nusing Windows.ApplicationModel.AppService;\nusing Windows.ApplicationModel.Background;\nusing Windows.Foundation.Collections;\nusing Windows.System;\nusing Windows.System.RemoteSystems;\n\nnamespace BuildCast.Services\n{\n    public class RemotePlayService : IRemotePlayerService\n    {\n        private const string PLAYERCOMMAND = \"player_command\";\n        private const string PLAYCOMMAND = \"play\";\n        private const string PLAYTIME = \"playtime\";\n        private const string SEEKCOMMAND = \"seek\";\n        private const string PAUSECOMMAND = \"pause\";\n        private const string STOPCOMMAND = \"stop\";\n        private const string FFWDCOMMAND = \"ffwd\";\n        private const string RWDCOMMAND = \"bekindrewind\";\n        private const string SNAPBITMAPCOMMAND = \"snapbitmap\";\n        private const string SNAPBITMAPREPLY = \"snapbitmapreply\";\n        private const string BUILDCASTAPPID = \"3493e9b8-b025-449b-99db-f6cd5b0a5439\";\n\n        private BackgroundTaskDeferral serviceDeferral;\n        private AppServiceConnection connection;\n\n        private List<IAvailableSystemsObserver> _observers = new List<IAvailableSystemsObserver>();\n\n        private IPlayerService _playerService;\n        private INavigationService _navigationService;\n\n        private RemoteSystemWatcher _remoteSystemWatcher;\n        private Dictionary<string, (RemoteSystem System, IRemoteSystemDescription Description)> _deviceMap = null;\n\n        public RemotePlayService(IPlayerService playerService, INavigationService navigationService)\n        {\n            _playerService = playerService;\n            _navigationService = navigationService;\n            AvailableSystems = new List<IRemoteSystemDescription>();\n            _deviceMap = new Dictionary<string, (RemoteSystem System, IRemoteSystemDescription Description)>();\n        }\n\n        IEnumerable<IRemoteSystemDescription> IRemotePlayerService.AvailableSystems => AvailableSystems;\n\n        private List<IRemoteSystemDescription> AvailableSystems { get; set; }\n\n        public void SearchCleanup()\n        {\n            if (_remoteSystemWatcher != null)\n            {\n                _remoteSystemWatcher.Stop();\n                _remoteSystemWatcher = null;\n            }\n\n            if (AvailableSystems != null)\n            {\n                AvailableSystems.Clear();\n                _deviceMap.Clear();\n            }\n        }\n\n        public async Task<bool> FindDevices()\n        {\n            // ROME code to find proximity device\n            RemoteSystemAccessStatus accessStatus = await RemoteSystem.RequestAccessAsync();\n            if (accessStatus == RemoteSystemAccessStatus.Allowed)\n            {\n                if (_remoteSystemWatcher != null)\n                {\n                    _remoteSystemWatcher.Start();\n                    return true;\n                }\n                else\n                {\n                    List<IRemoteSystemFilter> filters = new List<IRemoteSystemFilter>();\n                    RemoteSystemDiscoveryTypeFilter discoveryFilter = new RemoteSystemDiscoveryTypeFilter(RemoteSystemDiscoveryType.Any);\n                    List<string> kinds = new List<string>();\n                    RemoteSystemStatusTypeFilter statusFilter = new RemoteSystemStatusTypeFilter(RemoteSystemStatusType.Any);\n                    kinds.Add(RemoteSystemKinds.Desktop);\n                    // kinds.Add(RemoteSystemKinds.Phone);\n                    kinds.Add(RemoteSystemKinds.Xbox);\n                    RemoteSystemKindFilter kindFilter = new RemoteSystemKindFilter(kinds);\n                    filters.Add(kindFilter);\n                    filters.Add(statusFilter);\n                    filters.Add(discoveryFilter);\n\n                    _remoteSystemWatcher = RemoteSystem.CreateWatcher(filters);\n\n                    // Subscribing to the event that will be raised when a new remote system is found by the watcher.\n                    _remoteSystemWatcher.RemoteSystemAdded += RemoteSystemWatcher_RemoteSystemAdded;\n\n                    // Subscribing to the event that will be raised when a previously found remote system is no longer available.\n                    _remoteSystemWatcher.RemoteSystemRemoved += RemoteSystemWatcher_RemoteSystemRemoved;\n\n                    // Subscribing to the event that will be raised when a previously found remote system is updated.\n                    _remoteSystemWatcher.RemoteSystemUpdated += RemoteSystemWatcher_RemoteSystemUpdated;\n\n                    // Start the watcher.\n                    _remoteSystemWatcher.Start();\n                    return true;\n                }\n            }\n            else\n            {\n                return false;\n            }\n        }\n\n        public void RemoteActivation(BackgroundTaskDeferral backgroundTaskDeferral, AppServiceConnection appServiceConnection)\n        {\n            serviceDeferral = backgroundTaskDeferral;\n            connection = appServiceConnection;\n\n            connection.RequestReceived += Connection_RequestReceived;\n        }\n\n        public IDisposable SubscribeSystemsChange(IAvailableSystemsObserver observer)\n        {\n            IDisposable token = null;\n            if (!_observers.Contains(observer))\n            {\n                token = new SubscriptionToken(_observers, observer);\n            }\n\n            return token;\n        }\n\n        private void RemoteSystemWatcher_RemoteSystemUpdated(RemoteSystemWatcher sender, RemoteSystemUpdatedEventArgs args)\n        {\n            IRemoteSystemDescription description = null;\n            if (_deviceMap.ContainsKey(args.RemoteSystem.Id))\n            {\n                description = _deviceMap[args.RemoteSystem.Id].Description;\n                _deviceMap.Remove(args.RemoteSystem.Id);\n            }\n\n            _deviceMap.Add(args.RemoteSystem.Id, (args.RemoteSystem, description));\n        }\n\n        private void RemoteSystemWatcher_RemoteSystemRemoved(RemoteSystemWatcher sender, RemoteSystemRemovedEventArgs args)\n        {\n            IRemoteSystemDescription description = null;\n            if (_deviceMap.ContainsKey(args.RemoteSystemId))\n            {\n                description = _deviceMap[args.RemoteSystemId].Description;\n                AvailableSystems.Remove(description);\n                _deviceMap.Remove(args.RemoteSystemId);\n            }\n\n            if (description != null)\n            {\n                foreach (var observer in _observers)\n                {\n                    observer.Removed(description);\n                }\n            }\n        }\n\n        private void RemoteSystemWatcher_RemoteSystemAdded(RemoteSystemWatcher sender, RemoteSystemAddedEventArgs args)\n        {\n            if (!_deviceMap.ContainsKey(args.RemoteSystem.Id))\n            {\n                IRemoteSystemDescription description = new RemoteSystemDescription(this) { Id = args.RemoteSystem.Id, Name = args.RemoteSystem.DisplayName, Kind = args.RemoteSystem.Kind };\n\n                // deviceList and deviceMap updates instead of only latestRemoteSystem...\n                AvailableSystems.Add(description);\n                _deviceMap.Add(args.RemoteSystem.Id, (args.RemoteSystem, description));\n\n                foreach (var observer in _observers)\n                {\n                    observer.Add(description);\n                }\n            }\n        }\n\n        private async Task<IRemoteConnection> CreateRemoteConnection(IRemoteSystemDescription remoteSystem)\n        {\n            RemoteConnection remoteConnection = null;\n            var latestRemoteSystem = _deviceMap[remoteSystem.Id].System;\n            if (latestRemoteSystem != null && latestRemoteSystem.Status == RemoteSystemStatus.Available)\n            {\n                Uri uri = new Uri(@\"media-video-podcast-listenremote:\");\n\n                RemoteLauncherOptions launcherOptions = new RemoteLauncherOptions();\n                launcherOptions.PreferredAppIds.Add(Windows.ApplicationModel.Package.Current.Id.FamilyName);\n\n                RemoteLaunchUriStatus launchUriStatus = await RemoteLauncher.LaunchUriAsync(new RemoteSystemConnectionRequest(latestRemoteSystem), uri, launcherOptions);\n                if (launchUriStatus == RemoteLaunchUriStatus.Success)\n                {\n                    RemoteSystemConnectionRequest connectionRequest = new RemoteSystemConnectionRequest(latestRemoteSystem);\n                    var remoteAppServiceConnection = new AppServiceConnection\n                    {\n                        AppServiceName = \"InProcessAppService\",\n                        PackageFamilyName = Windows.ApplicationModel.Package.Current.Id.FamilyName,\n                    };\n                    {\n                        AppServiceConnectionStatus status = await remoteAppServiceConnection.OpenRemoteAsync(connectionRequest);\n\n                        if (status == AppServiceConnectionStatus.Success)\n                        {\n                            remoteConnection = new RemoteConnection(remoteAppServiceConnection, _playerService);\n                        }\n                    }\n                }\n            }\n\n            return remoteConnection;\n        }\n\n        private async void Connection_RequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)\n        {\n            var messageDeferral = args.GetDeferral();\n\n            try\n            {\n                var requestMessageValues = args.Request.Message;\n                var commandString = requestMessageValues[PLAYERCOMMAND];\n\n                switch (commandString)\n                {\n                    case PLAYCOMMAND:\n                        LocalStorageContext context = new LocalStorageContext();\n                        Episode episode = context.EpisodeCache.Where(ep => ep.Key == requestMessageValues[PLAYCOMMAND].ToString()).FirstOrDefault();\n                        if (episode != null)\n                        {\n                            await _navigationService.NavigateToPlayerAsync(episode: null);\n                            TimeSpan playTime = TimeSpan.Zero;\n                            if (requestMessageValues.ContainsKey(PLAYTIME))\n                            {\n                                TimeSpan.TryParse(requestMessageValues[PLAYTIME].ToString(), out playTime);\n                            }\n\n                            await _playerService.Play(episode, playTime);\n                        }\n\n                        break;\n                    case PAUSECOMMAND:\n                        _playerService.Pause();\n                        break;\n                    case SEEKCOMMAND:\n                        var timestamp = (TimeSpan)requestMessageValues[SEEKCOMMAND];\n                        _playerService.SetTime(timestamp);\n                        break;\n                    case FFWDCOMMAND:\n                        _playerService.FastForward();\n                        break;\n                    case RWDCOMMAND:\n                        _playerService.Rewind();\n                        break;\n                    case SNAPBITMAPCOMMAND:\n                        var bitmap = await _playerService.GetBitmapForCurrentFrameFromLocalFile();\n                        ValueSet message = new ValueSet\n                        {\n                            [PLAYERCOMMAND] = SNAPBITMAPREPLY,\n                            [SNAPBITMAPREPLY] = bitmap,\n                        };\n                        var response = await args.Request.SendResponseAsync(message);\n                        break;\n                    default:\n                        break;\n                }\n            }\n            finally\n            {\n                messageDeferral.Complete();\n            }\n        }\n\n        // TODO: not used. Delete?\n        private void TaskInstance_Canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)\n        {\n            if (serviceDeferral != null)\n            {\n                // Complete the service deferral\n                serviceDeferral.Complete();\n                serviceDeferral = null;\n            }\n        }\n\n        private class RemoteConnection : IRemoteConnection\n        {\n            private AppServiceConnection _connection;\n            private string _episodeKey;\n            private IPlayerService _playerService;\n\n            public RemoteConnection(AppServiceConnection connection, IPlayerService playerService)\n            {\n                _connection = connection;\n                _episodeKey = playerService.NowPlaying.CurrentEpisode.Key;\n                _playerService = playerService;\n            }\n\n            public Task Disconnect()\n            {\n                _connection.Dispose();\n                return Task.CompletedTask;\n            }\n\n            public void Dispose()\n            {\n                _connection.Dispose();\n            }\n\n            public async Task Pause()\n            {\n                ValueSet message = new ValueSet\n                {\n                    [PLAYERCOMMAND] = PAUSECOMMAND,\n                };\n                var response = await _connection.SendMessageAsync(message);\n                await CheckGoodResponse(response);\n            }\n\n            public async Task Play()\n            {\n                _playerService.Pause();\n                TimeSpan currentTime = _playerService.NowPlaying?.CurrentTime ?? TimeSpan.Zero;\n                ValueSet message = new ValueSet\n                {\n                    [PLAYERCOMMAND] = PLAYCOMMAND,\n                    [PLAYCOMMAND] = _episodeKey,\n                    [PLAYTIME] = currentTime,\n                };\n                var response = await _connection.SendMessageAsync(message);\n\n                await CheckGoodResponse(response);\n            }\n\n            public async Task Seek(TimeSpan timeStamp)\n            {\n                ValueSet message = new ValueSet\n                {\n                    [PLAYERCOMMAND] = SEEKCOMMAND,\n                    [SEEKCOMMAND] = timeStamp,\n                };\n                var response = await _connection.SendMessageAsync(message);\n                await CheckGoodResponse(response);\n            }\n\n            public async Task FastForward()\n            {\n                ValueSet message = new ValueSet\n                {\n                    [PLAYERCOMMAND] = FFWDCOMMAND,\n                };\n                var response = await _connection.SendMessageAsync(message);\n                await CheckGoodResponse(response);\n            }\n\n            public async Task Rewind()\n            {\n                ValueSet message = new ValueSet\n                {\n                    [PLAYERCOMMAND] = RWDCOMMAND,\n                };\n                var response = await _connection.SendMessageAsync(message);\n                await CheckGoodResponse(response);\n            }\n\n            public async Task GetRemoteBitmap()\n            {\n                ValueSet message = new ValueSet\n                {\n                    [PLAYERCOMMAND] = SNAPBITMAPCOMMAND,\n                };\n                var response = await _connection.SendMessageAsync(message);\n\n                if (response.Message.ContainsKey(SNAPBITMAPREPLY))\n                {\n                    byte[] bytes = (byte[])response.Message[SNAPBITMAPREPLY];\n                    StartInking(PlayerService.Current.NowPlaying, bytes);\n                }\n                else\n                {\n                    throw new Exception(\"TODO HANDLE THIS\");\n                }\n\n                await CheckGoodResponse(response);\n            }\n\n            public void StartInking(NowPlayingState nowPlaying, byte[] imageBytes)\n            {\n                // Remote inking is not yet supported\n                return;\n\n                // TODO: remove this method and call into a single place to start an inknote\n                if (imageBytes != null)\n                {\n                    BuildCast.DataModel.InkNote meme = new BuildCast.DataModel.InkNote(nowPlaying.CurrentEpisode.Key, PlayerService.Current.CurrentTime);\n\n                    var inkNoteData = new InkNoteData() { ImageBytes = imageBytes };\n\n                    // TODO refactor to use navigation service.\n                    ((App)Windows.UI.Xaml.Application.Current).GetFrame().Navigate(typeof(InkNote), inkNoteData);\n\n                    // ViewModel.GoToInkNote(meme);\n                }\n            }\n\n            private async Task CheckGoodResponse(AppServiceResponse response)\n            {\n                if (response.Status != AppServiceResponseStatus.Success)\n                {\n                    await UIHelpers.ShowContentAsync($\"Failure sending remote command\");\n                }\n            }\n        }\n\n        private class RemoteSystemDescription : IRemoteSystemDescription\n        {\n            private RemotePlayService _service;\n\n            public RemoteSystemDescription(RemotePlayService service)\n            {\n                _service = service;\n            }\n\n            public string Id { get; set; }\n\n            public string Name { get; set; }\n\n            public string Kind { get; set; }\n\n            public string Glyph\n            {\n                get\n                {\n                    switch (Kind)\n                    {\n                        case \"Phone\":\n                            return \"\\uE8EA\";\n                        case \"Xbox\":\n                            return \"\\uE7FC\";\n                        default:\n                            return \"\\uE770\";\n                    }\n                }\n            }\n\n            public Task<IRemoteConnection> PlayTo()\n            {\n                return _service.CreateRemoteConnection(this);\n            }\n        }\n\n        private class SubscriptionToken : IDisposable\n        {\n            private List<IAvailableSystemsObserver> _observerList;\n            private IAvailableSystemsObserver _observer;\n\n            public SubscriptionToken(List<IAvailableSystemsObserver> observerList, IAvailableSystemsObserver observer)\n            {\n                _observerList = observerList;\n                _observer = observer;\n\n                _observerList.Add(_observer);\n            }\n\n            public void Dispose()\n            {\n                _observerList.Remove(_observer);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Services/ThemeSelectorService.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Threading.Tasks;\nusing BuildCast.Helpers;\nusing Windows.ApplicationModel.Core;\nusing Windows.Foundation.Metadata;\nusing Windows.Storage;\nusing Windows.UI;\nusing Windows.UI.ViewManagement;\nusing Windows.UI.Xaml;\n\nnamespace BuildCast.Services\n{\n    public static class ThemeSelectorService\n    {\n        private const string SettingsKey = \"RequestedTheme\";\n\n        private static ResourceDictionary _customTheme = new ResourceDictionary { Source = new Uri(\"ms-appx:///Themes/Branded.xaml\", UriKind.Absolute) };\n        private static ResourceDictionary _stockTheme = new ResourceDictionary { Source = new Uri(\"ms-appx:///Themes/Stock.xaml\", UriKind.Absolute) };\n\n        public static event EventHandler<ElementThemeExtended> OnThemeChanged = (sender, args) => { };\n\n        public static ElementThemeExtended Theme { get; set; } = ElementThemeExtended.Default;\n\n        public static string GetSystemControlForegroundColorForThemeHex()\n        {\n            if (TrueTheme() == ElementTheme.Dark)\n            {\n                return \"#FFFFFF\";\n            }\n            else\n            {\n                return \"#000000\";\n            }\n        }\n\n        public static async Task InitializeAsync()\n        {\n            Theme = await LoadThemeFromSettingsAsync();\n        }\n\n        public static async Task SetThemeAsync(ElementThemeExtended theme)\n        {\n            Theme = theme;\n\n            SetRequestedTheme();\n            await SaveThemeInSettingsAsync(Theme);\n\n            OnThemeChanged(null, Theme);\n        }\n\n        public static void SetRequestedTheme()\n        {\n            if (Window.Current.Content is FrameworkElement frameworkElement)\n            {\n                ElementTheme trueTheme;\n\n                if (Theme == ElementThemeExtended.Custom)\n                {\n                    if (Application.Current.Resources.MergedDictionaries.Contains(_stockTheme))\n                    {\n                        Application.Current.Resources.MergedDictionaries.Remove(_stockTheme);\n                    }\n\n                    Application.Current.Resources.MergedDictionaries.Add(_customTheme);\n\n                    trueTheme = ElementTheme.Dark;\n\n                    if (frameworkElement.RequestedTheme == ElementTheme.Dark)\n                    {\n                        frameworkElement.RequestedTheme = ElementTheme.Light;\n                    }\n                }\n                else\n                {\n                    if (Application.Current.Resources.MergedDictionaries.Contains(_customTheme))\n                    {\n                        Application.Current.Resources.MergedDictionaries.Remove(_customTheme);\n                    }\n\n                    // for the case we switch between light and dark which share stock\n                    if (!Application.Current.Resources.MergedDictionaries.Contains(_stockTheme))\n                    {\n                        Application.Current.Resources.MergedDictionaries.Add(_stockTheme);\n                    }\n\n                    trueTheme = (ElementTheme)Theme;\n\n                    if (frameworkElement.RequestedTheme == ElementTheme.Dark)\n                    {\n                        frameworkElement.RequestedTheme = ElementTheme.Light;\n                    }\n                }\n\n                frameworkElement.RequestedTheme = trueTheme;\n            }\n\n            SetupTitlebar();\n        }\n\n        public static string GetLogoSource()\n        {\n            if (Theme == ElementThemeExtended.Dark)\n            {\n                return \"ms-appx:///Assets/BuildCastDarkTheme.svg\";\n            }\n\n            return \"ms-appx:///Assets/BuildCast.svg\";\n        }\n\n        public static string GetHomeImageSource()\n        {\n            if (Theme == ElementThemeExtended.Dark)\n            {\n                return \"ms-appx:///Assets/BUILD2017_Seattle_Skyline_night.jpg\";\n            }\n\n            return \"ms-appx:///Assets/BUILD2017_Seattle_Skyline.jpg\";\n        }\n\n        public static ElementTheme GetHomeTheme()\n        {\n            if (Theme == ElementThemeExtended.Custom)\n            {\n                return ElementTheme.Light;\n            }\n\n            return TrueTheme();\n        }\n\n        public static Style GetHomeBackground()\n        {\n            if (Theme == ElementThemeExtended.Custom)\n            {\n                return Application.Current.Resources[\"HomePageBackground\"] as Style;\n            }\n\n            return Application.Current.Resources[\"PageBackground\"] as Style;\n        }\n\n        public static ElementTheme TrueTheme()\n        {\n            var frameworkElement = Window.Current.Content as FrameworkElement;\n            return frameworkElement.ActualTheme;\n        }\n\n        private static void SetupTitlebar()\n        {\n            if (ApiInformation.IsTypePresent(\"Windows.UI.ViewManagement.ApplicationView\"))\n            {\n                var titleBar = ApplicationView.GetForCurrentView().TitleBar;\n                if (titleBar != null)\n                {\n                    titleBar.ButtonBackgroundColor = Colors.Transparent;\n                    if (TrueTheme() == ElementTheme.Dark)\n                    {\n                        titleBar.ButtonForegroundColor = Colors.White;\n                        titleBar.ForegroundColor = Colors.White;\n                    }\n                    else\n                    {\n                        titleBar.ButtonForegroundColor = Colors.Black;\n                        titleBar.ForegroundColor = Colors.Black;\n                    }\n\n                    titleBar.BackgroundColor = Colors.Black;\n\n                    titleBar.ButtonInactiveBackgroundColor = Colors.Transparent;\n                    titleBar.ButtonInactiveForegroundColor = Colors.LightGray;\n\n                    CoreApplicationViewTitleBar coreTitleBar = TitleBarHelper.Instance.TitleBar;\n\n                    coreTitleBar.ExtendViewIntoTitleBar = true;\n                }\n            }\n        }\n\n        private static async Task<ElementThemeExtended> LoadThemeFromSettingsAsync()\n        {\n            ElementThemeExtended cacheTheme = ElementThemeExtended.Default;\n            string themeName = await ApplicationData.Current.LocalSettings.ReadAsync<string>(SettingsKey);\n\n            if (!string.IsNullOrEmpty(themeName))\n            {\n                Enum.TryParse(themeName, out cacheTheme);\n            }\n\n            return cacheTheme;\n        }\n\n        private static async Task SaveThemeInSettingsAsync(ElementThemeExtended theme)\n        {\n            await ApplicationData.Current.LocalSettings.SaveAsync(SettingsKey, theme.ToString());\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Services/ViewModeService.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nnamespace BuildCast.Helpers\n{\n    using System;\n    using System.Threading.Tasks;\n    using BuildCast.Services;\n    using Windows.ApplicationModel.Core;\n    using Windows.UI.Core;\n    using Windows.UI.ViewManagement;\n    using Windows.UI.Xaml;\n    using Windows.UI.Xaml.Controls;\n    using Windows.UI.Xaml.Media;\n\n    public class ViewModeService\n    {\n        // Compact mode\n        private static readonly ViewModeService _instance = new ViewModeService();\n        private UIElement _previousViewContent;\n\n        // Fullscreen\n        private double oldCompactThreshold;\n        private double oldExpandedThreshold;\n        private Brush oldBackgroundBrush;\n        private FrameworkElement _navHeader;\n        private FrameworkElement _menuButton;\n        private NavigationView _navigationView;\n        private Frame _appNavFrame;\n        private bool inFullScreen;\n\n        public static ViewModeService Instance => _instance;\n\n        public async Task CreateNewView<T>(Func<T> newViewObjectFactory, Action<T> loadAction)\n            where T : UIElement\n        {\n            CoreApplicationView newView = CoreApplication.CreateNewView();\n            var newViewId = 0;\n            await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>\n                    {\n                        var newViewContent = newViewObjectFactory();\n                        Window.Current.Content = newViewContent;\n                        Window.Current.Activate();\n                        newViewId = ApplicationView.GetForCurrentView().Id;\n\n                        loadAction(newViewContent);\n                    });\n            var viewShown = await ApplicationViewSwitcher.TryShowAsViewModeAsync(newViewId, ApplicationViewMode.CompactOverlay);\n        }\n\n        public async Task<bool> SwitchToCompactOverlay<T>(T newView, Action<T> loadAction)\n            where T : UIElement\n        {\n            _previousViewContent = Window.Current.Content;\n            bool modeSwitched = await ApplicationView.GetForCurrentView().TryEnterViewModeAsync(ApplicationViewMode.CompactOverlay);\n            if (modeSwitched)\n            {\n                Window.Current.Content = newView;\n                loadAction(newView);\n            }\n\n            return modeSwitched;\n        }\n\n        public async Task<bool> SwitchToNormalMode()\n        {\n            bool modeSwitched = await ApplicationView.GetForCurrentView().TryEnterViewModeAsync(ApplicationViewMode.Default);\n            if (modeSwitched)\n            {\n                Window.Current.Content = _previousViewContent;\n                _previousViewContent = null;\n            }\n\n            return modeSwitched;\n        }\n\n        public void Register(NavigationView navview, Frame appNavFrame)\n        {\n            _navigationView = navview;\n            _appNavFrame = appNavFrame;\n        }\n\n        public void UnRegister()\n        {\n            _navigationView = null;\n            _appNavFrame = null;\n        }\n\n        public void DoEnterFullscreen()\n        {\n            var view = ApplicationView.GetForCurrentView();\n            inFullScreen = view.TryEnterFullScreenMode();\n            if (inFullScreen)\n            {\n                // Adjust navigationview to accomodate fullscreen\n                if (_navigationView != null)\n                {\n                    oldBackgroundBrush = _navigationView.Background;\n\n                    CollapseNavigationViewToBurger();\n\n                    EnsureElements(_navigationView);\n\n                    // Hide navigationview menu while in fullscreen\n                    _menuButton.Visibility = Visibility.Collapsed;\n                }\n\n                // Hide titlebar\n                TitleBarHelper.Instance.GoFullscreen();\n\n                // If current page is intersted in fullscreen, tell it\n                if (_appNavFrame != null && _appNavFrame.Content is IFullscreenPage)\n                {\n                    ((IFullscreenPage)_appNavFrame.Content).EnterFullscreen();\n                }\n            }\n        }\n\n        public void CollapseNavigationViewToBurger()\n        {\n            EnsureElements(_navigationView);\n\n            oldCompactThreshold = _navigationView.CompactModeThresholdWidth;\n            oldExpandedThreshold = _navigationView.ExpandedModeThresholdWidth;\n\n            // Force navview to collapse to it's least wide mode\n            _navigationView.CompactModeThresholdWidth = 10000;\n            _navigationView.ExpandedModeThresholdWidth = 10000;\n\n            // Collapse navigationview header while in fullscreen\n            _navHeader.Visibility = Visibility.Collapsed;\n        }\n\n        public void RestoreNavigationViewDefault()\n        {\n            _navigationView.CompactModeThresholdWidth = oldCompactThreshold;\n            _navigationView.ExpandedModeThresholdWidth = oldExpandedThreshold;\n            _navHeader.Visibility = Visibility.Visible;\n        }\n\n        public void DoExitFullscreen()\n        {\n            if (inFullScreen)\n            {\n                var view = ApplicationView.GetForCurrentView();\n                view.ExitFullScreenMode();\n\n                TitleBarHelper.Instance.ExitFullscreen();\n\n                if (_navigationView != null)\n                {\n                    EnsureElements(_navigationView);\n                    RestoreNavigationViewDefault();\n\n                    _navigationView.Background = oldBackgroundBrush;\n\n                    _menuButton.Visibility = Visibility.Visible;\n                }\n\n                if (_appNavFrame != null && _appNavFrame.Content is IFullscreenPage)\n                {\n                    ((IFullscreenPage)_appNavFrame.Content).ExitFullscreen();\n                }\n\n                inFullScreen = false;\n            }\n        }\n\n        public void ToggleFullscreen()\n        {\n            var view = ApplicationView.GetForCurrentView();\n            if (view.IsFullScreenMode)\n            {\n                ViewModeService.Instance.DoExitFullscreen();\n            }\n            else\n            {\n                ViewModeService.Instance.DoEnterFullscreen();\n            }\n        }\n\n        private void EnsureElements(NavigationView navview)\n        {\n            if (_navHeader == null)\n            {\n                _navHeader = VisualHelpers.GetVisualChildByName<FrameworkElement>(navview, \"HeaderContent\");\n            }\n\n            if (_menuButton == null)\n            {\n                _menuButton = VisualHelpers.GetVisualChildByName<FrameworkElement>(navview, \"TogglePaneButton\");\n            }\n        }\n    }\n}"
  },
  {
    "path": "src/BuildCast/Strings/en-us/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Settings_Title.Text\" xml:space=\"preserve\">\n    <value>Settings</value>\n    <comment>Page title for Settings</comment>\n  </data>\n  <data name=\"Settings_Theme.Text\" xml:space=\"preserve\">\n    <value>Choose Theme</value>\n    <comment>Choose theme text for Settings</comment>\n  </data>\n  <data name=\"Settings_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>Dark</value>\n    <comment>Dark theme text for Settings</comment>\n  </data>\n  <data name=\"Settings_Theme_Default.Content\" xml:space=\"preserve\">\n    <value>Windows default</value>\n    <comment>Windows default theme text for Settings</comment>\n  </data>\n  <data name=\"Settings_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>Light</value>\n    <comment>Light theme text for Settings</comment>\n  </data>\n  <data name=\"Settings_About.Text\" xml:space=\"preserve\">\n    <value>About this application</value>\n    <comment>About this application title for Settings</comment>\n  </data>\n  <data name=\"Settings_AboutDescription.Text\" xml:space=\"preserve\">\n    <value>Video podcast player.</value>\n    <comment>About this application description for Settings</comment>\n  </data>\n  <data name=\"Settings_PrivacyTermsLink.Content\" xml:space=\"preserve\">\n    <value>Privacy Statement</value>\n    <comment>Privacy Statement link content for Settings</comment>\n  </data>\n  <data name=\"Settings_PrivacyTermsLink.NavigateUri\" xml:space=\"preserve\">\n    <value>https://YourPrivacyUrlGoesHere/</value>\n    <comment>Here is your Privacy Statement url for Settings</comment>\n  </data>\n  <data name=\"Settings_Personalization.Text\" xml:space=\"preserve\">\n    <value>Personalization</value>\n    <comment>Personalization text for Settings</comment>\n  </data>\n  <data name=\"Settings_Theme_Custom.Content\" xml:space=\"preserve\">\n    <value>Custom</value>\n    <comment>Custom theme for settings</comment>\n  </data>\n  <data name=\"Settings_PipMode.Text\" xml:space=\"preserve\">\n    <value>Window mode for Picture-in-picture</value>\n  </data>\n  <data name=\"Settings_PipMode_SingleView.Content\" xml:space=\"preserve\">\n    <value>Main window switches to Picture-in-picture</value>\n  </data>\n  <data name=\"Settings_PipMode_MultiView.Content\" xml:space=\"preserve\">\n    <value>Picture-in-picture opens a second window</value>\n  </data>\n  <data name=\"Bookmarks_Title.Text\" xml:space=\"preserve\">\n    <value>Notes and Bookmarks</value>\n    <comment>Page title for Bookmarks</comment>\n  </data>\n  <data name=\"Downloads_Title.Text\" xml:space=\"preserve\">\n    <value>Downloads</value>\n    <comment>Page title for Downloads</comment>\n  </data>\n  <data name=\"Favorites_Title.Text\" xml:space=\"preserve\">\n    <value>Favorites</value>\n    <comment>Page title for Favorites</comment>\n  </data>\n</root>"
  },
  {
    "path": "src/BuildCast/Styles/Common.xaml",
    "content": "﻿<!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:media=\"using:Windows.UI.Xaml.Media\">\n    \n    <Style TargetType=\"Button\" x:Key=\"transportButton\" BasedOn=\"{StaticResource ButtonRevealStyle}\">\n        <Setter Property=\"Width\" Value=\"96\"/>\n        <Setter Property=\"Height\" Value=\"48\"/>\n        <Setter Property=\"Margin\" Value=\"2.5,0,2.5,0\"/>\n        \n    </Style>\n\n    <Style TargetType=\"Button\" x:Key=\"transportSecondaryButton\" BasedOn=\"{StaticResource transportButton}\">\n        <Setter Property=\"Width\" Value=\"50\"/>\n    </Style>\n\n    <Style TargetType=\"FlyoutPresenter\">\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"FlyoutPresenter\">\n                    <ContentPresenter Background=\"{StaticResource InApp}\" />\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n    <Style TargetType=\"AppBarButton\" BasedOn=\"{StaticResource AppBarButtonRevealStyle}\">\n        <Setter Property=\"Width\" Value=\"70\" />\n    </Style>\n\n    <media:AcrylicBrush\n            x:Name=\"ThemeAcryllic\"\n            BackgroundSource=\"HostBackdrop\"\n            Opacity=\"1.0\"\n            TintColor=\"LemonChiffon\"\n            TintOpacity=\"0.2\" />\n\n    <media:AcrylicBrush\n            x:Name=\"InApp\"\n            BackgroundSource=\"Backdrop\"\n            Opacity=\"1.0\"\n            TintColor=\"LemonChiffon\"\n            FallbackColor=\"#EE555555\"\n            TintOpacity=\"0.2\" />\n</ResourceDictionary>\n"
  },
  {
    "path": "src/BuildCast/Styles/Settings.xaml",
    "content": "﻿<!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:BuildCast.Styles\">\n    \n    <SolidColorBrush x:Key=\"ThemeControlForegroundBaseHighBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n    \n    <x:Double x:Key=\"LargeFontSize\">32</x:Double>\n    <x:Double x:Key=\"MediumFontSize\">16</x:Double>\n\n    <Thickness x:Key=\"PageTopPosition\">0,45,0,0</Thickness>\n\n    <Thickness x:Key=\"PageMargin\">24,35,0,0</Thickness>\n    <Thickness x:Key=\"PagePadding\">24,35,24,0</Thickness>\n    \n    <!--Custom size margins-->\n    <Thickness x:Key=\"PageTitleMargin\">12,0,12,25</Thickness>\n    <Thickness x:Key=\"SettingsSubheaderMargin\">12, 0, 0, 25</Thickness>\n\n    <!--Medium size margins-->\n    <Thickness x:Key=\"MediumLeftRightMargin\">12,0,12,0</Thickness>\n    <Thickness x:Key=\"MediumLeftTopRightBottomMargin\">12,12,12,12</Thickness>\n\n    <!--Small size margins-->\n    <Thickness x:Key=\"EightTopMargin\">0, 8, 0, 0</Thickness>\n    <Style x:Key=\"PageTitleStyle\" TargetType=\"TextBlock\">\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\n        <Setter Property=\"FontWeight\" Value=\"SemiLight\"/>\n        <Setter Property=\"FontSize\" Value=\"{StaticResource LargeFontSize}\"/>\n        <Setter Property=\"TextTrimming\" Value=\"CharacterEllipsis\"/>\n        <Setter Property=\"TextWrapping\" Value=\"NoWrap\"/>\n        <Setter Property=\"Margin\" Value=\"{StaticResource PageTitleMargin}\"/>\n    </Style>\n\n    <Style x:Key=\"BodyTextStyle\" TargetType=\"TextBlock\">\n        <Setter Property=\"FontWeight\" Value=\"Normal\"/>\n        <Setter Property=\"FontSize\" Value=\"{StaticResource MediumFontSize}\"/>\n        <Setter Property=\"TextTrimming\" Value=\"CharacterEllipsis\"/>\n        <Setter Property=\"TextWrapping\" Value=\"Wrap\"/>\n    </Style>\n\n    <!--List texts-->\n    <Style x:Key=\"ListTitleStyle\" TargetType=\"TextBlock\">\n        <Setter Property=\"FontWeight\" Value=\"SemiBold\"/>\n        <Setter Property=\"FontSize\" Value=\"{StaticResource MediumFontSize}\"/>\n        <Setter Property=\"TextTrimming\" Value=\"CharacterEllipsis\"/>\n        <Setter Property=\"TextWrapping\" Value=\"NoWrap\"/>\n    </Style>\n\n    <Style x:Key=\"ListSubTitleStyle\" TargetType=\"TextBlock\">\n        <Setter Property=\"FontWeight\" Value=\"Normal\"/>\n        <Setter Property=\"Opacity\" Value=\"0.6\"/>\n        <Setter Property=\"FontSize\" Value=\"{StaticResource MediumFontSize}\"/>\n        <Setter Property=\"TextTrimming\" Value=\"CharacterEllipsis\"/>\n        <Setter Property=\"TextWrapping\" Value=\"NoWrap\"/>\n    </Style>\n\n    <TextBlock x:Name=\"header\" Style=\"{ThemeResource TitleTextBlockStyle}\" Margin=\"24,40,0,0\">Ink Note</TextBlock>\n\n\n</ResourceDictionary>\n"
  },
  {
    "path": "src/BuildCast/Themes/Branded.xaml",
    "content": "﻿<!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:media=\"using:Windows.UI.Xaml.Media\">\n\n    <Style x:Key=\"HeaderTextBlockStyle\" TargetType=\"TextBlock\" BasedOn=\"{StaticResource HeaderTextBlockStyle}\">\n        <Setter Property=\"FontFamily\" Value=\"Arial\"/>\n    </Style>\n\n    <SolidColorBrush x:Key=\"ThemeControlForegroundBaseHighBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n    \n    <Color x:Key=\"BrandColor\">#FF046DD7</Color>\n\n    <SolidColorBrush x:Key=\"SystemControlForegroundAccentBrush\" Color=\"#FFFFFFFF\" />\n\n    <!--Override foreground color for this custom theme-->\n    <SolidColorBrush x:Key=\"MTCScrubberBarTextBrush\" Color=\"#FF101010\" />\n    \n    <SolidColorBrush x:Key=\"BrandColorBrush\" Color=\"{StaticResource BrandColor}\" />\n\n    <SolidColorBrush x:Key=\"HeaderColor\" Color=\"#10101010\" />\n\n    <media:AcrylicBrush x:Key=\"bgAcrylicBrushHome\"\n            BackgroundSource=\"HostBackdrop\"\n            FallbackColor=\"#FFCFCFCF\"/>\n\n    <media:AcrylicBrush x:Key=\"bgAcrylicBrush\" \n                        BackgroundSource=\"HostBackdrop\"\n                        Opacity=\"1.00\"\n                        TintColor=\"#FF101010\"\n                        TintOpacity=\"0.8\"\n                        FallbackColor=\"#FF101010\"                        \n                        />\n\n    <Style x:Key=\"HomePageBackground\" TargetType=\"Panel\">\n        <Setter Property=\"Background\" Value=\"{StaticResource bgAcrylicBrushHome}\"/>\n    </Style>\n    \n    <Style x:Key=\"PageBackground\" TargetType=\"Panel\">\n        <Setter Property=\"Background\" Value=\"{StaticResource bgAcrylicBrush}\"/>\n    </Style>\n\n    <media:AcrylicBrush x:Key=\"NavigationViewExpandedPaneBackground\" BackgroundSource=\"HostBackdrop\" TintColor=\"{StaticResource BrandColor}\" TintOpacity=\"0.6\" FallbackColor=\"#FF046DD7\" />\n    <media:AcrylicBrush x:Key=\"NavigationViewDefaultPaneBackground\" BackgroundSource=\"Backdrop\" TintColor=\"{StaticResource BrandColor}\" TintOpacity=\"0.6\" FallbackColor=\"#FF046DD7\" />\n</ResourceDictionary>\n"
  },
  {
    "path": "src/BuildCast/Themes/BrandedXbox.xaml",
    "content": "﻿<!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:media=\"using:Windows.UI.Xaml.Media\">\n\n    <Style x:Key=\"HeaderTextBlockStyle\" TargetType=\"TextBlock\" BasedOn=\"{StaticResource HeaderTextBlockStyle}\">\n        <Setter Property=\"FontFamily\" Value=\"Arial\"/>\n    </Style>\n\n    <Color x:Key=\"BrandColor\">#FF046DD7</Color>\n    \n    <SolidColorBrush x:Key=\"SystemControlForegroundAccentBrush\" Color=\"#FFFFFFFF\" />\n\n    <SolidColorBrush x:Key=\"HeaderColor\" Color=\"#10101010\" />\n\n    <media:AcrylicBrush x:Key=\"bgAcrylicBrushHome\"\n            BackgroundSource=\"Backdrop\"\n            FallbackColor=\"#FFCFCFCF\"/>\n\n    <media:AcrylicBrush x:Key=\"bgAcrylicBrush\" \n                        BackgroundSource=\"HostBackdrop\"\n                        Opacity=\"1.00\"\n                        TintColor=\"#FF101010\"\n                        TintOpacity=\"0.8\"\n                        FallbackColor=\"#FF101010\"                        \n                        />\n\n    <Style x:Key=\"HomePageBackground\" TargetType=\"Panel\">\n        <Setter Property=\"Background\" Value=\"{StaticResource bgAcrylicBrushHome}\"/>\n    </Style>\n    \n    <Style x:Key=\"PageBackground\" TargetType=\"Panel\">\n        <Setter Property=\"Background\" Value=\"{StaticResource bgAcrylicBrush}\"/>\n    </Style>\n\n    <media:AcrylicBrush x:Key=\"NavigationViewExpandedPaneBackground\" BackgroundSource=\"HostBackdrop\" TintColor=\"{StaticResource BrandColor}\" TintOpacity=\"0.6\" FallbackColor=\"#FF046DD7\" />\n    <media:AcrylicBrush x:Key=\"NavigationViewDefaultPaneBackground\" BackgroundSource=\"Backdrop\" TintColor=\"{StaticResource BrandColor}\" TintOpacity=\"0.6\" FallbackColor=\"#FF046DD7\" />\n</ResourceDictionary>\n"
  },
  {
    "path": "src/BuildCast/Themes/Generic.xaml",
    "content": "﻿<!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:BuildCast.Controls\">\n\n    <Style TargetType=\"local:Timeline\">\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"local:Timeline\">\n                    <Grid x:Name=\"trackContainer\" Background=\"Transparent\">\n                        <Rectangle HorizontalAlignment=\"Stretch\" Height=\"1\" Fill=\"#AA303030\"></Rectangle>\n                        <Canvas x:Name=\"trackCanvas\" Margin=\"0\" Background=\"Transparent\">\n                            <Border Canvas.Left=\"0\" Canvas.Top=\"0\" >\n                                <Grid x:Name=\"positionIndicator\" Height=\"45\">\n                                    <Rectangle StrokeThickness=\"0\" StrokeLineJoin=\"Round\" Stroke=\"{ThemeResource FocusVisualWhiteStrokeThemeBrush}\" Fill=\"{ThemeResource SystemControlForegroundAccentBrush}\" Width=\"45\" Height=\"25\"  />\n                                    <local:TimeControl Foreground=\"{StaticResource MTCScrubberBarTextBrush}\" x:Name=\"timeControl\" Width=\"45\" Height=\"40\" ShowAsPercentage=\"True\" Margin=\"0,0,0,12\" HorizontalAlignment=\"Right\" VerticalAlignment=\"Bottom\"></local:TimeControl>\n                                </Grid>\n                            </Border>\n                        </Canvas>\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n    <Style TargetType=\"local:TimeControl\">\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"local:TimeControl\">\n                    <Rectangle x:Name=\"DrawHolder\" Fill=\"Transparent\">\n\n                    </Rectangle>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n</ResourceDictionary>\n"
  },
  {
    "path": "src/BuildCast/Themes/Stock.xaml",
    "content": "﻿<!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:media=\"using:Windows.UI.Xaml.Media\">\n\n    <Style x:Key=\"PageBackground\" TargetType=\"Panel\" >\n        <Setter Property=\"Background\" Value=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\"/>\n    </Style>\n\n    <SolidColorBrush x:Key=\"MTCScrubberBarTextBrush\" Color=\"#FFFFFFFF\" />\n    \n    <SolidColorBrush x:Key=\"HeaderColor\" Color=\"{ThemeResource SystemAccentColor}\" />\n\n    <media:AcrylicBrush x:Key=\"bgAcrylicBrushHome\"\n            BackgroundSource=\"HostBackdrop\"\n            FallbackColor=\"#FFCFCFCF\"/>\n    \n    <Style x:Key=\"HomePageBackground\" TargetType=\"Panel\">\n        <Setter Property=\"Background\" Value=\"{StaticResource bgAcrylicBrushHome}\"/>\n    </Style>\n</ResourceDictionary>\n"
  },
  {
    "path": "src/BuildCast/ViewModels/DownloadsViewModel.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nnamespace BuildCast.ViewModels\n{\n    using System.ComponentModel;\n    using System.Linq;\n    using System.Threading.Tasks;\n    using BuildCast.DataModel;\n    using BuildCast.Services.Navigation;\n    using Microsoft.Toolkit.Uwp.Helpers;\n\n    public class DownloadsViewModel : INotifyPropertyChanged\n    {\n        private INavigationService _navigationService;\n\n        private IQueryable<EpisodeWithState> _downloads;\n\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public DownloadsViewModel(INavigationService navigationService)\n        {\n            _navigationService = navigationService;\n        }\n\n        public async void RemoveDownloadedEpisode(Episode episode)\n        {\n            if (episode != null)\n            {\n                await episode.DeleteDownloaded();\n                await LoadDownloads();\n            }\n        }\n\n        public async void ReloadDownloadList()\n        {\n            await LoadDownloads();\n        }\n\n        public IQueryable<EpisodeWithState> Downloads\n        {\n            get\n            {\n                return _downloads;\n            }\n\n            private set\n            {\n                if (value != _downloads)\n                {\n                    _downloads = value;\n                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Downloads)));\n                }\n            }\n        }\n\n        public async Task LoadDownloads()\n        {\n            await Task.Run(async () =>\n            {\n                using (var db = new LocalStorageContext())\n                {\n                    await DispatcherHelper.ExecuteOnUIThreadAsync(() =>\n                    {\n                        BuildDownloads(db);\n                    });\n                }\n            });\n        }\n\n        internal void NavigateToEpisode(Episode episode)\n        {\n            var ignored = _navigationService.NavigateToPlayerAsync(episode);\n        }\n\n        internal void NavigateToInkNote(InkNote ink)\n        {\n            var ignored = _navigationService.NavigateToInkNoteAsync(ink);\n        }\n\n        internal void NavigateToPlayerWithInk(InkNote ink)\n        {\n            var ignored = _navigationService.NavigateToPlayerAsync(ink);\n        }\n\n        private void BuildDownloads(LocalStorageContext db)\n        {\n            var results2 = from eps in db.EpisodeCache\n                           join state in db.PlaybackState\n                           on eps.Key equals state.EpisodeKey into myJoin\n                           from sub in myJoin.DefaultIfEmpty()\n                           where eps.IsDownloaded == true\n                           select new EpisodeWithState { Episode = eps, PlaybackState = sub ?? new EpisodePlaybackState() };\n\n            Downloads = results2;\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/ViewModels/EpisodeDetailsViewModel.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Threading.Tasks;\nusing BuildCast.DataModel;\nusing BuildCast.Helpers;\nusing BuildCast.Services.Navigation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace BuildCast.ViewModels\n{\n    public class EpisodeDetailsViewModel : INavigableTo\n    {\n        private INavigationService _navigationService;\n\n        public EpisodeDetailsViewModel(INavigationService navigationService)\n        {\n            _navigationService = navigationService;\n        }\n\n        public event EventHandler DownloadError;\n\n        public Episode CurrentEpisode { get; set; }\n\n        // These methods need to be moved into the Episode\n        public void PlayCurrentEpisode()\n        {\n            _navigationService.NavigateToPlayerAsync(CurrentEpisode);\n        }\n\n        public void FavoriteCurrentEpisode()\n        {\n            using (var db = new LocalStorageContext())\n            {\n                db.Favorites.Add(new Favorite(CurrentEpisode));\n                db.SaveChanges();\n            }\n        }\n\n        public void DownloadCurrentEpisode()\n        {\n            var task = BackgroundDownloadHelper.Download(new Uri(CurrentEpisode.Key));\n            task.ContinueWith(t => DownloadError?.Invoke(this, EventArgs.Empty), TaskContinuationOptions.OnlyOnFaulted);\n        }\n\n        public Task NavigatedTo(NavigationMode navigationMode, object parameter)\n        {\n            if (parameter is Episode episode)\n            {\n                CurrentEpisode = episode;\n            }\n\n            return Task.CompletedTask;\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/ViewModels/FavoritesViewModel.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nnamespace BuildCast.ViewModels\n{\n    using System.ComponentModel;\n    using System.Linq;\n    using System.Threading.Tasks;\n    using System.Windows.Input;\n    using BuildCast.DataModel;\n    using BuildCast.Helpers;\n    using BuildCast.Services.Navigation;\n    using Microsoft.Toolkit.Uwp.Helpers;\n\n    public class FavoritesViewModel : INotifyPropertyChanged\n    {\n        private INavigationService _navigationService;\n        private IQueryable<EpisodeWithState> _favorites;\n\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public FavoritesViewModel(INavigationService navigationService)\n        {\n            _navigationService = navigationService;\n        }\n\n        public void DownloadEpisode(Episode episode)\n        {\n            var task = BackgroundDownloadHelper.Download(new System.Uri(episode.Key));\n        }\n\n        public async void RemoveDownloadedEpisode(Episode episode)\n        {\n            if (episode != null)\n            {\n                await episode.DeleteDownloaded();\n                await LoadFavorites();\n            }\n        }\n\n        public async void RemoveFavoritedEpisode(Episode episode)\n        {\n            using (var db = new LocalStorageContext())\n            {\n                foreach (Favorite favEntity in db.Favorites)\n                {\n                    if (episode == null)\n                    {\n                        break;\n                    }\n\n                    if (favEntity.EpisodeId == episode.Id)\n                    {\n                        db.Favorites.Remove(favEntity);\n                        break;\n                    }\n                }\n\n                db.SaveChanges();\n            }\n\n            await LoadFavorites();\n        }\n\n        public async void Refresh()\n        {\n            await LoadFavorites();\n        }\n\n        public IQueryable<EpisodeWithState> Favorites\n        {\n            get\n            {\n                return _favorites;\n            }\n\n            private set\n            {\n                if (value != _favorites)\n                {\n                    _favorites = value;\n                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Favorites)));\n                }\n            }\n        }\n\n        public Task NavigateToEpisodeAsync(Episode episode) => _navigationService.NavigateToPlayerAsync(episode);\n\n        internal async Task LoadFavorites()\n        {\n            await Task.Run(async () =>\n            {\n                using (var db = new LocalStorageContext())\n                {\n                    await DispatcherHelper.ExecuteOnUIThreadAsync(() =>\n                    {\n                        BuildFavorites(db);\n                    });\n                }\n            });\n        }\n\n        private void BuildFavorites(LocalStorageContext db)\n        {\n            var results2 = from fav in db.Favorites\n                           join eps in db.EpisodeCache\n                           on fav.EpisodeId equals eps.Id\n                           join state in db.PlaybackState\n                           on eps.Key equals state.EpisodeKey into myJoin\n                           from sub in myJoin.DefaultIfEmpty()\n                           select new EpisodeWithState { Episode = eps, PlaybackState = sub ?? new EpisodePlaybackState() };\n\n            Favorites = results2;\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/ViewModels/FeedDetailsViewModel.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Collections.ObjectModel;\nusing System.ComponentModel;\nusing System.Threading.Tasks;\nusing BuildCast.DataModel;\nusing BuildCast.Helpers;\nusing BuildCast.Services.Navigation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace BuildCast.ViewModels\n{\n    public class FeedDetailsViewModel : INavigableTo, INotifyPropertyChanged\n    {\n        private INavigationService _navService;\n        private bool _loading;\n\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public Feed CurrentFeed { get; private set; }\n\n        public ObservableCollection<Episode> EpisodeData { get; set; }\n\n        public bool Loading\n        {\n            get => _loading;\n            set\n            {\n                if (_loading != value)\n                {\n                    _loading = value;\n                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Loading)));\n                }\n            }\n        }\n\n        public Episode PersistedEpisode { get; set; }\n\n        public FeedDetailsViewModel(INavigationService navigationService)\n        {\n            _navService = navigationService;\n\n            Loading = true;\n        }\n\n        public async Task NavigatedTo(NavigationMode navigationMode, object parameter)\n        {\n            Loading = true;\n\n            if (navigationMode != NavigationMode.Back && parameter is Feed feed)\n            {\n                CurrentFeed = feed;\n                EpisodeData = new ObservableCollection<Episode>(await feed.GetEpisodes());\n            }\n\n            if (navigationMode != NavigationMode.Back)\n            {\n                PersistedEpisode = null;\n            }\n\n            Loading = false;\n        }\n\n        public async Task<int> RefreshData()\n        {\n            var newEpisodes = await CurrentFeed.GetNewEpisodesAsync();\n            foreach (var episode in newEpisodes)\n            {\n                EpisodeData.Insert(0, episode);\n            }\n\n            return newEpisodes.Count;\n        }\n\n        public void GoToEpisodeDetails(Episode detailsItem)\n        {\n            PersistedEpisode = detailsItem;\n            _navService.NavigateToEpisodeAsync(detailsItem);\n        }\n\n        // TODO: Move these episode specific functions to the Episode themselves, pending further review.\n        public void PlayEpisode(Episode episode)\n        {\n            _navService.NavigateToPlayerAsync(episode);\n        }\n\n        public void FavoriteEpisode(Episode episode)\n        {\n            using (var db = new LocalStorageContext())\n            {\n                db.Favorites.Add(new Favorite(episode));\n                db.SaveChanges();\n            }\n        }\n\n        public void DownloadEpisode(Episode episode)\n        {\n            var task = BackgroundDownloadHelper.Download(new Uri(episode.Key));\n        }\n\n        public async Task RemoveTopThree()\n        {\n            await CurrentFeed.RemoveTopThreeItems();\n            EpisodeData.RemoveAt(0);\n            EpisodeData.RemoveAt(0);\n            EpisodeData.RemoveAt(0);\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/ViewModels/HomeViewModel.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing BuildCast.DataModel;\nusing BuildCast.Services.Navigation;\n\nnamespace BuildCast.ViewModels\n{\n    public class HomeViewModel\n    {\n        private INavigationService _navigationService;\n\n        public HomeViewModel(INavigationService navigationService)\n        {\n            _navigationService = navigationService;\n        }\n\n        public void NavigateToFeed(Feed selectedFeed)\n        {\n            var ignored = _navigationService.NavigateToFeedAsync(selectedFeed);\n        }\n\n        public void NavigateToEpisode(Episode episode)\n        {\n            var ignored = _navigationService.NavigateToEpisodeAsync(episode);\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/ViewModels/InkNoteViewModel.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing BuildCast.Services.Navigation;\n\nnamespace BuildCast.ViewModels\n{\n    public class InkNoteViewModel\n    {\n        private INavigationService _navigationService;\n\n        public InkNoteViewModel(INavigationService navigationService)\n        {\n            _navigationService = navigationService;\n        }\n\n        public void GoBack()\n        {\n            var ignored = _navigationService.GoBackAsync();\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/ViewModels/NotesViewModel.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nnamespace BuildCast.ViewModels\n{\n    using System;\n    using System.Collections.Generic;\n    using System.ComponentModel;\n    using System.Linq;\n    using System.Threading.Tasks;\n    using BuildCast.DataModel;\n    using BuildCast.Helpers;\n    using BuildCast.Services.Navigation;\n    using Microsoft.Toolkit.Uwp.Helpers;\n\n    public class NotesViewModel : INotifyPropertyChanged\n    {\n        private INavigationService _navigationService;\n        private IEnumerable<IGrouping<string, dynamic>> _notes;\n\n        public NotesViewModel(INavigationService navigationService)\n        {\n            _navigationService = navigationService;\n        }\n\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public IEnumerable<IGrouping<string, dynamic>> Notes\n        {\n            get\n            {\n                return _notes;\n            }\n\n            private set\n            {\n                if (value != _notes)\n                {\n                    _notes = value;\n                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Notes)));\n                }\n            }\n        }\n\n        public async void ReloadNotes()\n        {\n            await LoadNotes();\n        }\n\n        public async Task LoadNotes()\n        {\n            await Task.Run(async () =>\n            {\n                using (var db = new LocalStorageContext())\n                {\n                    await DispatcherHelper.ExecuteOnUIThreadAsync(() =>\n                    {\n                        BuildInkNotesForEpisode(db);\n                    });\n                }\n            });\n        }\n\n        public void NavigateToItem(object clickedItem)\n        {\n            if (clickedItem is EpisodeWithState)\n            {\n                NavigateToEpisode((clickedItem as EpisodeWithState).Episode);\n                return;\n            }\n\n            dynamic output = clickedItem;\n            Guid inkId = output.InkId;\n\n            switch (output.Type)\n            {\n                case \"Ink\":\n                    using (var db = new LocalStorageContext())\n                    {\n                        var ink = db.Memes.Where(m => m.Id == inkId).FirstOrDefault();\n                        NavigateToInkNote(ink);\n                    }\n\n                    break;\n                case \"Bookmark\":\n                    using (var db = new LocalStorageContext())\n                    {\n                        var ink = db.Memes.Where(m => m.Id == inkId).FirstOrDefault();\n                        NavigateToPlayerWithInk(ink);\n                    }\n\n                    break;\n            }\n        }\n\n        private void NavigateToEpisode(Episode episode)\n        {\n            var ignored = _navigationService.NavigateToPlayerAsync(episode);\n        }\n\n        private void NavigateToInkNote(InkNote ink)\n        {\n            var ignored = _navigationService.NavigateToInkNoteAsync(ink);\n        }\n\n        private void NavigateToPlayerWithInk(InkNote ink)\n        {\n            var ignored = _navigationService.NavigateToPlayerAsync(ink);\n        }\n\n        private void BuildInkNotesForEpisode(LocalStorageContext db)\n        {\n            var results = (from inks in db.Memes\n                           join eps in db.EpisodeCache\n                           on inks.EpisodeKey equals eps.Key\n                           select new { InkId = inks.Id, Title = eps.Title, Time = TimeSpan.FromMilliseconds(inks.Time), Type = inks.HasInk ? \"Ink\" : \"Bookmark\", Episode = eps, NoteText=inks.NoteText }).AsEnumerable().LambdaDistinct((a, b) => a.InkId == b.InkId).OrderBy(ob => ob.Time);\n\n            var projected = from c in results group c by c.Title;\n            IEnumerable<IGrouping<string, dynamic>> ps = projected;\n            Notes = ps;\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/ViewModels/PlayerViewModel.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nnamespace BuildCast.ViewModels\n{\n    using System;\n    using System.Collections.ObjectModel;\n    using System.ComponentModel;\n    using System.Threading.Tasks;\n    using BuildCast.DataModel;\n    using BuildCast.Services;\n    using BuildCast.Services.Navigation;\n    using Microsoft.Toolkit.Uwp.Helpers;\n    using Windows.UI.Xaml.Navigation;\n\n    public class PlayerViewModel : INavigableTo, INotifyPropertyChanged\n    {\n        private INavigationService _navigationService;\n        private IRemotePlayerService _remotePlayerService;\n        private IDisposable _subscriptionToken;\n\n        public PlayerViewModel(INavigationService navigationService, IRemotePlayerService remotePlayerService)\n        {\n            _navigationService = navigationService;\n            _remotePlayerService = remotePlayerService;\n        }\n\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public ObservableCollection<IRemoteSystemDescription> RemoteSystems { get; private set; }\n\n        ///TODO: ON NAVIGATE AWAY REMOVE THE SUBSCRIPTION TOKEN\n        public void GoToInkNote(InkNote note)\n        {\n            var ignored = _navigationService.NavigateToInkNoteAsync(note);\n        }\n\n        public async Task NavigatedTo(NavigationMode navigationMode, object parameter)\n        {\n            await _remotePlayerService.FindDevices();\n            RemoteSystems = new ObservableCollection<IRemoteSystemDescription>(_remotePlayerService.AvailableSystems);\n            _subscriptionToken = _remotePlayerService.SubscribeSystemsChange(new RemoteSystemsObserver(this));\n            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(RemoteSystems)));\n        }\n\n        public void RefreshRemoteSystems(object sender, EventArgs e)\n        {\n            var ignored = _remotePlayerService.FindDevices();\n        }\n\n        public async Task<IRemoteConnection> CreateRemoteControl(IRemoteSystemDescription remoteSystem)\n        {\n            IRemoteConnection remoteControl = await remoteSystem.PlayTo();\n\n            return remoteControl;\n        }\n\n        public class RemoteSystemsObserver : IAvailableSystemsObserver\n        {\n            private PlayerViewModel _viewModel;\n\n            public RemoteSystemsObserver(PlayerViewModel viewModel)\n            {\n                _viewModel = viewModel;\n            }\n\n            public void Add(IRemoteSystemDescription description)\n            {\n                var ignored = DispatcherHelper.ExecuteOnUIThreadAsync(() => _viewModel.RemoteSystems.Add(description));\n            }\n\n            public void Removed(IRemoteSystemDescription description)\n            {\n                var ignored = DispatcherHelper.ExecuteOnUIThreadAsync(() => _viewModel.RemoteSystems.Remove(description));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/ViewModels/SettingsViewModel.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nnamespace BuildCast.ViewModels\n{\n    using System.ComponentModel;\n    using System.Threading.Tasks;\n    using System.Windows.Input;\n    using BuildCast.Helpers;\n    using BuildCast.Services;\n    using Microsoft.Toolkit.Uwp.Helpers;\n    using Windows.ApplicationModel;\n    using Windows.Storage;\n\n    public class SettingsViewModel : INotifyPropertyChanged\n    {\n        private const string PopupModeKey = \"RequestedPopupMode\";\n        private ElementThemeExtended _elementTheme = ThemeSelectorService.Theme;\n        private PipModes _currentPipMode;\n        private string _versionDescription;\n        private ICommand _switchThemeCommand;\n        private ICommand _switchPipModeCommand;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"SettingsViewModel\"/> class.\n        /// </summary>\n        public SettingsViewModel()\n        {\n        }\n\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public PipModes CurrentPipMode\n        {\n            get\n            {\n                return _currentPipMode;\n            }\n\n            set\n            {\n                if (_currentPipMode != value)\n                {\n                    _currentPipMode = value;\n                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(CurrentPipMode)));\n                }\n            }\n        }\n\n        public static async Task<PipModes> GetCurrentMode()\n        {\n            return await GetCurrent();\n        }\n\n        public ElementThemeExtended ElementThemeExtended\n        {\n            get\n            {\n                return _elementTheme;\n            }\n\n            set\n            {\n                if (_elementTheme != value)\n                {\n                    _elementTheme = value;\n                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(VersionDescription)));\n                }\n            }\n        }\n\n        public string VersionDescription\n        {\n            get\n            {\n                return _versionDescription;\n            }\n\n            set\n            {\n                if (_versionDescription != value)\n                {\n                    _versionDescription = value;\n                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(VersionDescription)));\n                }\n            }\n        }\n\n        public ICommand SwitchThemeCommand\n        {\n            get\n            {\n                if (_switchThemeCommand == null)\n                {\n                    _switchThemeCommand = new RelayCommand<ElementThemeExtended>(\n                        async (param) =>\n                        {\n                            await ThemeSelectorService.SetThemeAsync(param);\n                        });\n                }\n\n                return _switchThemeCommand;\n            }\n        }\n\n        public ICommand SwitchPipModeCommand\n        {\n            get\n            {\n                if (_switchPipModeCommand == null)\n                {\n                    _switchPipModeCommand = new RelayCommand<PipModes>(\n                        async (param) =>\n                        {\n                            await SettingsViewModel.SetCurrent(param);\n                        });\n                }\n\n                return _switchPipModeCommand;\n            }\n        }\n\n        public void Initialize()\n        {\n            VersionDescription = GetVersionDescription();\n            var task = GetCurrent().ContinueWith(async (modes) =>\n            {\n                await DispatcherHelper.ExecuteOnUIThreadAsync(() =>\n                {\n                    CurrentPipMode = modes.Result;\n                });\n            });\n        }\n\n        public async Task NavigatedTo()\n        {\n            CurrentPipMode = await GetCurrentMode();\n        }\n\n        private static async Task SetCurrent(PipModes value)\n        {\n            await ApplicationData.Current.LocalSettings.SaveAsync<PipModes>(PopupModeKey, value);\n        }\n\n        private static async Task<PipModes> GetCurrent()\n        {\n            return await ApplicationData.Current.LocalSettings.ReadAsync<PipModes>(PopupModeKey);\n        }\n\n        private string GetVersionDescription()\n        {\n            var package = Package.Current;\n            var packageId = package.Id;\n            var version = packageId.Version;\n\n            return $\"{package.DisplayName} - {version.Major}.{version.Minor}.{version.Build}.{version.Revision}\";\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Views/Downloads.xaml",
    "content": "﻿<!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<Page\n    x:Class=\"BuildCast.Views.Downloads\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:controls=\"using:Windows.UI.Xaml.Controls\"\n    xmlns:media=\"using:Windows.UI.Xaml.Media\"\n    xmlns:datamodel=\"using:BuildCast.DataModel\"\n    xmlns:views=\"using:BuildCast.Views\"\n    mc:Ignorable=\"d\" Loaded=\"Downloads_Loaded\"\n    xmlns:helpers=\"using:BuildCast.Helpers\"\n    xmlns:animations=\"using:Microsoft.Toolkit.Uwp.UI.Animations\"\n    animations:Implicit.HideAnimations=\"{StaticResource DefaultPageHideAnimation}\">\n\n    <Page.Resources>\n        <helpers:DeleteEpisodeCommand x:Key=\"deleteEpisodeCommand\"/>\n\n        <SolidColorBrush x:Key=\"ButtonRevealBorderBrushPointerOver\" Color=\"Transparent\"/>\n        <SolidColorBrush x:Key=\"ButtonRevealBorderBrushPressed\" Color=\"Transparent\"/>\n    </Page.Resources>\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\" Margin=\"{StaticResource PageMargin}\">\n        <Grid.Resources>\n            <CollectionViewSource x:Name=\"groupInfoCVS\" IsSourceGrouped=\"false\" Source=\"{x:Bind ViewModel.Downloads, Mode=OneWay}\"/>\n            <Thickness x:Key=\"topPosition\">0,37,0,0</Thickness>\n            <Thickness x:Key=\"commandbarPosition\">0,30,0,0</Thickness>\n\n            <DataTemplate x:Key=\"downloadTemplate\" x:DataType=\"datamodel:EpisodeWithState\">\n\n                <SwipeControl x:Name=\"swipeContainer\">\n\n                    <SwipeControl.RightItems>\n                        <SwipeItems Mode=\"Execute\">\n                            <SwipeItem x:Name=\"swipeDelete\" Text=\"Delete\" Foreground=\"{ThemeResource SystemControlForegroundChromeWhiteBrush}\" \n                                       Background=\"{ThemeResource SystemAccentColor}\" Invoked=\"swipeDelete_Invoked\">\n                                <SwipeItem.IconSource>\n                                    <SymbolIconSource Symbol=\"Delete\"/>\n                                </SwipeItem.IconSource>\n                            </SwipeItem>\n                        </SwipeItems>\n                    </SwipeControl.RightItems>\n\n                    <Grid Background=\"{ThemeResource SystemControlTransparentBrush}\">\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"150\"></ColumnDefinition>\n                            <ColumnDefinition Width=\"*\" MinWidth=\"100\"></ColumnDefinition>\n                            <ColumnDefinition Width=\"80\"></ColumnDefinition>\n                            <ColumnDefinition Width=\"Auto\"></ColumnDefinition>\n                            <ColumnDefinition Width=\"Auto\"></ColumnDefinition>\n                        </Grid.ColumnDefinitions>\n\n                        <Image Grid.Column=\"0\" Width=\"150\" Height=\"90\" Margin=\"5\">\n                            <Image.Source>\n                                <BitmapImage UriSource=\"{x:Bind Episode.ItemThumbnail}\" DecodePixelWidth=\"160\" DecodePixelHeight=\"80\"/>\n                            </Image.Source>\n                        </Image>\n\n                        <Grid x:Name=\"PlayIcon\" Visibility=\"Collapsed\" Grid.Column=\"0\" CornerRadius=\"40\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Width=\"40\" Height=\"40\" Background=\"{ThemeResource SystemControlForegroundChromeBlackMediumLowBrush}\">\n                            <Viewbox HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Width=\"16\" Height=\"16\">\n                                <SymbolIcon Symbol=\"Play\" Foreground=\"{ThemeResource SystemControlForegroundChromeWhiteBrush}\"/>\n                            </Viewbox>\n                        </Grid>\n\n                        <ProgressBar Maximum=\"100\" Grid.Column=\"0\" Width=\"140\" Margin=\"0, 0, 0, 12\" VerticalAlignment=\"Bottom\" HorizontalAlignment=\"Center\" Value=\"{x:Bind PlaybackState.GetPercentDouble(Episode)}\"/>\n\n                        <Grid Grid.Column=\"1\" Margin=\"5\">\n                            <StackPanel Orientation=\"Vertical\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Left\">\n                                <TextBlock Text=\"{x:Bind Episode.Title}\" HorizontalTextAlignment=\"Left\" TextWrapping=\"WrapWholeWords\"/>\n                                <StackPanel Orientation=\"Horizontal\">\n                                    <TextBlock x:Name=\"dateTextBlock\" Text=\"{x:Bind Episode.FormatPublishDate(Episode)}\" Foreground=\"DarkGray\" Grid.Column=\"1\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Left\" HorizontalTextAlignment=\"Left\"/>\n                                    <TextBlock x:Name=\"itemspublishdata\" Margin=\"16,0,0,0\" Text=\"{x:Bind Episode.Duration}\" Foreground=\"DarkGray\" TextWrapping=\"NoWrap\" />\n                                </StackPanel>\n                            </StackPanel>\n                        </Grid>\n                        <TextBlock Visibility=\"{x:Bind Episode.IsDownloaded}\" Text=\"Episode Downloaded\" Margin=\"12, 0, 0, 0\" Foreground=\"{ThemeResource SystemControlForegroundBaseMediumBrush}\" Grid.Column=\"3\" HorizontalAlignment=\"Right\" VerticalAlignment=\"Center\"/>\n\n                        <Grid x:Name=\"SecondaryCommandPanel\" Grid.Column=\"4\" Width=\"48\" Margin=\"12, 0, 0, 0\">\n                            <Button x:Name=\"DeleteButton\" Visibility=\"Collapsed\" Width=\"48\" FontSize=\"16\" Height=\"48\" Style=\"{StaticResource ButtonRevealStyle}\" Background=\"{ThemeResource AppBarButtonRevealBackground}\" ToolTipService.ToolTip=\"Delete\">\n                                <Button.Content>\n                                    <Viewbox HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Width=\"16\" Height=\"16\" >\n                                        <SymbolIcon Symbol=\"Delete\"/>\n                                    </Viewbox>\n                                </Button.Content>\n                            </Button>\n                        </Grid>\n                    </Grid>\n                </SwipeControl>\n            </DataTemplate>\n        </Grid.Resources>\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n\n        <TextBlock\n                x:Name=\"title\"\n                Grid.Row=\"0\"\n                x:Uid=\"Downloads_Title\"\n                Style=\"{StaticResource PageTitleStyle}\" \n            animations:Implicit.ShowAnimations=\"{StaticResource DefaultTitleShowAnimations}\"\n            />\n        <ListView \n                x:Name=\"downloadListView\"\n                Grid.Row=\"1\"\n                ItemsSource=\"{Binding Source={StaticResource groupInfoCVS}}\"\n                ItemTemplate=\"{StaticResource downloadTemplate}\"\n                ChoosingItemContainer=\"DownloadListView_ChoosingItemContainer\"\n                ItemClick=\"DownloadListView_Tapped\"\n                IsItemClickEnabled=\"True\"\n                SelectionMode=\"None\"\n            Padding=\"0,0,24,0\"\n                >\n            <ListView.ItemContainerStyle>\n                <Style TargetType=\"ListViewItem\">\n                    <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"></Setter>\n                    <Setter Property=\"ContextFlyout\">\n                        <Setter.Value>\n                            <MenuFlyout Opening=\"MenuFlyout_Opening\">\n                                <MenuFlyoutItem Text=\"Delete\" Icon=\"Delete\" Click=\"MenuFlyoutItem_Click\"/>\n                            </MenuFlyout>\n                        </Setter.Value>\n                    </Setter>\n                </Style>\n            </ListView.ItemContainerStyle>\n\n            <ListView.GroupStyle>\n                <GroupStyle>\n                    <GroupStyle.HeaderTemplate>\n                        <DataTemplate>\n                            <TextBlock Text=\"{Binding Key}\"/>\n                        </DataTemplate>\n                    </GroupStyle.HeaderTemplate>\n                </GroupStyle>\n            </ListView.GroupStyle>\n        </ListView>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "src/BuildCast/Views/Downloads.xaml.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing BuildCast.DataModel;\nusing BuildCast.Helpers;\nusing BuildCast.Services.Navigation;\nusing BuildCast.ViewModels;\nusing System;\nusing System.Diagnostics;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Hosting;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace BuildCast.Views\n{\n    public sealed partial class Downloads : Page, IPageWithViewModel<DownloadsViewModel>\n    {\n        private UIElement cachedSecondaryPlayIcon = null;\n        private UIElement cachedDeleteButtonIcon = null;\n\n        public DownloadsViewModel ViewModel { get; set; }\n\n        public Downloads()\n        {\n            this.InitializeComponent();\n        }\n\n        public void UpdateBindings()\n        {\n            // Bindings?.Update();\n        }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            SetupMenuFlyout();\n            Canvas.SetZIndex(this, 0);\n        }\n\n        protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)\n        {\n            base.OnNavigatingFrom(e);\n            Canvas.SetZIndex(this, 1);\n        }\n\n        private async void Downloads_Loaded(object sender, RoutedEventArgs e)\n        {\n            await ViewModel.LoadDownloads();\n        }\n\n        private void MenuFlyout_Opening(object sender, object e)\n        {\n            MenuFlyout senderAsMenuFlyout = sender as MenuFlyout;\n\n            foreach (object menuFlyoutItem in senderAsMenuFlyout.Items)\n            {\n                if (menuFlyoutItem.GetType() == typeof(MenuFlyoutItem))\n                {\n                    // Associate the particular FeedItem with the menu flyout (so the MenuFlyoutItem knows which FeedItem to act upon)\n                    ListViewItem itemContainer = senderAsMenuFlyout.Target as ListViewItem;\n\n                    var feedItem = downloadListView.ItemFromContainer(itemContainer) as EpisodeWithState;\n\n                    (menuFlyoutItem as MenuFlyoutItem).CommandParameter = feedItem.Episode;\n                }\n            }\n        }\n\n        private void DownloadListView_Tapped(object sender, ItemClickEventArgs e)\n        {\n            if (e.ClickedItem is EpisodeWithState)\n            {\n                ViewModel.NavigateToEpisode((e.ClickedItem as EpisodeWithState).Episode);\n                return;\n            }\n        }\n\n        private void SetupMenuFlyout()\n        {\n            // Associate the menu with the item requesting it.\n            MenuFlyout menu = new MenuFlyout();\n            menu.Opening += MenuFlyout_Opening;\n\n            // Add click handlers to the menu flyout items.\n            MenuFlyoutItem item = new MenuFlyoutItem { Text = \"Remove item\", Icon = new SymbolIcon { Symbol = Symbol.Delete } };\n            menu.Items.Add(item);\n        }\n\n        private void Grid_PointerEntered(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)\n        {\n            Grid originGrid = (Grid)sender;\n\n            Grid hoverGrid = (Grid)originGrid.Children[originGrid.Children.Count - 1];\n            hoverGrid.Visibility = Visibility.Visible;\n        }\n\n        private void Grid_PointerExited(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)\n        {\n            Grid originGrid = (Grid)sender;\n\n            Grid hoverGrid = (Grid)originGrid.Children[originGrid.Children.Count - 1];\n            hoverGrid.Visibility = Visibility.Collapsed;\n        }\n\n        private void DeleteDownload(Episode episode) => ViewModel.RemoveDownloadedEpisode(episode);\n\n        private void RefreshList() => ViewModel.ReloadDownloadList();\n\n        private void AppBarButton_Click(object sender, RoutedEventArgs e)\n        {\n            EpisodeWithState episodePointer = (EpisodeWithState)(sender as AppBarButton).DataContext;\n            DeleteDownload(episodePointer.Episode);\n        }\n\n        private void swipeDelete_Invoked(SwipeItem sender, SwipeItemInvokedEventArgs args)\n        {\n            if (args.SwipeControl.DataContext is EpisodeWithState target)\n            {\n                if (target.Episode != null)\n                {\n                    DeleteDownload(target.Episode);\n                }\n            }\n        }\n\n        private void MenuFlyoutItem_Click(object sender, RoutedEventArgs e)\n        {\n            DeleteDownload((sender as MenuFlyoutItem).CommandParameter as Episode);\n            RefreshList();\n        }\n\n        private void ContainerItem_PointerEntered(object sender, PointerRoutedEventArgs e)\n        {\n            // Only show the hover buttons when the mouse or pen enters the item.\n            if (e.Pointer.PointerDeviceType != Windows.Devices.Input.PointerDeviceType.Touch)\n            {\n                try\n                {\n                    var item = sender as ListViewItem;\n                    var secondaryPlayIcon = item.GetVisualChildByName<Grid>(\"PlayIcon\");\n\n                    var secondaryCommandPanel = item.GetVisualChildByName<Grid>(\"SecondaryCommandPanel\");\n                    var deleteIconButton = secondaryCommandPanel.GetVisualChildByName<Button>(\"DeleteButton\");\n\n                    secondaryPlayIcon.Visibility = Visibility.Visible;\n                    deleteIconButton.Visibility = Visibility.Visible;\n\n                    cachedSecondaryPlayIcon = secondaryPlayIcon;\n                    cachedDeleteButtonIcon = deleteIconButton;\n                }\n                catch (Exception ex)\n                {\n                    Debug.WriteLine(\"Catastrophic error: \" + ex.Message);\n                }\n            }\n        }\n\n        private void ContainerItem_PointerExited(object sender, PointerRoutedEventArgs e)\n        {\n            if (e.Pointer.PointerDeviceType != Windows.Devices.Input.PointerDeviceType.Touch && cachedSecondaryPlayIcon != null)\n            {\n                cachedDeleteButtonIcon.Visibility = Visibility.Collapsed;\n                cachedDeleteButtonIcon = null;\n\n                cachedSecondaryPlayIcon.Visibility = Visibility.Collapsed;\n                cachedSecondaryPlayIcon = null;\n            }\n        }\n\n        private void DownloadListView_ChoosingItemContainer(ListViewBase sender, ChoosingItemContainerEventArgs args)\n        {\n            // Do we already have an ItemContainer? If so, we're done here.\n            if (args.ItemContainer != null)\n            {\n                return;\n            }\n\n            ListViewItem containerItem = new ListViewItem();\n\n            // Show hover buttons\n            containerItem.PointerEntered += ContainerItem_PointerEntered;\n            containerItem.PointerExited += ContainerItem_PointerExited;\n\n            args.ItemContainer = containerItem;\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Views/EpisodeDetails.xaml",
    "content": "﻿<!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<Page\n    x:Class=\"BuildCast.Views.EpisodeDetails\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:localfunc=\"using:BuildCast.Views\"\n    xmlns:animations=\"using:Microsoft.Toolkit.Uwp.UI.Animations\"\n    xmlns:helpers=\"using:BuildCast.Helpers\"\n    mc:Ignorable=\"d\"\n    Loaded=\"EpisodeDetails_Loaded\"\n    animations:Implicit.HideAnimations=\"{StaticResource DefaultPageHideAnimation}\"\n    >\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\" x:Name=\"root\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"415\" x:Name=\"TopBorderRow\"/>\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n        <Grid Grid.Row=\"0\" Background=\"LightSlateGray\" x:Name=\"TopBorder\" \n              animations:Implicit.ShowAnimations=\"{StaticResource DefaultShowAnimations}\"\n              animations:Implicit.HideAnimations=\"{StaticResource DefaultHideAnimations}\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\"/>\n                <ColumnDefinition Width=\"*\"/>\n            </Grid.ColumnDefinitions>\n\n            <Image x:Name=\"headerbackground\" \n                   VerticalAlignment=\"Stretch\" \n                   HorizontalAlignment=\"Stretch\" \n                   Stretch=\"Fill\"\n                   Grid.ColumnSpan=\"2\" >\n                <Image.Source>\n                    <BitmapImage UriSource=\"{x:Bind ViewModel.CurrentEpisode.Feed.ImageUri}\" />\n                </Image.Source>\n            </Image>\n            <Rectangle Fill=\"{StaticResource InApp}\" Grid.ColumnSpan=\"2\" />\n\n            <Image x:Name=\"feedItemImage\" Height=\"300\" Margin=\"25,75,24,40\" \n                   VerticalAlignment=\"Top\" \n                   HorizontalAlignment=\"Left\" ImageOpened=\"FeedItemImage_ImageOpened\"\n                   animations:Connected.Key=\"FeedItemImage\">\n                <Image.Source>\n                    <BitmapImage UriSource=\"{x:Bind ViewModel.CurrentEpisode.ItemThumbnail}\" />\n                </Image.Source>\n            </Image>\n\n            <Grid x:Name=\"DescriptionRoot\" Grid.Column=\"1\" Margin=\"0,80,50,0\" Height=\"200\" VerticalAlignment=\"Top\" animations:Connected.AnchorElement=\"{x:Bind feedItemImage}\">\n                <Grid.RowDefinitions>\n                    <RowDefinition />\n                    <RowDefinition />\n                    <RowDefinition />\n                </Grid.RowDefinitions>\n                <StackPanel Grid.Row=\"0\">\n                    <TextBlock x:Name=\"episodetitle\" Foreground=\"White\" FontSize=\"16\" FontWeight=\"Bold\" Text=\"{x:Bind Path=ViewModel.CurrentEpisode.Title}\" animations:Connected.Key=\"feedtitle\" />\n                    <TextBlock x:Name=\"episodesubtitle\" Foreground=\"White\" FontSize=\"16\" Text=\"{x:Bind Path=ViewModel.CurrentEpisode.Subtitle}\" />\n                </StackPanel>\n                <StackPanel Grid.Row=\"1\">\n                    <TextBlock x:Name=\"episodepublishdate\" Foreground=\"White\" FontSize=\"16\" Text=\"{x:Bind localfunc:NavigationRoot.ShortDate(ViewModel.CurrentEpisode.PublishDate.Date)}\" />\n                    <TextBlock x:Name=\"episodeduration\" Foreground=\"White\" FontSize=\"16\" Text=\"{x:Bind Path=ViewModel.CurrentEpisode.Duration}\" />\n                </StackPanel>\n                <CommandBar Grid.Row=\"2\" Background=\"Transparent\" RequestedTheme=\"Dark\" HorizontalAlignment=\"Left\" OverflowButtonVisibility=\"Collapsed\">\n                    <AppBarButton x:Name=\"playepisode\" Icon=\"Play\" Label=\"Play\" AccessKey=\"P\" Click=\"{x:Bind ViewModel.PlayCurrentEpisode}\" XYFocusRight=\"{x:Bind downloadepisode}\"/>\n                    <AppBarButton x:Name=\"downloadepisode\" Icon=\"Download\" Label=\"Download\" AccessKey=\"D\" Click=\"{x:Bind ViewModel.DownloadCurrentEpisode}\" XYFocusLeft=\"{x:Bind playepisode}\" XYFocusRight=\"{x:Bind favoriteepisode}\" />\n                    <AppBarButton x:Name=\"favoriteepisode\" Icon=\"OutlineStar\" Label=\"Favorite\" AccessKey=\"F\" Click=\"{x:Bind ViewModel.FavoriteCurrentEpisode}\" XYFocusLeft=\"{x:Bind downloadepisode}\" />\n                </CommandBar>\n            </Grid>\n        </Grid>\n\n        <RelativePanel x:Name=\"ListContent\" Grid.Row=\"1\" Margin=\"{ThemeResource ContentDialogPadding}\" HorizontalAlignment=\"Stretch\"\n                       animations:Implicit.HideAnimations=\"{StaticResource DefaultListHideAnimations}\"\n                       animations:Implicit.ShowAnimations=\"{StaticResource DefaultListShowAnimations}\">\n            <TextBlock Style=\"{ThemeResource SubheaderTextBlockStyle}\" Name=\"lowerepisodetitle\" Text=\"{x:Bind Path=ViewModel.CurrentEpisode.Title}\" />\n            <TextBlock Style=\"{ThemeResource TitleTextBlockStyle}\" Name=\"lowerepisodesubtitle\" Text=\"{x:Bind Path=ViewModel.CurrentEpisode.Subtitle}\" RelativePanel.Below=\"lowerepisodetitle\" />\n            <ScrollViewer x:Name=\"webScroller\"\n                          RelativePanel.Below=\"lowerepisodesubtitle\"\n                          RelativePanel.AlignLeftWithPanel=\"True\"\n                          RelativePanel.AlignRightWithPanel=\"True\"\n                          RelativePanel.AlignBottomWithPanel=\"True\"\n                          VerticalScrollMode=\"Enabled\"\n                          VerticalScrollBarVisibility=\"Auto\" >\n                <WebView x:Name=\"descriptionweb\" \n                     DefaultBackgroundColor=\"Transparent\" Height=\"2000\" />\n            </ScrollViewer>\n        </RelativePanel>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "src/BuildCast/Views/EpisodeDetails.xaml.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing BuildCast.Helpers;\nusing BuildCast.Services;\nusing BuildCast.Services.Navigation;\nusing BuildCast.ViewModels;\nusing Microsoft.Toolkit.Uwp.Helpers;\nusing Windows.System.Profile;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Hosting;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace BuildCast.Views\n{\n    public sealed partial class EpisodeDetails : Page, IPageWithViewModel<EpisodeDetailsViewModel>\n    {\n        public EpisodeDetails()\n        {\n            this.InitializeComponent();\n\n            // Custom Image sizing for Xbox\n            if (AnalyticsInfo.VersionInfo.DeviceFamily == \"Windows.Xbox\")\n            {\n                feedItemImage.Height = 200;\n                TopBorderRow.Height = new GridLength(300);\n            }\n        }\n\n        public EpisodeDetailsViewModel ViewModel { get; set; }\n\n        public void UpdateBindings()\n        {\n            Bindings.Update();\n            descriptionweb.DOMContentLoaded += Descriptionweb_DOMContentLoaded;\n            descriptionweb.NavigateToString(ViewModel.CurrentEpisode.Description);\n           // feedItemImage.Opacity = 0;\n\n            ViewModel.DownloadError += ViewModel_DownloadError;\n        }\n\n        private void ViewModel_DownloadError(object sender, EventArgs e)\n        {\n            var dispatcherTask = DispatcherHelper.ExecuteOnUIThreadAsync(() =>\n            {\n                var md = new Windows.UI.Popups.MessageDialog(\"Error in download\");\n                var showTask = md.ShowAsync();\n            });\n        }\n\n        private void EpisodeDetails_Loaded(object sender, RoutedEventArgs e)\n        {\n            // Give focus to play button upon page load\n            playepisode.Focus(FocusState.Programmatic);\n        }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            base.OnNavigatedTo(e);\n            Canvas.SetZIndex(this, 0);\n        }\n\n        protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)\n        {\n            base.OnNavigatingFrom(e);\n            if (ViewModel != null)\n            {\n                ViewModel.DownloadError -= ViewModel_DownloadError;\n            }\n\n            Canvas.SetZIndex(this, 1);\n        }\n\n        private async void Descriptionweb_DOMContentLoaded(WebView sender, WebViewDOMContentLoadedEventArgs args)\n        {\n            string webForegroundColor = string.Empty;\n\n            webForegroundColor = ThemeSelectorService.GetSystemControlForegroundColorForThemeHex();\n\n            try\n            {\n                await descriptionweb.InvokeScriptAsync(\"eval\", new string[] { $\"document.body.style.color='{webForegroundColor}'; document.body.style.fontSize='16px'; document.body.style.fontFamily='Segoe UI'; document.getElementsByTagName('img')[0].style.display = 'none';\" });\n            }\n            catch (Exception)\n            {\n            }\n        }\n\n        private void FeedItemImage_ImageOpened(object sender, RoutedEventArgs e)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Views/Favorites.xaml",
    "content": "﻿    <!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<Page\n    x:Class=\"BuildCast.Views.Favorites\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:controls=\"using:Windows.UI.Xaml.Controls\"\n    xmlns:media=\"using:Windows.UI.Xaml.Media\"\n    xmlns:datamodel=\"using:BuildCast.DataModel\"\n    xmlns:views=\"using:BuildCast.Views\"\n    mc:Ignorable=\"d\" Loaded=\"Favorites_Loaded\"\n    xmlns:helpers=\"using:BuildCast.Helpers\"\n    xmlns:animations=\"using:Microsoft.Toolkit.Uwp.UI.Animations\"\n    animations:Implicit.HideAnimations=\"{StaticResource DefaultPageHideAnimation}\"\n    >\n    <Page.Resources>\n        <helpers:DownloadCommand x:Key=\"downloadCommand\"/>\n        <helpers:UnfavoriteCommand x:Key=\"unfavoriteCommand\"/>\n\n        <SolidColorBrush x:Key=\"ButtonRevealBorderBrushPointerOver\" Color=\"Transparent\"/>\n        <SolidColorBrush x:Key=\"ButtonRevealBorderBrushPressed\" Color=\"Transparent\"/>\n        <SolidColorBrush x:Key=\"ButtonBorderBrushPointerOver\" Color=\"Transparent\"/>\n        <SolidColorBrush x:Key=\"ButtonBorderBrushPressed\" Color=\"Transparent\"/>\n    </Page.Resources>\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\" Margin=\"{StaticResource PageMargin}\">\n        <Grid.Resources>\n            <CollectionViewSource x:Name=\"groupInfoCVS\" IsSourceGrouped=\"false\" Source=\"{x:Bind ViewModel.Favorites, Mode=OneWay}\"/>\n            <Thickness x:Key=\"topPosition\">0,37,0,0</Thickness>\n            <Thickness x:Key=\"commandbarPosition\">0,30,0,0</Thickness>\n            <DataTemplate x:Key=\"favoriteTemplate\" x:DataType=\"datamodel:EpisodeWithState\">\n\n                <SwipeControl x:Name=\"swipeContainer\">\n\n                    <SwipeControl.RightItems>\n                        <SwipeItems Mode=\"Reveal\">\n                            <SwipeItem x:Name=\"swipeDownload\" Text=\"Download\" Foreground=\"{ThemeResource SystemControlForegroundChromeWhiteBrush}\" \n                                       Background=\"{ThemeResource SystemControlBackgroundBaseMediumBrush}\" Invoked=\"SwipeDownload_Invoked\">\n                                <SwipeItem.IconSource>\n                                    <SymbolIconSource Symbol=\"Download\"/>\n                                </SwipeItem.IconSource>\n                            </SwipeItem>\n                            <SwipeItem x:Name=\"swipeUnfavorite\" Text=\"Unfavorite\" Foreground=\"{ThemeResource SystemControlForegroundChromeWhiteBrush}\" \n                                       Background=\"{ThemeResource SystemAccentColor}\" Invoked=\"SwipeUnfavorite_Invoked\">\n                                <SwipeItem.IconSource>\n                                    <SymbolIconSource Symbol=\"UnFavorite\"/>\n                                </SwipeItem.IconSource>\n                            </SwipeItem>\n                        </SwipeItems>\n                    </SwipeControl.RightItems>\n\n                    <Grid Background=\"{ThemeResource SystemControlTransparentBrush}\">\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"150\"></ColumnDefinition>\n                            <ColumnDefinition Width=\"*\" MinWidth=\"100\"></ColumnDefinition>\n                            <ColumnDefinition Width=\"80\"></ColumnDefinition>\n                            <ColumnDefinition Width=\"100\"></ColumnDefinition>\n                            <ColumnDefinition Width=\"132\"></ColumnDefinition>\n                        </Grid.ColumnDefinitions>\n\n                        <Image Grid.Column=\"0\" Width=\"150\" Height=\"90\" Margin=\"5\">\n                            <Image.Source>\n                                <BitmapImage UriSource=\"{x:Bind Episode.ItemThumbnail}\" DecodePixelWidth=\"160\" DecodePixelHeight=\"80\"/>\n                            </Image.Source>\n                        </Image>\n\n                        <Grid x:Name=\"PlayIcon\" Visibility=\"Collapsed\" Grid.Column=\"0\" CornerRadius=\"40\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Width=\"40\" Height=\"40\" Background=\"{ThemeResource SystemControlForegroundChromeBlackMediumLowBrush}\">\n                            <Viewbox HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Width=\"16\" Height=\"16\">\n                                <SymbolIcon Symbol=\"Play\" Foreground=\"{ThemeResource SystemControlForegroundChromeWhiteBrush}\"/>\n                            </Viewbox>\n                        </Grid>\n\n                        <ProgressBar Maximum=\"100\" Grid.Column=\"0\" Width=\"140\" Margin=\"0, 0, 0, 12\" VerticalAlignment=\"Bottom\" HorizontalAlignment=\"Center\" Value=\"{x:Bind PlaybackState.GetPercentDouble(Episode)}\"/>\n\n                        <Grid Grid.Column=\"1\" Margin=\"5\">\n                            <StackPanel Orientation=\"Vertical\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Left\">\n                                <TextBlock Text=\"{x:Bind Episode.Title}\" TextWrapping=\"WrapWholeWords\" HorizontalTextAlignment=\"Left\"/>\n                                <StackPanel Orientation=\"Horizontal\">\n                                    <TextBlock x:Name=\"dateTextBlock\" Text=\"{x:Bind Episode.FormatPublishDate(Episode)}\" Foreground=\"DarkGray\" Grid.Column=\"1\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Left\" HorizontalTextAlignment=\"Left\"/>\n                                    <TextBlock x:Name=\"itemspublishdata\" Margin=\"16,0,0,0\" Text=\"{x:Bind Episode.Duration}\" Foreground=\"DarkGray\" TextWrapping=\"NoWrap\" />\n                                </StackPanel>\n                            </StackPanel>\n                        </Grid>\n                        <TextBlock Visibility=\"{x:Bind Episode.IsDownloaded}\" Text=\"Episode Downloaded\" Margin=\"12, 0, 0, 0\" Foreground=\"{ThemeResource SystemControlForegroundBaseMediumBrush}\" Grid.Column=\"3\" HorizontalAlignment=\"Right\" VerticalAlignment=\"Center\"/>\n                        <!--<TextBlock Text=\"{x:Bind  PlaybackState.GetPercent(Episode)}\" FontSize=\"18\" Grid.Column=\"3\" TextAlignment=\"Center\" VerticalAlignment=\"Center\"/>-->\n\n                        <StackPanel x:Name=\"SecondaryCommandPanel\" Orientation=\"Horizontal\" Grid.Column=\"4\">\n                            <StackPanel.Resources>\n                                <ResourceDictionary>\n                                    <ResourceDictionary.ThemeDictionaries>\n                                        <ResourceDictionary x:Key=\"Light\">\n                                            <SolidColorBrush x:Key=\"ButtonRevealBackgroundPressed\" Color=\"DarkGray\" />\n                                        </ResourceDictionary>\n                                        <ResourceDictionary x:Key=\"Dark\">\n                                            <SolidColorBrush x:Key=\"ButtonRevealBackgroundPressed\" Color=\"DarkGray\" />\n                                        </ResourceDictionary>\n                                    </ResourceDictionary.ThemeDictionaries>\n                                </ResourceDictionary>\n                            </StackPanel.Resources>\n\n                            <!--Delete button-->\n                            <Grid x:Name=\"ButtonHolder\" Width=\"48\" Height=\"48\" Margin=\"12, 0, 0, 0\">\n                                <Button x:Name=\"DeleteButton\" Click=\"DeleteButton_Click\" Visibility=\"Collapsed\" Width=\"48\" FontSize=\"16\" Height=\"48\" Style=\"{StaticResource ButtonRevealStyle}\" Background=\"{ThemeResource AppBarButtonRevealBackground}\" ToolTipService.ToolTip=\"Delete\">\n                                    <Button.Content>\n                                        <Viewbox HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Width=\"16\" Height=\"16\" >\n                                            <SymbolIcon Symbol=\"Delete\"/>\n                                        </Viewbox>\n                                    </Button.Content>\n                                </Button>\n                                <Button x:Name=\"DownloadButton\" Click=\"DownloadButton_Click\" Visibility=\"Collapsed\" Width=\"48\" FontSize=\"16\" Height=\"48\" Style=\"{StaticResource ButtonRevealStyle}\" Background=\"{ThemeResource AppBarButtonRevealBackground}\" ToolTipService.ToolTip=\"Download\">\n                                    <Button.Content>\n                                        <Viewbox HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Width=\"16\" Height=\"16\" >\n                                            <SymbolIcon Symbol=\"Download\"/>\n                                        </Viewbox>\n                                    </Button.Content>\n                                </Button>\n                            </Grid>\n\n                            <!--Favorite button-->\n                            <Button x:Name=\"UnfaveButton\" Click=\"UnfaveButton_Click\" Width=\"48\" FontSize=\"16\" Height=\"48\" Style=\"{StaticResource ButtonRevealStyle}\" Background=\"{ThemeResource AppBarButtonRevealBackground}\" Margin=\"12, 0, 0, 0\" ToolTipService.ToolTip=\"Remove Favorite\">\n                                <Button.Content>\n                                    <Viewbox HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Width=\"16\" Height=\"16\">\n                                        <SymbolIcon x:Name=\"iconSymbol\" Symbol=\"Favorite\"/>\n                                    </Viewbox>\n                                </Button.Content>\n                            </Button>                            \n                        </StackPanel>\n                    </Grid>\n                </SwipeControl>\n            </DataTemplate>\n        </Grid.Resources>\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n        \n        <TextBlock\n                x:Name=\"title\"\n                Grid.Row=\"0\"\n                x:Uid=\"Favorites_Title\"\n                Style=\"{StaticResource PageTitleStyle}\"\n            animations:Implicit.ShowAnimations=\"{StaticResource DefaultTitleShowAnimations}\"/>\n\n        <ListView \n                Grid.Row=\"1\"\n                x:Name=\"favoriteListView\"\n                ItemTemplate=\"{StaticResource favoriteTemplate}\"\n                ItemsSource=\"{Binding Source={StaticResource groupInfoCVS}}\"\n                ChoosingItemContainer=\"FavoriteListView_ChoosingItemContainer\"\n                ItemClick=\"FavoriteListView_Tapped\"\n                IsItemClickEnabled=\"True\"\n                SelectionMode=\"None\"\n                animations:Implicit.HideAnimations=\"{StaticResource DefaultListHideAnimations}\"\n                animations:Implicit.ShowAnimations=\"{StaticResource DefaultListShowAnimations}\"\n                Padding=\"0,0,24,0\"\n                >\n            <ListView.ItemContainerStyle>\n                <Style TargetType=\"ListViewItem\">\n                    <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"></Setter>\n                    <Setter Property=\"ContextFlyout\">\n                        <Setter.Value>\n                            <MenuFlyout Opening=\"MenuFlyout_Opening\">\n                                <MenuFlyoutItem Text=\"Download\" Icon=\"Download\" Command=\"{StaticResource downloadCommand}\"/>\n                                <MenuFlyoutItem Text=\"Unfavorite\" Icon=\"Unfavorite\" Command=\"{StaticResource unfavoriteCommand}\" Click=\"MenuFlyoutItem_Click\"/>\n                            </MenuFlyout>\n                        </Setter.Value>\n                    </Setter>\n                </Style>\n            </ListView.ItemContainerStyle>\n            \n            <ListView.GroupStyle>\n                <GroupStyle>\n                    <GroupStyle.HeaderTemplate>\n                        <DataTemplate>\n                            <TextBlock Text=\"{Binding Key}\"/>\n                        </DataTemplate>\n                    </GroupStyle.HeaderTemplate>\n                </GroupStyle>\n            </ListView.GroupStyle>\n        </ListView>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "src/BuildCast/Views/Favorites.xaml.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing BuildCast.DataModel;\nusing BuildCast.Helpers;\nusing BuildCast.Services.Navigation;\nusing BuildCast.ViewModels;\nusing System;\nusing System.Diagnostics;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Hosting;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace BuildCast.Views\n{\n    public sealed partial class Favorites : Page, IPageWithViewModel<FavoritesViewModel>\n    {\n        private UIElement cachedSecondaryCommandChildPanel = null;\n        private UIElement cachedSecondaryPlayIcon = null;\n\n        public Favorites()\n        {\n            this.InitializeComponent();\n\n            //lstFilter.SelectedItem = 0;\n        }\n\n        public FavoritesViewModel ViewModel { get; set; }\n\n        public void UpdateBindings()\n        {\n            //Bindings?.Update();\n        }\n\n        protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)\n        {\n            base.OnNavigatingFrom(e);\n            Canvas.SetZIndex(this, 1);\n        }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            SetupMenuFlyout();\n            Canvas.SetZIndex(this, 0);\n        }\n\n        private async void Favorites_Loaded(object sender, RoutedEventArgs e)\n        {\n            await ViewModel.LoadFavorites();\n        }\n\n        private void MenuFlyout_Opening(object sender, object e)\n        {\n            MenuFlyout senderAsMenuFlyout = sender as MenuFlyout;\n\n            foreach (object menuFlyoutItem in senderAsMenuFlyout.Items)\n            {\n                if (menuFlyoutItem.GetType() == typeof(MenuFlyoutItem))\n                {\n                    // Associate the particular FeedItem with the menu flyout (so the MenuFlyoutItem knows which FeedItem to act upon)\n                    ListViewItem itemContainer = senderAsMenuFlyout.Target as ListViewItem;\n\n                    var data = favoriteListView.ItemFromContainer(itemContainer);\n\n                    (menuFlyoutItem as MenuFlyoutItem).CommandParameter = data;\n                }\n            }\n        }\n\n        private void SetupMenuFlyout()\n        {\n            // Associate the menu with the item requesting it.\n            MenuFlyout menu = new MenuFlyout();\n            menu.Opening += MenuFlyout_Opening;\n\n            // Add click handlers to the menu flyout items.\n            MenuFlyoutItem item = new MenuFlyoutItem { Text = \"Remove item\", Icon = new SymbolIcon { Symbol = Symbol.Delete } };\n            menu.Items.Add(item);\n        }\n\n        private void FavoriteListView_Tapped(object sender, ItemClickEventArgs e)\n        {\n            if (e.ClickedItem is EpisodeWithState episode)\n            {\n                ViewModel.NavigateToEpisodeAsync(episode.Episode);\n            }\n        }\n\n        private void DownloadEpisode(Episode episode) => ViewModel.DownloadEpisode(episode);\n\n        private void RemoveFavoritedEpisode(Episode episode) => ViewModel.RemoveFavoritedEpisode(episode);\n\n        private void DeleteEpisode(Episode episode) => ViewModel.RemoveDownloadedEpisode(episode);\n\n        private void RefreshList() => ViewModel.Refresh();\n\n        private void ContainerItem_PointerEntered(object sender, PointerRoutedEventArgs e)\n        {\n            // Only show the hover buttons when the mouse or pen enters the item.\n            if (e.Pointer.PointerDeviceType != Windows.Devices.Input.PointerDeviceType.Touch)\n            {\n                try\n                {\n                    var item = sender as ListViewItem;\n                    var secondaryCommandPanel = item.GetVisualChildByName<StackPanel>(\"SecondaryCommandPanel\");\n                    var commandPanelChildHolder = secondaryCommandPanel.GetVisualChildByName<Grid>(\"ButtonHolder\");\n\n                    var commandPanelChild = commandPanelChildHolder.GetVisualChildByName<Button>(\"DownloadButton\");\n\n                    // If the episode is already downloaded, then show delete button instead\n                    if ((item.Content as EpisodeWithState).Episode.IsDownloaded)\n                    {\n                        commandPanelChild = commandPanelChildHolder.GetVisualChildByName<Button>(\"DeleteButton\");\n                    }\n\n                    var secondaryPlayIcon = item.GetVisualChildByName<Grid>(\"PlayIcon\");\n\n                    commandPanelChild.Visibility = Visibility.Visible;\n                    secondaryPlayIcon.Visibility = Visibility.Visible;\n\n                    cachedSecondaryCommandChildPanel = commandPanelChild;\n                    cachedSecondaryPlayIcon = secondaryPlayIcon;\n                }\n                catch (Exception ex)\n                {\n                    Debug.WriteLine(\"Catastrophic error: \" + ex.Message);\n                }\n            }\n        }\n\n        private void ContainerItem_PointerExited(object sender, PointerRoutedEventArgs e)\n        {\n            if (e.Pointer.PointerDeviceType != Windows.Devices.Input.PointerDeviceType.Touch && cachedSecondaryCommandChildPanel != null)\n            {\n                cachedSecondaryCommandChildPanel.Visibility = Visibility.Collapsed;\n                cachedSecondaryCommandChildPanel = null;\n\n                cachedSecondaryPlayIcon.Visibility = Visibility.Collapsed;\n                cachedSecondaryPlayIcon = null;\n            }\n        }\n\n        private void SwipeDownload_Invoked(SwipeItem sender, SwipeItemInvokedEventArgs args)\n        {\n            if (args.SwipeControl.DataContext is EpisodeWithState target)\n            {\n                DownloadEpisode(target.Episode);\n            }\n        }\n\n        private void SwipeUnfavorite_Invoked(SwipeItem sender, SwipeItemInvokedEventArgs args)\n        {\n            if (args.SwipeControl.DataContext is EpisodeWithState target)\n            {\n                RemoveFavoritedEpisode(target.Episode);\n            }\n        }\n\n        private void MenuFlyoutItem_Click(object sender, RoutedEventArgs e)\n        {\n            RefreshList();\n        }\n\n        private void FavoriteListView_ChoosingItemContainer(ListViewBase sender, ChoosingItemContainerEventArgs args)\n        {\n            // Do we already have an ItemContainer? If so, we're done here.\n            if (args.ItemContainer != null)\n            {\n                return;\n            }\n\n            ListViewItem containerItem = new ListViewItem();\n\n            // Show hover buttons\n            containerItem.PointerEntered += ContainerItem_PointerEntered;\n            containerItem.PointerExited += ContainerItem_PointerExited;\n\n            args.ItemContainer = containerItem;\n        }\n\n        private void UnfaveButton_Click(object sender, RoutedEventArgs e)\n        {\n            EpisodeWithState episodePointer = (EpisodeWithState)(sender as Button).DataContext;\n            RemoveFavoritedEpisode(episodePointer.Episode);\n        }\n\n        private void DeleteButton_Click(object sender, RoutedEventArgs e)\n        {\n            EpisodeWithState episodePointer = (EpisodeWithState)(sender as Button).DataContext;\n            DeleteEpisode(episodePointer.Episode);\n        }\n\n        private void DownloadButton_Click(object sender, RoutedEventArgs e)\n        {\n            EpisodeWithState episodePointer = (EpisodeWithState)(sender as Button).DataContext;\n            DownloadEpisode(episodePointer.Episode);\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Views/FeedDetails.xaml",
    "content": "﻿<!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<Page\n    x:Class=\"BuildCast.Views.FeedDetails\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:datamodel=\"using:BuildCast.DataModel\"\n    mc:Ignorable=\"d\"\n    xmlns:localfunc=\"using:BuildCast.Views\"\n    xmlns:helpers=\"using:BuildCast.Helpers\"\n    xmlns:animations=\"using:Microsoft.Toolkit.Uwp.UI.Animations\"\n    x:Name=\"FeedDetailsPage\"\n    animations:Implicit.HideAnimations=\"{StaticResource DefaultPageHideAnimation}\"\n    >\n\n    <Page.Resources>\n        <SolidColorBrush x:Key=\"ButtonRevealBorderBrushPointerOver\" Color=\"Transparent\"/>\n        <SolidColorBrush x:Key=\"ButtonRevealBorderBrushPressed\" Color=\"Transparent\"/>\n    </Page.Resources>\n\n    <RelativePanel Style=\"{StaticResource PageBackground}\">\n        <RelativePanel.Resources>\n\n            <DataTemplate x:Key=\"itemTemplate\" x:DataType=\"datamodel:Episode\">\n\n                <SwipeControl x:Name=\"swipeContainer\">\n\n                    <SwipeControl.RightItems>\n                        <SwipeItems Mode=\"Reveal\">\n                            <SwipeItem Text=\"Download\" Foreground=\"White\" Background=\"DarkGray\" Invoked=\"SwipeItem_Invoked\">\n                                <SwipeItem.IconSource>\n                                    <SymbolIconSource Symbol=\"Download\"/>\n                                </SwipeItem.IconSource>\n                            </SwipeItem>\n                            <SwipeItem Text=\"Favorite\" Foreground=\"White\" Background=\"{ThemeResource SystemAccentColor}\" Invoked=\"FavoriteSwipeItem_Invoked\">\n                                <SwipeItem.IconSource>\n                                    <SymbolIconSource Symbol=\"Favorite\"/>\n                                </SwipeItem.IconSource>\n                            </SwipeItem>\n                        </SwipeItems>\n                    </SwipeControl.RightItems>\n\n                    <Grid Height=\"90\" x:Name=\"RootGrid\" Margin=\"12,0,12,0\">\n                        <Grid.Resources>\n                            <Thickness x:Key=\"IconButtonMargin\">12,0,0,0</Thickness>\n                        </Grid.Resources>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"128\" />\n                            <ColumnDefinition Width=\"*\" />\n                            <ColumnDefinition Width=\"Auto\" />\n                        </Grid.ColumnDefinitions>\n                        <Image x:Name=\"itemImage\" Width=\"128\" Height=\"72\">\n                            <Image.Source>\n                                <BitmapImage UriSource=\"{x:Bind ItemThumbnail}\" />\n                            </Image.Source>\n                        </Image>\n                        <StackPanel Margin=\"14,0,0,0\" Grid.Column=\"1\" VerticalAlignment=\"Center\" >\n                            <TextBlock FontWeight=\"Bold\" x:Name=\"itemTitle\"  Text=\"{x:Bind Title}\" TextWrapping=\"WrapWholeWords\" />\n                            <TextBlock x:Name=\"itemsubTitle\"  Text=\"{x:Bind Subtitle}\" TextWrapping=\"WrapWholeWords\" />\n                            <StackPanel Orientation=\"Horizontal\">\n                                <TextBlock x:Name=\"dateTextBlock\" Text=\"{x:Bind PublishDate}\" Foreground=\"DarkGray\" Grid.Column=\"1\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Left\" HorizontalTextAlignment=\"Left\"/>\n                                <TextBlock x:Name=\"itemspublishdata\" Margin=\"16,0,0,0\" Text=\"{x:Bind Duration}\" Foreground=\"DarkGray\" TextWrapping=\"NoWrap\" />\n                            </StackPanel>\n                        </StackPanel>\n                        <StackPanel x:Name=\"SecondaryCommandPanel\" Visibility=\"Collapsed\" Orientation=\"Horizontal\" Grid.Column=\"2\">\n                            <StackPanel.Resources>\n                                <ResourceDictionary>\n                                    <ResourceDictionary.ThemeDictionaries>\n                                        <ResourceDictionary x:Key=\"Light\">\n                                            <SolidColorBrush x:Key=\"ButtonRevealBackgroundPressed\" Color=\"DarkGray\" />\n                                        </ResourceDictionary>\n                                        <ResourceDictionary x:Key=\"Dark\">\n                                            <SolidColorBrush x:Key=\"ButtonRevealBackgroundPressed\" Color=\"DarkGray\" />\n                                        </ResourceDictionary>\n                                    </ResourceDictionary.ThemeDictionaries>\n                                </ResourceDictionary>\n                            </StackPanel.Resources>\n\n                            <!--Download button-->\n                            <Button Width=\"48\" Height=\"48\" Style=\"{StaticResource ButtonRevealStyle}\" Background=\"{ThemeResource AppBarButtonRevealBackground}\" Margin=\"{StaticResource IconButtonMargin}\" CommandParameter=\"{x:Bind}\" ToolTipService.ToolTip=\"Download\" Click=\"DownloadButton_Click\">\n                                <Button.Content>\n                                    <Viewbox HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Width=\"16\" Height=\"16\" >\n                                        <SymbolIcon Symbol=\"Download\" />\n                                    </Viewbox>\n                                </Button.Content>\n                            </Button>\n\n                            <!--Favorite button-->\n                            <!--TODO: Toggle the star between outline and filled?-->\n                            <Button Width=\"48\" Height=\"48\" Style=\"{StaticResource ButtonRevealStyle}\" Background=\"{ThemeResource AppBarButtonRevealBackground}\" Margin=\"{StaticResource IconButtonMargin}\" ToolTipService.ToolTip=\"Favorite\" CommandParameter=\"{x:Bind}\" Click=\"FavoriteButton_Click\" >\n                                <Button.Content>\n                                    <Viewbox HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Width=\"16\" Height=\"16\" >\n                                        <SymbolIcon Symbol=\"OutlineStar\" />\n                                    </Viewbox>\n                                </Button.Content>\n                            </Button>\n                        </StackPanel>\n                    </Grid>\n                </SwipeControl>\n            </DataTemplate>\n\n            <DataTemplate x:Key=\"GriditemTemplate\" x:DataType=\"datamodel:Episode\">\n                <Grid Width=\"200\" Height=\"200\" x:Name=\"RootGrid\"    >\n                    <Image>\n                        <Image.Source>\n                            <BitmapImage UriSource=\"{x:Bind ItemThumbnail}\" />\n                        </Image.Source>\n                    </Image>\n                    <TextBlock Text=\"{x:Bind Title}\" TextWrapping=\"Wrap\" Foreground=\"White\" VerticalAlignment=\"Bottom\" />\n                </Grid>\n            </DataTemplate>\n\n        </RelativePanel.Resources>\n\n        <Grid Grid.Row=\"0\" Background=\"{StaticResource HeaderColor}\" x:Name=\"TopBorder\"\n              RelativePanel.AlignLeftWithPanel=\"True\" RelativePanel.AlignRightWithPanel=\"True\"\n              Padding=\"24,52,24,24\" Height=\"348\"\n              animations:Implicit.ShowAnimations=\"{StaticResource DefaultShowAnimations}\"\n              animations:Implicit.HideAnimations=\"{StaticResource DefaultHideAnimations}\"\n              >\n            \n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\"/>\n                <ColumnDefinition Width=\"*\"/>\n            </Grid.ColumnDefinitions>\n\n            <Image x:Name=\"podimage\" Width=\"272\" Height=\"272\"  VerticalAlignment=\"Top\" HorizontalAlignment=\"Left\" ImageOpened=\"Podimage_ImageOpened\" Visibility=\"Visible\"\n                   animations:Connected.Key=\"podimageback\">\n                <Image.Source>\n                    <BitmapImage UriSource=\"{x:Bind ViewModel.CurrentFeed.ImageUri}\" />\n                </Image.Source>\n            </Image>\n\n            <Grid x:Name=\"DescriptionRoot\" Grid.Column=\"1\" VerticalAlignment=\"Stretch\" Margin=\"24,0,0,0\" Visibility=\"Visible\" animations:Connected.AnchorElement=\"{x:Bind podimage}\">\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"*\" />\n                    <RowDefinition Height=\"Auto\" />\n                </Grid.RowDefinitions>\n                <TextBlock x:Name=\"feedtitle\" Grid.Row=\"0\" Style=\"{ThemeResource SubheaderTextBlockStyle}\" Text=\"{x:Bind Path=ViewModel.CurrentFeed.Title}\" Foreground=\"{ThemeResource SystemControlForegroundChromeWhiteBrush}\"/>\n                <TextBlock x:Name=\"feedauthor\" Grid.Row=\"1\" Style=\"{ThemeResource TitleTextBlockStyle}\" Text=\"{x:Bind Path=ViewModel.CurrentFeed.Author}\" Foreground=\"{ThemeResource SystemControlForegroundChromeWhiteBrush}\" />\n                <TextBlock x:Name=\"feeddetails\" Grid.Row=\"2\" Style=\"{ThemeResource BodyTextBlockStyle}\" Margin=\"0,10,0,0\" Foreground=\"{ThemeResource SystemControlForegroundChromeWhiteBrush}\" HorizontalAlignment=\"Left\" FontSize=\"14\" MaxWidth=\"500\" TextWrapping=\"Wrap\" Text=\"{x:Bind Path=ViewModel.CurrentFeed.Description}\" />\n\n                <StackPanel Grid.Row=\"3\" Orientation=\"Horizontal\" Margin=\"0,10,0,0\" >\n                    <Button x:Name=\"btnrefresh\" Content=\"Fetch the latest content\"  Click=\"RefreshButton_Click\" RightTapped=\"Button_RightTapped\" IsRightTapEnabled=\"True\" RequestedTheme=\"Dark\" Style=\"{StaticResource ButtonRevealStyle}\" />\n                    <TextBlock x:Name=\"RefreshStatusTextBlock\" Margin=\"10,0,0,0\" RequestedTheme=\"Dark\" VerticalAlignment=\"Center\" />\n                </StackPanel>\n\n            </Grid>\n        </Grid>\n        <TextBlock x:Name=\"episodesheader\" Style=\"{ThemeResource SubtitleTextBlockStyle}\" FontWeight=\"Medium\" Text=\"Episodes\" RelativePanel.Below=\"TopBorder\" Margin=\"24,16,0,0\"/>\n\n        <ListView x:Name=\"feeditems\"\n                  ItemContainerTransitions=\"{x:Null}\"\n                  ItemTemplate=\"{StaticResource itemTemplate}\"\n                  IsItemClickEnabled=\"True\"\n                  ItemClick=\"Feeditems_ItemClick\"\n                  ChoosingItemContainer=\"Feeditems_ChoosingItemContainer\"\n                  ItemsSource=\"{x:Bind ViewModel.EpisodeData}\"\n                  RelativePanel.AlignLeftWithPanel=\"True\"\n                  RelativePanel.AlignRightWithPanel=\"True\"\n                  RelativePanel.Below=\"episodesheader\"\n                  Grid.Row=\"1\" \n                  Padding=\"12,7,12,10\"\n                  animations:Connected.ListItemKey=\"FeedItemImage\"\n                  animations:Connected.ListItemElementName=\"itemImage\"\n                  animations:Implicit.ShowAnimations=\"{StaticResource DefaultListShowAnimations}\"\n                  animations:Implicit.HideAnimations=\"{StaticResource DefaultListHideAnimations}\">\n            <ListView.ItemContainerStyle>\n                <Style TargetType=\"ListViewItem\" BasedOn=\"{StaticResource ListViewItemRevealStyle}\" >\n                    <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n                    <Setter Property=\"Padding\" Value=\"0\" />\n\n                    <Setter Property=\"ContextFlyout\">\n                        <Setter.Value>\n                            <MenuFlyout Opening=\"MenuFlyout_Opening\">\n                                <MenuFlyoutItem Text=\"Play\" Icon=\"Play\" Click=\"PlayMenuFlyoutItem_Click\" />\n                                <MenuFlyoutSeparator></MenuFlyoutSeparator>\n                                <MenuFlyoutItem Text=\"Download\" Icon=\"Download\" Click=\"DownloadFlyoutItem_Click\" />\n                                <MenuFlyoutItem Text=\"Favorite\" Icon=\"OutlineStar\" Click=\"FavoriteFlyoutItem_Click\" />\n                                <MenuFlyoutSeparator></MenuFlyoutSeparator>\n                                <MenuFlyoutItem Text=\"Details\" Click=\"FavoriteFlyoutItem_Click\" />\n\n                            </MenuFlyout>\n                        </Setter.Value>\n                    </Setter>\n                </Style>\n            </ListView.ItemContainerStyle>\n        </ListView>\n\n        <ProgressBar x:Name=\"progress\"\n                     IsIndeterminate=\"True\"\n                     Visibility=\"{x:Bind ViewModel.Loading}\"\n                     RelativePanel.AlignTopWith=\"feeditems\"\n                     RelativePanel.AlignLeftWithPanel=\"true\"\n                     RelativePanel.AlignRightWithPanel=\"true\" />\n    </RelativePanel>\n\n</Page>\n"
  },
  {
    "path": "src/BuildCast/Views/FeedDetails.xaml.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Diagnostics;\nusing System.Threading.Tasks;\nusing BuildCast.DataModel;\nusing BuildCast.Helpers;\nusing BuildCast.Services.Navigation;\nusing BuildCast.ViewModels;\nusing Windows.System.Profile;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Hosting;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace BuildCast.Views\n{\n    public sealed partial class FeedDetails : Page, IPageWithViewModel<FeedDetailsViewModel>\n    {\n        private UIElement cachedSecondaryCommandPanel = null;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"FeedDetails\"/> class.\n        /// </summary>\n        public FeedDetails()\n        {\n            this.InitializeComponent();\n\n            // Customize sizing for Xbox\n            if (AnalyticsInfo.VersionInfo.DeviceFamily == \"Windows.Xbox\")\n            {\n                podimage.Width = 208;\n                podimage.Height = 208;\n                TopBorder.Height = 306;\n            }\n\n            Loaded += FeedDetails_Loaded;\n        }\n\n        public FeedDetailsViewModel ViewModel { get; set; }\n\n        public void UpdateBindings()\n        {\n            if (ViewModel.PersistedEpisode != null)\n            {\n                feeditems.Loaded += (s, ev) => feeditems.ScrollIntoView(ViewModel.PersistedEpisode, ScrollIntoViewAlignment.Leading);\n            }\n\n            Bindings.Update();\n        }\n\n        private void FeedDetails_Loaded(object sender, RoutedEventArgs e)\n        {\n            btnrefresh.Focus(FocusState.Programmatic);\n\n            Loaded -= FeedDetails_Loaded;\n        }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            base.OnNavigatedTo(e);\n            Canvas.SetZIndex(this, 0);\n        }\n\n        protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)\n        {\n            base.OnNavigatingFrom(e);\n            Canvas.SetZIndex(this, 1);\n        }\n\n        private void Feeditems_ChoosingItemContainer(ListViewBase sender, ChoosingItemContainerEventArgs args)\n        {\n            // Do we already have an ItemContainer? If so, we're done here.\n            if (args.ItemContainer != null)\n            {\n                return;\n            }\n\n            // Otherwise, we need to make a new container. Wire up the events on the container, and set it as the ItemContainer.\n            ListViewItem containerItem = new ListViewItem();\n\n            // Wire up stagger animations on items\n            containerItem.Loaded += ContainerItem_Loaded;\n\n            // Show hover buttons\n            containerItem.PointerEntered += ContainerItem_PointerEntered;\n            containerItem.PointerExited += ContainerItem_PointerExited;\n\n            // Listen for key events.\n            containerItem.KeyDown += ContainerItem_KeyDown;\n\n            args.ItemContainer = containerItem;\n        }\n\n        #region stagger animation on list items\n\n        private void ContainerItem_Loaded(object sender, RoutedEventArgs e)\n        {\n            var itemsPanel = (ItemsStackPanel)feeditems.ItemsPanelRoot;\n            var itemContainer = (ListViewItem)sender;\n\n            var itemIndex = feeditems.IndexFromContainer(itemContainer);\n\n            var relativeIndex = itemIndex - itemsPanel.FirstVisibleIndex;\n\n            Grid uc;\n            if (itemContainer.ContentTemplateRoot as SwipeControl != null)\n            {\n                uc = (itemContainer.ContentTemplateRoot as SwipeControl).Content as Grid;\n            }\n            else\n            {\n                uc = itemContainer.ContentTemplateRoot as Grid;\n            }\n\n            if (itemContainer.Content != ViewModel.PersistedEpisode && itemIndex >= 0 && itemIndex >= itemsPanel.FirstVisibleIndex && itemIndex <= itemsPanel.LastVisibleIndex)\n            {\n                var itemVisual = ElementCompositionPreview.GetElementVisual(uc);\n                ElementCompositionPreview.SetIsTranslationEnabled(uc, true);\n\n                var staggerDelay = TimeSpan.FromMilliseconds(relativeIndex * 100);\n\n                var offsetAnimation = VisualHelpers.CreateHorizontalOffsetAnimation(0.7, 150, staggerDelay.TotalSeconds);\n                itemVisual.StartAnimation(\"Translation.X\", offsetAnimation);\n\n                var opacityAnimation = VisualHelpers.CreateOpacityAnimation(0.5);\n                opacityAnimation.DelayBehavior = Windows.UI.Composition.AnimationDelayBehavior.SetInitialValueBeforeDelay;\n                opacityAnimation.DelayTime = staggerDelay;\n                itemVisual.StartAnimation(\"Opacity\", opacityAnimation);\n            }\n\n            itemContainer.Loaded -= this.ContainerItem_Loaded;\n        }\n\n        #endregion\n        private void ContainerItem_PointerEntered(object sender, PointerRoutedEventArgs e)\n        {\n            // Only show the hover buttons when the mouse or pen enters the item.\n            if (e.Pointer.PointerDeviceType != Windows.Devices.Input.PointerDeviceType.Touch)\n            {\n                try\n                {\n                    var item = sender as ListViewItem;\n                    var secondaryCommandPanel = item.GetVisualChildByName<StackPanel>(\"SecondaryCommandPanel\");\n                    secondaryCommandPanel.Visibility = Visibility.Visible;\n                    cachedSecondaryCommandPanel = secondaryCommandPanel;\n                }\n                catch (Exception ex)\n                {\n                    Debug.WriteLine(\"Catastrophic error: \" + ex.Message);\n                }\n            }\n        }\n\n        private void ContainerItem_PointerExited(object sender, PointerRoutedEventArgs e)\n        {\n            if (e.Pointer.PointerDeviceType != Windows.Devices.Input.PointerDeviceType.Touch && cachedSecondaryCommandPanel != null)\n            {\n                cachedSecondaryCommandPanel.Visibility = Visibility.Collapsed;\n                cachedSecondaryCommandPanel = null;\n            }\n        }\n\n        private void ContainerItem_KeyDown(object sender, KeyRoutedEventArgs e)\n        {\n            Episode episode = feeditems.SelectedItem as Episode;\n\n            // Do not try to perform an action if an item isn't selected.\n            if (episode == null)\n            {\n                return;\n            }\n\n            if (e.Key == Windows.System.VirtualKey.P)\n            {\n                ViewModel.PlayEpisode(episode);\n            }\n\n            if (e.Key == Windows.System.VirtualKey.F)\n            {\n                FavoriteEpisode(episode);\n            }\n\n            if (e.Key == Windows.System.VirtualKey.D)\n            {\n                DownloadEpisode(episode);\n            }\n        }\n\n        private void FavoriteEpisode(Episode episode) => ViewModel.FavoriteEpisode(episode);\n\n        private void PlayEpisode(Episode episode) => ViewModel.PlayEpisode(episode);\n\n        private void DownloadEpisode(Episode episode) => ViewModel.DownloadEpisode(episode);\n\n        private void MenuFlyout_Opening(object sender, object e)\n        {\n            MenuFlyout senderAsMenuFlyout = sender as MenuFlyout;\n\n            foreach (object menuFlyoutItem in senderAsMenuFlyout.Items)\n            {\n                if (menuFlyoutItem.GetType() == typeof(MenuFlyoutItem))\n                {\n                    // Associate the particular FeedItem with the menu flyout (so the MenuFlyoutItem knows which FeedItem to act upon)\n                    ListViewItem itemContainer = senderAsMenuFlyout.Target as ListViewItem;\n\n                    Episode feedItem = feeditems.ItemFromContainer(itemContainer) as Episode;\n\n                    (menuFlyoutItem as MenuFlyoutItem).CommandParameter = feedItem;\n                }\n            }\n        }\n\n        private void Feeditems_ItemClick(object sender, ItemClickEventArgs e)\n        {\n            Episode detailsItem = e.ClickedItem as Episode;\n\n            ViewModel.GoToEpisodeDetails(detailsItem);\n        }\n\n        private void PlayMenuFlyoutItem_Click(object sender, RoutedEventArgs e)\n        {\n            PlayEpisode((sender as MenuFlyoutItem).CommandParameter as Episode);\n        }\n\n        private void PlayIconButton_Click(object sender, RoutedEventArgs e)\n        {\n            PlayEpisode((sender as Button).CommandParameter as Episode);\n        }\n\n        private void DownloadFlyoutItem_Click(object sender, RoutedEventArgs e)\n        {\n            DownloadEpisode((sender as MenuFlyoutItem).CommandParameter as Episode);\n        }\n\n        private void DownloadButton_Click(object sender, RoutedEventArgs e)\n        {\n            DownloadEpisode((sender as Button).CommandParameter as Episode);\n        }\n\n        private void FavoriteFlyoutItem_Click(object sender, RoutedEventArgs e)\n        {\n            FavoriteEpisode((sender as MenuFlyoutItem).CommandParameter as Episode);\n        }\n\n        private void FavoriteButton_Click(object sender, RoutedEventArgs e)\n        {\n            FavoriteEpisode((sender as Button).CommandParameter as Episode);\n        }\n\n        // Don't do anything but close the swipe container if a non-favorite swipe action occurs.\n        private void SwipeItem_Invoked(SwipeItem sender, SwipeItemInvokedEventArgs args)\n        {\n            if (args.SwipeControl.DataContext is Episode target)\n            {\n                DownloadEpisode(target);\n            }\n        }\n\n        // Favorite the particular item, and then close the container.\n        private void FavoriteSwipeItem_Invoked(SwipeItem sender, SwipeItemInvokedEventArgs args)\n        {\n            if (args.SwipeControl.DataContext is Episode episode)\n            {\n                FavoriteEpisode(episode);\n            }\n        }\n\n        private async void RefreshButton_Click(object sender, RoutedEventArgs e)\n        {\n            await LoadMoreData();\n        }\n\n        private async void Button_RightTapped(object sender, RightTappedRoutedEventArgs e)\n        {\n            await this.ViewModel.RemoveTopThree();\n\n            await UIHelpers.ShowContentAsync(\"Removing top 3 items\");\n        }\n\n        private async Task LoadMoreData()\n        {\n            this.feeditems.ItemContainerTransitions = new TransitionCollection\n            {\n                new AddDeleteThemeTransition(),\n            };\n\n            var newEpisodeCount = await ViewModel.RefreshData();\n            RefreshStatusTextBlock.Text = (newEpisodeCount == 0) ? \"Already up-to-date.\" : $\"Found {newEpisodeCount} new episodes.\";\n        }\n\n        private void Podimage_ImageOpened(object sender, RoutedEventArgs e)\n        {\n\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Views/Home.xaml",
    "content": "﻿<!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<Page\n    x:Class=\"BuildCast.Views.Home\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:datamodel=\"using:BuildCast.DataModel\"\n    RequestedTheme=\"{x:Bind HomeTheme}\"\n    xmlns:animations=\"using:Microsoft.Toolkit.Uwp.UI.Animations\"\n    mc:Ignorable=\"d\"\n    animations:Implicit.HideAnimations=\"{StaticResource DefaultPageHideAnimation}\">\n\n    <Page.Resources>\n        \n    </Page.Resources>\n\n    <Grid Style=\"{x:Bind HomeBackground}\">\n        <VisualStateManager.VisualStateGroups>\n            <VisualStateGroup>\n                <VisualState x:Name=\"Wider\">\n                    <VisualState.StateTriggers>\n                        <AdaptiveTrigger MinWindowWidth=\"900\" />\n                    </VisualState.StateTriggers>\n                    <VisualState.Setters>\n                        <Setter Target=\"Logo.HorizontalAlignment\" Value=\"Left\" ></Setter>\n                        <Setter Target=\"Search.HorizontalAlignment\" Value=\"Right\" ></Setter>\n                        <Setter Target=\"Search.Margin\" Value=\"0,68,24,0\" ></Setter>\n                    </VisualState.Setters>\n                </VisualState>\n                <VisualState x:Name=\"Narrower\">\n                    <VisualState.StateTriggers>\n                        <AdaptiveTrigger MinWindowWidth=\"720\" />\n                    </VisualState.StateTriggers>\n                    <VisualState.Setters>\n                        <Setter Target=\"Logo.HorizontalAlignment\" Value=\"Center\" ></Setter>\n                        <Setter Target=\"Logo.HorizontalAlignment\" Value=\"Center\" ></Setter>\n                        <Setter Target=\"Search.Margin\" Value=\"0,140,24,0\" ></Setter>\n                    </VisualState.Setters>\n                </VisualState>\n                <VisualState x:Name=\"VeryNarrow\">\n                    <VisualState.StateTriggers>\n                        <AdaptiveTrigger MinWindowWidth=\"320\" />\n                    </VisualState.StateTriggers>\n                    <VisualState.Setters>\n                        <Setter Target=\"Logo.HorizontalAlignment\" Value=\"Center\" ></Setter>\n                        <Setter Target=\"Logo.HorizontalAlignment\" Value=\"Center\" ></Setter>\n                        <Setter Target=\"Search.Margin\" Value=\"0,140,24,0\" ></Setter>\n                    </VisualState.Setters>\n                </VisualState>\n            </VisualStateGroup>\n        </VisualStateManager.VisualStateGroups>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"*\"></RowDefinition>\n            <RowDefinition Height=\"310\"></RowDefinition>\n        </Grid.RowDefinitions>\n        <ParallaxView x:Name=\"paraimage\" Grid.Row=\"0\" HorizontalShift=\"400\" Source=\"{x:Bind HomeFeedGrid}\" VerticalAlignment=\"Bottom\" Margin=\"0,-228,0,0\">\n            <Image \n                   Margin=\"-0,0,0,0\"\n                   Stretch=\"UniformToFill\"\n                   MinHeight=\"690\">\n                <Image.Source>\n                    <BitmapImage UriSource=\"{x:Bind ParallaxImage}\" />\n                </Image.Source>\n            </Image>\n            <animations:Implicit.ShowAnimations>\n                <animations:TranslationAnimation Duration=\"0:0:0.55\" To=\"0\" From=\"0, -150, 0\"></animations:TranslationAnimation>\n            </animations:Implicit.ShowAnimations>\n            <animations:Implicit.HideAnimations>\n                <animations:TranslationAnimation Duration=\"0:0:0.55\" To=\"0, -150, 0\"></animations:TranslationAnimation>\n                <animations:OpacityAnimation Duration=\"0:0:0.4\" To=\"0\"></animations:OpacityAnimation>\n            </animations:Implicit.HideAnimations>\n        </ParallaxView>\n\n        <Image x:Name=\"Logo\" \n               VerticalAlignment=\"Top\" \n               Margin=\"0,30,0,0\"\n               Grid.Row=\"0\"\n               Width=\"370\"\n               animations:Implicit.Animations=\"{StaticResource LayoutImplicitAnimations}\">\n            <Image.Source>\n                <SvgImageSource UriSource=\"{x:Bind LogoSource}\" />\n            </Image.Source>\n        </Image>\n\n        <AutoSuggestBox x:Name=\"Search\" Grid.Row=\"0\" Width=\"296\" PlaceholderText=\"Search episodes\" Margin=\"0,68,24,0\" QueryIcon=\"Find\"\n                        TextChanged=\"AutoSuggestBox_TextChanged\"\n                        SuggestionChosen=\"AutoSuggestBox_SuggestionChosen\"\n                        RequestedTheme=\"Light\"\n                        animations:Implicit.Animations=\"{StaticResource LayoutImplicitAnimations}\"/>\n        <TextBlock Grid.Row=\"1\" VerticalAlignment=\"Top\" Style=\"{ThemeResource SubtitleTextBlockStyle}\" FontWeight=\"Medium\" Margin=\"24,12,0,0\" Text=\"Recommended\" />\n\n        <GridView Grid.Row=\"1\" x:Name=\"HomeFeedGrid\" IsItemClickEnabled=\"True\" ItemClick=\"HomeFeedGrid_ItemClick\"\n                  \n                      ContainerContentChanging=\"HomeFeedGrid_ContainerContentChanging\"\n                      ItemContainerTransitions=\"{x:Null}\"     \n                      ItemContainerStyle=\"{StaticResource GridViewItemRevealStyle}\"\n                      ScrollViewer.HorizontalScrollMode=\"Auto\" \n                        ScrollViewer.HorizontalScrollBarVisibility=\"Visible\" \n                      ScrollViewer.VerticalScrollMode=\"Disabled\"\n                        ScrollViewer.VerticalScrollBarVisibility=\"Hidden\"\n                      VerticalAlignment=\"Stretch\"\n                     Margin=\"0,40,0,0\"\n                  animations:Connected.ListItemKey=\"podimageback\"\n                  animations:Connected.ListItemElementName=\"Image\"\n                      >\n            <GridView.ItemsPanel>\n                <ItemsPanelTemplate>\n                    <ItemsStackPanel Margin=\"14,0,0,0\" Orientation=\"Horizontal\" />\n                </ItemsPanelTemplate>\n            </GridView.ItemsPanel>\n            <GridView.ItemTemplate>\n                <DataTemplate x:DataType=\"datamodel:Feed\">\n                    <Grid x:Name=\"GalleryItem\" Margin=\"10,0\">\n                        <Grid.RowDefinitions>\n                            <RowDefinition Height=\"200\" />\n                            <RowDefinition />\n                        </Grid.RowDefinitions>\n                        <Border Grid.RowSpan=\"2\" x:Name=\"Shadow\" BorderBrush=\"White\" BorderThickness=\"0\"/>\n\n                        <Image x:Name=\"Image\" \n                                   HorizontalAlignment=\"Left\"\n                                   Stretch=\"UniformToFill\" Height=\"190\" Width=\"190\">\n                            <Image.Source>\n                                <BitmapImage UriSource=\"{x:Bind ImageUri}\">\n                                </BitmapImage>\n                            </Image.Source>\n                        </Image>\n                        <StackPanel VerticalAlignment=\"Bottom\" Grid.Row=\"1\" Margin=\"5,0,5,0\" Width=\"180\">\n                            <TextBlock Text=\"{x:Bind Title}\" FontWeight=\"Medium\" \n                                       Style=\"{ThemeResource BodyTextBlockStyle}\" TextWrapping=\"NoWrap\"\n                                       HorizontalAlignment=\"Left\" />\n                            <TextBlock Text=\"{x:Bind Author}\"  />\n                        </StackPanel>\n                    </Grid>\n                </DataTemplate>\n            </GridView.ItemTemplate>\n        </GridView>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "src/BuildCast/Views/Home.xaml.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Numerics;\nusing BuildCast.DataModel;\nusing BuildCast.Helpers;\nusing BuildCast.Services;\nusing BuildCast.Services.Navigation;\nusing BuildCast.ViewModels;\nusing Windows.UI.Composition;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Hosting;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace BuildCast.Views\n{\n    public sealed partial class Home : Page, IPageWithViewModel<HomeViewModel>\n    {\n        private static int _persistedItemIndex = -1;\n\n        public Home()\n        {\n            this.InitializeComponent();\n\n            HomeFeedGrid.ItemsSource = FeedStore.AllFeeds;\n        }\n\n        public HomeViewModel ViewModel { get; set; }\n\n        public ElementTheme HomeTheme\n        {\n            get\n            {\n                return ThemeSelectorService.GetHomeTheme();\n            }\n        }\n\n        public Style HomeBackground\n        {\n            get\n            {\n                return ThemeSelectorService.GetHomeBackground();\n            }\n        }\n\n        public string ParallaxImage\n        {\n            get\n            {\n                return ThemeSelectorService.GetHomeImageSource();\n            }\n        }\n\n        public string LogoSource\n        {\n            get\n            {\n                return ThemeSelectorService.GetLogoSource();\n            }\n        }\n\n        public void UpdateBindings()\n        {\n            Bindings.Update();\n        }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            base.OnNavigatedTo(e);\n            if (e.NavigationMode == NavigationMode.Back)\n            {\n            }\n            else\n            {\n                _persistedItemIndex = -1;\n            }\n\n            Canvas.SetZIndex(this, 0);\n        }\n\n        protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)\n        {\n            base.OnNavigatingFrom(e);\n            Canvas.SetZIndex(this, 1);\n        }\n\n        #region staggering\n        private void HomeFeedGrid_ContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)\n        {\n            args.ItemContainer.Loaded += ItemContainer_Loaded;\n        }\n\n        private void ItemContainer_Loaded(object sender, RoutedEventArgs e)\n        {\n            var itemsPanel = (ItemsStackPanel)this.HomeFeedGrid.ItemsPanelRoot;\n            var itemContainer = (GridViewItem)sender;\n\n            var itemIndex = this.HomeFeedGrid.IndexFromContainer(itemContainer);\n\n            var relativeIndex = itemIndex - itemsPanel.FirstVisibleIndex;\n\n            var uc = itemContainer.ContentTemplateRoot as Grid;\n\n            if (itemIndex != _persistedItemIndex && itemIndex >= 0 && itemIndex >= itemsPanel.FirstVisibleIndex && itemIndex <= itemsPanel.LastVisibleIndex)\n            {\n                var itemVisual = ElementCompositionPreview.GetElementVisual(uc);\n                ElementCompositionPreview.SetIsTranslationEnabled(uc, true);\n\n                var easingFunction = Window.Current.Compositor.CreateCubicBezierEasingFunction(new Vector2(0.1f, 0.9f), new Vector2(0.2f, 1f));\n\n                // Create KeyFrameAnimations\n                var offsetAnimation = Window.Current.Compositor.CreateScalarKeyFrameAnimation();\n                offsetAnimation.InsertKeyFrame(0f, 100);\n                offsetAnimation.InsertKeyFrame(1f, 0, easingFunction);\n                offsetAnimation.Target = \"Translation.X\";\n                offsetAnimation.DelayBehavior = AnimationDelayBehavior.SetInitialValueBeforeDelay;\n                offsetAnimation.Duration = TimeSpan.FromMilliseconds(700);\n                offsetAnimation.DelayTime = TimeSpan.FromMilliseconds(relativeIndex * 100);\n\n                var fadeAnimation = Window.Current.Compositor.CreateScalarKeyFrameAnimation();\n                fadeAnimation.InsertExpressionKeyFrame(0f, \"0\");\n                fadeAnimation.InsertExpressionKeyFrame(1f, \"1\");\n                fadeAnimation.DelayBehavior = AnimationDelayBehavior.SetInitialValueBeforeDelay;\n                fadeAnimation.Duration = TimeSpan.FromMilliseconds(700);\n                fadeAnimation.DelayTime = TimeSpan.FromMilliseconds(relativeIndex * 100);\n\n                // Start animations\n                itemVisual.StartAnimation(\"Translation.X\", offsetAnimation);\n                itemVisual.StartAnimation(\"Opacity\", fadeAnimation);\n            }\n            else\n            {\n                Debug.WriteLine(\"Skipping\");\n            }\n\n            itemContainer.Loaded -= this.ItemContainer_Loaded;\n        }\n\n#endregion\n\n        private void HomeFeedGrid_ItemClick(object sender, ItemClickEventArgs e)\n        {\n            var selectedFeed = e.ClickedItem as Feed;\n            _persistedItemIndex = HomeFeedGrid.Items.IndexOf(e.ClickedItem);\n            ViewModel.NavigateToFeed(selectedFeed);\n        }\n\n        private void AutoSuggestBox_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)\n        {\n            if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput)\n            {\n                using (var context = new LocalStorageContext())\n                {\n                    var results = context.EpisodeCache.Where(t => t.Title.ToLower().Contains(sender.Text.ToLower()));\n                    sender.ItemsSource = results.ToList();\n                }\n            }\n        }\n\n        private void AutoSuggestBox_SuggestionChosen(AutoSuggestBox sender, AutoSuggestBoxSuggestionChosenEventArgs args)\n        {\n            ViewModel.NavigateToEpisode(args.SelectedItem as Episode);\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Views/InkNote.xaml",
    "content": "﻿<!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<Page\n    x:Class=\"BuildCast.Views.InkNote\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\" Margin=\"0,0,0,0\">\n        <TextBlock x:Name=\"header\" Style=\"{ThemeResource TitleTextBlockStyle}\" Margin=\"24,40,0,0\">Ink Note</TextBlock>\n\n        <Viewbox Name=\"myViewbox\" RelativePanel.Below=\"myCommandBar\" HorizontalAlignment=\"Stretch\" VerticalAlignment=\"Stretch\">\n            <ScrollViewer Name=\"myScrollViewer\"  HorizontalScrollMode=\"Enabled\" HorizontalScrollBarVisibility=\"Visible\" ZoomMode=\"Enabled\"  HorizontalContentAlignment=\"Center\">\n                <Grid x:Name=\"directContainer\">\n                    <Grid x:Name=\"myImageContainer\">\n                        <Image Name=\"framergrab\"/>\n                        <Viewbox>\n                            <InkCanvas x:Name=\"inkingCanvas\"/>\n                        </Viewbox>\n                        <Canvas x:Name =\"xamloverlay\" Background=\"Transparent\" IsHitTestVisible=\"False\">\n\n                        </Canvas>\n                    </Grid>\n                </Grid>\n            </ScrollViewer>\n        </Viewbox>\n\n        <StackPanel Orientation=\"Horizontal\" x:Name=\"tools\" HorizontalAlignment=\"Right\" Margin=\"0,40,0,0\">\n            <InkToolbar TargetInkCanvas=\"{x:Bind inkingCanvas}\" VerticalAlignment=\"Top\" Background=\"Transparent\">\n                <InkToolbar.Resources>\n                    <SolidColorBrush x:Key=\"InkToolbarButtonBackgroundThemeBrush\" Color=\"Transparent\"/>\n                </InkToolbar.Resources>\n            </InkToolbar>\n            <CommandBar ClosedDisplayMode=\"Compact\" DefaultLabelPosition=\"Right\" Background=\"Transparent\">\n                <AppBarSeparator></AppBarSeparator>\n                <AppBarButton x:Name=\"clearButton\" \n                              Click=\"ClearButton_Click\"  \n                              RightTapped=\"ClearButton_RightClick\"\n                              Label=\"Clear\" LabelPosition=\"Default\">\n                    <AppBarButton.Icon>\n                        <SymbolIcon Symbol=\"Clear\"></SymbolIcon>\n                    </AppBarButton.Icon>\n                </AppBarButton>\n                <AppBarButton x:Name=\"saveButton\" Click=\"SaveButton_Click\" Label=\"Save\" Icon=\"Save\" />\n                <AppBarButton x:Name=\"deleteButton\" Click=\"DeleteButton_Click\" Label=\"Delete\" Icon=\"Delete\" />\n                <AppBarButton x:Name=\"shareButton\" Click=\"ShareButton_Click\" Label=\"Share\">\n                    <AppBarButton.Icon>\n                        <FontIcon FontFamily=\"Segoe MDL2 Assets\" Glyph=\"&#xE72D;\" />\n                    </AppBarButton.Icon>\n                </AppBarButton>\n            </CommandBar>\n\n        </StackPanel>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "src/BuildCast/Views/InkNote.xaml.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.IO;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing BuildCast.DataModel;\nusing BuildCast.Services.Navigation;\nusing BuildCast.ViewModels;\nusing Microsoft.Graphics.Canvas;\nusing Windows.ApplicationModel.DataTransfer;\nusing Windows.Foundation;\nusing Windows.Storage.Streams;\nusing Windows.UI;\nusing Windows.UI.Core;\nusing Windows.UI.Input.Inking;\nusing Windows.UI.Input.Inking.Analysis;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Media.Imaging;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace BuildCast.Views\n{\n    public sealed partial class InkNote : Page, IPageWithViewModel<InkNoteViewModel>\n    {\n        private readonly InkAnalyzer _inkAnalyzer;\n        private BuildCast.DataModel.InkNote _inkNote;\n        private InkNoteData _data;\n        private bool _editingExisting;\n        private InkPresenter _inkPresenter;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"InkNote\"/> class.\n        /// </summary>\n        public InkNote()\n        {\n            this.InitializeComponent();\n            inkingCanvas.InkPresenter.IsInputEnabled = true;\n            inkingCanvas.InkPresenter.InputDeviceTypes = Windows.UI.Core.CoreInputDeviceTypes.Pen | CoreInputDeviceTypes.Mouse;\n            inkingCanvas.Tapped += InkCanvas_Tapped;\n            _inkAnalyzer = new InkAnalyzer();\n            _inkPresenter = inkingCanvas.InkPresenter;\n            _inkPresenter.StrokesCollected += InkPresenter_StrokesCollected;\n            _inkPresenter.StrokesErased += InkPresenter_StrokesErased;\n            _inkPresenter.UnprocessedInput.PointerPressed += UnprocessedInput_PointerPressed;\n            _inkPresenter.InputProcessingConfiguration.RightDragAction = InkInputRightDragAction.LeaveUnprocessed;\n        }\n\n        public InkNoteViewModel ViewModel { get; set; }\n\n        public void UpdateBindings()\n        {\n            Bindings.Update();\n        }\n\n        private void InkPresenter_StrokesCollected(InkPresenter sender, InkStrokesCollectedEventArgs args)\n        {\n            _inkAnalyzer.AddDataForStrokes(args.Strokes);\n        }\n\n        private void InkPresenter_StrokesErased(InkPresenter sender, InkStrokesErasedEventArgs args)\n        {\n            _inkAnalyzer.RemoveDataForStrokes(args.Strokes.Select(i => i.Id));\n        }\n\n        private async void UnprocessedInput_PointerPressed(InkUnprocessedInput sender, PointerEventArgs args)\n        {\n            await AnalyzeInkAsync();\n        }\n\n        private async void InkCanvas_Tapped(object sender, TappedRoutedEventArgs e)\n        {\n            await AnalyzeInkAsync();\n        }\n\n        private async Task AnalyzeInkAsync()\n        {\n            // Does all the recognition\n            var result = await _inkAnalyzer.AnalyzeAsync();\n\n            if (result.Status == InkAnalysisStatus.Updated)\n            {\n                // Filter recognition by shapes. Options inlcude lists, paragraphs, words etc.\n                var drawings = _inkAnalyzer.AnalysisRoot.FindNodes(InkAnalysisNodeKind.InkDrawing);\n\n                foreach (InkAnalysisInkDrawing drawing in drawings)\n                {\n                    if (drawing.DrawingKind == InkAnalysisDrawingKind.Circle)\n                    {\n                        AddHeart(drawing);\n                        RemoveInkStrokes(drawing);\n                    }\n                    else if (drawing.DrawingKind == InkAnalysisDrawingKind.Triangle || drawing.DrawingKind == InkAnalysisDrawingKind.EquilateralTriangle)\n                    {\n                        if (string.IsNullOrEmpty(customEmojiGlyph))\n                        {\n                            await PickEmoji();\n                        }\n\n                        if (!string.IsNullOrEmpty(customEmojiGlyph))\n                        {\n                            AddEmoji(drawing, customEmojiGlyph);\n                        }\n\n                        RemoveInkStrokes(drawing);\n                    }\n                }\n\n                _inkAnalyzer.ClearDataForAllStrokes();\n                _inkPresenter.StrokeContainer.DeleteSelected();\n            }\n        }\n\n        private void RemoveInkStrokes(InkAnalysisInkDrawing drawing)\n        {\n            foreach (var strokeId in drawing.GetStrokeIds())\n            {\n                InkStroke stroke = _inkPresenter.StrokeContainer.GetStrokeById(strokeId);\n                if (stroke != null)\n                {\n                    stroke.Selected = true;\n                }\n            }\n\n            _inkAnalyzer.RemoveDataForStrokes(drawing.GetStrokeIds());\n        }\n\n        private void AddHeart(InkAnalysisInkDrawing drawing)\n        {\n            Viewbox vb = new Viewbox();\n            TextBlock tb = new TextBlock();\n\n            vb.SetValue(Canvas.TopProperty, drawing.BoundingRect.Top);\n            vb.SetValue(Canvas.LeftProperty, drawing.BoundingRect.Left);\n\n            tb.Foreground = new SolidColorBrush(Colors.Red);\n            tb.FontFamily = new FontFamily(\"Segoe MDL2 Assets\");\n            tb.Text = \"\\uE00B\";\n\n            tb.FontSize = 68;\n            vb.Width = drawing.BoundingRect.Width;\n            vb.Height = drawing.BoundingRect.Height;\n            vb.Child = tb;\n            vb.Stretch = Stretch.Fill;\n            xamloverlay.Children.Add(vb);\n        }\n\n        private void AddEmoji(InkAnalysisInkDrawing drawing, string glyph)\n        {\n            Viewbox vb = new Viewbox();\n            TextBlock tb = new TextBlock();\n\n            vb.SetValue(Canvas.TopProperty, drawing.BoundingRect.Top);\n            vb.SetValue(Canvas.LeftProperty, drawing.BoundingRect.Left);\n\n            tb.Text = glyph;\n\n            tb.FontSize = 68;\n            vb.Width = drawing.BoundingRect.Width;\n            vb.Height = drawing.BoundingRect.Height;\n            vb.Child = tb;\n            vb.Stretch = Stretch.Fill;\n            xamloverlay.Children.Add(vb);\n        }\n\n        #region Navigation\n        protected async override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            CoreWindow.GetForCurrentThread().KeyDown += InkNote_KeyDown;\n\n            _inkNote = e.Parameter as BuildCast.DataModel.InkNote;\n\n            if (Player.InkNoteData != null)\n            {\n                framergrab.Source = await Player.InkNoteData.GetImage(Image_ImageOpened);\n            }\n            else\n            {\n                await LoadExisting(_inkNote);\n                _editingExisting = true;\n            }\n\n            InkDrawingAttributes a = new InkDrawingAttributes();\n            a.Color = Colors.White;\n            inkingCanvas.InkPresenter.UpdateDefaultDrawingAttributes(a);\n\n            base.OnNavigatedTo(e);\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            CoreWindow.GetForCurrentThread().KeyDown -= InkNote_KeyDown;\n            base.OnNavigatedFrom(e);\n        }\n\n        private string customEmojiGlyph;\n\n        private async void InkNote_KeyDown(CoreWindow sender, KeyEventArgs args)\n        {\n            if (args.VirtualKey == Windows.System.VirtualKey.E)\n            {\n                ContentDialog cd = new ContentDialog();\n                var tb = new TextBox();\n                tb.KeyDown += (s, e) =>\n                {\n                    if (e.KeyStatus.ScanCode == 0)\n                    {\n                        customEmojiGlyph = tb.Text;\n                        e.Handled = true;\n                        cd.Hide();\n                    }\n                };\n                tb.FontSize = 100;\n                tb.Width = 150;\n                cd.Content = tb;\n                tb.Focus(FocusState.Keyboard);\n                await cd.ShowAsync();\n            }\n        }\n\n        private async Task PickEmoji()\n        {\n            ContentDialog cd = new ContentDialog();\n            var tb = new TextBox();\n            tb.KeyDown += (s, e) =>\n            {\n                if (e.KeyStatus.ScanCode == 28)\n                {\n                    customEmojiGlyph = tb.Text;\n                    e.Handled = true;\n                    cd.Hide();\n                }\n            };\n            tb.FontSize = 100;\n            tb.Width = 150;\n            cd.Content = tb;\n            tb.Focus(FocusState.Keyboard);\n            await cd.ShowAsync();\n        }\n\n        private void Image_ImageOpened()\n        {\n            inkingCanvas.Width = framergrab.ActualWidth;\n            inkingCanvas.Height = framergrab.ActualHeight;\n        }\n        #endregion\n\n        #region LoadSave\n\n        private async Task LoadInk(byte[] ink)\n        {\n            using (MemoryStream ms = new MemoryStream(ink))\n            {\n                using (var memStream = ms.AsRandomAccessStream())\n                {\n                    await inkingCanvas.InkPresenter.StrokeContainer.LoadAsync(memStream);\n                }\n            }\n        }\n\n        private async Task LoadExisting(BuildCast.DataModel.InkNote meme)\n        {\n            using (var db = new LocalStorageContext())\n            {\n                _data = db.MemeData.Where(l => l.InkMeme == meme.Id).FirstOrDefault();\n                if (_data != null)\n                {\n                    var image = await _data.GetImage(Image_ImageOpened);\n                    framergrab.Source = image;\n                    await LoadInk(_data.Ink);\n                }\n            }\n        }\n\n        private async Task SaveInkNote()\n        {\n            if (_editingExisting)\n            {\n                using (MemoryStream ms = new MemoryStream())\n                {\n                    using (var memStream = ms.AsRandomAccessStream())\n                    {\n                        await inkingCanvas.InkPresenter.StrokeContainer.SaveAsync(memStream).AsTask().ConfigureAwait(false);\n                    }\n\n                    if (ms.TryGetBuffer(out ArraySegment<byte> foo))\n                    {\n                        _data.Ink = foo.Array;\n                    }\n\n                    using (var db = new LocalStorageContext())\n                    {\n                        db.MemeData.Update(_data);\n                        await db.SaveChangesAsync();\n                    }\n                }\n            }\n            else\n            {\n                Player.InkNoteData.InkMeme = _inkNote.Id;\n                _inkNote.HasInk = true;\n                using (MemoryStream ms = new MemoryStream())\n                {\n                    using (var memStream = ms.AsRandomAccessStream())\n                    {\n                        await inkingCanvas.InkPresenter.StrokeContainer.SaveAsync(memStream).AsTask().ConfigureAwait(false);\n                    }\n\n                    if (ms.TryGetBuffer(out ArraySegment<byte> foo))\n                    {\n                        Player.InkNoteData.Ink = foo.Array;\n                    }\n\n                    using (var db = new LocalStorageContext())\n                    {\n                        db.Memes.Add(_inkNote);\n                        await db.SaveChangesAsync();\n\n                        db.MemeData.Add(Player.InkNoteData);\n                        await db.SaveChangesAsync();\n                    }\n                }\n\n                Player.InkNoteData = null;\n                ViewModel.GoBack();\n            }\n        }\n        #endregion\n\n        #region ButtonHandlers\n        private async void SaveButton_Click(object sender, RoutedEventArgs e)\n        {\n            await SaveInkNote();\n        }\n\n        private void DeleteButton_Click(object sender, RoutedEventArgs e)\n        {\n            if (_editingExisting)\n            {\n                using (var db = new LocalStorageContext())\n                {\n                    db.Memes.Remove(_inkNote);\n                    db.SaveChanges();\n\n                    if (_data != null)\n                    {\n                        db.MemeData.Remove(_data);\n                        db.SaveChanges();\n                    }\n                }\n            }\n        }\n\n        private void ShareButton_Click(object sender, RoutedEventArgs e)\n        {\n            DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();\n            dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(this.DataRequested);\n            DataTransferManager.ShowShareUI();\n        }\n\n        private void ClearButton_Click(object sender, RoutedEventArgs e)\n        {\n            inkingCanvas.InkPresenter.StrokeContainer.Clear();\n        }\n\n        private void ClearButton_RightClick(object sender, Windows.UI.Xaml.Input.RightTappedRoutedEventArgs e)\n        {\n            xamloverlay.Children.Clear();\n        }\n        #endregion\n\n        #region Sharing\n\n        // Prepare data package with coloring page for sharing.\n        private async void DataRequested(DataTransferManager sender, DataRequestedEventArgs e)\n        {\n            sender.DataRequested -= new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(this.DataRequested);\n            DataRequest request = e.Request;\n            DataRequestDeferral deferral = request.GetDeferral();\n            request.Data.Properties.Title = $\"A frame from {_inkNote.GetEpisode()?.Title}\";\n            request.Data.Properties.ApplicationName = \"BuildCast\";\n            request.Data.Properties.Description = \"#msbuild\";\n\n            // Don't dispose as it breaks sharing\n            InMemoryRandomAccessStream inMemoryStream = new InMemoryRandomAccessStream();\n            {\n                bool saved = await Save_InkedImagetoStream(inMemoryStream);\n                inMemoryStream.Seek(0);\n                request.Data.SetBitmap(RandomAccessStreamReference.CreateFromStream(inMemoryStream));\n            }\n\n            deferral.Complete();\n        }\n\n        private async Task<bool> Save_InkedImagetoStream(IRandomAccessStream stream)\n        {\n            bool hasXamlOverlay = xamloverlay.Children.Count > 0;\n\n            if (_data == null)\n            {\n                _data = Player.InkNoteData;\n            }\n\n            if (_data == null)\n            {\n                return false;\n            }\n\n            using (var imageStream = await _data.GetImageStream())\n            {\n                CanvasDevice device = CanvasDevice.GetSharedDevice();\n\n                var image = await CanvasBitmap.LoadAsync(device, imageStream);\n\n                using (var renderTarget = new CanvasRenderTarget(device, (int)inkingCanvas.ActualWidth, (int)inkingCanvas.ActualHeight, 96))\n                {\n                    using (CanvasDrawingSession ds = renderTarget.CreateDrawingSession())\n                    {\n                        ds.Clear(Colors.White);\n\n                        ds.DrawImage(image, new Rect(0, 0, (int)inkingCanvas.ActualWidth, (int)inkingCanvas.ActualHeight));\n\n                        if (hasXamlOverlay)\n                        {\n                            await DrawXamlOverlay(device, renderTarget, ds);\n                        }\n\n                        ds.Units = CanvasUnits.Pixels;\n                        ds.DrawInk(inkingCanvas.InkPresenter.StrokeContainer.GetStrokes());\n                    }\n\n                    await renderTarget.SaveAsync(stream, CanvasBitmapFileFormat.Png);\n                }\n            }\n\n            return true;\n        }\n\n        private async Task DrawXamlOverlay(CanvasDevice device, CanvasRenderTarget renderTarget, CanvasDrawingSession ds)\n        {\n            IBuffer renderBitmapPixels = null;\n            Size bitmapSizeAt96Dpi;\n            var overlay = await Save_XAML();\n            bitmapSizeAt96Dpi = new Size(\n                                        overlay.PixelWidth,\n                                        overlay.PixelHeight);\n            renderBitmapPixels = await overlay.GetPixelsAsync();\n\n            using (var win2dRenderedBitmap =\n                      CanvasBitmap.CreateFromBytes(\n                      device,\n                      renderBitmapPixels,\n                      (int)bitmapSizeAt96Dpi.Width,\n                      (int)bitmapSizeAt96Dpi.Height,\n                      Windows.Graphics.DirectX.DirectXPixelFormat.B8G8R8A8UIntNormalized,\n                      96.0f))\n            {\n                ds.DrawImage(win2dRenderedBitmap,\n                new Rect(0, 0, renderTarget.SizeInPixels.Width, renderTarget.SizeInPixels.Height),\n                new Rect(0, 0, bitmapSizeAt96Dpi.Width, bitmapSizeAt96Dpi.Height));\n            }\n        }\n\n        private async Task<RenderTargetBitmap> Save_XAML()\n        {\n            var overlay = new RenderTargetBitmap();\n            await overlay.RenderAsync(xamloverlay);\n            return overlay;\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Views/NavigationRoot.xaml",
    "content": "﻿<!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<Page\n    x:Class=\"BuildCast.Views.NavigationRoot\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:RS3=\"using:Windows.UI.Xaml.Controls?IsApiContractPresent(Windows.Foundation.UniversalApiContract,5)\"\n    xmlns:appmodel=\"using:Windows.ApplicationModel\"\n    xmlns:animations=\"using:Microsoft.Toolkit.Uwp.UI.Animations\"\n    xmlns:local=\"using:BuildCast.Views\"\n    mc:Ignorable=\"d\"\n    Loaded=\"Page_Loaded\"\n    >\n\n    <Grid x:Name=\"NavRootGrid\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Rectangle x:Name=\"BorderRect\" x:Load=\"False\" \n                   Fill=\"{StaticResource NavigationViewDefaultPaneBackground}\" \n                   HorizontalAlignment=\"Left\" Height=\"1000\" Width=\"48\"/>\n\n        <RS3:NavigationView IsSettingsVisible=\"True\" x:Name=\"navview\" AlwaysShowHeader=\"False\" ItemInvoked=\"Navview_ItemInvoked\">\n            <RS3:NavigationView.MenuItems>\n                <RS3:NavigationViewItem Content=\"Browse videos\" IsSelected=\"True\">\n                    <RS3:NavigationViewItem.Icon>\n                        <FontIcon FontFamily=\"Segoe MDL2 Assets\" Glyph=\"&#xE720;\" ></FontIcon>\n                    </RS3:NavigationViewItem.Icon>\n                </RS3:NavigationViewItem>\n                <RS3:NavigationViewItem Content=\"Now playing\" >\n                    <RS3:NavigationViewItem.Icon>\n                        <FontIcon FontFamily=\"/Assets/BCastMDL2.ttf#BuildCast MDL2 Assets\" Glyph=\"&#xE93D;\"/>\n                    </RS3:NavigationViewItem.Icon>\n                </RS3:NavigationViewItem>\n                <RS3:NavigationViewItem Content=\"Favorites\" >\n                    <RS3:NavigationViewItem.Icon>\n                        <FontIcon x:Name=\"FavoriteStaticIcon\" FontFamily=\"Segoe MDL2 Assets\" Glyph=\"&#xE728;\" ></FontIcon>\n                    </RS3:NavigationViewItem.Icon>\n                </RS3:NavigationViewItem>\n                <RS3:NavigationViewItem Content=\"Notes\" >\n                    <RS3:NavigationViewItem.Icon>\n                        <FontIcon x:Name=\"NoteStaticIcon\" FontFamily=\"/Assets/BCastMDL2.ttf#BuildCast MDL2 Assets\" Glyph=\"&#xECFC;\" ></FontIcon>\n                    </RS3:NavigationViewItem.Icon>\n                </RS3:NavigationViewItem>\n                <RS3:NavigationViewItem Content=\"Downloads\" >\n                    <RS3:NavigationViewItem.Icon>\n                        <FontIcon x:Name=\"DoanlodsStaticIcon\" FontFamily=\"Segoe MDL2 Assets\" Glyph=\"&#xE896;\" ></FontIcon>\n                    </RS3:NavigationViewItem.Icon>\n                </RS3:NavigationViewItem>\n            </RS3:NavigationView.MenuItems>\n            <Frame x:Name=\"appNavFrame\" Navigated=\"AppNavFrame_Navigated\">\n            </Frame>\n        </RS3:NavigationView>\n        <TextBlock x:Name=\"windowTitle\" Style=\"{ThemeResource CaptionTextBlockStyle}\" Visibility=\"{x:Bind TitleHelper.TitleVisibility, Mode=OneWay}\" Margin=\"{x:Bind TitleHelper.TitlePosition, Mode=OneWay}\" VerticalAlignment=\"Top\" Text=\"{x:Bind appmodel:Package.Current.DisplayName}\" animations:Implicit.Animations=\"{StaticResource LayoutImplicitAnimations}\"></TextBlock>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "src/BuildCast/Views/NavigationRoot.xaml.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nnamespace BuildCast.Views\n{\n    using System;\n    using BuildCast.DataModel;\n    using BuildCast.Helpers;\n    using BuildCast.Services.Navigation;\n    using Microsoft.Toolkit.Uwp.Helpers;\n    using Windows.System.Profile;\n    using Windows.UI.Core;\n    using Windows.UI.Xaml;\n    using Windows.UI.Xaml.Controls;\n    using Windows.UI.Xaml.Navigation;\n\n    public sealed partial class NavigationRoot : Page\n    {\n        private static NavigationRoot _instance;\n        private INavigationService _navigationService;\n        private bool hasLoadedPreviously;\n\n        public NavigationRoot()\n        {\n            _instance = this;\n            this.InitializeComponent();\n\n            var nav = SystemNavigationManager.GetForCurrentView();\n\n            nav.BackRequested += Nav_BackRequested;\n        }\n\n        public static NavigationRoot Instance\n        {\n            get\n            {\n                return _instance;\n            }\n        }\n\n        public Frame AppFrame\n        {\n            get\n            {\n                return appNavFrame;\n            }\n        }\n\n        public TitleBarHelper TitleHelper\n        {\n            get\n            {\n                return TitleBarHelper.Instance;\n            }\n        }\n\n        public void InitializeNavigationService(INavigationService navigationService)\n        {\n            _navigationService = navigationService;\n            // TODO: Hook into Navigation Events for loading screen\n            _navigationService.Navigated += NavigationService_Navigated;\n        }\n\n        public void ToggleFullscreen()\n        {\n            ViewModeService.Instance.ToggleFullscreen();\n        }\n\n        public void ExitFullScreen()\n        {\n            ViewModeService.Instance.DoExitFullscreen();\n        }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            base.OnNavigatedTo(e);\n\n            if (e.Parameter is Episode)\n            {\n                AppFrame.Navigate(typeof(Player), e.Parameter);\n            }\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            ViewModeService.Instance.UnRegister();\n        }\n\n        private void Nav_BackRequested(object sender, BackRequestedEventArgs e)\n        {\n            var ignored = _navigationService.GoBackAsync();\n            e.Handled = true;\n        }\n\n        private void NavigationService_Navigated(object sender, EventArgs e)\n        {\n            var ignored = DispatcherHelper.ExecuteOnUIThreadAsync(() =>\n            {\n                var nav = SystemNavigationManager.GetForCurrentView();\n                nav.AppViewBackButtonVisibility = _navigationService.CanGoBack ? AppViewBackButtonVisibility.Visible : AppViewBackButtonVisibility.Collapsed;\n            });\n        }\n\n        private void AppNavFrame_Navigated(object sender, NavigationEventArgs e)\n        {\n            switch (e.SourcePageType)\n            {\n                case Type c when e.SourcePageType == typeof(Home):\n                    ((NavigationViewItem)navview.MenuItems[0]).IsSelected = true;\n                    break;\n                case Type c when e.SourcePageType == typeof(Player):\n                    ((NavigationViewItem)navview.MenuItems[1]).IsSelected = true;\n                    break;\n                case Type c when e.SourcePageType == typeof(Favorites):\n                    ((NavigationViewItem)navview.MenuItems[2]).IsSelected = true;\n                    break;\n                case Type c when e.SourcePageType == typeof(Notes):\n                    ((NavigationViewItem)navview.MenuItems[3]).IsSelected = true;\n                    break;\n                case Type c when e.SourcePageType == typeof(Downloads):\n                    ((NavigationViewItem)navview.MenuItems[4]).IsSelected = true;\n                    break;\n            }\n        }\n\n        private void Page_Loaded(object sender, RoutedEventArgs e)\n        {\n            // Only do an inital navigate the first time the page loads\n            // when we switch out of compactoverloadmode this will fire but we don't want to navigate because\n            // there is already a page loaded\n            if (!hasLoadedPreviously)\n            {\n                _navigationService.NavigateToPodcastsAsync();\n                hasLoadedPreviously = true;\n            }\n\n            ViewModeService.Instance.Register(navview, appNavFrame);\n\n            if (AnalyticsInfo.VersionInfo.DeviceFamily == \"Windows.Xbox\")\n            {\n                ViewModeService.Instance.CollapseNavigationViewToBurger();\n                TitleBarHelper.Instance.TitleVisibility = Visibility.Collapsed;\n            }\n        }\n\n        private void Navview_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args)\n        {\n            if (args.IsSettingsInvoked)\n            {\n                _navigationService.NavigateToSettingsAsync();\n                return;\n            }\n\n            switch (args.InvokedItem as string)\n            {\n                case \"Browse videos\":\n                    _navigationService.NavigateToPodcastsAsync();\n                    break;\n                case \"Now playing\":\n                    _navigationService.NavigateToNowPlayingAsync();\n                    break;\n                case \"Favorites\":\n                    _navigationService.NavigateToFavoritesAsync();\n                    break;\n                case \"Notes\":\n                    _navigationService.NavigateToNotesAsync();\n                    break;\n                case \"Downloads\":\n                    _navigationService.NavigateToDownloadsAsync();\n                    break;\n            }\n        }\n\n        #region Binding Helpers\n        public static string GetIcon(string kind)\n        {\n            switch (kind)\n            {\n                case \"Phone\":\n                    return \"\\uE8EA\";\n                case \"Xbox\":\n                    return \"\\uE7FC\";\n                default:\n                    return \"\\uE770\";\n            }\n        }\n\n        public static string ShortDate(DateTime d)\n        {\n            return d.ToString(\"d\");\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Views/NoteDataTemplateSelector.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing BuildCast.DataModel;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace BuildCast.Views\n{\n    public class NoteDataTemplateSelector : DataTemplateSelector\n    {\n        public DataTemplate BookmarkTemplate { get; set; }\n\n        public DataTemplate EpisodeTemplate { get; set; }\n\n        protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)\n        {\n            if (item is EpisodeWithState)\n            {\n                return EpisodeTemplate;\n            }\n\n            return BookmarkTemplate;\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Views/Notes.xaml",
    "content": "﻿<!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<Page\n    x:Class=\"BuildCast.Views.Notes\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:controls=\"using:Windows.UI.Xaml.Controls\"\n    xmlns:media=\"using:Windows.UI.Xaml.Media\"\n    xmlns:datamodel=\"using:BuildCast.DataModel\"\n    xmlns:views=\"using:BuildCast.Views\"\n    mc:Ignorable=\"d\" Loaded=\"Notes_Loaded\"\n    xmlns:helpers=\"using:BuildCast.Helpers\"\n    xmlns:animations=\"using:Microsoft.Toolkit.Uwp.UI.Animations\"\n    animations:Implicit.HideAnimations=\"{StaticResource DefaultListHideAnimations}\">\n\n    <Page.Resources>\n        <helpers:DeleteEpisodeNoteCommand x:Key=\"deleteEpisodeNoteCommand\"/>\n    </Page.Resources>\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\" Margin=\"{StaticResource PageMargin}\">\n        <Grid.Resources>\n            <CollectionViewSource x:Name=\"groupInfoCVS\" IsSourceGrouped=\"true\" Source=\"{x:Bind ViewModel.Notes, Mode=OneWay}\"/>\n            <Thickness x:Key=\"topPosition\">0,37,0,0</Thickness>\n            <Thickness x:Key=\"commandbarPosition\">0,30,0,0</Thickness>\n            <views:NoteDataTemplateSelector \n                x:Key=\"theSelector\"\n                BookmarkTemplate=\"{StaticResource bookmarkItemTemplate}\"\n                EpisodeTemplate=\"{StaticResource episodeTemplate}\"\n                />\n\n            <DataTemplate x:Key=\"bookmarkItemTemplate\">\n\n                <SwipeControl x:Name=\"swipeContainer\">\n\n                    <SwipeControl.RightItems>\n                        <SwipeItems Mode=\"Execute\">\n                            <SwipeItem x:Name=\"swipeDelete\" Text=\"Delete\" Foreground=\"{ThemeResource SystemControlForegroundChromeWhiteBrush}\" \n                                       Background=\"{ThemeResource SystemAccentColor}\" Invoked=\"SwipeDelete_Invoked\">\n                                <SwipeItem.IconSource>\n                                    <SymbolIconSource Symbol=\"Delete\"/>\n                                </SwipeItem.IconSource>\n                            </SwipeItem>\n                        </SwipeItems>\n                    </SwipeControl.RightItems>\n\n                    <Grid Margin=\"5\" Background=\"{ThemeResource SystemControlTransparentBrush}\" Height=\"44\">\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"*\"></ColumnDefinition>\n                            <ColumnDefinition Width=\"*\"></ColumnDefinition>\n                            <ColumnDefinition Width=\"*\"></ColumnDefinition>\n                            <ColumnDefinition Width=\"Auto\"></ColumnDefinition>\n                        </Grid.ColumnDefinitions>\n\n                        <TextBlock Text=\"{Binding Type}\" Grid.Column=\"0\" Margin=\"2\"/>\n                        <TextBlock Text=\"{Binding Time}\" Grid.Column=\"1\" Margin=\"2\" Foreground=\"DarkGray\"/>\n                        <TextBlock Text=\"{Binding NoteText}\" Grid.Column=\"2\" TextWrapping=\"Wrap\" Margin=\"2\"/>\n                    </Grid>\n                </SwipeControl>\n            </DataTemplate>\n            \n            <DataTemplate x:Key=\"episodeTemplate\" x:DataType=\"datamodel:EpisodeWithState\">\n                <Grid PointerEntered=\"Grid_PointerEntered\" PointerExited=\"Grid_PointerExited\" Background=\"{ThemeResource SystemControlTransparentBrush}\">\n                    <Grid.ColumnDefinitions>\n                        <ColumnDefinition Width=\"80\"></ColumnDefinition>\n                        <ColumnDefinition Width=\"*\"></ColumnDefinition>\n                        <ColumnDefinition Width=\"80\"></ColumnDefinition>\n                        <ColumnDefinition Width=\"80\"></ColumnDefinition>\n                        <ColumnDefinition Width=\"Auto\"></ColumnDefinition>\n                    </Grid.ColumnDefinitions>\n                    \n                    <Image Grid.Column=\"0\" Width=\"40\" Height=\"40\" >\n                        <Image.Source>\n                            <BitmapImage UriSource=\"{x:Bind Episode.ItemThumbnail}\" />\n                        </Image.Source>\n                    </Image>\n                    <TextBlock Text=\"{x:Bind Episode.Title}\" Grid.Column=\"1\"/>\n                    <FontIcon Visibility=\"{x:Bind Episode.IsDownloaded}\" Glyph=\"&#xE118;\" Grid.Column=\"2\" HorizontalAlignment=\"Center\" />\n                    <TextBlock Text=\"{x:Bind  PlaybackState.GetPercent(Episode)}\" FontSize=\"30\" Grid.Column=\"3\"/>\n\n                    <Grid Grid.Column=\"4\">\n                        <AppBarButton Width=\"30\" Height=\"30\" Icon=\"Delete\" VerticalAlignment=\"Top\" IsTabStop=\"False\" Style=\"{StaticResource hoverAppbutton}\"/>\n                    </Grid>\n                </Grid>\n            </DataTemplate>\n        </Grid.Resources>\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n\n        <TextBlock\n                x:Name=\"title\"\n                Grid.Row=\"0\"\n                x:Uid=\"Bookmarks_Title\"\n                Style=\"{StaticResource PageTitleStyle}\"\n            animations:Implicit.ShowAnimations=\"{StaticResource DefaultTitleShowAnimations}\"\n            />\n\n        <ListView \n                x:Name=\"notesListView\"\n                Grid.Row=\"1\"\n                ItemsSource=\"{Binding Source={StaticResource groupInfoCVS}}\"\n            ItemTemplateSelector=\"{StaticResource theSelector}\"\n                ItemClick=\"NotesListView_Tapped\"\n                IsItemClickEnabled=\"True\"\n                SelectionMode=\"None\"\n            animations:Implicit.ShowAnimations=\"{StaticResource DefaultListShowAnimations}\"\n            animations:Implicit.HideAnimations=\"{StaticResource DefaultListHideAnimations}\"\n                >\n            <ListView.ItemContainerStyle>\n                <Style TargetType=\"ListViewItem\">\n                    <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"></Setter>\n                    <Setter Property=\"ContextFlyout\">\n                        <Setter.Value>\n                            <MenuFlyout Opening=\"MenuFlyout_Opening\">\n                                <MenuFlyoutItem Text=\"Delete\" Icon=\"Delete\" Command=\"{StaticResource deleteEpisodeNoteCommand}\" Click=\"MenuFlyoutItem_Click\"/>\n                            </MenuFlyout>\n                        </Setter.Value>\n                    </Setter>\n                </Style>\n            </ListView.ItemContainerStyle>\n            \n            <ListView.GroupStyle>\n                <GroupStyle>\n                    <GroupStyle.HeaderTemplate>\n                        <DataTemplate>\n                            <TextBlock Text=\"{Binding Key}\"/>\n                        </DataTemplate>\n                    </GroupStyle.HeaderTemplate>\n                </GroupStyle>\n            </ListView.GroupStyle>\n        </ListView>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "src/BuildCast/Views/Notes.xaml.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing BuildCast.DataModel;\nusing BuildCast.Helpers;\nusing BuildCast.Services.Navigation;\nusing BuildCast.ViewModels;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Hosting;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace BuildCast.Views\n{\n    public sealed partial class Notes : Page, IPageWithViewModel<NotesViewModel>\n    {\n        public NotesViewModel ViewModel { get; set; }\n\n        public Notes()\n        {\n            this.InitializeComponent();\n        }\n\n        public void UpdateBindings()\n        {\n            Bindings?.Update();\n        }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            SetupMenuFlyout();\n            Canvas.SetZIndex(this, 0);\n        }\n\n        protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)\n        {\n            base.OnNavigatingFrom(e);\n            Canvas.SetZIndex(this, 1);\n        }\n\n        private async void Notes_Loaded(object sender, RoutedEventArgs e)\n        {\n            await ViewModel.LoadNotes();\n        }\n\n        private void SetupMenuFlyout()\n        {\n            // Associate the menu with the item requesting it.\n            MenuFlyout menu = new MenuFlyout();\n            menu.Opening += MenuFlyout_Opening;\n\n            // Add click handlers to the menu flyout items.\n            MenuFlyoutItem item = new MenuFlyoutItem { Text = \"Remove item\", Icon = new SymbolIcon { Symbol = Symbol.Delete } };\n            menu.Items.Add(item);\n        }\n\n        private void NotesListView_Tapped(object sender, ItemClickEventArgs e)\n        {\n            ViewModel.NavigateToItem(e.ClickedItem);\n        }\n\n        private void Grid_PointerEntered(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)\n        {\n            Grid originGrid = (Grid)sender;\n\n            Grid hoverGrid = (Grid)originGrid.Children[originGrid.Children.Count - 1];\n            hoverGrid.Visibility = Visibility.Visible;\n        }\n\n        private void Grid_PointerExited(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)\n        {\n            Grid originGrid = (Grid)sender;\n\n            Grid hoverGrid = (Grid)originGrid.Children[originGrid.Children.Count - 1];\n            hoverGrid.Visibility = Visibility.Collapsed;\n        }\n\n        private void ReLoadNotes() => ViewModel.ReloadNotes();\n\n        private void AppBarButton_Click(object sender, RoutedEventArgs e)\n        {\n            dynamic output = (sender as AppBarButton).DataContext;\n            System.Guid inkId = output.InkId;\n\n            switch (output.Type)\n            {\n                case \"Ink\":\n                    using (var db = new LocalStorageContext())\n                    {\n                        var ink = db.Memes.Remove(db.Memes.Find(inkId));\n                        db.SaveChanges();\n\n                        ReLoadNotes();\n                    }\n\n                    break;\n                case \"Bookmark\":\n                    using (var db = new LocalStorageContext())\n                    {\n                        var ink = db.Memes.Remove(db.Memes.Find(inkId));\n                        db.SaveChanges();\n\n                        ReLoadNotes();\n                    }\n\n                    break;\n            }\n        }\n\n        private void SwipeDelete_Invoked(SwipeItem sender, SwipeItemInvokedEventArgs args)\n        {\n            dynamic output = args.SwipeControl.DataContext;\n            System.Guid inkId = output.InkId;\n\n            switch (output.Type)\n            {\n                case \"Ink\":\n                    using (var db = new LocalStorageContext())\n                    {\n                        var ink = db.Memes.Remove(db.Memes.Find(inkId));\n                        db.SaveChanges();\n\n                        ReLoadNotes();\n                    }\n\n                    break;\n                case \"Bookmark\":\n                    using (var db = new LocalStorageContext())\n                    {\n                        var ink = db.Memes.Remove(db.Memes.Find(inkId));\n                        db.SaveChanges();\n\n                        ReLoadNotes();\n                    }\n\n                    break;\n            }\n        }\n\n        private void MenuFlyout_Opening(object sender, object e)\n        {\n            MenuFlyout senderAsMenuFlyout = sender as MenuFlyout;\n\n            foreach (object menuFlyoutItem in senderAsMenuFlyout.Items)\n            {\n                if (menuFlyoutItem.GetType() == typeof(MenuFlyoutItem))\n                {\n                    // Associate the particular FeedItem with the menu flyout (so the MenuFlyoutItem knows which FeedItem to act upon)\n                    ListViewItem itemContainer = senderAsMenuFlyout.Target as ListViewItem;\n\n                    var data = notesListView.ItemFromContainer(itemContainer);\n\n                    (menuFlyoutItem as MenuFlyoutItem).CommandParameter = data;\n                }\n            }\n        }\n\n        private void MenuFlyoutItem_Click(object sender, RoutedEventArgs e)\n        {\n            ReLoadNotes();\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Views/Player.xaml",
    "content": "﻿<!--\n    // ******************************************************************\n    // Copyright (c) Microsoft. All rights reserved.\n    // This code is licensed under the MIT License (MIT).\n    // THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n    // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n    // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n    // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n    // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n    // THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n    // ******************************************************************\n-->\n\n<Page\n    x:Class=\"BuildCast.Views.Player\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:a=\"using:AudioVisualizer\"\n    xmlns:controls=\"using:BuildCast.Controls\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    Loaded=\"Player_Loaded\"\n    xmlns:animations=\"using:Microsoft.Toolkit.Uwp.UI.Animations\"\n    animations:Implicit.HideAnimations=\"{StaticResource DefaultPageHideAnimation}\"\n    Unloaded=\"Player_Unloaded\"\n    mc:Ignorable=\"d\">\n    <Page.Resources>\n        <DataTemplate x:Key=\"RemoteSystemItems\">\n            <Grid>\n                <TextBlock Text=\"{Binding DisplayName}\" />\n            </Grid>\n        </DataTemplate>\n        <ItemsPanelTemplate x:Key=\"ItemsPanelTemplate1\">\n            <ItemsWrapGrid Orientation=\"Vertical\" />\n        </ItemsPanelTemplate>\n    </Page.Resources>\n\n    <Grid x:Name=\"playerPageGrid\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Grid x:Name=\"contents\" Margin=\"0,0,0,0\">\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"86\" />\n                <RowDefinition Height=\"*\" />\n                <RowDefinition Height=\"170\" />\n            </Grid.RowDefinitions>\n\n            <!--  -Player is lower than header in z-order  -->\n            <controls:CustomMediaPlayer x:Name=\"videoPlayer\" Grid.Row=\"1\" />\n\n            <Grid\n                x:Name=\"header\"\n                Grid.Row=\"0\"\n                Padding=\"25,30,6,0\"\n                HorizontalAlignment=\"Stretch\"\n                VerticalAlignment=\"Stretch\"\n                Background=\"{ThemeResource SystemControlAcrylicElementBrush}\"\n                animations:Implicit.ShowAnimations=\"{StaticResource DefaultTitleShowAnimations}\">\n                <animations:Implicit.HideAnimations>\n                    <animations:OpacityAnimation Duration=\"0:0:0.8\" To=\"0\"></animations:OpacityAnimation>\n                </animations:Implicit.HideAnimations>\n                <Image\n                    x:Name=\"podimage\"\n                    Width=\"50\"\n                    Height=\"50\"\n                    HorizontalAlignment=\"Left\"\n                    VerticalAlignment=\"Center\" />\n                <StackPanel\n                    MaxHeight=\"50\"\n                    Margin=\"60,0,240,0\"\n                    VerticalAlignment=\"Center\">\n                    <TextBlock\n                        x:Name=\"nowplayingtitle\"\n                        Style=\"{ThemeResource SubtitleTextBlockStyle}\"\n                        Text=\"{x:Bind _currentEpisode.Title}\"\n                        TextWrapping=\"WrapWholeWords\" />\n                    <TextBlock\n                        x:Name=\"nowplayingsubtitle\"\n                        Style=\"{ThemeResource BodyTextBlockStyle}\"\n                        Text=\"{x:Bind _currentEpisode.Subtitle}\"\n                        TextWrapping=\"WrapWholeWords\" />\n                </StackPanel>\n\n                <CommandBar\n                    x:Name=\"commands\"\n                    Margin=\"0,0,0,0\"\n                    VerticalAlignment=\"Bottom\"\n                    Background=\"Transparent\"\n                    OverflowButtonVisibility=\"Collapsed\">\n\n                    <CommandBar.PrimaryCommands>\n                        <AppBarButton\n                            x:Name=\"bookmarkbutton\"\n                            AccessKey=\"B\"\n                            Click=\"Bookmark_click\"\n                            Label=\"Bookmark\"\n                            XYFocusDown=\"{x:Bind mtc}\"\n                            XYFocusRight=\"{x:Bind sharebutton}\">\n                            <AppBarButton.Icon>\n                                <FontIcon FontFamily=\"/Assets/BCastMDL2.ttf#BuildCast MDL2 Assets\" Glyph=\"&#xEDFF;\" />\n                            </AppBarButton.Icon>\n                        </AppBarButton>\n                        <AppBarButton\n                            x:Name=\"sharebutton\"\n                            AccessKey=\"S\"\n                            Click=\"Share_click\"\n                            Label=\"Ink Note\"\n                            XYFocusDown=\"{x:Bind mtc}\"\n                            XYFocusLeft=\"{x:Bind bookmarkbutton}\">\n                            <FontIcon FontFamily=\"Segoe MDL2 Assets\" Glyph=\"&#xEE56;\" />\n                        </AppBarButton>\n                    </CommandBar.PrimaryCommands>\n                </CommandBar>\n            </Grid>\n            <Grid\n                x:Name=\"playbackcontrolsholder\"\n                Grid.Row=\"2\"\n                Padding=\"24,8,24,0\"\n                Background=\"{ThemeResource SystemControlAcrylicElementBrush}\">\n                <animations:Implicit.ShowAnimations>\n                    <animations:TranslationAnimation Duration=\"0:0:0.55\" From=\"0,100,0\" To=\"0\"></animations:TranslationAnimation>\n                </animations:Implicit.ShowAnimations>\n                <animations:Implicit.HideAnimations>\n                    <animations:OpacityAnimation Duration=\"0:0:0.8\" To=\"0\"></animations:OpacityAnimation>\n                </animations:Implicit.HideAnimations>\n                <controls:CustomMTC\n                    x:Name=\"mtc\"\n                    RefreshRequested=\"{x:Bind ViewModel.RefreshRemoteSystems}\"\n                    RemoteSystemSelected=\"Mtc_RemoteSystemSelected\"\n                    RemoteSystems=\"{x:Bind ViewModel.RemoteSystems}\"\n                    XYFocusUp=\"{x:Bind bookmarkbutton}\" />\n            </Grid>\n            <a:CustomVisualizer\n                x:Name=\"visualizer\"\n                Grid.Row=\"2\"\n                Height=\"48\"\n                HorizontalAlignment=\"Stretch\"\n                VerticalAlignment=\"Bottom\"\n                Draw=\"Visualizer_Draw\" />\n        </Grid>\n        <ContentDialog\n            x:Name=\"RemoteControlPopup\"\n            HorizontalAlignment=\"Center\"\n            VerticalAlignment=\"Center\" />\n\n        <ContentDialog\n            x:Name=\"BookmarkDialog\"\n            Height=\"330\"\n            Background=\"{ThemeResource AppBarBackgroundThemeBrush}\"\n            BorderThickness=\"0,0,0,0\"\n            CloseButtonText=\"Cancel\"\n            PrimaryButtonCommand=\"{x:Bind AddBookmarkCommand}\"\n            PrimaryButtonText=\"Add bookmark\">\n            <ContentDialog.Content>\n                <Grid>\n\n                    <Grid.RowDefinitions>\n                        <RowDefinition />\n                        <RowDefinition />\n                        <RowDefinition Height=\"80\" />\n                    </Grid.RowDefinitions>\n\n                    <TextBlock\n                        Grid.Row=\"0\"\n                        Margin=\"0,0,0,10\"\n                        Style=\"{StaticResource SubtitleTextBlockStyle}\"\n                        Text=\"Save bookmark\" />\n\n                    <TextBlock\n                        Grid.Row=\"1\"\n                        Width=\"500\"\n                        Text=\"Notes\" />\n\n                    <TextBox\n                        x:Name=\"bookmarkContent\"\n                        Grid.Row=\"2\"\n                        TextWrapping=\"Wrap\" />\n                </Grid>\n            </ContentDialog.Content>\n        </ContentDialog>\n        <VisualStateManager.VisualStateGroups>\n            <VisualStateGroup>\n                <VisualState x:Name=\"narrow\">\n                    <VisualState.StateTriggers>\n                        <AdaptiveTrigger MinWindowWidth=\"200\" />\n                    </VisualState.StateTriggers>\n                    <VisualState.Setters>\n                        <Setter Target=\"videoplay.(RelativePanel.Below)\" Value=\"commands\" />\n                        <Setter Target=\"videoPlayer.(RelativePanel.AlignRightWithPanel)\" Value=\"True\" />\n                        <Setter Target=\"videoPlayer.(RelativePanel.AlignLeftWithPanel)\" Value=\"True\" />\n                    </VisualState.Setters>\n                </VisualState>\n                <VisualState x:Name=\"Wide\">\n                    <VisualState.StateTriggers>\n                        <AdaptiveTrigger MinWindowWidth=\"900\" />\n                    </VisualState.StateTriggers>\n\n                    <VisualState.Setters>\n                        <Setter Target=\"videoPlayer.(RelativePanel.Below)\" Value=\"commands\" />\n                        <Setter Target=\"videoPlayer.(RelativePanel.AlignRightWithPanel)\" Value=\"True\" />\n                        <Setter Target=\"videoPlayer.(RelativePanel.AlignLeftWithPanel)\" Value=\"True\" />\n                    </VisualState.Setters>\n                </VisualState>\n            </VisualStateGroup>\n        </VisualStateManager.VisualStateGroups>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "src/BuildCast/Views/Player.xaml.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing System;\nusing System.Collections.Generic;\nusing System.Numerics;\nusing System.Threading.Tasks;\nusing AudioVisualizer;\nusing BuildCast.Controls;\nusing BuildCast.DataModel;\nusing BuildCast.Helpers;\nusing BuildCast.Services;\nusing BuildCast.Services.Navigation;\nusing BuildCast.ViewModels;\nusing Microsoft.Graphics.Canvas;\nusing Microsoft.Graphics.Canvas.Geometry;\nusing Microsoft.Graphics.Canvas.Text;\nusing Windows.UI;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Hosting;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Media.Imaging;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace BuildCast.Views\n{\n    public sealed partial class Player : Page, IPageWithViewModel<PlayerViewModel>, IFullscreenPage\n    {\n        private SpectrumData _emptySpectrum = SpectrumData.CreateEmpty(2, 20, ScaleType.Linear, ScaleType.Linear, 27, 5500);\n        private SpectrumData _previousSpectrum;\n        private SpectrumData _previousPeakSpectrum;\n\n        private TimeSpan _rmsRiseTime = TimeSpan.FromMilliseconds(50);\n        private TimeSpan _rmsFallTime = TimeSpan.FromMilliseconds(50);\n        private TimeSpan _peakRiseTime = TimeSpan.FromMilliseconds(100);\n        private TimeSpan _peakFallTime = TimeSpan.FromMilliseconds(1000);\n        private TimeSpan _frameDuration = TimeSpan.FromMilliseconds(16.7);\n\n        private object _sizeLock = new object();\n        //private float _visualizerWidth = 0.0f;\n        //private float _visualizerHeight = 0.0f;\n\n        private CanvasTextFormat _textFormat = new CanvasTextFormat();\n\n        private Feed _currentFeed;\n        private Episode _currentEpisode;\n\n        private RelayCommand _addBookmarkCommand;\n        private DispatcherTimer _timer;\n\n        private IVisualizationSource _visualizationSource;\n\n        public Player()\n        {\n            this.InitializeComponent();\n            Instance = this;\n        }\n\n        public static Player Instance { get; set; }\n\n        public static InkNoteData InkNoteData { get; set; }\n\n        public PlayerViewModel ViewModel { get; set; }\n\n        public void ExitFullscreen()\n        {\n            Grid.SetRow(videoPlayer, 1);\n            Grid.SetRowSpan(videoPlayer, 1);\n            UnhookMouseMove();\n        }\n\n        public void EnterFullscreen()\n        {\n            Grid.SetRow(videoPlayer, 0);\n            Grid.SetRowSpan(videoPlayer, 3);\n            HookMouseMove();\n        }\n\n        protected async override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            base.OnNavigatedTo(e);\n            HandleIncomingConnectedNavigation(e);\n\n            Canvas.SetZIndex(this, 0);\n            await HandlleIncomingPlaybackRequests(e);\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            PlayerService.Current.SetTimeControls(null);\n\n            base.OnNavigatedFrom(e);\n        }\n\n        protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)\n        {\n            base.OnNavigatingFrom(e);\n            UnhookMouseMove();\n\n            var navRoot = ((App)Application.Current).GetNavigationRoot();\n\n            navRoot.ExitFullScreen();\n            Canvas.SetZIndex(this, 1);\n        }\n\n        private void Player_Loaded(object sender, RoutedEventArgs e)\n        {\n            // Put initial focus on mtc control\n            mtc.Focus(FocusState.Programmatic);\n            CreateVisualizer();\n        }\n\n        private void Player_Unloaded(object sender, RoutedEventArgs e)\n        {\n            PlayerService.Current.VisualizationSourceChanged -= Current_VisualizationSourceChanged;\n        }\n\n        private void UnhookMouseMove()\n        {\n            Window.Current.CoreWindow.PointerMoved -= CoreWindow_PointerMoved;\n            Window.Current.CoreWindow.KeyDown -= CoreWindow_KeyDown;\n            if (_timer != null)\n            {\n                _timer.Stop();\n                _timer.Tick -= Timer_Tick;\n                _timer = null;\n            }\n\n            playbackcontrolsholder.Visibility = Visibility.Visible;\n            header.Visibility = Visibility.Visible;\n        }\n\n        private void HookMouseMove()\n        {\n            Window.Current.CoreWindow.PointerMoved += CoreWindow_PointerMoved;\n            Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown;\n            _timer = new Windows.UI.Xaml.DispatcherTimer();\n            _timer.Tick += Timer_Tick;\n            _timer.Interval = TimeSpan.FromSeconds(3);\n            _timer.Start();\n        }\n\n        private void CoreWindow_KeyDown(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args)\n        {\n            if (args.VirtualKey == Windows.System.VirtualKey.Escape)\n            {\n                var navRoot = ((App)Application.Current).GetNavigationRoot();\n\n                navRoot.ExitFullScreen();\n            }\n        }\n\n        private void Timer_Tick(object sender, object e)\n        {\n            _timer.Stop();\n            playbackcontrolsholder.Visibility = Visibility.Collapsed;\n            header.Visibility = Visibility.Collapsed;\n            visualizer.Visibility = Visibility.Collapsed;\n        }\n\n        private void CoreWindow_PointerMoved(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.PointerEventArgs args)\n        {\n            playbackcontrolsholder.Visibility = Visibility.Visible;\n            header.Visibility = Visibility.Visible;\n            visualizer.Visibility = Visibility.Visible;\n            _timer.Stop();\n            _timer.Start();\n        }\n\n        private void HandleIncomingConnectedNavigation(NavigationEventArgs e)\n        {\n        }\n\n        // Buttons\n        #region Button Handlers\n        private async void Share_click(object sender, RoutedEventArgs e)\n        {\n            var nowPlaying = PlayerService.Current.NowPlaying;\n\n            if (nowPlaying.HasItem)\n            {\n                var imageBytes = await PlayerService.Current.GetBitmapForCurrentFrameFromLocalFile();\n\n                if (imageBytes == null)\n                {\n                    imageBytes = await videoPlayer.GetBitmapFromRenderTarget();\n                }\n\n                StartInking(nowPlaying, imageBytes);\n            }\n        }\n\n        private void StartInking(NowPlayingState nowPlaying, byte[] imageBytes)\n        {\n            if (nowPlaying.HasItem && imageBytes != null)\n            {\n                BuildCast.DataModel.InkNote meme = new BuildCast.DataModel.InkNote(nowPlaying.CurrentEpisode.Key, PlayerService.Current.CurrentTime);\n\n                InkNoteData = new InkNoteData();\n                InkNoteData.ImageBytes = imageBytes;\n\n                ViewModel.GoToInkNote(meme);\n            }\n        }\n\n        private async void Bookmark_click(object sender, RoutedEventArgs e)\n        {\n            var nowPlaying = PlayerService.Current.NowPlaying;\n            if (nowPlaying.HasItem)\n            {\n                bookmarkContent.Text = string.Empty;\n\n                await BookmarkDialog.ShowAsync();\n            }\n        }\n\n        private RelayCommand AddBookmarkCommand\n        {\n            get\n            {\n                if (_addBookmarkCommand == null)\n                {\n                    _addBookmarkCommand = new RelayCommand(\n                        async () =>\n                        {\n                            var nowPlaying = PlayerService.Current.NowPlaying;\n                            BuildCast.DataModel.InkNote meme = new BuildCast.DataModel.InkNote(nowPlaying.CurrentEpisode.Key, PlayerService.Current.CurrentTime);\n                            meme.NoteText = bookmarkContent.Text;\n                            using (LocalStorageContext lsc = new LocalStorageContext())\n                            {\n                                lsc.Memes.Add(meme);\n                                await lsc.SaveChangesAsync();\n                            }\n                        });\n                }\n\n                return _addBookmarkCommand;\n            }\n        }\n\n        #endregion\n\n        // ViewState management\n        #region viewstate\n        private async Task HandlleIncomingPlaybackRequests(NavigationEventArgs e)\n        {\n            if (e.Parameter is BuildCast.DataModel.InkNote)\n            {\n                var paramItem = e.Parameter as BuildCast.DataModel.InkNote;\n                await PlayerService.Current.HandlePlayRequest(paramItem);\n            }\n            else if (!(e.Parameter is string))\n            {\n                // Rome requests have already handled playback request.\n                var paramItem = e.Parameter as Episode;\n                await PlayerService.Current.HandlePlayRequest(paramItem);\n            }\n\n            // Update the UI\n            var playbackState = PlayerService.Current.NowPlaying;\n            if (playbackState.CurrentEpisode != null)\n            {\n                SetNowPlaying(playbackState.CurrentFeed, playbackState.CurrentEpisode, playbackState.CurrentTime);\n            }\n        }\n\n        internal void SetNowPlaying(Feed feed, Episode episode, TimeSpan currenttime)\n        {\n            this._currentFeed = feed;\n            this._currentEpisode = episode;\n\n            if (feed != null)\n            {\n                podimage.Source = new BitmapImage(feed?.ImageUri);\n            }\n\n            Bindings.Update();\n\n            videoPlayer.LoadPoster(episode?.ItemThumbnail);\n        }\n\n        public void UpdateBindings()\n        {\n            Bindings.Update();\n        }\n        #endregion\n\n        private async void Mtc_RemoteSystemSelected(object sender, IRemoteSystemDescription eventArgs)\n        {\n            RemoteControl remote = new RemoteControl();\n            IRemoteConnection remoteConnection = await ViewModel.CreateRemoteControl(eventArgs);\n            if (remoteConnection != null)\n            {\n                remote.RemoteConnection = remoteConnection;\n                RemoteControlPopup.Content = remote;\n\n                remote.CloseClicked += (s, ev) => RemoteControlPopup.Hide();\n                var result = await RemoteControlPopup.ShowAsync();\n            }\n            else\n            {\n                await UIHelpers.ShowContentAsync(\"Connection failed.\");\n            }\n        }\n\n        private async void CreateVisualizer()\n        {\n            _textFormat.VerticalAlignment = CanvasVerticalAlignment.Center;\n            _textFormat.HorizontalAlignment = CanvasHorizontalAlignment.Center;\n            _textFormat.FontSize = 9;\n\n            if (PlayerService.Current.VisualizationSource != null)\n            {\n                PlayerService.Current.VisualizationSourceChanged += Current_VisualizationSourceChanged;\n\n                if (PlayerService.Current.VisualizationSource.Source != null)\n                {\n                    SetSource();\n                }\n            }\n        }\n\n        private void Current_VisualizationSourceChanged(object sender, IVisualizationSource e)\n        {\n            SetSource();\n        }\n\n        private void SetSource()\n        {\n            visualizer.Source = PlayerService.Current.VisualizationSource.Source;\n            PlayerService.Current.VisualizationSource.Source.IsSuspended = false;\n        }\n\n        private void Visualizer_Draw(AudioVisualizer.IVisualizer sender, AudioVisualizer.VisualizerDrawEventArgs args)\n        {\n            var drawingSession = (CanvasDrawingSession)args.DrawingSession;\n\n            var spectrum = args.Data != null ? args.Data.Spectrum.LogarithmicTransform(20, 27, 5500) : _emptySpectrum;\n\n            _previousSpectrum = spectrum.ApplyRiseAndFall(_previousSpectrum, _rmsRiseTime, _rmsFallTime, _frameDuration);\n            _previousPeakSpectrum = spectrum.ApplyRiseAndFall(_previousPeakSpectrum, _peakRiseTime, _peakFallTime, _frameDuration);\n\n            float w = (float)args.ViewExtent.Width;\n            float h = (float)args.ViewExtent.Height;\n\n            // There are bugs in ConverToLogAmplitude. It is returning 0 if max is not 0 and min negative.\n            // The heightScale is a workaround for this\n            var s = _previousSpectrum.ConvertToDecibels(-50, 0);\n            var p = _previousPeakSpectrum.ConvertToDecibels(-50, 0);\n            DrawSpectrumSpline(p[0], drawingSession, Vector2.Zero, w, h, -0.02f, Color.FromArgb(0xff, 0x38, 0x38, 0x38));\n            DrawSpectrumSpline(p[1], drawingSession, Vector2.Zero, w, h, -0.02f, Color.FromArgb(0xff, 0x38, 0x38, 0x38), true);\n            DrawSpectrumSpline(s[0], drawingSession, Vector2.Zero, w, h, -0.02f, Color.FromArgb(0xff, 0x30, 0x30, 0x30));\n            DrawSpectrumSpline(s[1], drawingSession, Vector2.Zero, w, h, -0.02f, Color.FromArgb(0xff, 0x30, 0x30, 0x30), true);\n        }\n\n        private void DrawSpectrumSpline(IReadOnlyList<float> data, CanvasDrawingSession session, Vector2 offset, float width, float height, float heightScale, Color color, bool rightToLeft = false)\n        {\n            int segmentCount = data.Count - 1;\n            if (segmentCount <= 1 || width <= 0f)\n            {\n                return;\n            }\n\n            CanvasPathBuilder path = new CanvasPathBuilder(session);\n\n            float segmentWidth = width / (float)segmentCount;\n\n            Vector2 prevPosition = rightToLeft ? new Vector2(width + offset.X, data[0] * heightScale * height + offset.Y)\n                                               : new Vector2(offset.X, data[0] * heightScale * height + offset.Y);\n\n            if (rightToLeft)\n            {\n                path.BeginFigure(width + offset.X, height + offset.Y);\n            }\n            else\n            {\n                path.BeginFigure(offset.X, height + offset.Y);\n            }\n\n            path.AddLine(prevPosition);\n\n            for (int i = 1; i < data.Count; i++)\n            {\n                Vector2 position = rightToLeft ? new Vector2(width - (float)i * segmentWidth + offset.X, data[i] * heightScale * height + offset.Y)\n                                               : new Vector2((float)i * segmentWidth + offset.X, data[i] * heightScale * height + offset.Y);\n\n                if (rightToLeft)\n                {\n                    Vector2 c1 = new Vector2(position.X + segmentWidth / 2.0f, prevPosition.Y);\n                    Vector2 c2 = new Vector2(prevPosition.X - segmentWidth / 2.0f, position.Y);\n                    path.AddCubicBezier(c1, c2, position);\n                }\n                else\n                {\n                    Vector2 c1 = new Vector2(position.X - segmentWidth / 2.0f, prevPosition.Y);\n                    Vector2 c2 = new Vector2(prevPosition.X + segmentWidth / 2.0f, position.Y);\n                    path.AddCubicBezier(c1, c2, position);\n                }\n\n                prevPosition = position;\n            }\n\n            if (rightToLeft)\n            {\n                path.AddLine(offset.X, height + offset.Y);\n            }\n            else\n            {\n                path.AddLine(width + offset.X, height + offset.Y);\n            }\n\n            path.EndFigure(CanvasFigureLoop.Closed);\n\n            CanvasGeometry geometry = CanvasGeometry.CreatePath(path);\n            session.FillGeometry(geometry, color);\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Views/PopupPlayer.xaml",
    "content": "﻿<!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<Page\n    x:Class=\"BuildCast.Views.PopupPlayer\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:BuildCast\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\" x:Name=\"theGrid\">\n        <Rectangle x:Name=\"gl\" HorizontalAlignment=\"Stretch\" VerticalAlignment=\"Stretch\"></Rectangle>\n        <Rectangle SizeChanged=\"PlayerHolder_SizeChanged\" HorizontalAlignment=\"Stretch\" VerticalAlignment=\"Stretch\" x:Name=\"playerHolder\" Margin=\"0,0,0,0\"></Rectangle>\n        <Button x:Name=\"btnexit\" Click=\"Btnexit_LeaveCompactMode\" VerticalAlignment=\"Bottom\" HorizontalAlignment=\"Center\">Exit</Button>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "src/BuildCast/Views/PopupPlayer.xaml.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing BuildCast.Controls;\nusing BuildCast.Helpers;\nusing BuildCast.Services;\nusing Windows.UI.Composition;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Hosting;\n\nnamespace BuildCast.Views\n{\n    public sealed partial class PopupPlayer : Page\n    {\n        private SpriteVisual _playerVisual;\n        private PipModes _mode;\n\n        public PopupPlayer(PipModes mode)\n        {\n            this.InitializeComponent();\n            _playerVisual = Window.Current.Compositor.CreateSpriteVisual();\n            _mode = mode;\n            if (_mode == PipModes.MultiView)\n            {\n                btnexit.Visibility = Visibility.Collapsed;\n            }\n\n            ElementCompositionPreview.SetElementChildVisual(playerHolder, _playerVisual);\n        }\n\n        public void StartVideo()\n        {\n            _playerVisual.Brush = PlayerService.Current.GetBrush(Window.Current.Compositor);\n        }\n\n        private void PlayerHolder_SizeChanged(object sender, SizeChangedEventArgs e)\n        {\n            _playerVisual.SetSize(playerHolder);\n        }\n\n        private async void Btnexit_LeaveCompactMode(object sender, RoutedEventArgs e)\n        {\n            await CustomMTC.LeaveCompactOverlayMode();\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast/Views/SettingsPage.xaml",
    "content": "﻿<!--\n// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n-->\n\n<Page\n    x:Class=\"BuildCast.Views.SettingsPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"    \n    xmlns:helper=\"using:BuildCast.Helpers\"\n    xmlns:services=\"using:BuildCast.Services\"\n    mc:Ignorable=\"d\">\n    <Page.Resources>\n        <helper:EnumToBooleanConverter x:Key=\"ThemeEnumConverter\" EnumType=\"services:ElementThemeExtended\" />\n        <helper:EnumToBooleanConverter x:Key=\"PipEnumConverter\" EnumType=\"services:PipModes\" />\n    </Page.Resources>\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\" Margin=\"{StaticResource PageMargin}\">\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\"/>\n                <RowDefinition Height=\"Auto\"/>\n                <RowDefinition Height=\"Auto\"/>\n            </Grid.RowDefinitions>\n            <TextBlock\n                Grid.Row=\"0\"\n                x:Uid=\"Settings_Title\"\n                x:Name=\"TitlePage\"\n                FontWeight=\"Light\"\n                Style=\"{StaticResource PageTitleStyle}\" />\n\n        <StackPanel Grid.Row=\"1\">\n            <StackPanel Margin=\"{StaticResource SettingsSubheaderMargin}\">\n                <TextBlock\n                    x:Uid=\"Settings_Personalization\"\n                    Style=\"{StaticResource SubtitleTextBlockStyle}\" />\n\n                <TextBlock\n                        x:Uid=\"Settings_Theme\"\n                        Style=\"{StaticResource BodyTextStyle}\" />\n\n                <StackPanel Margin=\"{StaticResource EightTopMargin}\">\n                    <RadioButton \n                            x:Uid=\"Settings_Theme_Light\" \n                            GroupName=\"AppTheme\" \n                            IsChecked=\"{x:Bind ViewModel.ElementThemeExtended, Converter={StaticResource ThemeEnumConverter}, ConverterParameter=Light, Mode=TwoWay}\"\n                            Command=\"{x:Bind ViewModel.SwitchThemeCommand}\">\n                        <RadioButton.CommandParameter>\n                            <services:ElementThemeExtended>Light</services:ElementThemeExtended>\n                        </RadioButton.CommandParameter>\n                    </RadioButton>\n                    <RadioButton \n                            x:Uid=\"Settings_Theme_Dark\" \n                            GroupName=\"AppTheme\"\n                            IsChecked=\"{x:Bind ViewModel.ElementThemeExtended, Converter={StaticResource ThemeEnumConverter}, ConverterParameter=Dark, Mode=TwoWay}\"\n                            Command=\"{x:Bind ViewModel. SwitchThemeCommand}\">\n                        <RadioButton.CommandParameter>\n                            <services:ElementThemeExtended>Dark</services:ElementThemeExtended>\n                        </RadioButton.CommandParameter>\n                    </RadioButton>\n                    <RadioButton \n                            x:Uid=\"Settings_Theme_Default\"\n                            GroupName=\"AppTheme\"\n                            IsChecked=\"{x:Bind ViewModel.ElementThemeExtended, Converter={StaticResource ThemeEnumConverter}, ConverterParameter=Default, Mode=TwoWay}\"\n                            Command=\"{x:Bind ViewModel. SwitchThemeCommand}\">\n                        <RadioButton.CommandParameter>\n                            <services:ElementThemeExtended>Default</services:ElementThemeExtended>\n                        </RadioButton.CommandParameter>\n                    </RadioButton>\n                    <RadioButton \n                            x:Uid=\"Settings_Theme_Custom\"\n                            GroupName=\"AppTheme\"\n                            IsChecked=\"{x:Bind ViewModel.ElementThemeExtended, Converter={StaticResource ThemeEnumConverter}, ConverterParameter=Custom, Mode=TwoWay}\"\n                            Command=\"{x:Bind ViewModel.SwitchThemeCommand}\">\n                        <RadioButton.CommandParameter>\n                            <services:ElementThemeExtended>Custom</services:ElementThemeExtended>\n                        </RadioButton.CommandParameter>\n                    </RadioButton>\n                </StackPanel>\n            </StackPanel>\n\n            <StackPanel Margin=\"{StaticResource SettingsSubheaderMargin}\">\n                <TextBlock\n                        x:Uid=\"Settings_PipMode\"\n                        Style=\"{StaticResource SubtitleTextBlockStyle}\"\n                        Margin=\"{StaticResource EightTopMargin}\"/>\n                <StackPanel>\n                    <RadioButton \n                            x:Uid=\"Settings_PipMode_SingleView\"\n                            GroupName=\"PipMode\"\n                            IsChecked=\"{x:Bind ViewModel.CurrentPipMode, Converter={StaticResource PipEnumConverter}, ConverterParameter=SingleView, Mode=TwoWay}\"\n                            Command=\"{x:Bind ViewModel.SwitchPipModeCommand}\">\n                        <RadioButton.CommandParameter>\n                            <services:PipModes>SingleView</services:PipModes>\n                        </RadioButton.CommandParameter>\n                    </RadioButton>\n                    <RadioButton \n                            x:Uid=\"Settings_PipMode_MultiView\"\n                            GroupName=\"PipMode\"\n                            IsChecked=\"{x:Bind ViewModel.CurrentPipMode, Converter={StaticResource PipEnumConverter}, ConverterParameter=MultiView, Mode=TwoWay}\"\n                            Command=\"{x:Bind ViewModel.SwitchPipModeCommand}\">\n                        <RadioButton.CommandParameter>\n                            <services:PipModes>MultiView</services:PipModes>\n                        </RadioButton.CommandParameter>\n                    </RadioButton>\n                </StackPanel>\n            </StackPanel>\n\n            <StackPanel Margin=\"{StaticResource SettingsSubheaderMargin}\">\n                <TextBlock\n                        x:Uid=\"Settings_About\"\n                        Style=\"{StaticResource SubtitleTextBlockStyle}\"/>\n\n                <StackPanel Margin=\"{StaticResource EightTopMargin}\">\n                    <TextBlock\n                        Text=\"{x:Bind ViewModel.VersionDescription, Mode=OneWay}\" />\n                    <TextBlock\n                        x:Uid=\"Settings_AboutDescription\"\n                        Margin=\"{StaticResource EightTopMargin}\" />\n\n                    <HyperlinkButton\n                        x:Uid=\"Settings_PrivacyTermsLink\" \n                        Margin=\"{StaticResource EightTopMargin}\" />\n                </StackPanel>\n            </StackPanel>\n        </StackPanel>\n    </Grid>\n\n</Page>\n"
  },
  {
    "path": "src/BuildCast/Views/SettingsPage.xaml.cs",
    "content": "﻿// ******************************************************************\n// Copyright (c) Microsoft. All rights reserved.\n// This code is licensed under the MIT License (MIT).\n// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH\n// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.\n// ******************************************************************\n\nusing BuildCast.Services.Navigation;\nusing BuildCast.ViewModels;\nusing Windows.UI.Xaml.Controls;\n\nnamespace BuildCast.Views\n{\n    public sealed partial class SettingsPage : Page, IPageWithViewModel<SettingsViewModel>\n    {\n        public SettingsViewModel ViewModel\n        {\n            get; set;\n        }\n\n        public SettingsPage()\n        {\n            InitializeComponent();\n        }\n\n        public void UpdateBindings()\n        {\n            ViewModel.Initialize();\n        }\n    }\n}\n"
  },
  {
    "path": "src/BuildCast.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 15\nVisualStudioVersion = 15.0.26430.15\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"BuildCast\", \"BuildCast\\BuildCast.csproj\", \"{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Debug|x64.Build.0 = Debug|x64\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Debug|x86.Build.0 = Debug|x86\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Release|ARM.Build.0 = Release|ARM\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Release|x64.ActiveCfg = Release|x64\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Release|x64.Build.0 = Release|x64\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Release|x64.Deploy.0 = Release|x64\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Release|x86.ActiveCfg = Release|x86\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Release|x86.Build.0 = Release|x86\n\t\t{0CE71FEF-9F1D-4CB7-BC36-0EEA48FDE380}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  }
]