<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Binary Delusions</title>
	<atom:link href="http://binarydelusions.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://binarydelusions.com</link>
	<description>Musings of an coder trapped in an Infrastructure role.</description>
	<lastBuildDate>Sun, 27 May 2012 00:30:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='binarydelusions.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Binary Delusions</title>
		<link>http://binarydelusions.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://binarydelusions.com/osd.xml" title="Binary Delusions" />
	<atom:link rel='hub' href='http://binarydelusions.com/?pushpress=hub'/>
		<item>
		<title>Raw Notes from Windows Azure Kickstart Event</title>
		<link>http://binarydelusions.com/2012/05/02/raw-notes-from-windows-azure-kickstart-event/</link>
		<comments>http://binarydelusions.com/2012/05/02/raw-notes-from-windows-azure-kickstart-event/#comments</comments>
		<pubDate>Wed, 02 May 2012 19:38:05 +0000</pubDate>
		<dc:creator>Jason Myers</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://binarydelusions.com/?p=632</guid>
		<description><![CDATA[After today - WALearningPath.cloudapp.net - Webcases - 300 level      - windowsazurebootcamp.com - 400 level      - Coming soon - MicrosoftPlatformReady.com @dburton our teacher will be at codestock talking about node.js Cloud is about mitigating the ebbs and flows of your application and the resource requirements associated with that. Often we upgrade datacenter [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=632&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div>After today</p>
<div>- WALearningPath.cloudapp.net</div>
<div>- Webcases</div>
<div>- 300 level</div>
<div>     - windowsazurebootcamp.com</div>
<div>- 400 level</div>
<div>     - Coming soon</div>
<div>- MicrosoftPlatformReady.com</div>
<div></div>
<div>@dburton our teacher will be at codestock talking about node.js</div>
<div></div>
<div>Cloud is about mitigating the ebbs and flows of your application and the resource requirements associated with that.</div>
<div>Often we upgrade datacenter peak load capabilities for the rare events</div>
<div>Cloud &#8211; MS Definition</div>
<div>- An approach to computing that&#8217;s about internet scale and connecting to a variety of devices and endpoints.</div>
<div></div>
<div>Abstractions</div>
<div> - Ultimately cloud is collection of hardware in data centers</div>
<div> - Racks, Routers, Blades</div>
<div> - Azure Fabric enfore contraints for SLA (ha, Red, Perf)</div>
<div></div>
<div>Core Services</div>
<div> - Compute (VMs)</div>
<div> - Storage</div>
<div> - Database</div>
<div></div>
<div>Optional Services</div>
<div> - Caching</div>
<div> - CDN</div>
<div> - Service Bus (Service Abstraction)</div>
<div> - Reporting</div>
<div> - Data Sync</div>
<div> - Federated Identity (external partners for allowing access without internal accounts)</div>
<div> - HPC</div>
<div></div>
<div>Consumption Prices</div>
<div> -Windows</div>
<div>     - Compute: 0.2-.96/hour variable by size</div>
<div>     - Storage: .125GB/mo , 0.1/10K trans</div>
<div> - SQL Azure</div>
<div>     - 0-100Mb $5</div>
<div>     - 100-1G $10</div>
<div>     - 1GB&lt;10GB $10 +$4 after 1G/G</div>
<div>     - 10GB-50GB $45.95(1st 10gb) $2/G</div>
<div>     - 50-120 $125.87(1st 50) $1/G</div>
<div></div>
<div>Instance sizes</div>
<div> - Extra small shared 3 customers per core (1ghz/768MB/20GB)</div>
<div> - small dedicated core (1.6/1.75GB/250GB)</div>
<div> - medium (2&#215;1.6/3.5GB/500GB)</div>
<div> - large (4&#215;1.6/7/1TB)</div>
<div> - xlarge (8&#215;1.6/14Gb/2TB)</div>
<div></div>
<div>Why Cloud</div>
<div> - Reduced OPEX</div>
<div> - Leverage Efficiencies of Scale</div>
<div> - Speed to Deploy</div>
<div> - Disposable Computing (VM LifeCycles)</div>
<div> - Scalability</div>
<div> - Global Presence</div>
<div></div>
<div>Scenarios</div>
<div> - App Needs</div>
<div>      &#8211; Scablability</div>
<div>     - Availability</div>
<div>     - Fault Tolerance</div>
<div> - App Uses</div>
<div>     - Web Sites</div>
<div>     - Compute Intensive Apps</div>
<div>     - Device Applications</div>
<div>     - Web APIs</div>
<div>     - Social Games</div>
<div></div>
<div>Getting Started</div>
<div> - MSDN Subs</div>
<div>     - Free Access</div>
<div>     - Designed for Accelerate development</div>
<div>     - Requires credit card to sign up</div>
<div></div>
<div>Azure Tools</div>
<div> - .NET</div>
<div> - Node.js</div>
<div> - PHP</div>
<div> - Java</div>
<div></div>
<div>Azure Roles</div>
<div> - Subscription (unit of billing associated with Live ID)</div>
<div> - Hosted Server unit of deployment (DNS Name Reservation)</div>
<div> - Certificates (used for remote desktop and deployment)</div>
<div> - Deployments (Production or staging)</div>
<div> - Roles (defines the type of instances to be created)</div>
<div> - Instances (defines the sizes and count of instances)</div>
<div></div>
<div>Service Definition</div>
<div> - Role Name/Type/VM Size/Network Endpoints</div>
<div> - Code</div>
<div>     - Web/Worker Roles Host</div>
<div></div>
<div>Fabric Controller</div>
<div> - kernel of cloud OS</div>
<div>     - manages DC hardware</div>
<div>     - manages Azure services</div>
<div> - Four Responsibilities</div>
<div>     - Resource allocation</div>
<div>     - resource provisioning</div>
<div>     - lifecycle management</div>
<div></div>
<div>Allocation</div>
<div> - Fault domain (parts of datacenter that share parts of the infrastructure)</div>
<div>     - capped by the number of instances</div>
<div>     - provides redundancy</div>
<div>     - ensures parts fail together if desired</div>
<div>     - Set per role</div>
<div>     - distributed via load balancer</div>
<div> - Update Domains</div>
<div>     - Bind services together in sets so they can be deployed together</div>
<div>     - Veritical slice of the app</div>
<div>     - Can update front and backend together by pulling them out of the load balancer together</div>
<div>     - Rolling updates</div>
<div>     - obvious things like schema changes can not be rolled</div>
<div></div>
<div>VM Size in Windows Azure</div>
<div>     - Scale Across not up</div>
<div>     - utilize local storage for the least things possible</div>
<div>     - Commodity hardware (failures happen)</div>
<div>     - Storage is the most common reason to rearchitect</div>
<div></div>
<div>Grab the deployment path as it can come in handle to deploy systems.</div>
<div></div>
<div>Be careful about making sure that you have copy local set true to ensure all your GAC entries that are not in a default 2008R2 install are setup to copy local</div>
<div></div>
<div>Three VM Flavors</div>
<div> - Web Roles (port 80 is an endpoint by default)</div>
<div> - Worker Role (no endpoints by default)</div>
<div> - VM Role (transient/no persistent storage)</div>
<div></div>
<div>Web Role</div>
<div> - IIS 7/7.5</div>
<div> - Asp.net 3.5SP1/4.0 64 bit</div>
<div> - Hosts</div>
<div>     - Webforms or MVC</div>
<div>     - FastCGI for PHP</div>
<div>     - Multiple Websites</div>
<div> - HTTP(s)</div>
<div> - Web/Worker Hybrid</div>
<div>     - Can optionally use an Run loop as well from the worker role.</div>
<div></div>
<div>Worker Roles</div>
<div> - Queue Polling Worker Role</div>
<div>     - Poll and Pop messages within while(true) loop</div>
<div>     - Map/Reduce battern, background processing</div>
<div>- Listening Worker Role</div>
<div>     - TCP listeners/WCF Service Host</div>
<div>- External Process Worker Role</div>
<div>     - work with external vendors</div>
<div>     - Node.js or Java</div>
<div></div>
<div>Architecture</div>
<div> - Everything is Load Balanced</div>
<div> - Input Endpoints are outside</div>
<div> - Internal endpoints are used for instance to instance communication</div>
<div></div>
<div>What Can it Run</div>
<div> - If it runs in Windows you can do it in Azure</div>
<div> - Wide choice of languages</div>
<div> - Chose of frameworks</div>
<div></div>
<div>Service Configuration</div>
<div> - Thing syou can change</div>
<div> - can be updated via portal or API</div>
<div> - Supplies runtime values (scale, config settings, certificates, VHDs)</div>
<div></div>
<div>AzureWatch to help autoscaling</div>
<div>Scaling automatically can be strange due to each app needing it&#8217;s own type of growth method</div>
<div>You must setup your own scaling</div>
<div>Can use powershell</div>
<div></div>
<div>Service Definitions don&#8217;t change at run time</div>
<div> - Describes shape of Azure service(roles, ports, certificates, config settings, startup tasks, IIS config)</div>
<div></div>
<div>Debugging</div>
<div> - Locally using the emulator</div>
<div> - can use intellitrace in the cloud</div>
<div></div>
<div>Startup tasks and imports</div>
<div> - Runs before RoleEntryPoint Onstart(0</div>
<div> - can run as elevated or standard user</div>
<div> - remember Azure config changes require the instance to restart</div>
<div>         - can get around that by override the RoleEnvironment_Changing</div>
<div> - Imports</div>
<div>     - Package up startup command into a reusable format</div>
<div>     - Store in the SDK install directory</div>
<div></div>
<div>Networking</div>
<div>- Types of Endpoints</div>
<div>     - Input (VIP)</div>
<div>     - Internal</div>
<div>     - Windows Azure Connection</div>
<div>- Specify Connectivity Rules in Service Definition</div>
<div>     - Routing</div>
<div></div>
<div>Local Storage</div>
<div> - Don&#8217;t depend on this.</div>
<div> - in Service Definition</div>
<div> - Persistent but not guaranteed durable</div>
<div> - Use Windows Azure Storage Drives to ensure durability</div>
<div> - Make sure to use RoleEnvironment.GetLocalResource to ensure proper pathing</div>
<div></div>
<div>Choosing VM size</div>
<div> - Don&#8217;t just throw big VMs at every problem</div>
<div> - Test various configs under load</div>
<div> - Scale out architecture have natural parallelism</div>
<div> - More small installces == more redundancy</div>
<div> - Scome scenarios will benefit from more cores</div>
<div></div>
<div>Deployment, scaling, upgrading</div>
<div> - Deployment</div>
<div>     - Directly from Visual Studio</div>
<div>     - management port</div>
<div>     - REST api</div>
<div>     - Scripting with PowerShell</div>
<div> - Scalling Options</div>
<div>     - Management port config changes</div>
<div>     - Powershell</div>
<div>     - Customer Code</div>
<div> - Upgrade</div>
<div>     - VIP Swap (Swap from Staging to Production)</div>
<div>     - Rolling Upgrades (Auto or Manual Verify)</div>
<div></div>
<div>Configuration Vauls</div>
<div> - Storage configuration string values</div>
<div>     - Define in modem</div>
<div>     - populate in configuration</div>
<div> - RoleEnvironment</div>
<div>     - .GetConfigurationSettingValue()</div>
<div> - Do no use Web.config for values that you want to change across all instances together</div>
<div></div>
<div>Upgrading your app</div>
<div> - Vip Swap</div>
<div>     - liternally points vip to staging environment</div>
<div></div>
<div>Storage Module</div>
<div></div>
<div>Azure Storage</div>
<div> - Storage in the cloud</div>
<div>     - Scalable, durable, available (Written to three local points and three remote points in the DC pair)</div>
<div>     - Anywhere at anytime access</div>
<div>     - Only pay for what you use</div>
<div>     - Instant concurrency</div>
<div> - Exposed via RESTful Web Service</div>
<div>     - Use from Windows Azure Compute or any other point in the Internet</div>
<div> - Wrapped in APi by SDK</div>
<div>     - Microsoft.WindowsAzure.StorageClient</div>
<div></div>
<div>Storage Abstractions</div>
<div> - Blogs</div>
<div> - Drives (Sit on type of page blobs) NTFS Volumes</div>
<div> - Tables</div>
<div> - Queues</div>
<div></div>
<div>Storage ACcount</div>
<div> - <a href="http://%26lt;account.%26lt;blob%7Ctable%7Cqueue%26gt;.core.windows.net/">http://&lt;account.&lt;BLOB|TABLE|QUEUE&gt;.core.windows.net/</a></div>
<div> - Create account in Management Portal</div>
<div> - Geolocated with affinity</div>
<div> - you get 2 keys&#8230; (used to deal with key comprises)</div>
<div> - API based on REST</div>
<div> - use lowercase to save headaches</div>
<div></div>
<div>Tools to Explore Storage</div>
<div> - Visualstudio</div>
<div> - MyAzureStorage.cloudapp.net</div>
<div> - clumsyleaf.com</div>
<div> - cerebrata.com</div>
<div></div>
<div>Storage Account</div>
<div> - Can CDN Enable Account</div>
<div> - Can co-locate storage account with Compute (affinity groups)</div>
<div> - Accounts have two 512bit keys</div>
<div> - limits of 100TB per storage account</div>
<div>     - each subscriber defaults to five storage accounts</div>
<div>     - call tech support to create more</div>
<div></div>
<div>Storage in the Cloud Emulator</div>
<div> - Provides local &#8220;mock&#8221; storage</div>
<div> - emulates storage in cloud</div>
<div> - allows offlne development</div>
<div> - requires SQL express 2005+</div>
<div> - SSMS provides local view of storage items</div>
<div> - differences: <a href="http://msdn.microsoft.com/en-us/gg433135">http://msdn.microsoft.com/en-us/gg433135</a></div>
<div> - Continueation tokens</div>
<div></div>
<div>Storage Account</div>
<div> - SLA</div>
<div> - Capacity of up to 100TB per storage account</div>
<div> - Transaction limited to 5K requests per seconds</div>
<div> - Bandwidth &#8211; up to a few hundred MB/s</div>
<div> - Single Parition</div>
<div>     - Up to 60 MB/s Throughput</div>
<div>     - Up to 500 transactions/sec</div>
<div> - Go Beyond</div>
<div>      - Partition between multiple storage accounts and partition</div>
<div>      &#8211; Whem limit is hit, app may see &#8217;503 service busy&#8217;</div>
<div></div>
<div>Working with BLOBs</div>
<div> - Binary Large Objects include resources we use in our applications (pictures, videos, html, css, etc) that are not relational</div>
<div> - REST and SDK wrapper</div>
<div> - Microsoft.WindowsAzure.StorageClient</div>
<div> - Create storage account objects</div>
<div></div>
<div>Table Storage Concepts</div>
<div> - Account</div>
<div>     - Table</div>
<div>          -Entity</div>
<div></div>
<div>Table Details</div>
<div> - Not and RDBMS Table</div>
<div>     - Create,Query,Delete</div>
<div>     - Tables can have metadata</div>
<div> - Entities</div>
<div>     - Insert, Update</div>
<div>     - Merge &#8211; Partial update</div>
<div>     - Replace &#8211; update entire entity</div>
<div>     - Upsert</div>
<div>     - Delete</div>
<div>     - Query</div>
<div>     - Entity Group Transactions</div>
<div></div>
<div>Entity Properties</div>
<div> - Up to 255 properties</div>
<div> - up to 1MB per entity</div>
<div> - Mandatory Properties</div>
<div>     - PartitonKey &amp; RowKey (only indexed properties)</div>
<div>     - Timestamps (Optimistic Concurrency, Exposed as an HTTP Etag)</div>
<div> - No Fixed schema for other properties</div>
<div>     - Each property is stored as a &lt;name, typed value&gt; pair</div>
<div>     - No Schema stored for table</div>
<div>     - Properties can be the standard .NET types</div>
<div></div>
<div>Purpose of the Patition Key</div>
<div> - Entity locality</div>
<div>     - Entities in the same partition will be stored together</div>
<div> - Entity Group Transactions</div>
<div>     - Atomic multiple Insert/Update/Delete</div>
<div></div>
<div>Loosely Coupled Workflow with Queue</div>
<div> - Enables workflow between roles</div>
<div> - used for extreme throughput (&gt;500tps)</div>
<div></div>
<div>SQL Azure</div>
<div> - Exposes SQL server as a service</div>
<div> - Ideal for simple and complex apps</div>
<div> - Automatic support for HA</div>
<div> - designed to scale out elastically (be careful to select Web vs. Business)</div>
<div> - Easy to start</div>
<div>     - select a plan</div>
<div>     - Choose a billing option</div>
<div>      &#8211; Provision Servers</div>
<div> - Supports common things like LINQ and EF</div>
<div></div>
<div>Provisioning</div>
<div> - Server defined</div>
<div>     - Service head the contains databases</div>
<div>     - Connect via Automatically generated FQDN</div>
<div> - Provision Server interactly or via powershell</div>
<div></div>
<div>Build you database</div>
<div> - Familiar techs</div>
<div>      - TSQL</div>
<div>      - Multiple Language Support</div>
<div>      - Supports nHibernate</div>
<div>      - Supports SSMS etc</div>
<div>  &#8211; Differences</div>
<div>     - Data/Log files are places automatically</div>
<div>     - Three HA replicas</div>
<div>     - Databases are fully contained</div>
<div>     - Tables require a clustered index</div>
<div>     - Maximum database size is 150GB</div>
<div> - Upsupported SQL Features</div>
<div>     - Backup/Restore</div>
<div>     - Use command/linked servers/distribted transtion, distributed view, distributed queries, four-part-names</div>
<div>     - Service Broker</div>
<div>     - CLR</div>
<div>     - No SQL Agent (SSIS requires a workaround)</div>
<div></div>
<div>Deploy your database</div>
<div> - DAC Fx</div>
<div> - Part of SQL Server 2012</div>
<div> - DAC PAC</div>
<div> - can also use bacpac for restoration</div>
<div></div>
<div>Connection your application</div>
<div> - TDS</div>
<div> - SSL Required</div>
<div> - Use firewalls rules to allow access to the server in the Azure Management Application</div>
<div> - Older tools use [login]@[server]</div>
<div> - 30 minutes timeouts</div>
<div> - Long running terminated after 24 hours</div>
<div> - DoS guard terminates suspect connections</div>
<div> - failover events terminate connections</div>
<div> - Throttling may cause errors</div>
<div> - Use connection pooling, build in logic to handle transient failures</div>
<div> - Latency introduced for updates due to HA replications</div>
<div> - No cross database dependencies</div>
<div></div>
<div>Visualize Your Data</div>
<div> - SQL Azure Reporting</div>
<div>     - SSRS as a service</div>
<div>     - Ideal for operational reporting</div>
<div>     - Automatic support for HA</div>
<div>     - Design to scale elastically with demand</div>
<div>     - Deployed via Azure Management Studio with two clicks</div>
<div></div>
<div>Sync your data</div>
<div> - SQL Data Sync is Miscrosoft Sync Framework as a fservice</div>
<div> - Ideal for scheduling sync betwen data sets</div>
<div> - Hub and Spoke topology</div>
<div> - Special Considerations</div>
<div>     - Conflict resolution is set centrally and is either hub or client wins</div>
<div>     - Sync Direction setup between client and hub (to, from, bi)</div>
<div>     - Sync schedule must be between 5 minutes and 1 month</div>
<div>     - Data sets include multiple tables and can be filtered, triggers are add to data set tables</div>
<div>     - Tables add to hub and client schemas</div>
<div>     - An Agent must be installed for on-prem clients</div>
<div></div>
<div>Scale out you data</div>
<div> - Integrated database sharding that can scale to hundreds of nodes</div>
<div> - multi-tenacy via flexible repartitioning</div>
<div> - Online split operations to minimize downtime</div>
<div> - Automatic data discovery regardless of changes in how data is partitioned</div>
<div> - Special Considerations</div>
<div>     - A logical DB can contain multiple federations</div>
<div>     - Distribution scheme supports int, bigint, guid, and varbinary types</div>
<div>     - Filtering routes connection to appropriate shard reguard less of changes in partitions</div>
<div>     - Merge, fan-out queries must be handled manually</div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamdatadude.wordpress.com/632/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamdatadude.wordpress.com/632/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamdatadude.wordpress.com/632/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamdatadude.wordpress.com/632/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamdatadude.wordpress.com/632/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamdatadude.wordpress.com/632/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamdatadude.wordpress.com/632/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamdatadude.wordpress.com/632/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamdatadude.wordpress.com/632/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamdatadude.wordpress.com/632/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamdatadude.wordpress.com/632/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamdatadude.wordpress.com/632/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamdatadude.wordpress.com/632/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamdatadude.wordpress.com/632/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=632&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://binarydelusions.com/2012/05/02/raw-notes-from-windows-azure-kickstart-event/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2749f6c5ef98bc4e7b7859b85d3a4c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamdatadude</media:title>
		</media:content>
	</item>
		<item>
		<title>Stuff on the Internet Today: TDD ASP.NET C#</title>
		<link>http://binarydelusions.com/2012/04/02/stuff-on-the-internet-today-tdd-asp-net-c/</link>
		<comments>http://binarydelusions.com/2012/04/02/stuff-on-the-internet-today-tdd-asp-net-c/#comments</comments>
		<pubDate>Mon, 02 Apr 2012 15:42:21 +0000</pubDate>
		<dc:creator>Jason Myers</dc:creator>
		
		<guid isPermaLink="false">http://binarydelusions.com/?p=627</guid>
		<description><![CDATA[I&#8217;ve been digging into how to make sure I can unit test each individual components of my application with all the dependancy being used as well.  That lead me to the Repository pattern, Dependancy Injection, and Inversion of Control Containers.  Check out the three links below for more details. We use the repository pattern to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=627&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been digging into how to make sure I can unit test each individual components of my application with all the dependancy being used as well.  That lead me to the Repository pattern, Dependancy Injection, and Inversion of Control Containers.  Check out the three links below for more details.</p>
<p>We use the repository pattern to enable:</p>
<ul>
<li><strong>Testability</strong>. Using the pattern we can create stubs that can replace the real data access objects. This can help us to test our business logic without concerning what the data access is doing.</li>
<li><strong>Dependency Injection</strong>. Using the pattern we can use DI containers to inject the relevant object that we want to use in the code.<br />
<a href="http://blog.fossmo.net/post/Murder-mysteries-and-Dependency-Injection.aspx">http://blog.fossmo.net/post/Murder-mysteries-and-Dependency-Injection.aspx</a></li>
<li><strong>Abstraction</strong>. Using the pattern we create an abstraction above our data access functionality. This abstraction can help us when we want to change the implementation of the data access without affecting our business logic code. For example, I had to change implementation of data access with a call to a web service. Using the pattern I only needed to change the object that I used and that is  it.<br />
<a href="http://blog.fossmo.net/post/Inversion-of-Control-Containers.aspx">http://blog.fossmo.net/post/Inversion-of-Control-Containers.aspx</a></li>
</ul>
<p>Repository Pattern Resources:</p>
<ul>
<li><a href="http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-3-Building-a-Repository-using-TDD">http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-3-Building-a-Repository-using-TDD</a></li>
<li><a href="http://visualstudiomagazine.com/Articles/2009/09/01/Eliminate-Database-Dependencies-in-Test-Driven-Development.aspx">http://visualstudiomagazine.com/Articles/2009/09/01/Eliminate-Database-Dependencies-in-Test-Driven-Development.aspx</a></li>
<li><a href="http://codingsolutions.blogspot.com/2010/07/tdd-kata-for-ddd-building-simple-domain.html">http://codingsolutions.blogspot.com/2010/07/tdd-kata-for-ddd-building-simple-domain.html</a></li>
<li><a href="http://www.pearsonhighered.com/assets/hip/us/hip_us_pearsonhighered/samplechapter/0321268202.pdf">http://www.pearsonhighered.com/assets/hip/us/hip_us_pearsonhighered/samplechapter/0321268202.pdf</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamdatadude.wordpress.com/627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamdatadude.wordpress.com/627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamdatadude.wordpress.com/627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamdatadude.wordpress.com/627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamdatadude.wordpress.com/627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamdatadude.wordpress.com/627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamdatadude.wordpress.com/627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamdatadude.wordpress.com/627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamdatadude.wordpress.com/627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamdatadude.wordpress.com/627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamdatadude.wordpress.com/627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamdatadude.wordpress.com/627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamdatadude.wordpress.com/627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamdatadude.wordpress.com/627/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=627&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://binarydelusions.com/2012/04/02/stuff-on-the-internet-today-tdd-asp-net-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2749f6c5ef98bc4e7b7859b85d3a4c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamdatadude</media:title>
		</media:content>
	</item>
		<item>
		<title>Shorty: ASP.NET MVC Unit Testing Links</title>
		<link>http://binarydelusions.com/2012/03/28/shorty-asp-net-mvc-unit-testing-links/</link>
		<comments>http://binarydelusions.com/2012/03/28/shorty-asp-net-mvc-unit-testing-links/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 01:29:50 +0000</pubDate>
		<dc:creator>Jason Myers</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://binarydelusions.com/?p=624</guid>
		<description><![CDATA[I stumbled across a couple of great ASP.NET MVC Unit Testing Links I wanted to share. http://www.arrangeactassert.com/how-to-unit-test-asp-net-mvc-controllers/ http://www.asp.net/mvc/tutorials/older-versions/unit-testing/creating-unit-tests-for-asp-net-mvc-applications-cs http://msdn.microsoft.com/en-us/magazine/dd942838.aspx http://fpnotebook.wordpress.com/2011/08/14/asp-net-mvc-entity-framework-unit-testing-mocks-and-microsoft/ http://www.infoq.com/news/2012/03/aspnet-unit-test http://dotnetslackers.com/articles/aspnet/ASPNETMVCFrameworkPart2.aspx http://msdn.microsoft.com/en-us/library/ff847525.aspx<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=624&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I stumbled across a couple of great ASP.NET MVC Unit Testing Links I wanted to share.</p>
<p><a href="http://www.arrangeactassert.com/how-to-unit-test-asp-net-mvc-controllers/">http://www.arrangeactassert.com/how-to-unit-test-asp-net-mvc-controllers/</a></p>
<p><a href="http://www.asp.net/mvc/tutorials/older-versions/unit-testing/creating-unit-tests-for-asp-net-mvc-applications-cs">http://www.asp.net/mvc/tutorials/older-versions/unit-testing/creating-unit-tests-for-asp-net-mvc-applications-cs</a></p>
<p><a href="http://msdn.microsoft.com/en-us/magazine/dd942838.aspx">http://msdn.microsoft.com/en-us/magazine/dd942838.aspx</a></p>
<p><a href="http://fpnotebook.wordpress.com/2011/08/14/asp-net-mvc-entity-framework-unit-testing-mocks-and-microsoft/">http://fpnotebook.wordpress.com/2011/08/14/asp-net-mvc-entity-framework-unit-testing-mocks-and-microsoft/</a></p>
<p><a href="http://www.infoq.com/news/2012/03/aspnet-unit-test">http://www.infoq.com/news/2012/03/aspnet-unit-test</a></p>
<p><a href="http://dotnetslackers.com/articles/aspnet/ASPNETMVCFrameworkPart2.aspx">http://dotnetslackers.com/articles/aspnet/ASPNETMVCFrameworkPart2.aspx</a></p>
<p><a href="http://msdn.microsoft.com/en-us/library/ff847525.aspx">http://msdn.microsoft.com/en-us/library/ff847525.aspx</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamdatadude.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamdatadude.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamdatadude.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamdatadude.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamdatadude.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamdatadude.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamdatadude.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamdatadude.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamdatadude.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamdatadude.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamdatadude.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamdatadude.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamdatadude.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamdatadude.wordpress.com/624/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=624&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://binarydelusions.com/2012/03/28/shorty-asp-net-mvc-unit-testing-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2749f6c5ef98bc4e7b7859b85d3a4c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamdatadude</media:title>
		</media:content>
	</item>
		<item>
		<title>Extracting Microsoft CRM attachments for SalesForce Migration</title>
		<link>http://binarydelusions.com/2012/03/26/extracting-microsoft-crm-attachments-for-salesforce-migration/</link>
		<comments>http://binarydelusions.com/2012/03/26/extracting-microsoft-crm-attachments-for-salesforce-migration/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 02:04:59 +0000</pubDate>
		<dc:creator>Jason Myers</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://binarydelusions.com/?p=599</guid>
		<description><![CDATA[So recently, I got asked to help get some attachments out of a Microsoft Dynamics CRM database so they could be imported into Salesforce.  There are type major types of attachements: one for email attachments, and one for nonemail attachments.  I was given a couple of SQL queries to use in the spec I was given.  You [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=599&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So recently, I got asked to help get some attachments out of a Microsoft Dynamics CRM database so they could be imported into Salesforce.  There are type major types of attachements: one for email attachments, and one for nonemail attachments.  I was given a couple of SQL queries to use in the spec I was given.  You can see a gist of the <a href="https://gist.github.com/2211439">email query</a> here, and <a href="https://gist.github.com/2211425">nonemail query</a> here. Because the views used in the SQL had application level security applied to them, our first order business was to recreate the views with out all the security applied.  So to recreate the filteredemail view as filteredemailus see <a href="https://gist.github.com/2173185">this</a>, and the filteredannotation as filteredannotationsus is available <a href="https://gist.github.com/2173178">here</a>.  Just run those as crmadmin or any user with admin level access to the CRM SQL database. A simple console application works well to run this.</p>
<p>Time to setup all the usings. Basically, we include the usuals plus System.IO for file handling, and System.Data.SqlClient for access to the SQL Server.</p>
<p><pre class="brush: plain;">
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
using System.IO;
</pre></p>
<p>Next We&#8217;re going to create a method for saving the bytes to a file. So our method takes in a string for the file name, and a byte array for the actual file data. Then to be save we put everything in a try catch block. See the comments inside the code for the individual steps, but there is no real magic here.</p>
<p><pre class="brush: plain;">
public static bool ByteArrayToFile(string _FileName, byte[] _ByteArray)
        {
            try
            {
                // Open file for reading
                System.IO.FileStream _FileStream = new System.IO.FileStream(_FileName, System.IO.FileMode.Create, System.IO.FileAccess.Write);

                // Writes a block of bytes to this stream using data from a byte array.
                _FileStream.Write(_ByteArray, 0, _ByteArray.Length);

                // close file stream
                _FileStream.Close();

                return true;
            }
            catch (Exception _Exception)
            {
                // Error
                Console.WriteLine(&quot;Exception caught in process: {0}&quot;, _Exception.ToString());
            }

            // error occured, return false
            return false;
        }
</pre></p>
<p>Okay, let&#8217;s move into the main part of the program. This is broken into two parts the first handles the nonemail attachments, and the second part handles the email attachments. We start by setting up the SQL connection string, and the query.</p>
<p><pre class="brush: plain;">
        static void Main(string[] args)
        {
            string connString = &quot;Server=servername;Database=Database_MSCRM;User Id=username;password=password&quot;;
            string queryNonEmailAttachments = &quot;SELECT DocumentBody, ObjectId, FileName, CONVERT(varchar(255), ObjectID) + '_' + CONVERT(varchar(255), Filename) AS SaveAsFileName FROM FilteredAnnotationUS WHERE IsDocument = 1 AND (objecttypecode = 1 or objecttypecode = 2 or objecttypecode = 3 or objecttypecode = 4 or objecttypecode = 4212 or objecttypecode = 4201 or objecttypecode = 4210)&quot;;
</pre></p>
<p>Next we setup a using block and define a SqlCommand.</p>
<p><pre class="brush: plain;">
            using (SqlConnection connection = new SqlConnection(connString))
            {
                SqlCommand command = new SqlCommand(queryNonEmailAttachments, connection);
</pre></p>
<p>Now another try catch block is used to work through the database. We open the connection to the SQL Server, set a longer time out to make sure we get all the data and create a reader result object that we can iterate though. Finally we setup the CSV file that is used by SalesForce to tie the attachments by ObjectID to the filename and proper CRM record.</p>
<p><pre class="brush: plain;">
                try
                {
                    connection.Open();
                    command.CommandTimeout = 300000;
                    SqlDataReader reader = command.ExecuteReader();
                    StreamWriter file = new StreamWriter(@&quot;C:\\CRM\\NONEMAIL\\NonEmailMaster.csv&quot;, true);
</pre></p>
<p>Once we have the data it is time to read through it. A while loop is used to roll through the data. We setup a filename that contains the ObjectID plus the original filename. Next is the magic part of this. The files are stored in latin_1 collation in the SQL database, and we need to get it into UTF8 and decode it from the Base64 encoding it is currently in.</p>
<p><pre class="brush: plain;">
                    int i = 0;
                    while (reader.Read())
                    {
                        string filePathAndName = &quot;C:\\CRM\\NONEMAIL\\&quot; + reader.GetString(3);
                        /*
                         * Converts Latin-1 from the CRM database to UTF8 so we can use Base64 decoding to recreate the original file.
                         */
                        string fileDataString = Encoding.UTF8.GetString(Encoding.GetEncoding(1252).GetBytes(reader.GetString(0)));
                        byte[] fileBytes = Convert.FromBase64String(fileDataString);

</pre></p>
<p>Next we write the decrypted byte array to the file using the Method we setup earlier, and append the information required by Salesforce to correlate the CRM entries to the files. Wash, rinse, repeat until we looked through all the records.</p>
<p><pre class="brush: plain;">
                        /*
                         * Writes the original file to disk
                         */
                        bool fileWritten = ByteArrayToFile(filePathAndName, fileBytes);

                        /*
                         * Adds the record to the CSV reference file.
                         */
                        file.WriteLine(&quot;\&quot;{0}\&quot;,\&quot;{1}\&quot;,\&quot;{2}\&quot;&quot;, reader.GetValue(1).ToString(), reader.GetString(2), reader.GetString(3));
                        i++;
                    }
</pre></p>
<p>Finally we drop a line about how many records we processed, clean up the reader and close out the CSV file. The catch is there to get any errors, and we&#8217;re done with the nonemail attachments.</p>
<p><pre class="brush: plain;">
                    Console.WriteLine(&quot;Processed {0} non email records.&quot;, i);
                    reader.Close();
                    file.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
</pre></p>
<p>We repeat that exactly changing on the query string for the email attachments. Lastely, we create the C:\CRM\Email and C:\CRM\NonEmail directories to hold all the data. Now run it, and you should see those directories filling up with data.</p>
<p>You can get the whole solution from <a href="https://github.com/jasonamyers/MSCRMAttachmentExtract">Github here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamdatadude.wordpress.com/599/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamdatadude.wordpress.com/599/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamdatadude.wordpress.com/599/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamdatadude.wordpress.com/599/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamdatadude.wordpress.com/599/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamdatadude.wordpress.com/599/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamdatadude.wordpress.com/599/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamdatadude.wordpress.com/599/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamdatadude.wordpress.com/599/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamdatadude.wordpress.com/599/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamdatadude.wordpress.com/599/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamdatadude.wordpress.com/599/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamdatadude.wordpress.com/599/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamdatadude.wordpress.com/599/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=599&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://binarydelusions.com/2012/03/26/extracting-microsoft-crm-attachments-for-salesforce-migration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2749f6c5ef98bc4e7b7859b85d3a4c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamdatadude</media:title>
		</media:content>
	</item>
		<item>
		<title>Infrastructure2Coder: The first two months.</title>
		<link>http://binarydelusions.com/2012/03/24/infrastrucutre2coder-the-first-two-months/</link>
		<comments>http://binarydelusions.com/2012/03/24/infrastrucutre2coder-the-first-two-months/#comments</comments>
		<pubDate>Sat, 24 Mar 2012 13:33:42 +0000</pubDate>
		<dc:creator>Jason Myers</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://binarydelusions.com/?p=573</guid>
		<description><![CDATA[So I&#8217;ve been working hard on finding a way to fulfill my developer side, and to make that a full-time gig instead of a sideline. I&#8217;ve always written code throughout my career whether it was a simple tool to help us get around a problem at work, any of the number of websites I&#8217;ve help run, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=573&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve been working hard on finding a way to fulfill my developer side, and to make that a full-time gig instead of a sideline. I&#8217;ve always written code throughout my career whether it was a simple tool to help us get around a problem at work, any of the number of websites I&#8217;ve help run, or as open source contributions. It wasn&#8217;t until I had to give up the latter to help get my diabetes management into order that I was confronted with how much I enjoyed programming. When I couldn&#8217;t work all day to pay the bills, and then come home and indulge my creator side I started feeling miserable!  That was a life altering moment.  I dropped 70 pounds via diet, started working out, and began engaging more in life.  This left my work life unfulfilling after 12 years of loving building networks, SANs, VMware, and all the other parts of designing infrastructure solutions.</p>
<p>So enough sappy story, and on to the meat of this article.  My overall plan is very simple.  I want to be a software creator for a living in 13 months.  Well that was easy to say, now how do I get started.  The first thing I did was start trying to decide what technology I needed to work on to feed my family.  I knew web development was what I wanted to do so that automatically required CSS, Javascript, HTML, etc; however, there are tons of technology stacks that can be used to surround those.  I&#8217;ve done tons of work in PHP over the years so that went to the top of the list.  I had written a tracking application in Rails about a year ago, and .NET is just crazy hot in Nashville.  So those were my three main focuses: PHP, Rails, and .NET.</p>
<p>I thought about how I would pick between the frameworks, and settled on developing the same application in all three languages.  That would let me find the one I liked the most.  Thus was born NetVis the IP tracking application.  I&#8217;ve written it in Rails and ASP.NET MVC C#at this point, and it helped me determine what I liked about each of those languages.  I&#8217;m starting to write in PHP now.  You might notice my first instinct in this was to start coding, and truthfully that should be the exact starting point for everyone.  Don&#8217;t start researching a ton of stuff, pick any language and start coding.  Regardless of what you pick in the end, getting the brain flowing around the concepts is this most important part.</p>
<p>The next thing I did was get involved locally.  I made the decision to sacrifice up to 4 nights a month, and a weekend to plug into the local development community.  In my case, I started attending Agile, .NET, PHP, and Ruby User groups.  We very active ones of all three in Nashville thankfully.  At this groups, I listened intently; however, you and I both know I didn&#8217;t understand it all.  The more I listened, the more I researched, and the more I learned.  I also mentally selected a few people that I wanted to meet for coffee or lunch, and I just asked.  I&#8217;ve not gotten a single no yet.  Those few moments of listening to a craftsman talk about his trade are critical to how you shape yours.  Everyday I read twitter and blogs, not skim!  I read them when I don&#8217;t understand I wikipedia enough to get a basic idea.  Following the leaders in each technology is easy, but follow local people, and engage into their social sphere.</p>
<p>Everyday you can should a study day.  We learn something new, we work through a book, or we watch video; however, we always code!  Some small thing should be built everyday.  For me it is a feature on my IP address management system, or something to get us around a little problem at work.  Just because everyday should be a study day doesn&#8217;t mean it is.  You can not neglect your family and friends as you make this time of a career decision as they will be the ones to be there for you on the rough days when it seems like you are making the wrong choice.  So spend time with them, and study around that time.  Pick longer breaks every few weeks (6 in my world), to step away for a weekend and just relax.</p>
<p>Last thought of this article is simply start with the end in mind.  If you want to be a craftsman, start today on doing things right.  For me right now means the following: Test Driven Development, Object Oriented Development, Source Control, Agile Methodologies, Removing Platform Bigotry, Do not Repeat Yourself, and Sharing.  During this learning time is the best time to set the patterns and habits you want to have in your career.  Plus if you screw up with Git and blow up your tiny solution you built to track your Lego collection that is no big deal.  This gives you code that you can take to user groups, and show to people for feedback on more than just the working of your simple app.  Unit testing has a ton of nifty tricks that are best learned by showing others and listening to their feedback.</p>
<p>I wanna thank a few people who have been helpful on my path so far: <a href="https://twitter.com/#!/CalEvans">Cal Evans</a>, <a href="https://twitter.com/#!/reverentgeek">David Neal</a>, <a href="http://www.pluralsight-training.net/microsoft/">Pluralsight</a>, <a href="http://tekpub.com/">TekPub</a>, <a href="https://twitter.com/#!/dhh">DHH</a>, <a href="https://twitter.com/#!/jacques_thekit">Jacques Woodcock</a>, Adam Serbert and <a href="http://www.codeyear.com/">Code Year</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamdatadude.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamdatadude.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamdatadude.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamdatadude.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamdatadude.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamdatadude.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamdatadude.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamdatadude.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamdatadude.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamdatadude.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamdatadude.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamdatadude.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamdatadude.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamdatadude.wordpress.com/573/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=573&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://binarydelusions.com/2012/03/24/infrastrucutre2coder-the-first-two-months/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2749f6c5ef98bc4e7b7859b85d3a4c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamdatadude</media:title>
		</media:content>
	</item>
		<item>
		<title>Pluralsight Training: The first two courses</title>
		<link>http://binarydelusions.com/2012/03/23/pluralsight-training-the-first-two-courses-2/</link>
		<comments>http://binarydelusions.com/2012/03/23/pluralsight-training-the-first-two-courses-2/#comments</comments>
		<pubDate>Fri, 23 Mar 2012 17:49:45 +0000</pubDate>
		<dc:creator>Jason Myers</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://binarydelusions.com/?p=516</guid>
		<description><![CDATA[So, I&#8217;m working on getting my development chops back up to speed after a 6 month hiatus, althought I&#8217;ve done some Ruby on Rails and Perl during this time for small things.  Also, learning ASP.NET this time since Nashville is a Microsoft market for development in my mind.  So I signed up for Pluralsight&#8217;s training [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=516&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="uvTab" style="background:url('http://widget.uservoice.com/images/clients/widget2/tab-right-dark.png') no-repeat 50% 0 #cc6d00;font:bold 14px/1em Arial, sans-serif;border-radius:4px 0 0 4px;top:50%;right:0;margin-top:-100px;margin-right:0;display:block;position:fixed;box-shadow:inset 1px 1px 1px rgba(255,255,255,0.25), 0 1px 2px rgba(0,0,0,0.5);-moz-box-shadow:inset rgba(255,255,255,.25) 1px 1px 1px rgba(0,0,0,.5) 0 1px 2px;-webkit-box-shadow:inset rgba(255,255,255,.25) 1px 1px 1px rgba(0,0,0,.5) 0 1px 2px;-moz-border-radius:4px 0 0 4px;-webkit-border-radius:4px 0 0 4px;border-color:#ffffff currentColor #ffffff #ffffff;border-style:solid none solid solid;border-width:1px medium 1px 1px;"><a id="uvTabLabel" style="text-decoration:none;display:block;background-color:transparent;padding:39px 5px 10px;" href="return false;"><img style="border:0 currentColor;background-color:transparent;margin:0;padding:0;" src="http://widget.uservoice.com/dcache/widget/feedback-tab.png?t=feedback%20%26%20support&amp;c=ffffff&amp;r=90" alt="feedback &amp; support" /></a></div>
<p>So, I&#8217;m working on getting my development chops back up to speed after a 6 month hiatus, althought I&#8217;ve done some Ruby on Rails and Perl during this time for small things.  Also, learning ASP.NET this time since Nashville is a Microsoft market for development in my mind.  So I signed up for Pluralsight&#8217;s training classes, and I&#8217;ve worked throught a couple of them and wanted to share my thoughts.</p>
<p>First, I took A Beginner&#8217;s Guide to the Microsoft Web Platform.  I thought this class was good at showing off all the different types of projects that you can do in ASP.NET such as web applications, web sites, and MVC.  It took the time to do the same 3 examples in each of the development types, which I thought was a great thing.  The purpose of this class wasn&#8217;t to learn syntax or particular tricks.  It was solely to focus on the .NET architecture, and to show off it&#8217;s flexibility.</p>
<p>Next up for me was Introduction to ASP.NET 4 WebForms.  This was the first class that was showing me how to really build things, and I&#8217;m really enjoying it.  The instructors in the videos are articulate, and see to have a good understanding of what they are talking about.  This class is doing a great job of breaking down all the parts of a modern web application: WCF, AJAX, server and client side controls, and data connectivity.  However, it is a bit slow, and occasionally they just skip ahead in the code example instead of walking through line by line.</p>
<p>Wrapping this up, I have to say so far I feel I&#8217;m getting a great product for my money.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamdatadude.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamdatadude.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamdatadude.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamdatadude.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamdatadude.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamdatadude.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamdatadude.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamdatadude.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamdatadude.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamdatadude.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamdatadude.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamdatadude.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamdatadude.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamdatadude.wordpress.com/516/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=516&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://binarydelusions.com/2012/03/23/pluralsight-training-the-first-two-courses-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2749f6c5ef98bc4e7b7859b85d3a4c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamdatadude</media:title>
		</media:content>

		<media:content url="http://widget.uservoice.com/dcache/widget/feedback-tab.png?t=feedback%20%26%20support&#38;c=ffffff&#38;r=90" medium="image">
			<media:title type="html">feedback &#38; support</media:title>
		</media:content>
	</item>
		<item>
		<title>C# reading IMAP boxes and Saving Attachments</title>
		<link>http://binarydelusions.com/2012/03/21/c-reading-imap-boxes-and-saving-attachments/</link>
		<comments>http://binarydelusions.com/2012/03/21/c-reading-imap-boxes-and-saving-attachments/#comments</comments>
		<pubDate>Thu, 22 Mar 2012 01:57:46 +0000</pubDate>
		<dc:creator>Jason Myers</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://binarydelusions.com/?p=586</guid>
		<description><![CDATA[So, I had a need to read emails from an IMAP box, and pull out all the attachments into a directory for an imaging program we use at the office called iSynergy. To do that first I had to find an IMAP library to help me get to the files. I choose .NET Email Component [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=586&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So, I had a need to read emails from an IMAP box, and pull out all the attachments into a directory for an imaging program we use at the office called iSynergy.  To do that first I had to find an IMAP library to help me get to the files.  I choose <a href="http://www.componentace.com/.NET_Email_component_pop3_smtp_imap_csharp.htm">.NET Email Component</a> from Component Ace.  This process is going to be run as part of a scheduled task, so I decided to use a simple console application.</p>
<p>Time to setup all the usings.  Basically, we include the usuals plus System.IO for file handling, and all the .NET Email Components for all the IMAP Access and Control.</p>
<p><pre class="brush: plain;">
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Text.RegularExpressions;
using Email.Net.Common.Configurations;
using Email.Net.Common.MessageParts;
using Email.Net.Imap.Responses;
using Email.Net.Imap.Collections;
using Email.Net.Imap;
using Email.Net.Imap.Sequences;
</pre></p>
<p>Next we setup the IMAP Client and login by setting:</p>
<ul>
<li>the host to which we will be connecting</li>
<li>username</li>
<li>password</li>
<li>IMAP port 993 or Secure IMAP in this case</li>
<li>the directory that will be used to store the attachments</li>
<li>Security type</li>
</ul>
<p>Then we call the log in method.</p>
<p><pre class="brush: plain;">
namespace iSynergyEmailImport
{
    class Program&lt;
    {
        static void Main(string[] args)
        {
            ImapClient client = new Email.Net.Imap.ImapClient();
            client.Host = &quot;host&quot;;
            client.Username = &quot;User&quot;;
            client.Password = &quot;password&quot;;
            client.Port = (ushort)993;
            client.AttachmentDirectory = &quot;PathForAttachments&quot;;
            client.SSLInteractionType = EInteractionType.SSLPort;
            CompletionResponse response = client.Login();
</pre></p>
<p>Next we setup variables to represent the mailbox and the messages, and check to make sure that the response we got back from the client login was good.</p>
<p><pre class="brush: plain;">
            Mailbox inbox;
            ImapMessage msg;
            CompletionResponse response = client.Login();
            if (response.CompletionResult == ECompletionResponseType.OK)
            {
</pre></p>
<p>Next we get a list of Folders that are in the tree and access the folder named inbox. After that for debugging purposes we print out the message count, and load all the message headers into a message collection so we can go through them.</p>
<p><pre class="brush: plain;">
                Console.WriteLine(&quot;We're In&quot;);
                Mailbox folders = client.GetMailboxTree();
                inbox = Mailbox.Find(folders, &quot;INBOX&quot;);
                Console.WriteLine(&quot;{0} Messages&quot;, client.GetMessageCount(inbox));
                MessageCollection tmp = client.GetAllMessageHeaders(inbox);
</pre></p>
<p>Finally we interate through each message, open it and check to see if their are any attachments. If there are any attachments present, we loop through each attachment and save each one to the Directory we specified earlier. However, there is one wrinkle, We have to move the file from it&#8217;s temporary file name which is FullFilename to the name that IMAP had it stored as which is the TransferFilename.</p>
<p><pre class="brush: plain;">
                foreach(ImapMessage x in tmp)
                {
                    msg = client.GetMessageText(x.UID, inbox);
                    if (msg.Attachments.Count &gt; 0)
                    {
                        for (int i = 0; i &lt;msg.Attachments.Count; i++)
                        {
                            Attachment attach = msg.Attachments[i];
                            if (attach != null)
                            {
                                Attachment tmpAttach = new Attachment();

                                tmpAttach = client.GetAttachment(inbox, msg, msg.Attachments[i]);
                                string tmpName = tmpAttach.FullFilename.ToString();
                                string realName = client.AttachmentDirectory + msg.Attachments[i].TransferFilename.ToString();
                                File.Move(tmpName, realName);
                                Console.WriteLine(&quot;Attachment: {0}&quot;, realName);
                            }
                        }
                        ISequence squence = new SequenceNumber(x.UID);
                        CompletionResponse delResponse = client.MarkAsDeleted(squence, inbox);
                        delResponse = client.DeleteMarkedMessages(inbox);
                    }
                }
</pre></p>
<div>That is it.  Close out all the braces, and this program is done.  You can grab it from <a href="https://github.com/jasonamyers/iSynergyEmailImport">GITHub</a>.</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamdatadude.wordpress.com/586/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamdatadude.wordpress.com/586/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamdatadude.wordpress.com/586/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamdatadude.wordpress.com/586/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamdatadude.wordpress.com/586/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamdatadude.wordpress.com/586/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamdatadude.wordpress.com/586/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamdatadude.wordpress.com/586/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamdatadude.wordpress.com/586/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamdatadude.wordpress.com/586/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamdatadude.wordpress.com/586/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamdatadude.wordpress.com/586/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamdatadude.wordpress.com/586/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamdatadude.wordpress.com/586/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=586&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://binarydelusions.com/2012/03/21/c-reading-imap-boxes-and-saving-attachments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2749f6c5ef98bc4e7b7859b85d3a4c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamdatadude</media:title>
		</media:content>
	</item>
		<item>
		<title>Sorting IP addresses properly via Linq in ASP.NET MVC3 C#</title>
		<link>http://binarydelusions.com/2012/03/17/sorting-ip-addresses-properly-via-linq-in-asp-net-mvc3-c/</link>
		<comments>http://binarydelusions.com/2012/03/17/sorting-ip-addresses-properly-via-linq-in-asp-net-mvc3-c/#comments</comments>
		<pubDate>Sun, 18 Mar 2012 01:00:08 +0000</pubDate>
		<dc:creator>Jason Myers</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://binarydelusions.com/?p=574</guid>
		<description><![CDATA[Today I ran into a need to sort some IP address in an application I was working on. Here are the relevant models: As you can see each subnet contains a list of IP addresses. We can easily access these by including them in our view by putting them in the controller: However, if we [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=574&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today I ran into a need to sort some IP address in an application I was working on. Here are the relevant models:</p>
<p><pre class="brush: csharp;">
 public class Subnet
 {
     public int SubnetId { get; set; }
     public int SiteId { get; set; }
     public string Network { get; set; }
     public string Description { get; set; }
     public string Netmask { get; set; }
     public string Gateway { get; set; }
     public int Preference { get; set; }
     public Site Site { get; set; }
     public List Ips { get; set; }
 }

public class Ip
{
    public int IpId { get; set; }
    public int SubnetId { get; set; }
    public string Address { get; set; }
    public string Name { get; set; }
    public string Purpose { get; set; }
    public string Url { get; set; }
    public Subnet Subnet { get; set; }
}
</pre></p>
<p>As you can see each subnet contains a list of IP addresses. We can easily access these by including them in our view by putting them in the controller:</p>
<p><pre class="brush: csharp;">
public ViewResult Details(int id)
 {
    Subnet subnet = db.Subnets.Include(&quot;Ips&quot;).Include(&quot;Site&quot;).Single(s =&gt; s.SubnetId == id);
    return View(subnet);
 }
</pre></p>
<p>However, if we want to sort those in our view we would typically do the follow:</p>
<p><pre class="brush: csharp;">
@foreach (NetVis.Net.Models.Ip ip in Model.Ips.OrderBy(i =&gt; i.Address))
 {
    &lt;tr&gt;
        &lt;td&gt;@ip.Address&lt;/td&gt;
        &lt;td&gt;@ip.Name&lt;/td&gt;
    &lt;/tr&gt;
}
</pre></p>
<p>That code would produce an address list like:<br />
10.10.4.1<br />
10.10.4.10<br />
10.10.4.2<br />
10.192.6.3<br />
10.2.1.1</p>
<p>Ugh, that is not how we sort IP addresses. They should look like:<br />
10.2.1.1<br />
10.10.4.1<br />
10.10.4.2<br />
10.10.4.10<br />
10.192.6.3</p>
<p>To solve this problem we can use <a href="http://msdn.microsoft.com/en-us/library/system.collections.icomparer.aspx">IComparer</a>. We can extend the IComparer class for our needs with IP addresses. So the class below takes two strings, splits them where ever there is a period, cast that as an integer, then compares each part as integers, and returns which one is the lower of the two.</p>
<p><pre class="brush: csharp;">
public class IPComparer : IComparer
{
    public int Compare(String a, String b)
    {
        return Enumerable.Zip(a.Split('.'), b.Split('.'), (x, y) =&gt; int.Parse(x).CompareTo(int.Parse(y))).FirstOrDefault(i =&gt; i != 0);
    }
}
</pre></p>
<p>We can use this code by including it below:</p>
<p><pre class="brush: csharp;">
@foreach (NetVis.Net.Models.Ip ip in Model.Ips.OrderBy(i =&gt; i.Address, new NetVis.Net.Models.IPComparer()))
{
    &lt;tr&gt;
        &lt;td&gt;@ip.Address&lt;/td&gt;
        &lt;td&gt;@ip.Name&lt;/td&gt;
    &lt;/tr&gt;
}
</pre></p>
<p>Now we will get a nice properly sorted IP address listing.</p>
<p>Extra special thanks to <a href="http://stackoverflow.com/users/45914/jason">Jason</a> on StackOverflow</p>
<p>This is lifted from <a href="http://stackoverflow.com/questions/4785218/linq-lambda-orderby-delegate-for-liststring-of-ip-addresses">http://stackoverflow.com/questions/4785218/linq-lambda-orderby-delegate-for-liststring-of-ip-addresses</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamdatadude.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamdatadude.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamdatadude.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamdatadude.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamdatadude.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamdatadude.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamdatadude.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamdatadude.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamdatadude.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamdatadude.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamdatadude.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamdatadude.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamdatadude.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamdatadude.wordpress.com/574/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=574&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://binarydelusions.com/2012/03/17/sorting-ip-addresses-properly-via-linq-in-asp-net-mvc3-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2749f6c5ef98bc4e7b7859b85d3a4c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamdatadude</media:title>
		</media:content>
	</item>
		<item>
		<title>Stuff I saw on the Internet Today</title>
		<link>http://binarydelusions.com/2012/02/15/stuff-i-saw-on-the-internet-today-2/</link>
		<comments>http://binarydelusions.com/2012/02/15/stuff-i-saw-on-the-internet-today-2/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 17:01:32 +0000</pubDate>
		<dc:creator>Jason Myers</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://binarydelusions.com/?p=566</guid>
		<description><![CDATA[http://hillelcoren.com/coder/ http://penny-arcade.com/patv/episode/so-you-want-to-be-a-developer-part-1<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=566&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://hillelcoren.com/coder/">http://hillelcoren.com/coder/</a></p>
<p><a href="http://penny-arcade.com/patv/episode/so-you-want-to-be-a-developer-part-1">http://penny-arcade.com/patv/episode/so-you-want-to-be-a-developer-part-1</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamdatadude.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamdatadude.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamdatadude.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamdatadude.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamdatadude.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamdatadude.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamdatadude.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamdatadude.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamdatadude.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamdatadude.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamdatadude.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamdatadude.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamdatadude.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamdatadude.wordpress.com/566/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=566&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://binarydelusions.com/2012/02/15/stuff-i-saw-on-the-internet-today-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2749f6c5ef98bc4e7b7859b85d3a4c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamdatadude</media:title>
		</media:content>
	</item>
		<item>
		<title>Stuff I saw on the Internet Today</title>
		<link>http://binarydelusions.com/2012/02/08/stuff-i-saw-on-the-internet-today/</link>
		<comments>http://binarydelusions.com/2012/02/08/stuff-i-saw-on-the-internet-today/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 02:02:09 +0000</pubDate>
		<dc:creator>Jason Myers</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://binarydelusions.com/?p=512</guid>
		<description><![CDATA[Nice article about development machines at Pluralsight. http://blog.pluralsight.com/2012/02/02/build-your-own-screaming-quiet-pc-just-like-pluralsights-dev-boxes/<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=512&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Nice article about development machines at Pluralsight.</p>
<p><a href="http://blog.pluralsight.com/2012/02/02/build-your-own-screaming-quiet-pc-just-like-pluralsights-dev-boxes/">http://blog.pluralsight.com/2012/02/02/build-your-own-screaming-quiet-pc-just-like-pluralsights-dev-boxes/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamdatadude.wordpress.com/512/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamdatadude.wordpress.com/512/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamdatadude.wordpress.com/512/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamdatadude.wordpress.com/512/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamdatadude.wordpress.com/512/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamdatadude.wordpress.com/512/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamdatadude.wordpress.com/512/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamdatadude.wordpress.com/512/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamdatadude.wordpress.com/512/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamdatadude.wordpress.com/512/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamdatadude.wordpress.com/512/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamdatadude.wordpress.com/512/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamdatadude.wordpress.com/512/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamdatadude.wordpress.com/512/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=binarydelusions.com&#038;blog=1222821&#038;post=512&#038;subd=jamdatadude&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://binarydelusions.com/2012/02/08/stuff-i-saw-on-the-internet-today/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2749f6c5ef98bc4e7b7859b85d3a4c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamdatadude</media:title>
		</media:content>
	</item>
	</channel>
</rss>
