<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Craig's Blog</title><link>http://www.hrzdata.com:80/blog</link><description>Random Ideas and Projects. Yes, Random.</description><item><title>Trying this again</title><link>http://www.hrzdata.com:80/blog/trying-this-again</link><description>&lt;p&gt;Well, It has been a while since I’ve posted anything… I am going to &lt;strike&gt;try&lt;/strike&gt; do (or do not, there is no try) to get back into the swing of posting something about the random things I’m making, again.&lt;/p&gt;&lt;p&gt;Not much to report at the moment – I did get my laser cutter/engraver (See my messy garage &lt;a href="https://www.youtube.com/watch?v=n6KkMWpoOnE" target="_blank"&gt;here&lt;/a&gt; as I uncrate it) and I really plan on posting some of the stuff from working on that.&amp;nbsp; And I’ve got a couple of IoT projects in the works that I’m playing with… So as long as I can remember to take some pictures and video (and post them) I’ll be doing well!&lt;/p&gt;&lt;p&gt;Here, here, 2017.&lt;/p&gt;</description><pubDate>Thu, 09 Mar 2017 03:59:04 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/blog/trying-this-again</guid></item><item><title>Latest Project - ESP8266 + MQTT</title><link>http://www.hrzdata.com:80/blog/latest-project-ESP8266-MQTT</link><description>&lt;p&gt;It has been quite a while since I have posted anything, so I may as well post about the last project I&amp;rsquo;ve been working on to limber up my fingers some.&lt;/p&gt;
&lt;p&gt;I picked up a couple of NodeMCU ESP8266 boards from &lt;a href="www.amazon.com/gp/product/B010O1G1ES" target="_blank"&gt;Amazon&lt;/a&gt; for about 9$ &amp;ndash; I wasn&amp;rsquo;t 100% sure they would work for what I wanted, but for less than 10$ I was willing to risk it.&lt;/p&gt;
&lt;p&gt;They are designed around the &lt;a href="http://nodemcu.com/index_en.html" target="_blank"&gt;NodeMCU&lt;/a&gt;&amp;nbsp; firmware using Lua to develop IoT applications &amp;ndash; but I have a limited amount of time to learn and re-learn languages and I&amp;rsquo;m pretty familiar with the &lt;a href="http://www.arduino.cc/" target="_blank"&gt;Arduino&lt;/a&gt; environment.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Stepping back a bit&amp;hellip;&lt;/h3&gt;
&lt;p&gt;A few months ago when I was using the environment to program ATTiny85 chips for a &lt;a href="http://www.retrologic.com/jargon/B/blinkenlights.html" target="_blank"&gt;Blinkenlights&lt;/a&gt; art project, I came across the &lt;a href="https://github.com/esp8266/arduino" target="_blank"&gt;Arduino core for ESP8266&lt;/a&gt; and realized that it was pretty close to the point where I could skip talking to the ESP by AT commands or trying to make an old-school &lt;a href="https://github.com/tuanpmt/esp_bridge" target="_blank"&gt;SLIP connection&lt;/a&gt; to the internet through it I could just program it directly&amp;hellip;&lt;/p&gt;
&lt;p&gt;I had a few requirements that I wanted for the project:&lt;/p&gt;
&lt;p&gt;1 - It should start up in Access Point mode and the Wi-Fi should be configurable via a Web Page&lt;/p&gt;
&lt;p&gt;2 &amp;ndash; Once it has been configured, it should still be accessible on the network to see / change it&amp;rsquo;s configuration&lt;/p&gt;
&lt;p&gt;3 &amp;ndash; Use MQTT as my communication protocol between a central server and one or more of my nodes.&lt;/p&gt;
&lt;p&gt;&amp;hellip; &amp;ndash; make it do something interesting,&lt;/p&gt;
&lt;p&gt;#N &amp;ndash; Security &amp;ndash; Really, this shouldn&amp;rsquo;t be an afterthought&lt;/p&gt;
&lt;p&gt;&amp;hellip;But at a certain point I realized that I was concentrating to had on the particular point that I couldn&amp;rsquo;t even get started&amp;hellip; I&amp;rsquo;m probably making a mistake &amp;ndash; but since I don&amp;rsquo;t intend this to be a commercial product or something that I&amp;rsquo;m going to be running a nuclear or medical device on &amp;ndash; that for now, I&amp;rsquo;ll just keep it in mind and make sure that it is addressed as I go.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Birth of a DataMote&amp;hellip;&lt;/h3&gt;
&lt;p&gt;Getting started was interesting &amp;ndash; there were a lot of fits and starts, attempts and test and trying to figure out how to make a web page appear and switch between AP and station Modes and just generally trying to get familiar with the inner workings of the ESP &amp;ndash; but not really making much head way on #&amp;rsquo;s 1 and 2.&lt;/p&gt;
&lt;p&gt;I made some progress in April and May getting the Mote to talk MQTT, but making it easy to use had eluded me and at the time, I couldn&amp;rsquo;t find any good examples on how to start on the path of where I wanted to go.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/CraigTucker/status/593615901892673537"&gt;&lt;img title="image" style="display: inline;" alt="image" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/LatestProject_146FC/image_8.png" border="0" height="411" width="566" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/CraigTucker/status/596134970667769857"&gt;&lt;img title="image" style="display: inline;" alt="image" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/LatestProject_146FC/image_9.png" border="0" height="137" width="574" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;So around the first part of December, I came across a Kickstarter project called &amp;ldquo;&lt;a href="https://www.kickstarter.com/projects/1054187792/the-light-clock" target="_blank"&gt;The Light Clock&lt;/a&gt;&amp;rdquo; that looked pretty awesome, especially since it was based on an ESP8266!&amp;nbsp; Then, as I read up on it a bit more, I found out that the creator of the project, Chris Carter, planned to Open Source the Firmware and this would be an amazing learning opportunity for me to see how a product that actually existed did its thing.&amp;nbsp; Based on that, it gave me ideas on how I might go about figuring out my own path as well.&lt;/p&gt;
&lt;p&gt;The plan for &amp;ldquo;Making it do something interesting&amp;rdquo; has now evolved into making a set of data loggers that will monitor the temperature in several locations about my house and as I have time, finish building the custom lights in my office and making them controllable as well&amp;hellip; it&amp;rsquo;ll give me a number of inputs and outputs and ways of controlling sensors but nothing that is critical to survival.&lt;/p&gt;
&lt;p&gt;So finally, after many fits and starts, I&amp;rsquo;m at a point where I have a lot of the pieces almost ready to start making something interesting and a reason for me to restart posting to this little blog-o-mine.&lt;/p&gt;
&lt;p&gt;
&lt;script type="text/javascript" src="//platform.twitter.com/widgets.js"&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/CraigTucker/status/681699465510711296"&gt;&lt;img title="image" style="display: inline;" alt="image" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/LatestProject_146FC/image_7.png" border="0" height="474" width="577" /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Mon, 11 Jan 2016 04:15:00 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/blog/latest-project-ESP8266-MQTT</guid></item><item><title>New (to me) Bluetooth module (CC2540-A1)</title><link>http://www.hrzdata.com:80/blog/new-to-me-bluetooth-module-cc2540-a1</link><description>&lt;p&gt;Before the last &lt;a href="http://www.meetup.com/Charlotte-Internet-of-Things/events/221176083/" target="_blank"&gt;Charlotte IoT meetup&lt;/a&gt;, which was about building stuff with BLE Beacon, I wanted to experiment some and see if I could get it working before the meeting and I went out and ordered some new toys – complete with a total non-understanding on what I really needed.&amp;nbsp; I have a better idea now that the meetup has happened.&lt;p&gt;In the process, I found this pretty cool looking BLE module on Amazon the other day for 8$ each (of course, it is now out of stock)… &lt;p&gt;&lt;a href="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/NewtomeBluetoothmoduleCC2540A1_14E72/image_4.png"&gt;&lt;img width="1044" height="549" title="image" style="display: inline;" alt="image" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/NewtomeBluetoothmoduleCC2540A1_14E72/image_thumb_1.png" border="0"&gt;&lt;/a&gt;
&lt;p&gt;&lt;br&gt;&lt;p&gt;The Product description was super helpful or at least very technical looking but missed a few details that would be nice – like a link to a datasheet or schematic, or pinout…&lt;p&gt;&lt;br&gt;&lt;p&gt;&lt;a href="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/NewtomeBluetoothmoduleCC2540A1_14E72/image_2.png"&gt;&lt;img width="1044" height="600" title="image" style="display: inline;" alt="image" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/NewtomeBluetoothmoduleCC2540A1_14E72/image_thumb.png" border="0"&gt;&lt;/a&gt;
&lt;p&gt;&lt;br&gt;&lt;p&gt;Eventually I found the company that manufactured it – and the specs are light on their website, too – same as the Amazon page, really… (&lt;a title="http://en.szrfstar.com/product/2/BLEmodule/93.html" href="http://en.szrfstar.com/product/2/BLEmodule/93.html"&gt;http://en.szrfstar.com/product/2/BLEmodule/93.html&lt;/a&gt;)&lt;p&gt;&lt;br&gt;&lt;p&gt;This is fine – I’m used to a minor amount of detail on the Amazon page, but there is almost always a ton of data sheets on the web… except… for… this… module.&lt;p&gt;I spent the better part of a week of random attempts looking for the pinout diagram or a list or SOMETHING so I could figure out how it was supposed to be hooked up.&lt;p&gt;I still haven’t searched for the control details… but I did at least find something of a pinout and some related details from this site: &lt;a href="http://www.cnblogs.com/szsammy/archive/2013/05/14/szsammy.html"&gt;http://www.cnblogs.com/szsammy/archive/2013/05/14/szsammy.html&lt;/a&gt;, which required a bit of translation to read it.&lt;p&gt;&lt;br&gt;&lt;p&gt;&lt;a href="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/NewtomeBluetoothmoduleCC2540A1_14E72/clip_image006_2.jpg"&gt;&lt;img width="660" height="372" title="clip_image006" style="display: inline;" alt="clip_image006" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/NewtomeBluetoothmoduleCC2540A1_14E72/clip_image006_thumb.jpg" border="0"&gt;&lt;/a&gt;&lt;p&gt;&lt;br&gt;&lt;p&gt;That looks pretty close to the original, and it is by the same company – model number matches and the spec look pretty corresponding, so that’s good.&lt;p&gt;&lt;br&gt;&lt;p&gt;&lt;a href="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/NewtomeBluetoothmoduleCC2540A1_14E72/clip_image007_2.jpg"&gt;&lt;img width="334" height="260" title="clip_image007" style="display: inline;" alt="clip_image007" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/NewtomeBluetoothmoduleCC2540A1_14E72/clip_image007_thumb.jpg" border="0"&gt;&lt;/a&gt;&lt;p&gt;&lt;br&gt;&lt;p&gt;We have a pinout from the site… it has most of our numbers in here, looks sane as well.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;&lt;b&gt;Pin Number&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;&lt;b&gt;&amp;nbsp; Pin Name&amp;nbsp;&amp;nbsp; &lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;VCC&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;2-3.6V power supply&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;GND&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Power Ground&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P2.2&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P2.1&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;5&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P2.0&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;6&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P1.7&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;7&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P1.6&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;8&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;U-N&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;USB&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;9&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;U-P&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;USB&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;10&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P1.5&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;11&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P1.4&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;12&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P1.3&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;13&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P1.2&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;14&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P1.1&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;15&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P1.0&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;16&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P0.7&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;17&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P0.6&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;18&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P0.5&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;19&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P0.4&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;20&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P0.3&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O TXD&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;21&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P0.2&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O RXD&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;22&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P0.1&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;23&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P0.0&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;24&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;RESET-N&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Low reset&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;25&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;GND&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Power Ground&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;A1&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;GND&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Power Ground&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;A2&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;VCC&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;2-3.6V power supply&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;A3&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P2.2&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O,DD&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;A4&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;P2.1&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Digital I/O,DC&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom"&gt;&lt;p&gt;A5&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;RES&lt;/p&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;&lt;p&gt;Low reset&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;So far, I have checked continuity on the Ground and VCC pins, and they check out as expected.&lt;p&gt;Next up, solder some wires on and see if I can get a connection… and maybe even some data.&lt;p&gt;&lt;br&gt;&lt;p&gt;I’ll update here as I have more info</description><pubDate>Sat, 11 Apr 2015 03:47:28 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/blog/new-to-me-bluetooth-module-cc2540-a1</guid></item><item><title>Temperature controlled cooling system (Part 1 – The Plan)</title><link>http://www.hrzdata.com:80/blog/temperature-controlled-cooling-system-part-1-%E2%80%93-the-plan</link><description>&lt;p&gt;A good friend of mine has built an pretty awesome custom desk for his office.&amp;nbsp; His desktop has a nice spot, behind a glass door in the desk.&amp;nbsp; The only problem is that it gets warm in there when the desktop is running.&amp;nbsp; He built a pair of fans with filters into the desk to cool the area where the desktop lives – but has to remember to turn them on when he turns the PC on.&lt;/p&gt;&lt;p&gt;We talked a bit and have in the end, he basically only needs a sensor that can track how warm the storage area is verses the room temperature and based on the difference, turns on the fans at varying speeds to cool the desktop.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;I would also like to have at least some kind of indicator light to let me know what the controller thinks it is doing – so I plan to use a Red/Blue two color LED as my indicator and progress &lt;/p&gt;&lt;p&gt;To start with, I’ve broken out the ranges like this&lt;/p&gt;&lt;table width="278" style="width: 209pt; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0"&gt;

 &lt;colgroup&gt;&lt;col width="73" style="width: 55pt; mso-width-source: userset; mso-width-alt: 2669;"&gt;
 &lt;col width="71" style="width: 53pt; mso-width-source: userset; mso-width-alt: 2596;"&gt;
 &lt;col width="134" style="width: 101pt; mso-width-source: userset; mso-width-alt: 4900;"&gt;
 &lt;tbody&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;
  &lt;td width="73" height="21" class="xl74" style="width: 55pt; height: 15.75pt;"&gt;Difference&lt;/td&gt;
  &lt;td width="71" class="xl75" style="width: 53pt; border-left-color: currentcolor; border-left-width: medium; border-left-style: none;"&gt;Fan Speed&lt;/td&gt;
  &lt;td width="134" class="xl76" style="width: 101pt; border-left-color: currentcolor; border-left-width: medium; border-left-style: none;"&gt;Indicator&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr height="20" style="height: 15pt;"&gt;
  &lt;td height="20" class="xl71" style="height: 15pt;"&gt;&amp;lt; 2°C&lt;/td&gt;
  &lt;td class="xl72" style="border-left-color: currentcolor; border-left-width: medium; border-left-style: none;"&gt;OFF&lt;/td&gt;
  &lt;td class="xl73" style="border-left-color: currentcolor; border-left-width: medium; border-left-style: none;"&gt;NO LED&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr height="20" style="height: 15pt;"&gt;
  &lt;td height="20" class="xl66" style="height: 15pt; border-top-color: currentcolor; border-top-width: medium; border-top-style: none;"&gt;&amp;lt; 4°C&lt;/td&gt;
  &lt;td class="xl65" style="border-top-color: currentcolor; border-left-color: currentcolor; border-top-width: medium; border-left-width: medium; border-top-style: none; border-left-style: none;"&gt;25%&lt;/td&gt;
  &lt;td class="xl67" style="border-top-color: currentcolor; border-left-color: currentcolor; border-top-width: medium; border-left-width: medium; border-top-style: none; border-left-style: none;"&gt;100% BLUE&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr height="20" style="height: 15pt;"&gt;
  &lt;td height="20" class="xl66" style="height: 15pt; border-top-color: currentcolor; border-top-width: medium; border-top-style: none;"&gt;&amp;lt; 8°C&lt;/td&gt;
  &lt;td class="xl65" style="border-top-color: currentcolor; border-left-color: currentcolor; border-top-width: medium; border-left-width: medium; border-top-style: none; border-left-style: none;"&gt;50%&lt;/td&gt;
  &lt;td class="xl67" style="border-top-color: currentcolor; border-left-color: currentcolor; border-top-width: medium; border-left-width: medium; border-top-style: none; border-left-style: none;"&gt;50% / 50% BLUE/RED&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr height="20" style="height: 15pt;"&gt;
  &lt;td height="20" class="xl66" style="height: 15pt; border-top-color: currentcolor; border-top-width: medium; border-top-style: none;"&gt;&amp;lt; 10°C&lt;/td&gt;
  &lt;td class="xl65" style="border-top-color: currentcolor; border-left-color: currentcolor; border-top-width: medium; border-left-width: medium; border-top-style: none; border-left-style: none;"&gt;75%&lt;/td&gt;
  &lt;td class="xl67" style="border-top-color: currentcolor; border-left-color: currentcolor; border-top-width: medium; border-left-width: medium; border-top-style: none; border-left-style: none;"&gt;25% / 75% BLUE/RED&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr height="21" style="height: 15.75pt;"&gt;
  &lt;td height="21" class="xl68" style="height: 15.75pt; border-top-color: currentcolor; border-top-width: medium; border-top-style: none;"&gt;10°C +&lt;/td&gt;
  &lt;td class="xl69" style="border-top-color: currentcolor; border-left-color: currentcolor; border-top-width: medium; border-left-width: medium; border-top-style: none; border-left-style: none;"&gt;100%&lt;/td&gt;
  &lt;td class="xl70" style="border-top-color: currentcolor; border-left-color: currentcolor; border-top-width: medium; border-left-width: medium; border-top-style: none; border-left-style: none;"&gt;100% RED&lt;/td&gt;
 &lt;/tr&gt;

&lt;/tbody&gt;&lt;/table&gt;




&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;It’ll take some testing to see if these speed and temperature actually work or not…. but I can at least get him something to test.&lt;/p&gt;&lt;p&gt;Here’s a little demo video of the prototype working… &lt;/p&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:88e51124-b519-490c-a97d-eb351887a656" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;&lt;div id="a955caf8-a183-4795-af84-6d92449873a0" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=7idI6327Jpg&amp;amp;feature=youtube_gdata_player" target="_new"&gt;&lt;img src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/TemperaturecontrolledcoolingsystemPart1T_15090/videoe9ea670ae51e.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('a955caf8-a183-4795-af84-6d92449873a0'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/7idI6327Jpg&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/7idI6327Jpg&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Next will be to make some decisions on how I want the displays to work and how much more complicated it will get…&lt;/p&gt;</description><pubDate>Thu, 29 Jan 2015 04:56:06 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/blog/temperature-controlled-cooling-system-part-1-%E2%80%93-the-plan</guid></item><item><title>I Made a Lighting Thing</title><link>http://www.hrzdata.com:80/blog/i-made-a-lighting-thing</link><description>&lt;p&gt;I decided to organize my office some… one day I’ll ‘finish’ it, but for now, I’ll consider it cleaner than it was…&lt;/p&gt;&lt;p&gt;After I moved a few things around, I realized that the shelf that I put my small lamp on was now missing – along with my current source of ambient, but not blinding, light.&lt;/p&gt;&lt;p&gt;After staring at the ceiling and the wall and trying to figure out what I could put in the old lamp’s place, preferably without putting any holes in the wall, I came upon a thought, I have a 3D Printer and I could print some fixtures that would hang on the wires of my (entirely too hot for use in the summer, but toasty in the winter) Halogen lighting.&amp;nbsp; It would give me at least as much light as I was getting out of the little 15W fluorescent fixture I had on the desk and, even better, an excuse to design and print something…&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;First, measure and a sketch… After the initial design, I realized it was just a bit too wide to fit on the printer in one piece.&amp;nbsp; I had to make my first modification – a symmetrical split in the center so I could print two bolt it together…&amp;nbsp; &lt;/p&gt;&lt;p&gt;Perhaps later I’ll make a 5th version that snaps together without the bolt, but in this case, I just print two, flip one over and bolt them together.&amp;nbsp; There isn’t a specific left/right print that has to be made, so I do like that aspect (and I have plenty of 10mm M3 bolts).&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/IMadeaLightingThing_13C36/WP_20150105_22_05_26_Raw_2.jpg"&gt;&lt;img width="365" height="207" title="WP_20150105_22_05_26_Raw" style="display: inline;" alt="WP_20150105_22_05_26_Raw" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/IMadeaLightingThing_13C36/WP_20150105_22_05_26_Raw_thumb.jpg" border="0"&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;First Print, everything fit – mostly… the radius in the center was a bit large.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/IMadeaLightingThing_13C36/WP_20150105_06_58_52_Raw_2.jpg"&gt;&lt;img width="367" height="209" title="WP_20150105_06_58_52_Raw" style="display: inline;" alt="WP_20150105_06_58_52_Raw" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/IMadeaLightingThing_13C36/WP_20150105_06_58_52_Raw_thumb.jpg" border="0"&gt;&lt;/a&gt;
&lt;a href="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/IMadeaLightingThing_13C36/WP_20150105_06_59_04_Raw_2.jpg"&gt;&lt;img width="370" height="210" title="WP_20150105_06_59_04_Raw" style="display: inline;" alt="WP_20150105_06_59_04_Raw" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/IMadeaLightingThing_13C36/WP_20150105_06_59_04_Raw_thumb.jpg" border="0"&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;So I updated and made a few more revs and then had a final print…&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/IMadeaLightingThing_13C36/WP_20150105_21_53_39_Raw_2.jpg"&gt;&lt;img width="664" height="376" title="WP_20150105_21_53_39_Raw" style="display: inline;" alt="WP_20150105_21_53_39_Raw" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/IMadeaLightingThing_13C36/WP_20150105_21_53_39_Raw_thumb.jpg" border="0"&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;Once I had the final design ready and they were printing, I worked to get the light fixture itself together.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;For this I started with a ‘light sticks’ (for lack of a better word) that I had previously made&amp;nbsp; to use on my camper in the fall – basically 1 Meter of 1 1/4” PVC pipe, cut in half length-wise and then I add in a strip of White LEDs down the middle – works great for camping or when I need some temporary 12v lighting.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;For this, it wasn’t quite bright enough – so I added two more meters of LED strip I had around (3M total, about 1.2A draw @ 12V).&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/IMadeaLightingThing_13C36/WP_20150105_21_40_17_Raw_2.jpg"&gt;&lt;img width="715" height="404" title="WP_20150105_21_40_17_Raw" style="display: inline;" alt="WP_20150105_21_40_17_Raw" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/IMadeaLightingThing_13C36/WP_20150105_21_40_17_Raw_thumb.jpg" border="0"&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;So, Finally we get this too-high contrast shot… it is pretty bright – a bit brighter than the Fluorescent fixture it replaced at a slightly higher current draw, but no flickering and slow turn on and warm up time…&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/IMadeaLightingThing_13C36/WP_20150105_21_52_36_Raw_2.jpg"&gt;&lt;img width="716" height="434" title="WP_20150105_21_52_36_Raw" style="display: inline;" alt="WP_20150105_21_52_36_Raw" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/IMadeaLightingThing_13C36/WP_20150105_21_52_36_Raw_thumb.jpg" border="0"&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 06 Jan 2015 03:29:20 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/blog/i-made-a-lighting-thing</guid></item><item><title>Spark Core, First Connections</title><link>http://www.hrzdata.com:80/blog/spark-core-first-connections</link><description>&lt;p&gt;I decided to just jump right into getting the &lt;a href="https://www.spark.io/" target="_blank"&gt;Spark&lt;/a&gt; Core up and running &amp;ndash; and hit my first snag, for my Smartphone, I use a Lumia 1520 &amp;ndash; Windows Phone based, not Android or Apple&amp;hellip; so the provided app for easy configuration isn&amp;rsquo;t available to me.&lt;/p&gt;
&lt;p&gt;I happened to have an older Android tablet that I got to test things out and possibly use for a touch display on another project.&amp;nbsp; It finally came in handy for me and I was able to load the app onto it.&amp;nbsp; It took a few tries for me to get connected to the Spark Core and claim it &amp;ndash; I actually started down the path of doing it manually &amp;ndash; but decided to give it one more try.&amp;nbsp; I essentially had to sit the tablet right on top of the Spark &amp;ndash; but I Finally got a connection and was able to claim it and get access from the cloud.&lt;/p&gt;
&lt;p&gt;So the first thing I wanted to do is figure out if the &lt;a href="http://www.amazon.com/gp/product/B00LB2G3T8" target="_blank"&gt;WS2812B LED modules&lt;/a&gt; that are supposed to be NeoPixel compatible really are.&amp;nbsp; &lt;a href="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/SparkCoreFirstConnections_12245/WP_20141203_23_23_37_Raw_2.png" data-lightbox="image-1"&gt;&lt;img width="252" height="167" title="WP_20141203_23_23_37_Raw" align="right" style="margin: 0px 0px 0px 10px; display: inline;" alt="WP_20141203_23_23_37_Raw" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/SparkCoreFirstConnections_12245/WP_20141203_23_23_37_Raw_thumb.png" border="0" /&gt;&lt;/a&gt; I wired up a couple, hooked them up to the Spark, added in the NeoPixel library and tested one of the examples&amp;hellip; my first &amp;ldquo;Hello World&amp;rdquo; test was successful! Happy Chair Dance commenced...&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;So now that I was reasonably sure I could make things work, it was time to spend a while wiring up another few pixels and see if I could make this thing do a bit dancing and singing.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Controlling this whole setup via the Spark.IO cloud.&amp;nbsp; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I did have to fight just a bit with how to call a function from the web&amp;hellip; then I read the fine manual and realized that it worked just like I should have expected it to &amp;ndash; set what I'm expecting in the configuration and be prepared to use the method when it is fired off by posting to a URL.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I did the initial wiring of the remaining pixels... ah, rosin in the air...&amp;nbsp; Then played around a bit with the code editor and setup a bit of functionality that worked to take a number coming from the test URL to the Core, parse the number and then command the LEDs to go to one of 5 lighting modes. Off, Wipe Red/Blue/Green/White or an animated rainbow&amp;hellip; worked like a champ!&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;After wiring the pixels all together and testing a bit,&lt;a href="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/SparkCoreFirstConnections_12245/1Gross_PingPongBalls_2.png"&gt;&lt;img width="253" height="202" title="1Gross_PingPongBalls" align="left" style="margin: 0px 15px 0px 0px; display: inline;" alt="1Gross_PingPongBalls" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/SparkCoreFirstConnections_12245/1Gross_PingPongBalls_thumb.png" border="0" /&gt;&lt;/a&gt; I realized that the light they produce is so directional that if you aren&amp;rsquo;t staring right at the LED module, you can only barely see it&amp;hellip; but if you are staring right into it, it is blinding &amp;ndash; I needed something to diffuse the light and make it more interesting.&lt;/p&gt;
&lt;p&gt;It occurred to me that I could use a ping pong ball to accomplish this &amp;ndash; but I was going to need quite a few &amp;ndash; and most of the ones locally have logos or were rather more expensive that I wanted to pay for them.&amp;nbsp; A quick visit to Amazon and a couple of days&amp;rsquo; wait, I had a gross of unmarked practice ping-pong balls sitting on my desk.&amp;nbsp; They didn&amp;rsquo;t rate well for playing ping-pong, but were great for crafts&amp;hellip; this little project is definitely more &amp;lsquo;craft&amp;rsquo; than &amp;lsquo;sport&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;I also have figured out what I&amp;rsquo;m going to do with 80 of the remaining WS2812B modules and the ping-pong balls&amp;hellip; that story to be continued :)&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I used my nippers to make a small hole in the back of the ball and then tucked the pixel into the hole and used the &amp;lsquo;flaps&amp;rsquo; to hold things in.&amp;nbsp; When I powered it up again, it was a HUGE difference in the quality of the color...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/SparkCoreFirstConnections_12245/WorkArea_2.png"&gt;&lt;img width="644" height="364" title="WorkArea" style="display: inline;" alt="WorkArea" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/SparkCoreFirstConnections_12245/WorkArea_thumb.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I was able to run a few quick tests with the pixels and the new diffusers &amp;ndash; and overall, they seemed to do the job just like I wanted.&amp;nbsp; Now that I have the all of the pieces and I&amp;rsquo;m pretty sure they work, I&amp;rsquo;m going to try working through the code and making this do a bit more&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/SparkCoreFirstConnections_12245/LEDRotatingRainbow_2.png"&gt;&lt;img width="160" height="244" title="LEDRotatingRainbow" style="display: inline;" alt="LEDRotatingRainbow" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/SparkCoreFirstConnections_12245/LEDRotatingRainbow_thumb.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I even made a shaky freehand video with some odd focus issues to show it off&amp;hellip;&amp;nbsp; I&amp;rsquo;ll work on that part&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;iframe width="560" height="315" src="//www.youtube.com/embed/EHHrbEYsPVo" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/p&gt;</description><pubDate>Sun, 14 Dec 2014 02:11:00 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/blog/spark-core-first-connections</guid></item><item><title>Spark Core</title><link>http://www.hrzdata.com:80/blog/spark-core</link><description>&lt;p&gt;&lt;a href="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/Spark.ioCore_1255B/20141203_20_06_37_SparkIO_2.png" target="_blank"&gt;&lt;img width="201" height="256" title="20141203_20_06_37_SparkIO" align="left" style="margin: 0px 10px 10px; border: 0px currentcolor; display: inline;" alt="20141203_20_06_37_SparkIO" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/Spark.ioCore_1255B/20141203_20_06_37_SparkIO_thumb.png" border="0" /&gt;&lt;/a&gt;At last nights &lt;a href="http://www.meetup.com/Charlotte-Internet-of-Things/" target="_blank"&gt;Charlotte IoT&lt;/a&gt; meetup, we had the opportunity to present some ideas that we&amp;rsquo;d like to build for an opportunity to receive a Spark.IO Core&amp;hellip;&lt;/p&gt;
&lt;p&gt;I had recently purchased some addressable LEDs without any real destination in mind, it is Christmas-time, so I proposed to build a set of smart lights&amp;hellip; I had already intended to build something similar with an Arduino and an &lt;a href="http://www.amazon.com/gp/product/B00OSWG52I" target="_blank"&gt;ESP8266 Serial WiFi&lt;/a&gt; module &amp;ndash; but after looking at the Spark.IO site and some examples (and the demo from the first Charlotte IoT meetup) this seemed like a lot easier first step to work on.&lt;/p&gt;
&lt;p&gt;Obviously, my Idea got some traction (or at least I got into the pool early enough :] ) so I ended up receiving one of the Core boards to play with and document my progress.&lt;a href="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/Spark.ioCore_1255B/WP_20141203_20_28_52_WS2812B_2.png" target="_blank"&gt;&lt;img width="252" height="159" title="WP_20141203_20_28_52_WS2812B" align="right" style="border-width: 0px; margin: 10px; display: inline;" alt="WP_20141203_20_28_52_WS2812B" src="http://www.hrzdata.com/Media/Default/WindowsLiveWriter/Spark.ioCore_1255B/WP_20141203_20_28_52_WS2812B_thumb.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The LED modules are based on &lt;a href="http://www.amazon.com/gp/product/B00LB2G3T8" target="_blank"&gt;WS2812B 5050 LED chips.&lt;/a&gt;&amp;nbsp; I found some on Amazon and with shipping I got 100 modules on mini-pcbs for about 24$ &amp;ndash; these are supposed to be the same, functionally, as the &lt;a href="http://www.adafruit.com/category/168" target="_blank"&gt;NeoPixels&lt;/a&gt; from Adafruit. I&amp;rsquo;m hoping that they are compatible at roughly 1/2 the price&amp;hellip; albeit with some assembly required.&lt;/p&gt;</description><pubDate>Thu, 04 Dec 2014 01:51:00 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/blog/spark-core</guid></item><item><title>Bringing the new site online…</title><link>http://www.hrzdata.com:80/blog/bringing-the-new-site-online%E2%80%A6</link><description>&lt;p&gt;&lt;a href="http://localhost:24255/Media/Default/WindowsLiveWriter/Bringingthenewsiteonline_14F46/10338277_802164419849630_8282458919712286748_n_2.jpg"&gt;&lt;img title="10338277_802164419849630_8282458919712286748_n" style="margin-left: 0px; display: inline; margin-right: 0px; border-width: 0px;" border="0" alt="10338277_802164419849630_8282458919712286748_n" src="/Media/Default/WindowsLiveWriter/Bringingthenewsiteonline_14F46/10338277_802164419849630_8282458919712286748_n_thumb.jpg" width="253" align="right" height="207" /&gt;&lt;/a&gt;It has been a while since I posted, and a lot has happened since the last post &amp;ndash; I changed jobs, rebuilt my home office, worked two more Renaissance Festivals, developing an entirely new character and building all the tools for him &amp;ndash; all-in-all, it has been crazy.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;BUT, here I am finally setting up a new site and hopefully, posting more than once every two years.&lt;/p&gt;</description><pubDate>Mon, 01 Dec 2014 04:50:00 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/blog/bringing-the-new-site-online%E2%80%A6</guid></item><item><title>Reading an RFID tag using a Wiegand Encoded RFID Reader</title><link>http://www.hrzdata.com:80/node/60</link><description>&lt;p&gt;A while back I bought a couple of RFID readers from &lt;a href="http://www.seeedstudio.com" target="_blank"&gt;SeeedStudios&lt;/a&gt; &amp;ndash; it was actually the first (of many) things that I picked up from there.&lt;/p&gt;
&lt;p&gt;Right after I got the readers, I hooked one up to my Arduino, downloaded the test library that Seeed provided and got it to read some cards&amp;hellip; then put it in a box with the intent of making something work, soon.&lt;/p&gt;
&lt;p&gt;It took me a couple of years to get back to it &amp;ndash; and the Netduino was my excuse&amp;hellip; well, that and thinking about redoing the opener on my Garage door to add a door position monitor, temperature checking and possibly an RFID reader embedded in a secret location to open the door from the outside.&lt;/p&gt;
&lt;p&gt;I decided to start with the Reader &amp;ndash; since it would likely be the most difficult part. It took me a few hours &amp;ndash; but turned out to be a great way for me to learn a bit more about how to develop for the Netduino.&lt;/p&gt;
&lt;p&gt;It took some research for me to track down the documentation on the reader. But Seeed was very nice to still have a wiki page with the data for the reader: &lt;a href="http://www.seeedstudio.com/wiki/125Khz_RFID_module_-_Wiegand" target="_blank"&gt;125Khz RFID Module &amp;ndash; Wiegand&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not quite sure what possessed me when I bought it, but instead of getting the serial port version, I got the version with the Wiegand encoded output&amp;hellip;. I&amp;rsquo;m guess it was because the Wiegand format has greater range between the reader and the board... or something like that&amp;hellip;&lt;/p&gt;
&lt;p&gt;However, it did give me a good challenge to read the codes and learn some of the advance bits of the Netduino.&lt;/p&gt;
&lt;p&gt;Very long story shortened quite a bit&amp;hellip; Maybe I&amp;rsquo;ll fill this in more later.&lt;/p&gt;
&lt;p&gt;&lt;iframe width="319" height="280" src="https://skydrive.live.com/embed?cid=A5EA9978E4F60561&amp;amp;resid=A5EA9978E4F60561%212173&amp;amp;authkey=AIOi64EVLLhGIaQ" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;I really need a logic analyzer &amp;ndash; it would have made figuring some of this out a lot easier. I started with a poor man&amp;rsquo;s logic analyzer and hooked up the outputs of the reader to my Netduino:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;RFID -&amp;gt; Netduino GPIO&lt;br /&gt; -----------------------------------------------&lt;br /&gt; PORT3 &amp;ndash; LED -&amp;gt; D2&lt;br /&gt; PORT1-DATA0 -&amp;gt; D3&lt;br /&gt; PORT1-DATA1 -&amp;gt; D4&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;+5 &amp;amp; GND&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;First, I setup some interrupt pins and raised events as the data came in &amp;ndash; and was able to pretty quickly make the inputs correspond to the datasheet.&lt;/p&gt;
&lt;p&gt;Once I had the interrupt events working, I was able to build out the logic to decode the incoming bits and with some bit manipulation, I was able to get the value for the code printed on the tokens to appear on my Debugger console. (YEA!)&lt;/p&gt;
&lt;p&gt;I incorporated all of the logic for the reader into a library that I can use for other stuff &amp;ndash; again, good practice for using the Netduino.&lt;/p&gt;
&lt;p&gt;There is still some work to do &amp;ndash; I&amp;rsquo;m not checking the parity of the values yet.&amp;nbsp; But it should be pretty complete for reading and decoding the Wiegand formatted data. (As long as it is the 26 bit variety)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Here is the library for reading and decoding the value:&lt;/strong&gt;&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; Microsoft.SPOT;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; Microsoft.SPOT.Hardware;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; CraigTuckerLibs.Hardware&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;/// Encapsulates the RFID Reader logic&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; RFIDReader&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;event&lt;/span&gt; NativeEventHandler OnCodeRead;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt; BufferBitCount = 0;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; CardValue = 0;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// Setup the RFIDReader for use&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; RFIDReader(Cpu.Pin CardReadPin, Cpu.Pin Data0Pin, Cpu.Pin Data1Pin)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;// the card read flag is triggered for each bit that is sent across to be read.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;             InterruptPort cardRead = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; InterruptPort(CardReadPin, &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;, Port.ResistorMode.Disabled, Port.InterruptMode.InterruptEdgeLow);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt;             &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt;  30:&lt;/span&gt;             cardRead.OnInterrupt += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; NativeEventHandler(cardRead_OnInterrupt);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt;  31:&lt;/span&gt;             &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum32" style="color: #606060;"&gt;  32:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;// setup input bit ports&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum33" style="color: #606060;"&gt;  33:&lt;/span&gt;             InterruptPort Data0 = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; InterruptPort(Data0Pin, &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;, Port.ResistorMode.Disabled, Port.InterruptMode.InterruptEdgeHigh);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum34" style="color: #606060;"&gt;  34:&lt;/span&gt;             InterruptPort Data1 = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; InterruptPort(Data1Pin, &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;, Port.ResistorMode.Disabled, Port.InterruptMode.InterruptEdgeHigh);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum35" style="color: #606060;"&gt;  35:&lt;/span&gt;             &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum36" style="color: #606060;"&gt;  36:&lt;/span&gt;             Data0.OnInterrupt += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; NativeEventHandler(Data0_OnInterrupt);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum37" style="color: #606060;"&gt;  37:&lt;/span&gt;             Data1.OnInterrupt += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; NativeEventHandler(Data1_OnInterrupt);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum38" style="color: #606060;"&gt;  38:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum39" style="color: #606060;"&gt;  39:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum40" style="color: #606060;"&gt;  40:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum41" style="color: #606060;"&gt;  41:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum42" style="color: #606060;"&gt;  42:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum43" style="color: #606060;"&gt;  43:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// Handles the Data1 pin event&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum44" style="color: #606060;"&gt;  44:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum45" style="color: #606060;"&gt;  45:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum46" style="color: #606060;"&gt;  46:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Data1_OnInterrupt(&lt;span style="color: #0000ff;"&gt;uint&lt;/span&gt; data1, &lt;span style="color: #0000ff;"&gt;uint&lt;/span&gt; data2, DateTime time)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum47" style="color: #606060;"&gt;  47:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum48" style="color: #606060;"&gt;  48:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;// adds a '1' to the end of the current buffer&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum49" style="color: #606060;"&gt;  49:&lt;/span&gt;             AddBit(&lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum50" style="color: #606060;"&gt;  50:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum51" style="color: #606060;"&gt;  51:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum52" style="color: #606060;"&gt;  52:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum53" style="color: #606060;"&gt;  53:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum54" style="color: #606060;"&gt;  54:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// Handles the Data0 pin event&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum55" style="color: #606060;"&gt;  55:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum56" style="color: #606060;"&gt;  56:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum57" style="color: #606060;"&gt;  57:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Data0_OnInterrupt(&lt;span style="color: #0000ff;"&gt;uint&lt;/span&gt; data1, &lt;span style="color: #0000ff;"&gt;uint&lt;/span&gt; data2, DateTime time)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum58" style="color: #606060;"&gt;  58:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum59" style="color: #606060;"&gt;  59:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;// adds a '0' to the end of the current buffer&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum60" style="color: #606060;"&gt;  60:&lt;/span&gt;             AddBit(&lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum61" style="color: #606060;"&gt;  61:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum62" style="color: #606060;"&gt;  62:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum63" style="color: #606060;"&gt;  63:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum64" style="color: #606060;"&gt;  64:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum65" style="color: #606060;"&gt;  65:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum66" style="color: #606060;"&gt;  66:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum67" style="color: #606060;"&gt;  67:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// Adds the next bit to the currently read code.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum68" style="color: #606060;"&gt;  68:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum69" style="color: #606060;"&gt;  69:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum70" style="color: #606060;"&gt;  70:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; AddBit(&lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt; flag)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum71" style="color: #606060;"&gt;  71:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum72" style="color: #606060;"&gt;  72:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//00 - start bit&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum73" style="color: #606060;"&gt;  73:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//01 - data bit&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum74" style="color: #606060;"&gt;  74:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//... - ...&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum75" style="color: #606060;"&gt;  75:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//24 - data bit&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum76" style="color: #606060;"&gt;  76:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//25 stop bit&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum77" style="color: #606060;"&gt;  77:&lt;/span&gt;                         &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum78" style="color: #606060;"&gt;  78:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;// Read in the bit and process it&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum79" style="color: #606060;"&gt;  79:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;// ========================================&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum80" style="color: #606060;"&gt;  80:&lt;/span&gt;             &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum81" style="color: #606060;"&gt;  81:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;// shift the card value up one position&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum82" style="color: #606060;"&gt;  82:&lt;/span&gt;             CardValue = CardValue &amp;lt;&amp;lt; 1;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum83" style="color: #606060;"&gt;  83:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum84" style="color: #606060;"&gt;  84:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;// append the specified bit to the end&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum85" style="color: #606060;"&gt;  85:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (flag)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum86" style="color: #606060;"&gt;  86:&lt;/span&gt;             {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum87" style="color: #606060;"&gt;  87:&lt;/span&gt;                 CardValue += 1;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum88" style="color: #606060;"&gt;  88:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum89" style="color: #606060;"&gt;  89:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum90" style="color: #606060;"&gt;  90:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;// increment the counter we are using to keep track of the the buffer position&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum91" style="color: #606060;"&gt;  91:&lt;/span&gt;             BufferBitCount++;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum92" style="color: #606060;"&gt;  92:&lt;/span&gt;             &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum93" style="color: #606060;"&gt;  93:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;// this is the stop bit - need to process and verify what has been read&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum94" style="color: #606060;"&gt;  94:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (BufferBitCount == 26)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum95" style="color: #606060;"&gt;  95:&lt;/span&gt;             {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum96" style="color: #606060;"&gt;  96:&lt;/span&gt;                 &lt;span style="color: #008000;"&gt;// for later use, pull off the upper and lower parity values&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum97" style="color: #606060;"&gt;  97:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt; lowerParity = (CardValue &amp;amp; 0x1) &amp;gt; 0;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum98" style="color: #606060;"&gt;  98:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt; upperParity = (CardValue &amp;amp; 0x4000000) &amp;gt; 0;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum99" style="color: #606060;"&gt;  99:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum100" style="color: #606060;"&gt; 100:&lt;/span&gt;                 &lt;span style="color: #008000;"&gt;//TODO: Read the upper and lower bytes and verify the parity is correct:&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum101" style="color: #606060;"&gt; 101:&lt;/span&gt;                 &lt;span style="color: #008000;"&gt;// BASIC BREAKDOWN  : First 12 bits are checked against first Even Parity bit (Position 0)&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum102" style="color: #606060;"&gt; 102:&lt;/span&gt;                 &lt;span style="color: #008000;"&gt;//                    Second 12 bits are checked agains the last Odd Parity bit (Position 25)&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum103" style="color: #606060;"&gt; 103:&lt;/span&gt;                 &lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum104" style="color: #606060;"&gt; 104:&lt;/span&gt; &lt;span style="color: #008000;"&gt;                bit    0    1    2    3    4    5    6    7    8    9    10    11    12    13    14    15    16    17    18    19    20    21    22    23    24    25&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum105" style="color: #606060;"&gt; 105:&lt;/span&gt; &lt;span style="color: #008000;"&gt;                 -    P-EVEN                                                                                              P-ODD&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum106" style="color: #606060;"&gt; 106:&lt;/span&gt; &lt;span style="color: #008000;"&gt;                 -  P   E   E   E   E   E   E   E   E   E   E   E   E   O   O   O   O   O   O   O   O   O   O   O   O   P&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum107" style="color: #606060;"&gt; 107:&lt;/span&gt; &lt;span style="color: #008000;"&gt;                 */&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum108" style="color: #606060;"&gt; 108:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum109" style="color: #606060;"&gt; 109:&lt;/span&gt;                 &lt;span style="color: #008000;"&gt;// finally, shift off the last parity bit then masks out the remainder to get the actual serial # value&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum110" style="color: #606060;"&gt; 110:&lt;/span&gt;                 UInt32 serialNumber = (UInt32)((CardValue &amp;gt;&amp;gt; 1) &amp;amp; 0xFFFFFF); &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum111" style="color: #606060;"&gt; 111:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum112" style="color: #606060;"&gt; 112:&lt;/span&gt;                 &lt;span style="color: #008000;"&gt;// reset the buffer values, just in case the CardRead event doesn't fire as expected&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum113" style="color: #606060;"&gt; 113:&lt;/span&gt;                 BufferBitCount = 0;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum114" style="color: #606060;"&gt; 114:&lt;/span&gt;                 CardValue = 0;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum115" style="color: #606060;"&gt; 115:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum116" style="color: #606060;"&gt; 116:&lt;/span&gt;                 &lt;span style="color: #008000;"&gt;// raise the Code Read event - we can assume we have a successful read.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum117" style="color: #606060;"&gt; 117:&lt;/span&gt;                 InvokeOnCodeRead(0, serialNumber, DateTime.Now);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum118" style="color: #606060;"&gt; 118:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum119" style="color: #606060;"&gt; 119:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum120" style="color: #606060;"&gt; 120:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum121" style="color: #606060;"&gt; 121:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum122" style="color: #606060;"&gt; 122:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum123" style="color: #606060;"&gt; 123:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum124" style="color: #606060;"&gt; 124:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// Handles the Card Read Event&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum125" style="color: #606060;"&gt; 125:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum126" style="color: #606060;"&gt; 126:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum127" style="color: #606060;"&gt; 127:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; cardRead_OnInterrupt(&lt;span style="color: #0000ff;"&gt;uint&lt;/span&gt; data1, &lt;span style="color: #0000ff;"&gt;uint&lt;/span&gt; data2, DateTime time)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum128" style="color: #606060;"&gt; 128:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum129" style="color: #606060;"&gt; 129:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;// assume that if this happens, we are starting a new read, reset any existing&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum130" style="color: #606060;"&gt; 130:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;// processing that is going on.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum131" style="color: #606060;"&gt; 131:&lt;/span&gt;             BufferBitCount = 0;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum132" style="color: #606060;"&gt; 132:&lt;/span&gt;             CardValue = 0;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum133" style="color: #606060;"&gt; 133:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum134" style="color: #606060;"&gt; 134:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum135" style="color: #606060;"&gt; 135:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum136" style="color: #606060;"&gt; 136:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum137" style="color: #606060;"&gt; 137:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum138" style="color: #606060;"&gt; 138:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum139" style="color: #606060;"&gt; 139:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// Raises the event when a new code has been read.  Data2 will contain&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum140" style="color: #606060;"&gt; 140:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// the value that was found by the reader&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum141" style="color: #606060;"&gt; 141:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum142" style="color: #606060;"&gt; 142:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum143" style="color: #606060;"&gt; 143:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; InvokeOnCodeRead(&lt;span style="color: #0000ff;"&gt;uint&lt;/span&gt; data1, &lt;span style="color: #0000ff;"&gt;uint&lt;/span&gt; data2, DateTime time)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum144" style="color: #606060;"&gt; 144:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum145" style="color: #606060;"&gt; 145:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (OnCodeRead != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum146" style="color: #606060;"&gt; 146:&lt;/span&gt;             {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum147" style="color: #606060;"&gt; 147:&lt;/span&gt;                 OnCodeRead(data1, data2, time);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum148" style="color: #606060;"&gt; 148:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum149" style="color: #606060;"&gt; 149:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum150" style="color: #606060;"&gt; 150:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum151" style="color: #606060;"&gt; 151:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum152" style="color: #606060;"&gt; 152:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;And this is the sample code that will use the library to display the serial number of the tag in the debugger:&lt;/strong&gt;&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Net;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Net.Sockets;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Threading;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; Microsoft.SPOT;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; Microsoft.SPOT.Hardware;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; SecretLabs.NETMF.Hardware;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; SecretLabs.NETMF.Hardware.Netduino;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.IO.Ports;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; CraigTuckerLibs.Hardware;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; RFIDTest&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Program&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// Handles the Main Event&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Main()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;             RFIDReader RFID = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; RFIDReader(Pins.GPIO_PIN_D2, Pins.GPIO_PIN_D3, Pins.GPIO_PIN_D4);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;             RFID.OnCodeRead += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; NativeEventHandler(RFID_OnCodeRead);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;            &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;                         &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;// hang out and run the app:&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;             Thread.Sleep(Timeout.Infinite);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt;  30:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt;  31:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum32" style="color: #606060;"&gt;  32:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum33" style="color: #606060;"&gt;  33:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// Code was sent from RFID Reader&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum34" style="color: #606060;"&gt;  34:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum35" style="color: #606060;"&gt;  35:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;/// --------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum36" style="color: #606060;"&gt;  36:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; RFID_OnCodeRead(&lt;span style="color: #0000ff;"&gt;uint&lt;/span&gt; data1, &lt;span style="color: #0000ff;"&gt;uint&lt;/span&gt; data2, DateTime time)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum37" style="color: #606060;"&gt;  37:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum38" style="color: #606060;"&gt;  38:&lt;/span&gt;             Debug.Print(&lt;span style="color: #006080;"&gt;"SerialNumber: "&lt;/span&gt; + data2.ToString());&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum39" style="color: #606060;"&gt;  39:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum40" style="color: #606060;"&gt;  40:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum41" style="color: #606060;"&gt;  41:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description><pubDate>Mon, 03 Dec 2012 05:57:00 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/node/60</guid></item><item><title>Hello, Netduino!</title><link>http://www.hrzdata.com:80/node/59</link><description>&lt;p&gt;I have been wanting to get a Netduino for quite some time &amp;ndash; I&amp;rsquo;d seen the hardware a few years ago and then for the inaugural &lt;a href="http://madexpo.us/" target="_blank"&gt;MADExpo&lt;/a&gt; in 2011, I sat in a couple of breakouts using the Netduino for various tasks and just kept thinking &amp;ndash; I *really* should get one of these and play with it some&amp;hellip;&lt;/p&gt;
&lt;p&gt;So, I finally decided to bite the bullet and picked up a &lt;a href="http://www.netduino.com/netduinoplus/specs.htm" target="_blank"&gt;Netduino Plus 2&lt;/a&gt;, just to see what I can do with it&amp;hellip; and I&amp;rsquo;m very happy. I like working with the Arduino &amp;ndash; and I have built some pretty interesting things with it (though I haven&amp;rsquo;t really posted any &amp;ndash; I&amp;rsquo;ll get there)&amp;hellip;&lt;/p&gt;
&lt;p&gt;So far, it has just been some flashing LEDs and learning how to upload the programs&amp;hellip; but I&amp;rsquo;m getting there&amp;hellip;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m holding off on the networking part of it right, because I understand there are some bugs in it &amp;ndash; but there is still LOTS of stuff to work with!&lt;/p&gt;</description><pubDate>Fri, 30 Nov 2012 04:59:00 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/node/59</guid></item><item><title>Code WTF? - 2011 edition</title><link>http://www.hrzdata.com:80/node/58</link><description>&lt;p&gt;So today I was helping another developer who was running into some issues in production code - there is a file import that works fine up to a point, but for some reason, a particular file causes it grief.&lt;/p&gt;
&lt;p&gt;As of this posting, we still haven&amp;rsquo;t found the problem - but during lunch, I had to post what we DID find!&lt;/p&gt;
&lt;p&gt;As we were debugging through the parsing library, I ran into a bit of code written by &lt;em&gt;Random Developer&lt;/em&gt;.&amp;nbsp;&amp;nbsp; At first caught it me off guard, then left me quite literally, Laughing Out Loud.&lt;/p&gt;
&lt;p&gt;It starts out simple enough - even has a comment:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="margin: 20px 0px 10px; padding: 4px; border: 1px solid silver; width: 97.5%; text-align: left; line-height: 12pt; overflow: auto; font-family: 'courier new', courier, monospace; font-size: 8pt; cursor: text; direction: ltr; max-height: 200px; background-color: #f4f4f4;"&gt;
&lt;div id="codeSnippet" style="padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// &amp;lt;summary&amp;gt;Parses a String to a bool&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt; Bool&amp;lt;T&amp;gt;(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt; T &lt;span style="color: #0000ff;"&gt;value&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;  {&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Not bad - I think that for this particular process, the Generic is probably overkill - but we will go with it:&lt;/p&gt;
&lt;p&gt;Next, lets parse this thing up:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="margin: 20px 0px 10px; padding: 4px; border: 1px solid silver; width: 97.5%; text-align: left; line-height: 12pt; overflow: auto; font-family: 'courier new', courier, monospace; font-size: 8pt; cursor: text; direction: ltr; max-height: 200px; background-color: #f4f4f4;"&gt;
&lt;div id="codeSnippet" style="padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;value&lt;/span&gt; == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt; || &lt;span style="color: #0000ff;"&gt;value&lt;/span&gt;.ToString().Length == 0) &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;try&lt;/span&gt; { &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; Convert.ToBoolean(&lt;span style="color: #0000ff;"&gt;value&lt;/span&gt;); }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;catch&lt;/span&gt; { }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;First, if you are using Generics, you have a .NET framework that supports TryParse on all the types **.&amp;nbsp; Yes, a TryParse is a bit more convoluted and requires the use of a generally misunderstood &lt;em&gt;Out&lt;/em&gt; parameter - Oh, and a HUGE performance increase if you are parsing a value that fails.&lt;/p&gt;
&lt;p&gt;But I&amp;rsquo;ll over-look that for now, because it is just a sign of what is to come&amp;hellip;&lt;/p&gt;
&lt;p&gt;So, assuming that the above parse didn&amp;rsquo;t actually return a properly parsed value, &lt;em&gt;Random&lt;/em&gt; &lt;em&gt;Developer&lt;/em&gt; decided to add an extra bit of code:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="margin: 20px 0px 10px; padding: 4px; border: 1px solid silver; width: 97.5%; text-align: left; line-height: 12pt; overflow: auto; font-family: 'courier new', courier, monospace; font-size: 8pt; cursor: text; direction: ltr; max-height: 200px; background-color: #f4f4f4;"&gt;
&lt;div id="codeSnippet" style="padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; testValue = &lt;span style="color: #0000ff;"&gt;value&lt;/span&gt;.ToString();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (testValue.Empty()) &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Uh, OK - seems a bit redundant to me - but we haven&amp;rsquo;t gotten to the best (and LOL) part yet:&lt;/p&gt;
&lt;p&gt;&lt;br /&gt; Our friend, &lt;em&gt;Random Developer&lt;/em&gt; decided to check this value that didn&amp;rsquo;t parse into a Boolean against a list of 'Yeses' -&amp;nbsp; Huh? List of Yeses?&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="margin: 20px 0px 10px; padding: 4px; border: 1px solid silver; width: 97.5%; text-align: left; line-height: 12pt; overflow: auto; font-family: 'courier new', courier, monospace; font-size: 8pt; cursor: text; direction: ltr; max-height: 200px; background-color: #f4f4f4;"&gt;
&lt;div id="codeSnippet" style="padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; var yeses = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&amp;gt; { &lt;span style="color: #006080;"&gt;"1"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"true"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"yes"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"y"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"yeah"&lt;/span&gt;, &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;                             &lt;span style="color: #006080;"&gt;"yea"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"ya"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"yo"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"yesh"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"indeed"&lt;/span&gt;, &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;                             &lt;span style="color: #006080;"&gt;"uhuh"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"yep"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"yah"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"damnstraight"&lt;/span&gt;, &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;                             &lt;span style="color: #006080;"&gt;"valid"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"damn skippy"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"you betcha"&lt;/span&gt;, &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;                             &lt;span style="color: #006080;"&gt;"bobs your uncle"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"all right"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"ok"&lt;/span&gt;, &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;                             &lt;span style="color: #006080;"&gt;"sure"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"why not"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"of course"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"agreed"&lt;/span&gt;, &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;                             &lt;span style="color: #006080;"&gt;"fair enough"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"absolutely"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"right"&lt;/span&gt;, &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;                             &lt;span style="color: #006080;"&gt;"if i have too"&lt;/span&gt; };&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; yeses.Contains(testValue.ToLower());&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Yep, Bob&amp;rsquo;s your Uncle, You Betcha, Damn Skippy - if it is one of these values, it must mean it is TRUE!&amp;nbsp;&lt;/p&gt;
&lt;p&gt;At least they used ToLower().&lt;/p&gt;
&lt;p&gt;So, &lt;em&gt;Random Developer&lt;/em&gt; - you officially made my year on my random code WTF?!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="font-size: xx-small;" size="1"&gt;** It also supports String.IsNullOrEmpty - but that&amp;rsquo;s just a personal preference - instead of individually checking for Null and no Length&amp;hellip;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;</description><pubDate>Tue, 27 Dec 2011 19:03:00 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/node/58</guid></item><item><title>Granting Admin rights to SQL Express (When you don’t have sysadmin rights)</title><link>http://www.hrzdata.com:80/node/57</link><description>&lt;p&gt;I ran into an issue where I&amp;rsquo;ve been trying to get my local SQL Express instance setup so I would be able to do a bit of local development.&lt;/p&gt;
&lt;p&gt;What stopped me is that for some reason, my local account did not have sysadmin rights and in SQLExpress, the sa account is disabled&amp;hellip;&amp;nbsp; I guess I did the original install under a different account and when I cleaned up some of the profiles, I nuked it&amp;hellip;&lt;/p&gt;
&lt;p&gt;After messing around way too long trying to figure it out, MSDN to the rescue: &lt;a title="http://archive.msdn.microsoft.com/addselftosqlsysadmin/" href="http://archive.msdn.microsoft.com/addselftosqlsysadmin/"&gt;http://archive.msdn.microsoft.com/addselftosqlsysadmin/&lt;/a&gt;&amp;nbsp;(*Update 11/30/2014 - code site retired by MSFT&amp;nbsp;- CMD script can now be found here:&amp;nbsp;&lt;a href="https://gist.github.com/hugodahl/8b34cbacf7bcd491b116" target="_blank"&gt;https://gist.github.com/hugodahl/8b34cbacf7bcd491b116&lt;/a&gt;&amp;nbsp;)&lt;/p&gt;
&lt;p&gt;As long as you have admin rights on your machine, you can run this and give your current account full access to the SQL instance you choose, from there, I was able to get back on track&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;</description><pubDate>Thu, 23 Jun 2011 03:18:00 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/node/57</guid></item><item><title>Note To Self: Outlook 2010 Features</title><link>http://www.hrzdata.com:80/node/54</link><description>&lt;p&gt;I really needed to archive my messages in Outlook - I&amp;rsquo;d hit the wall on my Exchange mailbox limit and needed to get some of the cruft out of my (freshly filed, almost empty) inbox.&lt;/p&gt;
&lt;p&gt;So it used to be really easy to archive things (because I knew where it was)&amp;nbsp; - but I get into Outlook 2010 and I&amp;rsquo;m bumbling around like a nearsighted, slightly drunk sailor in the hold of a ship in a&amp;nbsp;Class 2 hurricane.&lt;/p&gt;
&lt;p&gt;Well, I did a little searching on the &amp;lsquo;nets and found this, that came in handy: &lt;a title="http://www.howto-outlook.com/faq/locatefeature.htm" href="http://www.howto-outlook.com/faq/locatefeature.htm"&gt;http://www.howto-outlook.com/faq/locatefeature.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Very useful to me, getting over the hump of learning the new Ribbon on Outlook.&lt;/p&gt;</description><pubDate>Thu, 29 Jul 2010 13:36:00 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/node/54</guid></item><item><title>How To Use Visual Studio 2008 with Team Foundation Server 2010</title><link>http://www.hrzdata.com:80/node/53</link><description>&lt;p&gt;I had all kinds of fun getting this to work - so I'm going to record it in case I have to do it again.&lt;/p&gt;
&lt;p&gt;1: Make sure TFS2008 Explorer is Installed&lt;br /&gt; 2: Install VS2008 SP1 (this Updates VS2008 &amp;amp; TFS2008 Explorer)&lt;br /&gt; 3: Install TFS2010 Forward Compatibility Fix (must have SP1 installed or it will refuse to do anything)&lt;/p&gt;
&lt;p&gt;When you connect to the server, you will have to use the full URL to VS2010, for example:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;http://teamServer:8080/tfs/&amp;lt;collectionname&amp;gt; &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If SP1 and the Forward compatibility tool aren't installed, you'll get an error about the server name cannot contain "://" or similar.&amp;nbsp; Make sure you don't have a trailing '/' either.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Useful Links: &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Most of this is better explained in Jason Barile's blog post&amp;nbsp;(which, of course,&amp;nbsp;I didn&amp;rsquo;t find until I almost had it working but this got me over the URL hump):&lt;br /&gt; &lt;a href="http://blogs.msdn.com/b/jasonba/archive/2009/08/10/how-to-connect-to-a-tfs-2010-server-from-a-2008-team-explorer-client.aspx"&gt;http://blogs.msdn.com/b/jasonba/archive/2009/08/10/how-to-connect-to-a-tfs-2010-server-from-a-2008-team-explorer-client.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio Team System 2008 Service Pack 1 Forward Compatibility Update for Team Foundation Server 2010 (Installer)&lt;br /&gt; &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=CF13EA45-D17B-4EDC-8E6C-6C5B208EC54D&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=CF13EA45-D17B-4EDC-8E6C-6C5B208EC54D&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 08 Jul 2010 16:20:00 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/node/53</guid></item><item><title>Visual Studio - Stopping a Multi-Project build at the first compile error</title><link>http://www.hrzdata.com:80/node/52</link><description>&lt;p&gt;Yet another Note to Self post--&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;pre class="prettyprint"&gt;&lt;strong&gt;UPDATE 11/30/2014 - This functionality has been totally replaced in VS 2010 and&amp;nbsp;up by one of several extensions &lt;br /&gt;(like &lt;a title="this" href="https://visualstudiogallery.msdn.microsoft.com/91aaa139-5d3c-43a7-b39f-369196a84fa5" target="_blank"&gt;this&lt;/a&gt;, or &lt;a title="this" href="https://visualstudiogallery.msdn.microsoft.com/f4d9c2b5-d6d7-4543-a7a5-2d7ebabc2496" target="_blank"&gt;this&lt;/a&gt;) that will do the same thing,&amp;nbsp;much more effectively... &lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;In almost all the cases where I&amp;rsquo;m working on projects, I have multiple assemblies in the solution&amp;hellip; In a lot of cases, I&amp;rsquo;ll make changes in one of the dependencies of my solution and when I get to a later step in the build, something else breaks.&lt;/p&gt;
&lt;p&gt;A lot of the time, once I work my way back through the pack of build errors, I&amp;rsquo;ll find that way up my dependency tree, one of my projects had a compile error and it has trickled down through the rest of the build, causing one error after another.&lt;/p&gt;
&lt;p&gt;A long time ago, from a source unknown to me now&amp;nbsp; I found a snippet of a Visual Studio Macro that got close to what I wanted and over the years, I&amp;rsquo;ve done some slight modifications and improvements to it and still use it.&amp;nbsp; It&amp;rsquo;s really simple, but it something that helps my workflow in small but measureable way.&lt;/p&gt;
&lt;p&gt;So here is what I do&amp;hellip; [after the break]&lt;/p&gt;
&lt;!--break--&gt;
&lt;p&gt;I go into the Visual Studio Macro IDE and add a new module.&lt;/p&gt;
&lt;p&gt;&lt;img width="640" height="408" alt="" src="/Media/Default/images/VisualStudioStoppingaMultiProjectbuildat_9750_image1.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.craigtucker.info/sites/default/files/Craig/VisualStudioStoppingaMultiProjectbuildat_9750/image.png"&gt;&amp;nbsp;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once you have the IDE open, I Right-click on 'MyMacros&amp;rsquo; and add a new module&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img width="408" height="223" alt="" src="/Media/Default/images/VisualStudioStoppingaMultiProjectbuildat_9750)_image_3.png" /&gt;&lt;a href="http://www.craigtucker.info/sites/default/files/Craig/VisualStudioStoppingaMultiProjectbuildat_9750/image_3.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I call the module &lt;em&gt;CraigsVBModule &lt;/em&gt;[original, huh?]. Then add the following content to my module - this module has several other items that I use, but for this example, I&amp;rsquo;ve just minimize it to what&amp;rsquo;s important.&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Imports&lt;/span&gt; System&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Imports&lt;/span&gt; EnvDTE&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Imports&lt;/span&gt; EnvDTE80&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Imports&lt;/span&gt; EnvDTE90&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Imports&lt;/span&gt; EnvDTE90a&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Imports&lt;/span&gt; EnvDTE100&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Imports&lt;/span&gt; System.Diagnostics&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Module&lt;/span&gt; CraigsVSModule&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt; &lt;span style="color: #008000;"&gt;'&amp;lt;SNIP&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt; &lt;span style="color: #008000;"&gt;'OTHER CODE&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt; &lt;span style="color: #008000;"&gt;'&amp;lt;/SNIP&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Sub&lt;/span&gt; BuildProjConfigDone( _&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;                         &lt;span style="color: #0000ff;"&gt;ByVal&lt;/span&gt; Project &lt;span style="color: #0000ff;"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;String&lt;/span&gt;, _&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;                         &lt;span style="color: #0000ff;"&gt;ByVal&lt;/span&gt; ProjectConfig &lt;span style="color: #0000ff;"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;String&lt;/span&gt;, _&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;                         &lt;span style="color: #0000ff;"&gt;ByVal&lt;/span&gt; Platform &lt;span style="color: #0000ff;"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;String&lt;/span&gt;, _&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;                         &lt;span style="color: #0000ff;"&gt;ByVal&lt;/span&gt; SolutionConfig &lt;span style="color: #0000ff;"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;String&lt;/span&gt;, _&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;                         &lt;span style="color: #0000ff;"&gt;ByVal&lt;/span&gt; Success &lt;span style="color: #0000ff;"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Boolean&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;'Get the output window&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;Dim&lt;/span&gt; win &lt;span style="color: #0000ff;"&gt;As&lt;/span&gt; Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;Dim&lt;/span&gt; OW &lt;span style="color: #0000ff;"&gt;As&lt;/span&gt; OutputWindow = &lt;span style="color: #0000ff;"&gt;CType&lt;/span&gt;(win.&lt;span style="color: #0000ff;"&gt;Object&lt;/span&gt;, OutputWindow)&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;'if the build failed, then stop further builds and output error message to&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;'output panel&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;If&lt;/span&gt; Success = &lt;span style="color: #0000ff;"&gt;False&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Then&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;'cancel further builds&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt;  30:&lt;/span&gt;             DTE.ExecuteCommand(&lt;span style="color: #006080;"&gt;"Build.Cancel"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;""&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt;  31:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;'output a more informative error message to the build pane&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum32" style="color: #606060;"&gt;  32:&lt;/span&gt;             OW.OutputWindowPanes.Item(&lt;span style="color: #006080;"&gt;"Build"&lt;/span&gt;).OutputString(&lt;span style="color: #006080;"&gt;"*********************************************************************************"&lt;/span&gt; + System.Environment.NewLine)&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum33" style="color: #606060;"&gt;  33:&lt;/span&gt;             OW.OutputWindowPanes.Item(&lt;span style="color: #006080;"&gt;"Build"&lt;/span&gt;).OutputString(&lt;span style="color: #006080;"&gt;"********************************  Build Stopped  ********************************"&lt;/span&gt; + System.Environment.NewLine + System.Environment.NewLine)&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum34" style="color: #606060;"&gt;  34:&lt;/span&gt;             OW.OutputWindowPanes.Item(&lt;span style="color: #006080;"&gt;"Build"&lt;/span&gt;).OutputString(&lt;span style="color: #006080;"&gt;"ERROR IN "&lt;/span&gt; &amp;amp; Project &amp;amp; System.Environment.NewLine + System.Environment.NewLine)&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum35" style="color: #606060;"&gt;  35:&lt;/span&gt;             OW.OutputWindowPanes.Item(&lt;span style="color: #006080;"&gt;"Build"&lt;/span&gt;).OutputString(&lt;span style="color: #006080;"&gt;"********************************  Build Stopped  ********************************"&lt;/span&gt; + System.Environment.NewLine)&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum36" style="color: #606060;"&gt;  36:&lt;/span&gt;             OW.OutputWindowPanes.Item(&lt;span style="color: #006080;"&gt;"Build"&lt;/span&gt;).OutputString(&lt;span style="color: #006080;"&gt;"*********************************************************************************"&lt;/span&gt; + System.Environment.NewLine)&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum37" style="color: #606060;"&gt;  37:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;If&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum38" style="color: #606060;"&gt;  38:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Sub&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum39" style="color: #606060;"&gt;  39:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum40" style="color: #606060;"&gt;  40:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Module&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Once that is in, I modify the Visual Studio &lt;strong&gt;EnvironmentEvents&lt;/strong&gt; Module and add to that a handler for the &lt;strong&gt;OnBuildProjConfigDone&lt;/strong&gt; event that calls the post build &lt;em&gt;All Stop &lt;/em&gt;method:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Sub&lt;/span&gt; BuildEvents_OnBuildProjConfigDone( _&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;                     &lt;span style="color: #0000ff;"&gt;ByVal&lt;/span&gt; Project &lt;span style="color: #0000ff;"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;String&lt;/span&gt;, _&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;                     &lt;span style="color: #0000ff;"&gt;ByVal&lt;/span&gt; ProjectConfig &lt;span style="color: #0000ff;"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;String&lt;/span&gt;, _&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;                     &lt;span style="color: #0000ff;"&gt;ByVal&lt;/span&gt; Platform &lt;span style="color: #0000ff;"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;String&lt;/span&gt;, _&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;                     &lt;span style="color: #0000ff;"&gt;ByVal&lt;/span&gt; SolutionConfig &lt;span style="color: #0000ff;"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;String&lt;/span&gt;, _&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;                     &lt;span style="color: #0000ff;"&gt;ByVal&lt;/span&gt; Success &lt;span style="color: #0000ff;"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Boolean&lt;/span&gt;) &lt;span style="color: #0000ff;"&gt;Handles&lt;/span&gt; _&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;                     BuildEvents.OnBuildProjConfigDone&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;' call out to the module when build is completed&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;Call&lt;/span&gt; CraigsVSModule.BuildProjConfigDone(Project, ProjectConfig, Platform, SolutionConfig, Success)&lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Sub&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Now, when I perform a full build, if any one of my projects has an error, the compile process will All Stop at the end of that project&amp;rsquo;s build and let me know exactly where the error happened.&lt;/p&gt;
&lt;p&gt;So on those 20+ Assembly builds, I find out a lot sooner that I&amp;rsquo;ve got an error - which greatly benefits my iterative development style.&lt;/p&gt;
&lt;pre&gt;Time Elapsed 00:00:00.05
------ Build started: Project: ProcessingClasses, Configuration: Debug Any CPU ------
C:\clients\[theClient]\ProcessingClasses\Processors\ADPGenericData.cs(433,47): error CS1002: ; expected

Compile complete -- 1 errors, 0 warnings
Build started 6/28/2010 10:54:27 AM.
CoreCompile:
  C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig /nowarn:1701,1702 ...

Build FAILED.

Time Elapsed 00:00:00.56
*********************************************************************************
********************************  Build Stopped  ********************************

ERROR IN ..\ProcessingClasses\ProcessingClasses.csproj

********************************  Build Stopped  ********************************
*********************************************************************************
Build has been canceled.&lt;/pre&gt;</description><pubDate>Mon, 28 Jun 2010 15:29:00 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/node/52</guid></item><item><title>Jenny &amp; Jaya</title><link>http://www.hrzdata.com:80/node/51</link><description>&lt;div&gt;&lt;a title="photo sharing" href="http://www.flickr.com/photos/tuck/4677945683/" target="_blank"&gt;&lt;img alt="" src="http://farm5.static.flickr.com/4071/4677945683_223d5d6c03.jpg" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;span&gt;&lt;a href="http://www.flickr.com/photos/tuck/4677945683/"&gt;IMG_9388&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tuck/"&gt;CATucker&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;Just wanted to try the Flickr Integration and while I was at it, prove that I have been taking some pictures lately. I've got to get back to that, I've been slacking lately...&amp;nbsp; Need to get back on it...&lt;/div&gt;</description><pubDate>Fri, 11 Jun 2010 01:03:00 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/node/51</guid></item><item><title>Now Why did I never notice THAT before?</title><link>http://www.hrzdata.com:80/node/47</link><description>&lt;p&gt;On a different topic today, I noticed something that, even as much as I played the game back in the early 90&amp;rsquo;s when it came out I never remember seeing or at least I don&amp;rsquo;t REMEMBER* remembering it&amp;hellip;&lt;/p&gt;
&lt;p&gt;Look, it is the Charlotte Skyline in there !?!&lt;/p&gt;
&lt;p&gt;&lt;img width="468" height="525" alt="Sid Meier's Civilization Boxshot" src="/Media/Default/images/civ1front.jpg" /&gt;&lt;/p&gt;
&lt;h6&gt;* Could be the 40 year old Memory Allocation Table getting corrupted, too&amp;hellip;&lt;/h6&gt;
&lt;!--break--&gt;</description><pubDate>Fri, 14 May 2010 21:59:00 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/node/47</guid></item><item><title>Setting up IP Address restrictions on IIS7</title><link>http://www.hrzdata.com:80/node/46</link><description>&lt;p&gt;Media/Default/images/&lt;/p&gt;
&lt;p&gt;I was asked to setup one of our Web Servers to only Restrict all but a certain subset of IP addresses to have access to the site since this is a server that sits in our &lt;a href="http://en.wikipedia.org/wiki/DMZ_(computing)" target="_blank"&gt;DMZ&lt;/a&gt;, I have basically two sets of addresses to allow in; our internal subnet of addresses and the clients&amp;rsquo; external IP address.&lt;/p&gt;
&lt;!--break--&gt;
&lt;p&gt;The first step is to make sure the IP and Domain Restrictions Role has been installed on the server&lt;/p&gt;
&lt;p&gt;&lt;a href="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/image.png" target="_blank"&gt;&lt;img width="640" height="284" title="image" alt="image" src="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/image_thumb.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image004.jpg" target="_blank"&gt;&lt;img width="640" height="152" title="clip_image004" alt="clip_image004" src="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image004_thumb.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If it hasn&amp;rsquo;t, you can click the &amp;ldquo;Add Role Service&amp;rdquo; link, check the box and it the install will commence.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image006.jpg" target="_blank"&gt;&lt;img width="427" height="322" title="clip_image006" alt="clip_image006" src="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image006_thumb.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[I&amp;rsquo;d already installed it when I thought to do the screen caps, so your screen may vary&amp;hellip; but it is pretty self explanatory.]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Once you have installed the roll, make sure you restart the IIS Manager so it will take effect and for the website (or Application) you want to restrict, you should now see the &lt;b&gt;&lt;i&gt;IPv4 Address and Domain Restrictions&lt;/i&gt;&lt;/b&gt; Icon.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image0024.jpg" target="_blank"&gt;&lt;img width="344" height="307" title="clip_image002[4]" alt="clip_image002[4]" src="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image0024_thumb.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When you select that, you will see the window appear&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image0047.jpg" target="_blank"&gt;&lt;img width="349" height="141" title="clip_image004[7]" alt="clip_image004[7]" src="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image0047_thumb.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Assuming you are not trying to block a small number of addresses, you need to deny access to ALL addresses first. This is done through the &lt;b&gt;&lt;i&gt;Edit Feature Settings&amp;hellip;&lt;/i&gt;&lt;/b&gt; link.&lt;/p&gt;
&lt;p&gt;When you click the link, you will see the &lt;b&gt;&lt;i&gt;Edit IP and Domain Restrictions Settings&lt;/i&gt;&lt;/b&gt; dialog appear&lt;/p&gt;
&lt;p&gt;&lt;a href="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image0067.jpg" target="_blank"&gt;&lt;img width="240" height="134" title="clip_image006[7]" alt="clip_image006[7]" src="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image0067_thumb.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;At this point, you will select &amp;lsquo;Deny&amp;rsquo; and click OK. Anyone accessing the site will now get a &lt;i&gt;403 &amp;ndash; Forbidden&lt;/i&gt; error:&lt;/p&gt;
&lt;p&gt;&lt;a href="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image0085.jpg" target="_blank"&gt;&lt;img width="518" height="123" title="clip_image008[5]" alt="clip_image008[5]" src="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image0085_thumb.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Since you definitely need to let some IP addresses in, you can add a single or range of addresses specifically.&lt;/p&gt;
&lt;p&gt;For instance, if I wanted to let only my development PC into the server and its IP address is 10.160.30.90 then I would add an Allow Restriction Rule for my specific IP address:&lt;/p&gt;
&lt;p&gt;&lt;a href="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image0105.jpg" target="_blank"&gt;&lt;img width="294" height="271" title="clip_image010[5]" alt="clip_image010[5]" src="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image0105_thumb.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If I needed a less specific range, I could also add the full range of my internal office network addresses.&lt;/p&gt;
&lt;p&gt;My addresses are in the 10.160.30.xxx range, so that is what I&amp;rsquo;m going to add:&lt;/p&gt;
&lt;p&gt;&lt;a href="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image0124.jpg" target="_blank"&gt;&lt;img width="290" height="272" title="clip_image012[4]" alt="clip_image012[4]" src="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image0124_thumb.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This will be the entire class &amp;lsquo;C&amp;rsquo; range (255.255.255.0) of the 10.160.30.0 subnet.&lt;/p&gt;
&lt;p&gt;Since the client needs access to this site too, I need to find out what their external IP address is and then allow an Allow Restriction for that address.&lt;/p&gt;
&lt;p&gt;This assumes that the external address is static &amp;ndash; if its dynamic and it changes, then you will have to Delete and Re-add the rule with the new IP address before they will have access again&lt;/p&gt;
&lt;p&gt;[TODO: Experiment to see if this applies to domain restrictions that have dynamic DNS entries]&lt;/p&gt;
&lt;p&gt;On one of the client computers, I had them go to their web browser and visit &amp;ldquo;www.whatIsMyIP.com&amp;rdquo;** this will give you the external IP address on your router (if you are using &lt;a href="http://en.wikipedia.org/wiki/NAT" target="_blank"&gt;NAT&lt;/a&gt; this is important) so we will know what address to allow on the IIS.&lt;br /&gt; &lt;span style="font-size: xx-small;" size="1"&gt;[** this is just one of many services out there that do the same thing, no specified preference or endorsement, just the one that I use &amp;ndash; there are plenty of other ways, too: &lt;/span&gt;&lt;a href="http://www.wikihow.com/Find-out-Your-IP-Address"&gt;&lt;span style="font-size: xx-small;" size="1"&gt;http://www.wikihow.com/Find-out-Your-IP-Address&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: xx-small;" size="1"&gt; ]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image0144.jpg" target="_blank"&gt;&lt;img width="424" height="76" title="clip_image014[4]" alt="clip_image014[4]" src="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image0144_thumb.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I then created the rule and added the new IP address&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image0164.jpg" target="_blank"&gt;&lt;img width="297" height="272" title="clip_image016[4]" alt="clip_image016[4]" src="/Media/Default/images/SettingupIPAddressrestrictionsonIIS7_B323/clip_image0164_thumb.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Et voli&amp;agrave;! &amp;ndash; only my internal network and anyone on the client&amp;rsquo;s network have access to the site &amp;ndash; for the rest of the internet, it is a 403 error.&lt;/p&gt;
&lt;p&gt;Next Up, I need to build a custom error page to set the users on the right path, in case they hit the test site in error.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Related Links:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;More information is here, straight from Microsoft:&lt;br /&gt; &lt;a href="http://technet.microsoft.com/en-us/library/cc770819(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/cc770819(WS.10).aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The original post I saw that got me going:&lt;br /&gt; &lt;a href="http://omensblog.blogspot.com/"&gt;http://omensblog.blogspot.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Getting your IP address:&lt;br /&gt; &lt;a href="http://www.wikihow.com/Find-out-Your-IP-Address"&gt;http://www.wikihow.com/Find-out-Your-IP-Address&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 05 May 2010 06:16:00 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/node/46</guid></item><item><title>Note to Self: ASP.NET Paths</title><link>http://www.hrzdata.com:80/node/45</link><description>&lt;p&gt;I always keep looking for this information because for some reason it never sticks in my memory.&amp;nbsp; So I figured I&amp;rsquo;d put it some place I could find it without having to search for it every time&amp;hellip;&lt;/p&gt;
&lt;p&gt;This is a great resource for basically figuring out every kind of path or URI reference you can with ASP.NET:&lt;/p&gt;
&lt;p&gt;From Rick Strahl&amp;rsquo;s blog:&amp;nbsp; &lt;a title="http://www.west-wind.com/weblog/posts/132081.aspx" href="http://www.west-wind.com/weblog/posts/132081.aspx"&gt;http://www.west-wind.com/weblog/posts/132081.aspx&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 29 Apr 2010 14:03:00 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/node/45</guid></item><item><title>Mini-MakerFaire: NC</title><link>http://www.hrzdata.com:80/node/44</link><description>&lt;p&gt;It&amp;rsquo;s been a few days since I attended the first (hopefully annual) &lt;a href="http://makerfairenc.com/" target="_blank"&gt;MakerFaire:NC&lt;/a&gt; in Durham on Sunday the 25th&amp;hellip;&amp;nbsp; I was very impressed with the whole affair.&amp;nbsp; I&amp;rsquo;ve have been following the whole Maker meme since I first ran into it quite a few years ago, and when I saw that there was talk of creating a &lt;a href="http://www.makezine.com/" target="_blank"&gt;magazine&lt;/a&gt; specifically aimed at the DIYer, I signed up for a subscription almost a year before they published the first issue!&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been making my own things (and breaking other stuff) for as long as I can remember &amp;ndash; its a knack that I picked up from my Dad who has built some of the coolest and most practical things I&amp;rsquo;ve seen &amp;ndash; I&amp;rsquo;m mean, he built a car rotisserie for working on the bottom of old Mustangs he was restoring&amp;hellip; I&amp;rsquo;ll have to get pictures&amp;hellip;&lt;/p&gt;
&lt;p&gt;Besides all the useful or off the wall things that people were demonstrating at the faire, the coolest things that I remember seeing while I was walking around were the kids with their parents. A father sitting on the floor with his son at the &lt;a href="http://en.wikipedia.org/wiki/Chaos_Machine" target="_blank"&gt;Chaos Machine&lt;/a&gt; describing how to put things together so the balls will keep moving, another explaining how the &lt;a href="http://www.shopbottools.com/" target="_blank"&gt;ShopBot&lt;/a&gt; works; A Dad and his daughter playing with the Beam bots from &lt;a href="http://www.sheekgeek.com/" target="_blank"&gt;SheekGeek&lt;/a&gt; or the learning how to sew on the quilt&amp;hellip;&amp;nbsp; It took me back to working with my Dad in his shop, sitting on the radiator support of the race car, pulling the intake manifold off when I was 6, when I should have been in bed asleep&amp;hellip; He has always told me that I should work with my Brain and not with my Hands&amp;hellip; but I&amp;rsquo;ve found ways to do both &amp;ndash; it is hard &lt;strong&gt;not&lt;/strong&gt; to make things when it&amp;rsquo;s in your DNA.&lt;/p&gt;
&lt;p&gt;This didn&amp;rsquo;t start out to be a post about my Dad &amp;ndash; but as I wrote it, I realized just how much of an influence he has been on me, my ability to solve problems, to build it if I need it and to fix it instead of throwing it away&amp;hellip; So I guess my Dad is an original Maker, a builder of things&amp;hellip; and that is why he is Awesome. And so are all the Parents that take their kids out to the NC faire, to &lt;a href="http://www.makerfaire.com/" target="_blank"&gt;San Mateo&lt;/a&gt; or Detroit or just to encourage them to learn and to Make instead of just buy and throw it away.&lt;/p&gt;</description><pubDate>Wed, 28 Apr 2010 16:26:00 GMT</pubDate><guid isPermaLink="true">http://www.hrzdata.com:80/node/44</guid></item></channel></rss>