<?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>JBloggin'</title>
	<atom:link href="http://johngilliland.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://johngilliland.wordpress.com</link>
	<description>walkin' thru life...</description>
	<lastBuildDate>Tue, 15 Nov 2011 15:18:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='johngilliland.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>JBloggin'</title>
		<link>http://johngilliland.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://johngilliland.wordpress.com/osd.xml" title="JBloggin&#039;" />
	<atom:link rel='hub' href='http://johngilliland.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Still Walkin&#8217;</title>
		<link>http://johngilliland.wordpress.com/2011/10/20/still-walkin/</link>
		<comments>http://johngilliland.wordpress.com/2011/10/20/still-walkin/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 14:40:15 +0000</pubDate>
		<dc:creator>John Gilliland</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://johngilliland.wordpress.com/?p=86</guid>
		<description><![CDATA[Yes I am posting again. I refuse to give up on my blog. I have been away from my hometown and my work for the last year and a half or so and I am now back and getting back into my routine. Much to my joy as I have missed all these things tremendously. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=86&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Yes I am posting again. I refuse to give up on my blog. I have been away from my hometown and my work for the last year and a half or so and I am now back and getting back into my routine. Much to my joy as I have missed all these things tremendously. I am back to work at GloryKidd Technologies and happy to have the opportunity.</p>
<p>Reminded daily why I have always loved Louisville. I am back in my old neighborhood Starbucks, clacking away. Hope to be able to post some new articles soon as I see where my new project takes me in the world of coding.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johngilliland.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johngilliland.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johngilliland.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johngilliland.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johngilliland.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johngilliland.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johngilliland.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johngilliland.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johngilliland.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johngilliland.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johngilliland.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johngilliland.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johngilliland.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johngilliland.wordpress.com/86/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=86&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johngilliland.wordpress.com/2011/10/20/still-walkin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fc5bdda977c118e3bb76f52fccd506e1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnnyg</media:title>
		</media:content>
	</item>
		<item>
		<title>Yes I am Still Here</title>
		<link>http://johngilliland.wordpress.com/2009/11/08/yes-i-am-still-here-3/</link>
		<comments>http://johngilliland.wordpress.com/2009/11/08/yes-i-am-still-here-3/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 17:23:10 +0000</pubDate>
		<dc:creator>John Gilliland</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://johngilliland.wordpress.com/2009/11/08/yes-i-am-still-here-3/</guid>
		<description><![CDATA[I am working from home, thru my Elusive Development company, on a side project to develop a windows forms app with several components. It is a very interesting project so far, but I am only a couple of weeks in to it. In the end it will be a couple of windows forms apps. One [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=78&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am working from home, thru my Elusive Development company, on a side project to develop a windows forms app with several components.</p>
<p>It is a very interesting project so far, but I am only a couple of weeks in to it.  In the end it will be a couple of windows forms apps.  One for the client and one for the end user, as well as a windows service that will handle timing and the win32 api calls.  The service will use the api to create a new desktop and then create a process w/in that desktop and switch to it, effectively taking over the users computer with  the new desktop.  The user is ultimately forced to deal with the, now in the foreground, application in order to get back to what they were originally doing.  Pretty sweet.  I am building it using C# for the 2.0 framework.  I opted for 2.0 versus 3.5 in order to prevent requiring the user to have 3.5 installed.  As folks get the 2.0 framework w/sp3 for xp, I am pretty much guaranteed my target platform for that os on up to windows 7.</p>
<p>For those interested I am using a plugin archictecture that utilizes the Abstract Factory and Template Method design patterns so far.  Dll assemblies with new types and usercontrols for those types are loaded at runtime and instantiated using factories.  Neato&#8230; </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johngilliland.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johngilliland.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johngilliland.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johngilliland.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johngilliland.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johngilliland.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johngilliland.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johngilliland.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johngilliland.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johngilliland.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johngilliland.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johngilliland.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johngilliland.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johngilliland.wordpress.com/78/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=78&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johngilliland.wordpress.com/2009/11/08/yes-i-am-still-here-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fc5bdda977c118e3bb76f52fccd506e1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnnyg</media:title>
		</media:content>
	</item>
		<item>
		<title>Github</title>
		<link>http://johngilliland.wordpress.com/2009/03/25/github/</link>
		<comments>http://johngilliland.wordpress.com/2009/03/25/github/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 14:27:51 +0000</pubDate>
		<dc:creator>John Gilliland</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://johngilliland.wordpress.com/?p=71</guid>
		<description><![CDATA[Well I finally joined Github, which is the coolest of course.  I started with just a little project for an httphandler to apply filters to images.  Something I need for work.  I have the project&#8217;s homepage here at my blog for lack of a better location.  And I also added a page in the wiki [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=71&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Well I finally joined <a href="http://www.github.com/lilmudd" target="_blank">Github</a>, which is the coolest of course.  I started with just a little project for an httphandler to apply filters to images.  Something I need for work.  I have the <a href="http://johngilliland.wordpress.com/imagehandler/" target="_self">project&#8217;s homepage here at my blog</a> for lack of a better location.  And I also added a page in the <a href="http://wiki.github.com/lilmudd/imagehandler" target="_blank">wiki at github</a> for good measure.  I am extra jazzed about the whole git thing.  I have been using it for local VC at work and at home.  I am still a little skittish about using git-svn, as it hosed on me the first time i tried to dcommit something, but all in all I am very pleased with Git itself.</p>
<p>You should checkout <a href="http://www.github.com" target="_blank">Github</a>, it is perfect, and you can pay a few bucks a month if you need private repos&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johngilliland.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johngilliland.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johngilliland.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johngilliland.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johngilliland.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johngilliland.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johngilliland.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johngilliland.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johngilliland.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johngilliland.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johngilliland.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johngilliland.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johngilliland.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johngilliland.wordpress.com/71/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=71&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johngilliland.wordpress.com/2009/03/25/github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fc5bdda977c118e3bb76f52fccd506e1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnnyg</media:title>
		</media:content>
	</item>
		<item>
		<title>A Brief Note&#8230;</title>
		<link>http://johngilliland.wordpress.com/2009/03/05/a-brief-note/</link>
		<comments>http://johngilliland.wordpress.com/2009/03/05/a-brief-note/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 02:00:18 +0000</pubDate>
		<dc:creator>John Gilliland</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://johngilliland.wordpress.com/?p=59</guid>
		<description><![CDATA[This will be a brief post.  For one, I did want to post something because I haven&#8217;t in a while and I need to write another decent article.  In fact I have the notes and outline for a post about the work I have been doing in jQuery lately.  I have been writing plugins, a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=59&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This will be a brief post.  For one, I did want to post something because I haven&#8217;t in a while and I need to write another decent article.  In fact I have the notes and outline for a post about the work I have been doing in jQuery lately.  I have been writing plugins, a couple at least, for work, for our public facing site.  One rather large one in fact, to build an image gallery from an un-ordered list of image/thumbnail links, that allows zooming in and out and dragging of the zoomed image around in the view pane.  I will post about it soon.</p>
<p>I have also been studying an average of two hours per night in Ruby and Ruby on Rails.  My position at Glorykidd Technologies as a senior software engineer has afforded me a rare opportunity to work on a large scale project in rails and I am studying for that purpose.  I am quite excited to actually get to work on a real project in rails.  More to come about this as well. But for now I am just claiming my blog on my <a rel="me" href="http://technorati.com/claim/mdhvkdmzc4">Technorati Profile</a> so that it will show up there.  I have been using delicious a whole lot lately, as opposed to Google Bookmarks and I like it very much.  And, along those lines I am trying out Technorati as well&#8230; J</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johngilliland.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johngilliland.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johngilliland.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johngilliland.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johngilliland.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johngilliland.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johngilliland.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johngilliland.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johngilliland.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johngilliland.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johngilliland.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johngilliland.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johngilliland.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johngilliland.wordpress.com/59/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=59&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johngilliland.wordpress.com/2009/03/05/a-brief-note/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fc5bdda977c118e3bb76f52fccd506e1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnnyg</media:title>
		</media:content>
	</item>
		<item>
		<title>Project Euler Journey Begins</title>
		<link>http://johngilliland.wordpress.com/2009/01/18/project-euler-journey-begins/</link>
		<comments>http://johngilliland.wordpress.com/2009/01/18/project-euler-journey-begins/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 20:52:07 +0000</pubDate>
		<dc:creator>John Gilliland</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Project Euler]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://johngilliland.wordpress.com/?p=44</guid>
		<description><![CDATA[What, Project Euler? This post is an introduction to what I intend to be a series of posts that detail my journey through the problems of Project Euler.  I am hoping to post as I solve, or attempt to solve each of these problems.  My goal is, of course, to solve all of them, but [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=44&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>What, Project Euler?</h2>
<div id="attachment_46" class="wp-caption alignright" style="width: 213px"><a href="http://johngilliland.files.wordpress.com/2009/01/pe_logo.jpg"><img class="size-full wp-image-46" title="Logo from Project Euler site." src="http://johngilliland.files.wordpress.com/2009/01/pe_logo.jpg?w=510" alt="Project Euler Website"   /></a><p class="wp-caption-text">Project Euler Website</p></div>
<p>This post is an introduction to what I intend to be a series of posts that detail my journey through the problems of <a title="Project Euler website." href="http://projecteuler.net" target="_blank">Project Euler</a>.  I am hoping to post as I solve, or attempt to solve each of these problems.  My goal is, of course, to solve all of them, but I expect them to become very challenging very quickly so I may find myself stumped early on.  However, this is an exercise in learning so I will have to prepare to be challenged, that is really the whole point.</p>
<p>The intent is for me to use the problems on Project Euler(see previous link) to accomplish several goals I have, or rather have had for a while and am just now attempting.  I can list them as three distinct learning goals.  I say learning because they all have to do with me wanting to either learn something knew or to increase my knowledge/skills in an area. </p>
<h2>My Goals for the Journey</h2>
<p>The first goal is to learn how to use a unix shell.  I want to learn how to program for the bash shell as well as how to get around and get things done using the shell command prompt.  I would eventually like to be able to incorporate shell usage into my daily work as much as possible as I really think it is an efficient way of getting tasks done. I have always felt that anything that keeps my hand off of the mouse is a step toward increasing productivity.  Being able to key tasks at a command prompt is always faster than moving your hand to the mouse to search through dropdown menus and lists of icons, atleast it is in most cases.  I do not think that the mouse is unnecessary by any means, I just prefer to use the keyboard as much as possible, or as much as is practical, while I am working.</p>
<p>The second thing I have always wanted to learn more about is higher math.  I never took calculus in my brief stint at university, nor when I was in high school.  I always loved algebra and I am hoping that calculus as well as other higher mathematics areas will be just as interesting.  I also hope they are not beyond me though.  I expect I will have to learn quite a bit in order to solve the problems on Euler, even after the first couple I am already looking up stuff on Wikipedia and learning new things, exactly my purpose.</p>
<p>Lastly, but certainly not least, I want to learn a new language, maybe more than one.  I am going to start with Perl because I have always felt that not knowing perl was a drawback as a professional developer.  I will be attempting to solve all of the problems using Perl as the coding language and consequently have to learn it as I go.  I have already used perl to solve the first two problems.  I also really want to learn Ruby so I may do some problems in Ruby as I go along.  There are plenty of problems so I may be able to learn both languages as I go.</p>
<h2>More about Project Euler</h2>
<p><div id="attachment_48" class="wp-caption alignleft" style="width: 160px"><a href="http://en.wikipedia.org/wiki/Euler"><img class="size-full wp-image-48  " title="Leonhard Euler [1707 - 1783]" src="http://johngilliland.files.wordpress.com/2009/01/euler_main.jpg?w=510" alt="Euler is considered to be the preeminent mathematician of the 18th century and one of the greatest of all time. He is also one of the most prolific; his collected works fill 60–80 quarto volumes."   /></a><p class="wp-caption-text">Euler is considered to be the preeminent mathematician of the 18th century.</p></div>I stumbled on to project euler somehow, though I cannot remember how for the life of me.  At the time I bookmarked it in my GMarks and went on my way keeping it in the back of my mind as something to look at later.  Well later came and I went to the site and read about it.  </p>
<p>Project Euler is a series of challenging mathematical/computer programming problems.  They involve both the math aspect as well as the coding aspect which is used to perform the calculations needed to get the solution in a timely fashion.  In fact all solutions are supposed to adhere to the one minute rule meaning that they should take no more than a minute to execute and produce the result.  The <a title="What is Project Euler all about?" href="http://projecteuler.net/index.php?section=about" target="_blank">site&#8217;s about page</a> states that its intent is</p>
<blockquote><p>&#8220;to provide a platform for the inquiring mind to delve into unfamiliar areas and learn new concepts in a fun and recreational context&#8221;</p></blockquote>
<p>which is what it does, quite well in my opinion.  There are several cool features about the site that make it fun as well as challenging.  It is also well kept and updated often, which makes it feel like you are participating in something more so than if it was a dead site.  In fact, every time I logon to the site there are dozens of people logged in already, as I write this there are 88 members logged in, so it is definitely an active site.</p>
<h2>Some of the Features</h2>
<p>There are a few features on the site that appealed to me and that made me want to participate as well as making me think that this was an excellent way for me to accomplish the goals I mentioned above.  Of course the activity level of the site and the fact that it is kept current and that they are still adding new problems, etc. all made it attractive to me.  But, there are a couple of specific features that make it even cooler.</p>
<p>One of those features is the simple fact that you can register and login.  This makes possible the scoring and tracking stats features per user (and per problem).  Once you register and login you start on the problems, I am doing them in the suggested order that they are presented in, but I suppose you don&#8217;t have to do it that way.  When you solve a problem or rather, when you think you have solved a problem you can submit your answer.  There is a place to do that for each problem, then you are told whether you are right or not.  I have been right the first time on the first two problems so I am not sure what happens when you are wrong.  When you are right you will see a different view in the problem list from then on.  You now see links to an overview pdf, which explains the solutions and has notes about the math/theory behind the problem.  This lets you see if you went about solving the problem in the most efficient way possible.  You also see a link to the forum thread for that problem where others have discussed the problem in greater detail.  </p>
<div id="attachment_49" class="wp-caption aligncenter" style="width: 310px"><a href="http://johngilliland.files.wordpress.com/2009/01/pe_problems_list1.png"><img class="size-medium wp-image-49 " title="Problems list from Project Euler website." src="http://johngilliland.files.wordpress.com/2009/01/pe_problems_list1.png?w=300&#038;h=111" alt="Screenshot of the list of problems." width="300" height="111" /></a><p class="wp-caption-text">Screenshot of the list of problems.</p></div>
<p>All this extra info is quite informative and contributes greatly to the learning experience.   If not for this extra info and participation by the community I wouldn&#8217;t know that although I correctly solved the first two problems, there were better ways to solve them than the ways that I used.  While not wrong, because I got the right answer, I discovered that there were simpler ways, that included more math theory that I did not have, that would find the solution more efficiently.  These extra notes and posts helped me learn much more than I would have by just submitting my answer and finding out it was correct.  I plan to post separately about each problem where I will go into this point in more detail.</p>
<h3>Some tidbits about Project Euler</h3>
<ul>
<li>Here are some cool facts/details about project euler that I thought might add to this post and were interesting:</li>
<li>There are 228 problems so far, all of which have been solved by someone.</li>
<li>The first problem has been solved by 48,882 people (including me) and the 228th problem has been solved by 76 people.</li>
<li>You can sort the problems in descending ID, ascending Difficult, or ascending Difficulty.  I am solving them in order by ID.</li>
<li>From the <a title="The Project Euler Stats page." href="http://projecteuler.net/index.php?section=statistics" target="_blank">Stats page</a>, there are 52,922 users whom have submitted a total of 892,601 solutions, an average of 16.9 problems per user.</li>
<li>I count 165 countries listed on the stats page w/atleast one solution submitted next to their flag.<strong></strong></li>
</ul>
<p><strong>The top five(5) languages in number of users are: </strong></p>
<ul></ul>
<ol>
<li> C/C++ [5798]
<li>Python [5121]</li>
<li>Java [3231]</li>
<li>C# [1758]</li>
<li>Haskell [1255]</li>
<li>Ruby [1185] &#8211; <em>i added a sixth because the last two were so close </em></li>
<ol></ol>
</li>
</ol>
<p><strong></strong></p>
<p><strong> The top five(5) languages in User&#8217;s Rating are:</p>
<ul></ul>
<p></strong></p>
<ol>
<li>40% &#8211; Magma &#8212; (?? never heard of this one, have to look it up)
<li>39% &#8211; Pari/GP &#8212; (?? never heard of this one either)</li>
<li>23% &#8211; APL/J/K &#8212; (?? okay I must be an idiot)</li>
<li>22% &#8211; Mathematica &#8212; (finally one i have heard of)</li>
<li>20% &#8211; GAP &#8212; (?? sigh)</li>
<ol></ol>
</li>
</ol>
<p>Okay, so there you go, a bunch of stuff about Project Euler and why I am gonna be working on it.  I hope I don&#8217;t get discourage right away.  I have little doubt that this is going to get real tough pretty soon, but I am equally sure that I will learn a great deal if I can do it&#8230; j</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johngilliland.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johngilliland.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johngilliland.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johngilliland.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johngilliland.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johngilliland.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johngilliland.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johngilliland.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johngilliland.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johngilliland.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johngilliland.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johngilliland.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johngilliland.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johngilliland.wordpress.com/44/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=44&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johngilliland.wordpress.com/2009/01/18/project-euler-journey-begins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fc5bdda977c118e3bb76f52fccd506e1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnnyg</media:title>
		</media:content>

		<media:content url="http://johngilliland.files.wordpress.com/2009/01/pe_logo.jpg" medium="image">
			<media:title type="html">Logo from Project Euler site.</media:title>
		</media:content>

		<media:content url="http://johngilliland.files.wordpress.com/2009/01/euler_main.jpg" medium="image">
			<media:title type="html">Leonhard Euler [1707 - 1783]</media:title>
		</media:content>

		<media:content url="http://johngilliland.files.wordpress.com/2009/01/pe_problems_list1.png?w=300" medium="image">
			<media:title type="html">Problems list from Project Euler website.</media:title>
		</media:content>
	</item>
		<item>
		<title>C# Extension Method and Lambda Expressions</title>
		<link>http://johngilliland.wordpress.com/2009/01/07/c-extension-method-and-lambda-expressions/</link>
		<comments>http://johngilliland.wordpress.com/2009/01/07/c-extension-method-and-lambda-expressions/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 20:40:22 +0000</pubDate>
		<dc:creator>John Gilliland</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[C# 3.0]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://johngilliland.wordpress.com/?p=16</guid>
		<description><![CDATA[Recently I have been trying to learn more about the new language features in C# 3.0, and I have enjoyed what I have found thus far.  Especially both the var keyword and extension methods, but I had yet to really implement anything using lambdas.  That is until today&#8230; One of the things I have done [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=16&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently I have been trying to learn more about the new language features in C# 3.0, and I have enjoyed what I have found thus far.  Especially both the var keyword and extension methods, but I had yet to really implement anything using lambdas.  That is until today&#8230;</p>
<p>One of the things I have done with <a title="Argument Validation using C# Extension Methods" href="http://johngilliland.wordpress.com/2009/01/07/argument-validation-using-c-30-extension-methods/">extension methods</a> was to implement some really sweet method argument validation stuff.  I had read several related blog entries regarding this subject and had whipped up a variation [actually just a much smaller set of what they had already come up with as my needs were much less] of their ideas for use in a project I am working on [and likely in future projects].   And, as it turns out, this same bit of features afforded me the opportunity to check out lambda expressions as well, and to hopefully this time add something of value to build on their work instead of just reusing it.</p>
<p>Okay so the scene is set, with me at my desk at work, coding a unit test for what I hope will be a new feature on my current project [dynamically executed reports from xml definition files, like rdl but much much simpler]&#8230;</p>
<p>I was about to use the argument extension methods to validate an integer that I needed to be in a certain range and it occured to me how nice it would be if I could just pass in an expression that evaluated to a boolean result similar to what I would do if I was writing in javascript.  Yeah, that would be extra nice!  So, off I went back to GOG to do some research on passing an expression as an argument to a function in C#.  My research led me straight to <a title="Lambda Expressions, new C# 3.0 Feature" href="http://weblogs.asp.net/scottgu/archive/2007/04/08/new-orcas-language-feature-lambda-expressions.aspx">lambda expressions</a> and exactly what I needed to make my new extension method work.</p>
<p style="padding-left:30px;">My goal was to be able to implement something like the following psuedo-code:</p>
<p><pre class="brush: csharp;">
public void MyFunction(int myInt)
{
    RequireThat(myInt).MeetsCriteria(&quot;myInt &gt; 0&quot;);
}
</pre></p>
<p>Thus being able to use some very smooth and descriptive code to validate my integer argument before using it in the function, or atleast something as close to that effect as I could get.</p>
<p>Well lambda expressions were exactly the ticket, specifically the <a title="MSDN Reference for Func&lt;T, TResult&gt; delegate type." href="http://msdn.microsoft.com/en-us/library/bb549151.aspx">Func&lt;T, TResult&gt;</a> delegate type.  Which basically allows me to pass a method that accepts one parameter of type T and returns a result of type TResult as a parameter to another method, without defining a custom delegate type of my own.  A kinda anonymous delegate type construct if you will.  Lambda expressions use this type as an arg for the <a title="Code Project Article on Expressions" href="http://www.codeproject.com/KB/linq/Expressions.aspx">Expression&lt;T&gt;(Func&lt;T, TResult)</a> type constructor.   I have done some of this preliminary reading on Expression Trees and such and it is heady stuff, but interesting none the less.  I look forward to someday being able to apply it to a real world problem.  </p>
<p>But today I was able to apply lambdas to my real world problem like so:</p>
<p>I needed an extension method for my <a title="Argument validation with extension methods." href="http://johngilliland.wordpress.com/2009/01/07/argument-validation-using-c-30-extension-methods/">Generic argument wrapper</a> that would allow me to pass in a simple expression predicate with which to validate the argument.  And here is what I came up with:</p>
<div id="attachment_25" class="wp-caption aligncenter" style="width: 359px"><img class="size-full wp-image-25 " title="Code for MeetsCriteria extension method." src="http://johngilliland.files.wordpress.com/2009/01/meetscriteria.png?w=510" alt="Code for MeetsCriteria extension method."   /><p class="wp-caption-text">Code for MeetsCriteria extension method.</p></div>
<p>Now this code allows me to pass in a lambda expression that I wish to use to validate an integer argument for my method [or any integer for that matter].  This method was added to my existing argument validation extension methods setup as described in a previous post, already linked to a couple of times above, so it follows similar usage syntax, as such:</p>
<pre style="padding-left:30px;">myIntArg.RequireThat(<span style="color:#800000;">"myIntArg"</span>).MeetsCriteria(...);</pre>
<p>I also added a unit test for this new method into my existing test project for the rest of my validation extension methods, and so I will use that test method to show you a contextual usage of MeetsCriteria&#8230;</p>
<div id="attachment_26" class="wp-caption aligncenter" style="width: 391px"><img class="size-full wp-image-26" title="meetscriteria.test.png" src="http://johngilliland.files.wordpress.com/2009/01/meetscriteriatest.png?w=510" alt="My unit test for MeetsCriteria method.  Testing that 21 is between 20 and 22."   /><p class="wp-caption-text">My unit test for MeetsCriteria method.  Testing that 21 is between 20 and 22.</p></div>
<p>So, now I have actually used lambdas in a project at work, I am so very happy with myself.  And my quest to conquer C# 3.0 features continues&#8230; J</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johngilliland.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johngilliland.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johngilliland.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johngilliland.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johngilliland.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johngilliland.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johngilliland.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johngilliland.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johngilliland.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johngilliland.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johngilliland.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johngilliland.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johngilliland.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johngilliland.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=16&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johngilliland.wordpress.com/2009/01/07/c-extension-method-and-lambda-expressions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fc5bdda977c118e3bb76f52fccd506e1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnnyg</media:title>
		</media:content>

		<media:content url="http://johngilliland.files.wordpress.com/2009/01/meetscriteria.png" medium="image">
			<media:title type="html">Code for MeetsCriteria extension method.</media:title>
		</media:content>

		<media:content url="http://johngilliland.files.wordpress.com/2009/01/meetscriteriatest.png" medium="image">
			<media:title type="html">meetscriteria.test.png</media:title>
		</media:content>
	</item>
		<item>
		<title>Argument Validation using C# 3.0 extension methods</title>
		<link>http://johngilliland.wordpress.com/2009/01/07/argument-validation-using-c-30-extension-methods/</link>
		<comments>http://johngilliland.wordpress.com/2009/01/07/argument-validation-using-c-30-extension-methods/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 18:11:38 +0000</pubDate>
		<dc:creator>John Gilliland</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[C# 3.0]]></category>
		<category><![CDATA[Extension Methods]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://johngilliland.wordpress.com/?p=18</guid>
		<description><![CDATA[ After some research into reusable arg validation ideas on GOG (good ole google) I have found something that, after some simplification of course, will serve the projects meager argument validation needs. Actually this is a super cool trick that we can reuse any number of places from here on, if we so desire.  Here are [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=18&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p> After some research into reusable arg validation ideas on GOG (good ole google) I have found something that, after some simplification of course, will serve the projects meager argument validation needs. Actually this is a super cool trick that we can reuse any number of places from here on, if we so desire.  Here are the original posts that I read and have taken ideas from, particularly Roger Alsings articles, much thanks to him.  This technique is, IMHO, a nice way to showcase how to combine some of C#&#8217;s new features, specifically Generics from C# 2.0 and Extension methods from C# 3.0, into a nice solution to a frequent problem.  </p>
<blockquote><p>- <a href="http://rogeralsing.com/2008/05/10/followup-how-to-validate-a-methods-arguments/">http://rogeralsing.com/2008/05/10/followup-how-to-validate-a-methods-arguments/</a><br />
- <a href="http://weblogs.asp.net/fredriknormen/archive/2008/05/08/how-to-validate-a-method-s-arguments.aspx">http://weblogs.asp.net/fredriknormen/archive/2008/05/08/how-to-validate-a-method-s-arguments.aspx<br />
</a>- <a href="http://www.puzzleframework.com/wikiengine/WikiPageViewer.aspx?ID=78">http://www.puzzleframework.com/wikiengine/WikiPageViewer.aspx?ID=78</a></p></blockquote>
<p>Using these posts and the code from a much larger api at the puzzle framework address in the quote above, i have assembled a smaller set of argument validation methods.  Roger Alsing&#8217;s puzzle framework has a full compliment of these validation methods if you are interested.  I, on the other hand swiped just a couple of his and added a couple of my own, but am using the same technique to acheive a fluent interface and also the very ingenius idea he had of using a wrapper class for the extension methods rather than extending each .NET type on its own.  Very nice work by him.  This article is simply an effort to explain how I used these articles to put together a much smaller set of validation methods for my own use in a project.  Hopefully it explains things clearly and pays sufficient homage to the ideas originator.</p>
<p> </p>
<p>The basic premise is that now with generics and extension methods features of C# we are able to add functionality to types/classes. In this case all types, for the purpose of validating method arguments. The articles above explore this in a progressive fashion: First presenting the idea of an ArgumentHelper class that would have lots of overloads for validating various C# types, i.e. int, string, double, etc. Under this scheme you would need a separate method for each type of validation for each type. Such as:</p>
<p><pre class="brush: csharp;">
public void RequireNotNull(int arg, string argName);
public void RequireNotNull(string arg, string argName);
public void RequireNotNull(DateTime arg, string argName);
...
</pre></p>
<p>This is not a bad idea, and certainly is better than writing a multiline if statement for each argument in each method in your project. Second Idea: was to use extension methods to facilitate usage syntax like:</p>
<p><pre class="brush: csharp;">
public void MyMethod(int argument1, string argument2)
{
    // validate args
    argument1.RequireInRange(argument1, 0, 10, &quot;argument1&quot;);
    argument2.RequireNotNull(argument2, &quot;argument2&quot;);
}
</pre></p>
<p>Now this is starting to look pretty smooth, however we go one step further, combining the new features of Generics(C# 2.0) and Extension methods (C# 3.0) to get something that is SUPER smooth. The idea, which was of course new to me, is to a) create a generic type for argmuments. I used one similar to theirs, basically just a container for name and value of an argument the value being the arg itself of the type &#8220;T&#8221; as defined by the generic. Then b) use extension methods to add validation methods to this generic class, thus making them available to any type. Here is my generic argument container class that is the one extended:</p>
<p><pre class="brush: csharp;">
public class ArgumentEx&lt;T&gt;
{
    public T Value { get; set; }
    public string Name { get; set; }
    public ArgumentEx(T value, string name)
    {
        this.Value = value;
        this.Name = name;
    }   
    public static implicit operator T(ArgumentEx&lt;T&gt; arg)
    {
        return arg.Value;
    }
}
</pre></p>
<p>This class simply wraps an argument with a generic container in essence. We set the default operator to return the arg itself (the &#8220;Value&#8221; member) and create a simple ctor. Now instead of having to write an extension method for each type we want to be able to validate (int, string, etc.) we just write one extension method for this class. First we write an extension method for the generic T type of our generic class and that will give us coverage of all types and this will always return us an instance of our new ArgumentEx type:</p>
<p><pre class="brush: csharp;">
public static class ValidatorExtensions
{
    public static ArgumentEx&lt;T&gt; RequireThat&lt;T&gt;(
        this T arg, string name)&lt;/pre&gt;
&lt;pre style=&quot;padding-left:30px;&quot;&gt;    {
        return new ArgumentEx&lt;T&gt;(arg, name);
    }
}
</pre></p>
<p>Now we can call this RequireThat method from any argument we pass in to any method and we will get back our ArgumentEx class which we have extended with validation methods such as this:</p>
<p><pre class="brush: csharp;">
[DebuggerHidden]
public static ArgumentEx&lt;T&gt; NotNull&lt;T&gt;(
    this ArgumentEx&lt;T&gt; arg) where T : class
{           
    if (arg.Value == null)
        throw new ArgumentNullException(arg.Name);
    return arg;     // for fluency
}
</pre></p>
<p>This method extends the ArgumentEx type rather than the generic T type so we have all of our extension methods hanging off of the wrapper class. This setup is a touch abstract but it allows us to do super pretty things like this:</p>
<p><pre class="brush: csharp;">
public ReportInfo(string pathToXmlFile)
    : base(null, null)         
{
    // validate args
    pathToXmlFile.RequireThat(&quot;pathToXmlFile&quot;).IsNotNull();           
}
</pre></p>
<p>not bad in the way of readability and extensibility too. Because the extension methods return the arg instance every time you can chain calls as well.</p>
<p> </p>
<p>Below is the class diagram for the validation/argument extensions.  There are a few string extensions too added for convenience&#8230;</p>
<p> </p>
<div id="attachment_36" class="wp-caption aligncenter" style="width: 420px"><a href="http://johngilliland.files.wordpress.com/2009/01/extensionsclasses.png"><img class="size-full wp-image-36 " title="Validation Extension Classes" src="http://johngilliland.files.wordpress.com/2009/01/extensionsclasses.png?w=510" alt="Class diagram for the validation extension classes."   /></a><p class="wp-caption-text">Class diagram for the validation extension classes.</p></div>
<p> </p>
<p> </p>
<p> </p>
<p>And here is a screenshot of the unit tests all green and pretty!</p>
<p> </p>
<div id="attachment_37" class="wp-caption aligncenter" style="width: 555px"><a href="http://johngilliland.files.wordpress.com/2009/01/extenstionsunittests.png"><img class="size-full wp-image-37 " title="Validation Extension UnitTests" src="http://johngilliland.files.wordpress.com/2009/01/extenstionsunittests.png?w=510" alt="A screenshot of the pretty green unit test results!"   /></a><p class="wp-caption-text">A screenshot of the pretty green unit test results!</p></div>
<p> </p>
<p> </p>
<p> </p>
<p>So now I have an easy to use and further extensible system for validating method arguments with out having to write if/throw constructs over and over inside of each method.  This promotes better code because the easier it is to validate my arguments the more likely it is that I will do a thorough job of it.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johngilliland.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johngilliland.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johngilliland.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johngilliland.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johngilliland.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johngilliland.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johngilliland.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johngilliland.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johngilliland.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johngilliland.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johngilliland.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johngilliland.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johngilliland.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johngilliland.wordpress.com/18/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=18&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johngilliland.wordpress.com/2009/01/07/argument-validation-using-c-30-extension-methods/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fc5bdda977c118e3bb76f52fccd506e1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnnyg</media:title>
		</media:content>

		<media:content url="http://johngilliland.files.wordpress.com/2009/01/extensionsclasses.png" medium="image">
			<media:title type="html">Validation Extension Classes</media:title>
		</media:content>

		<media:content url="http://johngilliland.files.wordpress.com/2009/01/extenstionsunittests.png" medium="image">
			<media:title type="html">Validation Extension UnitTests</media:title>
		</media:content>
	</item>
		<item>
		<title>Google Base, Reporting Xml, and VS Unit Testing</title>
		<link>http://johngilliland.wordpress.com/2008/12/18/google-base-reporting-xml-and-vs-unit-testing/</link>
		<comments>http://johngilliland.wordpress.com/2008/12/18/google-base-reporting-xml-and-vs-unit-testing/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 14:40:54 +0000</pubDate>
		<dc:creator>John Gilliland</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[C# 3.0]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://johngilliland.wordpress.com/?p=6</guid>
		<description><![CDATA[I have been working on an interesting project here at work.  I had previously been working on some fixes for a windows service (written in C#) that uploaded our catalog items to Google Base, based on some logging and comparison diffs, every fifteen minutes if there were new items or updates to items.  But, with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=6&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have been working on an interesting project here at work.  I had previously been working on some fixes for a windows service (written in C#) that uploaded our catalog items to Google Base, based on some logging and comparison diffs, every fifteen minutes if there were new items or updates to items.  But, with that seemingly on its way now, I was assigned this new project.  Basically I am working on a system that will allow the definition of sql queries, or data &#8220;views&#8221; via an <abbr title="eXtensible Markup Language">XML</abbr> schema.  Yes, I know there is already <a title="Report Definition Language Spec [2008]" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2a20c7af-52e8-4882-bd24-9479b3c7517d&amp;displaylang=en" target="_blank">RDL</a> for <a title="Microsoft SQL Server Reporting Services" href="http://www.microsoft.com/sqlserver/2008/en/us/reporting.aspx" target="_blank">SQL Reporting Services</a>, but that is not what they want.  They want a much, much simpler setup that will make it easier for a developer on the team to make changes to, or add a new report, by editing the <abbr title="eXtensible Markup Language">XML</abbr>  definition file.</p>
<p>So, off I go.  I started with the whiteboard notes that were put up during my initial meeting about this, and the sample <abbr title="eXtensible Markup Language">XML</abbr> there-in, and have tried to keep it as simple as possible.  I am using classes for each logical report entity, such as:  Report, Query, Column, Parameter, etc.  I am also using the <a title="Visual Studio Test System" href="http://msdn.microsoft.com/en-us/library/ms379625.aspx" target="_blank">VS unit testing framework</a> for this project, which is something I hadn&#8217;t done previously, but wanted to.  Let me qualify that by saying up front that I am not using <abbr title="Test-Driven Development">TDD</abbr> strictly speaking.  But I am writing tests for code, classes and methods, as I go.  I must say I am quickly becoming hooked on the idea of unit testing everything, whether you are designing with <abbr title="Test-Driven Development">TDD</abbr> or not, it just makes sense, and it does honestly help with design decisions.  By testing your code as you go or before hand you get a quick look at how it will be called, which in my case where I am developing what hopes to be an api of sorts that will be extended and re-used often is a great benefit.  <span id="more-6"></span></p>
<p>I am going to try and post my progress with work and specifically this project as I go because I am learning a lot and because this one is already a fun one.  Here is a quick taste.  This is the <abbr title="eXtensible Markup Language">XML</abbr> markup for a report as far as I have designed yet.  No, it is not complete, and yes, I will probably change it many times before it is done, but it is a start.  I have coded interfaces, base classes and implementations for all of this markup so far&#8230;</p>
<pre style="padding-left:30px;"><span style="color:#808080;">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;report name="test report"
  author="programmer"
  title="A Test Report"
  description="A test report description."
  created-on="2007-12-31"
  modified-on="2008/01/01"&gt;
  &lt;column name="ID" display="ID" type="Bound" /&gt;
  &lt;column name="NAME" display="Advertiser Name" type="Bound" /&gt;
  &lt;column name="MODIFY_DATE" display="Last Modified" type="Bound" /&gt;
  &lt;column name="TOTAL_ITEMS" display="Total Items" type="ReportLink"&gt;
    &lt;displayinfo type="reportlink"&gt;
      &lt;href&gt;itemsbyadvertiser.xml?id=[ID]&lt;/href&gt;
      &lt;placeholder name="ID" value="[ID]" /&gt;
    &lt;/displayinfo&gt;
  &lt;/column&gt;
  &lt;query name="AdvertiserItemCounts"&gt;
    &lt;sql&gt;
      SELECT ID, NAME, MODIFY_DATE, (
      SELECT COUNT(ID) FROM ITEM
      WHERE ADVERTISER_ID = a.ID
      ) AS TOTAL_ITEMS FROM ADVERTISER a
      ORDER BY TOTAL_ITEMS DESC
    &lt;/sql&gt;
    &lt;connection database="Internet" /&gt;
  &lt;/query&gt;
&lt;/report&gt;</span></pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johngilliland.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johngilliland.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johngilliland.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johngilliland.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johngilliland.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johngilliland.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johngilliland.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johngilliland.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johngilliland.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johngilliland.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johngilliland.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johngilliland.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johngilliland.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johngilliland.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=6&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johngilliland.wordpress.com/2008/12/18/google-base-reporting-xml-and-vs-unit-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fc5bdda977c118e3bb76f52fccd506e1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnnyg</media:title>
		</media:content>
	</item>
		<item>
		<title>No really this time I mean it</title>
		<link>http://johngilliland.wordpress.com/2008/10/28/no-really-this-time-i-mean-it/</link>
		<comments>http://johngilliland.wordpress.com/2008/10/28/no-really-this-time-i-mean-it/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 12:26:39 +0000</pubDate>
		<dc:creator>John Gilliland</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://johngilliland.wordpress.com/?p=4</guid>
		<description><![CDATA[I am going to try to keep up my blog again.  But, this time I am going to use a wordpress.com blog instead of my own domain.  I am tired of putting it up and then letting it expire and then forgetting to renew and then having to repurchase my domain and set the site [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=4&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am going to try to keep up my blog again.  But, this time I am going to use a wordpress.com blog instead of my own domain.  I am tired of putting it up and then letting it expire and then forgetting to renew and then having to repurchase my domain and set the site up again.  With wordpress.com I don&#8217;t have to worry about it, it is just there.  Granted, I don&#8217;t have the ability to put up other content, development wise, but wordpress is pretty powerfull, and as far as online publishing of my written content, anything I would produce, I can pretty much count on the fact that I can use wordpress to put it up.</p>
<p>So, here we go again.  This is me back at a new job and back with a new blog.  Yeah!!!</p>
<p>Cool stuff I am looking at now&#8230;</p>
<p>1. Azure<br />
2. ASP.NET MVC<br />
3. jQuery<br />
4. Zoho</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johngilliland.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johngilliland.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johngilliland.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johngilliland.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johngilliland.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johngilliland.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johngilliland.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johngilliland.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johngilliland.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johngilliland.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johngilliland.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johngilliland.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johngilliland.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johngilliland.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=4&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johngilliland.wordpress.com/2008/10/28/no-really-this-time-i-mean-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fc5bdda977c118e3bb76f52fccd506e1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnnyg</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello world!</title>
		<link>http://johngilliland.wordpress.com/2007/08/20/hello-world/</link>
		<comments>http://johngilliland.wordpress.com/2007/08/20/hello-world/#comments</comments>
		<pubDate>Mon, 20 Aug 2007 15:22:55 +0000</pubDate>
		<dc:creator>John Gilliland</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=1&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Welcome to <a href="http://wordpress.com/">WordPress.com</a>. This is your first post. Edit or delete it and start blogging!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/johngilliland.wordpress.com/1/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/johngilliland.wordpress.com/1/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johngilliland.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johngilliland.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johngilliland.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johngilliland.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johngilliland.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johngilliland.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johngilliland.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johngilliland.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johngilliland.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johngilliland.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johngilliland.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johngilliland.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johngilliland.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johngilliland.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johngilliland.wordpress.com&amp;blog=1553479&amp;post=1&amp;subd=johngilliland&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johngilliland.wordpress.com/2007/08/20/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fc5bdda977c118e3bb76f52fccd506e1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnnyg</media:title>
		</media:content>
	</item>
	</channel>
</rss>
