<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tutorial on DVLUP</title><link>/en/tags/tutorial/</link><description>Recent content in Tutorial on DVLUP</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sun, 22 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="/en/tags/tutorial/index.xml" rel="self" type="application/rss+xml"/><item><title>Password Purgatory, a C# Scammer Trap</title><link>/en/blog/2026.03.22-csharp-scammer-trap/</link><pubDate>Sun, 22 Mar 2026 00:00:00 +0000</pubDate><guid>/en/blog/2026.03.22-csharp-scammer-trap/</guid><description>&lt;p&gt;This is a reimagined version of Troy Hunt&amp;rsquo;s &lt;a href="https://www.troyhunt.com/building-password-purgatory-with-cloudflare-pages-and-workers/" target="_blank" rel="noopener"&gt;Password Purgatory&lt;/a&gt;&#10;; written as a dotnet app and automatically published to Azure. It is not a 1:1 recreation of Troy&amp;rsquo;s, but maintains its spirit, see all the source code on GitHub at &lt;a href="https://github.com/LanceMcCarthy/dotnet-password-purgatory" target="_blank" rel="noopener"&gt;dotnet-password-purgatory&lt;/a&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;Just imagine, thousands of dollars is only a button click away, but your password keeps failing because of with the following rules:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;img src="../../../en/blog/2026.03.22-csharp-scammer-trap/184453467-4962c6c2-d955-4270-93d8-8ecb02c26fa8.png" alt="image"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;First entry form seems normal, some standard client-side validation to make sure I complete both fields.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="../../../en/blog/2026.03.22-csharp-scammer-trap/184453247-50578c2f-6fbb-4326-aff2-fb0bebbb2412.png" alt="image"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Okay, so I didn&amp;rsquo;t have a number in my password&amp;hellip;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="../../../en/blog/2026.03.22-csharp-scammer-trap/184453267-eab6d8e0-945b-4cfb-b0b3-7c343711c0dc.png" alt="image"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Whoops, maybe I shouldn&amp;rsquo;t have just jammed a &amp;ldquo;1&amp;rdquo; on the end of the password&amp;hellip;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="../../../en/blog/2026.03.22-csharp-scammer-trap/184453272-774a05a3-21ac-4aba-8754-6c4e8e66e3e3.png" alt="image"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Ugh, okay, an upper-case character (starting to feel annoyed).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="../../../en/blog/2026.03.22-csharp-scammer-trap/184453276-464481ef-e3a7-4347-847f-8d45edfb1921.png" alt="image"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;This seems my own fault, nothing lets you use short password anymore.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="../../../en/blog/2026.03.22-csharp-scammer-trap/184453281-36502559-19f7-464d-8e8f-a4e57a87ed28.png" alt="image"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Wait, what? This is starting to seem like I&amp;rsquo;m being given the run-around&amp;hellip; but adding &amp;lsquo;dog&amp;rsquo; to the end is easy enough&amp;hellip;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="../../../en/blog/2026.03.22-csharp-scammer-trap/184453293-b1e46b2f-7f54-4868-b7c6-13ed8def1ac7.png" alt="image"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Really, cat? Okay, three letters, lets add it and keep going because I want to see where this is going.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="../../../en/blog/2026.03.22-csharp-scammer-trap/184453301-b28f9136-a510-4c65-a186-7e4aac0f0ec4.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;If they keep going&amp;hellip;&lt;/p&gt;</description></item><item><title>Automating Dependabot Pull Requests</title><link>/en/blog/2026.01.15-automatic-dependabot-prs/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><guid>/en/blog/2026.01.15-automatic-dependabot-prs/</guid><description>&lt;p&gt;Most of us are familiar with Dependabot and how it can open an Issue in your GitHub repo when there&amp;rsquo;s a pending dependency update or a security issue. However, did you know that you can also have it automatically open a Pull Request, do all the builds, make sure checks pass, and &lt;strong&gt;merge&lt;/strong&gt; it, too?&lt;/p&gt;&#10;&lt;p&gt;I find this capability very helpful and time saving when the dependencies are not core SDK components. Particualrly with node.js projects, there are can be a lot of updates that are not related directly to the code, but instead of part of the toolchain or IDE. These updates take time to manually do and can be annoying to maintain.&lt;/p&gt;</description></item><item><title>Use Windows AI APIs to Your App in 10 Minutes</title><link>/en/blog/2025.05.17-add-copilot-to-your-app-in-10m/</link><pubDate>Sat, 17 May 2025 00:00:00 +0000</pubDate><guid>/en/blog/2025.05.17-add-copilot-to-your-app-in-10m/</guid><description>&lt;p&gt;There has been a lot of news around generative AI and LLMs. As a traditional client app developer you might have wanted to add this capability to your app, but there&amp;rsquo;s usually something that is a roadblock&amp;hellip; you don&amp;rsquo;t want to learn something new right now, you don&amp;rsquo;t want to pay for a cloud service, or just don&amp;rsquo;t have the time to invest in that one app.&lt;/p&gt;&#10;&lt;p&gt;These excuses are hard to justify now you have the Windows AI APIs in the WinApp SDK; it&amp;rsquo;s all available on-device and can be done in a few lines of code.&lt;/p&gt;</description></item><item><title>Trusted Signing</title><link>/en/blog/2025.03.15-trustred-signing/</link><pubDate>Sat, 15 Mar 2025 00:00:00 +0000</pubDate><guid>/en/blog/2025.03.15-trustred-signing/</guid><description>&lt;p&gt;Say goodbye to managing PFX files and problems code signing your apps. Over the past year or so, I&amp;rsquo;ve been working with Microsoft to test a service that lets you sign your code using an HSM-backed private key. This means your identity is verified by Microsoft, and you can sign all your stuff with a simple API call!&lt;/p&gt;&#10;&lt;h2 id="azure-trusted-signing"&gt;Azure Trusted Signing&lt;/h2&gt;&#10;&lt;p&gt;I have a real-world app where I code sign the app and appinstaller automatically. I walk you through how that is done so you can copy it, but first I should step back and explain what the service is.&lt;/p&gt;</description></item><item><title>Migrating from WordPress to Hugo</title><link>/en/blog/2024.12.24-migrating-from-wordpress-to-hugo/</link><pubDate>Wed, 25 Dec 2024 00:00:00 +0000</pubDate><guid>/en/blog/2024.12.24-migrating-from-wordpress-to-hugo/</guid><description>&lt;p&gt;It&amp;rsquo;s been a while since I&amp;rsquo;ve written a new post. This was mostly due to an ongoing battle with trying to move my Wordpress installation from an older Windows app Service on Azure. There is a new Linux-based App Service option that can do it, but Azure requires some expensive components to support it. So, I thought why not take this opportunity to try new things?&lt;/p&gt;&#10;&lt;h2 id="exporting"&gt;Exporting&lt;/h2&gt;&#10;&lt;p&gt;The first thing I needed to do was export the 10+ years of posts that already existed. This was relatively easy enough, there are many Wordpress Exporter/Importer plugins, but I liked the results from &lt;a href="https://wordpress.org/plugins/all-in-one-wp-migration/" target="_blank" rel="noopener"&gt;All-in-One WP Migration and Backup&lt;/a&gt;&#10; the most. It is free up to a certain export size. Mine was quite large (&amp;gt;250mb), so I needed to upgrade but was worth every penny.&lt;/p&gt;</description></item><item><title>Mica or Acrylic with WinUI and .NET MAUI</title><link>/en/blog/2023.03.13-mica-or-acrylic-with-winui-and-net-maui/</link><pubDate>Mon, 13 Mar 2023 00:00:00 +0000</pubDate><guid>/en/blog/2023.03.13-mica-or-acrylic-with-winui-and-net-maui/</guid><description>&lt;p&gt;When using .NET MAUI, we have some great capabilities to affect the way the native platform works. We can take advantage of this part of lifecycle to check if:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Is the runtime platform is Windows?&lt;/li&gt;&#10;&lt;li&gt;First attempt to use Mica, if the user&amp;rsquo;s device supports it (Windows 11).&lt;/li&gt;&#10;&lt;li&gt;If it doesn&amp;rsquo;t support Mica, then we try to use Acrylic.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Here&amp;rsquo;s what the end result looks like in your MauiProgram.cs code, nice and clean thanks to using lifecycle builder extension methods.&lt;/p&gt;</description></item><item><title>Windows Subsystem for Android and .NET MAUI</title><link>/en/blog/2022.06.22-windows-subsystem-for-android-and-net-maui/</link><pubDate>Wed, 22 Jun 2022 00:00:00 +0000</pubDate><guid>/en/blog/2022.06.22-windows-subsystem-for-android-and-net-maui/</guid><description>&lt;p&gt;Did you know you can deploy and debug your Android projects from Visual Studio 2022 (17.3+) to WSA (Windows Subsystem for Android)? This is a quick post to show you how to have your WSA appear in the list of target Android devices in Visual Studio.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="../../../en/blog/2022.06.22-windows-subsystem-for-android-and-net-maui/image.png" alt=""&gt;&lt;/p&gt;&#10;&lt;p&gt;WSA as the target device&lt;/p&gt;&#10;&lt;p&gt;First, make sure you have WSA installed and enabled, find the instructions here &lt;a href="https://docs.microsoft.com/en-us/windows/android/wsa/" target="_blank" rel="noopener"&gt;Windows Subsystem for Android™️ | Microsoft Docs&lt;/a&gt;&#10;. Once it is installed, start the Amazon App Store app to ensure WSA has been started.&lt;/p&gt;</description></item><item><title>Free Yourself With DevOps</title><link>/en/blog/2022.03.04-free-yourself-with-devops/</link><pubDate>Fri, 04 Mar 2022 00:00:00 +0000</pubDate><guid>/en/blog/2022.03.04-free-yourself-with-devops/</guid><description>&lt;p&gt;As you evolve as a developer, you start to venture into the world of CI-CD. This is because you want to spend more time coding and less time with the repetitive and tiresome nature of compiling for different targets, packaging and publishing.&lt;/p&gt;&#10;&lt;p&gt;I frequently write content about CI-CD; whether it is Azure DevOps, GitHub Actions or just a PowerShell command that does a ton of work for you. In today&amp;rsquo;s post, I&amp;rsquo;m going to take you on a journey that shows you how to use Azure DevOps to automatically build, package and publish your app to the Microsoft Store.&lt;/p&gt;</description></item><item><title>Building .NET MAUI with GitHub Actions</title><link>/en/blog/2021.11.24-building-net-maui-with-github-actions/</link><pubDate>Wed, 24 Nov 2021 00:00:00 +0000</pubDate><guid>/en/blog/2021.11.24-building-net-maui-with-github-actions/</guid><description>&lt;p&gt;If you&amp;rsquo;re a fan of using GitHub Actions or Azure DevOps, you might have had some trouble configuring builds for .NET MAUI. This is likely due to needing specific workloads installed and understanding what parameters to use for a single project to compile for multiple target platforms.&lt;/p&gt;&#10;&lt;p&gt;In today&amp;rsquo;s post, I&amp;rsquo;ll show you how to setup your build that will work for any MAUI target platform. If you would like to review the final result as you read through this, here&amp;rsquo;s the workflow file =&amp;gt; &lt;a href="https://github.com/LanceMcCarthy/DevOpsExamples/blob/main/.github/workflows/main_build-maui.yml" target="_blank" rel="noopener"&gt;DevOpsExamples/main_build-maui.yml&lt;/a&gt;&#10;.&lt;/p&gt;</description></item><item><title>Pull Requests in GitKraken</title><link>/en/blog/2021.06.24-pull-requests-in-gitkraken/</link><pubDate>Thu, 24 Jun 2021 00:00:00 +0000</pubDate><guid>/en/blog/2021.06.24-pull-requests-in-gitkraken/</guid><description>&lt;p&gt;One of the hallmarks of a professional workspace is an efficient workflow with powerful tools. It is a win for everyone when you can consolidate multiple tasks into a single workspace and workflow. This is why I love the new support for GitHub Pull Requests in &lt;strong&gt;GitKraken&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;In today&amp;rsquo;s post, I&amp;rsquo;m going to show the high level set of features inside of GitKraken that let you achieve the basic set of operations that are needed when you&amp;rsquo;re reviewing and approve a Pull Request. For more in-depth information, please visit &lt;a href="https://support.gitkraken.com/working-with-repositories/pull-requests/#github-pull-request-view" target="_blank" rel="noopener"&gt;this official documentation&lt;/a&gt;&#10;. If you don&amp;rsquo;t have GitKraken yet, you can get it &lt;a href="https://www.gitkraken.com/invite/5G9KUffp" target="_blank" rel="noopener"&gt;using my personal invite link&lt;/a&gt;&#10;.&lt;/p&gt;</description></item><item><title>Automatic OneDrive Backup</title><link>/en/blog/2021.05.09-automatic-onedrive-backup/</link><pubDate>Sun, 09 May 2021 00:00:00 +0000</pubDate><guid>/en/blog/2021.05.09-automatic-onedrive-backup/</guid><description>&lt;p&gt;As a part of my ongoing &amp;ldquo;Tools That I Use&amp;rdquo; series, I wanted to share another favorite, &lt;a href="https://www.gurusquad.com/GSRICHCOPY360" target="_blank" rel="noopener"&gt;RichCopy 360&lt;/a&gt;&#10;. On premise, I have a 80 TB HDD array, separated into multiple drive pools by &lt;a href="https://stablebit.com/DrivePool" target="_blank" rel="noopener"&gt;Stablebit DrivePool&lt;/a&gt;&#10; (post coming soon). However, to meet the critical &lt;a href="https://www.hanselman.com/blog/the-computer-backup-rule-of-three" target="_blank" rel="noopener"&gt;Rule of 3&lt;/a&gt;&#10;, I needed to add a 3rd off-site option.&lt;/p&gt;&#10;&lt;p&gt;I considered several different ways to do this and decided on taking advantage of my OneDrive for Business disk space (OneDrive gives you up to 5 TB). So, what do I use to copy that data up to OneDrive?&lt;/p&gt;</description></item><item><title>Scott's Ultimate Tools via Winget</title><link>/en/blog/2020.12.29-scotts-2021-ultimate-list/</link><pubDate>Tue, 29 Dec 2020 00:00:00 +0000</pubDate><guid>/en/blog/2020.12.29-scotts-2021-ultimate-list/</guid><description>&lt;p&gt;As a nice year-end present for us, he has done it again, visit &lt;a href="https://www.hanselman.com/blog/scott-hanselmans-2021-ultimate-developer-and-power-users-tool-list-for-windows/" target="_blank" rel="noopener"&gt;Scott Hanselman&amp;rsquo;s 2021 Ultimate Developer and Power Users Tool List for Windows&lt;/a&gt;&#10;.&lt;/p&gt;&#10;&lt;p&gt;Someone had left a great comment about compiling a list of all his suggestions as Windows Package Manager (aka winget) or Chocolatey package IDs. I mentioned this to Scott and he thought it was a great idea, too. So I offered to compile the list.&lt;/p&gt;&#10;&lt;p&gt;Why is this a wonderful suggestion? You only need to run a quick one-liner command, &lt;code&gt;winget install &amp;lt;id&amp;gt;&lt;/code&gt; or &lt;code&gt;choco install &amp;lt;id&amp;gt;&lt;/code&gt;, and you have installed the software.&lt;/p&gt;</description></item><item><title>DevReach 2020</title><link>/en/blog/2020.11.04-devreach-2020/</link><pubDate>Wed, 04 Nov 2020 00:00:00 +0000</pubDate><guid>/en/blog/2020.11.04-devreach-2020/</guid><description>&lt;p&gt;In case you missed it, I spoke this year at DevReach 2020. DevReach is Europe&amp;rsquo;s Premier Developer Conference that takes place every year in Sofia, Bulgaria. This year&amp;rsquo;s conference was online only, but was still a lot of fun.&lt;/p&gt;&#10;&lt;p&gt;In my session, I show you how to write GitHub Actions workflows for a full CI/CD experience that automatically builds and releases your Xamarin.Forms, Xamarin.Android, Xamarin.iOS and UWP apps.&lt;/p&gt;&#10;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/OJhg8rB5D90&amp;amp;t=3222?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;My session starts at &lt;code&gt;53:22&lt;/code&gt; and I go until &lt;code&gt;1:36:12&lt;/code&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>USB Support for Home Assistant in Hyper-V</title><link>/en/blog/2020.10.23-usb-in-hyper-v/</link><pubDate>Fri, 23 Oct 2020 00:00:00 +0000</pubDate><guid>/en/blog/2020.10.23-usb-in-hyper-v/</guid><description>&lt;p&gt;If you&amp;rsquo;re running Home assistant in Hyper-V, you&amp;rsquo;ve probably encountered a &lt;em&gt;significant&lt;/em&gt; limitation&amp;hellip; &lt;strong&gt;Hyper-V doesn&amp;rsquo;t let you pass-through a USB device&lt;/strong&gt;, so you can&amp;rsquo;t use your &lt;a href="https://www.home-assistant.io/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules" target="_blank" rel="noopener"&gt;Z-Wave dongle&lt;/a&gt;&#10; or zigbee dongle.&lt;/p&gt;&#10;&lt;p&gt;So why am I writing this blog post? I have found a way to make it work, feast your eyes on the following screenshot!&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="../../../en/blog/2020.10.23-usb-in-hyper-v/image.png" alt=""&gt;&lt;/p&gt;&#10;&lt;p&gt;Click to enlarge. Z-Wave USB dongle available to Home Assistant container inside Hyper-V&lt;/p&gt;&#10;&lt;p&gt;The left side is Home Assistant&amp;rsquo;s frontend in the web browser, open to the &lt;a href="https://www.home-assistant.io/integrations/ozw/" target="_blank" rel="noopener"&gt;Open Z-Wave Add-On&lt;/a&gt;&#10; page. Notice in the yellow highlight, that is a Z-Wave USB dongle plugged into the Windows 10 machine.&lt;/p&gt;</description></item><item><title>Installing Home Assistant on Hyper-V</title><link>/en/blog/2020.05.25-installing-home-assistant-on-hyper-v/</link><pubDate>Mon, 25 May 2020 00:00:00 +0000</pubDate><guid>/en/blog/2020.05.25-installing-home-assistant-on-hyper-v/</guid><description>&lt;p&gt;This post is a quick tutorial you can follow to get Home Assistant working on Hyper-V so you can take advantage of your PC&amp;rsquo;s compute power instead of running it on a Raspberry Pi. This installation method is really quick and doesn&amp;rsquo;t require any command line setup.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;**Important**: If you want to use USB devices in Home Assistant, please this different tutorial -&amp;gt; [USB Support for Home Assistant on Hyper-V](https://www.dvlup.com/2020/10/23/usb-in-hyper-v/). The approach used in this article doesn&amp;#39;t allow for USB devices.&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="step-1---create-hyper-v-machine"&gt;Step 1 - Create Hyper V Machine&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Download the &lt;strong&gt;VHDX&lt;/strong&gt; file (hassos_ova-[version].vhdx.gz) from &lt;a href="https://github.com/home-assistant/operating-system/releases/" target="_blank" rel="noopener"&gt;the home-assistant GitHub Releases page&lt;/a&gt;&#10;.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;I recommend only using the latest non-beta release so you won&amp;rsquo;t have trouble with HA&amp;rsquo;s built-in updater. As of writing this, that is version 3.13:&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;img src="https://user-images.githubusercontent.com/3520532/82828657-92d9bd80-9e7f-11ea-98d6-ec0ab36983fb.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Right-click on the downloaded &lt;code&gt;.gz&lt;/code&gt; file, select &amp;ldquo;Properties&amp;rdquo;, check the &amp;ldquo;Unblock&amp;rdquo; checkbox and click OK.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Extract the &lt;strong&gt;.vhdx&lt;/strong&gt; file from the&lt;code&gt;.gz&lt;/code&gt; file (you can use &lt;a href="https://www.7-zip.org/download.html" target="_blank" rel="noopener"&gt;7-Zip&lt;/a&gt;&#10; to do this). Don&amp;rsquo;t worry about where you extract it to, Hyper-V will make a copy.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Open &lt;strong&gt;Hyper-V Manager&lt;/strong&gt; app on Windows 10.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;In the right pane, select &lt;strong&gt;Quick Create&lt;/strong&gt; (at the top right).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Choose &amp;ldquo;&lt;strong&gt;Local Installation Source&lt;/strong&gt;&amp;rdquo; option for an OS and use the extracted &lt;code&gt;.vhdx&lt;/code&gt; file.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;img src="https://user-images.githubusercontent.com/3520532/82827423-0201e280-9e7d-11ea-8c6f-2f4d54ddce70.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;You&amp;rsquo;ll be presented with the VM&amp;rsquo;s Settings window before starting it up. Here are some recommendations:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;In the &lt;strong&gt;Memory&lt;/strong&gt; tab, set the RAM to at least 2048 MBs or higher and disable Dynamic Memory&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="https://user-images.githubusercontent.com/3520532/82827917-febb2680-9e7d-11ea-88ac-78f0f8324a4d.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;li&gt;Under the &lt;strong&gt;Security&lt;/strong&gt; tab, make sure Secure Boot is disabled:&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="https://user-images.githubusercontent.com/3520532/74442771-15de8700-4e40-11ea-83a9-daf6b9708621.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;li&gt;Under the &lt;strong&gt;Automatic Stop Action&lt;/strong&gt; tab, change the setting to &amp;ldquo;Shut down the guest operating system&amp;rdquo;:&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="https://user-images.githubusercontent.com/3520532/82828346-d7b12480-9e7e-11ea-85f1-14ee9a94975d.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;li&gt;Finally, select the &lt;strong&gt;Automatic Start Action&lt;/strong&gt; tab and set your preferred option:&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="https://user-images.githubusercontent.com/3520532/82829015-4a6ecf80-9e80-11ea-8fcf-6ea9a23fda4b.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Start the machine and wait for initial setup to complete and you see the &lt;em&gt;Welcome to HassOS&lt;/em&gt; prompt.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;</description></item><item><title>Migrate to Unraid from openmediavault</title><link>/en/blog/2020.04.26-migrate-to-unraid-from-openmediavault/</link><pubDate>Sun, 26 Apr 2020 00:00:00 +0000</pubDate><guid>/en/blog/2020.04.26-migrate-to-unraid-from-openmediavault/</guid><description>&lt;p&gt;I have stopped by the &lt;a href="https://www.unraid.net/" target="_blank" rel="noopener"&gt;Unraid website&lt;/a&gt;&#10; several times, longing for those the features on offer&amp;hellip; like Charlie looking into Willy Wonka&amp;rsquo;s front gates imagining the wonders that lay beyond.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://i.giphy.com/media/sDcfxFDozb3bO/giphy.webp" alt=""&gt;&lt;/p&gt;&#10;&lt;p&gt;However, I got scared off each time when I read the setup instructions and never took the next step to implement it. I wish I had done this sooner, it was really easy&amp;hellip; literally plug and play (with a couple button clicks to confirm I wanted to format the drive 😊).&lt;/p&gt;</description></item><item><title>Setting up Home Assistant in Docker for Windows with Port Forwarding Enabled</title><link>/en/blog/2020.02.17-setting-up-home-assistant-in-docker-for-windows-with-port-forwarding-enabled/</link><pubDate>Mon, 17 Feb 2020 00:00:00 +0000</pubDate><guid>/en/blog/2020.02.17-setting-up-home-assistant-in-docker-for-windows-with-port-forwarding-enabled/</guid><description>&lt;p&gt;I hope that you&amp;rsquo;ve landed here before spending hours/days trying to find a solution as to why you can&amp;rsquo;t forward the Home Assistant port in Docker. The solution is frustratingly easy.&lt;/p&gt;&#10;&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;&#10;&lt;p&gt;The &lt;a href="https://www.home-assistant.io/docs/installation/docker/#windows" target="_blank" rel="noopener"&gt;install Home Assistant in docker on Windows&lt;/a&gt;&#10; instructions are great, with one exception. It explains the required prerequisites to make sure docker has access to a host disk. However, those instructions have outdated instructions to setup the port-forward rules, which ultimately makes it a waste of time.&lt;/p&gt;</description></item><item><title>Using Windows IoT, SignalR, Azure Custom Vision and Xamarin Forms to Flush a Toilet</title><link>/en/blog/2020.02.13-using-windows-iot-signalr-azure-custom-vision-and-xamarin-forms-to-flush-a-toilet/</link><pubDate>Thu, 13 Feb 2020 00:00:00 +0000</pubDate><guid>/en/blog/2020.02.13-using-windows-iot-signalr-azure-custom-vision-and-xamarin-forms-to-flush-a-toilet/</guid><description>&lt;p&gt;&lt;strong&gt;My cat uses the human toilet&lt;/strong&gt;. However, he doesn&amp;rsquo;t know how to flush when he&amp;rsquo;s done. So, I thought, &amp;ldquo;Why not train a custom trained machine learning model to know when to flush the toilet for him? That way, I can go on vacation without asking friends to stop by.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;That single thought began my trip through some great modern developer tools and tech to build a full solution for the problem. In this post, I&amp;rsquo;ll walk you through everything and you can explore the code and parts list here &lt;a href="https://github.com/LanceMcCarthy/Flusher" target="_blank" rel="noopener"&gt;https://github.com/LanceMcCarthy/Flusher&lt;/a&gt;&#10;.&lt;/p&gt;</description></item><item><title>Custom TypingStarted and TypingEnded Events</title><link>/en/blog/2020.01.02-custom-typingstarted-and-typingended-events/</link><pubDate>Thu, 02 Jan 2020 00:00:00 +0000</pubDate><guid>/en/blog/2020.01.02-custom-typingstarted-and-typingended-events/</guid><description>&lt;p&gt;You know that little indicator in a chat that shows if someone is currently typing? I am working on a new post (coming soon, link will be here) that uses SignalR to communicate who is currently typing in a chat room along with the messages themselves.&lt;/p&gt;&#10;&lt;p&gt;To determine who is typing, I use a timer and the &lt;code&gt;TextChanged&lt;/code&gt; event. The timer logic itself is straightforward, in the &lt;code&gt;TextChanged&lt;/code&gt; event starts a timer.&lt;/p&gt;</description></item><item><title>Unblocking .NET DLLs on Mac Catalina</title><link>/en/blog/2019.10.31-unblocking-net-dlls-on-mac-catalina/</link><pubDate>Thu, 31 Oct 2019 00:00:00 +0000</pubDate><guid>/en/blog/2019.10.31-unblocking-net-dlls-on-mac-catalina/</guid><description>&lt;p&gt;There&amp;rsquo;s a new headache in town. If you run self-hosted Azure DevOps agent, or .NET Core project, on a Mac running Catalina (v 10.15+) and Microsoft Edge, you will have noticed a new behavior where the OS prevents the .NET assembly from working.&lt;/p&gt;&#10;&lt;p&gt;This is because it has been marked with a &amp;ldquo;quarantine&amp;rdquo; file attribute when it was downloaded with the browser. It&amp;rsquo;s a security measure that I&amp;rsquo;m familiar with on Windows. I would typically remove this attribute by right clicking on the file, select &amp;ldquo;Properties&amp;rdquo;, then check &amp;ldquo;Unblock&amp;rdquo;:&lt;/p&gt;</description></item><item><title>Preparing apps for Windows X and Surface Duo or Neo Devices.</title><link>/en/blog/2019.10.03-preparing-apps-for-windows-x-and-surface-duo-or-neo-devices/</link><pubDate>Thu, 03 Oct 2019 00:00:00 +0000</pubDate><guid>/en/blog/2019.10.03-preparing-apps-for-windows-x-and-surface-duo-or-neo-devices/</guid><description>&lt;p&gt;Preface - This is not Microsoft-provided information, just my guess after digging around the Microsoft.UI.Xaml source code after a conversation on Twitter. This is not coming from any MVP-NDA or other NDA source. I will update this post when official information becomes available.&lt;/p&gt;&#10;&lt;p&gt;There is suspiciously missing control from the XAML Gallery app - &lt;strong&gt;TwoPaneView&lt;/strong&gt;. It&amp;rsquo;s in the WinUI 2.2 release, but there&amp;rsquo;s no documentation, guidance or examples of it being used (yet). The only thing you&amp;rsquo;ll find is the API reference, which is automatically generated during the build process.&lt;/p&gt;</description></item><item><title>Postmortem - Child node "2" compilation error after updating to 18362 SDK</title><link>/en/blog/2019.08.07-postmortem-child-node-2-compilation-error-after-updating-to-18362-sdk/</link><pubDate>Wed, 07 Aug 2019 00:00:00 +0000</pubDate><guid>/en/blog/2019.08.07-postmortem-child-node-2-compilation-error-after-updating-to-18362-sdk/</guid><description>&lt;p&gt;[Update May 2020] This has been fixed in the 19041 SDK. Install the 19041 SDK, set your project&amp;rsquo;s Target SDK to 19041 and finally Rebuild the project/solution**.**&lt;/p&gt;&#10;&lt;p&gt;One of the more frustrating things for me is not being able to debug a problem. After updating my UWP app&amp;rsquo;s Target SDK to 18362 (Windows 10 1903), I was no longer able to compile. I got a very vague error. that I had to dig out of the msbuild logs:&lt;/p&gt;</description></item><item><title>Draw Your Own Xamarin Pie Chart dynamically</title><link>/en/blog/2019.04.18-draw-your-own-pie-chart-dynamically/</link><pubDate>Thu, 18 Apr 2019 00:00:00 +0000</pubDate><guid>/en/blog/2019.04.18-draw-your-own-pie-chart-dynamically/</guid><description>&lt;p&gt;In this tutorial, I&amp;rsquo;ll show you how to draw your own pie chart just using lines and a list of data items. The code itself is in C#, but the concept can be used on any platform that has a drawing library and ArcSegments.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="../../../en/blog/2019.04.18-draw-your-own-pie-chart-dynamically/2019-04-18_13-44-40.png" alt=""&gt;&lt;/p&gt;&#10;&lt;p&gt;You can view the entire solution in &lt;a href="https://gist.github.com/LanceMcCarthy/b64ee5afdd27b125b8b47816799306e0" target="_blank" rel="noopener"&gt;this GitHub Gist&lt;/a&gt;&#10;. Okay, let&amp;rsquo;s get started!&lt;/p&gt;&#10;&lt;h2 id="setting-up"&gt;Setting Up&lt;/h2&gt;&#10;&lt;p&gt;The first thing you&amp;rsquo;ll need to understand is how the platform&amp;rsquo;s drawing library makes arcs. In this code, I&amp;rsquo;ll be using &lt;a href="https://docs.telerik.com/devtools/xamarin/controls/path/path-overview" target="_blank" rel="noopener"&gt;RadPath&lt;/a&gt;&#10; from &lt;a href="https://www.telerik.com/xamarin-ui" target="_blank" rel="noopener"&gt;Telerik UI for Xamarin&lt;/a&gt;&#10; most libraries work the same way. RadPath lets you use a custom Geometry which has &lt;a href="https://docs.telerik.com/devtools/xamarin/controls/path/getting-started/geometry-structure#radarcsegment" target="_blank" rel="noopener"&gt;RadArcSegment&lt;/a&gt;&#10; object, which has helpful &lt;strong&gt;StartAngle&lt;/strong&gt; and &lt;strong&gt;SweepAngle&lt;/strong&gt; properties.&lt;/p&gt;</description></item><item><title>Talk to the View</title><link>/en/blog/2019.04.16-talk-to-the-view/</link><pubDate>Tue, 16 Apr 2019 00:00:00 +0000</pubDate><guid>/en/blog/2019.04.16-talk-to-the-view/</guid><description>&lt;p&gt;There are many scenarios where a UI component might not have a Command or bindable property available for certain features that you need to access from the view model. There is a simple, but powerful, thing you can do to allow this and not break MVVM or testing capability, leverage the Interface.&lt;/p&gt;&#10;&lt;h2 id="scenario"&gt;Scenario&lt;/h2&gt;&#10;&lt;p&gt;Let&amp;rsquo;s imagine the scenario where we have a special ListView control that has a &lt;strong&gt;HighlightItem&lt;/strong&gt; method that can only be called with a direct reference to that control. There isn&amp;rsquo;t a Command or DependencyProperty (aka BindableProperty in Xamarin.Forms) alternative, so it has to be done in the code behind.&lt;/p&gt;</description></item><item><title>Using PowerShell to Install an SDK in a DevOps Build Pipeline</title><link>/en/blog/2019.01.04-using-powershell-to-installing-msi-in-a-devops-build/</link><pubDate>Fri, 04 Jan 2019 00:00:00 +0000</pubDate><guid>/en/blog/2019.01.04-using-powershell-to-installing-msi-in-a-devops-build/</guid><description>&lt;p&gt;&lt;img src="../../../en/blog/2019.01.04-using-powershell-to-installing-msi-in-a-devops-build/image-4.png" alt=""&gt;&lt;/p&gt;&#10;&lt;p&gt;I have &lt;a href="https://github.com/LanceMcCarthy/MvpApi" target="_blank" rel="noopener"&gt;an open source UWP project&lt;/a&gt;&#10; that relies on the Ad SDK and Engagement SDK to be installed to Visual Studio. This normally isn&amp;rsquo;t a problem, because you can just run the MSI on your PC (see installation instructions &lt;a href="https://docs.microsoft.com/en-us/windows/uwp/monetize/microsoft-store-services-sdk" target="_blank" rel="noopener"&gt;here&lt;/a&gt;&#10; and &lt;a href="https://docs.microsoft.com/en-us/windows/uwp/monetize/install-the-microsoft-advertising-libraries" target="_blank" rel="noopener"&gt;here&lt;/a&gt;&#10;).&lt;/p&gt;&#10;&lt;p&gt;I decided to move the project into DevOps so that I get some of that CI/CD goodness to build and publish new releases automatically to the Microsoft Store. However, there was a problem, when trying to build the project in a DevOps build pipeline, you&amp;rsquo;ll get the following error:&lt;/p&gt;</description></item><item><title>LoginDialog for easy Live SDK OAuth</title><link>/en/blog/2018.12.06-logindialog-for-easy-live-sdk-oauth/</link><pubDate>Thu, 06 Dec 2018 00:00:00 +0000</pubDate><guid>/en/blog/2018.12.06-logindialog-for-easy-live-sdk-oauth/</guid><description>&lt;p&gt;Almost every developer I speak with agrees that getting a nicely working OAuth flow can be difficult. After much trial and error, I&amp;rsquo;ve built a UWP &lt;a href="https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Controls.ContentDialog" target="_blank" rel="noopener"&gt;ContentDialog&lt;/a&gt;&#10; that makes this easy and has built-in refresh token support.&lt;/p&gt;&#10;&lt;h2 id="using-the-logindialog"&gt;Using the LoginDialog&lt;/h2&gt;&#10;&lt;p&gt;This is very simple to use, when the app launches, instantiate the dialog by passing your Live SDK ClientID and let the LoginDialog do the heavy lifting:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;// Pass your app&amp;#39;s OAuth ClientId (sometimes called an AppId)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd"&gt;var&lt;/span&gt; loginDialog = &lt;span style="color:#ff79c6"&gt;new&lt;/span&gt; LoginDialog(&lt;span style="color:#f1fa8c"&gt;&amp;#34;YourAppClientId&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;// *** Perform login **** //&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;// Case 1 - If the user was previously signed in, there is a refresh_token stored and no user-entered credentials are needed.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;// Case 2 - If the access token fails, or if it&amp;#39;s the first sign-in, the user will see a popup to enter credentials.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;await&lt;/span&gt; loginDialog.SignInAsync();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;if&lt;/span&gt;(!&lt;span style="color:#8be9fd"&gt;string&lt;/span&gt;.IsNullOrEmpty(loginDialog.Authentication))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// This will be the access token you can use for API calls.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd"&gt;var&lt;/span&gt; accessToken = loginDialog.Authentication;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// Make your API calls with the accessToken, for example:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd"&gt;var&lt;/span&gt; user = &lt;span style="color:#ff79c6"&gt;await&lt;/span&gt; apiService.GetUserProfileAsync(accessToken);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This works just like a MessageDialog, but instead will show a WebView for the user to sign in, or automatically sign them in silently if they were previously logged in.&lt;/p&gt;</description></item><item><title>Error XF001: Xamarin.Forms targets have been imported multiple times</title><link>/en/blog/2018.10.01-error-xf001-xamarin-forms-targets-have-been-imported-multiple-times/</link><pubDate>Mon, 01 Oct 2018 00:00:00 +0000</pubDate><guid>/en/blog/2018.10.01-error-xf001-xamarin-forms-targets-have-been-imported-multiple-times/</guid><description>&lt;p&gt;If you&amp;rsquo;re in the process of updating a Xamarin.Forms app to a more modern style project set up (NET Standard 2.0, PackageReference, etc), you may get the following error.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Error XF001: Xamarin.Forms targets have been imported multiple times. Please check your project file and remove the duplicate import(s).&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;This can be because of the move to using PackageReference for your NuGet packages and a simple fix awaits you.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Close Visual Studio and navigate to the Solution in File Explorer&lt;/li&gt;&#10;&lt;li&gt;Delete the hidden &lt;strong&gt;.vs&lt;/strong&gt; folder&lt;/li&gt;&#10;&lt;li&gt;Go into each affected project sub folder and delete the following files; &lt;strong&gt;project_name.nuget.props&lt;/strong&gt; and &lt;strong&gt;project_name.nuget.targets&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Open the solution in Visual Studio, do a Clean and Rebuild, &lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt; &lt;/p&gt;</description></item><item><title>Custom Events and Xamarin.Forms Effect</title><link>/en/blog/2018.07.17-custom-events-and-xamarin-forms-effect/</link><pubDate>Tue, 17 Jul 2018 00:00:00 +0000</pubDate><guid>/en/blog/2018.07.17-custom-events-and-xamarin-forms-effect/</guid><description>&lt;p&gt;This post will walk you through setting up a &lt;a href="https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/effects/introduction" target="_blank" rel="noopener"&gt;Xamarin Platform Effect&lt;/a&gt;&#10; and show you how to wire up an event handler so you can leverage native APIs in the case that the Xamarin.Forms wrapper doesn&amp;rsquo;t yet have. For this example, I&amp;rsquo;ll use the Telerik UI for Xamarin RadCalendar.&lt;/p&gt;&#10;&lt;p&gt;tl;dr &lt;em&gt;Full source code on GitHub &lt;a href="https://github.com/LanceMcCarthy/CustomXamarinDemos/tree/master/RangeSelectionTest" target="_blank" rel="noopener"&gt;here&lt;/a&gt;&#10;.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;I get frequently asked how to enable RangeSelection (aka Multiple Selection) for the RadCalendar. The native platform calendar controls all have Range Selection available, so we only need to create a  Platform Effect to access that native feature.&lt;/p&gt;</description></item><item><title>Epic Build 2018 Playlists</title><link>/en/blog/2018.05.09-epic-2018-playlists/</link><pubDate>Wed, 09 May 2018 00:00:00 +0000</pubDate><guid>/en/blog/2018.05.09-epic-2018-playlists/</guid><description>&lt;p&gt;Your one-stop shop for Microsoft Build 2018 sessions, slide decks, post links, keynotes and much more.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/windows-ml--uwp-app-developer?playlist=5122af4c-63c2-4970-a4af-f5d006357a5b" target="_blank" rel="noopener"&gt;AI, Windows ML and Cognitive Services&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/msix-inside-and-out-pptx?playlist=80d147e8-f3b0-4ca0-a96f-cfc8e80bec20" target="_blank" rel="noopener"&gt;Desktop - Windows Store (UWP, Win32 and IoT)&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/building-web-api-solutions-with-authentication?playlist=d41c5eba-2ea9-4200-be07-62099c3c89ff" target="_blank" rel="noopener"&gt;ASP.NET, PWA and Web&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/free-ebook--developers-guide-to-microsoft-azure?playlist=0b7ba19f-91fa-42aa-be2f-87c0613fde9d" target="_blank" rel="noopener"&gt;Azure and Cloud Services&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/achieving-scale-with-hololens-and-bim?playlist=f0e2f1d8-49cd-4f66-9cf0-d49f0a35c61f" target="_blank" rel="noopener"&gt;Hololens and Mixed Reality&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/multi-sense-multi-device-world?playlist=fea8e802-aae4-4e11-89a0-00b61869ef23" target="_blank" rel="noopener"&gt;Microsoft Graph and Microsoft 365&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/build-xamarin-solutions-with-authentication?playlist=42f17792-3441-4502-a95f-21e115f1c717" target="_blank" rel="noopener"&gt;Xamarin&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/keynote-microsoft-365-app-development?playlist=ee7be727-1f8c-47ba-b1d9-3ae99eff9e3f" target="_blank" rel="noopener"&gt;Keynotes and other key presentations&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/windows-subsystem-for-linux?playlist=5440cdfa-f151-43d8-8f74-9f23cbcd35ce" target="_blank" rel="noopener"&gt;Windows Features&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Living Document Note:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;These Playlists will continue to be reordered and updated in real time as new content becomes available. However, the links will always remain the same and you can refresh the playlist page to get any updated ordering/content.&lt;/p&gt;</description></item><item><title>Migrating from PCLStorage to .NET Standard 2.0</title><link>/en/blog/2018.04.19-migrating-from-pclstorage-to-net-standard-2-0/</link><pubDate>Thu, 19 Apr 2018 00:00:00 +0000</pubDate><guid>/en/blog/2018.04.19-migrating-from-pclstorage-to-net-standard-2-0/</guid><description>&lt;p&gt;If you&amp;rsquo;re a Xamarin Forms developer, you&amp;rsquo;ve likely used &lt;a href="https://github.com/dsplaisted/PCLStorage" target="_blank" rel="noopener"&gt;PCLStorage&lt;/a&gt;&#10; (or other Dependency Service) to interact with the target platform&amp;rsquo;s file system in the portable class library&amp;rsquo;s code. However, since November 2017, Xamarin.Forms now uses a .NET Standard 2.0 class library and PCLStorage is no longer supported.&lt;/p&gt;&#10;&lt;h2 id="systemiofile"&gt;System.IO.File&lt;/h2&gt;&#10;&lt;p&gt;This isn&amp;rsquo;t a problem because in .NET Core 2.0 you now have access to System.IO.File&amp;rsquo;s GetFolderPath and SpecialFolder methods (see &lt;a href="https://docs.microsoft.com/en-us/dotnet/api/system.io.file?view=netcore-2.0" target="_blank" rel="noopener"&gt;System.IO.File in .NET Core 2.0 docs&lt;/a&gt;&#10;).&lt;/p&gt;</description></item><item><title>Windows 10 on ARM: Day-One Developer Experience</title><link>/en/blog/2018.03.08-windows-10-on-arm-day-one-developer-experience/</link><pubDate>Thu, 08 Mar 2018 00:00:00 +0000</pubDate><guid>/en/blog/2018.03.08-windows-10-on-arm-day-one-developer-experience/</guid><description>&lt;p&gt;[EDIT Updated to include ARM64]&lt;/p&gt;&#10;&lt;p&gt;I was given the honor of having early access to &lt;strong&gt;&lt;a href="https://docs.microsoft.com/en-us/windows/uwp/porting/apps-on-arm" target="_blank" rel="noopener"&gt;Windows 10 on ARM&lt;/a&gt;&#10;&lt;/strong&gt; (WoA) so that I could chronicle the experience and provide you with tips to ensure that your development experience is smooth. I&amp;rsquo;ll go through a list of potential issues you might encounter, along my fix for each.&lt;/p&gt;&#10;&lt;h3 id="what-this-post-is"&gt;What this post is:&lt;/h3&gt;&#10;&lt;p&gt;This article is intended to be a quick guide on how to set up the device so that you can deploy and debug your apps. I will be writing this from a UWP developer&amp;rsquo;s perspective, sharing the experience of deploying and debugging &lt;a href="https://github.com/LanceMcCarthy/WoA_Tests" target="_blank" rel="noopener"&gt;this real time video effects test app&lt;/a&gt;&#10;.&lt;/p&gt;</description></item><item><title>Custom Themes in UI for Xamarin</title><link>/en/blog/2018.02.19-custom-themes-in-ui-for-xamarin/</link><pubDate>Mon, 19 Feb 2018 00:00:00 +0000</pubDate><guid>/en/blog/2018.02.19-custom-themes-in-ui-for-xamarin/</guid><description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.telerik.com/xamarin-ui" target="_blank" rel="noopener"&gt;Telerik UI for Xamarin&lt;/a&gt;&#10;&lt;/strong&gt; comes with two themes out of the box, Default and Blue. You can easily style individual items, but you can also define an entire theme at once in a separate ResourceDictionary.&lt;/p&gt;&#10;&lt;p&gt;With this approach you can swap out ResourceDictionaries at runtime for a nice user-selected theme feature in your app&amp;rsquo;s settings. Let me walk you through a very simple demo to illustrate the approach.&lt;/p&gt;&#10;&lt;h3 id="step-1-create-your-custom-themes-resourcedictionary"&gt;Step 1. Create your custom theme&amp;rsquo;s ResourceDictionary&lt;/h3&gt;&#10;&lt;p&gt;Xamarin.Forms doesn&amp;rsquo;t have a good ResourceDictionary template, so start with a &lt;strong&gt;Content Page&lt;/strong&gt; (XAML) template and then change the ContentPage type to &amp;ldquo;ResourceDictionary&amp;rdquo; in both the XAML and code-behind.&lt;/p&gt;</description></item><item><title>Creating 3D Icons for your Mixed Reality UWP app</title><link>/en/blog/2017.09.06-creating-3d-icons-for-your-mixed-reality-uwp-app/</link><pubDate>Wed, 06 Sep 2017 00:00:00 +0000</pubDate><guid>/en/blog/2017.09.06-creating-3d-icons-for-your-mixed-reality-uwp-app/</guid><description>&lt;p&gt;Microsoft has opened up the ability to have a 3D app launcher to all developers in the Fall Creator&amp;rsquo;s Update. In this blog post, I&amp;rsquo;m going to show you how to build your own 3D app launcher from scratch (accompanying YouTube tutorial video embedded below).&lt;/p&gt;&#10;&lt;p&gt;What is a 3D app launcher?&lt;/p&gt;&#10;&lt;h2 id="app-launchers"&gt;App Launchers&lt;/h2&gt;&#10;&lt;p&gt;Up until now, you&amp;rsquo;ve only been able to have a regular 2D tile in the Start menu and the user could place a 2D frame of your app on a surface in the Cliff House (the Mixed Reality home) or on a surface in your HoloLens mapped area. Clicking the app frame would launch the app in the same frame.&lt;/p&gt;</description></item><item><title>"Cannot download Windows Mixed Reality software" error fix!</title><link>/en/blog/2017.08.03-cannot-download-windows-mixed-reality-software-error-fix/</link><pubDate>Thu, 03 Aug 2017 00:00:00 +0000</pubDate><guid>/en/blog/2017.08.03-cannot-download-windows-mixed-reality-software-error-fix/</guid><description>&lt;p&gt;Did you just get a new Mixed Reality headset? Were you so excited that you ripped open the box and plugged it in only to to find that after setting up  your floor and boundaries that you got the following error:&lt;/p&gt;&#10;&lt;h3 id="cannot-download-windows-mixed-reality-software"&gt;&lt;strong&gt;Cannot download Windows Mixed Reality software&lt;/strong&gt;&lt;/h3&gt;&#10;&lt;p&gt;Screeching halt!&lt;/p&gt;&#10;&lt;p&gt;I spent a lot of time digging around the Hololens forums and long conversations on the Holodevelopers Slack and it seemed there was a wide variety of reason for this. However, after looking at my Developer Mode settings page (in Windows Settings), there was an incomplete dev package installation.&lt;/p&gt;</description></item><item><title>Easy XamlCompositionBrushBase</title><link>/en/blog/2017.06.18-easy-xamlcompositionbrushbase/</link><pubDate>Sun, 18 Jun 2017 00:00:00 +0000</pubDate><guid>/en/blog/2017.06.18-easy-xamlcompositionbrushbase/</guid><description>&lt;p&gt;The upcoming Windows 10 update, the Fall Creator&amp;rsquo;s Update, introduces a new design system, &lt;a href="http://fluent.microsoft.com/" target="_blank" rel="noopener"&gt;Microsoft Fluent Design System&lt;/a&gt;&#10;. The design system has 5 major building blocks:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Light&lt;/li&gt;&#10;&lt;li&gt;Depth&lt;/li&gt;&#10;&lt;li&gt;Motion&lt;/li&gt;&#10;&lt;li&gt;Material&lt;/li&gt;&#10;&lt;li&gt;Scale&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;You can use any of these in a multitude of ways, however Microsoft has made it very easy to use in the latest Preview SDK (16190). Some of the things that used to be relatively hard, or at the least verbose, can now be done with a few lines of code.&lt;/p&gt;</description></item><item><title>Smart Shades with Windows IoT 1</title><link>/en/blog/2017.02.14-smart-shades-with-windows-iot-1/</link><pubDate>Tue, 14 Feb 2017 00:00:00 +0000</pubDate><guid>/en/blog/2017.02.14-smart-shades-with-windows-iot-1/</guid><description>&lt;p&gt;I wanted to be able to have my office shades go up or down automatically, depending on the amount of light outside. Then I thought, why not take it to the next level with &lt;strong&gt;Windows IoT?&lt;/strong&gt;  I could design a UI with the help of &lt;a href="https://github.com/telerik/ui-for-uwp" target="_blank" rel="noopener"&gt;the recently open-sourced&lt;/a&gt;&#10; &lt;strong&gt;Telerik UI for UWP&lt;/strong&gt; and also leverage a FEZ HAT&amp;rsquo;s &amp;amp; Raspberry Pi 3 to drive the motors, detect light levels and temperature.&lt;/p&gt;</description></item><item><title>Manipulation is easier than you think</title><link>/en/blog/2017.01.10-manipulation-is-easier-than-you-think/</link><pubDate>Tue, 10 Jan 2017 00:00:00 +0000</pubDate><guid>/en/blog/2017.01.10-manipulation-is-easier-than-you-think/</guid><description>&lt;p&gt;You know that bottom drawer on the Windows 10 navigation app where the upcoming turns are in a list? You know how you can drag it up or down to show more or less of the content? Want to learn how to create it? You&amp;rsquo;re in luck because that&amp;rsquo;s what today&amp;rsquo;s topic is!&lt;/p&gt;&#10;&lt;p&gt;Here&amp;rsquo;s the result of what you&amp;rsquo;ll be able to do:&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="../../../en/blog/2017.01.10-manipulation-is-easier-than-you-think/navdrawer.gif" alt="navdrawer"&gt;&lt;/p&gt;&#10;&lt;h3 id="the-approach"&gt;The Approach&lt;/h3&gt;&#10;&lt;p&gt;Let&amp;rsquo;s get started. Since there are no built-in controls that do this, we&amp;rsquo;ll create a simple layout (links to source code at the end of the article).&lt;/p&gt;</description></item><item><title>Surface Dial and Real-Time Video Effects</title><link>/en/blog/2016.11.11-surface-dial-and-real-time-video-effects/</link><pubDate>Fri, 11 Nov 2016 00:00:00 +0000</pubDate><guid>/en/blog/2016.11.11-surface-dial-and-real-time-video-effects/</guid><description>&lt;p&gt;I was given a Surface Dial the other day and I thought &amp;ldquo;what can I do with this to create a better experience for the user&amp;rdquo;. One thing came right to mind, applying real-time video effects.&lt;/p&gt;&#10;&lt;p&gt;I have a UWP app in the Windows Store, &lt;a href="https://www.microsoft.com/store/apps/9wzdncrdmgbf" target="_blank" rel="noopener"&gt;Video Diary&lt;/a&gt;&#10;, where you can apply real-time video effects while recording a video. One of the features of these effects is to increase or decrease the video effect&amp;rsquo;s properties. For example, the intensity of a Vignette effect, here&amp;rsquo;s what I want:&lt;/p&gt;</description></item><item><title>Build A Custom Win2D RadImageEditor Tool</title><link>/en/blog/2016.02.19-build-a-custom-win2d-radimageeditor-tool/</link><pubDate>Fri, 19 Feb 2016 00:00:00 +0000</pubDate><guid>/en/blog/2016.02.19-build-a-custom-win2d-radimageeditor-tool/</guid><description>&lt;p&gt;Telerik has recently ported the &lt;a href="http://docs.telerik.com/windows-universal/controls/radimageeditor/imageeditor-visual-structure" target="_blank" rel="noopener"&gt;RadImageEditor&lt;/a&gt;&#10; to &lt;strong&gt;Windows Universal&lt;/strong&gt; (8.1 Universal right now, UWP is coming very soon). It is &lt;em&gt;powerful&lt;/em&gt; for something that only needs a few lines of code to use the 20 predefined tools.&lt;/p&gt;&#10;&lt;p&gt;But what if you wanted something not in those 20? Or what if you didn&amp;rsquo;t want to have a dependency on the Lumia Imaging SDK (needed for the built-in tools)?&lt;/p&gt;&#10;&lt;p&gt;One great features of RadImageEditor is the ability to make a custom tool, tool group or layer. Today I&amp;rsquo;ll show you how to create a Win2D tool group and add a custom GaussianBlurTool.&lt;/p&gt;</description></item><item><title>Sending Image Data with parameter using HttpClient Post</title><link>/en/blog/2016.01.12-sending-image-data-with-parameter-using-httpclient-post/</link><pubDate>Tue, 12 Jan 2016 00:00:00 +0000</pubDate><guid>/en/blog/2016.01.12-sending-image-data-with-parameter-using-httpclient-post/</guid><description>&lt;p&gt;I recently needed to send image data to a server for processing and thought I&amp;rsquo;d share how to do that using System.Net.Http.&lt;strong&gt;HttpClient&lt;/strong&gt; in a UWP (Universal Windows) app. First, let&amp;rsquo;s start with the API&amp;rsquo;s requirements, it states:&lt;/p&gt;&#10;&lt;p&gt;Parameter: &lt;strong&gt;image&lt;/strong&gt; - The image parameter should be the binary file data for the image you would like analyzed (PNG, GIF, JPG only). Files cannot be larger than 500k.&lt;/p&gt;&#10;&lt;p&gt;So that means I have to send image data as binary data with the parameter &lt;strong&gt;image&lt;/strong&gt;. I can use System.Net.Http.&lt;strong&gt;ByteArrayContent&lt;/strong&gt; for the image data. To get the image data from the file as a &lt;code&gt;byte[]&lt;/code&gt; the approach I use is the following (there are other ways to do this):&lt;/p&gt;</description></item><item><title>Reward your users for feedback and bug reports</title><link>/en/blog/2015.10.14-reward-your-users-for-feedback-and-bug-reports/</link><pubDate>Wed, 14 Oct 2015 00:00:00 +0000</pubDate><guid>/en/blog/2015.10.14-reward-your-users-for-feedback-and-bug-reports/</guid><description>&lt;p&gt;One of the new features of DevCenter is the ability to generate &lt;strong&gt;Promotional Codes&lt;/strong&gt; for your app. With this new ability, I&amp;rsquo;ve started rewarding my users for taking the time to make the app better.&lt;/p&gt;&#10;&lt;p&gt;Let&amp;rsquo;s be specific so that you know exactly what &amp;rsquo;m talking about. I have a relatively popular app in the store and get all sorts of feedback, crazy nonsense and helpful alike. For those users whom send in a helpful bug report or would get the following email from me:&lt;/p&gt;</description></item><item><title>Telerik Universal on Raspberry Pi2</title><link>/en/blog/2015.06.30-telerik-universal-on-raspberry-pi2/</link><pubDate>Thu, 30 Jul 2015 00:00:00 +0000</pubDate><guid>/en/blog/2015.06.30-telerik-universal-on-raspberry-pi2/</guid><description>&lt;p&gt;Most people think of IoT (Internet of Things) as a collection of tiny brains, without user interfaces, collecting data. Some think it&amp;rsquo;s &lt;a href="http://www.ipetcompanion.com/" target="_blank" rel="noopener"&gt;a remote controlled animal shelter cat toy&lt;/a&gt;&#10; or a &lt;a href="https://en.wikipedia.org/wiki/Deadblow" target="_blank" rel="noopener"&gt;Grant Imahara style robot&lt;/a&gt;&#10; to do battle. The truth is that IoT is a very broad term, it covers many types of devices, including remote cat toys!&lt;/p&gt;&#10;&lt;p&gt;Here&amp;rsquo;s a Vine of what Windows IoT means to me&amp;hellip; &lt;strong&gt;Telerik UI on IoT&lt;/strong&gt;! This post is a overview tutorial, &lt;strong&gt;&lt;a href="https://github.com/LanceMcCarthy/TelerikOnWindowsIoT" target="_blank" rel="noopener"&gt;find the full source code on GitHub&lt;/a&gt;&#10;.&lt;/strong&gt; (#bananaForScale)&lt;/p&gt;</description></item><item><title>Error : DEP3321 - Can't deploy to Windows 10 Mobile</title><link>/en/blog/2015.07.28-error-dep3321-cant-deploy-to-windows-10-mobile/</link><pubDate>Tue, 28 Jul 2015 00:00:00 +0000</pubDate><guid>/en/blog/2015.07.28-error-dep3321-cant-deploy-to-windows-10-mobile/</guid><description>&lt;p&gt;With Windows 10 being rolled out as I write this article, there will be updated sample Windows Platform apps available soon (today). It&amp;rsquo;s also time to update your projects.&lt;/p&gt;&#10;&lt;p&gt;However, you may find yourself not able to deploy to Windows 10 Mobile after updating your projects or older samples to Windows 10 (build 10240). This post will show you how to resolve this problem.&lt;/p&gt;&#10;&lt;h2 id="the-problem"&gt;The Problem&lt;/h2&gt;&#10;&lt;p&gt;You&amp;rsquo;ll see an error something like this when deploying to a physical Windows 10 Mobile device:&lt;/p&gt;</description></item><item><title>One XAML for UWP, Windows 8.1 and Windows Phone 8.1</title><link>/en/blog/2015.05.27-one-xaml-for-uwp-windows-8-1-and-windows-phone-8-1/</link><pubDate>Wed, 27 May 2015 00:00:00 +0000</pubDate><guid>/en/blog/2015.05.27-one-xaml-for-uwp-windows-8-1-and-windows-phone-8-1/</guid><description>&lt;p&gt;I was recently involved in a conversation on how to have the easiest way to maintain a XAML view across a UWP (Universal Windows Project) a Windows 8.1 and Windows Phone 8.1 projects. There are a few options and the most straight forward way to do it with a UserControl residing in a Portable Class Library. However&amp;hellip;&lt;/p&gt;&#10;&lt;p&gt;What if you wanted to have **tailored code for each **without littering your code with #ifdef but still share a XAML view?  The XAML View might be what you&amp;rsquo;re looking for. This is a tutorial on how to do just that. An example project is available for download at the end of the article. Let&amp;rsquo;s get started:&lt;/p&gt;</description></item><item><title>Custom Pivot Header with Animation</title><link>/en/blog/2015.04.09-custom-pivot-header-with-animation/</link><pubDate>Thu, 09 Apr 2015 00:00:00 +0000</pubDate><guid>/en/blog/2015.04.09-custom-pivot-header-with-animation/</guid><description>&lt;p&gt;I recently wanted to make a header with tabs for my app&amp;rsquo;s pages that have a Pivot. Something like Office Mobile, but without the drop-down menus. Here&amp;rsquo;s the result I got in my upcoming app. I decided to post a tutorial and provide a sample app.&lt;/p&gt;&#10;&lt;p&gt;[&lt;img src="../../../en/blog/2015.04.09-custom-pivot-header-with-animation/custompivotheader.gif" alt="CustomPivotHeader"&gt;&lt;/p&gt;&#10;&lt;p&gt;Notice the fast fade-in of the background color of the tab, this is important and is where you&amp;rsquo;ll be able to add your own flavor to the style after you&amp;rsquo;ve completed this tutorial. Ok, let&amp;rsquo;s get started!&lt;/p&gt;</description></item><item><title>Page Transitions for Universal XAML Pages</title><link>/en/blog/2015.02.07-page-transitions-for-universal-xaml-pages/</link><pubDate>Sat, 07 Feb 2015 00:00:00 +0000</pubDate><guid>/en/blog/2015.02.07-page-transitions-for-universal-xaml-pages/</guid><description>&lt;p&gt;Normally, if you want different page transitions (&lt;a href="https://msdn.microsoft.com/en-us/library/windows.ui.xaml.media.animation.navigationthemetransition.aspx" target="_blank" rel="noopener"&gt;NavigationThemeTransition&lt;/a&gt;&#10;) for your Universal XAML Windows Phone 8.1 app, you&amp;rsquo;d set it on the page&amp;rsquo;s XAML directly. For example, let&amp;rsquo;s do a &lt;strong&gt;ContinuumTransition&lt;/strong&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;&amp;lt;Page.Transitions&amp;gt;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;TransitionCollection&amp;gt;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;NavigationThemeTransition&amp;gt;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;NavigationThemeTransition.DefaultNavigationTransitionInfo&amp;gt;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;ContinuumNavigationTransitionInfo&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;/&amp;gt;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;/NavigationThemeTransition.DefaultNavigationTransitionInfo&amp;gt;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;/NavigationThemeTransition&amp;gt;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;/TransitionCollection&amp;gt;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;&amp;lt;/Page.Transitions&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;However, if you have a XAML page in your Universal app&amp;rsquo;s &lt;strong&gt;shared&lt;/strong&gt; folder, you can&amp;rsquo;t use XAML because page transitions are not available for Windows 8.1 apps. Since there isn&amp;rsquo;t a conditional compilation for XAML, we&amp;rsquo;ll need to do it from the code behind.&lt;/p&gt;</description></item><item><title>WinRT MediaCapture Tips</title><link>/en/blog/2015.01.20-winrt-mediacapture-tips/</link><pubDate>Tue, 20 Jan 2015 00:00:00 +0000</pubDate><guid>/en/blog/2015.01.20-winrt-mediacapture-tips/</guid><description>&lt;p&gt;As we approach Windows 10, many of you are considering updating your SL 8.0 apps to WinRT. In fact, Larry Lieberman and team recommend you do this and have &lt;a href="http://blogs.windows.com/buildingapps/2014/12/17/bring-your-windows-phone-silverlight-apps-to-windows-runtime-xaml-prepare-for-universal-app-development-in-windows-10/" target="_blank" rel="noopener"&gt;shared some resources&lt;/a&gt;&#10; to help facilitate the move. I&amp;rsquo;ve done this for a couple apps so far and wanted to share some of my experience while migrating Silverlight &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/windows.phone.media.capture.audiovideocapturedevice.aspx" target="_blank" rel="noopener"&gt;AudioVideoCaptureDevice&lt;/a&gt;&#10; API to WinRT MediaCapture, because you&amp;rsquo;ll need to rewrite your approach.&lt;/p&gt;&#10;&lt;p&gt;The WinRT documentation helps with a lot of stuff, but there are holes that I had to discover for myself. To help ease the process, I&amp;rsquo;m sharing some of the solutions that I&amp;rsquo;ve discovered, uncovered and smash-my-head-on-the-desk about. Let&amp;rsquo;s get started:&lt;/p&gt;</description></item><item><title>Report progress - IAsyncActionWithProgress</title><link>/en/blog/2015.01.12-report-iasyncaction-with-progress/</link><pubDate>Mon, 12 Jan 2015 00:00:00 +0000</pubDate><guid>/en/blog/2015.01.12-report-iasyncaction-with-progress/</guid><description>&lt;p&gt;One of the best things you can do for your app&amp;rsquo;s users is to report the progress of an operation. Showing a progress bar can greatly increase the patience of the user, not knowing how long something is going to take can make the operation just &lt;strong&gt;feel&lt;/strong&gt; longer.&lt;/p&gt;&#10;&lt;p&gt;Luckily, many WinRT Tasks will return an &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/br206581.aspx" target="_blank" rel="noopener"&gt;IAsyncActionWithProgress&lt;/a&gt;&#10;. I&amp;rsquo;ve seen many blog posts about this topic, but most are deeply involved and weren&amp;rsquo;t suited for a quick lookup. This post will show you a quick example, which you can apply in your app..&lt;/p&gt;</description></item><item><title>How to disable display timeout in WinRT</title><link>/en/blog/2015.01.07-how-to-disable-display-timeout-in-winrt/</link><pubDate>Wed, 07 Jan 2015 00:00:00 +0000</pubDate><guid>/en/blog/2015.01.07-how-to-disable-display-timeout-in-winrt/</guid><description>&lt;p&gt;For those of you who are building multimedia related apps, you&amp;rsquo;ll want to consider disabling the display timeout of the user&amp;rsquo;s device. This prevents the screen from dimming or locking while the user is playing/recording media.&lt;/p&gt;&#10;&lt;p&gt;In my case, I have a view where the user is doing some video recording. so I don&amp;rsquo;t want the screen to time out on that page&lt;/p&gt;&#10;&lt;p&gt;1)  Create a class scope variable::&lt;/p&gt;&#10;&lt;p&gt;private DisplayRequest dRequest;&lt;/p&gt;</description></item><item><title>EmailMessage class Approach for Windows</title><link>/en/blog/2014.12.31-showcomposenewemailasync-approach-for-windows/</link><pubDate>Wed, 31 Dec 2014 00:00:00 +0000</pubDate><guid>/en/blog/2014.12.31-showcomposenewemailasync-approach-for-windows/</guid><description>&lt;p&gt;Unfortunately, there is no EmailMessage class for big Windows. It is such a nice feature of Windows Phone to be able to quickly compose an email programmatically and launch the built-in email app. However, I have created a working approach for the windows portions of my Universal Windows apps and I wanted to share it with you.&lt;/p&gt;&#10;&lt;p&gt;My first attempt was with using a ShareContract, but it doesn&amp;rsquo;t allow you to fill in the &amp;ldquo;To:&amp;rdquo; field and sometimes my error report data was too long to fit into DataTransferManager&amp;rsquo;s SetText() method.&lt;/p&gt;</description></item><item><title>Adding Telerik Universal</title><link>/en/blog/2014.11.10-adding-telerik-universal-to-your-app/</link><pubDate>Mon, 10 Nov 2014 00:00:00 +0000</pubDate><guid>/en/blog/2014.11.10-adding-telerik-universal-to-your-app/</guid><description>&lt;p&gt;Telerik has released a new toolset, &lt;a href="http://www.telerik.com/windows-universal-ui" target="_blank" rel="noopener"&gt;UI for Windows Universal&lt;/a&gt;&#10;. You can now use many components like Charts and Calendars in a shared XAML page in your application. If you already have the Telerik Windows Phone or Windows 8.1 XAML controls, &lt;em&gt;you now have a license for the Universal controls, too&lt;/em&gt;.&lt;/p&gt;&#10;&lt;p&gt;It is very simple to add it to your project. Let me show you in a quick File &amp;gt; New example:&lt;/p&gt;</description></item><item><title>Read-only Address Bar for Webview</title><link>/en/blog/2014.10.26-read-only-address-bar-for-webview/</link><pubDate>Sun, 26 Oct 2014 00:00:00 +0000</pubDate><guid>/en/blog/2014.10.26-read-only-address-bar-for-webview/</guid><description>&lt;p&gt;If you are having a Windows Store application fail certification or being unpublished because you have violated &lt;strong&gt;Policy 2.1.2&lt;/strong&gt;  - &lt;em&gt;requires a visible address bar that displays a secure connection to users when they enter financial information or complete a transaction&lt;/em&gt; (&lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh184841%28v=vs.105%29.aspx" target="_blank" rel="noopener"&gt;see policy definitions&lt;/a&gt;&#10;).&lt;/p&gt;&#10;&lt;p&gt;The reason for this rule is because you are bringing the user to a site that is using HTTPS and the user may be entering in secure information. You &lt;strong&gt;need to give the user confidence&lt;/strong&gt; that you are not spoofing the website and stealing the entered information.&lt;/p&gt;</description></item><item><title>Invalid XAML error updating from WP7</title><link>/en/blog/2014.08.04-invalid-xaml-error-updating-from-wp7/</link><pubDate>Mon, 04 Aug 2014 00:00:00 +0000</pubDate><guid>/en/blog/2014.08.04-invalid-xaml-error-updating-from-wp7/</guid><description>&lt;p&gt;We are now seeing the beginning of the fast decline of Windows Phone 7 as it exits the market over the next several months, many of you will need to act to update your app to at least Windows Phone 8.  I did this for all of my WP7 apps and there was one error that was In just about every upgrade:&lt;/p&gt;&#10;&lt;p&gt;An error on this XAML namespace declaration:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;xmlns:controls=&amp;#34;clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls&amp;#34;&#10;&#10;```Previous to Windows Phone 8, the Pivot and Panorama controls were part of a toolkit. The Windows Phone team did a solid by included these in the OS, they also added new controls like the LongListSelector to replace the toolkit&amp;#39;s ListPicker . These controls are now found in the Phone namespace.&#10;&#10;It&amp;#39;s a very frustrating problem if you&amp;#39;re seeing it for the first time. Don&amp;#39;t worry, there is a really easy fix... Delete the xmlns:controls line and use only the xmlns:phone one or edit it and remove the &amp;#34;.Contols&amp;#34; part of the assembly pointer. Here is what it will look like after doing the edit option:&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;xmlns:controls=&amp;ldquo;clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone&amp;rdquo;&lt;/p&gt;</description></item><item><title>App Studio - Design-Time Sample Data</title><link>/en/blog/2014.07.02-app-studio-design-time-sample-data/</link><pubDate>Wed, 02 Jul 2014 00:00:00 +0000</pubDate><guid>/en/blog/2014.07.02-app-studio-design-time-sample-data/</guid><description>&lt;p&gt;If you&amp;rsquo;re like me, you like to fiddle and tweak things to &lt;a href="http://www.windowsphone.com/en-us/store/app/vsauce-supreme/296588cc-ca8f-4851-a1df-8e1cc5de8246" target="_blank" rel="noopener"&gt;get just the right result&lt;/a&gt;&#10;. Recently, Microsoft has really beefed up &lt;a href="http://appstudio.windows.com/" target="_blank" rel="noopener"&gt;App Studio&lt;/a&gt;&#10; apps and if you explore the downloaded source code you&amp;rsquo;ll see a new Universal app structure leveraging MVVM. Let&amp;rsquo;s start with the before and after photo (&lt;em&gt;click any image to view larger&lt;/em&gt;):&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="../../../en/blog/2014.07.02-app-studio-design-time-sample-data/before-after-blog.png"&#10;&#9;&#9;&#9;alt="Before and after changes to the items lists"&gt;&lt;figcaption&gt;&#10;&#9;&#9;&#9;&lt;p&gt;Before and after changes to the items lists&lt;/p&gt;&#10;&#9;&#9;&lt;/figcaption&gt;&#10;&lt;/figure&gt;</description></item><item><title>Transparent Live Tile For Windows Phone 8.1</title><link>/en/blog/2014.04.16-transparent-live-tile-for-windows-phone-8-1/</link><pubDate>Wed, 16 Apr 2014 00:00:00 +0000</pubDate><guid>/en/blog/2014.04.16-transparent-live-tile-for-windows-phone-8-1/</guid><description/></item><item><title>Make an Awesome Video for Your App</title><link>/en/blog/2013.06.07-make-an-awesome-video-for-your-app/</link><pubDate>Fri, 07 Jun 2013 00:00:00 +0000</pubDate><guid>/en/blog/2013.06.07-make-an-awesome-video-for-your-app/</guid><description>&lt;p&gt;Nokia has gone to great lengths to make it easy for developers to create promotional materials for their Windows Phone apps. This quick video shows you how to do it.&lt;/p&gt;&#10;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/caCZ1w9ZUak?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;h2 id="steps-to-make-your-own"&gt;Steps to make your own&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Got to the &lt;a href="http://developer.nokia.com/resources/promoting-your-app/index.jsp" target="_blank" rel="noopener"&gt;Marketing Toolkit main page&lt;/a&gt;&#10; (you&amp;rsquo;ll need to be signed in)&lt;/li&gt;&#10;&lt;li&gt;Select the checkbox under &amp;ldquo;Promotional Video&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;Paste in the Store URL to your app&lt;/li&gt;&#10;&lt;li&gt;Select the platform of your choice (I chose Lumia 920)&lt;/li&gt;&#10;&lt;li&gt;Select a language&lt;/li&gt;&#10;&lt;li&gt;Click &amp;ldquo;Continue&amp;rdquo;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;On the next page:&lt;/p&gt;</description></item></channel></rss>