<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-35893624</id><updated>2011-12-18T15:35:42.985-08:00</updated><category term='Vista'/><category term='Abstraction'/><category term='Easy'/><category term='Microsoft Reporting Services Howto Link'/><category term='Team Test'/><category term='CSS'/><category term='Mexican Pesos'/><category term='Miracle'/><category term='.Net'/><category term='XML'/><category term='CRUD'/><category term='Windows7'/><category term='TypeSafe DataSet'/><category term='Stylesheets'/><category term='Data Presentation'/><category term='Java'/><category term='Glenn Beck'/><category term='America'/><category term='anonymous interface'/><category term='TSQL'/><category term='Translator'/><category term='C#'/><category term='many-to-many'/><category term='iMac shuffle'/><category term='Interfaces'/><category term='ISet'/><category term='Number'/><category term='Chrome'/><category term='CTE'/><category term='Better Life'/><category term='DataSet'/><category term='Software Design'/><category term='RSS Feeds'/><category term='Microsoft Visual Studio Team System'/><category term='Convert'/><category term='NHibernate'/><category term='Payment'/><category term='Null Coalescing'/><category term='Internet Explorer'/><category term='Vista Licensing'/><category term='Spanish'/><category term='Online Shopping'/><category term='GodMode'/><category term='Inheritance'/><category term='Steve Jobs Is the Devil'/><category term='FireFail'/><title type='text'>LLamas Santos</title><subtitle type='html'>Watch out, they spit.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.llamasantos.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>James</name><uri>http://www.blogger.com/profile/16904809457819321994</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-35893624.post-6161729307357618127</id><published>2011-12-18T15:22:00.001-08:00</published><updated>2011-12-18T15:29:39.436-08:00</updated><title type='text'>JavaScript Maybe Monad</title><content type='html'>&lt;p&gt;So for a while I’ve been working on a maybe monad implementation for JavaScript and have made decent headway, or so I thought.&amp;nbsp; My previous attempts have been decent however they require the use of the new operator which is BAD for memory utilization and allocation.&amp;nbsp; As a point of reference here’s my first go at it.&lt;/p&gt; &lt;script src="http://snipt.org/embed/qpmv3/slate"&gt;&lt;/script&gt; &lt;p&gt;As you can see its very verbose and uses the this operator with impunity. Great or so I thought until I learned how 'the good parts' of JavaScript. Since learning a better way of writing JavaScript I've been struggling how best to write a maybe monad that will natively 'just work' without having to use new or engineer in other special stuff. I was inspired by the functional elements of JavaScript and using closures and prototype definitions on Function to make it work 'out of the box'.  So here we are :) &lt;/p&gt;  &lt;script src="http://snipt.org/embed/qpmH7/PHP%20Default"&gt;&lt;/script&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-6161729307357618127?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/6161729307357618127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=6161729307357618127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/6161729307357618127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/6161729307357618127'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2011/12/javascript-maybe-monad.html' title='JavaScript Maybe Monad'/><author><name>James</name><uri>http://www.blogger.com/profile/16904809457819321994</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-3546245845955957520</id><published>2011-08-21T14:16:00.001-07:00</published><updated>2011-08-21T14:16:28.852-07:00</updated><title type='text'>jQuery page load</title><content type='html'>&lt;p&gt;I’ve been struggling as of late on how best to create a solid page that dynamically loads data and renders the majority of the DOM client side through jQuery templates.&amp;#160; My reasoning for this is two fold.&lt;/p&gt;  &lt;p&gt;1. To increase the page load time to the client    &lt;br /&gt;2. Simplify server side code.&lt;/p&gt;  &lt;p&gt;On the first point, coming from a dev shop that has traditionally had zero ability to create well defined and clean HTML I wanted to try and separate as much as possible the responsibilities in UI code from the rest of the code base.&amp;#160; Since jQuery templating is beyond easy to do it seemed only natural that it could tie together through ajax the UI and the Server.&amp;#160; This created a great solution but had a byproduct that was unacceptable.&amp;#160; A slow page load time.&amp;#160; &lt;/p&gt;  &lt;p&gt;On the second point by simplifying server side code there is far far less of a chance of bugs occurring if there is less server side code.&amp;#160; Also if UI code is not a part of the calls one could easily automate and interact with the server side API without having to interact with the site.&amp;#160; This creates implicitly a RESTful style API (at least in my case) for myself and third parties to operate with.&lt;/p&gt;  &lt;p&gt;So, how to solve my problem?&amp;#160; I started with Google and I found &lt;a href="http://encosia.com/dont-let-jquerys-document-ready-slow-you-down/" target="_blank"&gt;this&lt;/a&gt;.&amp;#160; Take a second to read it.&amp;#160; Seriously.&amp;#160; I’ll wait.&lt;/p&gt;  &lt;p&gt;Now, the author brings up some great points + benchmarks (which I love to see), but he didn’t directly solve my problem.&amp;#160; How do I use his method of making calls initially on the page whilst still handling all of my renderings client side.&amp;#160; That’s where this method made a little more sense.&lt;/p&gt;  &lt;br /&gt;&lt;script src="http://snipt.org/embed/xmmpn"&gt;&lt;/script&gt;  &lt;br /&gt;  &lt;p&gt;The method is simple, do the ajax call at the top of the page before the bulk of the DOM is loaded and then injecting the elements when the page is ready.&amp;#160; Since javascript natively handles closures the data returned is persisted till after the $(document).ready event fires.&amp;#160; This means that the document can process all of this as soon as it becomes available rather than waiting for the ajax call to finish giving the UI render lag.&lt;/p&gt;  &lt;p&gt;I have a few more ideas on how I can more efficiently render elements as they become ready but my knowledge of jQuery isn’t quite there yet on the subject, but I’ll post up my solution when I can prove the idea out.&amp;#160; Till then, hope this helps.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-3546245845955957520?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/3546245845955957520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=3546245845955957520' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/3546245845955957520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/3546245845955957520'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2011/08/jquery-page-load.html' title='jQuery page load'/><author><name>James</name><uri>http://www.blogger.com/profile/16904809457819321994</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-4268723436097215202</id><published>2011-02-17T20:32:00.001-08:00</published><updated>2011-02-17T20:32:15.274-08:00</updated><title type='text'>Active Patterns in F#</title><content type='html'>&lt;p&gt;There are few times when I learn a language when I just stop and say “cool”!&amp;#160; Active patterns gets this type of response.&lt;/p&gt;  &lt;p&gt;Recently I was perusing the F# category on stackoverflow.com when I came across a problem with Discriminated Unions, you can read it &lt;a href="http://stackoverflow.com/questions/5035553/f-match-question" target="_blank"&gt;here&lt;/a&gt;.&amp;#160; The problem in a nutshell is two members of the union represent the same type and the individual asking the question wants an easy way to evaluate the types A and B the same, say using distinctBy.&amp;#160; &lt;/p&gt;  &lt;p&gt;type u = { str : string }&lt;/p&gt;  &lt;p&gt;type du =    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; | A of u     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; | B of u&lt;/p&gt;  &lt;p&gt;Since A and B represent the same data type u it becomes cumbersome to apply the same logic to for A and B in the same match expression.&amp;#160; The easiest way is to use A a | B b in a match expression, that is of course without using Active Patterns.&amp;#160; To define the Active Pattern used in this exercise I used the following&lt;/p&gt;  &lt;p&gt;let (|AorB|) (v:du) =   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; match v with    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | A a -&amp;gt; a    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | B b –&amp;gt; b&lt;/p&gt;  &lt;p&gt;In essence we define a way to substitute the expression that AorB defines.&amp;#160; So for example we want to use a similar expression in a distinctBy you can simply supply the patter (|AorB|) rather than using the verbose match syntax.&amp;#160; The following will show both styles of syntax.&lt;/p&gt;  &lt;p&gt;Way 1 (More verbose)&lt;/p&gt;  &lt;p&gt;[A { str = &amp;quot;A&amp;quot; }; B { str = &amp;quot;B&amp;quot;}; B { str = &amp;quot;A&amp;quot;}]   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; |&amp;gt; Seq.distinctBy (fun i -&amp;gt; match i with AorB c -&amp;gt; c)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; |&amp;gt; Seq.iter (fun i -&amp;gt; match i with AorB c -&amp;gt; printfn &amp;quot;%s&amp;quot; c.str)&lt;/p&gt;  &lt;p&gt;Way 2 &lt;/p&gt;  &lt;p&gt;[A { str = &amp;quot;A&amp;quot; }; B { str = &amp;quot;B&amp;quot;}; B { str = &amp;quot;A&amp;quot;}]   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; |&amp;gt; Seq.distinctBy (|AorB|)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; |&amp;gt; Seq.iter (fun i -&amp;gt; match i with AorB c -&amp;gt; printfn &amp;quot;%s&amp;quot; c.str)&lt;/p&gt;  &lt;p&gt;While we only save ourselves the use of&amp;#160; a single ‘fun’ expression, the implication is quite staggering should the pattern be more than two types of evaluations.&amp;#160; Nice!&lt;/p&gt;  &lt;p&gt;For more about Discriminated Unions check &lt;a href="http://msdn.microsoft.com/en-us/library/dd233226.aspx" target="_blank"&gt;here&lt;/a&gt;, and more about Active Patterns check &lt;a href="http://msdn.microsoft.com/en-us/library/dd233248.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-4268723436097215202?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/4268723436097215202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=4268723436097215202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/4268723436097215202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/4268723436097215202'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2011/02/active-patterns-in-f.html' title='Active Patterns in F#'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-5806186549965080448</id><published>2010-06-10T15:04:00.001-07:00</published><updated>2010-06-10T15:04:43.087-07:00</updated><title type='text'>Visual Studio Add-Ins</title><content type='html'>&lt;p&gt;Two addins that I find myself relying more and more lately are the PowerCommands and Pro Power Tools for VS2010.&amp;#160; Linkies to both.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef"&gt;Visual Studio 2010 Pro Power Tools&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/e5f41ad9-4edc-4912-bca3-91147db95b99"&gt;PowerCommands for Visual Studio 2010&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Both are incredibly helpful in making the IDE better.&amp;#160; They aren’t for the casual dev as they add a lot of options that may not be needed for a developer still learning but they do increase one’s productivity.&lt;/p&gt;  &lt;p&gt;The #1 feature that I love most from the Pro Power Tools is a throwback to the popular Delphi IDE’s with CTRL+Click that’s bound to the normal Right Click –&amp;gt; Go to Definition.&lt;/p&gt;  &lt;p&gt;If you are a clean freak like me in your IDE the Collapse Projects available on the Solution is utterly necessary.&lt;/p&gt;  &lt;p&gt;Enjoy :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-5806186549965080448?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/5806186549965080448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=5806186549965080448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/5806186549965080448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/5806186549965080448'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2010/06/visual-studio-add-ins.html' title='Visual Studio Add-Ins'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-5611606714919475362</id><published>2010-06-03T13:01:00.001-07:00</published><updated>2010-06-03T13:39:08.838-07:00</updated><title type='text'>Raven Db Index Management Support</title><content type='html'>&lt;p&gt;One thing with RavenDb that I’m constantly fighting especially while trying to learn it is managing indexes.&amp;#160; I find myself constantly blowing my test database away only to recreate it, rebuild the indexes, and add new indexes as necessary.&amp;#160; The most common practice I’ve seen so far is to manually manage these indexes since they only need to be built once.&amp;#160; This doesn’t work for me since I’m lazy thus I needed a solution.&lt;/p&gt;  &lt;p&gt;The solution which is fairly easy is to call the indexes api and parse out the returning Json.&amp;#160; The API I’m using if called from localhost is &lt;a href="http://localhost:8080/indexes"&gt;http://localhost:8080/indexes&lt;/a&gt;.&amp;#160; Let it be of note this is only necessary if you are using the Server/Service model.&amp;#160; If using this in an embedded capacity then just access the indexes directly on the DocumentDatabase object.&amp;#160; &lt;/p&gt;  &lt;p&gt;I’ve created a simple extension method on the DocumentStore that will give me access to the information I want which is what indexes are created.&amp;#160; Making it so I can preemptively query the database as to what I already have and only commit the deltas.&lt;/p&gt;  &lt;p&gt;Here’s the C# solution for your viewing pleasure.&lt;/p&gt;&lt;br /&gt;&lt;pre class="c-sharp" name="code"&gt;&lt;br /&gt;    public static class IndexExtensions&lt;br /&gt;    {&lt;br /&gt;        public static IList&lt;string&gt; GetIndexes(this DocumentStore store) &lt;br /&gt;        {&lt;br /&gt;            &lt;br /&gt;            var client = new WebClient();&lt;br /&gt;            var result = client.DownloadString(&lt;br /&gt;                store.Configuration&lt;br /&gt;                        .ServerUrl&lt;br /&gt;                        .CombineUrl("indexes"));&lt;br /&gt;&lt;br /&gt;            var t = JsonConvert.DeserializeObject(result) as JArray;&lt;br /&gt;            return (from i in t&lt;br /&gt;                    select i["name"]&lt;br /&gt;                        .ToString()&lt;br /&gt;                        .Replace("\"", ""))&lt;br /&gt;                        .ToList();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public static string CombineUrl(this string baseUrl, string appendedUrl) &lt;br /&gt;        {&lt;br /&gt;            if (!baseUrl.EndsWith(@"/")) baseUrl += @"/";&lt;br /&gt;&lt;br /&gt;            var builder = new UriBuilder(baseUrl);&lt;br /&gt;            Uri newUri = null;&lt;br /&gt;&lt;br /&gt;            if (Uri.TryCreate(builder.Uri, appendedUrl, out newUri))&lt;br /&gt;                return newUri.ToString();&lt;br /&gt;            else&lt;br /&gt;                throw new ArgumentException("Unable to combine the specified url values");&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Here's the F# solution if you are interested.&lt;/p&gt;&lt;br /&gt;&lt;pre class="f-sharp" name="code"&gt;&lt;br /&gt;    type System.String with&lt;br /&gt;        member x.CombineUrl(appendedUrl:string):string =&lt;br /&gt;            let k = match x with&lt;br /&gt;                        | x when x.EndsWith(@"/") -&gt; x&lt;br /&gt;                        | _ -&gt; x + @"/"&lt;br /&gt;            &lt;br /&gt;            Uri.TryCreate((new UriBuilder(k)).Uri, appendedUrl) |&gt;&lt;br /&gt;                function &lt;br /&gt;                    | b, n when b -&gt; n.ToString()&lt;br /&gt;                    | _ -&gt; failwith "Unable to combine url Values"&lt;br /&gt;&lt;br /&gt;    type Raven.Client.Document.DocumentStore with&lt;br /&gt;        member x.GetIndexes:list&lt;string&gt; =&lt;br /&gt;            (new WebClient()).DownloadString (x.Configuration.ServerUrl.CombineUrl ("indexes"))&lt;br /&gt;                |&gt; JArray.Parse &lt;br /&gt;                |&gt; Seq.map (fun (i:JToken) -&gt; i.Value&lt;string&gt;("name"))&lt;br /&gt;                |&gt; Seq.toList&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-5611606714919475362?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/5611606714919475362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=5611606714919475362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/5611606714919475362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/5611606714919475362'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2010/06/raven-db-index-management-support.html' title='Raven Db Index Management Support'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-2847624596229214629</id><published>2010-01-04T08:59:00.001-08:00</published><updated>2010-01-04T08:59:58.779-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows7'/><category scheme='http://www.blogger.com/atom/ns#' term='GodMode'/><title type='text'>Windows GodMode</title><content type='html'>&lt;p&gt;It what it says it is.&amp;#160; Simply put create a new folder say on your desktop and name it the following&lt;/p&gt;  &lt;p&gt;&lt;b&gt;GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;It’ll create an icon that will give you access to additional features some of which aren’t easily found in Windows and some that are not found at all.&amp;#160; Not sure how useful it is but it is pretty cool.&amp;#160; Windows 7 does make it all pretty but I have confirmed it does work on Windows Vista as well.&lt;/p&gt;  &lt;p&gt;Enjoy.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-2847624596229214629?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/2847624596229214629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=2847624596229214629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/2847624596229214629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/2847624596229214629'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2010/01/windows-godmode.html' title='Windows GodMode'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-2752879340457697065</id><published>2009-10-05T15:06:00.001-07:00</published><updated>2009-10-05T15:06:49.067-07:00</updated><title type='text'>Employee to Consultant</title><content type='html'>&lt;p&gt;Recently we had a gentleman move from being an employee to consultant here at work.&amp;#160; This gentleman used to be my boss, transitioned to being our “Architect” and was thusly moved to being a consultant by extraneous circumstances.&lt;/p&gt;  &lt;p&gt;I have recently been appointed to being this individual’s contact which means I am to track his progress and assure that it meets with our standards and is being done in a decent amount of time.&amp;#160; While this is certainly not an issue in my mind I wonder if it will be difficult in his at some point.&lt;/p&gt;  &lt;p&gt;I am a no nonsense type of individual that seeks to getting the job done and if possible without any type of personal feelings.&amp;#160; While I will certainly voice my distain for a direction I will lead a sinking ship if asked.&amp;#160; With all of this I do wonder if working with this gentleman our relationship will be that of consultant and client or that of our first relationship of boss and underling.&amp;#160; While these circumstances were thrust upon both of us is it reasonable to think that one with a long history 3+ years with a company can transition from having any personal feelings to the more aptly “What can I do for you?” mentality.&lt;/p&gt;  &lt;p&gt;So far my feelings are that this type of transition is and would be difficult for anyone to do and moreover can and might be counter productive.&amp;#160; I guess we’ll see over the coming months how this transition will pan out.&amp;#160; I’m hopeful but definitely not going to hold my breath.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-2752879340457697065?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/2752879340457697065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=2752879340457697065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/2752879340457697065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/2752879340457697065'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/10/employee-to-consultant.html' title='Employee to Consultant'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-8740661321295845862</id><published>2009-08-17T10:53:00.001-07:00</published><updated>2009-08-17T10:59:07.749-07:00</updated><title type='text'>Aliased Types</title><content type='html'>One of the less used features I’&lt;span id="SPELLING_ERROR_0" class="blsp-spelling-error"&gt;ve&lt;/span&gt; come to know and love as I’&lt;span id="SPELLING_ERROR_1" class="blsp-spelling-error"&gt;ve&lt;/span&gt; been working my current project which uses &lt;span id="SPELLING_ERROR_2" class="blsp-spelling-error"&gt;NHibernate&lt;/span&gt; and &lt;span id="SPELLING_ERROR_3" class="blsp-spelling-error"&gt;CSLA&lt;/span&gt;.Net is the ability to Alias an Object utilizing the “using” clause. The following is an example.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_G9MdqFcu674/SomZz2Li27I/AAAAAAAAAAU/dbkaKVB1lMg/s1600-h/alias.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; DISPLAY: block; CURSOR: hand" id="BLOGGER_PHOTO_ID_5370993146612341682" border="0" alt="" src="http://1.bp.blogspot.com/_G9MdqFcu674/SomZz2Li27I/AAAAAAAAAAU/dbkaKVB1lMg/s320/alias.png" /&gt;&lt;/a&gt; This beauty is essentially saying to the compiler to insert Clsa.Server.ObjectFactory everywhere that &lt;span id="SPELLING_ERROR_4" class="blsp-spelling-error"&gt;CslaObjectFactory&lt;/span&gt; exists.  This is similar to what gets done when you do a &lt;span id="SPELLING_ERROR_5" class="blsp-spelling-error"&gt;typedef&lt;/span&gt; in C++.  This is invaluable for me because we have a slew of naming &lt;span id="SPELLING_ERROR_6" class="blsp-spelling-corrected"&gt;collisions&lt;/span&gt; in our &lt;span id="SPELLING_ERROR_7" class="blsp-spelling-error"&gt;codebase&lt;/span&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-8740661321295845862?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/8740661321295845862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=8740661321295845862' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/8740661321295845862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/8740661321295845862'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/08/aliased-types.html' title='Aliased Types'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_G9MdqFcu674/SomZz2Li27I/AAAAAAAAAAU/dbkaKVB1lMg/s72-c/alias.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-7711374763509806881</id><published>2009-07-20T12:07:00.001-07:00</published><updated>2009-07-20T14:20:47.402-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='CTE'/><title type='text'>The CTE as understood by a Dev :)</title><content type='html'>&lt;p&gt;Since being introduced to the CTE I’ve become increasingly impressed at how well it manages to increase the speed of a query.  Just recently I put it to the test to see how well it can increase the speed of a query I needed for pulling the last payment of an Order that had not been authorized.  The following shows the final result.&lt;/p&gt; &lt;p&gt;WITH MaxPayment AS(&lt;br /&gt;    SELECT MAX(PaymentId) AS PaymentId&lt;br /&gt;    FROM dbo.Payment&lt;br /&gt;    WHERE IsAuthorized = 'F' AND PaymentMethodId = 116 &lt;br /&gt;    GROUP BY OrderId),&lt;br /&gt;Payments AS(&lt;br /&gt;    SELECT p.*&lt;br /&gt;    FROM dbo.Payment p&lt;br /&gt;    INNER JOIN MaxPayment m ON p.PaymentId = m.PaymentId)&lt;br /&gt;SELECT o.OrderId, o.OrderBalance, p.IsAuthorized, p.PaymentId&lt;br /&gt;FROM dbo.Orders o INNER JOIN Payments p ON p.OrderId = o.OrderId&lt;br /&gt;WHERE OrderStatusId &amp;lt; 4000 AND PackingSlipBatchId = 0&lt;br /&gt;AND o.OrderId IN (…)&lt;/p&gt; &lt;p&gt;This beauty uses two CTE’s in order to finally inner join with the final product.  This query can pull any set of OrderId’s supplied to it in a lightning fast fashion (nanoseconds).  &lt;/p&gt; &lt;p&gt;For those not familiar with the CTE its usefulness over subqueries becomes evident when I explain that when the CTE is generated the original schema is preserved which means tasty indexes you’ve added will be preserved unlike a subquery that essentially creates an indexless temporary table copies information into it then provides a join thereafter.&lt;/p&gt; &lt;p&gt;Interesting side not that I discovered when formulating this query.  I wanted to know if prefiltering the information in the CTE would provide any speed increases so rather than specify OrderId IN (…) in the main body of the query I would supply it in the MaxPayment CTE.  Analyzing the execution plan abruptly stopped that foolishness.  The execution plans regardless of where I filtered were identical thus leading me to believe that the CTE will handle all filtering last with the main body of the query.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-7711374763509806881?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/7711374763509806881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=7711374763509806881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/7711374763509806881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/7711374763509806881'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/07/cte-as-understood-by-dev_20.html' title='The CTE as understood by a Dev :)'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-5592332770112158486</id><published>2009-06-23T14:40:00.001-07:00</published><updated>2009-06-23T14:52:54.091-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Number'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Spanish'/><category scheme='http://www.blogger.com/atom/ns#' term='Translator'/><category scheme='http://www.blogger.com/atom/ns#' term='Mexican Pesos'/><title type='text'>Number to Mexican Pesos (Spanish)</title><content type='html'>I went looking everywhere for a section of code that would do the following: &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Take a number such as 633,623,202.16 and translated it into spanish in terms of mexican pesos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Suprisingly absolutely zero code exists (at least that I could find) that would do the same thing in C#.  Hopefully this helps someone.  I haven't optimized it at all but it should be easy enough if someone had the time to optimize it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The code can be found &lt;a href="http://snipt.org/klkn"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-5592332770112158486?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/5592332770112158486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=5592332770112158486' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/5592332770112158486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/5592332770112158486'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/06/number-to-mexican-pesos-spanish.html' title='Number to Mexican Pesos (Spanish)'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-8142075947892124507</id><published>2009-06-03T10:25:00.001-07:00</published><updated>2009-06-03T10:25:33.847-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inheritance'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Abstraction'/><category scheme='http://www.blogger.com/atom/ns#' term='Interfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>The most important aspect of OOP is …</title><content type='html'>&lt;p&gt;Recently in school we were asked a simple question.&amp;#160; Of all the aspects of object oriented development what to you is the most important.&amp;#160; The following is my reply to that.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt; I would say the single largest advantage that object oriented development brings to the table is abstraction.&amp;#160; We've alluded to abstraction here and there in the class but I don't think we've come out and thrown down the gauntlet and said &amp;quot;yes here it is.&amp;quot;&amp;#160; Abstraction to me in terms of an object oriented model is the ability to define a theoretical system without writing actual code.&amp;#160; We have abstract base classes and interfaces which provide this crucial functionality and the abstraction principle is at work all over Java especially in the frameworks like Swing [or Hibernate].     &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;Why would I think this is important over any other aspect of object oriented programming?&amp;#160; Because I think its used more than any other aspect and in reality incorporates it.&amp;#160; Abstraction for example could not exist without interfaces, inheritance, and polymorphism.&amp;#160; The idea that I can just define an ILogger interface that logging components of my application implement is largely beneficial especially when trying to write a loosely coupled highly extensible application.&amp;#160; What if for example I wanted my application to support 3 types of loggers such as a ConsoleLogger, DatabaseLogger, and an XmlLogger all which implement ILogger.&amp;#160; I could theoretically build an object factory that given some input or system heuristic return one of these aforementioned loggers and my system can work without change in any code other than the code that serves up the object that implements ILogger.     &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;To me this is crucial for building large enterprise applications of which object oriented development is a key player.&amp;#160; The more we learn and implement levels of abstraction in our objects the better.&amp;#160; Of course there is always &amp;quot;too much abstraction&amp;quot; and its something like inheritance is learned with time but in all I believe it is a major aspect of OOP that every developer should learn and embrace. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font color="#000000"&gt;I was wondering if I was going to be nailed in some way because I used something not even discussed in the class, however this was my professor’s reply&lt;/font&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Excellent!&amp;#160; This post needs to be saved.&amp;#160; Realizing what abstraction is and the strength of it is the equivalent of finding the holy grail.&amp;#160; If you see this, working with interfaces and providing concrete classes that implement these interfaces in a plug and play manner becomes automatic.&amp;#160; One example, the VERY popular Java framework called Spring is built on this principle.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Its nice to know that I’m not the only one that feels abstraction is the end all be all of object oriented development in either Java, C#, or any other Object Oriented Language.&amp;#160; I seriously feel we push things in OOP development that need not be learned initially and don’t take a more direct approach on proper software design.&amp;#160; To me abstraction should be taught and we use polymorphism and inheritance/interfaces to accomplish the task.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-8142075947892124507?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/8142075947892124507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=8142075947892124507' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/8142075947892124507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/8142075947892124507'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/06/most-important-aspect-of-oop-is.html' title='The most important aspect of OOP is …'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-2834192916719033672</id><published>2009-05-28T16:24:00.001-07:00</published><updated>2009-05-28T19:49:20.076-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Miracle'/><category scheme='http://www.blogger.com/atom/ns#' term='ISet'/><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='many-to-many'/><title type='text'>NHibernate| many-to-many</title><content type='html'>&lt;p&gt;So I’m starting to build a proof of concept product catalog as both a reason to use NHibernate in a “real world” application but also to apply ASP.Net MVC with it as well. I chose both of these technologies because they’re supposed to create strongly built applications faster.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The following data model is the start of the catalog with more being added over the next few weeks.&lt;/p&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 229px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5341019864344387282" border="0" alt="" src="http://3.bp.blogspot.com/_G9MdqFcu674/Sh8dRMiNXtI/AAAAAAAAAAM/mA-pfD1OzXw/s320/ProductModel.png" /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The tags collection on the Product is simply an &lt;strong&gt;ISet&lt;/strong&gt;&amp;lt;Tag&amp;gt;. I’ve used this rather than a list because I want to have a distinct set of tags per product. Here’s the mapping for both entities.&lt;/p&gt;&lt;p&gt;&amp;lt;class name="Product"&amp;gt;&lt;br /&gt;  &amp;lt;id name="Id"&amp;gt;&lt;br /&gt;    &amp;lt;generator class="identity"/&amp;gt;&lt;br /&gt;  &amp;lt;/id&amp;gt;&lt;br /&gt;  &amp;lt;property name="Name"/&amp;gt;&lt;br /&gt;  &amp;lt;property name="ShortName"/&amp;gt;&lt;br /&gt;  &amp;lt;property name="ItemId" /&amp;gt;&lt;br /&gt;  &amp;lt;property name="Sku" /&amp;gt;&lt;br /&gt;  &amp;lt;property name="Wholesale" /&amp;gt;&lt;br /&gt;  &amp;lt;property name="Retail" /&amp;gt;&lt;br /&gt;  &amp;lt;property name="ImageUrl" /&amp;gt;&lt;br /&gt;  &amp;lt;property name="IsActive" /&amp;gt;&lt;br /&gt;  &amp;lt;set name="Tags" table="TagAssociations" cascade="all" &amp;gt;&lt;br /&gt;    &amp;lt;key column="productId"/&amp;gt;&lt;br /&gt;    &amp;lt;many-to-many column="tagId" class="Tag" /&amp;gt;&lt;br /&gt;  &amp;lt;/set&amp;gt;&lt;br /&gt;&amp;lt;/class&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;class name="Tag"&amp;gt;&lt;br /&gt;  &amp;lt;id name="Id"&amp;gt;&lt;br /&gt;    &amp;lt;generator class="identity"/&amp;gt;&lt;br /&gt;  &amp;lt;/id&amp;gt;&lt;br /&gt;  &amp;lt;property name="Name" unique="true"/&amp;gt;&lt;br /&gt;&amp;lt;/class&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Notice we’ve created an interim table to join the Tags and Products called TagAssociations (there are probably better names but meh) and done this through a many-to-many relationship on the Tags property binding it to Tag objects through the table.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;From here on out our interactions with TagAssocations is nil. For example pulling products by Tag only requires the following code.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;public IList&amp;lt;Product&amp;gt; GetByTag(Tag tag)&lt;br /&gt;{&lt;br /&gt;  using (ISession session = NHibernateHelper.OpenSession())&lt;br /&gt;  {&lt;br /&gt;    var list = session&lt;br /&gt;      .CreateCriteria(typeof(Product), "p")&lt;br /&gt;      .CreateCriteria("Tags")&lt;br /&gt;      .Add(Restrictions.Eq("Id", tag.Id));&lt;br /&gt;    return list.List&amp;lt;Product&amp;gt;();&lt;br /&gt;  }&lt;br /&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Because we’re adding in our property Tags through CreateCriteria and saying we want to pull that by Id the following TSQL is generated automatically.&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;SELECT this_.Id as Id3_1_, this_.Name as Name3_1_, this_.ShortName as ShortName3_1_, this_.ItemId as ItemId3_1_, this_.Sku as Sku3_1_, this_.Wholesale as Wholesale3_1_, this_.Retail as Retail3_1_, this_.ImageUrl as ImageUrl3_1_, this_.IsActive as IsActive3_1_, tags3_.productId as productId, tag1_.Id as tagId, tag1_.Id as Id5_0_, tag1_.Name as Name5_0_&lt;br /&gt;FROM Product this_&lt;br /&gt;inner join TagAssociations tags3_ on this_.Id=tags3_.productId inner join Tag tag1_ on tags3_.tagId=tag1_.Id&lt;br /&gt;WHERE tag1_.Id = @p0; @p0 = '1'&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;To me this is a miracle to behold considering the shear amount of work this would take under normal circumstances.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-2834192916719033672?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/2834192916719033672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=2834192916719033672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/2834192916719033672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/2834192916719033672'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/05/nhibernate-many-to-many.html' title='NHibernate| many-to-many'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_G9MdqFcu674/Sh8dRMiNXtI/AAAAAAAAAAM/mA-pfD1OzXw/s72-c/ProductModel.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-1401008286335807685</id><published>2009-05-27T15:25:00.001-07:00</published><updated>2009-05-28T19:50:40.013-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Visual Studio Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='Team Test'/><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><title type='text'>NHibernate and Micrsoft Team Test</title><content type='html'>&lt;p&gt;I couldn’t find much information on using Microsoft’s Team Test Suite and NHibernate so here’s the condensed version so you don’t have to have the same issues I went through.&lt;/p&gt;  &lt;p&gt;If you use the “Getting Started” guide &lt;a href="http://nhforge.org/wikis/howtonh/your-first-nhibernate-based-application.aspx"&gt;here&lt;/a&gt; and substitute Microsoft’s test suite for NUnit add the following attributes just below the [TestClass] attribute on the class definition.  Remember to substitute your database’s name in for [Database Name].&lt;/p&gt;  &lt;p&gt;[DeploymentItem("hibernate.cfg.xml")]  &lt;br /&gt;[DeploymentItem("[Database Name].sdf")] &lt;/p&gt;  &lt;p&gt;This will tell the test suite these are dependencies and to deploy them to the TestResults folder where the tests are run.&lt;/p&gt;  &lt;p&gt;Voila!  Everything “should” run as advertised but remember to place these on every single test fixture you create.  Its a bit of a pain and I hope Microsoft can fix this in either a service pack of Visual Studio or in the next version.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-1401008286335807685?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/1401008286335807685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=1401008286335807685' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/1401008286335807685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/1401008286335807685'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/05/nhibernate-and-micrsoft-team-test.html' title='NHibernate and Micrsoft Team Test'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-6010544395797372643</id><published>2009-05-18T11:48:00.001-07:00</published><updated>2009-05-18T11:48:26.428-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='anonymous interface'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Crow</title><content type='html'>&lt;p&gt;I swear I would never see he day in which I found something that Java does better than the .Net framework.&amp;#160; Unfortunately for me today is that day.&amp;#160; I usually don’t do Java very much because my job never calls for it and I have zero *umph* to take and learn the antiquated language and yet today as I’m working in Java for a class I learned something I’m very very jealous of that Java supports and .Net does not.&amp;#160; Anonymous instances of interfaces.&lt;/p&gt;  &lt;p&gt;Anyone who’s done a UI in Java has done this 1,000,000,000,000,000 times so if this is something of a “duh dumbass” moment as you read this go ahead and pass on by otherwise here is what I have.&lt;/p&gt;  &lt;p&gt;Java events work extremely different that .Nets do.&amp;#160; They have this concept of listeners in which one creates an object that implements the interface ActionListener and a method is nailed down on the fly such as the following code specifies.&amp;#160; &lt;/p&gt;  &lt;p&gt;btnCalculate.addActionListener(new ActionListener() {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void actionPerformed(ActionEvent e) {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Calculate(e);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; });&lt;/p&gt;  &lt;p&gt;Notice that we’re adding the ActionListener to the JButton btnCalculate and the method is being defined on the fly.&amp;#160; In the .Net world we have similar feats for Events and anonymous types, but generally speaking we can’t say this anonymous type is of type INotifyValueChanged and pass in a dynamic object that maps the interface as is done here in Java.&lt;/p&gt;  &lt;p&gt;I’m envious of this because it would be such a useful construct for a host of uses including but not limited to proxy objects used in TDD.&lt;/p&gt;  &lt;p&gt;I would like also to state that the object works as a closure due to the fact that information contained in the actionPerformed method has access to everything it’s host object does.&amp;#160; &lt;/p&gt;  &lt;p&gt;I imagine Java geeks use this technique often and are rolling over in their Javaesque graves right now seeing that a .Net guy is envious of such a thing but credit is due where credit is due and this is just cool.&amp;#160; Come on CLR team give me this!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-6010544395797372643?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/6010544395797372643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=6010544395797372643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/6010544395797372643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/6010544395797372643'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/05/crow.html' title='Crow'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-2513377829446509582</id><published>2009-03-25T22:06:00.001-07:00</published><updated>2009-03-25T22:06:57.292-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RSS Feeds'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Presentation'/><category scheme='http://www.blogger.com/atom/ns#' term='Online Shopping'/><title type='text'>Online Shopping</title><content type='html'>&lt;p&gt;This is more of a mental note for myself than anything else but I’m reading an article at the moment that talks about new experiences in online shopping systems and it just occurred to me, Why is it we don’t expose more elements of shopping as RSS feeds and read only services.&lt;/p&gt;  &lt;p&gt;Take a weekly ad for example.&amp;#160; You can receive a feed that would constantly feed to users sale or clearance items embedded in a feed with a link back to a retailer.&amp;#160; A steady stream of content that allows a user to choose which information to follow and what not too.&lt;/p&gt;  &lt;p&gt;I did browse walmart.com and found a department by department feed of clearance and sales but no general feed which I found to be disappointing.&amp;#160; Usually bargain buyers like myself are looking for any good deal regardless of which department and having the ability to build a custom feed to fit my criteria rather than what Wal-Mart feels appropriate for me to have.&lt;/p&gt;  &lt;p&gt;Along with this I think that Amazon.com does a great job of offering great deals etc as well as information in related items, user generated feedback, and 3rd party sellers however its presentation can be extremely cluttered and often unless one wants to search for something they’d have a difficult time just “browsing” what is stock due to the size of inventory that Amazon supports.&lt;/p&gt;  &lt;p&gt;Additionally I like the idea of a communal shopping experience much how women currently go shopping in “wolf packs”.&amp;#160; Someone picks an item out and they all merit if the color, size, and fit are good for a woman, otherwise it gets thrown back to the piles.&amp;#160; This concept is very difficult as a straight forward implementation in the current web world.&amp;#160; Various end users cannot login at the same time and share a session between one another and provide real time feedback in either text, voice, video, or a combination of the three.&amp;#160; I suppose I’m giving a million dollar idea out here but this seems like a more natural perspective to shopping that may or may not build a better online presence.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-2513377829446509582?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/2513377829446509582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=2513377829446509582' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/2513377829446509582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/2513377829446509582'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/03/online-shopping.html' title='Online Shopping'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-8784610941900037946</id><published>2009-03-25T14:11:00.001-07:00</published><updated>2009-03-25T14:11:49.717-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Payment'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Design'/><title type='text'>Payments Payments Payments</title><content type='html'>&lt;p&gt;I recently was called into my boss’s office to review an issue that was being reported by our website in the error log.&amp;#160; Upon reviewing the code I was reminded of a change our “software architect” made to conform to what he felt was best as far as the naming of things.&lt;/p&gt;  &lt;p&gt;Queue Problems.&lt;/p&gt;  &lt;p&gt;The architect checked in the broken code which happened to break the interface in our Payment Service and didn’t even take the time up update the service reference in our main business object library.&amp;#160; This check-in breaks every unit test associated with ordering.&amp;#160; Now this in and of itself wasn’t too bad, I updated the service reference which regenerated the proxy objects and had to restructure some code to conform to the new standard.&lt;/p&gt;  &lt;p&gt;Fast forward 6 weeks to today when we review that credit card declines are on the rise and errors are being generated left and right due to some of these changes.&lt;/p&gt;  &lt;p&gt;Here’s the crux of the matter.&amp;#160; We use an outdated method of a Payment Type and a Payment Method to determine how to authorize payments because an old payment authorizer authored by a 3rd party years ago used to use.&amp;#160; Over the years we have completely phased out this system in favor of a new .Net platform but this system of Type and Method persist.&amp;#160; &lt;/p&gt;  &lt;p&gt;What’s the problem with this design?&amp;#160; Nothing from the outside until you look at how we authorize payments globally.&amp;#160; For any given currency we have 1 authorizer.&amp;#160; In the US it is SuperCharge in Europe it is Bibit and that is it.&amp;#160; These elements can be inferred either by Currency or by Country of origination either way both Type and Method can be deemed useless.&lt;/p&gt;  &lt;p&gt;Why is this persisted into code that was created 6 weeks ago?&amp;#160; No clue.&amp;#160; Analysis of business practices should persist across any project irregardless of when the original design was created.&amp;#160; &lt;/p&gt;  &lt;p&gt;Chances are the original design was bad back when it was created and only a fraction of the “super-awesome-system-to-beat-all-systems” is used anyway.&amp;#160; This leads me to wonder if a fresh eye on a design periodically should be done to assure code smell is reduced.&lt;/p&gt;  &lt;p&gt;If i were to give a letter grade on this project it’d get an F for failure to think.&amp;#160; Ugh.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-8784610941900037946?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/8784610941900037946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=8784610941900037946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/8784610941900037946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/8784610941900037946'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/03/payments-payments-payments.html' title='Payments Payments Payments'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-1089370800688823447</id><published>2009-03-20T10:57:00.001-07:00</published><updated>2009-03-20T10:58:11.296-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Stylesheets'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='Chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='FireFail'/><title type='text'>XML and CSS</title><content type='html'>&lt;p&gt;Recently in a lab assignment for school I had to create an XML schema for creating a book and then use CSS to directly style it.&amp;#160; At first I felt the assignment was a bit of a WTF moment because so far as I’ve understood up until this point XSLT was the only way to transform a document for display purposes.&lt;/p&gt;  &lt;p&gt;I am pleased to admit I was completely wrong and that not only can CSS be used to style XML directly it is also supported as a valid way of displaying XML according to the W3C.&lt;/p&gt;  &lt;p&gt;The assignment as I developed it became an extremely fun way of utilizing XML and I was very pleased with the output.&amp;#160; Imagine just having to style an element directly and bam your document is displayed exactly how you thought it would be right… right?&lt;/p&gt;  &lt;p&gt;No, it won’t.&amp;#160; Well that’s not completely true it will render 100% accurately in Internet Explorer but only in Internet Explorer.&amp;#160; I tested it in Chrome and FireFail neither&amp;#160; of which will even recognize that a style sheet is there or even attempt to use it.&amp;#160; This is very disconcerting as I would love to utilize this technology for developing a content management system in the future.&amp;#160; Its not to be I suppose.&amp;#160; Instead the content must be translated to POS-HTML and go w/ the headache of attempting to make everything cross browser compliant.&lt;/p&gt;  &lt;p&gt;My other curiosity is trying to fathom how both Google and Mozilla can be lauded as being at the forefront of web technologies compliance with their XML support is lacking… especially on a standard by the W3C.&amp;#160; Granted its a rarely used technology but isn’t it both the aforementioned companies that have dinged Microsoft for picking and choosing what to support and what not too? &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-1089370800688823447?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/1089370800688823447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=1089370800688823447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/1089370800688823447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/1089370800688823447'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/03/xml-and-css.html' title='XML and CSS'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-2776017854743202731</id><published>2009-03-17T14:16:00.001-07:00</published><updated>2009-03-17T14:16:00.915-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iMac shuffle'/><category scheme='http://www.blogger.com/atom/ns#' term='Steve Jobs Is the Devil'/><category scheme='http://www.blogger.com/atom/ns#' term='Easy'/><title type='text'>iMac shuffle</title><content type='html'>&lt;p&gt;I didn’t think I’d ever find a Mac that was truly what a user would want until I came across this baby.&amp;#160; The iMac shuffle will bring Apple into the forefront of technology.&amp;#160; Kudos Mr. Jobs :P&lt;/p&gt;  &lt;p&gt;&lt;a title="http://imacshuffle.com/" href="http://imacshuffle.com/"&gt;http://imacshuffle.com/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-2776017854743202731?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/2776017854743202731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=2776017854743202731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/2776017854743202731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/2776017854743202731'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/03/imac-shuffle.html' title='iMac shuffle'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-227463897656707048</id><published>2009-03-16T07:57:00.001-07:00</published><updated>2009-03-16T07:57:33.931-07:00</updated><title type='text'>LOLCode?</title><content type='html'>&lt;p&gt;Ok, I really didn’t think this one was real but damn if I wasn’t wrong.&amp;#160; This is either the coolest language ever or the beginning of the worst coding apocalypse since COBOL was invented (with its 0ver 400 reserved words).&lt;/p&gt;  &lt;p&gt;Enjoy :)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lolcode.com/"&gt;http://lolcode.com/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-227463897656707048?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/227463897656707048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=227463897656707048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/227463897656707048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/227463897656707048'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/03/lolcode.html' title='LOLCode?'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-8858116964979168601</id><published>2009-03-13T14:55:00.001-07:00</published><updated>2009-03-13T14:58:20.515-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Glenn Beck'/><category scheme='http://www.blogger.com/atom/ns#' term='Better Life'/><category scheme='http://www.blogger.com/atom/ns#' term='America'/><title type='text'>The Nine Principles</title><content type='html'>&lt;ol&gt;   &lt;li&gt;America is good. &lt;/li&gt;    &lt;li&gt;I believe in God and He is the Center of my Life. &lt;/li&gt;    &lt;li&gt;I must always try to be a more honest person than I was yesterday. &lt;/li&gt;    &lt;li&gt;The family is sacred. My spouse and I are the ultimate authority, not the government. &lt;/li&gt;    &lt;li&gt;If you break the law you pay the penalty. Justice is blind and no one is above it. &lt;/li&gt;    &lt;li&gt;I have a right to life, liberty and pursuit of happiness, but there is no guarantee of equal results. &lt;/li&gt;    &lt;li&gt;I work hard for what I have and I will share it with who I want to. Government cannot force me to be charitable. &lt;/li&gt;    &lt;li&gt;It is not un-American for me to disagree with authority or to share my personal opinion. &lt;/li&gt;    &lt;li&gt;The government works for me. I do not answer to them, they answer to me. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;These are 9 principles that I can agree with 100% put forth by Glenn Beck.&amp;#160; Thought I’d share.&lt;/p&gt;  &lt;p&gt;EDIT: I figured I would also add in 12 values to conduct oneself by.&lt;/p&gt; &lt;p&gt;12 Values&lt;/p&gt; &lt;ul&gt;   &lt;li&gt;Honesty &lt;/li&gt;    &lt;li&gt;Reverence &lt;/li&gt;    &lt;li&gt;Hope &lt;/li&gt;    &lt;li&gt;Thrift &lt;/li&gt;    &lt;li&gt;Humility &lt;/li&gt;    &lt;li&gt;Charity &lt;/li&gt;    &lt;li&gt;Sincerity &lt;/li&gt;    &lt;li&gt;Moderation &lt;/li&gt;    &lt;li&gt;Hard Work &lt;/li&gt;    &lt;li&gt;Courage &lt;/li&gt;    &lt;li&gt;Personal Responsibility &lt;/li&gt;    &lt;li&gt;Friendship&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-8858116964979168601?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/8858116964979168601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=8858116964979168601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/8858116964979168601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/8858116964979168601'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/03/nine-principles.html' title='The Nine Principles'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-1757929520787788482</id><published>2009-03-13T13:06:00.001-07:00</published><updated>2009-03-13T13:35:54.955-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Convert'/><category scheme='http://www.blogger.com/atom/ns#' term='Null Coalescing'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>The Convert Object – Use with Caution</title><content type='html'>&lt;p&gt;Today as I’m going through cleaning up the horrid mess of extension methods and “utility” objects that our code base has I came across this gem.&lt;/p&gt; &lt;!--&lt;br /&gt;{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Envy Code R VS;}}{\colortbl;??\red222\green222\blue203;\red26\green24\blue21;\red91\green105\blue106;\red166\green92\blue92;\red199\green199\blue165;\red150\green120\blue120;\red121\green151\blue84;}??\fs30 \cf1\cb2\highlight2 \tab \tab \cf3 public\cf1  \cf3 static\cf1  \cf4 DateTime\cf1  \cf5 ToDateTime\cf1 (\par ??\tab \tab \tab \cf3 this\cf1  \cf4 DateTime\cf6 ?\cf1  \cf5 date\cf1 )\par ??\tab \tab \{\par ??\tab \tab \tab \cf3 return\cf1  (\cf5 date\cf1  \cf6 ==\cf1  \cf3 null\cf1 ) \cf6 ?\cf1  \par ??\tab \tab \tab \tab \cf4 DateTime\cf6 .\cf5 MinValue\cf1  : \par ??\tab \tab \tab \tab \cf7 Convert\cf6 .\cf5 ToDateTime\cf1 (\cf5 date\cf1 );\par ??\tab \tab \}}&lt;br /&gt;--&gt;  &lt;div style="font-size: 15pt; background: #1a1815; color: #dedecb; font-family: envy code r vs"&gt;   &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #5b696a"&gt;public&lt;/span&gt; &lt;span style="color: #5b696a"&gt;static&lt;/span&gt; &lt;span style="color: #a65c5c"&gt;DateTime&lt;/span&gt; &lt;span style="color: #c7c7a5"&gt;ToDateTime&lt;/span&gt;(&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #5b696a"&gt;this&lt;/span&gt; &lt;span style="color: #a65c5c"&gt;DateTime&lt;/span&gt;&lt;span style="color: #967878"&gt;?&lt;/span&gt; &lt;span style="color: #c7c7a5"&gt;date&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #5b696a"&gt;return&lt;/span&gt; (&lt;span style="color: #c7c7a5"&gt;date&lt;/span&gt; &lt;span style="color: #967878"&gt;==&lt;/span&gt; &lt;span style="color: #5b696a"&gt;null&lt;/span&gt;) &lt;span style="color: #967878"&gt;?&lt;/span&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #a65c5c"&gt;DateTime&lt;/span&gt;&lt;span style="color: #967878"&gt;.&lt;/span&gt;&lt;span style="color: #c7c7a5"&gt;MinValue&lt;/span&gt; : &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #799754"&gt;Convert&lt;/span&gt;&lt;span style="color: #967878"&gt;.&lt;/span&gt;&lt;span style="color: #c7c7a5"&gt;ToDateTime&lt;/span&gt;(&lt;span style="color: #c7c7a5"&gt;date&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;What’s the issue with this?&amp;#160; We’re essentially adding double the code bloat for something simple as converting a nullable DateTime to a regular DateTime.&amp;#160; The following is ripped from System.dll in the Convert object to illustrate this double execution. &lt;/p&gt; &lt;!--&lt;br /&gt;{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Envy Code R VS;}}{\colortbl;??\red222\green222\blue203;\red26\green24\blue21;\red91\green105\blue106;\red166\green92\blue92;\red199\green199\blue165;\red150\green120\blue120;\red113\green131\blue132;}??\fs30 \cf1\cb2\highlight2 \tab \tab \cf3 public\cf1  \cf3 static\cf1  \cf4 DateTime\cf1  \cf5 ToDateTime\cf1 (\par ??\tab \tab \tab \cf3 object\cf1  \cf5 value\cf1 )\par ??\tab \tab \{\par ??\tab \tab \tab \cf3 if\cf1  (\cf5 value\cf1  \cf6 !=\cf1  \cf3 null\cf1 )\par ??\tab \tab \tab \{\par ??\tab \tab \tab \tab \cf3 return\cf1  ((\cf7 IConvertible\cf1 )\cf5 value\cf1 )\par ??\tab \tab \tab \tab \tab \cf6 .\cf5 ToDateTime\cf1 (\cf3 null\cf1 );\par ??\tab \tab \tab \}\par ??\tab \tab \tab \cf3 return\cf1  \cf4 DateTime\cf6 .\cf5 MinValue\cf1 ;\par ??\tab \tab \}}&lt;br /&gt;--&gt;  &lt;div style="font-size: 15pt; background: #1a1815; color: #dedecb; font-family: envy code r vs"&gt;   &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #5b696a"&gt;public&lt;/span&gt; &lt;span style="color: #5b696a"&gt;static&lt;/span&gt; &lt;span style="color: #a65c5c"&gt;DateTime&lt;/span&gt; &lt;span style="color: #c7c7a5"&gt;ToDateTime&lt;/span&gt;(&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #5b696a"&gt;object&lt;/span&gt; &lt;span style="color: #c7c7a5"&gt;value&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #5b696a"&gt;if&lt;/span&gt; (&lt;span style="color: #c7c7a5"&gt;value&lt;/span&gt; &lt;span style="color: #967878"&gt;!=&lt;/span&gt; &lt;span style="color: #5b696a"&gt;null&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #5b696a"&gt;return&lt;/span&gt; ((&lt;span style="color: #718384"&gt;IConvertible&lt;/span&gt;)&lt;span style="color: #c7c7a5"&gt;value&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #967878"&gt;.&lt;/span&gt;&lt;span style="color: #c7c7a5"&gt;ToDateTime&lt;/span&gt;(&lt;span style="color: #5b696a"&gt;null&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #5b696a"&gt;return&lt;/span&gt; &lt;span style="color: #a65c5c"&gt;DateTime&lt;/span&gt;&lt;span style="color: #967878"&gt;.&lt;/span&gt;&lt;span style="color: #c7c7a5"&gt;MinValue&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;In the grand scheme of things this code doesn’t hurt a whole lot just propagates bad code.&amp;#160; The following code will accomplish everything the original author intended with less code and better performance.&amp;#160; C# was built with many highly optimized operators and they &lt;em&gt;should&lt;/em&gt; be used.&lt;/p&gt; &lt;!--&lt;br /&gt;{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Envy Code R VS;}}{\colortbl;??\red222\green222\blue203;\red26\green24\blue21;\red91\green105\blue106;\red166\green92\blue92;\red199\green199\blue165;\red150\green120\blue120;}??\fs30 \cf1\cb2\highlight2 \tab \tab \cf3 public\cf1  \cf3 static\cf1  \cf4 DateTime\cf1  \cf5 ToDateTime\cf1 (\par ??\tab \tab \tab \cf3 this\cf1  \cf4 DateTime\cf6 ?\cf1  \cf5 date\cf1 )\par ??\tab \tab \{\par ??\tab \tab \tab \cf3 return\cf1  \cf5 date\cf1  \cf6 ??\cf1  \cf4 DateTime\cf6 .\cf5 MinValue\cf1 ;\par ??\tab \tab \}\par ??}&lt;br /&gt;--&gt;  &lt;div style="font-size: 15pt; background: #1a1815; color: #dedecb; font-family: envy code r vs"&gt;   &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #5b696a"&gt;public&lt;/span&gt; &lt;span style="color: #5b696a"&gt;static&lt;/span&gt; &lt;span style="color: #a65c5c"&gt;DateTime&lt;/span&gt; &lt;span style="color: #c7c7a5"&gt;ToDateTime&lt;/span&gt;(&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #5b696a"&gt;this&lt;/span&gt; &lt;span style="color: #a65c5c"&gt;DateTime&lt;/span&gt;&lt;span style="color: #967878"&gt;?&lt;/span&gt; &lt;span style="color: #c7c7a5"&gt;date&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #5b696a"&gt;return&lt;/span&gt; &lt;span style="color: #c7c7a5"&gt;date&lt;/span&gt; &lt;span style="color: #967878"&gt;??&lt;/span&gt; &lt;span style="color: #a65c5c"&gt;DateTime&lt;/span&gt;&lt;span style="color: #967878"&gt;.&lt;/span&gt;&lt;span style="color: #c7c7a5"&gt;MinValue&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-1757929520787788482?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/1757929520787788482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=1757929520787788482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/1757929520787788482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/1757929520787788482'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/03/convert-object.html' title='The Convert Object – Use with Caution'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-546963846910643424</id><published>2009-03-11T15:27:00.001-07:00</published><updated>2009-03-11T15:27:45.010-07:00</updated><title type='text'>XML to Scripting Language?  XIM</title><content type='html'>&lt;p&gt;Today for school an article was assigned about utilizing XML and XSLT to replace client side languages and frameworks for deploying executables over the web.&amp;#160; The answer to this is presented in the form of XIM.&amp;#160; XIM in essence is an XML-based programming language that utilizes XSLT to transform the logic into a known client side scripting language like Perl or Python.&lt;/p&gt;  &lt;p&gt;I really like the concept and think perhaps that more research should be done into it.&amp;#160; Perhaps one day we can see a direct interpreter of XIM to replace some more traditional methods of client side execution like JavaScript.&amp;#160; It’ll be interesting to watch in the coming years.&lt;/p&gt;  &lt;p&gt;Here’s a link to an example of how XIM is constructed.&amp;#160; &lt;a href="http://www.ddj.com/web-development/198800555?pgno=2"&gt;Linkage&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-546963846910643424?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/546963846910643424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=546963846910643424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/546963846910643424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/546963846910643424'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/03/xml-to-scripting-langauge-xim.html' title='XML to Scripting Language?  XIM'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-753353679158351198</id><published>2009-03-11T09:12:00.001-07:00</published><updated>2009-03-11T09:17:47.700-07:00</updated><title type='text'>Eve Online Apocrypha</title><content type='html'>&lt;p&gt;I spent the obligatory 2 hour download last nite to get the new Eve Online patch Apocrypha, and I have to say it is phenomenal work by CCP.&amp;#160; There are the usual system lags, bugs, etc that accompany any new content from Eve Online but as a whole its been a fantastic ride.&lt;/p&gt;  &lt;p&gt;Since i game on a Lenovo T61 my performance with the premium client was meh at best, however since the move to the Pixel Shader 2.0 as the minimum req my client performance has nigh on doubled with better quality overall on my side.&amp;#160; With the classic client I was getting about 25-30 FPS and now I’m getting 40-50 FPS at better quality graphics with Premium Lite.&lt;/p&gt;  &lt;p&gt;The bugs though may mar the awesomeness that the patch provides.&amp;#160; Firstly there is some bugs w/ the new Skill Queue, Server Performance evidenced by capping of Jita at 200 when pre patch normal was between 400-1000 people in system, and a few random bugs that popped up everywhere.&amp;#160; I suspect the poor performance was due to not having enough nodes mapped to high trafficked systems.&lt;/p&gt;  &lt;p&gt;The new Sleepers + Wormholes have been interesting at best.&amp;#160; A few corp mates of mine went out to find glory and fame in them and ended up barely coming back.&amp;#160; CCP has truly made a difficult NPC to face off against and I’m sure as time goes on they may get even tougher.&lt;/p&gt;  &lt;p&gt;Just a few initial thoughts, its been a great ride, I look forward to at least 1-3 patches in the coming weeks, but Its still been a fantastic experience overall.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-753353679158351198?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/753353679158351198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=753353679158351198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/753353679158351198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/753353679158351198'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/03/eve-online-apocrypha.html' title='Eve Online Apocrypha'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-8834971044531471890</id><published>2009-03-10T10:51:00.001-07:00</published><updated>2009-03-10T10:51:06.845-07:00</updated><title type='text'>Back up and running and more</title><content type='html'>&lt;p&gt;I just barely got back up and running using this blog.&amp;#160; Got sick and tired of the old url and trying to explain it llamasantos.blogspot.com etc so I purchased the LlamaSantos.com domain and will be using this for now on.&lt;/p&gt;  &lt;p&gt;The compelling reason I wanted to actually write was to talk about an XML document database.&amp;#160; Recently on Ayende’s blog he started this discussion about a &lt;a href="http://ayende.com/Blog/archive/2009/03/08/schema-less-databases.aspx"&gt;Schema-less&lt;/a&gt; database and it got me thinking about the application of such a model.&amp;#160; &lt;/p&gt;  &lt;p&gt;I know Google and yahoo use this type of model of expanding data models which are a little more usable from an object sense than a RDBMS is such as SQL Server, and tbh I really like the idea of a scalable record that doesn’t require large amounts of database management.&lt;/p&gt;  &lt;p&gt;My largest concern with this is how joins criteria can and will be managed and the amount of record processing that must be done in order to get a valuable result set.&amp;#160; XML seems to be the natural choice though if REST is heavily used JSON could be equally applicable.&amp;#160; I’m drawn to XML though for its multi use outside of the web world as well as its document validation through DTD or Schema.&amp;#160; &lt;/p&gt;  &lt;p&gt;The idea for a system like this is a 2 sided approach that could be developed independent of one another.&amp;#160; Firstly the document storage should be a key value pair to be stored in an RDBMS like SQL Server.&amp;#160; A record type could be added to identify the type of document or sharding into multiple tables as well.&lt;/p&gt;  &lt;p&gt; Secondly an indexing service must be built to index each XML document so that filtering can be done outside of the RDBMS.&amp;#160; This will mitigate at least some degree the amount of reliance on the RDBMS which I believe is a feature not a limiting factor.&lt;/p&gt;  &lt;p&gt;These two elements in concert will help to build fast and efficient joins with a final resultset in the long run.&amp;#160; I believe that these joins are the meat and heart of the problem and finding a fast and effective way of doing this may take some more thinking.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-8834971044531471890?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/8834971044531471890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=8834971044531471890' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/8834971044531471890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/8834971044531471890'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2009/03/back-up-and-running-and-more.html' title='Back up and running and more'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-5874782238279439602</id><published>2008-03-27T08:24:00.001-07:00</published><updated>2008-03-27T08:24:41.552-07:00</updated><title type='text'>Anyone can be an eco nut</title><content type='html'>&lt;p&gt;Supplied for you is a conversation of deep importance, enjoy :)&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;you know what sucks about being politically correct&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;what?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;if clinton or obama, as a woman and a black man, were to be elected&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;if anyone talked about impeaching them ever for any reason, there would be such an uproar against it&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;but we could throw mccain to the dogs any day of the week&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;lol&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;i don't think soo, people don't have respect for the office of the president anymore&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;they can't even bring themselves to say Pres. Bush or Pres. Clinton&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;aye&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;its Bush or Clinton, and tbh that type of flippancy will just attach itself to the new president&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;except now if Jessie Jackson opens his big mouth to a bunch of crusty ol' white guys he's liable to be censured in front of the senate and face criminal charges&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;ol&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;why do you say that&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;well, the Senate is a house of order, i'm sure a Jessie Jackson or someone of the like could be brought in to testify for moral character in which case if offense is found in the senate by the senators you can be thrown out or at worse thrown in jail, lets face it the white haters and man haters don't really tend to be calm and collected in their thoughts, &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;lol yeah&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;what i just said is completely politically incorrect &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;oh i know &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;lol but tbh as a scientist watching and stating the obvious from observations is a perk&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;moral\political opinions have no place in science &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;moral ones do, but only in the method in how information is discovered&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;oh c'mon&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;some of the greatest discoveries ever came from the most cruel and unusual experiements ever&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;oh very true&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;do we wanna advance or do we wanna hold hands in a circle chanting happy things&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;well, i imagine somehow that those ethical boundries will be throw by the wayside by someone&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;one day&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;i imagine around the same time cloning becomes a normal thing&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;aye, &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;i still thing that we need to mine the moon though&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;not to mention mars and the roid belt&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;for what lol?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;Iron?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;helium 3&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;helium-3 i should say&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;LOL what are we going todo with it?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;fusion reactors&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;lol i was watching this thing on discovery a while back&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;well as a space conservationist i'd have to oppose that&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;oh yeah?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;i mean... we only have one universe Anthony, and we can't go around mining everything we see just soo we can have cheap clean power!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;hahahahaha&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;lol&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;we only have one universe?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;well yes!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;as if in 20,000 years the human race would even see a quarter of the galaxy&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;lol&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;so are you against moon\mars colonization?&amp;quot;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;FFS YES! I mean, we only have one mars, how could i look at my children's children's children and say I helped destroy the ecosystem of the moon, i can't in good conscience do that&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;or mars for that mater&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;i honestly don't know if you're kidding or not&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;ecosystem of the moon?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;you mean the...rock and...dust?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;-_- your mocking me arn't you&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;a bit... &amp;gt;_&amp;lt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;i'm really concerned about keeping things the same and never changing them, we failed on da earth but i won't stand for it, SAVE THE SOLAR SYSTEM!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;lol&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;i dunno&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;-_- you'd probably throw junk at the sun to incinerate it just to clean up the earth wouldn't you... you heathen&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;imagine all the greenhouse gasses the solar system will have if you did that!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;maybe once earth gets to 9...12...15 billion people, you'll change your mind &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;DUDE&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;WHAT?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;you are so kidding about this whole thing&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;and the air, oh the air, how could we breath in space if we did that&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;LOL!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;i'm dieing here laughing my ass off&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;you had me going there at the end&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;but the whole time&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;you sounded like a liberal&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;and it sounded so wrong&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;dude... i'm taking a snap shot of this one&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;lol thats exactly what i was trying to sound like&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;pretty easy&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;haha&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;that was fantastic&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;take logic reason out of the equation, then take a hardlined asshat perspective on things and turn everything around on the opposition, rinse repeat!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;Done, your a liberal&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;oh hey now, in all fairness, conservatives do that too&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;i'd rather say&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;Done, you're a politician.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;lol na, a politician would be too even handed, i went on the attack, soo to be fair, i was some crazed eco-nut&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;haha&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;Seriously though, this convo is going on the forums pure genius&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;hahah&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;oh man&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;seriously tho, space trash&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fat Tony says:   &lt;br /&gt;&lt;b&gt;that's a good idea&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Llama Santos says:   &lt;br /&gt;&lt;strong&gt;lol i thought my ecosystem on the moon was the best &lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-5874782238279439602?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/5874782238279439602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=5874782238279439602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/5874782238279439602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/5874782238279439602'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2008/03/anyone-can-be-eco-nut.html' title='Anyone can be an eco nut'/><author><name>James and Crystal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-1159988468071196738</id><published>2008-03-10T12:20:00.001-07:00</published><updated>2008-03-10T12:22:39.137-07:00</updated><title type='text'>Collection Initializers</title><content type='html'>&lt;p&gt;Just as a follow up to the last post here's the syntax for handling the initializers over collections.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Dictionary &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font color="#004080"&gt;Dictionary&amp;lt;int, string&amp;gt; myDictionary = new Dictionary&amp;lt;int, string&amp;gt;      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; { 1, &amp;quot;One&amp;quot; },       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; { 2, &amp;quot;Two&amp;quot; },       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; { 3, &amp;quot;Three&amp;quot; }       &lt;br /&gt;};&lt;/font&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;List &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font color="#004080"&gt;List&amp;lt;MyObject&amp;gt; myList = new List&amp;lt;MyObject&amp;gt;      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; new MyObject{ Id=1, Name=&amp;quot;Student1&amp;quot;, Description=&amp;quot;Description1&amp;quot; },       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; new MyObject{ Id=2, Name=&amp;quot;Student2&amp;quot;, Description=&amp;quot;Description2&amp;quot; },       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; new MyObject{ Id=3, Name=&amp;quot;Student3&amp;quot;, Description=&amp;quot;Description3&amp;quot; }       &lt;br /&gt;};&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;Also in order for this syntax to work on custom collections you must implement ICollection&amp;lt;T&amp;gt; interface on your collection.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-1159988468071196738?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/1159988468071196738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=1159988468071196738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/1159988468071196738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/1159988468071196738'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2008/03/collection-initializers.html' title='Collection Initializers'/><author><name>James and Crystal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-1467508718451719501</id><published>2008-03-10T11:56:00.001-07:00</published><updated>2008-03-10T11:59:16.657-07:00</updated><title type='text'>Object Initializers</title><content type='html'>&lt;p&gt;Going through the new additions to C# 3.0 I came across another gem that will make parameterize constructors almost obsolete when dealing with publicly editable fields and initialization.&amp;#160; Take for example the following piece of code that you would use to set some object called MyObject at time of construction.&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080"&gt;public class MyObject      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; int Id { get; set; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; string Name { get; set; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; string Description { get; set; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080"&gt;&amp;#160;&amp;#160;&amp;#160; public MyObject(int id, string name, string description)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Id = id;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Name = name;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Description = description;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;}&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;Normally you might provide some other overloaded constructors like no parameters, just Id, and any other variation you can think of to default the object's information.&amp;#160; Looking at the object however no data is being protected they're all publicly accessible.&amp;#160; The new syntax in C# 3.0 utilizing Object Initalizers will mitigate the constructor overloading to a single constructor.&amp;#160; Bear in mind this is predicated on the argument that we're only using publicly accessible properties.&amp;#160; If private you have private information to be set this will not go around having to supply that via a method or overloaded constructor.&amp;#160; Here's the new syntax doing the same thing without any overloaded constructors inside of some main method to be executed.&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080"&gt;public class&amp;#160; MyObject      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; int Id { get; set; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; string Name { get; set; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; string Description { get; set; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080"&gt;&amp;#160;&amp;#160;&amp;#160; public MyObject()      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080"&gt;&amp;#160;&amp;#160;&amp;#160; static void Main(string[] args)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MyObject program = new MyObject()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Id = 1,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name = &amp;quot;My Name&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Description = &amp;quot;My description.&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080"&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;}&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;With just that simple construct the values can be supplied on the object without having to create additional crappy methods that tend to dilute an object.&amp;#160; Enjoy!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-1467508718451719501?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/1467508718451719501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=1467508718451719501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/1467508718451719501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/1467508718451719501'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2008/03/object-initializers.html' title='Object Initializers'/><author><name>James and Crystal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-386107206951329242</id><published>2008-03-05T11:04:00.001-08:00</published><updated>2008-03-05T11:07:43.581-08:00</updated><title type='text'>Expression&lt;&gt; Object and Dynamic Recompilation of Functors</title><content type='html'>&lt;p&gt;I was going through an article I saw on MSDN this morning and was linked to this little gem.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx" href="http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx"&gt;http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This goes through to illustrate the idea of Expression Trees in C#.&amp;#160; An object new to the framework Expression&amp;lt;&amp;gt; is at the heart of this.&amp;#160; Looking at it it gives us some really cool abilities in C#.&amp;#160; LINQ to SQL is explained as well as some other tasty tidbits.&lt;/p&gt;  &lt;p&gt;Firstly it allows us to deconstruct (recompile?) a lambda expression.&amp;#160; I haven't as yet tried this w/ anonymous delegates yet, I'm doubting that they'll work with this due to the scoping differences between a functor and an anonymous delegate.&amp;#160; What I do like about it is it allows us at runtime to deconstruct a lambda expression supplied, moreover allows us to store the information off via .ToString() into a database.&amp;#160; At first I didn't know if it was possible to reload the expression and call Compile() on it, however I found that it completely is.&amp;#160; The following post illustrates the code to do so.&amp;#160; I'll go through later and verify that it works, but for now I think the concept is more than tasty.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.thescripts.com/forum/thread652871.html" href="http://www.thescripts.com/forum/thread652871.html"&gt;http://www.thescripts.com/forum/thread652871.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;What I can only glean from this is C# has the ability to become a meta data driven system of execution.&amp;#160; Business Rules being defined at runtime not at compile time, and various other tidbits like that.&amp;#160; I can definitely see the need for convention in this as changing the number of parameter input/outputs would be a painful system.&amp;#160; It can still be done but heavily through reflection and I don't see the point to it.&amp;#160; That being said I can see things like (a, b) =&amp;gt; a &amp;lt; 10&amp;#160; &amp;amp;&amp;amp; b &amp;gt; 10 being useful if you wanted to change the bounding from 10 to say 12.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-386107206951329242?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/386107206951329242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=386107206951329242' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/386107206951329242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/386107206951329242'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2008/03/expression-object-and-dynamic.html' title='Expression&amp;lt;&amp;gt; Object and Dynamic Recompilation of Functors'/><author><name>James and Crystal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-1419582788754547146</id><published>2006-10-25T07:51:00.001-07:00</published><updated>2006-11-13T13:01:41.564-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vista Licensing'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>Vista Licensing Changes</title><content type='html'>&lt;p&gt;There is a huge hubbub on the net right now about the concrete Windows Vista EULA, Paul Thurott and Koroush Ghazi give a good point counter point to the matter.&lt;/p&gt; &lt;p&gt;Both make extremely good points however I think nobody would be complaining as much if it wasn't for Windows Vista Ultimate costing us $400 out the door retail.&amp;nbsp; I don't know about you, but spending $400 on an OS is laughable at best.&amp;nbsp; I understand the amount of work etc that's put into software, myself being a developer for a consulting company.&amp;nbsp; However if you wanted to increase the amount of hacks done to windows or just lose market share to a rising Apple this is it.&amp;nbsp; &lt;/p&gt; &lt;p&gt;The only other reason i can think of Vista Ultimate costing $400 is all of the Windows Genuine Advantage support calls that are going to occur from the many false positives that WGA can and does generate.&lt;/p&gt; &lt;p&gt;Anyway if your up for a good read, check it out. I've provided the links here for you.&amp;nbsp; Let me know what you think.&lt;/p&gt; &lt;p&gt;Paul's &lt;a title="http://www.winsupersite.com/showcase/winvista_licensing.asp" href="http://www.winsupersite.com/showcase/winvista_licensing.asp"&gt;http://www.winsupersite.com/showcase/winvista_licensing.asp&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Koroush's &lt;a title="http://www.winsupersite.com/showcase/winvista_licensing_reply.asp" href="http://www.winsupersite.com/showcase/winvista_licensing_reply.asp"&gt;http://www.winsupersite.com/showcase/winvista_licensing_reply.asp&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-1419582788754547146?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/1419582788754547146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=1419582788754547146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/1419582788754547146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/1419582788754547146'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2006/10/vista-licensing-changes.html' title='Vista Licensing Changes'/><author><name>James and Crystal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-4881302229053462508</id><published>2006-10-24T13:53:00.001-07:00</published><updated>2006-11-13T12:57:41.411-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Easy'/><category scheme='http://www.blogger.com/atom/ns#' term='CRUD'/><category scheme='http://www.blogger.com/atom/ns#' term='DataSet'/><category scheme='http://www.blogger.com/atom/ns#' term='TypeSafe DataSet'/><title type='text'>Building a better CRUD Framework</title><content type='html'>&lt;p&gt;I've been using .Net on and off for almost 5 years now, and the one thing that has always left me thinking "huh?" is Microsoft's support for this little things called DataSets.&amp;nbsp; If you've ever been to a Microsoft event for anything development wise you'll see them as the&amp;nbsp;support for whatever subject they're covering.&amp;nbsp; To the outsider looking in they have little use because we define objects in terms of behavior and the data related to that behavior, not just in terms of data and its relationship with other data.&amp;nbsp; Even with this in mind the persistence of DataSets has lived on, and for good reason, they're smart.&lt;/p&gt; &lt;p&gt;I've only recently in the last few months delved deep into the quirky object framework that surrounds DataSets and DataBinding, but I've learned a few tips that I'd like to pass on because there is no sense someone else living through&amp;nbsp;the lovely "experiences" I have.&amp;nbsp; For this I'm going to assume you at least know what a type safe DataSet is, otherwise, quickly go look it up and then continue on :)&lt;/p&gt; &lt;p&gt;1. REMOVE ALL TYPE SAFE DATASET TABLE ADAPTERS.&amp;nbsp; They're just not useful in a scalable project,&amp;nbsp;unless you want to create a class factory for them and try to figure out a way of abstracting them (which from what I've done doesn't seem likely), they really are just an annoyance that leaves you thinking how many freaking objects do I have to use just to commit a single DataTable or DataRow?&amp;nbsp; Instead think about creating a GenericTableAdapter.&amp;nbsp; This can be simply done and you can implement it in&amp;nbsp;a base object approach or template&amp;nbsp;in order to keep Type Safety (This is just a matter of preference though), but&amp;nbsp;it can give you a great amount of flexibility if done properly.&amp;nbsp; Similar approaches have&amp;nbsp;been done&amp;nbsp;like this in terms of NHibernate or Castle.Net however I'm not a fan of either for reasons I'll expound on later.&lt;/p&gt; &lt;p&gt;2.&amp;nbsp; REMEMBER THAT FOREIGN KEYS ARE YOUR FRIEND.&amp;nbsp; As a once opponent to foreign keys, I can say that to any modern enterprise system does not benefit by giving the developer ultimate cosmic power, honestly it really doesn't no matter how great of a developer you think you are. This creates not only a dependency on the software consuming the database, but also limits the amount of data validation that can occur naturally within the data structure. So honestly unless vastly difficult circumstances manifest themselves (which will and does happen), use a foreign key in your Database and make the world around a better place.&amp;nbsp; When doing this and importing your table structure to a type safe DataSet, you can utilize those relationships to handle validation and data traversals naturally from within the data structure without having to write more code.&amp;nbsp; By default every relationship in the type safe DataSet is just that a relationship, you have to manually add in the Foreign Key support, but when that happens you can assure that all the Data within your application is going to be that much more accurate, and forces you to rethink cheap hacks that lead to more brittle code.&amp;nbsp; On top of that because you are&amp;nbsp;forced to have referential integrity you can traverse parent links and child links from any table to get related information, this is especially helpful when trying to decide if a row can be removed or not as well as displaying data from within DataBinding type of solutions.&lt;/p&gt; &lt;p&gt;3.&amp;nbsp; STOP ASSIGNING THINGS LIKE A MONKEY, USE DATABINDINGS.&amp;nbsp; If anyone has dealt with the hell that we call VB6 you'll know that you have data structures and you have to manually assign them into windows controls.&amp;nbsp; Then you implement logic to push that data back into your data structure.&amp;nbsp; Which in turn gets pushed to the Database.&amp;nbsp; Now depending on how well you implemented your code in VB6 this could be a lot or a little, either way its still more than you have to do in the .Net universe with the use of DataBindings.&amp;nbsp; Effectively you use the IDE(which i know for a few of you is heresy) or in code to use the DataBindings on anything inheriting from Control.&amp;nbsp; This works well on TextBoxes, ComboBoxes, et al for assigning values from a DataRow or some bindable object&amp;nbsp;into the graphical components and back out again without writing any code.&amp;nbsp; What does this buy you?&amp;nbsp; More manageable code!&amp;nbsp; It gives you the option to handle exceptions to the rule, not the exceptions and the rule itself.&amp;nbsp; &lt;/p&gt; &lt;p&gt;If implemented these few things can drastically help your code to be more compact, and smart.&amp;nbsp; DataSets were created to manage relational data so why try to reinvent the wheel.&amp;nbsp; Later on I'll go more in depth into each of these topics giving a more granular level of explanation, in the meantime feel free to leave any questions or comments and i'll try to answer them as best i can.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-4881302229053462508?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/4881302229053462508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=4881302229053462508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/4881302229053462508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/4881302229053462508'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2006/10/building-better-crud-framework.html' title='Building a better CRUD Framework'/><author><name>James and Crystal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-2096964127527806464</id><published>2006-10-23T11:02:00.000-07:00</published><updated>2006-10-23T12:35:13.802-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Reporting Services Howto Link'/><title type='text'>Reporting Services</title><content type='html'>A great new blog just got started up for Microsoft Reporting Services, link over and check it out.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://reporting-services.blogspot.com"&gt;http://reporting-services.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It'll be in my links as well for future reference.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-2096964127527806464?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/2096964127527806464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=2096964127527806464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/2096964127527806464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/2096964127527806464'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2006/10/reporting-services.html' title='Reporting Services'/><author><name>James and Crystal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-5554416703094160383</id><published>2006-10-20T12:46:00.001-07:00</published><updated>2006-10-20T12:46:10.971-07:00</updated><title type='text'>Math Blog?</title><content type='html'>&lt;p&gt;A friend of mine sent me this, i've gotta say, this is the best blog i've seen, ever.&amp;nbsp; This guys deserves a web site all his own.&amp;nbsp; Check it out and let me know what you think.&lt;/p&gt; &lt;p&gt;&lt;a href="http://indexed.blogspot.com"&gt;http://indexed.blogspot.com&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-5554416703094160383?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/5554416703094160383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=5554416703094160383' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/5554416703094160383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/5554416703094160383'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2006/10/math-blog.html' title='Math Blog?'/><author><name>James and Crystal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-7393319222402268592</id><published>2006-10-18T12:56:00.001-07:00</published><updated>2006-10-18T12:56:38.041-07:00</updated><title type='text'>DataTable Joins</title><content type='html'>&lt;p&gt;So I'm working with a lot of type safe DataSets lately developing an easily to use pattern for CRUD applications.&amp;nbsp; Something like Hibernate, but not Hibernate, and a big problem I've come across&amp;nbsp;is joining data across multiple DataTables.&lt;/p&gt; &lt;p&gt;The solution is a mild hack being that you can natively display data using DataBindings without having to create a new DataTable.&amp;nbsp; However simple joins can be done in a DataGridView but its not pretty to do :)&lt;/p&gt; &lt;p&gt;Soo take some time and enjoy the following post from the SQL guys at Microsoft&lt;/p&gt; &lt;p&gt;&lt;a title="http://weblogs.sqlteam.com/davidm/archive/2004/01/20/748.aspx" href="http://weblogs.sqlteam.com/davidm/archive/2004/01/20/748.aspx"&gt;http://weblogs.sqlteam.com/davidm/archive/2004/01/20/748.aspx&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-7393319222402268592?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/7393319222402268592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=7393319222402268592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/7393319222402268592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/7393319222402268592'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2006/10/datatable-joins.html' title='DataTable Joins'/><author><name>James and Crystal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35893624.post-3736750537979528409</id><published>2006-10-12T07:49:00.001-07:00</published><updated>2006-10-12T07:49:10.943-07:00</updated><title type='text'>Superfly Snucka</title><content type='html'>&lt;p&gt;So after trying out a bunch of different blog services i've decided that this should be a good home, at least until i get sick of it and write my own (curse of the programmer through and through).&amp;nbsp; &lt;/p&gt; &lt;p&gt;Anyways, check back later, i'll be posting up some useful tidbits of C# coding, and maybe just maybe some tasty scripts in the Windows PowerShell as well.&lt;/p&gt; &lt;p&gt;Who knows maybe i'll write a few reviews on the upcomming Zune for my friends at &lt;a href="http://www.zunescene.com"&gt;www.zunescene.com&lt;/a&gt; check it out if you want the best info on the ipod killing Zune.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35893624-3736750537979528409?l=www.llamasantos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.llamasantos.com/feeds/3736750537979528409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35893624&amp;postID=3736750537979528409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/3736750537979528409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35893624/posts/default/3736750537979528409'/><link rel='alternate' type='text/html' href='http://www.llamasantos.com/2006/10/superfly-snucka.html' title='Superfly Snucka'/><author><name>James and Crystal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
