<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Andrew Walsh</title><link>http://awalsh128.com/posts/</link><description>Recent content in Posts on Andrew Walsh</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><copyright>© 2026 Andrew Walsh</copyright><lastBuildDate>Thu, 22 Oct 2026 00:00:01 -0700</lastBuildDate><atom:link href="http://awalsh128.com/posts/feed.xml" rel="self" type="application/rss+xml"/><item><title>Testing framework for VSCode extension development</title><link>http://awalsh128.com/vscode-ext-dev-and-testing/</link><pubDate>Sat, 01 Aug 2026 00:00:00 -0700</pubDate><guid>http://awalsh128.com/vscode-ext-dev-and-testing/</guid><description>&lt;p&gt;I created a VSCode extension recently (&lt;a href="https://github.com/awalsh128/vscode-keep-sorted" target="_blank" rel="noreferrer"&gt;awalsh128/vscode-keep-sorted&lt;/a&gt;)&#10;and learned a lot of lessons trying to set up the test environment. What I wanted was:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Tests that run against a real VSCode instance, not mocks.&lt;/li&gt;&#10;&lt;li&gt;An immutable test workspace, so every test starts from the same files.&lt;/li&gt;&#10;&lt;li&gt;A log file per test, so I can see what the extension did when a test fails.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Principles&#10; &lt;div id="principles" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#principles" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Some things I learned the hard way about testing extensions.&lt;/p&gt;</description></item><item><title>Quick primer on service levels and production strategy</title><link>http://awalsh128.com/slos-slis-and-production/</link><pubDate>Thu, 16 Jul 2026 00:00:00 -0700</pubDate><guid>http://awalsh128.com/slos-slis-and-production/</guid><description>SLIs, SLOs, and SLAs, and how to use them for monitoring, on-call, and incident response.</description></item><item><title>VSCode Keep Sorted Extension</title><link>http://awalsh128.com/vscode-keep-sorted/</link><pubDate>Thu, 25 Dec 2025 00:00:00 -0800</pubDate><guid>http://awalsh128.com/vscode-keep-sorted/</guid><description>&lt;table width="100%"&gt;&#10; &lt;tr&gt;&#10; &lt;td width="48"&gt;&lt;img src="logo.png" alt="Logo" width="48" height="48"&gt;&lt;/td&gt;&#10; &lt;td style="padding-left:1em"&gt;&lt;h1&gt;VSCode Keep Sorted Extension&lt;/h1&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10;&lt;/table&gt;&#10;&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="note"&gt;&#10; &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;&#10; &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;&#10;&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="grow"&gt;&#10; Note&#10; &lt;/div&gt;&#10; &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;Updated October 2026 for version 1.0.2. This post originally announced the 0.0.1 release in December 2025. Commands,&#10;settings, and features below reflect the latest version.&lt;/p&gt;</description></item><item><title>Interviews are the Worst</title><link>http://awalsh128.com/interviews-are-the-worst/</link><pubDate>Mon, 14 Feb 2022 00:00:00 -0800</pubDate><guid>http://awalsh128.com/interviews-are-the-worst/</guid><description>&lt;p&gt;If you have experience in the software engineering field, an interview process can test the experience you have; projects, production scenarios, designs. Unfortunately, for junior positions and those out of college, there isn&amp;rsquo;t much to test for. Since most are computer scientists, you could test knowledge of algorithms and data structures but does that really prove the ability of a candidate? Knowing the upper bound complexity of an algorithm&amp;rsquo;s runtime is important but what about when a constant multiplying factor means the difference between production being up and down. We don&amp;rsquo;t have a solution for the Traveling Salesman Problem but we have very good and practical approximations (e.g. flight scheduling).&lt;/p&gt;</description></item><item><title>Compiler Basics</title><link>http://awalsh128.com/compiler-basics/</link><pubDate>Sat, 23 Oct 2021 00:00:00 -0700</pubDate><guid>http://awalsh128.com/compiler-basics/</guid><description>Introduction of compiler basics using a toy example.</description></item><item><title>Doxygen Themes</title><link>http://awalsh128.com/doxygen-themes-release/</link><pubDate>Sat, 23 Oct 2021 00:00:00 -0700</pubDate><guid>http://awalsh128.com/doxygen-themes-release/</guid><description>Customizable and modernized Doxygen themes.</description></item><item><title>Automated Testing for GitHub Actions</title><link>http://awalsh128.com/automated-testing-for-github-actions/</link><pubDate>Tue, 12 Oct 2021 00:00:00 -0700</pubDate><guid>http://awalsh128.com/automated-testing-for-github-actions/</guid><description>Create a testing harness for your created GitHub Actions.</description></item><item><title>Code Analysis for GitHub Projects</title><link>http://awalsh128.com/integrating-lgtm/</link><pubDate>Sun, 10 Oct 2021 00:00:00 -0700</pubDate><guid>http://awalsh128.com/integrating-lgtm/</guid><description>Integrate your GitHub projects with a code analysis tool.</description></item><item><title>Fluent C++ v0.1 Release</title><link>http://awalsh128.com/fluentcpp-v01-release/</link><pubDate>Sat, 09 Oct 2021 00:00:00 -0700</pubDate><guid>http://awalsh128.com/fluentcpp-v01-release/</guid><description>Fluent style querying for C++.</description></item><item><title>CMake Simple Library Example</title><link>http://awalsh128.com/cmake-simple-library/</link><pubDate>Thu, 07 Oct 2021 00:00:00 -0700</pubDate><guid>http://awalsh128.com/cmake-simple-library/</guid><description>An example of a simple library using CMake.</description></item><item><title>GitHub Actions - Cache APT Packages v1 Released</title><link>http://awalsh128.com/github-actions-cache-apt-pkgs-v1-released/</link><pubDate>Sat, 18 Sep 2021 00:00:00 -0700</pubDate><guid>http://awalsh128.com/github-actions-cache-apt-pkgs-v1-released/</guid><description>A GitHub action to cache APT packages for future workflow runs..</description></item><item><title>C++ validate and throw with a dynamic message in a single line.</title><link>http://awalsh128.com/validate-and-throw-with-multi-type-message/</link><pubDate>Fri, 03 Sep 2021 00:00:00 -0700</pubDate><guid>http://awalsh128.com/validate-and-throw-with-multi-type-message/</guid><description>Assert a condition and throw with a dynamic message in a single line in C++.</description></item><item><title>C++ Memory Semantics for C# and Java Devs</title><link>http://awalsh128.com/cpp-memory-semantic-for-csharp-java-devs/</link><pubDate>Mon, 21 Sep 2020 00:00:00 -0700</pubDate><guid>http://awalsh128.com/cpp-memory-semantic-for-csharp-java-devs/</guid><description>Understanding how memory semantics works in C++ from the perspective of a C# or Java dev.</description></item><item><title>Streaming UUEncoder in .NET.</title><link>http://awalsh128.com/streaming-uuencoder-in-net/</link><pubDate>Fri, 24 Apr 2015 00:00:00 -0700</pubDate><guid>http://awalsh128.com/streaming-uuencoder-in-net/</guid><description>&lt;h3 class="relative group"&gt;Flashback&#10; &lt;div id="flashback" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#flashback" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;The last time I used Unix-to-Unix format (AKA&#10;&lt;a href="http://en.wikipedia.org/wiki/Uuencoding" target="_blank" rel="noreferrer"&gt;UUEncoding&lt;/a&gt;) was when&#10;&lt;a href="http://en.wikipedia.org/wiki/Usenet" target="_blank" rel="noreferrer"&gt;USENET&lt;/a&gt; was still the big thing&#10;and &lt;a href="http://en.wikipedia.org/wiki/Mosaic_%28web_browser%29" target="_blank" rel="noreferrer"&gt;Mosaic web&#10;browser&lt;/a&gt; was just&#10;coming out. That was until recently, when I had a requirement to encode&#10;and decode this file type.&lt;/p&gt;</description></item><item><title>Get Windows Service name from executable in PowerShell.</title><link>http://awalsh128.com/get-windows-service-name-from/</link><pubDate>Mon, 20 Apr 2015 00:00:00 -0700</pubDate><guid>http://awalsh128.com/get-windows-service-name-from/</guid><description>&lt;p&gt;I was recently putting some PowerShell scripts together for deployment&#10;and maintenance of software to our machine instances. One of the&#10;requirements was to be able to discover the service name from a Windows&#10;Service executable that uses&#10;&lt;a href="https://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceinstaller%28v=vs.110%29.aspx" target="_blank" rel="noreferrer"&gt;ServiceInstaller&lt;/a&gt;.&#10;I needed to be able to extract this value in a generic way in order to&#10;query the service and stop it if running. Here is what I was able to put&#10;together.&lt;/p&gt;</description></item><item><title>Log per class pattern.</title><link>http://awalsh128.com/log-per-class-pattern/</link><pubDate>Sun, 29 Mar 2015 00:00:00 -0700</pubDate><guid>http://awalsh128.com/log-per-class-pattern/</guid><description>&lt;h3 class="relative group"&gt;Rookie Moves&#10; &lt;div id="rookie-moves" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#rookie-moves" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;Awhile ago, I had originally created a single logger for each service&#10;and shared it statically across the application.&lt;/p&gt;</description></item><item><title>Creating XML based templates in log4net.</title><link>http://awalsh128.com/creating-xml-based-templates-in-log4net/</link><pubDate>Sat, 28 Mar 2015 00:00:00 -0700</pubDate><guid>http://awalsh128.com/creating-xml-based-templates-in-log4net/</guid><description>&lt;h3 class="relative group"&gt;Motivation&#10; &lt;div id="motivation" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#motivation" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;I decided to use &lt;a href="https://logging.apache.org/log4net/" target="_blank" rel="noreferrer"&gt;log4net&lt;/a&gt; for a&#10;recent project I had been working on. There is a concept of&#10;&lt;a href="https://logging.apache.org/log4net/release/manual/configuration.html#loggers" target="_blank" rel="noreferrer"&gt;loggers&lt;/a&gt;&#10;and&#10;&lt;a href="https://logging.apache.org/log4net/release/manual/configuration.html#appenders" target="_blank" rel="noreferrer"&gt;appenders&lt;/a&gt;.&#10;Loggers are composed of appenders and a log threshold. Appenders are&#10;consumers of logging information and provide specific implementations&#10;(eg. file, email, event log, database). You can configure the loggers&#10;and appenders either in the &lt;a href="https://logging.apache.org/log4net/release/manual/configuration.html" target="_blank" rel="noreferrer"&gt;application&#10;configuration&lt;/a&gt;&#10;or &lt;a href="http://www.roelvanlisdonk.nl/?p=723" target="_blank" rel="noreferrer"&gt;at runtime&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Using type converters for JSON.NET.</title><link>http://awalsh128.com/using-type-converters-for-jsonnet/</link><pubDate>Sat, 28 Mar 2015 00:00:00 -0700</pubDate><guid>http://awalsh128.com/using-type-converters-for-jsonnet/</guid><description>&lt;h3 class="relative group"&gt;Motivation&#10; &lt;div id="motivation" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#motivation" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;I had these &lt;a href="http://en.wikipedia.org/wiki/Flyweight_pattern" target="_blank" rel="noreferrer"&gt;flyweights&lt;/a&gt;&#10;that added a lot of overhead to the&#10;&lt;a href="http://en.wikipedia.org/wiki/Serialization" target="_blank" rel="noreferrer"&gt;serialization&lt;/a&gt; process.&#10;They weren't really needed in the serialized payload either. In fact, I&#10;could recreate the flyweight in memory from just a single property on&#10;the object.&lt;/p&gt;</description></item><item><title>Using CC.NET &amp; Gallio for priority based smoke testing.</title><link>http://awalsh128.com/using-ccnet-gallio-for-priority-based/</link><pubDate>Fri, 17 Oct 2014 00:00:00 -0700</pubDate><guid>http://awalsh128.com/using-ccnet-gallio-for-priority-based/</guid><description>&lt;h3 class="relative group"&gt;Pitfalls in Production&#10; &lt;div id="pitfalls-in-production" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#pitfalls-in-production" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;Being able to monitor&#10;&lt;a href="http://en.wikipedia.org/wiki/Development_environment_%28software_development_process%29" target="_blank" rel="noreferrer"&gt;production&lt;/a&gt;&#10;services for potential errors is critical. Especially if the services&#10;are dependant on external resources which may become unavailable or&#10;exhibit unexpected behavior. Even if you follow good software&#10;development discipline, this is always a source of concern. Think&#10;network outages, unannounced third party API changes, hosted services&#10;becoming unavailable, etc.&lt;/p&gt;</description></item><item><title>State behavioral pattern to the rescue.</title><link>http://awalsh128.com/state-behavioral-pattern-to-rescue/</link><pubDate>Mon, 17 Mar 2014 00:00:00 -0700</pubDate><guid>http://awalsh128.com/state-behavioral-pattern-to-rescue/</guid><description>&lt;h3 class="relative group"&gt;The Creeping Problem&#10; &lt;div id="the-creeping-problem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-creeping-problem" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;I recently found myself developing a request-response style system,&#10;where the lifetime of a request could be interrupted at any moment. For&#10;most same process execution, like your average desktop application, this&#10;is a concern, but arises more often when dealing with multiple&#10;coordinated processes. My case ended up being the latter.&lt;/p&gt;</description></item><item><title>Understanding type theory (Part one: Lambda Calculus).</title><link>http://awalsh128.com/understanding-type-theory-part-one/</link><pubDate>Sun, 14 Apr 2013 00:00:00 -0700</pubDate><guid>http://awalsh128.com/understanding-type-theory-part-one/</guid><description>&lt;h3 class="relative group"&gt;Series Introduction&#10; &lt;div id="series-introduction" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#series-introduction" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;I initially was going to put this together as a single post but quickly&#10;realized that it would be a bit much to try and put all of the&#10;information into one post. To make it more digestable, I decided to&#10;break it up into separate parts. This is by no means a comprehensive&#10;study of lambda calculus or type theory, but rather a quick introductory&#10;series so you can can get started. My goal is that, by the end, you will&#10;be able to understand enough to start reading papers on your own and&#10;have some cursory knowledge of type systems. Also, I am targeting&#10;programmers that want to get a better understanding of the theory behind&#10;type systems in compiler design. If you are comfortable programming in&#10;functional languages, then you will start to see many parallels quickly.&#10;Although, I will give examples using an imperative approach to cover&#10;programmers who may not immediately appreciate these parallels.&lt;/p&gt;</description></item><item><title>PCAP-NG reader for .NET.</title><link>http://awalsh128.com/pcap-ng-reader-for-net/</link><pubDate>Wed, 10 Apr 2013 00:00:00 -0700</pubDate><guid>http://awalsh128.com/pcap-ng-reader-for-net/</guid><description>&lt;h3 class="relative group"&gt;Introduction &amp;amp; Scope&#10; &lt;div id="introduction--scope" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#introduction--scope" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;The PCAP-NG file format is used to store network captured data used by&#10;great programs like &lt;a href="http://www.wireshark.org/download.html" target="_blank" rel="noreferrer"&gt;Wireshark&lt;/a&gt;.&#10;There are several API's available for both&#10;&lt;a href="http://www.tcpdump.org/" target="_blank" rel="noreferrer"&gt;Linux&lt;/a&gt; and &lt;a href="http://www.winpcap.org/" target="_blank" rel="noreferrer"&gt;Windows&lt;/a&gt;&#10;but none that are ported to .NET. I decided to &lt;a href="https://github.com/awalsh128/PcapngFile/" target="_blank" rel="noreferrer"&gt;make&#10;one&lt;/a&gt; for my own use in&#10;building a network traffic replay agent.&lt;/p&gt;</description></item><item><title>Automated combinatorial and spot testing of web service operations.</title><link>http://awalsh128.com/automated-combinatorial-and-spot/</link><pubDate>Tue, 26 Mar 2013 00:00:00 -0700</pubDate><guid>http://awalsh128.com/automated-combinatorial-and-spot/</guid><description>&lt;h3 class="relative group"&gt;Introduction &amp;amp; Scope&#10; &lt;div id="introduction--scope" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#introduction--scope" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;When developing a new web service, you may need to do an initial spot&#10;test walk through the operations or try to break the service based on&#10;the permissible data type values. You could hand craft all the&#10;operations, with their respective arguments, into a handful of URLs but&#10;that would seem pretty inefficient. I found myself in a similar&#10;situation and wanted a programmatic way to walk through the service&#10;operations with a specific input data set. To be clear, I am not&#10;attempting to recreate a &lt;a href="http://www.soapui.org/" target="_blank" rel="noreferrer"&gt;full web service testing&#10;application&lt;/a&gt; but rather a simple script to spot&#10;check responses and catch any bugs in a web service endpoint's handler.&lt;/p&gt;</description></item><item><title>Text generation using Markov chains.</title><link>http://awalsh128.com/text-generation-using-markov-chains/</link><pubDate>Fri, 04 Jan 2013 00:00:00 -0800</pubDate><guid>http://awalsh128.com/text-generation-using-markov-chains/</guid><description>&lt;h3 class="relative group"&gt;Introduction&#10; &lt;div id="introduction" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#introduction" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;If you are already familiar with &lt;a href="http://en.wikipedia.org/wiki/Finite-state_machine" target="_blank" rel="noreferrer"&gt;finite&#10;automata&lt;/a&gt;, then&#10;understanding a &lt;a href="http://en.wikipedia.org/wiki/Markov_chain" target="_blank" rel="noreferrer"&gt;Markov&#10;chain&lt;/a&gt; will not be as hard.&#10;If you are not familiar with one, you can think of finite automata as a&#10;&lt;a href="http://en.wikipedia.org/wiki/Flowchart" target="_blank" rel="noreferrer"&gt;flowchart&lt;/a&gt;, with states and&#10;paths leading from one state to another &lt;a href="http://xkcd.com/627/" target="_blank" rel="noreferrer"&gt;based on some decision being&#10;made&lt;/a&gt;. An example could be a room with a light&#10;switch; there are the two states of having the light on or off. Using&#10;the light switch will transition you between the two states.&lt;/p&gt;</description></item><item><title>Reading and writing large binary data in T-SQL and ADO.NET.</title><link>http://awalsh128.com/reading-and-writing-large-binary-data/</link><pubDate>Wed, 03 Oct 2012 00:00:00 -0700</pubDate><guid>http://awalsh128.com/reading-and-writing-large-binary-data/</guid><description>&lt;h3 class="relative group"&gt;Introduction&#10; &lt;div id="introduction" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#introduction" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;In some cases, you may want to read/write binary data from/to your&#10;relational database. This can be a problem when the data set size&#10;exceeds the memory address size (eg. 32-bit processes) or the &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc534993.aspx" target="_blank" rel="noreferrer"&gt;managed&#10;large object&#10;heap&lt;/a&gt; cannot&#10;load it all without throwing an&#10;&lt;a href="http://msdn.microsoft.com/en-us/library/system.outofmemoryexception.aspx" target="_blank" rel="noreferrer"&gt;OutOfMemoryException&lt;/a&gt;.&#10;In those cases, you will need to load the data into memory in chunks.&#10;Fortunately, the &lt;a href="http://en.wikipedia.org/wiki/Transact-SQL" target="_blank" rel="noreferrer"&gt;T-SQL&lt;/a&gt;&#10;syntax supports this operation.&lt;/p&gt;</description></item><item><title>Understanding compression and Huffman Coding.</title><link>http://awalsh128.com/understanding-compression-and-huffman/</link><pubDate>Thu, 20 Sep 2012 00:00:00 -0700</pubDate><guid>http://awalsh128.com/understanding-compression-and-huffman/</guid><description>&lt;h3 class="relative group"&gt;Definitions&#10; &lt;div id="definitions" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#definitions" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;In a lot of texts regarding compression you will run across various&#10;conventions of syntax to describe the coding of data. Much of them are&#10;used in fields like &lt;a href="http://en.wikipedia.org/wiki/Automata_theory" target="_blank" rel="noreferrer"&gt;automata&#10;theory&lt;/a&gt;, group theory and&#10;statistics. Although, the field of &lt;a href="http://en.wikipedia.org/wiki/Coding_theory" target="_blank" rel="noreferrer"&gt;coding&#10;theory&lt;/a&gt; itself has &lt;a href="http://en.wikipedia.org/wiki/Timeline_of_information_theory" target="_blank" rel="noreferrer"&gt;a long&#10;and rich&#10;history&lt;/a&gt; in&#10;the 20st century; much of the terminology is borrowed from fields that&#10;gave rise to it.&lt;/p&gt;</description></item><item><title>IMAPI version 2 managed wrapper.</title><link>http://awalsh128.com/imapi-version-2-managed-wrapper/</link><pubDate>Tue, 18 Sep 2012 00:00:00 -0700</pubDate><guid>http://awalsh128.com/imapi-version-2-managed-wrapper/</guid><description>&lt;h3 class="relative group"&gt;Introduction&#10; &lt;div id="introduction" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#introduction" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;Microsoft &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa366450%28v=vs.85%29.aspx" target="_blank" rel="noreferrer"&gt;introduced native image&#10;mastering&lt;/a&gt;&#10;support in Vista, going forward. The library itself is not too complex&#10;but the latest version of the &lt;a href="http://en.wikipedia.org/wiki/Image_Mastering_API" target="_blank" rel="noreferrer"&gt;image mastering API&#10;(IMAPI)&lt;/a&gt; has some&#10;quirks. This is well documented by &lt;a href="http://www.codeproject.com/script/Membership/View.aspx?mid=208197" target="_blank" rel="noreferrer"&gt;Eric&#10;Haddan&lt;/a&gt;&#10;in his&#10;&lt;a href="http://www.codeproject.com/Articles/24544/Burning-and-Erasing-CD-DVD-Blu-ray-Media-with-C-an" target="_blank" rel="noreferrer"&gt;article&lt;/a&gt;&#10;describing how to build an interop file and use it from .NET.&lt;/p&gt;</description></item><item><title>Implementing a bit reader/writer in C.</title><link>http://awalsh128.com/implementing-bit-readerwriter-in-c/</link><pubDate>Thu, 13 Sep 2012 00:00:00 -0700</pubDate><guid>http://awalsh128.com/implementing-bit-readerwriter-in-c/</guid><description>&lt;h3 class="relative group"&gt;Introduction&#10; &lt;div id="introduction" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#introduction" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;I was working on implementing a simple compression tool based on naive&#10;&lt;a href="http://en.wikipedia.org/wiki/Huffman_coding" target="_blank" rel="noreferrer"&gt;Huffman coding&lt;/a&gt; and&#10;initially assumed all of my &lt;a href="http://en.wikipedia.org/wiki/Prefix_code" target="_blank" rel="noreferrer"&gt;prefix&#10;codes&lt;/a&gt; would be at or under a&#10;byte long. Although I failed to account for the &lt;a href="http://www.arturocampos.com/ac_fib_huffman.html#Fibbonaci%20and%20Huffman" target="_blank" rel="noreferrer"&gt;worst case of Huffman&#10;coding&lt;/a&gt;,&#10;which can yield codes up to 255 bits in length.&lt;/p&gt;</description></item><item><title>Licensing using XML digital signing.</title><link>http://awalsh128.com/licensing-using-xml-digital-signing/</link><pubDate>Tue, 14 Aug 2012 00:00:00 -0700</pubDate><guid>http://awalsh128.com/licensing-using-xml-digital-signing/</guid><description>&lt;h3 class="relative group"&gt;Motivation&#10; &lt;div id="motivation" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#motivation" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;One of the main concerns in any licensing implementation is that&#10;authored license files are coming from the trusted authority (ie. your&#10;company) and not some third party. This can be accomplished in software&#10;by encrypting and decrypting the license with a &lt;a href="http://en.wikipedia.org/wiki/Symmetric-key_algorithm" target="_blank" rel="noreferrer"&gt;single&#10;key&lt;/a&gt;, but&#10;symmetric &lt;a href="http://en.wikipedia.org/wiki/Key_management" target="_blank" rel="noreferrer"&gt;key storage&lt;/a&gt; can&#10;be cumbersome and have added complexity.&lt;/p&gt;</description></item><item><title>Automate IIS enable on Windows 7.</title><link>http://awalsh128.com/automate-iis-enable-on-windows-7/</link><pubDate>Mon, 30 Jul 2012 00:00:00 -0700</pubDate><guid>http://awalsh128.com/automate-iis-enable-on-windows-7/</guid><description>&lt;h3 class="relative group"&gt;Background&#10; &lt;div id="background" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#background" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;There are plenty of sites that will tell you how to enable IIS through&#10;the Control Panel. Although, if you are tasked with enabling IIS&#10;automatically (eg. for an installer), it can be a nightmare. This is&#10;only really needed though in special cases where the installer has more&#10;control over the hardware specifications. Determining an upgrade or&#10;uninstall scenario with IIS can be very tough since you are not&#10;installing your own software but rather enabling a feature of Windows.&#10;With that in mind, we can propose a solution for automated enabling of&#10;IIS.&lt;/p&gt;</description></item><item><title>Converting thermocouple voltages to temperature.</title><link>http://awalsh128.com/converting-thermocouple-voltages-to/</link><pubDate>Wed, 25 Jul 2012 00:00:00 -0700</pubDate><guid>http://awalsh128.com/converting-thermocouple-voltages-to/</guid><description>&lt;h3 class="relative group"&gt;Background&#10; &lt;div id="background" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#background" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;Unlike most sensors used in data acquisition, thermocouples do not have&#10;a linear mapping between their voltage and celcius values. This means&#10;that instead of factoring some scalar value against the data, in order&#10;to scale it to engineering units (eg. volts to acceleration), an&#10;&lt;a href="http://en.wikipedia.org/wiki/Thermocouple#Voltage.E2.80.93temperature_relationship" target="_blank" rel="noreferrer"&gt;experimentally derived&#10;equation&lt;/a&gt;&#10;must be created to approximate the temperature at specific voltages.&#10;This non-linearity is primarily due to the materials being used to&#10;discover the temperature difference.&lt;/p&gt;</description></item><item><title>Bit specific builds in Visual Studio 2010.</title><link>http://awalsh128.com/bit-specific-builds-in-visual-studio/</link><pubDate>Mon, 23 Apr 2012 00:00:00 -0700</pubDate><guid>http://awalsh128.com/bit-specific-builds-in-visual-studio/</guid><description>&lt;h2 class="relative group"&gt;Using Conditioned Tags&#10; &lt;div id="using-conditioned-tags" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#using-conditioned-tags" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The Visual Studio 2010 UI does not have options to handle conditional&#10;references based on what kind of configuration and platform you are&#10;running. For example, you may have a project reference that needs to&#10;change depending on whether you are doing a 32 or 64 bit build.&lt;/p&gt;</description></item><item><title>WPF and data multithreading deadlocks.</title><link>http://awalsh128.com/wpf-and-data-multithreading-deadlocks/</link><pubDate>Wed, 21 Dec 2011 00:00:00 -0800</pubDate><guid>http://awalsh128.com/wpf-and-data-multithreading-deadlocks/</guid><description>&lt;h2 class="relative group"&gt;WPF &amp;amp; Multithreading&#10; &lt;div id="wpf--multithreading" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#wpf--multithreading" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;In designing applications, it may be advantageous to run data processing&#10;methods on a separate thread from the UI. This allows greater&#10;responsiveness in the application and takes advantage of concurrent&#10;computation.&lt;/p&gt;</description></item><item><title>Tips for Java performance on Android.</title><link>http://awalsh128.com/tips-for-java-performance-on-android/</link><pubDate>Fri, 16 Dec 2011 00:00:00 -0800</pubDate><guid>http://awalsh128.com/tips-for-java-performance-on-android/</guid><description>&lt;p&gt;While Java may be a higher level language that makes code writeability&#10;easier, conventions must be broken when developing on Android to reap&#10;performance gains. This is especially true for games where logic and&#10;rendering must be done on a tight loop.&lt;/p&gt;</description></item><item><title>POCO not transforming into a POCO proxy.</title><link>http://awalsh128.com/poco-not-transforming-into-poco-proxy/</link><pubDate>Mon, 07 Nov 2011 00:00:00 -0800</pubDate><guid>http://awalsh128.com/poco-not-transforming-into-poco-proxy/</guid><description>&lt;p&gt;A POCO (Plain Old CLR Object) must be transformed into a POCO proxy&lt;br&gt;&#10;[MyNamespace.MyClass&#10;-&amp;gt;{System.Data.Entity.DynamicProxies.MyClass_0A943C2FC37D33304CEB497A9210C754E3F553B50315F8E6F0F7A6FAF43777F2}]{.Apple-style-span&#10;style=&amp;ldquo;font-size: x-small;&amp;rdquo;})&lt;br&gt;&#10;in order for features like lazy loading and change tracking to work.&lt;br&gt;&#10;&lt;br&gt;&#10;&lt;a href="http://msdn.microsoft.com/en-us/library/dd468057.aspx" target="_blank" rel="noreferrer"&gt;MSDN has a great&#10;article&lt;/a&gt; that&#10;explains how to prepare a POCO to be transformed into a proxy. If you&#10;find that an object retrieved or attached to the context does not show&#10;itself in the DynamicProxies namespace (eg. MyNamespace.MyClass instead&#10;of ...DynamicProxies.MyClass), then you probably don't have a&#10;compliant class. You may have noticed this already when hovering your&#10;mouse cursor over an instance and seeing the runtime information on it.&lt;br&gt;&#10;&lt;br&gt;&#10;The distilled points are that your POCO must:&lt;/p&gt;</description></item><item><title>Detecting cycles in decimal digits and lists.</title><link>http://awalsh128.com/detecting-cycles-in-decimal-digits-and/</link><pubDate>Sun, 16 Oct 2011 00:00:00 -0700</pubDate><guid>http://awalsh128.com/detecting-cycles-in-decimal-digits-and/</guid><description>&lt;p&gt;I was recently working on solving &lt;a href="http://projecteuler.net/problem=64" target="_blank" rel="noreferrer"&gt;problem 64 for project&#10;Euler&lt;/a&gt; and one of the needed&#10;algorithms was a detection of cycles in a list. This routine works for&#10;detecting cycles in lists of cardinality greater than 2.&lt;br&gt;&#10;\&lt;/p&gt;</description></item><item><title>Entity Framework June 2011 CTP Bug</title><link>http://awalsh128.com/entity-framework-june-2011-ctp-bug/</link><pubDate>Sat, 08 Oct 2011 00:00:00 -0700</pubDate><guid>http://awalsh128.com/entity-framework-june-2011-ctp-bug/</guid><description>&lt;p&gt;I recently installed the Entity Framework June 2011 CTP to preview the&#10;enum support but ran into a bug along the way that reported an error&#10;while processing the template.&lt;br&gt;&#10;\&lt;/p&gt;</description></item><item><title>EF 4.1 Code First: Many one-to-one properties for same class type on an object.</title><link>http://awalsh128.com/ef-41-code-first-many-one-to-one/</link><pubDate>Wed, 05 Oct 2011 00:00:00 -0700</pubDate><guid>http://awalsh128.com/ef-41-code-first-many-one-to-one/</guid><description>&lt;p&gt;I just started using the Entity Framework recently to employ persistence&#10;for an already established code base. Initially I was using the &amp;quot;Model&#10;&amp;amp; Database First&amp;quot; paradigm where a designer is used to layout the data&#10;model. Although, this ended up being tedious since my&#10;&lt;a href="http://en.wikipedia.org/wiki/Plain_Old_CLR_Object" target="_blank" rel="noreferrer"&gt;POCO&lt;/a&gt; instance had&#10;to exactly match the &lt;a href="http://msdn.microsoft.com/en-us/library/dd456853.aspx" target="_blank" rel="noreferrer"&gt;POCO&#10;proxy&lt;/a&gt; instance&#10;in my model designer view. After upgrading to EF 4.1, I realized the&#10;&lt;a href="http://blogs.msdn.com/b/adonet/archive/2011/09/13/ef-code-first-fluent-api-with-vb-net.aspx" target="_blank" rel="noreferrer"&gt;&amp;quot;Code First&amp;quot;&#10;paradigm&lt;/a&gt;&#10;was the way to go since I had to adapt the persistence model to my&#10;already existing code.&lt;br&gt;&#10;&lt;br&gt;&#10;One of the earliest problems that I ran into was having more than one&#10;property on a class that referenced the same class type. This example&#10;was taken from &lt;a href="http://weblogs.asp.net/manavi/archive/2011/03/28/associations-in-ef-4-1-code-first-part-2-complex-types.aspx" target="_blank" rel="noreferrer"&gt;a great&#10;site&lt;/a&gt;&#10;that explored the different EF properties.&lt;br&gt;&#10;[]{.Apple-style-span&#10;style=&amp;ldquo;background-color: #f8f8f8; color: #2e2e2e; font-family: &amp;lsquo;Courier New&amp;rsquo;, Courier, mono; font-size: 12px;&amp;rdquo;}\&lt;/p&gt;</description></item><item><title>Pseudo random proportional scheduling in games.</title><link>http://awalsh128.com/pseudo-random-proportional-scheduling/</link><pubDate>Fri, 02 Sep 2011 00:00:00 -0700</pubDate><guid>http://awalsh128.com/pseudo-random-proportional-scheduling/</guid><description>&lt;p&gt;I have been working on a game where enemy characters must select a&#10;target seemingly at random but such that the distribution of selected&#10;targets is balanced. Initially I had come up with a randomization&#10;algorithm with weighted values for each target but this became&#10;cumbersome and much too complex.&lt;br&gt;&#10;&lt;br&gt;&#10;Then I remembered the scheduling algorithms from my Operating Systems&#10;class. In particular, the &lt;a href="http://en.wikipedia.org/wiki/Lottery_scheduling" target="_blank" rel="noreferrer"&gt;lottery scheduling&#10;algorithm&lt;/a&gt;.&lt;br&gt;&#10;\&lt;/p&gt;</description></item><item><title>Writing a TEDS (IEEE 1451.4) parser.</title><link>http://awalsh128.com/writing-teds-ieee-14514-parser/</link><pubDate>Wed, 17 Aug 2011 00:00:00 -0700</pubDate><guid>http://awalsh128.com/writing-teds-ieee-14514-parser/</guid><description>&lt;p&gt;I was tasked recently with writing a parser for TEDS bit stream data.&#10;There is an &lt;a href="http://standards.ieee.org/develop/regauth/tut/teds.pdf" target="_blank" rel="noreferrer"&gt;IEEE published&#10;paper&lt;/a&gt; with an&#10;overview of the standard but it doesn't give any examples for&#10;implementation. I was finally able to find a&#10;&lt;a href="http://standards.ieee.org/develop/regauth/tut/tdl.pdf" target="_blank" rel="noreferrer"&gt;paper&lt;/a&gt; that gave&#10;examples but still had trouble parsing the data. I finally realized&#10;there is not only 2 selector bits after the basic TEDS block but&#10;selector bits inside the standard template (2 in the case of template&#10;25). Here are my main findings:&lt;br&gt;&#10;\&lt;/p&gt;</description></item><item><title>Reentrant lock acquires in CLR.</title><link>http://awalsh128.com/reentrant-lock-acquires-in-clr/</link><pubDate>Fri, 29 Jul 2011 00:00:00 -0700</pubDate><guid>http://awalsh128.com/reentrant-lock-acquires-in-clr/</guid><description>&lt;p&gt;I always like when a post gets to the point (especially after searching&#10;in Google). In short, &lt;em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms741870.aspx" target="_blank" rel="noreferrer"&gt;if you perform an operation that waits to&#10;acquire a lock, the thread doesn't actually&#10;stop&lt;/a&gt;&lt;/em&gt;.&lt;br&gt;&#10;&lt;br&gt;&#10;In concrete terms of .NET coding, if you call the&#10;&lt;a href="http://msdn.microsoft.com/en-us/library/system.threading.waithandle.waitone.aspx" target="_blank" rel="noreferrer"&gt;WaitOne&lt;/a&gt; method&#10;on a thread, it may still process events that the CLR deems &amp;quot;high&#10;priority&amp;quot;. This can be a big problem if the event handlers go into the&#10;critical region you are trying to protect.&lt;br&gt;&#10;\&lt;/p&gt;</description></item><item><title>Namespaces for classes.</title><link>http://awalsh128.com/namespace-within-classes/</link><pubDate>Fri, 22 Jul 2011 00:00:00 -0700</pubDate><guid>http://awalsh128.com/namespace-within-classes/</guid><description>&lt;p&gt;When designing classes for outside use (eg. API) or as a library&#10;component for multiple applications, readability and easy element&#10;(field/function) selection is important. No developer likes hunting&#10;around for fields or functions; a legible and hierarchical organization&#10;of elements aids quicker turnaround time in code delivery.&lt;br&gt;&#10;&lt;br&gt;&#10;In some cases, a large class is needed that can possibly contain dozens&#10;or hundreds of elements. Naming convention can aid in this organization&#10;(ie. using common prefixes in field/function names) but are not inherent&#10;to the grammar of languages. Therefore, no semantic advantage can be&#10;taken from using these conventions.&lt;br&gt;&#10;&lt;br&gt;&#10;&lt;code&gt;class Store   ItemList clothingMensShirts   ItemList clothingMensShoes   ...   ItemList clothingWomensShirts   ItemList clothingWomensShoes   ...   ItemList hardwareToolsWrenches   ...   ItemList hardwareMaterialsWood   ...   ItemList electronicsGamesPCFallout3Copies   ...   ItemList electronicsAudioHeadphones   ...&lt;/code&gt;&lt;br&gt;&#10;&lt;br&gt;&#10;The current solution to the management of large classes is by using&#10;publicly exposed nested classes.&lt;br&gt;&#10;&lt;br&gt;&#10;&lt;code&gt;class Clothing inherits Department   ClothingSection mens   ...class Mens inherits ClothingSection   ItemList shirt   ItemList shoes   ...abstract class Store   ...   Department clothing   ...class IKEA inherits Store   ...IKEA newYorkStore = new IKEA();newYorkStore.buy(newYorkStore.clothing.mens.shirts[0]);&lt;/code&gt;&lt;br&gt;&#10;&lt;br&gt;&#10;This is a possible solution but also comes with it's own problems.&#10;Encapsulation of the nested class will not only hide information from&#10;the public user but also from the parent class as well. This can be&#10;problematic when designing an abstract class where the functions, that&#10;must be implemented, must also access non-public elements inside the&#10;nested. For example, in the store example, any data the top level class&#10;(Store) may want to access from the lower level ones (ClothingSection,&#10;ItemList) will be unavailable if that data must also be hidden from the&#10;public user.&lt;br&gt;&#10;&lt;br&gt;&#10;Also, the nested classes cannot be abstracted to require implementation&#10;from any inheriting class. Revisting the store example, this means that&#10;abstracting the ClothingSection class would require two new classes for&#10;one implementation. Creating not only a child Store but also a child&#10;ClothingSection class.&lt;br&gt;&#10;&lt;br&gt;&#10;Nested classes are helpful for creating logical hierarchies within a&#10;class or providing abstract functionality privately inside the class.&#10;Although, I would propose the use of namespacing inside a class instead.&#10;It would provide the logical hierarchy needed in a very simple way and&#10;allow for information sharing across the entire domain of the class. It&#10;would need a separate keyword though to prevent use outside of classes.&lt;br&gt;&#10;&lt;br&gt;&#10;&lt;code&gt;class Storeclassnamespace clothing   classnamespace mens      ItemList shirts      ItemList shoes      ...   ...   classnamespace womens      ItemList shirts      ItemList shoes      ...   ...   classnamespace hardware      classnamespace tools         ItemList wrenches         ...      ...      classnamespace materials         ItenList Wood         ...      ...   ...&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Delete long file path names.</title><link>http://awalsh128.com/delete-long-file-path-names/</link><pubDate>Tue, 19 Jul 2011 00:00:00 -0700</pubDate><guid>http://awalsh128.com/delete-long-file-path-names/</guid><description>&lt;p&gt;I made the stupid mistake of importing an Eclipse project into my&#10;workspace when the &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=279781" target="_blank" rel="noreferrer"&gt;import location was from the workspace&#10;itself&lt;/a&gt;. I went to&#10;delete the recursive folder when I encountered an error that the file&#10;path name was too long to delete.&lt;br&gt;&#10;&lt;br&gt;&#10;The &lt;a href="http://stackoverflow.com/questions/236533/how-do-you-automate-copying-file-with-path-too-deep-issues-in-windows" target="_blank" rel="noreferrer"&gt;best manual&#10;solution&lt;/a&gt;&#10;that I found was to go as deep as possible in the recursive folder and&#10;then map it to a virtual drive.&lt;br&gt;&#10;[&lt;br&gt;&#10;]{.Apple-style-span&#10;style=&amp;ldquo;font-family: &amp;lsquo;Courier New&amp;rsquo;, Courier, monospace;&amp;rdquo;}&lt;br&gt;&#10;[subst x: c:\recursiveFolder\]{.Apple-style-span&#10;style=&amp;ldquo;font-family: &amp;lsquo;Courier New&amp;rsquo;, Courier, monospace;&amp;rdquo;}[recursiveFolder\]{.Apple-style-span&#10;style=&amp;ldquo;font-family: &amp;lsquo;Courier New&amp;rsquo;, Courier, monospace;&amp;rdquo;}[recursiveFolder\...]{.Apple-style-span&#10;style=&amp;ldquo;font-family: &amp;lsquo;Courier New&amp;rsquo;, Courier, monospace;&amp;rdquo;}&lt;br&gt;&#10;[&lt;br&gt;&#10;]{.Apple-style-span style=&amp;ldquo;font-family: inherit;&amp;rdquo;}&lt;br&gt;&#10;[This can be quite an arduous process; I found myself creating up to 9&#10;virtual drives. It eventually worked though and I was able to delete the&#10;recursive folder.]{.Apple-style-span style=&amp;ldquo;font-family: inherit;&amp;rdquo;}&lt;br&gt;&#10;[&lt;br&gt;&#10;]{.Apple-style-span style=&amp;ldquo;font-family: inherit;&amp;rdquo;}&lt;br&gt;&#10;[I also &lt;a href="http://processors.wiki.ti.com/index.php/Recursive_Directory_Bug_in_Eclipse_Project_Import" target="_blank" rel="noreferrer"&gt;found a&#10;site&lt;/a&gt;&#10;with a Perl script that deletes long file paths but haven't tested it&#10;myself.]{.Apple-style-span style=&amp;ldquo;font-family: inherit;&amp;rdquo;}&lt;/p&gt;</description></item><item><title>Representing scientific units in code.</title><link>http://awalsh128.com/representing-scientific-units-in-code/</link><pubDate>Wed, 13 Jul 2011 00:00:00 -0700</pubDate><guid>http://awalsh128.com/representing-scientific-units-in-code/</guid><description>&lt;p&gt;I have been working on implementing a stream reader for &lt;a href="http://standards.ieee.org/develop/regauth/tut/teds.pdf" target="_blank" rel="noreferrer"&gt;IEEE 1451.4&#10;TEDS&lt;/a&gt; and came&#10;across this interesting&#10;&lt;a href="http://www.hpl.hp.com/techreports/96/HPL-96-61.pdf" target="_blank" rel="noreferrer"&gt;paper&lt;/a&gt; regarding&#10;representation of scientific units in code. It provides solutions to&#10;determining unit equivalency (eg. V/(m•kg/s²) = m/(s•A)). Also&#10;discovered some indivisible base units that can represent any unit (amp,&#10;candela, kelvin, gram, meter, mole, radian, second). With a bit to&#10;represent the placement (high for numerator, low for denominator) and a&#10;bit for presence, a unit storage type can be derived that only occupies&#10;2 bytes.&lt;/p&gt;</description></item><item><title>Using Ubuntu 10.04 with SVN+HTTP.</title><link>http://awalsh128.com/using-ubuntu-1004-with-svnhttp/</link><pubDate>Wed, 13 Jul 2011 00:00:00 -0700</pubDate><guid>http://awalsh128.com/using-ubuntu-1004-with-svnhttp/</guid><description>&lt;p&gt;I setup a server recently using Ubuntu 10.04. LAMP was easy to&#10;configure, as was Subversion. Although making Subversion and Apache2&#10;play nice together with DAV SVN was a nightmare. I followed the &lt;a href="https://help.ubuntu.com/10.04/serverguide/C/subversion.html" target="_blank" rel="noreferrer"&gt;guide&#10;provided&lt;/a&gt; but&#10;the website location just kept reprompting for my login.&lt;br&gt;&#10;&lt;br&gt;&#10;After hours of running in circles, I was able to find the solution. The&#10;&lt;em&gt;Require valid-user&lt;/em&gt; directive in&#10;/etc/apache2/mods-available/dav_svn.conf &lt;a href="http://www.linuxquestions.org/questions/showthread.php?p=4413943#post4413943" target="_blank" rel="noreferrer"&gt;required the Limit&#10;directive&lt;/a&gt;&#10;to be around it.&lt;br&gt;&#10;\&lt;/p&gt;</description></item></channel></rss>