<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Jason Young</title>
    <link href="http://www.ytechie.com/feed/" rel="self"/>
    <link href="http://www.ytechie.com"/>
    <updated>2017-11-16T02:29:50.982Z</updated>
    <id>http://www.ytechie.com/</id>
    <author>
        <name>Jason Young</name>
        <email>jason@ytechie.com</email>
    </author>

    
    <entry>
        <title>Setting up PoE Cameras &amp; Blue Iris</title>
        <link href="http://www.ytechie.com/2017/10/building-a-sophisticated-security-camera-system/"/>
        <updated>2017-10-01T00:00:00.000Z</updated>
        <id>tag:www.ytechie.com,2017-10-01,/2017/10/building-a-sophisticated-security-camera-system/</id>
        <content type="html"><![CDATA[null]]></content>
    </entry>
    
    <entry>
        <title>Posting Binary from a Video Frame Grab Using Canvas</title>
        <link href="http://www.ytechie.com/2017/09/posting-binary-data-from-a-video-frame-grab-using-canvas/"/>
        <updated>2017-09-21T00:00:00.000Z</updated>
        <id>tag:www.ytechie.com,2017-09-21,/2017/09/posting-binary-data-from-a-video-frame-grab-using-canvas/</id>
        <content type="html"><![CDATA[<p>I recently needed to grab a frame of video from a WebRTC video element and post that to the <a href="https://azure.microsoft.com/en-us/services/cognitive-services/emotion/">Azure emotion cognitivie service API</a>. A few parts were tricky to figured out, so here it is.</p>
<p>This is what my canvas looks like:</p>
<pre><code>&lt;canvas id=&quot;screenshotCanvas&quot;&gt;
&lt;/canvas&gt;</code></pre>
<h3 id="getting-a-frame-of-video">Getting a frame of video</h3>
<pre><code>//Grab the actual DOM element
var canvas = document.getElementById(&#39;screenshotCanvas&#39;);
var context = canvas.getContext(&#39;2d&#39;);</code></pre>
<p><code>video</code> = the video DOM element</p>
<pre><code>context.drawImage(video, 0, 0, 220, 150);</code></pre>
<p>Get the binary data from the canvas</p>
<pre><code>canvas.toBlob(callback)</code></pre>
<h3 id="posting-the-binary-data">Posting the binary data</h3>
<pre><code>return fetch(&#39;https://westus.api.cognitive.microsoft.com/emotion/v1.0/recognize&#39;,
    {   method: &#39;POST&#39;,
        headers: {
            &#39;Ocp-Apim-Subscription-Key&#39;: API_KEY,
            &#39;Content-Type&#39;: &#39;application/octet-stream&#39; },
        body: data })
.then(function(response) {
    return response.json();
})
.then(function(json) {
    console.log(&#39;Emotion response: &#39; + JSON.stringify(json[0].scores));
});</code></pre>
]]></content>
    </entry>
    
    <entry>
        <title>Transport Agnostic Cloud to Device Messaging with IoT Hub</title>
        <link href="http://www.ytechie.com/2016/10/transport-agnostic-cloud-to-device-messaging-with-iot-hub/"/>
        <updated>2016-10-12T00:00:00.000Z</updated>
        <id>tag:www.ytechie.com,2016-10-12,/2016/10/transport-agnostic-cloud-to-device-messaging-with-iot-hub/</id>
        <content type="html"><![CDATA[<p>The Azure IoT hub provides an easy and secure way to not only send data from a device to the cloud, but for the cloud to send data to a device.</p>
<p><strong>Device to Cloud</strong></p>
<p>Sending a message from a device to the cloud is as simple as</p>
<p><code>await deviceClient.SendEventAsync(message);</code></p>
<p>You can find a more complete example in the <a href="https://github.com/ytechie/jasons-office-iot">GitHub repository I created for the code that runs on the Raspberry Pi in my office.</a></p>
<p><strong>Cloud to Device</strong></p>
<p>Receiving data from the cloud is a little more tricky. The pattern used by the IoT hub is to have the client always establish an outbound connection. This has major advantages outside of the scope of this article.</p>
<p>The biggest challenge is that the <code>DeviceClient.ReceiveAsync()</code> method is deceptively simple, and is unfortunately a leaky abstraction. The behavior of the method changes based on whether we&#39;re using AMQP, HTTP, or MQTT.</p>
<p>When using <strong>HTTP</strong> to check for a message, the response is received immediately. If you put this into a <code>while(true)</code> loop, you&#39;ll be hammering the IoT hub repeatedly, and you&#39;ll be wasting bandwidth.</p>
<p>In contrast, when you use <strong>AMQP</strong> to check for a message, the connection is held open as long as possible (with a configurable timeout), and returns a message immediately when one becomes available.</p>
<p>It is possible to specify the transport when creating our device client:</p>
<p><code>var deviceClient = DeviceClient.Create(hubHostname, auth, TransportType.Http1);</code></p>
<p>Let&#39;s take a look how we can use a pattern that will work for both types of patterns, polling and &quot;hold and wait&quot;:</p>
<pre><code>while (true)
{
    Console.WriteLine(&quot;Polling for message...&quot;);
    var preCheckTime = DateTime.UtcNow;
    var message = await _client.ReceiveAsync();
    if (message == null)
    {
        //Check if we got a null back in a short amount of time
        if (preCheckTime &gt; DateTime.UtcNow.AddSeconds(-5))
        {
            //The amount of time to wait between polls
            await Task.Delay(TimeSpan.FromSeconds(2));
        }
    }
    else
    {
        RaiseEventReceived(message); //A method I created to raise an event
        await _client.CompleteAsync(message);
        //Immediately call again to drain the queue
    }
}</code></pre>
<p>Basically, we&#39;re checking if we get a <code>null</code> message &quot;quickly&quot;. In the code above, if we get <code>null</code> back in less than 5 seconds, we assume that we should wait to poll again. If <code>ReceiveAsync</code> blocks for more than 5 seconds, or if we get a message, we know we can check for another message immediately.</p>
]]></content>
    </entry>
    
    <entry>
        <title>Top 3 Considerations when Choosing an IoT Platform Provider</title>
        <link href="http://www.ytechie.com/2016/06/3-things-to-consider-choosing-an-iot-platform-provider/"/>
        <updated>2016-06-07T00:00:00.000Z</updated>
        <id>tag:www.ytechie.com,2016-06-07,/2016/06/3-things-to-consider-choosing-an-iot-platform-provider/</id>
        <content type="html"><![CDATA[<p>IoT, or the Internet of Things, is going through a transformation. There is a shift from having to build your own IoT stack to having a market of IoT platform providers. We’ll see a parallel to the cloud where the first phase was everyone calling themselves &quot;cloud&quot;, and eventually the market converged on a small number of trusted platforms. There will be a point at which it is no longer viable to build and IoT solution from the ground up, and in fact, we may have already passed that point. It far easier to bring an IoT product to market by building on an existing platform.</p>
<p>This blog post will cover the top 3 categories of considerations that are the foundation of choosing an IoT platform provider. </p>
<h3 id="security">Security</h3>
<p>Much like the early days of computer hardware and software proliferation, many IoT devices are rushed to market. These companies that &quot;bolt-on&quot; security before shipping have presented challenges for anyone embracing IoT. As IoT is integrated into every type of device, security poses a monumental risk.</p>
<p>Fortunately, there is already a mature PC market that has taught us how to build security not only into products, but into the entire development process.</p>
<p><img src="http://www.ytechie.com/2016/06/3-things-to-consider-choosing-an-iot-platform-provider/sdlc@2x.gif" alt="SDLC"></p>
<p>Security must be a fundamental principle throughout the entire software development and product lifecycle. Smaller companies generally don&#39;t have the resources, experience, and historical codebase necessary to roll their own. They&#39;re left with the choice to either ship a risky product or build upon another platform from a company with a proven security track record. Much as many organizations have experienced enhanced security as they’ve shifted to cloud computing, many products will have improved security and lifecycle management when using a mature, secure IoT platform.</p>
<p>For a great presentation on IoT security, I recommend checking out a presentation Clemens Vasters gave at //Build/ 2015: <a href="https://channel9.msdn.com/Events/Build/2015/2-625">https://channel9.msdn.com/Events/Build/2015/2-625</a></p>
<h3 id="roi">ROI</h3>
<p>The next consideration is return on investment. It&#39;s simply an equation of value to the business minus the cost. Different IoT technologies and vendors will focus on different industries and scenarios. For example, one company may focus on supporting industrial automation scenarios, another may focus on automating homes, and yet another may focus on automation at a municipality level.</p>
<p>The cost of these various options may vary dramatically. One service might charge per device per month, while another may charge for data transfer and storage. The cost to implement as well as the ongoing costs need to be considered. Long-term projections will need to take into account the potential lifespan of a device. Additionally, implementation costs should factor in tooling costs such as licensing and software support. </p>
<h3 id="maturity">Maturity</h3>
<p>Gartner summarizes providers based on completeness of vision and ability to execute. These are great high level indicators of a mature platform. Let’s break maturity down further.</p>
<p>Security and ROI should be the minimum bar for consideration when choosing an IoT platform. The next differentiator is maturity, and has many critical aspects. Recently, Nest shut down Revolv, and while the number of users was relatively small, the news sent shockwaves through the IoT industry. A technology that they adopted and trusted was pulled out from under them.</p>
<p>What type of support is offered? Having support throughout development planning, development, and production is critical. During development, documentation itself is rarely sufficient. Guidance, including hands-on technical sessions from an experienced platform vendor goes a long way. In production, good support is key to assessing, responding to, and minimizing an outage.</p>
<p>Has the industry accepted the technology? In other words, has the platform survived scrutiny? A long-lived service that has stood the test of time is likely to be battle hardened. Ideally, an inference about the long-term viability of the platform is clear.</p>
<p>What are the performance characteristics? End-to-end performance must meet the requirements of your customer. This performance is a combination of time for edge processing, latency to the platform, latency within the platform, and latency within additional code. Generally speaking, the system has to be tested as a whole. The platform vendor should have real examples of production applications along with tested end-to-end latency statistics.</p>
<p>What features can be leveraged? A mature product will have a relatively complete feature set. There should not be obvious gaps. How well does the feature set align with the goals of your project?</p>
<p>Is the technology interoperable? IoT at its core is designed to connect devices and gain insights and capabilities from those relationships. Therefore, it’s key for an IoT platform to work with external systems without unneeded friction. Mature IoT platforms will recognize this, and while there will be advantages of using their full stack, they should be compatible with other popular technologies. This will also be evident through strategic partnerships made by the provider.</p>
<p>A platform provider must have experience in your domain. Whether it’s monitoring of remote oil wells, or controlling the temperature of your house, the platform provider must understand your business. The provider should be well known for experience in the problem domain.</p>
]]></content>
    </entry>
    
    <entry>
        <title>Apple is a Microsoft OEM</title>
        <link href="http://www.ytechie.com/2016/04/apple-is-a-microsoft-oem/"/>
        <updated>2016-04-22T00:00:00.000Z</updated>
        <id>tag:www.ytechie.com,2016-04-22,/2016/04/apple-is-a-microsoft-oem/</id>
        <content type="html"><![CDATA[<blockquote>
<p>&quot;Jason, don&#39;t your hands burst into flames when you touch an Apple product?&quot;</p>
</blockquote>
<p>I remember the giggles in the room years ago when a customer would bring a Mac into a Microsoft meeting. I have to admit, I was that guy a few years ago before I joined Microsoft. This practice, the giggling, still happens from time to time.</p>
<p>Today, I use a PC about 90% of the time. My primary desktop PC with dual monitors is running Windows. My Surface Pro 3 is running windows. Even my MacBook Pro has Windows installed in Parallels. I feel at home on Windows. It&#39;s where I grew up.</p>
<p>Still, I get looks of shock when I bring a Mac into a customer meeting. I&#39;m sure the reactions are just a holdover from a bygone era, but I feel compelled to explain myself. </p>
<p>I&#39;ll often get questions from other Microsoft employees. &quot;Is that allowed?&quot;. Interestingly, they&#39;ll have a Lenovo, HP, Dell, etc. But the way I see things, <strong>we&#39;re all just using an OEM for our hardware</strong>. If you&#39;re not using a Microsoft Surface device, you purchased a device that Microsoft does not manufacture. The last time I checked, Microsoft was still a software company. The Surface Pro/Book is a demonstration of the state of the art.</p>
<h2 id="microsoft-windows">Microsoft != Windows</h2>
<p>Microsoft Azure was renamed from Windows Azure. The reason? It has no connection to Windows. It&#39;s great for Linux. Even Windows is great at Linux now. SQL Server runs on Linux. Office runs on Mac. You can use SharePoint from any device. Visual Studio Code runs on Mac and Linux.</p>
<p>Windows is just one great product that Microsoft makes. I happen to prefer it over OSX.</p>
<p>I&#39;m of the opinion that this can be extended to products like the iPhone, Android, and various watches. Microsoft has an impressive lineup of apps on iPhone and Android, many of them best in class. I can still edit my Office documents regardless of my phone OS.</p>
<blockquote>
<p><strong>My OS choice has been decoupled from my application and services choice.</strong></p>
</blockquote>
<p>When I bring my Mac into a meeting and I&#39;m developing my next Azure application in Visual Studio Code, reading my email in Outlook, and creating spreadsheets in Excel, I no longer understand why my Apple laptop running all Microsoft software is all that interesting.</p>
<p>Use what you like, and remember that the world has changed.</p>
]]></content>
    </entry>
    
    <entry>
        <title>Build 2016 Recap</title>
        <link href="http://www.ytechie.com/2016/04/build-2016-recap/"/>
        <updated>2016-04-04T00:00:00.000Z</updated>
        <id>tag:www.ytechie.com,2016-04-04,/2016/04/build-2016-recap/</id>
        <content type="html"><![CDATA[<h3 id="windows">Windows</h3>
<ul>
<li><a href="https://www.youtube.com/watch?v=_8tEE2a6M0U">Windows Announcement Highlights</a></li>
<li>&quot;Anniversary Update&quot; free</li>
<li>270 million installs</li>
<li>Edge will allow biometric authentication for websites</li>
<li><a href="http://thenextweb.com/microsoft/2016/04/02/hands-microsofts-new-inking-tools/">&quot;Ink workspace&quot; shows inking apps and recent pen apps</a></li>
<li>Sticky notes are smart</li>
<li>Facebook, instagram, messenger bringing first party UWP apps to the store</li>
<li><a href="https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/">BASH coming to windows</a><ul>
<li>Not emulated, it&#39;s the real binaries</li>
</ul>
</li>
<li>Android notifications</li>
<li>Start menu: <a href="https://twitter.com/JenMsft/status/716844501789069312/photo/1">https://twitter.com/JenMsft/status/716844501789069312/photo/1</a></li>
<li>What&#39;s new in UWP: <a href="https://channel9.msdn.com/Events/Build/2016/B809">https://channel9.msdn.com/Events/Build/2016/B809</a></li>
<li>UWP<ul>
<li><a href="https://channel9.msdn.com/Events/Build/2016/B809">Modern Desktop App Installer allows double-click install of Appx</a></li>
<li>Centennial converter</li>
</ul>
</li>
<li><a href="https://developer.microsoft.com/en-us/microsoft-edge/extensions/">Edge extension support</a></li>
<li><a href="https://channel9.msdn.com/Events/Build/2016/B834?ocid=player">Cortana extensibility</a></li>
<li><a href="https://channel9.msdn.com/Events/Build/2016/B871">Action Center in the cloud</a><ul>
<li>Notification mirroring between desktop and phone - even on Android</li>
<li>Sync live tiles</li>
</ul>
</li>
</ul>
<h3 id="visual-studio">Visual Studio</h3>
<ul>
<li><a href="https://blogs.msdn.microsoft.com/chuckw/2016/03/31/visual-studio-2015-update-2/">Update 2 available today</a></li>
<li><a href="https://blogs.msdn.microsoft.com/visualstudio/2016/04/01/visual-studio-15-take-on-dependencies-stay-productive/">Visual Studio 2017 preview</a><ul>
<li>Show dependencies that are in GitHub</li>
<li>Search samples without leaving the IDE</li>
</ul>
</li>
</ul>
<h3 id="xbox">Xbox</h3>
<ul>
<li><a href="https://msdn.microsoft.com/en-us/windows/uwp/xbox-apps/devkit-activation">Turn a standard xbox into a dev box today</a><ul>
<li>Remote debugging is supported</li>
</ul>
</li>
<li>Unified into the Windows store, will run UWP<ul>
<li><a href="https://channel9.msdn.com/Events/Build/2016/B883">Overview</a></li>
<li><a href="https://msdn.microsoft.com/library/windows/apps/mt693377">Limitations</a></li>
</ul>
</li>
<li>Cortana coming to xbox with Anniversary update</li>
</ul>
<h3 id="hololens">Hololens</h3>
<ul>
<li><a href="https://microsoftstudios.com/hololens/shareyouridea/galaxy-explorer/">Galaxy explorer</a><ul>
<li><a href="https://github.com/Microsoft/GalaxyExplorer">Open source</a></li>
<li>In the store</li>
</ul>
</li>
</ul>
<h3 id="skype">Skype</h3>
<ul>
<li>UWP app</li>
<li>Cortana integration for brokering conversations</li>
<li>Video bots<ul>
<li>SDK available today at <a href="http://www.skype.com/en/developer/">dev.skype.com</a></li>
</ul>
</li>
<li>Skype for hololens</li>
</ul>
<h3 id="bots">Bots</h3>
<ul>
<li>Available for integration in things like skype</li>
<li>Microsoft bot framework - <a href="https://dev.botframework.com/">dev.botframework.com</a></li>
</ul>
<h3 id="microsoft-cognitive">Microsoft Cognitive</h3>
<ul>
<li><a href="https://www.microsoft.com/cognitive-services">https://www.microsoft.com/cognitive-services</a></li>
<li><a href="http://captionbot.ai">Captionbot.ai</a></li>
</ul>
<h3 id="xamarin">Xamarin</h3>
<ul>
<li>Free for Visual Studio customers</li>
<li>Free for Visual Studio community customers</li>
<li>Xamarin studio free for mac free with MSDN</li>
<li>There will be a free version of Xamarin studio on Mac</li>
<li>Xamarin is going open source</li>
</ul>
<h3 id="azure">Azure</h3>
<ul>
<li>Azure Functions <a href="https://azure.microsoft.com/en-us/services/functions/">https://azure.microsoft.com/en-us/services/functions/</a></li>
<li>Visual Studio 2017 preview</li>
<li>Service fabric<ul>
<li><a href="https://azure.microsoft.com/en-us/blog/azure-service-fabric-is-ga/">GA</a></li>
<li>Linux support</li>
</ul>
</li>
<li><a href="https://azure.microsoft.com/en-us/develop/iot/starter-kits/">IoT starter kits for sale</a></li>
<li><a href="https://azure.microsoft.com/en-us/blog/documentdb-goes-planet-scale-with-global-databases-new-pricing-and-more-developer-choices/">Document DB</a><ul>
<li>Global databases</li>
<li>Decouple size and perf</li>
<li>Use any standard MongoDB drivers</li>
</ul>
</li>
<li><a href="https://powerbi.microsoft.com/en-us/blog/embed-the-wow-of-power-bi-in-your-applications-with-microsoft-power-bi-embedded/">PowerBI Embedded</a><ul>
<li>Integrate PowerBI in your applications</li>
<li>Public preview starts today</li>
<li>Free until May 1st</li>
</ul>
</li>
<li><a href="https://azure.microsoft.com/en-us/blog/announcing-the-publication-of-parse-server-with-azure-managed-services/">Parse server available</a></li>
<li>DV2 instance sizes<ul>
<li><a href="https://azure.microsoft.com/en-us/updates/announcing-new-dv2-series-virtual-machine-size/">20 cores, 140GB RAM, 1TB SSD, 8 NICs, 40 disks</a></li>
</ul>
</li>
<li><a href="https://azure.microsoft.com/en-us/blog/announcing-support-of-linux-vm-on-azure-batch-service/">Azure Batch for Linux Preview</a></li>
<li><a href="https://azure.microsoft.com/en-us/blog/build-2016-azure-storage-announcements/">Storage encryption preview</a></li>
<li><a href="https://azure.microsoft.com/en-us/blog/build-2016-azure-storage-announcements/">Storage roadmap annoucements</a></li>
<li><a href="https://azure.microsoft.com/en-us/blog/announcing-visual-studio-azure-tools-and-sdk-2-9/">Azure SDK 2.9</a></li>
<li><a href="https://azure.microsoft.com/en-us/blog/debugging-arm-template-deployments/">ARM Template debugging</a></li>
</ul>
<h3 id="-office-365-http-dev-office-com-blogs-build2016release-"><a href="http://dev.office.com/blogs/build2016release">Office 365</a></h3>
<ul>
<li>Latest tools available today</li>
<li>Ribbon extensibility</li>
<li>GA Office 365 group connectors</li>
<li>GA of Skype for Business SDK</li>
<li><a href="http://www.theverge.com/2016/3/30/11331174/windows-10-cortana-desktop-update">Calendar integration</a></li>
<li>Sideloading of add-ins</li>
</ul>
<h3 id="sql-server">SQL Server</h3>
<ul>
<li>2016 RC1 available</li>
</ul>
]]></content>
    </entry>
    
    <entry>
        <title>MS Dev Show Hardware Update</title>
        <link href="http://www.ytechie.com/2016/01/msdevshow-hardware-update/"/>
        <updated>2016-01-04T00:00:00.000Z</updated>
        <id>tag:www.ytechie.com,2016-01-04,/2016/01/msdevshow-hardware-update/</id>
        <content type="html"><![CDATA[<p>This is an update to my earlier post <a href="http://www.ytechie.com/2015/01/how-we-produce-the-msdevshow-podcast/">How We Produce the MS Dev Show Podcast</a>. Carl and I have focused on streamlining the process to minimize the amount of time we need to dedicate on each episode. That means we have more time to spend with guests and content (and day job).</p>
<p>This is the setup Carl and I each have for a typical podcast:</p>
<p><img src="http://www.ytechie.com/2016/01/msdevshow-hardware-update/hardware@2x.jpg" alt="Full Rig"></p>
<h2 id="bye-compressor-gate-limiter">Bye Compressor/Gate/Limiter</h2>
<p>We previously had a compressor/gate/limiter wired in to our audio chain. What I&#39;ve found is that there is nothing you can do in real-time during recording that you can&#39;t do in post editing. In fact, during editing, there is more information available. The <a href="https://auphonic.com/multitrack">Auphonic Multitrack Processor</a> does a phenomenal job selecting the right track at the right moment, and determining the perfect level. It also does an amazing job at removing noise. For Carl and I with our good mics, the noise is minimal. For guests, sometimes we deal with a lot of noise. Auphonic reduces the noise as much as possible, and attenuates their track when they&#39;re not speaking.  </p>
<p>Due to our dependence and quantity of usage of Auphonic, we switched from their online service to their desktop application. This means that we spend less time transferring files back and forth with the cloud, and we don&#39;t have to worry about per-episode costs.</p>
<h2 id="hardware-recorders">Hardware Recorders</h2>
<p><img src="http://www.ytechie.com/2016/01/msdevshow-hardware-update/zoom-recorder@2x.jpg" alt="Zoom Recorder"></p>
<p>We originally bought a <a href="http://www.amazon.com/gp/product/B00DFU9BRK?ref=ytechie-20">Zoom H6 Six-Track portable recorder</a> for a conference, but we were just blown away by the capabilities. We ended up buying a second as a spare. We also started using our hardware recorders as a backup for our audio tracks. By using a simple <a href="http://www.amazon.com/gp/product/B000068O59?ref=ytechie-20">XLR splitter</a>, we&#39;re able to use the recorders as dedicated audio backup devices. Even if Carl or I have a computer issue while recording the show, the hardware recorder ensures we have a reliable raw track to fall back on.</p>
<p>Our mics run into the XLR splitter, and then go directly into the hardware recorder as well as our USB interface. This simple design minimizes any single points of failure.</p>
<p>The recorder also functions as a mixer, and when we do shows at a conference, it&#39;s easy for us to adjust gains while recording.</p>
<h2 id="better-cables">Better Cables</h2>
<p>We found out the hard way that our cables sucked. Interestingly, price doesn&#39;t seem to correlate with quality. We had a cable with a bad end that would cause occasional static.</p>
<p>TIP: If you have a bad cable, cut it and throw it away! It&#39;s not worth keeping!</p>
<p>We&#39;ve had good luck with <a href="http://www.amazon.com/gp/product/B004TVJL1U?ref=ytechie-20">Hosa XLR cables</a>. The ends are top quality, and the connections have been great.</p>
<p><img src="http://www.ytechie.com/2016/01/msdevshow-hardware-update/hosa-xlr-cable.jpg" alt="Hosa XLR Cable"></p>
<h2 id="headphones">Headphones</h2>
<p>A good pair of headphones will allow you to hear a complete range of sound without artificially changing it. Not only do they sound great for music, but they also give you an unbiased representation of what you&#39;re recording. During the editing process, they&#39;re invaluable in hearing every detail.</p>
<p>I picked up the <a href="http://www.amazon.com/Audio-Technica-ATH-M50x-Professional-Monitor-Headphones/dp/B00HVLUR86?ref=ytechie-20">Audio Technica ATH-m50x headphones</a>. They come with interchangeable cables. For podcasting, I use the coiled cable with a 1/4&quot; connector. The cable extends long enough that I can go up to a few feet away from the USB interface if needed.</p>
<p><img src="http://www.ytechie.com/2016/01/msdevshow-hardware-update/audio-technica@2x.jpg" alt="Audio Technica ATH-m50x"></p>
<h2 id="basic-stands">Basic Stands</h2>
<p>I thought having a big boom arm for my mic was a necessity, but again, simpler turns out to be the better option. I switched over to a <a href="http://www.amazon.com/gp/product/B0002M3OVI?ref=ytechie-20">basic mic stand</a> that I can just move into place on my desk. As an added bonus, it&#39;s over $100 less expensive.</p>
<p><img src="http://www.ytechie.com/2016/01/msdevshow-hardware-update/mic-stand@2x.jpg" alt="Mic Stand"></p>
<h2 id="isolation-shield">Isolation Shield</h2>
<p>I have a <a href="http://www.monoprice.com/Product?p_id=602650">sound isolation shield</a> that I put on my desk behind the microphone which helps reduce echo from my walls and monitor.</p>
<p><img src="http://www.ytechie.com/2016/01/msdevshow-hardware-update/isolation-shield@2x.jpg" alt="Isolation Shield"></p>
<h2 id="guest-gifts">Guest Gifts</h2>
<p>Our amazing guests are one of our best assets. We wanted a way to show our appreciation. Starting in 2016, we&#39;ll be providing a care package to guests. We&#39;re still working on the details, but our current plan is to include the following:</p>
<ul>
<li>A thank you letter</li>
<li>MS Dev Show M&amp;Ms</li>
<li>An MS Dev Show mousepad</li>
<li>An MS Dev Show Moleskine notebook</li>
</ul>
<p><img src="http://www.ytechie.com/2016/01/msdevshow-hardware-update/mms@2x.jpg" alt="M&amp;M&apos;s mmmmm"></p>
<h2 id="what-s-next-">What&#39;s Next?</h2>
<p><blockquote class="twitter-tweet" lang="en"><p lang="en" dir="ltr"><a href="https://twitter.com/ytechie">@ytechie</a> At this point, I think you&#39;re going to have to give the barking dog cohost credits.</p>&mdash; Michael Szul (@szul) <a href="https://twitter.com/szul/status/676934719301402624">December 16, 2015</a></blockquote></p>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>One thing we&#39;re looking at is an easy way to wire in an XLR mute box. Basically, we want to have a button we can push to temporarily mute ourselves if our kids or pets are loud. We&#39;re still working on figuring out the best option here.</p>
<h2 id="summary">Summary</h2>
<p>I believe the absolute key to keeping a podcast going is making it as little work as possible. This allows you to focus on content.</p>
<p><strong>Automate.</strong></p>
<p><strong>Keep it simple.</strong></p>
<p><strong>Enjoy.</strong></p>
]]></content>
    </entry>
    
    <entry>
        <title>Moving My PC Into the Basement</title>
        <link href="http://www.ytechie.com/2015/11/moving-my-pc-into-the-basement/"/>
        <updated>2015-11-05T00:00:00.000Z</updated>
        <id>tag:www.ytechie.com,2015-11-05,/2015/11/moving-my-pc-into-the-basement/</id>
        <content type="html"><![CDATA[<p>Most computers generate a lot of noise and heat. A few months ago, coincidentially the middle of summer, I realized I could move my PC into the basement and solve both of these problems.</p>
<p>Here is a photo of my tower in my desk - pardon the dust:</p>
<p><img src="http://www.ytechie.com/2015/11/moving-my-pc-into-the-basement/pc-in-desk@2x.jpg" alt="PC In Desk"></p>
<p>It&#39;s pretty dusty, and since it&#39;s in a fairly enclosed area, it runs hotter than it should. My original solution was to add a fan to the desk, and drill holes to allow the air to flow through. Unfortunately, this turns my desk into a giant room heater.</p>
<p>Originally I planned on running the cables through the wall down to the basement, but the DVI cables have large ends, and I didn&#39;t want to remove much insulation from an outside wall. I decided to instead drill a hole in the floor using a standard size used in desks so that it&#39;s easy to cover/cap as needed.</p>
<p>This is the type of grommet I picked up:</p>
<p><img src="http://www.ytechie.com/2015/11/moving-my-pc-into-the-basement/grommet.jpg" alt="Floor Grommet"></p>
<p>I used masking tape on the wood floor to avoid splintering, and then used a hole saw to drill a 2.5&quot; hole.</p>
<p>Here is what the finished hole looks like, with the plastic ring dropped (again, the same as what you would use in an office desk) in to make it look nice. It&#39;s near the wall so that it&#39;s out of the way, and my desk is close enough to the wall to run my cables under the desk into the hole.</p>
<p><img src="http://www.ytechie.com/2015/11/moving-my-pc-into-the-basement/finished-hole-in-floor@2x.jpg" alt="Finished Hole in Floor"></p>
<p>Let&#39;s head down to the basement.</p>
<p>I built 2 brackets to hang from the floor joists and hold the tower.</p>
<p><img src="http://www.ytechie.com/2015/11/moving-my-pc-into-the-basement/brackets@2x.jpg" alt="Brackets"></p>
<p>Here they are installed with the PC sitting on top. I&#39;m going to put some hooks in for wire management.</p>
<p><img src="http://www.ytechie.com/2015/11/moving-my-pc-into-the-basement/pc-mounted-in-basement@2x.jpg" alt="PC Mounted in Basement"></p>
<h3 id="blu-ray-drive">Blu-Ray Drive</h3>
<p>One issue with having my PC in a different room is that I can&#39;t phsyically access the Blu-Ray drive without going into the basement.</p>
<p>I found a USB 3.0 to SATA adapter that connects to the drive and provides power and a data connection.</p>
<p><a href="http://www.amazon.com/gp/product/B005B3VO24?ref=ytechie-20"><img src="http://www.ytechie.com/2015/11/moving-my-pc-into-the-basement/anker-sata-usb-adapter@2x.jpg" alt="Anker USB to SATA Adapter"></a></p>
<p>I don&#39;t want to scratch my desk, so let&#39;s add some protection.</p>
<p><img src="http://www.ytechie.com/2015/11/moving-my-pc-into-the-basement/blu-ray-feet@2x.jpg" alt="Blu-Ray Drive Feet"></p>
<p>Here it is sitting on my desk.</p>
<p><img src="http://www.ytechie.com/2015/11/moving-my-pc-into-the-basement/blu-ray-on-desk@2x.jpg" alt="Blu-Ray Drive on my Desk"></p>
<h3 id="other-connections">Other Connections</h3>
<p>Not a lot of cables are required for my setup. I have 2 dual-DVI connections, a 3.5mm audio connection, and a couple of <a href="http://www.monoprice.com/search/index?keyword=usb+extension">USB extensions</a> allowing me to connect a USB hub and other devices.</p>
<p>One suggestion if you&#39;re thinking of doing this - run a few USB extensions so that you can directly connect devices like keyboards to the PC. If your keyboard runs through a USB hub, you may run into issues if you need to get into the BIOS since the USB Hub drivers may not work at boot time. I&#39;ve also seen delays in Windows recognizing the keyboard when connected to a hub.</p>
<p>I keep my PC on 24/7, so accessing the power button isn&#39;t important. It&#39;s easy enough for me to go into the basement in the rare case where I need to push the button. If you need access to your power button remotely, it would not be overly difficult to run 2 low voltage wires and connect a momentary switch. The power button simply closes a circuit momentarily, so it&#39;s easy to extend.</p>
<h3 id="conclusion">Conclusion</h3>
<p>Even though my setup was extremely quiet before, it&#39;s noticably quieter now. We also had some warm days recently and my office stayed nice and cool. I&#39;m happy with the solution so far, and the extra space in my desk was a great place to hide my printer.</p>
]]></content>
    </entry>
    
    <entry>
        <title>Azure in Plain English</title>
        <link href="http://www.ytechie.com/2015/09/azure-in-plain-english/"/>
        <updated>2015-09-20T00:00:00.000Z</updated>
        <id>tag:www.ytechie.com,2015-09-20,/2015/09/azure-in-plain-english/</id>
        <content type="html"><![CDATA[<p>Recently I saw a great page called <a href="https://www.expeditedssl.com/aws-in-plain-english">Amazon Web Services in Plain English</a>. I searched for the Azure equivalent, and as it turns out, one doesn&#39;t exist! Time to set that straight.</p>
<p>The most interesting thing about this exercise is that Azure services are actually named fairly well. For each of the official names, it was extremely difficult to come up with a better name.</p>
<h2 id="base-services">Base Services</h2>
<table>
    <tr>
        <td><strong>Azure Service</strong></td>
        <td><strong>Could be Called</strong></td>
        <td><strong>Use this to...</strong></td>
        <td><strong>Like AWS...</strong></td>
    </tr>

 <tr><td>Virtual Machines</td><td>Servers</td><td>Move existing apps to the cloud without changing them. You manage the entire computer.</td><td>EC2</td></tr>
 <tr><td>Cloud Services</td><td>Managed Virtual Machines</td><td>Run applications on virtual machines that you don&#39;t have to manage, but can partially manage.</td><td>&nbsp;</td></tr>
 <tr><td>Batch</td><td>Azure Distributed Processing</td><td>Work on a large chunk of data by divvying it up between a whole bunch of machines.</td><td>&nbsp;</td></tr>
 <tr><td>RemoteApp</td><td>Remote Desktop for Apps</td><td>Expose non-web apps to users. For example, run Excel on your iPad.</td><td>AppStream</td></tr>
 <tr><td>Web Apps</td><td>Web Site Host</td><td>Run websites (.NET, Node.js, etc.)  without managing anything extra. Scale automatically and easily.</td><td>Elastic Beanstalk</td></tr>
 <tr><td>Mobile Apps</td><td>Mobile App Accelerator</td><td>Quickly get an app backend up and running.</td><td>&nbsp;</td></tr>
 <tr><td>Logic Apps</td><td>Visio for Doing Stuff</td><td>Chain steps together to get stuff done.</td><td>&nbsp;</td></tr>
 <tr><td>API Apps</td><td>API Host</td><td>Host your API&#39;s without any of the management overhead.</td><td>&nbsp;</td></tr>
 <tr><td>API Management</td><td>API Proxy</td><td>Expose an API and off-load things like billing, authentication, and caching.</td><td>API Gateway</td></tr>

</table>

<h2 id="mobile">Mobile</h2>
<table>
    <tr>
        <td><strong>Azure Service</strong></td>
        <td><strong>Could be Called</strong></td>
        <td><strong>Use this to...</strong></td>
        <td><strong>Like AWS...</strong></td>
    </tr>

 <tr><td>Notification Hubs</td><td>Notification Blaster</td><td>Send notifications to all of your users, or groups of users based on things like zip code. All platforms.</td><td>SNS</td></tr>
 <tr><td>Mobile Engagement</td><td>Mobile Psychic</td><td>Track what users are doing in your app, and customize experience based on this data.</td><td>&nbsp;</td></tr>

</table>

<h2 id="storage">Storage</h2>
<table>
    <tr>
        <td><strong>Azure Service</strong></td>
        <td><strong>Could be Called</strong></td>
        <td><strong>Use this to...</strong></td>
        <td><strong>Like AWS...</strong></td>
    </tr>

 <tr><td>SQL Database</td><td>Azure SQL</td><td>Use the power of a SQL Server cluster without having to manage it.</td><td>RDS</td></tr>
 <tr><td>Document DB</td><td>Azure NoSQL</td><td>Use an unstructured JSON database without having to manage it.</td><td>Dynamo DB</td></tr>
 <tr><td>Redis Cache</td><td>Easy Cache</td><td>Cache files in memory in a scalable way.</td><td>Elasticache</td></tr>
 <tr><td>Storage Blobs</td><td>Cloud File System</td><td>Store files, virtual disks, and build other storage services on top of.</td><td>S3</td></tr>
 <tr><td>Azure Search</td><td>Index &amp; Search</td><td>Add search capabilities to your website, or index data stored somewhere else.</td><td>CloudSearch</td></tr>
 <tr><td>SQL Data Warehouse</td><td>Structured Report Database</td><td>Store all of your company&#39;s data in a structured format for reporting.</td><td>RedShift</td></tr>
 <tr><td>Azure Data Lake</td><td>Unstructured Report Database</td><td>Store all of your company&#39;s data in any format for reporting.</td><td>&nbsp;</td></tr>
 <tr><td>HDInsight</td><td>Hosted Hadoop</td><td>Do Hadoopy things with massive amounts of data.</td><td>&nbsp;</td></tr>
 <tr><td>Machine Learning</td><td>Skynet</td><td>Train AI to predict the future using existing data. Examples include credit card fraud detection and Netflix movie recommendations.</td><td>&nbsp;</td></tr>
 <tr><td>Stream Analytics</td><td>Real-time data query</td><td>Look for patterns in data as it arrives.</td><td>&nbsp;</td></tr>
 <tr><td>Data Factory</td><td>Azure ETL</td><td>Orchestrate extract, transform, and load data processes.</td><td>Data Pipeline</td></tr>
 <tr><td>Event Hubs</td><td>IoT Ingestor</td><td>Ingest data at ANY scale inexpensively.</td><td>&nbsp;</td></tr>

 </table>

<h2 id="networking">Networking</h2>
<table>
    <tr>
        <td><strong>Azure Service</strong></td>
        <td><strong>Could be Called</strong></td>
        <td><strong>Use this to...</strong></td>
        <td><strong>Like AWS...</strong></td>
    </tr> 

 <tr><td>Virtual Network</td><td>Private Network</td><td>Put machines on the same, private network so that they talk to each other directly and privately. Expose services to the internet as needed.</td><td>&nbsp;</td></tr>
 <tr><td>ExpressRoute</td><td>Fiber to Azure</td><td>Connect privately over an insanely fast pipe to an Azure datacenter. Make your local network part of your Azure network.</td><td>Direct Connect</td></tr>
 <tr><td>Load Balancer</td><td>Load Balancer</td><td>Split load between multiple services, and handle failures.</td><td>&nbsp;</td></tr>
 <tr><td>Traffic Manager</td><td>Datacenter Load Balancer</td><td>Split load between multiple datacenters, and handle datacenter outages.</td><td>&nbsp;</td></tr>
 <tr><td>DNS</td><td>DNS Provider</td><td>Run a DNS server so that your domain names map to the correct IP addresses.</td><td>Route53</td></tr>
 <tr><td>VPN Gateway</td><td>Virtual Fiber to Azure</td><td>Connect privately to an Azure datacenter. Make your local network part of your Azure network.</td><td>&nbsp;</td></tr>
 <tr><td>Application Gateway</td><td>Web Site Proxy</td><td>Proxy all of your HTTP traffic. Host your SSL certs. Load balance with sticky sessions.</td><td>&nbsp;</td></tr>
 <tr><td>CDN</td><td>CDN</td><td>Make your sites faster and more scalable by putting your static files on servers around the world close to your end users.</td><td>Cloudfront</td></tr>
 <tr><td>Media Services</td><td>Video Processor</td><td>Transcode video and distribute and manage it on the scale of the Olympics.</td><td>Elastic Transcoder</td></tr>

</table>

<h2 id="management">Management</h2>
<table>
    <tr>
        <td><strong>Azure Service</strong></td>
        <td><strong>Could be Called</strong></td>
        <td><strong>Use this to...</strong></td>
        <td><strong>Like AWS...</strong></td>
    </tr> 

 <tr><td>Azure Resource Manager</td><td>Declarative Configuration</td><td>Define your entire Azure architecture as a repeatable JSON file and deploy all at once.</td><td>CloudFormation</td></tr>
</table>

<h2 id="developer">Developer</h2>
<table>
    <tr>
        <td><strong>Azure Service</strong></td>
        <td><strong>Could be Called</strong></td>
        <td><strong>Use this to...</strong></td>
        <td><strong>Like AWS...</strong></td>
    </tr> 

 <tr><td>Application Insights</td><td>App Analytics</td><td>View detailed information about how your apps (web, mobile, etc.) are used.</td><td>Mobile Analytics</td></tr>
 <tr><td>Service Fabric</td><td>Cloud App Framework</td><td>Build a cloud optimized application that can scale and handle failures inexpensively.</td><td></td></tr>
</table>]]></content>
    </entry>
    
    <entry>
        <title>Ignite 2015 Mega Post</title>
        <link href="http://www.ytechie.com/2015/05/ignite-2015-mega-post/"/>
        <updated>2015-05-04T00:00:00.000Z</updated>
        <id>tag:www.ytechie.com,2015-05-04,/2015/05/ignite-2015-mega-post/</id>
        <content type="html"><![CDATA[<h3 id="windows">Windows</h3>
<ul>
<li><a href="http://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-technical-preview">Windows Server 2016 Technical Preview 2</a></li>
<li>PowerBI is integrated with Cortana</li>
</ul>
<h3 id="azure">Azure</h3>
<ul>
<li><a href="http://www.microsoft.com/en-us/server-cloud/products/azure-in-your-datacenter/">Azure Stack</a><ul>
<li>Use ARM templates on-premises</li>
<li>Storage support</li>
<li>IaaS</li>
<li>Service Fabric</li>
</ul>
</li>
<li>ExpressRoute supports Office 365 connectivity</li>
<li>IaaS<ul>
<li>Azure DNS Public Preview</li>
<li>User defined routing</li>
<li>Standard VPN Gateway<ul>
<li>Use a site-to-site VPN over Expressroute</li>
</ul>
</li>
<li>Multiple VIPs per cloud service</li>
<li>Expressroute and VPN co-existence</li>
<li>VM Volume encryption for Windows and Linux<ul>
<li>Encrypt boot and data volumes</li>
</ul>
</li>
<li>VM Scale Set public preview<ul>
<li>Set-based operations on identical VMs through an API</li>
<li>Great for big compute scenarios</li>
</ul>
</li>
<li>C++ Storage 1.0 GA</li>
<li>Client-side encryption for Azure Storage Preview</li>
<li>Xamarin storage client library</li>
<li>New Storage Blob Type - <a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2015/04/13/introducing-azure-storage-append-blob.aspx">Append Blob</a></li>
</ul>
</li>
<li><a href="http://azure.microsoft.com/en-us/documentation/services/dns/">Azure DNS</a></li>
<li>Public preview of Advanced Threat Analytics</li>
</ul>
<h3 id="misc">Misc</h3>
<ul>
<li><a href="http://blogs.office.com/2015/05/04/office-2016-public-preview-now-available/">Office 2016 Public Preview</a></li>
<li>Power BI mobile app</li>
<li><a href="http://www.pcworld.com/article/2917827/hey-workaholics-microsoft-delve-will-track-your-work-life-balance.html">Delve Dashboard</a><ul>
<li>Show email, meeting, Skype, Yammer analytics</li>
<li>Work/life balance stats</li>
<li>Work map</li>
</ul>
</li>
<li>Skype integration in Office</li>
<li>Office desktop collaboration</li>
<li>Sway will be coming to the education and business O365 plans</li>
<li><a href="http://channel9.msdn.com/Events/Ignite/2015/FND2201">Skype for Business</a><ul>
<li>iOS and Android by fall CY</li>
<li>Mac by end of CY 2015</li>
<li>Coming soon to the cloud: Enterprise voice, audio conferencing, PSTN calling</li>
<li>Broadcast to up to 10,000 viewers</li>
<li>DVR functionality for conferences</li>
</ul>
</li>
</ul>
]]></content>
    </entry>
    
</feed>