<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Tools on ZBrad's Blog</title><link>https://zbrad.github.io/categories/tools/</link><description>Recent content in Tools on ZBrad's Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 28 Jul 2016 00:00:00 -0700</lastBuildDate><atom:link href="https://zbrad.github.io/categories/tools/feed.xml" rel="self" type="application/rss+xml"/><item><title>Using your WebSocket in JavaScript</title><link>https://zbrad.github.io/tools/wsloop/</link><pubDate>Thu, 28 Jul 2016 00:00:00 -0700</pubDate><guid>https://zbrad.github.io/tools/wsloop/</guid><description>&lt;p&gt;Extends the previous WebSocket sample by providing a generic JavaScript
page that exercises a WebSocket endpoint. &lt;a href="https://github.com/zbrad/webweb"&gt;Example code is on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id="interacting-with-websockets"&gt;Interacting with WebSockets&lt;/h1&gt;
&lt;p&gt;Some of the disqus feedback questions were in how to interact with the
WebSocket Service. I&amp;rsquo;ve modified the original &lt;em&gt;index.html&lt;/em&gt; and created a
new file &lt;em&gt;loop.html&lt;/em&gt;. Now when you navigate to your service,
just specify the &lt;em&gt;loop.html&lt;/em&gt; file.&lt;/p&gt;
&lt;p&gt;I launch the service from Visual Studio (which by default uses &lt;em&gt;IISExpress&lt;/em&gt;
to host the service).&lt;/p&gt;</description></item><item><title>Websockets in Asp.Net Core</title><link>https://zbrad.github.io/tools/wscore/</link><pubDate>Thu, 28 Jul 2016 00:00:00 -0700</pubDate><guid>https://zbrad.github.io/tools/wscore/</guid><description>&lt;p&gt;An example of creating and using a WebSocket with the new ASP.NET Core. The example code is available on GitHub &lt;a href="https://github.com/zbrad/wsweb"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id="background"&gt;Background&lt;/h1&gt;
&lt;p&gt;WebSockets were introduced as part of the draft HTML5 specification in 2008, and the first browser to provide support was Google Chrome in 2009.&lt;/p&gt;
&lt;p&gt;At this time (July 2016), the following browsers fully support the WebSocket
standard (&lt;a href="https://tools.ietf.org/html/rfc6455"&gt;RFC 6455&lt;/a&gt;):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Internet Explorer 10&lt;/li&gt;
&lt;li&gt;Firefox 11 (PC,Android)&lt;/li&gt;
&lt;li&gt;Chrome 16 (PC,Mobile)&lt;/li&gt;
&lt;li&gt;Safari 6 (Mac,iOS)&lt;/li&gt;
&lt;li&gt;Opera 12.10 (PC,Mobile)&lt;/li&gt;
&lt;li&gt;Android Browser 4.4&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="websockets"&gt;Websockets&lt;/h2&gt;
&lt;p&gt;Unlike the HTTP protocol, a WebSocket provides fully bi-directional (full-duplex) communication, enabling a event based
model of programming using a message passing protocol. Since there is not the constant overhead of re-establishing the connection, the
passing of multiple small messages is extremely efficient and lends itself well to client/service interactions
with low latency.&lt;/p&gt;</description></item><item><title>A new NLogEtw component</title><link>https://zbrad.github.io/tools/NLogEtw/</link><pubDate>Mon, 19 Oct 2015 00:00:00 -0700</pubDate><guid>https://zbrad.github.io/tools/NLogEtw/</guid><description>&lt;p&gt;Describes the creation of a new
&lt;a href="https://github.com/NLog/NLog/wiki/Extending%20NLog"&gt;custom NLog target&lt;/a&gt;
that provides an
&lt;a href="https://msdn.microsoft.com/en-us/library/ms751538(v=vs.110).aspx"&gt;ETW source&lt;/a&gt;
(Event Tracing for Windows) for event processing in Microsoft
platforms. This is useful for applications built on NLog, that
also need to execute in ETW environments. The code is available
on &lt;a href="https://github.com/zbrad/nlogetw"&gt;GitHub&lt;/a&gt; and the package is
available from &lt;a href="https://www.nuget.org/packages/ZBrad.NLogEtw/1.0.0-beta"&gt;NuGet&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;I prefer to use NLog within my applications. Recently I&amp;rsquo;ve been creating
microservice applications for some customer guidance using the new &lt;a href="https://azure.microsoft.com/en-us/campaigns/service-fabric/"&gt;Azure Service Fabric&lt;/a&gt;.
The issue is that by default, the Visual Studio templates and the debugging environment,
use ETW events for diagnostic and logging information. During a debug session it shows a display like:&lt;/p&gt;</description></item><item><title>WcfLib - WCF services, clients, and routers</title><link>https://zbrad.github.io/tools/WcfLib/</link><pubDate>Mon, 19 Oct 2015 00:00:00 -0700</pubDate><guid>https://zbrad.github.io/tools/WcfLib/</guid><description>&lt;p&gt;Describes the &lt;a href="https://github.com/zbrad/WcfLib"&gt;WcfLib&lt;/a&gt; component, for easily creating Wcf services, clients, and routers. These are useful for creating and communicating with WCF services, particularly in Azure environments which require WCF routing capabilities. Available as a (&lt;a href="https://www.nuget.org/packages/ZBrad.WcfLib/"&gt;WcfLib NuGet Library&lt;/a&gt;)&lt;/p&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve been working with a customer who was looking to re-host one of their existing applications in the &lt;a href="https://azure.microsoft.com/en-us/campaigns/service-fabric/"&gt;Microsoft Azure Service Fabric&lt;/a&gt; environment.&lt;/p&gt;
&lt;p&gt;This particular application uses &lt;a href="https://msdn.microsoft.com/en-us/library/ms731082(v=vs.110).aspx"&gt;Windows Communication Foundation (WCF)&lt;/a&gt; framework for communication between clients and services. However when hosting applications in Azure Service Fabric, clients typically do not directly connect to services, but utilize a router or gateway to talk to
the services (see next article on a Fabric router).&lt;/p&gt;</description></item><item><title>How to use the Oxford OCR API with Powershell</title><link>https://zbrad.github.io/tools/how-to-use-oxford-ocr-api-with-powershell/</link><pubDate>Mon, 29 Jun 2015 00:00:00 -0700</pubDate><guid>https://zbrad.github.io/tools/how-to-use-oxford-ocr-api-with-powershell/</guid><description>&lt;p&gt;I recently had a need to use OCR on an existing image, and a teamate suggested using
the new &lt;a href="https://www.projectoxford.ai/doc/general/overview"&gt;Oxford APIs&lt;/a&gt;. This was a result of my afternoon
quick hack, but rolled up into a Powershell cmdlet that could be reused by others.&lt;/p&gt;
&lt;h2 id="setting-up-the-oxford-apis-for-use"&gt;Setting up the Oxford APIs for use&lt;/h2&gt;
&lt;p&gt;To quickly get up to speed, I followed the descriptions &lt;a href="https://www.projectoxford.ai/doc/general/subscription-key-mgmt"&gt;here&lt;/a&gt; which outline the steps as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Select the API you wish to use&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I navigated to &lt;a href="https://www.projectoxford.ai/vision"&gt;Computer Vision APIs&lt;/a&gt; and selected the &amp;ldquo;Sign Up&amp;rdquo; button.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;This will bring up the Azure portal, select the marketplace
&lt;img loading="lazy" src="https://zbrad.github.io/images/psoxford/select-from-marketplace.png"&gt;
you will have to option of naming your service, I chose &lt;em&gt;VisionApi&lt;/em&gt;
&lt;img loading="lazy" src="https://zbrad.github.io/images/psoxford/portal.png"&gt;
The &amp;ldquo;purchase&amp;rdquo; is free, and shows up as an Azure Marketplace offering. (Note that you may need to scroll down the listing of services in the Azure portal.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When you are presented with the &amp;ldquo;dashboard&amp;rdquo; for the marketplace, select the &amp;ldquo;Manage&amp;rdquo; option
&lt;img loading="lazy" src="https://zbrad.github.io/images/psoxford/visionapi_dashboard.png"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You will now see your subscriptions with key information hidden. Select &lt;em&gt;Show&lt;/em&gt; and copy your new &lt;strong&gt;OxfordKey&lt;/strong&gt;.
&lt;img loading="lazy" src="https://zbrad.github.io/images/psoxford/show-key.png"&gt;&lt;/p&gt;
&lt;p&gt;Now that we have the service side setup, we will use the &lt;strong&gt;Oxford.ps1&lt;/strong&gt; script from &lt;a href="https://github.com/zbrad/psoxford"&gt;psoxford&lt;/a&gt;. Easiest way to get this is to clone the repo, which will also get you our test images.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Creating a GitHub Pages blog</title><link>https://zbrad.github.io/tools/creating-a-github-pages-blog/</link><pubDate>Thu, 05 Mar 2015 00:00:00 -0800</pubDate><guid>https://zbrad.github.io/tools/creating-a-github-pages-blog/</guid><description>&lt;p&gt;Steps for successfully setting up a Jekyll blog on Windows hosted by GitHub Pages.&lt;/p&gt;
&lt;h3 id="context"&gt;Context&lt;/h3&gt;
&lt;p&gt;In my new role one of the goals is to communicate more about what we do and how we do it. I&amp;rsquo;ve written web articles and a couple of books in the past but these days the primary communication and sharing vehicle seems to be the technical blog.&lt;/p&gt;
&lt;h3 id="setup"&gt;Setup&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Download Ruby and the Ruby DevKit&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I&amp;rsquo;m running Windows 8.1 64-bit, so I needed to download a 64-bit Ruby distribution. I downloaded the prebuilt &lt;a href="http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.2.1-x64.exe?direct"&gt;Ruby 2.2.1 for x64&lt;/a&gt; from &lt;a href="http://rubyinstaller.org/downloads/"&gt;RubyInstaller for Windows&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Emacs Keys (Emacs Emulator)</title><link>https://zbrad.github.io/tools/EmacsKeys/</link><pubDate>Tue, 24 Feb 2015 00:00:00 -0800</pubDate><guid>https://zbrad.github.io/tools/EmacsKeys/</guid><description>An Emacs key bindings emulator for Visual Studio</description></item></channel></rss>