<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Direct DevBlog</title>
	<atom:link href="http://www.directsystems.com/devblog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.directsystems.com/devblog</link>
	<description>Cracking the code!</description>
	<lastBuildDate>Tue, 01 Sep 2009 02:00:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Your Weakness Could Be Your Biggest Asset</title>
		<link>http://www.directsystems.com/devblog/2009/08/31/your-weakness-could-be-your-biggest-asset/</link>
		<comments>http://www.directsystems.com/devblog/2009/08/31/your-weakness-could-be-your-biggest-asset/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 01:45:46 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[New Technology]]></category>
		<category><![CDATA[P2P]]></category>
		<category><![CDATA[PNRP]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[Windows Server 2003]]></category>

		<guid isPermaLink="false">http://www.directsystems.com/devblog/?p=50</guid>
		<description><![CDATA[I work alone, from a developer&#8217;s perspective, so I don&#8217;t really know how other programmers embrace new technology. In the past, I would have to scour Google looking for bits and pieces of information and scroll through pages of ads to get an &#8220;expert&#8221; opinion. Now a days,  I can use the company credit [...]]]></description>
			<content:encoded><![CDATA[<p>I work alone, from a developer&#8217;s perspective, so I don&#8217;t really know how other programmers embrace new technology. In the past, I would have to scour Google looking for bits and pieces of information and scroll through pages of ads to get an &#8220;expert&#8221; opinion. Now a days,  I can use the company credit card (Thanks Howard!) to check out the technical books on Amazon.com and grab a hard copy of the highest rated and a few digital copies of anything else that piqued my interest.   I still use the web to find code samples and such, but not as much to understand the concepts and strengths of the technology. Instead I  use it to find it&#8217;s WEAKNESSES.  What are the coders asking about? What are the consultants grumbling about?</p>
<p>Since my job description was to bring Direct&#8217;s software into the fast lane of innovation, we moved closer to becoming a Microsoft shop.  There were some grumbles around the office, but IMHO, Microsoft has ALWAYS provided the best design environment (Visual Studio) mixed with plenty of online documentation (MSDN) and  examples (CodePlex).   My predecessor had signed us up for the Microsoft Action Pack  (Microsoft Partners Program) which gave us in-house licenses of nearly every one of their products from Office to Servers.  It only came with 5 licenses of Vista Business and no Windows 7, so we couldn&#8217;t test in every environment.   Luckily, our Action Pack subscription was up and we decided to go with the Empower for ISV (Microsoft Partners Program) which is designed for either new businesses or existing businesses who have decided to design their products for Microsoft platforms.  I had to jump through a few hoops to complete enrollment (curse you website requirements!) but it all paid off because an added bonus was 40 hours of support/consultation with MS experts and 5 seats of Visual Studio 2008 Professional AND VS 2010 Beta w/ .NET 4.0.</p>
<p>Microsoft&#8217;s .NET technologies first came out right as I was graduating but didn&#8217;t catch my eye at that point.  My last shop was using Visual Basic 6.0 with &#8220;plans&#8221; of moving over to VB.NET.    Upon arrival at Direct Systems, I had free reign  to follow my hearts desire as far as strategies and tools for our system migration.  My vision was to have a fully connected system that was network aware, centrally  maintained and able to track the presence of users and services available.  With Windows Communication Foundation (WCF), formerly Indigo, included in all .NET versions since 2.0, I was provided with a structural framework that seemed to fit my needs.</p>
<p>I knew nothing of networking and web services before I started developing with WCF.  I had some good resources, but it was like boot camp trying to wrap my head around some of the different concepts.  The hardest part was deciding on one of the various implementations to be the FRAMEWORK of my new system.  TCP or HTTP or NamedPipes or MSMQ or P2P.  Luckily with WCF it&#8217;s easy to implement all of them side by side, but I needed one to be the core.</p>
<p>I had been leaning towards Peer2Peer due to it&#8217;s self governing mesh topology and inherent multi-casting.   The main drawback SEEMED to be decentralization.  I wanted to be able to not only monitor but centrally dispatch data and messages to the peers on the mesh.  I decided to move forward and start implementing P2P.  In the process I developed a Logger monitor app and a CentralService service application that maintains the system from the server.</p>
<p>I ran into a stumbling block when I tried to establish a P2P connection from our development Windows Server 2003.  At first I thought it might be firewall settings, but it wasn&#8217;t.  Turns out the problem lies in the way the mesh governs itself.  The technology is call Peer Name Resolution Protocol (PNRP) and comes in XP, Vista and Server 2008 under Advanced Networking.  Unfortunately, it didn&#8217;t come included in Windows Server 2003!  Microsoft has added the ability to circumvent this and create your own custom resolver that you can self host in a 2003 environment.  This seemed like  a headache having to write custom code that an update could have patched.  After some discussion with Bob, I started to implement the custom resolver and had a moment of clarity!  I could just host the resolver inside the CentralService.  The act of looking for the custom resolver was a way for the peer node to make contact with my service and start sharing information.</p>
<p>So in the end, what seemed like a weakness was actually my biggest asset!</p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=Your+Weakness+Could+Be+Your+Biggest+Asset+http://qhx5s.th8.us" title="Post to Twitter"><img class="nothumb" src="http://www.directsystems.com/devblog/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://www.directsystems.com/devblog/2009/08/31/your-weakness-could-be-your-biggest-asset/&amp;t=Your+Weakness+Could+Be+Your+Biggest+Asset" title="Post to Facebook"><img class="nothumb" src="http://www.directsystems.com/devblog/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://www.directsystems.com/devblog/2009/08/31/your-weakness-could-be-your-biggest-asset/&amp;t=Your+Weakness+Could+Be+Your+Biggest+Asset" title="Post to Facebook">Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.directsystems.com/devblog/2009/08/31/your-weakness-could-be-your-biggest-asset/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>P2P and Everywhere!</title>
		<link>http://www.directsystems.com/devblog/2009/08/14/p2p-and-everywhere/</link>
		<comments>http://www.directsystems.com/devblog/2009/08/14/p2p-and-everywhere/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 19:34:48 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Central Service]]></category>
		<category><![CDATA[Loading Dock]]></category>
		<category><![CDATA[P2P]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://www.directsystems.com/devblog/?p=42</guid>
		<description><![CDATA[Both the Loading Dock and Central Service are built on Microsoft .NET framework, specifically Windows Communication Foundation.  The applications will utilize Peer-to-Peer (P2P) technology  to perform functions such as authentication, tracing, administration and load balancing.  Unlike traditional pure (de-centralized) networks commonly associated with P2P (file sharing for example), we are implementing a hybrid mesh, with [...]]]></description>
			<content:encoded><![CDATA[<p>Both the Loading Dock and Central Service are built on Microsoft .NET framework, specifically Windows Communication Foundation.  The applications will utilize Peer-to-Peer (P2P) technology  to perform functions such as authentication, tracing, administration and load balancing.  Unlike traditional pure (de-centralized) networks commonly associated with P2P (file sharing for example), we are implementing a hybrid mesh, with the Central Service logging and responding to requests from peer applications.</p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=P2P+and+Everywhere%21+http://6roik.th8.us" title="Post to Twitter"><img class="nothumb" src="http://www.directsystems.com/devblog/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://www.directsystems.com/devblog/2009/08/14/p2p-and-everywhere/&amp;t=P2P+and+Everywhere%21" title="Post to Facebook"><img class="nothumb" src="http://www.directsystems.com/devblog/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://www.directsystems.com/devblog/2009/08/14/p2p-and-everywhere/&amp;t=P2P+and+Everywhere%21" title="Post to Facebook">Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.directsystems.com/devblog/2009/08/14/p2p-and-everywhere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>File Cabinet: The New Correspondence Manager</title>
		<link>http://www.directsystems.com/devblog/2009/07/19/file-cabinet-the-new-correspondence-manager/</link>
		<comments>http://www.directsystems.com/devblog/2009/07/19/file-cabinet-the-new-correspondence-manager/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 17:14:08 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[File Cabinet]]></category>
		<category><![CDATA[file formats]]></category>
		<category><![CDATA[FILESTREAM]]></category>
		<category><![CDATA[SQL Server 2008]]></category>

		<guid isPermaLink="false">http://www.directsystems.com/devblog/?p=36</guid>
		<description><![CDATA[I&#8217;m developing a new module called &#8220;File Cabinet&#8221; that is a central repository for storage and distribution of text and image files.
By utilizing the FILESTREAM attribute of the varbinary(MAX)  data type in Microsoft SQL Server 2008 (any edition) we are actually storing the binary file information directly to an NTFS store configured on the same [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m developing a new module called &#8220;File Cabinet&#8221; that is a central repository for storage and distribution of text and image files.</p>
<p>By utilizing the FILESTREAM attribute of the varbinary(MAX)  data type in Microsoft SQL Server 2008 (any edition) we are actually storing the binary file information directly to an NTFS store configured on the same machine as the SQL Server instance.  Studies have shown that data under 256k is better stored and accessed through the SQL Server API in a varbinary(MAX) field and that blob data larger than 1MB performs better when streamed from an NTFS store.  FILESTREAM allows you to access your larger files more efficiently  so it doesn&#8217;t have to eat up the buffer in your database and cause massive slowdowns.  The system doesn&#8217;t work well with numerous read/writes because it completely replaces the blob data each time, leading to data fragmentation.  Luckily most of our correspondence is set it and forget it.</p>
<p>Here is the  initial list of supported file formats:</p>
<ul>
<li> Plain text files (.txt)**</li>
<li>Rich text files (.rtf)**</li>
<li>Adobe Acrobat (.pdf)*</li>
<li>All image files (.jpg/.jpeg/.bmp/.gif/.png/.tif)*</li>
<li>MS Office Excel (.xls / .xlsx)</li>
<li>MS Office Word (.doc/.docx)</li>
</ul>
<p>* Viewable from within the application<br />
** Editable and viewable from with the application</p>
<p>It will feature:</p>
<ul>
<li> drag and drop storage or viewing of documents/images/text from the file system or the clipboard</li>
<li> variable replacement based on database values or business logic</li>
<li> multiple points of integration: depending on the command line, the file cabinet will be specific to a user, shipment, or account</li>
<li> assignment of viewing/editing rights to other users</li>
</ul>
<p>Our previous version of this product was the &#8220;Correspondence Manager&#8221; which stored paths to file locations but still offered variable replacement and rich text editing.</p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=File+Cabinet%3A+The+New+Correspondence+Manager+http://iamxp.th8.us" title="Post to Twitter"><img class="nothumb" src="http://www.directsystems.com/devblog/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://www.directsystems.com/devblog/2009/07/19/file-cabinet-the-new-correspondence-manager/&amp;t=File+Cabinet%3A+The+New+Correspondence+Manager" title="Post to Facebook"><img class="nothumb" src="http://www.directsystems.com/devblog/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://www.directsystems.com/devblog/2009/07/19/file-cabinet-the-new-correspondence-manager/&amp;t=File+Cabinet%3A+The+New+Correspondence+Manager" title="Post to Facebook">Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.directsystems.com/devblog/2009/07/19/file-cabinet-the-new-correspondence-manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Home Alone</title>
		<link>http://www.directsystems.com/devblog/2009/07/16/home-alone/</link>
		<comments>http://www.directsystems.com/devblog/2009/07/16/home-alone/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 00:56:55 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[Staff]]></category>

		<guid isPermaLink="false">http://www.directsystems.com/devblog/?p=28</guid>
		<description><![CDATA[So Bob is out of town on vacation for 2 weeks&#8230; I have the place to myself!!!  Well, not exactly. There&#8217;s always Lynsey manning the front desk and Howard coming in to stir up the pot and run the day to day.  Our support staff works from home either all or part of the time, [...]]]></description>
			<content:encoded><![CDATA[<p>So Bob is out of town on vacation for 2 weeks&#8230; I have the place to myself!!!  Well, not exactly. There&#8217;s always Lynsey manning the front desk and Howard coming in to stir up the pot and run the day to day.  Our support staff works from home either all or part of the time, so occasionally I do get some solitude to plug away at the new software.  Even then the phones still ring!!</p>
<p>Speaking of the &#8220;new software&#8221;, we are at a pivotal point in the development process.  One of our main focuses is the migration from a file-based TopSpeed DB to <a title="Overview, data platform, store data" href="http://www.microsoft.com/sqlserver/2008/en/us/default.aspx" target="_blank">Microsoft SQL Server</a>.  The goal is more reliability and scalability.  While Bob is off somewhere sipping on bahama mamas and NOT thinking about <a title="Direct Systems Website" href="http://www.directsystems.com/" target="_blank">Direct Systems</a>, he has tasked me with setting up a fresh instance of <a title="Simple, free and powerful!" href="http://www.microsoft.com/express/sql/default.aspx" target="_blank">MS SQL Server 2008 Express Edition</a> on our newly re-purposed file server turned development server.  There are many prerequisites like the annoying Web Platform Installer (PI) and .NET 3.5 SP1 among a laundry list of others. The key here is merging our two databases together.  Until now, Bob and I have been working off of essentially the same data hosted on our individual computers.  It&#8217;s time to join forces and show everyone how well our two systems work together.  I&#8217;ll go into more detail in another post.</p>
<p>For now, just know that the install is complete and the .sql files have all been processed.  And I can rest easy tonight, just like Bob probably is&#8230;</p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=Home+Alone+http://3q73h.th8.us" title="Post to Twitter"><img class="nothumb" src="http://www.directsystems.com/devblog/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://www.directsystems.com/devblog/2009/07/16/home-alone/&amp;t=Home+Alone" title="Post to Facebook"><img class="nothumb" src="http://www.directsystems.com/devblog/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://www.directsystems.com/devblog/2009/07/16/home-alone/&amp;t=Home+Alone" title="Post to Facebook">Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.directsystems.com/devblog/2009/07/16/home-alone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
