<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Chris Riesgo]]></title><description><![CDATA[Rambles about technology and process]]></description><link>https://chrisriesgo.com/</link><image><url>https://chrisriesgo.com/favicon.png</url><title>Chris Riesgo</title><link>https://chrisriesgo.com/</link></image><generator>Ghost 2.22</generator><lastBuildDate>Tue, 14 Apr 2026 06:49:13 GMT</lastBuildDate><atom:link href="https://chrisriesgo.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[How Mobile Apps Led Me to Microcontrollers]]></title><description><![CDATA[I've wanted to tinker with Raspberry Pi and Arduino, but never knew where to start or how to apply the skills I have. The answer was right in front of me!]]></description><link>https://chrisriesgo.com/mcc17/</link><guid isPermaLink="false">5ce14da49cdd2a0def0c2b3b</guid><category><![CDATA[arduino]]></category><category><![CDATA[mobile]]></category><dc:creator><![CDATA[Chris Riesgo]]></dc:creator><pubDate>Thu, 01 Jun 2017 18:24:30 GMT</pubDate><media:content url="https://chrisriesgo.com/content/images/2019/05/IMG_20170513_150705_2048.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><img src="https://chrisriesgo.com/content/images/2019/05/IMG_20170513_150705_2048.png" alt="How Mobile Apps Led Me to Microcontrollers"><p>I am fortunate to both attend and speak at <a href="https://www.musiccitycode.com/">Music City Code</a> this week.</p>
<p>I spoke Friday June 2nd on how my journey becoming a Xamarin mobile developer got me excited about microcontrollers.</p>
<p>The slides are available here.</p>
<div style="left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.1987%;"><iframe src="//speakerdeck.com/player/2f71512129ae4e788451d18b650ac3a0" style="border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;" allowfullscreen scrolling="no" allow="autoplay; encrypted-media"></iframe></div>
<p>All Xamarin code samples <a href="https://github.com/chrisriesgo/ConferenceBadge">are available on GitHub</a>. The arduino code samples are available from <a href="https://www.adafruit.com">Adafruit.com</a>.</p>
<h2 id="otherresources">Other Resources</h2>
<h4 id="xamarin">Xamarin</h4>
<ul>
<li><a href="https://www.xamarin.com">Xamarin</a></li>
<li><a href="https://github.com/xamarin/mini-hacks/tree/master/azure-iot-smart-coffee">Xamarin IoT Mini Hack</a></li>
</ul>
<h4 id="adafruit">Adafruit</h4>
<ul>
<li><a href="https://www.adafruit.com">Adafruit</a></li>
<li><a href="https://io.adafruit.com">Adafruit IO</a></li>
</ul>
<h4 id="arduino">Arduino</h4>
<ul>
<li><a href="https://arduino.cc">Arduino</a></li>
</ul>
<h4 id="microsoftazureiot">Microsoft Azure IoT</h4>
<ul>
<li><a href="https://channel9.msdn.com/Events/Build/2017">Build 2017</a></li>
</ul>
<h4 id="localmeetups">Local Meetups</h4>
<ul>
<li><a href="https://www.meetup.com/NashvilleMobileDotNet/">Nashville Mobile .NET Developers</a></li>
<li><a href="https://www.meetup.com/NashMicro/">NashMicro</a></li>
</ul>
<!--kg-card-end: markdown--><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Redth's Addins 1.0.6 Update]]></title><description><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><p>I'm a big fan of the Redth's Addins extension for Xamarin Studio and Visual Studio. Specifically, I love the <strong>Obliterate</strong> menu option it adds to the IDE context menu. Creator, Jonathan Dick, makes some cool stuff. <a href="https://github.com/Redth">Check out his GitHub</a> sometime.</p>
<p>However, the Obliterate command has had a bug in</p>]]></description><link>https://chrisriesgo.com/redths-addins-1-0-6-update/</link><guid isPermaLink="false">5ce14da49cdd2a0def0c2b3a</guid><category><![CDATA[xamarin]]></category><category><![CDATA[visual-studio]]></category><dc:creator><![CDATA[Chris Riesgo]]></dc:creator><pubDate>Wed, 01 Mar 2017 13:38:21 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1554098415-788601c80aef?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><img src="https://images.unsplash.com/photo-1554098415-788601c80aef?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Redth's Addins 1.0.6 Update"><p>I'm a big fan of the Redth's Addins extension for Xamarin Studio and Visual Studio. Specifically, I love the <strong>Obliterate</strong> menu option it adds to the IDE context menu. Creator, Jonathan Dick, makes some cool stuff. <a href="https://github.com/Redth">Check out his GitHub</a> sometime.</p>
<p>However, the Obliterate command has had a bug in Visual Studio for Mac for a little while. Basically, you try to run the command and the IDE would hang or read &quot;Obliterating Output Paths&quot; forever.</p>
<p>If you already use his extension, you many have noticed that an update was available when you launched Visual Studio today.</p>
<p><img src="https://i.imgur.com/Ca3Zddg.png" alt="Redth's Addins 1.0.6 Update"></p>
<p>But after clicking <em>Restart and Install Update</em>, an error popped up.</p>
<p><img src="https://i.imgur.com/o42zkmB.png" alt="Redth's Addins 1.0.6 Update"></p>
<p>No worries!</p>
<p>Simply head over to the <em>Visual Studio</em> &gt; <em>Extensions</em> menu.</p>
<p><img src="https://i.imgur.com/4mn8bnG.png" alt="Redth's Addins 1.0.6 Update"></p>
<p>Find the <strong>Redth's Addins</strong> extension, and update it from here.</p>
<p><img src="https://i.imgur.com/23j4Pfk.png" alt="Redth's Addins 1.0.6 Update"></p>
<p>Everything should work fine. When you're done, <strong>Obliterate</strong> works like a champ again!</p>
<h4 id="contributions">Contributions</h4>
<p>Some of these screenshots are from my co-worker Ryan. Thanks for posting them.</p>
<!--kg-card-end: markdown--><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[SQLite-net Async Connections: Keep It Clean]]></title><description><![CDATA[If you use SQLite-net (sqlite-net-pcl) and have seen disk I/O or connection exceptions in your applications, you may be overlooking features of the library.]]></description><link>https://chrisriesgo.com/sqlite-net-async-connections-keep-it-clean/</link><guid isPermaLink="false">5ce14da49cdd2a0def0c2b37</guid><category><![CDATA[xamarin]]></category><category><![CDATA[sqlite-net]]></category><dc:creator><![CDATA[Chris Riesgo]]></dc:creator><pubDate>Sun, 22 Jan 2017 16:32:45 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1421992155319-745166412d25?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><img src="https://images.unsplash.com/photo-1421992155319-745166412d25?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ" alt="SQLite-net Async Connections: Keep It Clean"><p>If you use <a href="https://github.com/praeclarum/sqlite-net">SQLite-net</a> (aka <a href="https://www.nuget.org/packages/sqlite-net-pcl">sqlite-net-pcl on NuGet</a>) and have seen disk I/O or connection exceptions in your applications, you may be overlooking some features of the library or mixing concerns.</p>
<p>We were.</p>
<p>This is <strong>Part 1</strong> of a short series on SQLite-net Async connection gotchas that we have come across and are learning from.</p>
<ul>
<li><strong>Part 1 - Keep It Clean</strong></li>
<li>Part 2 - Mixing Connection Types</li>
</ul>
<h2 id="sqlitenetasync">SQLite-net Async</h2>
<p>We have mobile applications that use SQLite for data persistence, and we use SQLite-net as our <a href="https://en.wikipedia.org/wiki/Object-relational_mapping">ORM</a>. SQLite-net has a beautiful and simple API that supports synchronous and asynchronous data access. Because <a href="https://developer.xamarin.com/guides/cross-platform/advanced/async_support_overview/"><strong>async / await</strong></a> makes writing responsive applications so much easier, we use <em>async</em> anywhere we can --- including  our data access code.</p>
<h2 id="creatingasyncconnections">Creating Async Connections</h2>
<p>When using <code>SQLiteAsyncConnection</code>, if you don't already have a connection, when you request one, SQLite-net opens a new connection to the requested path, then adds that open connection to a connection pool that it manages.  That open connection has a handle to the specific file on disk.</p>
<p>This snippet shows how to request a connection:</p>
<pre><code class="language-csharp">var conn = new SQLiteAsyncConnection(&quot;file1.db&quot;);
await conn.CreateTableAsync&lt;AppData&gt;();
</code></pre>
<p>This code works whether the file exists or not, and whether a previous connection has been requested or not. Just ask and SQLite-net hands a connection back --- either an existing connection from the pool or after opening a new one.</p>
<h2 id="whatyoumightnotrealize">What You Might Not Realize</h2>
<p>The <code>SQLiteAsyncConnection</code> API makes grabbing a connection simple. It just works.</p>
<p>However, if you delete, move, or similarly alter your database file at a FileSystem level after a connection has been established, the open connection's handle to the file on disk can be broken. The connection stays alive in the connection pool, but any attempt to use that connection might produce an error.</p>
<p><strong>Common Errors</strong></p>
<ul>
<li><code>SQLiteException: IOError</code></li>
<li><code>SQLiteException: ReadOnly</code></li>
<li><code>disk I/O error</code></li>
</ul>
<h2 id="keepitclean">Keep It Clean</h2>
<p>To guard against these kinds of errors, SQLite-net provides an escape hatch.</p>
<p>If you need to alter your database files or clean up open connections, simply call the static <code>SQLite.SQLiteAsyncConnection.ResetPool();</code>. This will <code>Dispose</code> all of the connections sitting in the pool. The next time your app requests a connection, a new one will be created like nothing ever happened.</p>
<h2 id="acknowledgements">Acknowledgements</h2>
<p>I want to thank my entire team for their accommodation and help in making these discoveries. I especially want to thank Ryan, Moose, and Macie.</p>
<p>Hopefully our learnings help someone else.</p>
<!--kg-card-end: markdown--><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Xamarin Test Recorder for iPhone]]></title><description><![CDATA[Create and replay automated UI Tests by recording your interactions with your application running on an iPhone using Xamarin Test Recorder for Mac.]]></description><link>https://chrisriesgo.com/xamarin-test-recorder-for-iphone-on-macos/</link><guid isPermaLink="false">5ce14da49cdd2a0def0c2b35</guid><category><![CDATA[ios]]></category><category><![CDATA[xamarin]]></category><category><![CDATA[iphone]]></category><category><![CDATA[xamarin-test-recorder]]></category><category><![CDATA[test-recorder]]></category><category><![CDATA[icystt]]></category><category><![CDATA[mobile-test-automation]]></category><category><![CDATA[test-automation]]></category><category><![CDATA[os-x]]></category><dc:creator><![CDATA[Chris Riesgo]]></dc:creator><pubDate>Sun, 30 Oct 2016 16:21:27 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1432888498266-38ffec3eaf0a?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><img src="https://images.unsplash.com/photo-1432888498266-38ffec3eaf0a?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Xamarin Test Recorder for iPhone"><p><a href="https://www.xamarin.com/test-cloud/recorder">Xamarin Test Recorder</a> is a really neat way to automate your mobile UI tests.</p>
<p>The tool lets you connect your mobile application to a device or simulator and record interactions with your app. The recorded interactions can then be fine-tuned and output as C# test cases. Those test cases can be saved for reuse in your own UI test automation projects or uploaded directly to <a href="https://www.xamarin.com/test-cloud">Xamarin Test Cloud</a>.</p>
<p>There are some general articles on recording tests using the test recorder, but I didn't see any with specific instructions for setting things up for iPhone on a mac. This is my attempt at closing that gap. Hope this helps you too!</p>
<h3 id="gettingstarted">Getting Started</h3>
<p><a href="https://developer.xamarin.com/guides/testcloud/testrecorder/">Here's</a> a basic getting started and requirements article from Xamarin.</p>
<blockquote>
<p><strong>Required:</strong> Pay close attention to the device provisioning instructions. In order to test your app on an iOS device, your app <strong>must</strong> have a development provisioning profile configured for the specific device in your <a href="https://developer.apple.com">Apple Developer portal</a>.</p>
</blockquote>
<p>For this post, I'm going to target a very specific version of the Xamarin Test Recorder. Because this tool is still in <strong>Preview</strong>, I want to make sure that I'm explicit.</p>
<h4 id="version">Version</h4>
<p>To download the test recorder, visit the <a href="https://developer.xamarin.com/guides/testcloud/testrecorder/">getting started link</a>, then click the <strong>Weekly Build</strong> link along the right side panel.</p>
<p><img src="http://i.imgur.com/X4dVMrQm.png" alt="Xamarin Test Recorder for iPhone"></p>
<p>After downloading the installer and installing the app, you may be prompted to download the latest <strong>Weekly Build</strong>.</p>
<blockquote>
<p><strong>Important Note</strong>: Continue only if you're being asked to install version <strong>0.13.0</strong> or greater. Device support for iPhone doesn't appear to exist in earlier builds.</p>
</blockquote>
<p>You can confirm the version you have installed by checking the <strong>About Test Recorder</strong> menu.</p>
<p><img src="http://i.imgur.com/v1nyAi6m.png" alt="Xamarin Test Recorder for iPhone"></p>
<p>This is the version I'm running for this post.</p>
<pre><code>Xamarin Test Recorder
Version 0.13.0 (1.0)
Xamarin
</code></pre>
<p>If your version doesn't match what I have, you can check for updates.</p>
<p><img src="http://i.imgur.com/wMrUI0vm.png" alt="Xamarin Test Recorder for iPhone"></p>
<p><img src="http://i.imgur.com/1deeyglm.png" alt="Xamarin Test Recorder for iPhone"></p>
<h4 id="preferences">Preferences</h4>
<p>There are some preferences that can be set.</p>
<p>Account: <em>Insert your <strong>Xamarin Test Cloud API Key</strong></em></p>
<p>General: <em>See image below</em><br>
<img src="http://i.imgur.com/tyBuHDwm.png" alt="Xamarin Test Recorder for iPhone"></p>
<p>Advanced: <strong>Android SDK</strong> and <strong>Mono</strong> Locations</p>
<h3 id="recordaniphonetest">Record an iPhone Test</h3>
<p>See the Xamarin developer documentation on <a href="https://developer.xamarin.com/guides/testcloud/testrecorder/#Recording_a_Test"><strong>Recording a Test</strong></a> for detailed steps with screenshots.</p>
<hr>
<h3 id="havingtrouble">Having Trouble?</h3>
<p>I'm going to embed a little <em>in case you see this too <strong>(ICYSTT)</strong></em> section to this post. I was plagued with problems when I tried to get started; almost to the point that I assumed there was a bug that I wouldn't be able to work around.</p>
<h5 id="steps">Steps</h5>
<ol>
<li>
<p>I chose my attached iPhone device</p>
</li>
<li>
<p>I selected my <strong>Debug|iPhone</strong> compiled <strong>.ipa</strong></p>
</li>
<li>
<p>Then, after a few seconds of the test recorder attempting to connect, I would see this popup error:</p>
<p><code>failed to install app /var/folders/7k/msfhh81j6hv3xdr09h1122hh004444/t/tmp574fcd7.tmp/payload/iostest.app: applicationname='/var/folders/7k/msfhh81j6hv3xdr09h1122hh0000gn/t/xdb/deviceagent.ios.dependencies/93c12f7393c12d1493c1d41793c14444/bin/iosdevicemanager', commandline='install -d 3d0e3d0e3d0e3d0e3d0e3d0e3d0e3d0e3d0e3d0e -a /var/folders/7k/msfhh81j6hv3xdr09h1122hh004444/t/tmp574fcd7.tmp/payload/iostest.app', currentdirectory='', native error= cannot find the specified file</code></p>
</li>
</ol>
<p><a href="https://forums.xamarin.com/discussion/79614/deviceagentexception-failed-to-launch-simulator-cannot-find-the-specified-file#latest">This forum post</a> helped me.</p>
<p>A colleague had a similar problem when attemping to run UITests against an iOS simulator. The &quot;fix&quot; mentioned in the forum helped her, and ended up helping me too. Basically, delete the <strong>{tempdir}/xdb/</strong> directory ( <code>/var/folders/7k/msfhh81j6hv3xdr09h1122hh0000gn/t/xdb/</code>) then try again.</p>
<p>Xamarin also has a link for some <a href="http://s3-us-west-2.amazonaws.com/xamarin-test-recorder/docs/known-issues/index.html">Known Issues</a>.</p>
<hr>
<p>Hope this helps you guys! Leave comments below. I'd like to hear about the things you're testing.</p>
<!--kg-card-end: markdown--><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Music City Code 2016: Native mobile apps beyond Hello World]]></title><description><![CDATA[You already know how to get started, but now you want to make the most of Xamarin app development. What is the best way to share code?]]></description><link>https://chrisriesgo.com/mcc2016/</link><guid isPermaLink="false">5ce14da49cdd2a0def0c2b34</guid><category><![CDATA[xamarin]]></category><dc:creator><![CDATA[Chris Riesgo]]></dc:creator><pubDate>Fri, 19 Aug 2016 18:16:00 GMT</pubDate><media:content url="https://chrisriesgo.com/content/images/2019/05/mcc16_image.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><img src="https://chrisriesgo.com/content/images/2019/05/mcc16_image.png" alt="Music City Code 2016: Native mobile apps beyond Hello World"><p>Thanks for showing interest in my topic at Music City Code 2016! Below are links for my talk.</p>
<h2 id="nativemobileappsbeyondhelloworld">Native mobile apps beyond Hello World</h2>
<p>Xamarin lets you build native Android, iOS, and Windows apps on a shared C# codebase. You already know how to get started, but now you want to make the most of Xamarin app development. What is the best way to share code? Can you access device-specific APIs from shared code? In this session, we'll dig deeper than &quot;Hello World&quot;. First, I'll discuss popular code sharing strategies. Then we'll write shared code that accesses device-specific APIs like Connectivity and Notifications. Come with your &quot;how do I Xamarin?&quot; questions, and we'll cover as many as we can.</p>
<h3 id="slidesandcode">Slides and Code</h3>
<ul>
<li><a href="https://speakerdeck.com/chrisriesgo/native-mobile-apps-beyond-hello-world">Slide deck</a></li>
<li><a href="https://github.com/chrisriesgo/mcc16">Code examples</a></li>
</ul>
<h3 id="resourcelinks">Resource Links</h3>
<ul>
<li>Components
<ul>
<li><a href="https://components.xamarin.com/">Xamarin Component Store</a></li>
</ul>
</li>
<li>Plugins
<ul>
<li><a href="https://github.com/jamesmontemagno/ConnectivityPlugin">Connectivity</a></li>
<li><a href="https://github.com/edsnider/Xamarin.Plugins">Local Notifications</a></li>
<li><a href="https://github.com/xamarin/XamarinComponents">More community plugins...</a></li>
</ul>
</li>
<li>NuGet
<ul>
<li><a href="https://www.nuget.org/packages?q=xamarin">Xamarin-related NuGet packages</a></li>
</ul>
</li>
<li>How To
<ul>
<li><a href="https://blog.xamarin.com/creating-reusable-plugins-for-xamarin-forms/">Creating Reusable Plugins for Xamarin</a></li>
</ul>
</li>
<li>Bait and Switch (Advanced PCL)
<ul>
<li><a href="http://log.paulbetts.org/the-bait-and-switch-pcl-trick/">The Bait and Switch PCL Trick</a> - Paul Betts</li>
<li><a href="https://blogs.msdn.microsoft.com/dsplaisted/2012/08/27/how-to-make-portable-class-libraries-work-for-you/">How to Make Portable Class Libraries Work for You</a> - Daniel Plaisted</li>
</ul>
</li>
</ul>
<!--kg-card-end: markdown--><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[ICYSTT: Command Line Tool Trouble after Xamarin Cycle 7 Upgrade]]></title><description><![CDATA[Some of the command line build scripts for a Xamarin.iOS project are failing. Specifically, the build steps around archiving the project. Here's the fix.]]></description><link>https://chrisriesgo.com/icystt-command-line-tool-trouble-after-xamarin-cycle-7/</link><guid isPermaLink="false">5ce14da49cdd2a0def0c2b31</guid><category><![CDATA[xamarin]]></category><dc:creator><![CDATA[Chris Riesgo]]></dc:creator><pubDate>Sat, 25 Jun 2016 15:37:34 GMT</pubDate><media:content url="https://chrisriesgo.com/content/images/2019/05/code-codes-coding-207580.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><img src="https://chrisriesgo.com/content/images/2019/05/code-codes-coding-207580.jpg" alt="ICYSTT: Command Line Tool Trouble after Xamarin Cycle 7 Upgrade"><p><strong>ICYSTT:</strong> In Case You See This Too</p>
<p>Humor me. I'm trying this acronym as a way of signaling the content of posts where I struggle through a problem and come out the other side with some findings.</p>
<p>Thanks to my teammate Ryan O. for piling onto this problem to help.</p>
<h2 id="theproblem">The Problem</h2>
<p>Recently, some of the command-line build scripts for an iOS project starting failing. Specifically, the build steps around <a href="https://developer.apple.com/library/ios/recipes/xcode_help-archives_organizer/articles/AboutArchivesOrganizer.html#//apple_ref/doc/uid/TP40010547-CH1">archiving</a> the project. Of course, the problem only showed up after updating some of the tools on the machine.</p>
<h3 id="hereswhatwasupdated">Here's what was updated:</h3>
<ul>
<li>OS X -&gt; 10.11 (El Capitan)</li>
<li>Xcode -&gt; 7.3.1</li>
<li>Xamarin Release Cycle 7
<ul>
<li>Xamarin Studio 6, etc.</li>
</ul>
</li>
</ul>
<p>In this particular build pipeline, <a href="http://fsharp.github.io/FAKE/">FAKE</a> is the build system of choice. The bundled <code>XamarinHelper</code> adds an easy <code>iOSArchive</code> task that generates a command something like this:</p>
<pre><code class="language-shell">mdtool -v archive &quot;-c:Release|iPhone&quot; -p:YourApp.iOS your_solution.sln
</code></pre>
<p>Ordinarily, this command builds the project, then generates an <code>.xcarchive</code>.</p>
<h3 id="enterproblem1">Enter problem #1:</h3>
<blockquote>
<p><code>mdtool archive</code> doesn't work</p>
</blockquote>
<p><em>Oh no! Is <code>mdtool</code> deprecated?</em></p>
<p>Well, not really <a href="https://twitter.com/mjhutchinson/status/577543766720032768">as Xamarin's Mikayla points out</a>. However, more and more we're being pointed toward <code>xbuild</code> or <code>msbuild</code> since <code>mdtool</code> is just an interface into those other systems.</p>
<p>So, while <code>mdtool</code> may not be officially deprecated, the <code>archive</code> command broke as of Xamarin Studio 6 <a href="https://forums.xamarin.com/discussion/68835/mdtool-archive-command-in-xamarin-studio-6">as commented on here</a> and <a href="https://forums.xamarin.com/discussion/42649/creating-archive-via-xbuild">hinted at over here</a>. Previously, the archive command would first build the iOS project, then archive. No longer the case as of this write-up. <em>Maybe Xamarin will patch things up in a future release?</em></p>
<h3 id="squirrelalert"><em>Squirrel Alert!</em></h3>
<p>Before I get to the fix, I want to warn you about a squirrel we chased. Once realizing that the <code>mdtool archive</code> command had changed -- and therefore the <code>FAKE</code> <code>iOSArchive</code> task -- we tried running the <code>FAKE</code> <code>iOSBuild</code> task immediately before the <code>iOSArchive</code> task to make sure a build happens.</p>
<p>The build happened and <em>an</em> archive was created, but the build still failed. There are additional steps in my build pipeline that export the archive as an .ipa. This one-two punch of <code>iOSBuild</code> and <code>iOSArchive</code> ultimately generated a bad archive. Turns out, if your achive is bad, you won't be able to export and may see errors such as:</p>
<pre><code>xcodebuild: WARNING: -exportArchive without -exportOptionsPlist is deprecated
...
** EXPORT FAILED **
</code></pre>
<p>We chased that squirrel before realizing that the generated archive was simply bad. <em>Although, duly noted, the export step needs to change.</em></p>
<blockquote>
<p>You can anecdotally recognize a <em>bad</em> archive by viewing the Xcode Archive Organizer, selecting an archive from the list, and  verifying that the Export, Validate, and Submit buttons are grayed out.</p>
</blockquote>
<h3 id="thefixforproblem1">The fix for problem #1:</h3>
<p><a href="https://forums.xamarin.com/discussion/42649/creating-archive-via-xbuild">This post</a> was the most helpful.</p>
<p>Down the page a bit, a Xamarin employee suggests using an <code>xbuild</code> command explicitly:</p>
<p><code>xbuild /p:Configuration=Release /p:Platform=iPhone /p:ArchiveOnBuild=true /t:&quot;Build&quot; MyProject.csproj</code></p>
<p>He goes on to explain how the <code>ArchiveOnBuild</code> property works. Not entirely familiar with <code>xbuild</code>, I whittled the suggestion down to a simpler:</p>
<p><code>xbuild /p:Configuration=Release /p:ArchiveOnBuild=true /t:&quot;Build&quot; MyProject.csproj</code></p>
<p>The <code>Platform</code> property wasn't described, so because I didn't want to include something I wasn't sure of, I removed that bit.</p>
<h3 id="enterproblem2">Enter problem #2:</h3>
<blockquote>
<p>The project builds, but no archive is generated</p>
</blockquote>
<p>Well, running that command certainly built the app, but no <code>.xcarchive</code> was generated, and my app didn't show up in the Xcode Archive Organizer.</p>
<h3 id="thefixforproblem2">The fix for problem #2:</h3>
<p>You guessed it -- <code>Platform</code> was necessary. Putting that property back fixed the script:</p>
<p><code>xbuild /p:Configuration=Release /p:Platform=iPhone /p:ArchiveOnBuild=true /t:&quot;Build&quot; MyProject.csproj</code></p>
<blockquote>
<p>The <code>Platform</code> property is the platform target (e.g.- iPhone, iPhoneSimulator, x86, etc.)</p>
</blockquote>
<p>Executing this command built the project, and generated an archive, but the archive wasn't listed under my <em>iOS Apps</em> in Xcode Archive Organizer.</p>
<h3 id="enterproblem3">Enter problem #3:</h3>
<blockquote>
<p>Archive shows up in Xcode Archive Organizer under <em>Other Items</em> instead of under <em>iOS Apps</em>.</p>
</blockquote>
<p>If you read the entire post from the problem #1 fix, you already know what's going on. If you jump down to <a href="https://forums.xamarin.com/discussion/comment/158147/#Comment_158147">this comment</a> you'll see that the <code>CFBundleVersion</code> must be present and populated in the archive's <code>Info.plist</code>.</p>
<h3 id="thefixforproblem3">The fix for problem #3:</h3>
<p>This isn't necessarily a big problem if your application's <code>Info.plist</code> is correct. Your app will still export correctly and be able to be submitted to the App Store. However, <a href="https://forums.xamarin.com/discussion/comment/205503/#Comment_205503">this comment</a> provides a suggestion that works perfectly.</p>
<p><code>/usr/libexec/PlistBuddy -c &quot;Add :ApplicationProperties:CFBundleVersion string &quot;your build number here&quot;&quot; path/to/archive.xcarchive/Info.plist</code></p>
<p>Adding that command to your build pipeline will ensure that the archive files correctly under the <em>iOS Apps</em> section of the Xcode Archive Organizer.</p>
<hr>
<p>That's it! Build scripts work again. The community did a great job helping with the various fixes, but I wanted to compile everything into a single how-to. Maybe it will save someone else some time.</p>
<p>I'd love your feedback. Let me know if this helped you or if you ran into different kinds of problems.</p>
<!--kg-card-end: markdown--><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Android AltBeacon Library: Version 2.7]]></title><description><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><p>It's overdue, but I just published version 2.7 of the <a href="https://github.com/chrisriesgo/Android-AltBeacon-Library">Android AltBeacon Library</a>.</p>
<p>You can find it on:</p>
<ul>
<li><a href="https://github.com/chrisriesgo/Android-AltBeacon-Library">GitHub</a></li>
<li><a href="https://www.nuget.org/packages/AndroidAltBeaconLibrary/">NuGet</a></li>
<li><a href="http://components.xamarin.com/view/android-altbeacon-library">Xamarin Component Store</a> <em>(update coming soon)</em></li>
</ul>
<h2 id="whatsnew">What's new</h2>
<p>There have been several major version <a href="https://github.com/AltBeacon/android-beacon-library/releases">releases</a> from AltBeacon since the Xamarin library has been updated, so here's a quick rundown</p>]]></description><link>https://chrisriesgo.com/android-altbeacon-library-version-2-7/</link><guid isPermaLink="false">5ce14da49cdd2a0def0c2b30</guid><category><![CDATA[xamarin]]></category><dc:creator><![CDATA[Chris Riesgo]]></dc:creator><pubDate>Sun, 29 Nov 2015 21:52:12 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1471014706828-7f1b12e6d88b?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><img src="https://images.unsplash.com/photo-1471014706828-7f1b12e6d88b?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Android AltBeacon Library: Version 2.7"><p>It's overdue, but I just published version 2.7 of the <a href="https://github.com/chrisriesgo/Android-AltBeacon-Library">Android AltBeacon Library</a>.</p>
<p>You can find it on:</p>
<ul>
<li><a href="https://github.com/chrisriesgo/Android-AltBeacon-Library">GitHub</a></li>
<li><a href="https://www.nuget.org/packages/AndroidAltBeaconLibrary/">NuGet</a></li>
<li><a href="http://components.xamarin.com/view/android-altbeacon-library">Xamarin Component Store</a> <em>(update coming soon)</em></li>
</ul>
<h2 id="whatsnew">What's new</h2>
<p>There have been several major version <a href="https://github.com/AltBeacon/android-beacon-library/releases">releases</a> from AltBeacon since the Xamarin library has been updated, so here's a quick rundown of new shiny bits you can expect to find:</p>
<p>Features changes:</p>
<ul>
<li>Optionally allow tracking multiple beacons with the same identifiers, distinguishing with the mac address.</li>
<li>Support for Gatt-based beacons and interleaved frames</li>
<li>Filter out invalid RSSI values of 127 for distance calculations</li>
<li>Identifier class now supports conversion to/from the UUID class.</li>
<li>Optionally allow using an ArmaRssiFilter for faster distance calculation convergence.</li>
<li>Support detection of Eddystone-UID, Eddystone-TLM and Eddystone-URL</li>
<li>Support transmission of Eddystone-UID and other GATT-based formats</li>
<li>Add more options for parsing identifiers of specific lengths</li>
<li>When scanning in Background on Android 5+, do a full scan without filters during the main scan period (default for 10 seconds once every 5 minutes) in case scan filters are unavailable</li>
<li>Common open-source BeaconParser layouts are defined as constants on BeaconParser</li>
<li>Bluetooth address is now a field on Region, offering the option of monitoring and ranging for all beacon transmissions from a known device's MAC Address</li>
<li>Target SDK bumped to 23 for Android 6.0</li>
<li>Adds hardware accelerated detection of Eddystone frames in the background on Android 5+</li>
<li>Provides ability to forward BLE scan callbacks for non-beacon advertisements</li>
</ul>
<p>Bug Fixes:</p>
<ul>
<li>Workaround for 500 alarm limit on Samsung devices.</li>
<li>Fix NPE in scanning for beacons on Lollipop in the emulator</li>
<li>Restart scanning after app is killed due to memory pressure</li>
<li>Protect against crashes when falling behind on scans</li>
<li>Protect against null pointer exceptions in race conditions</li>
<li>Protect against crash when stopping advertising with bluetooth turned off</li>
<li>Stop BLE scanning after stopping ranging of the last region</li>
<li>Fix for NPE on Galaxy Note 4</li>
<li>Keep from getting stuck in background mode after stopping and restarting service</li>
<li>Protect against Null Pointer Exceptions when dynamically adding and removing monitored/ranged regions</li>
<li>Protect against an underlying Android BLE bug that sometimes causes Null Pointer Exceptions when starting stopping scanning.</li>
<li>Ignore corrupted beacon BLE packets instead of throwing an exception about them</li>
<li>Use a private ThreadPoolExecutor for beacon scanning to avoid thread starving apps using AsyncTask</li>
<li>Allow missing data fields, setting data values to zero if data fields missing in packet</li>
<li>If a custom AltBeacon parser is supplied, don't crash with NPE if it is not found</li>
<li>Android 5.x devices could not detect AltBeacons on with unusual manufacturer codes in versions 2.3 and 2.3.1 due to Android 5.x BLE scan filters being inadvertently enabled in the foreground.</li>
<li>Improve handling of PDUs with unexpected lengths.</li>
<li>Add ability to optionally shorteten Beacon identifiers if their max length can be longer than the PDU.</li>
<li>Fix improper termination of URLs on URI Beacons causing an extra byte to show up on the end.</li>
<li>Identifer.parse(&quot;0&quot;) is now handled properly. A bug in the previous release did not handle it properly leading to ranging/monitoring failures on regions with such an identifier.</li>
<li>Switch BeaconParsers list to be a CopyOnWriteArrayList to avoid UnsupportedOperationException changing list after starting scanning.</li>
<li>Fix crash when region has more identifiers than beacon</li>
<li>Fix bugs with compressing Eddystone-URL to bytes and back</li>
<li>Allow Regions to match beacons with fewer identifiers if the extra region identifiers are null. This allows matching Eddystone-UID and Eddystone-URL beacon with the default Region with three null identifiers. This started failing in version 2.6.</li>
<li>Declare the ACCESS_COARSE_LOCATION permission in the manifest since it is required for Android 6.0. This is helpful to keep beacon detection working on Android 6.0 for apps that don't explicitly declare this in their own manifest.</li>
<li>Fix rescheduling of alarms in the distant future so they don't inadvertently go off right away</li>
</ul>
<h3 id="ifyounoticeanissue">If you notice an issue...</h3>
<p>Please help the community by logging any issues you find.</p>
<ol>
<li>make sure that the issue hasn't already been logged against the <a href="https://github.com/AltBeacon/android-beacon-library/issues">original library</a></li>
<li>if the original library works correctly, log an issue against the <a href="https://github.com/chrisriesgo/Android-AltBeacon-Library/issues">Xamarin binding</a></li>
</ol>
<p>Can't wait to hear about the cool apps you build!</p>
<!--kg-card-end: markdown--><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Xamarin.Forms Carousel View Recipe]]></title><description><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><p>I often see people on the Xamarin.Forms forums asking for a carousel-style control. We have the CarouselPage built in, but you can't resize the viewport or easily indicate which page you are viewing. <em>I believe the official documentation even mentions that this control is mainly intended for Windows Mobile.</em></p>]]></description><link>https://chrisriesgo.com/xamarin-forms-carousel-view-recipe/</link><guid isPermaLink="false">5ce14da49cdd2a0def0c2b2c</guid><category><![CDATA[controls]]></category><category><![CDATA[xamarin]]></category><category><![CDATA[xamarin.forms]]></category><dc:creator><![CDATA[Chris Riesgo]]></dc:creator><pubDate>Sat, 20 Jun 2015 19:59:56 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1543069190-9d380c458bc2?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><img src="https://images.unsplash.com/photo-1543069190-9d380c458bc2?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Xamarin.Forms Carousel View Recipe"><p>I often see people on the Xamarin.Forms forums asking for a carousel-style control. We have the CarouselPage built in, but you can't resize the viewport or easily indicate which page you are viewing. <em>I believe the official documentation even mentions that this control is mainly intended for Windows Mobile.</em></p>
<p><strong>Thankfully, the power of Xamarin.Forms allows us to build our own.</strong></p>
<p>Thanks to my friends at <a href="https://github.com/FireflyLogic/couchbase-connect-14">Firefly Logic</a> and to <a href="https://github.com/xamarin/customersuccess/tree/master/samples/Xamarin.Forms/SliderView">Michael Watson</a> for inspiring techniques that helped me create this <a href="https://github.com/chrisriesgo/xamarin-forms-carouselview">custom control</a> recipe.</p>
<p>The control is similar in functionality to the Xamarin.Forms <code>CarouselPage</code> - except the &quot;pages&quot; can be any type of content.</p>
<p>I have examples that show the CarouselView used as:</p>
<ul>
<li>A full-page control with no page indicators (like <code>CarouselPage</code>)</li>
<li>A gallery-style control with <strong>dots</strong> as page indicators</li>
<li>A full-page control with <strong>tabs</strong> as page indicators</li>
</ul>
<div style="text-align:center"><img src="https://i.imgur.com/C5luUzt.gif" alt="Xamarin.Forms Carousel View Recipe" style="margin-bottom:1em;"></div>
<p>Let's take a look at the different components.</p>
<h3 id="control">Control</h3>
<p>Probably the most important piece is the custom Xamarin.Forms control. There's a lot to look at, but I'll try to talk about the important bits.</p>
<script src="https://gist.github.com/chrisriesgo/a00df4b0f5573f0d2b39.js"></script>
<p>The control itself inherits from <code>ScrollView</code>. We set the orientation to <code>Horizontal</code> and set the <code>Content</code> to a horizontal <code>StackLayout</code>. This should immediately tell you that the content will display horizontally allowing you to scroll to the parts not on screen.</p>
<p>We manage &quot;pages&quot; of data by creating a bindable IList property as our ItemsSource. Anytime we update the ItemsSource, we add our page items as children of the <code>StackLayout</code>.</p>
<script src="https://gist.github.com/chrisriesgo/163bf2ec6fa6956784c6.js"></script>
<p>We're close!</p>
<p>We should be able to load pages of data and scroll through the pages. What's lacking is that <strong>snap into place</strong> that we expect when swiping through pages of content. For that, we'll add a Renderer for each of our platforms.</p>
<h3 id="rendererssnapintoplace">Renderers: Snap Into Place</h3>
<p>Our Xamarin.Forms control derives from the ScrollView which means that the native views at work are the <code>Android.Widget.HorizontalScrollView</code> and <code>UIKit.UIScrollView</code>. Each of these controls provide native methods for programatically scrolling to a given position.</p>
<p>The secret sauce in having our custom control pages <strong>snap into place</strong> is by doing a little math, then telling our native ScrollView controls to scroll to a position based on that math.</p>
<p>There are some other things at work, but I'll skip to the interesting parts:</p>
<p><strong>Android</strong></p>
<script src="https://gist.github.com/chrisriesgo/dd57ebfcd0d3218837b3.js"></script>
<p><strong>iOS</strong></p>
<script src="https://gist.github.com/chrisriesgo/5cd9db5301916a62cea7.js"></script>
<p>Pretty neat, right? We'll finish by pulling this together with page indicators.</p>
<h3 id="pageindicators">Page Indicators</h3>
<p>This is the interesting part, and the part missing from some other controls. The page indicators are just a horizontal <code>StackLayout</code> grouping of child elements -- one child element per page. My example shows a few different options:</p>
<script src="https://gist.github.com/chrisriesgo/553f69844757b2951de3.js"></script>
<ul>
<li><strong>None</strong>: No page indicators. This behaves like the <code>CarouselPage</code> control.</li>
<li><strong>Dots</strong>: The page indicators appear as tiny dots. It is common to see this style of page indicators on gallery-style carousel layouts.</li>
<li><strong>Tabs</strong>: The page indicators appear as a tab bar with icons (and for iOS, text).</li>
</ul>
<p>The dots are simply Buttons. As the ItemsSource changes, so does the number of dots.</p>
<script src="https://gist.github.com/chrisriesgo/2ba8873db358131d0b8d.js"></script>
<p>The tabs are a bit more involved. As the ItemsSource changes, we clear all of the existing tabs, and make sure to draw new ones. Each tab is itself a <code>StackLayout</code>. If on iOS, you will get the icon and tab text. If on Android, you will only see the icon. These are typical patterns, but the code is customizable and can be configured in whichever way makes most sense for your application. Also, my example has hardcoded icon and text values, but these are easily configurable.</p>
<script src="https://gist.github.com/chrisriesgo/6a5bc0f838c366cb3815.js"></script>
<h3 id="puttingittogetheronscreen">Putting It Together On Screen</h3>
<p>This example has some conditional logic to handle the different page indicator styles, but generally I'm laying out the screen using a <code>RelativeLayout</code>.</p>
<script src="https://gist.github.com/chrisriesgo/c7b3520387c528c0b95b.js"></script>
<p>You can make this as simple or complex as you need. If you look at the layout for Dots, I overlay the dots page indicator onto the carousel view content. This is a common pattern with gallery-style carousels.</p>
<p>This post is already <em>TL;DR</em>, and a lot of the details were left out. Hopefully, if nothing else, this recipe introduced some new and interesting ways to approach laying out your content.</p>
<p>To see the entire project with multiple examples, visit the <a href="https://github.com/chrisriesgo/xamarin-forms-carouselview">GitHub</a> repo.</p>
<!--kg-card-end: markdown--><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Material Design FAB in Xamarin.Forms]]></title><description><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><p>James Montemagno recently blogged about <a href="http://blog.xamarin.com/more-material-design-for-your-android-apps/">More Material Design for Your Android Apps</a>. In the post, James discussed two controls that he has built around Material Design components. One of the components is the <a href="http://www.google.com/design/spec/components/buttons-floating-action-button.html#">Floating Action Button (FAB)</a>.</p>
<p><img src="https://chrisriesgo.com/content/images/2015/04/fab.png" alt=""></p>
<p>Let's see how we can pull this control into use with Xamarin.Forms.</p>]]></description><link>https://chrisriesgo.com/material-design-fab-in-xamarin-forms/</link><guid isPermaLink="false">5ce14da49cdd2a0def0c2b2b</guid><category><![CDATA[controls]]></category><category><![CDATA[android]]></category><category><![CDATA[xamarin]]></category><dc:creator><![CDATA[Chris Riesgo]]></dc:creator><pubDate>Tue, 21 Apr 2015 19:17:06 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1545055699-fc0fe02313c5?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><img src="https://images.unsplash.com/photo-1545055699-fc0fe02313c5?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Material Design FAB in Xamarin.Forms"><p>James Montemagno recently blogged about <a href="http://blog.xamarin.com/more-material-design-for-your-android-apps/">More Material Design for Your Android Apps</a>. In the post, James discussed two controls that he has built around Material Design components. One of the components is the <a href="http://www.google.com/design/spec/components/buttons-floating-action-button.html#">Floating Action Button (FAB)</a>.</p>
<p><img src="https://chrisriesgo.com/content/images/2015/04/fab.png" alt="Material Design FAB in Xamarin.Forms"></p>
<p>Let's see how we can pull this control into use with Xamarin.Forms.</p>
<h3 id="pullinthecomponent">Pull in the Component</h3>
<p>Start with a new Xamarin.Forms application. In your <code>Droid</code> project, pull in the Floating Action Button control. You can use the <a href="http://components.xamarin.com/view/fab">Xamarin Component Store</a> or <a href="https://www.nuget.org/packages/Refractored.FloatingActionButton/">Nuget Package Manager</a>.</p>
<p><img src="https://chrisriesgo.com/content/images/2015/04/FAB-project-reference.png" alt="Material Design FAB in Xamarin.Forms"></p>
<h3 id="buildacustomcontrol">Build a Custom Control</h3>
<p>For the FAB's properties to be bindable in Xamarin.Forms, we need a custom control with bindable properties.</p>
<script src="https://gist.github.com/chrisriesgo/f1b415a2586fad545393.js"></script>
<p>We will then map each property to a corresponding property on the native FAB control.</p>
<h3 id="attacharenderer">Attach a Renderer</h3>
<p>If we want to use a native control in Xamarin.Forms, we need a renderer. For simplicity, lets use a <code>ViewRenderer</code>. This renderer will map our custom <code>FloatingActionButtonView</code> to an <code>Android.Widget.FrameLayout</code>.</p>
<script src="https://gist.github.com/chrisriesgo/5d5c1115a8a30694b938.js"></script>
<h3 id="pullitalltogether">Pull it all Together</h3>
<p>OK! We've built the custom control, and mapped it to a renderer. The last step is laying out the control in our view.</p>
<script src="https://gist.github.com/chrisriesgo/b0366a7d90b3d74cacf4.js"></script>
<p>You can pull the <a href="https://github.com/chrisriesgo/FloatingActionButton-for-Xamarin.Android/tree/master/xamarin.forms/FabSampleForms">completed sample application</a> from GitHub.</p>
<p><img src="https://i.imgur.com/B59hrJ8.gif" alt="Material Design FAB in Xamarin.Forms"></p>
<!--kg-card-end: markdown--><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Cast Exception When Upgrading to Xamarin.iOS 8.6]]></title><description><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><p>Recently, Xamarin released major updates to its <a href="http://developer.xamarin.com/releases/ios/xamarin.ios_8/xamarin.ios_8.6/">iOS</a> and <a href="http://developer.xamarin.com/guides/cross-platform/macios/updating-xamarin-forms-apps/">Forms</a> platforms in order to support 32/64-bit architectures from a Unified API.</p>
<p>These updates came across as <a href="http://developer.xamarin.com/recipes/cross-platform/ide/change_updates_channel/">Stable Channel updates</a> in Xamarin Studio (or Visual Studio) which included version 8.6 of the Xamarin.iOS platform.</p>
<p>Suddenly, our existing <strong>Xamarin.</strong></p>]]></description><link>https://chrisriesgo.com/cast-exception-upgrading-to-xamarin-ios-8-6/</link><guid isPermaLink="false">5ce14da49cdd2a0def0c2b24</guid><category><![CDATA[ios]]></category><category><![CDATA[forms]]></category><category><![CDATA[xamarin]]></category><dc:creator><![CDATA[Chris Riesgo]]></dc:creator><pubDate>Sat, 24 Jan 2015 14:27:06 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1555617981-dac3880eac6e?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><img src="https://images.unsplash.com/photo-1555617981-dac3880eac6e?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Cast Exception When Upgrading to Xamarin.iOS 8.6"><p>Recently, Xamarin released major updates to its <a href="http://developer.xamarin.com/releases/ios/xamarin.ios_8/xamarin.ios_8.6/">iOS</a> and <a href="http://developer.xamarin.com/guides/cross-platform/macios/updating-xamarin-forms-apps/">Forms</a> platforms in order to support 32/64-bit architectures from a Unified API.</p>
<p>These updates came across as <a href="http://developer.xamarin.com/recipes/cross-platform/ide/change_updates_channel/">Stable Channel updates</a> in Xamarin Studio (or Visual Studio) which included version 8.6 of the Xamarin.iOS platform.</p>
<p>Suddenly, our existing <strong>Xamarin.Forms</strong> iOS app started crashing at runtime with an error similar to the one below:</p>
<pre><code class="language-C#">Unable to cast object of type 'Xamarin.Forms.Platform.iOS.ActivityIndicatorRenderer' (Objective-C type: 'Xamarin_Forms_Platform_iOS_ActivityIndicatorRenderer') to type 'Xamarin.Forms.Platform.iOS.ViewRenderer`2'.
Additional information:
Selector: layoutSubviews
Method: Xamarin.Forms.Platform.iOS.ViewRenderer`2:LayoutSubviews ()
</code></pre>
<h3 id="why">Why?</h3>
<p>Turns out, a configuration that we set months ago to remedy an issue with some 3rd party libraries was both no longer necessary and was causing a conflict with the new Xamarin.iOS release.</p>
<p><a href="http://developer.xamarin.com/guides/ios/advanced_topics/registrar/">Read more about Type Registrar on Xamarin.iOS</a></p>
<p>The important bit for us was to remove<br>
<code>&lt;MtouchExtraArgs&gt;--registrar:legacy&lt;/MtouchExtraArgs&gt;</code><br>
from the iOS project file. This can be done by manually editing the .csproj file or in the IDE by editing the<br>
<code>iOS Build Options &gt; Advanced &gt; Additional mtouch arguments</code>.</p>
<!--kg-card-end: markdown--><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Android Swipe ListView for Xamarin]]></title><description><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><p>Open up your favorite Android e-mail app. As you scroll through your messages, you instinctually start swiping them left and right. You're either archiving the message - because you might need that arduino newsletter later - or you're permanently deleting it.</p>
<p>You've just used a Swipe ListView. You make a</p>]]></description><link>https://chrisriesgo.com/android-swipe-listview-for-xamarin/</link><guid isPermaLink="false">5ce14da49cdd2a0def0c2b22</guid><category><![CDATA[xamarin]]></category><category><![CDATA[android]]></category><category><![CDATA[controls]]></category><category><![CDATA[swipelistview]]></category><dc:creator><![CDATA[Chris Riesgo]]></dc:creator><pubDate>Thu, 01 Jan 2015 17:16:23 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><p>Open up your favorite Android e-mail app. As you scroll through your messages, you instinctually start swiping them left and right. You're either archiving the message - because you might need that arduino newsletter later - or you're permanently deleting it.</p>
<p>You've just used a Swipe ListView. You make a left or right swipe gesture on a message, the message flies away, and other messages around it collapse back together. So easy. The user experience just makes sense!</p>
<p>Although a popular example of a Swipe ListView might be an e-mail app, the control is hardly limited to lists of e-mail messages. So, what if you want to add a Swipe ListView to your Xamarin Android app?</p>
<p>In September, I released the SwipeListView Xamarin Component - initially as a C# port of the 47 Degrees SwipeListView. I have since gone back to the drawing board and updated the component to be a Jar binding of the 47 Degrees control.</p>
<h2 id="wherecanigetit">Where Can I Get It?</h2>
<p><a href="http://components.xamarin.com/view/android-swipelistview">SwipeListView Xamarin Component</a> (v.2 Pending Approval)<br>
<a href="https://www.nuget.org/packages/FortySevenDeg.SwipeListView/">SwipeListView on Nuget</a></p>
<h2 id="whythechange">Why the Change?</h2>
<p>Well, I ported the 47 Degrees control initially so that I could add my own custom functionality. However, because I wanted the control to match what Java Android developers might have been used to with the control, I removed my custom code and left the port matching features 1:1.</p>
<p>That was great for the v.1 release of the component, but in order to keep up with new features and bug fixes in the original control, it just made sense to bind the Jar. This will make future updates much easier, and help keep the chances of my introducing a bug smaller.</p>
<!--kg-card-end: markdown--><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Solved: My HTTP(S) Intent Filter Doesn't Work]]></title><description><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><p>You've added an HTTP or HTTPS intent filter to your Android app with the hope of having your app launch when someone navigates to your defined Url. <a href="http://androidapi.xamarin.com/?link=T:Android.App.IntentFilterAttribute">Seemed easy enough</a>.</p>
<p>Code in place, you punch the Url into a browser address bar to test, but <em>nothing happens</em>.</p>
<hr>
<p>I recently tried</p>]]></description><link>https://chrisriesgo.com/solved-http-intent-filter-doesnt-work/</link><guid isPermaLink="false">5ce14da49cdd2a0def0c2b21</guid><category><![CDATA[xamarin]]></category><category><![CDATA[android]]></category><category><![CDATA[debug]]></category><dc:creator><![CDATA[Chris Riesgo]]></dc:creator><pubDate>Mon, 12 May 2014 21:29:54 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><p>You've added an HTTP or HTTPS intent filter to your Android app with the hope of having your app launch when someone navigates to your defined Url. <a href="http://androidapi.xamarin.com/?link=T:Android.App.IntentFilterAttribute">Seemed easy enough</a>.</p>
<p>Code in place, you punch the Url into a browser address bar to test, but <em>nothing happens</em>.</p>
<hr>
<p>I recently tried testing this, myself, and saw similar results. I saw posts like <a href="http://stackoverflow.com/questions/13289586/open-android-app-from-url-using-intent-filter-not-working">this</a> and <a href="http://stackoverflow.com/questions/17962589/android-intent-filter-data-is-not-working-correctly">that</a> trying to explain how to fix the problem, but nothing worked.</p>
<h4 id="theproblem">The Problem</h4>
<p>Punching the Url into a browser address bar won't necessarily launch your app. I've seen it work, but not consistently.</p>
<h4 id="codesnippet">Code Snippet</h4>
<p>Your Activity class should have a similar <code>IntentFilter</code> attribute:</p>
<pre><code>[IntentFilter(new[]{Intent.ActionView},
		Categories=new[]{Intent.CategoryDefault,
        Intent.CategoryBrowsable},
		DataScheme=&quot;https&quot;, 
		DataHost=&quot;*.example.com&quot;,
		DataPathPrefix=&quot;/mobile/home&quot;)]
</code></pre>
<h4 id="bettertesting">Better Testing</h4>
<p>Create a file on your testing device called <code>test.html</code> with the following contents:</p>
<pre><code>&lt;html&gt;
	&lt;body&gt;
    	&lt;a href=&quot;https://test.example.com/mobile/home&quot;&gt;Tap&lt;/a&gt;
    &lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>Once created and saved, tap the file and open in a browser or HTML viewer. Tap the hyperlink.</p>
<p>If you've done everything else right, you should now see the intent chooser dialog appear with your app listed.</p>
<p><strong>Success!</strong></p>
<!--kg-card-end: markdown--><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Xamarin | Exception when posting HttpClient MultipartFormDataContent]]></title><description><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><p>Consider the following code example:</p>
<pre><code>var fileName = &quot;~stacktrace &amp; stuff.txt&quot;;
var content = new MultipartFormDataContent();

var fileStream = new FileStream(String.Format(@&quot;/mnt/sdcard/Download/{0}&quot;,
fileName), FileMode.Open, FileAccess.Read);

content.Add(new StreamContent(fileStream), &quot;contentFile&quot;, fileName);
</code></pre>
<p>Notice the fileName: <code>&quot;~stacktrace &amp; stuff.</code></p>]]></description><link>https://chrisriesgo.com/xamarin-exception-when-posting-httpclient-multipartformdatacontent/</link><guid isPermaLink="false">5ce14da49cdd2a0def0c2b20</guid><category><![CDATA[httpclient]]></category><category><![CDATA[xamarin]]></category><dc:creator><![CDATA[Chris Riesgo]]></dc:creator><pubDate>Fri, 04 Apr 2014 13:58:25 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><p>Consider the following code example:</p>
<pre><code>var fileName = &quot;~stacktrace &amp; stuff.txt&quot;;
var content = new MultipartFormDataContent();

var fileStream = new FileStream(String.Format(@&quot;/mnt/sdcard/Download/{0}&quot;,
fileName), FileMode.Open, FileAccess.Read);

content.Add(new StreamContent(fileStream), &quot;contentFile&quot;, fileName);
</code></pre>
<p>Notice the fileName: <code>&quot;~stacktrace &amp; stuff.txt&quot;</code>.</p>
<p>When attempting to execute this code, you may receive an <code>IndexOutOfRangeException</code> or an <code>Invalid format</code> error. The problem appears to be that the platform-specific Mono implementation of HttpClient does not wrap the file name in quotation marks when posting the payload. Data (e.g. - file name) with spaces and special characters won't post.</p>
<h2 id="itsabug">It's a bug</h2>
<p>The problem has been <a href="https://bugzilla.xamarin.com/show_bug.cgi?id=18800">filed on Bugzilla</a>, and appears to be a bug in the platform-specific implementations of Mono HttpClient.</p>
<h2 id="theworkaround">The Workaround</h2>
<p>Now, try this:</p>
<pre><code>var fileName = &quot;~stacktrace &amp; stuff.txt&quot;;
var content = new MultipartFormDataContent();

var fileStream = new FileStream(String.Format(@&quot;/mnt/sdcard/Download/{0}&quot;, fileName), FileMode.Open, FileAccess.Read);

var streamContent = new StreamContent(fileStream);

streamContent.Headers.ContentDisposition = ContentDispositionHeaderValue.Parse(&quot;form-data&quot;);

streamContent.Headers.ContentDisposition.Parameters.Add(new NameValueHeaderValue(&quot;name&quot;, &quot;contentFile&quot;));

streamContent.Headers.ContentDisposition.Parameters.Add(new NameValueHeaderValue(&quot;filename&quot;, &quot;\&quot;&quot; + fileName + &quot;\&quot;&quot;));

content.Add(streamContent);
</code></pre>
<p>The difference is that in this case we are setting the content headers directly rather than letting the inner-workings of HttpClient work them out. By doing so, we can ensure that the file name is wrapped in quotation marks -- allowing the values to post as expected.</p>
<p><em>Thanks to <a href="http://forums.xamarin.com/profile/21590/DerekBeattie.6675">Derek Beattie</a> for his notes on <a href="http://forums.xamarin.com/discussion/5675/potential-bug-in-ios-httpclient/p1">this</a> Xamarin forum post.</em></p>
<!--kg-card-end: markdown--><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Run an Android Emulator in OS X from Xamarin in Parallels]]></title><description><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><p>If you've been looking for a way to develop your Xamarin Android apps in a Parallels Desktop Windows VM, but run the app in an Android emulator on your Mac, this post is an attempt to distill the information from across multiple sites to get you started.</p>
<p>Many thanks to</p>]]></description><link>https://chrisriesgo.com/android-emulator-debugging-from-parallels-to-os-x/</link><guid isPermaLink="false">5ce14da49cdd2a0def0c2b1f</guid><category><![CDATA[emulators]]></category><category><![CDATA[android]]></category><category><![CDATA[xamarin]]></category><category><![CDATA[os-x]]></category><category><![CDATA[parallels-desktop]]></category><dc:creator><![CDATA[Chris Riesgo]]></dc:creator><pubDate>Sun, 12 Jan 2014 18:19:58 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1531376842337-a13868cbed5b?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><img src="https://images.unsplash.com/photo-1531376842337-a13868cbed5b?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Run an Android Emulator in OS X from Xamarin in Parallels"><p>If you've been looking for a way to develop your Xamarin Android apps in a Parallels Desktop Windows VM, but run the app in an Android emulator on your Mac, this post is an attempt to distill the information from across multiple sites to get you started.</p>
<p>Many thanks to <a href="https://twitter.com/JamesMontemagno">James Montemagno</a> for pointing me to Paul Batum's <a href="http://forums.xamarin.com/discussion/comment/37978">post</a> on the Xamarin forum.</p>
<p><strong>My Configuration</strong></p>
<ul>
<li>Intel MBP running OS X Mavericks</li>
<li>Parallels Desktop running a Windows 8 VM</li>
</ul>
<h2 id="setupyourmac">Set up your Mac</h2>
<p><strong>1. Download &amp; Install the Android SDK</strong></p>
<p>Nothing can get done until the Android SDK is installed, so let's start there.</p>
<p>Install the <a href="http://developer.android.com/sdk/index.html">Android SDK</a></p>
<p>You should end up with an SDK directory somewhere on your Mac with subdirectories like: <em>extras</em>, <em>platform tools</em>, <em>tools</em>, etc.</p>
<p>Yeah? -- Okay. Next.</p>
<p><strong>2. Install the Intel HAXM</strong></p>
<p>Intel HAXM - What?</p>
<p>Intel Hardware Accelerated Execution Manager. In short, it speeds up Android app emulation on Intel host machines. This step is necessary if you plan on creating custom AVDs that leverage the much faster Intel x86 images.</p>
<p>Install the <a href="http://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager/">Intel OS X HAXM Zip</a></p>
<p><strong><em>Do you use OS X Mavericks + Parallels Desktop 9 ?</em></strong></p>
<p>Install the <a href="http://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager/">OS X 10.9 HAXM Hotfix</a></p>
<p>If you don't do this, when you launch an Intel x86 emulator image, your entire computer will freeze up forcing you to perform a hard reboot. No one wants that.</p>
<p><strong>3. Configure your Mac for SSH sharing</strong></p>
<p>In OS X Go To:<br>
<strong>System Preferences</strong> &gt; <strong>Sharing</strong> &gt; Enable Remote Login</p>
<p>Leave the other options set to their defaults.</p>
<p><strong>4. Start the Android emulator</strong></p>
<p>Several AVDs came pre-configured when you installed the Android SDK. For the sake of this tutorial, we'll use one of those devices which use ARM images. To view the configured devices, start the AVD Manager:</p>
<ul>
<li>
<p>Open a command line</p>
</li>
<li>
<p>Navigate to the <em>tools</em> directory of your Android SDK: <em><strong>yourandroidsdkdirectory</strong>/tools</em></p>
</li>
<li>
<p>Enter the following command:</p>
<blockquote>
<p>./android avd</p>
</blockquote>
</li>
<li>
<p>The AVD Manager will open</p>
</li>
</ul>
<p>Start an Android device:</p>
<ul>
<li>select a device with a green check</li>
<li>press <strong>Start...</strong></li>
<li>the Launch Options dialog will appear. Press <strong>Launch</strong></li>
</ul>
<p>Earlier, we installed HAXM which allows the use of the Intel x86 images which run much faster than their ARM counterparts. If you'd like to try those out: open the SDK Manager, download the x86 images, then configure devices in the AVD Manager to use the x86 images instead of the ARM images.</p>
<ul>
<li>
<p>Open a command line</p>
</li>
<li>
<p>Navigate to the <em>tools</em> directory of your Android SDK: <em><strong>yourandroidsdkdirectory</strong>/tools</em></p>
</li>
<li>
<p>Enter the following command:</p>
<blockquote>
<p>./android</p>
</blockquote>
</li>
<li>
<p>download the x86 images</p>
</li>
<li>
<p>edit a device in the AVD Manager to use an x86 image instead of an ARM image</p>
</li>
</ul>
<p><strong>5. Kill the ADB Server</strong></p>
<ul>
<li>
<p>Open a command line</p>
</li>
<li>
<p>Navigate to the <em>platform-tools</em> directory of your Android SDK: <em><strong>yourandroidsdkdirectory</strong>/platform-tools</em></p>
</li>
<li>
<p>Enter the following command:</p>
<blockquote>
<p>./adb kill-server</p>
</blockquote>
</li>
</ul>
<p>Okay! -- Your Mac is ready.</p>
<h2 id="setupyouwindowsvm">Set up you Windows VM</h2>
<p><strong>1. Start your Windows VM in Parallels Desktop</strong></p>
<p><strong>2. Download and install PuTTY SSH Client</strong></p>
<p>Install the <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">PuTTY SSH Client</a></p>
<p><strong>3. Create a new connection to your Mac</strong></p>
<p>Let's connect to the Mac.</p>
<ul>
<li>Start PuTTY SSH Client</li>
<li>Select Session from the Category panel on the left</li>
<li>In the Host Name (or IP Address) field, enter the IP Address of you Mac (found at: <strong>System Preferences</strong> &gt; <strong>Sharing</strong>)</li>
<li>Leave the Port set to its default (should be 22)</li>
<li>Make sure SSH is selected under Protocol</li>
</ul>
<p><strong>4. Configure port forwarding</strong></p>
<p>Select <strong>Connection</strong> &gt; <strong>SSH</strong> &gt; <strong>Tunnels</strong> from the Category panel on the left side of the PuTTY SSH Client. From here add two forwarding configurations.</p>
<p>First</p>
<ul>
<li>Source Port: 5555</li>
<li>Destination: localhost:5555</li>
</ul>
<p>Second</p>
<ul>
<li>
<p>Source Port: 5554</p>
</li>
<li>
<p>Destination: localhost:5554</p>
</li>
<li>
<p>Click on <strong>Open</strong></p>
</li>
</ul>
<p>You will be presented with a command line console. When prompted, enter your Mac admin username and password to  open a connection from your Windows VM to OS X.</p>
<p><strong>5. Kill then Start the ADB Server</strong></p>
<ul>
<li>
<p>Open a command line</p>
</li>
<li>
<p>Navigate to the <em>platform-tools</em> directory of your Android SDK: <em><strong>yourandroidsdkdirectory</strong>/platform-tools</em></p>
</li>
<li>
<p>Enter the following command:</p>
<blockquote>
<p>adb.exe kill-server</p>
</blockquote>
</li>
<li>
<p>Then enter the following command:</p>
<blockquote>
<p>adb.exe start-server</p>
</blockquote>
</li>
<li>
<p>Confirm that your Mac emulator device has been picked up by entering the following command:</p>
<blockquote>
<p>adb.exe devices</p>
</blockquote>
</li>
<li>
<p>You should see a device listed something like: <strong>emulator-5554</strong></p>
</li>
</ul>
<p><strong>6. Open a Xamarin Android project</strong></p>
<p>Now for the big test!</p>
<p>Launch your Xamarin IDE of choice and open a Xamarin Android project. Once the project initializes, you should see your already running Mac emulator listed in the device dropdown.</p>
<p>And that's it! -- You can debug all day long from Parallels over to your Mac.</p>
<h2 id="thebonusroundgenymotionemulator">The Bonus Round - Genymotion Emulator</h2>
<p>The AVD emulator that comes with the Android SDK is fine, but it could be better. Enter Genymotion.</p>
<p>The Genymotion emulator is noticably faster, but it requires some baggage: VirtualBox - which doesn't play well with Parallels Desktop 9 out of the box.</p>
<p><strong>[Detailed tutorial coming soon]</strong></p>
<!--kg-card-end: markdown--><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[HAXM Failure after Windows 8 Update]]></title><description><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><p>As recommended by anyone that is doing Xamarin.Android development, I'm using Intel's Hardware Acceleration Manager (HAXM) to make my Android Emulators run faster (<a href="https://chrisriesgo.com/haxm-failure-after-windows8-update/">more here</a>).</p>
<p>After this week's Windows 8 security updates I noticed that HAXM no longer worked. When trying to reinstall HAXM I'd see</p>
<blockquote>
<p>The computer does</p></blockquote>]]></description><link>https://chrisriesgo.com/haxm-failure-after-windows8-update/</link><guid isPermaLink="false">5ce14da49cdd2a0def0c2b29</guid><category><![CDATA[haxm]]></category><category><![CDATA[android]]></category><dc:creator><![CDATA[Chris Riesgo]]></dc:creator><pubDate>Fri, 15 Nov 2013 15:22:26 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><!--kg-card-begin: markdown--><p>As recommended by anyone that is doing Xamarin.Android development, I'm using Intel's Hardware Acceleration Manager (HAXM) to make my Android Emulators run faster (<a href="https://chrisriesgo.com/haxm-failure-after-windows8-update/">more here</a>).</p>
<p>After this week's Windows 8 security updates I noticed that HAXM no longer worked. When trying to reinstall HAXM I'd see</p>
<blockquote>
<p>The computer does not support Intel Virtualization Technology (VT-x). HAXM cannot be installed</p>
</blockquote>
<p>It worked fine before - what gives?</p>
<p>The answer was simpler than I expected:</p>
<ol>
<li>Navigate to Control Panel &gt; Turn Windows Features on and off</li>
<li>Locate the Hyper-V checkbox</li>
<li>Uncheck the root Hyper-V checkbox</li>
<li>Click Ok</li>
</ol>
<p>Windows will restart, run updates, etc.</p>
<p>Reinstall HAXM and all will work as expected.</p>
<p><strong>Note</strong> - You'll read about needing to enable VT-x or Hardware Acceleration in your BIOS. Likely not the case.</p>
<p>I'm running Windows 8 in Bootcamp on an Intel MBP.</p>
<!--kg-card-end: markdown--><!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>