<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Zack's Fiasco</title>
    <description>a place where I can post some ideas and software projects</description>
    <link>http://zacksfiasco.com/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.4.5.0</generator>
    <language>en-GB</language>
    <blogChannel:blogRoll>http://zacksfiasco.com/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:creator>Zack</dc:creator>
    <dc:title>Zack's Fiasco</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ZacksFiasco" /><feedburner:info uri="zacksfiasco" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
      <title>eWallet 2 KeePass</title>
      <description>&lt;p&gt;If you use eWallet® from Ilium and want to switch to KeePass, I have a new project up on codeplex to help you.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://ewallet2keepass.codeplex.com/"&gt;http://ewallet2keepass.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’ve used eWallet for a long time, and really liked it. But, I recently switched to a Windows Phone 7 and eWallet’s app for Windows Phone 7 doesn’t support synchronizing with the desktop version or editing (as of this writing 2 Mar 2011).&lt;/p&gt;  &lt;p&gt;So I switched to KeePass and now I use 7Pass on my phone which will synchronize. It doesn’t allow editing, yet but should soon.&lt;/p&gt;  &lt;p&gt;KeePass: &lt;a href="http://keepass.info/"&gt;http://keepass.info/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;7Pass: &lt;a href="http://7pass.wordpress.com/"&gt;http://7pass.wordpress.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Registered trademarks belong to their respective owners.   &lt;br /&gt;Not associated with eWallet or KeepPass.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4zA2G6X95AHvRCa-GmNOvbtn-7A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4zA2G6X95AHvRCa-GmNOvbtn-7A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4zA2G6X95AHvRCa-GmNOvbtn-7A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4zA2G6X95AHvRCa-GmNOvbtn-7A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZacksFiasco/~4/YMk8nCoMUQc" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ZacksFiasco/~3/YMk8nCoMUQc/post.aspx</link>
      <author>blog.nospam@nospam.zacksfiasco.com (zack.moore)</author>
      <comments>http://zacksfiasco.com/post/2011/03/02/eWallet-2-KeePass.aspx#comment</comments>
      <guid isPermaLink="false">http://zacksfiasco.com/post.aspx?id=f4ba6e3a-331b-4402-9ffd-5678e761c373</guid>
      <pubDate>Wed, 02 Mar 2011 14:10:46 -0400</pubDate>
      <dc:publisher>zack.moore</dc:publisher>
      <pingback:server>http://zacksfiasco.com/pingback.axd</pingback:server>
      <pingback:target>http://zacksfiasco.com/post.aspx?id=f4ba6e3a-331b-4402-9ffd-5678e761c373</pingback:target>
      <slash:comments>710</slash:comments>
      <trackback:ping>http://zacksfiasco.com/trackback.axd?id=f4ba6e3a-331b-4402-9ffd-5678e761c373</trackback:ping>
      <wfw:comment>http://zacksfiasco.com/post/2011/03/02/eWallet-2-KeePass.aspx#comment</wfw:comment>
      <wfw:commentRss>http://zacksfiasco.com/syndication.axd?post=f4ba6e3a-331b-4402-9ffd-5678e761c373</wfw:commentRss>
    <feedburner:origLink>http://zacksfiasco.com/post.aspx?id=f4ba6e3a-331b-4402-9ffd-5678e761c373</feedburner:origLink></item>
    <item>
      <title>JSON.stringify() won’t output Object properties if your variable is an Array</title>
      <description>&lt;p&gt;I was recently editing some code that another developer had written when I noticed some strange behavior.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note: &lt;/strong&gt;in this post I use the terms “object properties”, “expando properties”, and “dictionary values” interchangeably. In JavaScript, you can add named values to an object in a few ways but each is mostly interchangeable. For example, these do the same thing:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;x[&lt;span class="str"&gt;&amp;quot;a&amp;quot;&lt;/span&gt;] = 1;
x.a = 1;&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;I needed to take an existing JavaScript object and stringify it and send the JSON to the server. That’s fairly straightforward, but&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c89ef32d-18bc-4f40-82ac-28f24a5d93b1" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/JavaScript" rel="tag"&gt;JavaScript&lt;/a&gt;&lt;/div&gt;

&lt;p&gt; I quickly realized that the JSON I was receiving was missing a bunch of values that I was expecting.&lt;/p&gt;

&lt;p&gt;It turned out the source of the error was in the variable declaration of the object I was stringifying. The variable was declared as:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; a = &lt;span class="kwrd"&gt;new&lt;/span&gt; Array();&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;But, when values were added to the variable they were added using the dictionary syntax such as:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;a[“key”] = 3;&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Even though the variable is declared wrong, it appeared to work fine everywhere. That is, until I tried to stringify it.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://json.org/"&gt;A quick note, if you don’t know what stringify is then take a look over at json.org.&lt;/a&gt; The short answer is that stringify() is a method on the JSON object that lets you turn a JavaScript object into its JSON representation.&lt;/p&gt;

&lt;p&gt;The problem seems to be that when stringify() encounters an array object, while it does serialize the indexed elements it doesn’t serialize any expando properties. &lt;/p&gt;

&lt;p&gt;This makes sense if you think about it. JSON has a representation for objects with properties and for arrays, but the array notation has no way of also including properties.&lt;/p&gt;

&lt;p&gt;The example below demonstrates that no dictionary values that were added to the array are serialized when the array is stringified, but in the object the properties are output. Note, I used the shorthand notation for object {} and array [] in the example below.&lt;/p&gt;

&lt;p&gt;Example Code:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt; &lt;span class="attr"&gt;for&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;out_a1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;A property read: &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;out_a1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt; &lt;span class="attr"&gt;for&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;out_a2&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;A strinify: &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;out_a2&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt; &lt;span class="attr"&gt;for&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;out_b1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;B property read: &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;out_b1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt; &lt;span class="attr"&gt;for&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;out_b2&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;B strinify: &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;out_b2&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;var&lt;/span&gt; a = {};
    &lt;span class="kwrd"&gt;var&lt;/span&gt; b = [];

    a[&lt;span class="str"&gt;&amp;quot;alpha&amp;quot;&lt;/span&gt;] = &lt;span class="str"&gt;&amp;quot;alpha&amp;quot;&lt;/span&gt;;

    b[&lt;span class="str"&gt;&amp;quot;beta&amp;quot;&lt;/span&gt;] = &lt;span class="str"&gt;&amp;quot;beta&amp;quot;&lt;/span&gt;;

    &lt;span class="kwrd"&gt;var&lt;/span&gt; out_a1 = document.getElementById(&lt;span class="str"&gt;&amp;quot;out_a1&amp;quot;&lt;/span&gt;);
    out_a1.innerHTML = a[&lt;span class="str"&gt;&amp;quot;alpha&amp;quot;&lt;/span&gt;];
    &lt;span class="kwrd"&gt;var&lt;/span&gt; out_a2 = document.getElementById(&lt;span class="str"&gt;&amp;quot;out_a2&amp;quot;&lt;/span&gt;);
    out_a2.innerHTML = JSON.stringify(a);

    &lt;span class="kwrd"&gt;var&lt;/span&gt; out_b1 = document.getElementById(&lt;span class="str"&gt;&amp;quot;out_b1&amp;quot;&lt;/span&gt;);
    out_b1.innerHTML = b[&lt;span class="str"&gt;&amp;quot;beta&amp;quot;&lt;/span&gt;];
    &lt;span class="kwrd"&gt;var&lt;/span&gt; out_b2 = document.getElementById(&lt;span class="str"&gt;&amp;quot;out_b2&amp;quot;&lt;/span&gt;);
    out_b2.innerHTML = JSON.stringify(b);
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Example Output:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A property read: alpha
    &lt;br /&gt;A strinify: {&amp;quot;alpha&amp;quot;:&amp;quot;alpha&amp;quot;}

    &lt;br /&gt;B property read: beta

    &lt;br /&gt;B strinify: []&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The solution in my problem was to change the object declaration from array to object and everything worked fine.&lt;/p&gt;

&lt;p&gt;I could have run into a problem if the object was being accessed as both an array and an object. You can do this. I tried it out in a couple of browsers (IE8 and Chrome) and it worked. If that had been the case, then I would have had to refactor the code because there would be not way to output both the array elements and the object properties in one JSON element.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kn0UckE95eMtbtPX5X7IbH-W-mg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kn0UckE95eMtbtPX5X7IbH-W-mg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kn0UckE95eMtbtPX5X7IbH-W-mg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kn0UckE95eMtbtPX5X7IbH-W-mg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZacksFiasco/~4/srJWrmBq_gE" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ZacksFiasco/~3/srJWrmBq_gE/post.aspx</link>
      <author>blog.nospam@nospam.zacksfiasco.com (zack.moore)</author>
      <comments>http://zacksfiasco.com/post/2010/06/25/JSONstringify()-wone28099t-output-Object-properties-if-your-variable-is-an-Array.aspx#comment</comments>
      <guid isPermaLink="false">http://zacksfiasco.com/post.aspx?id=1e6c8ad2-144f-4701-80ca-bedf76d9e609</guid>
      <pubDate>Fri, 25 Jun 2010 23:39:21 -0400</pubDate>
      <category>JavaScript</category>
      <dc:publisher>zack.moore</dc:publisher>
      <pingback:server>http://zacksfiasco.com/pingback.axd</pingback:server>
      <pingback:target>http://zacksfiasco.com/post.aspx?id=1e6c8ad2-144f-4701-80ca-bedf76d9e609</pingback:target>
      <slash:comments>32</slash:comments>
      <trackback:ping>http://zacksfiasco.com/trackback.axd?id=1e6c8ad2-144f-4701-80ca-bedf76d9e609</trackback:ping>
      <wfw:comment>http://zacksfiasco.com/post/2010/06/25/JSONstringify()-wone28099t-output-Object-properties-if-your-variable-is-an-Array.aspx#comment</wfw:comment>
      <wfw:commentRss>http://zacksfiasco.com/syndication.axd?post=1e6c8ad2-144f-4701-80ca-bedf76d9e609</wfw:commentRss>
    <feedburner:origLink>http://zacksfiasco.com/post.aspx?id=1e6c8ad2-144f-4701-80ca-bedf76d9e609</feedburner:origLink></item>
    <item>
      <title>Google Pac-Man is 2 player with Ms. Pac-Man</title>
      <description>&lt;p&gt;Maybe everyone else already knew this, but I just figured it out.&lt;/p&gt;  &lt;p&gt;As you probably know, Google recently replaced the normal Google logo on the search page with a playable Pac-Man game where the game map spelled out the word Google. &lt;/p&gt;  &lt;p&gt;Not everyone knows that you can still get to the game by going to &lt;a title="http://www.google.com/pacman/" href="http://www.google.com/pacman/"&gt;http://www.google.com/pacman/&lt;/a&gt; or you can even download the code by going to &lt;a title="http://github.com/macek/google_pacman" href="http://github.com/macek/google_pacman"&gt;http://github.com/macek/google_pacman&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’ve used this as a diversion ever since it came out and every time I played the same way. When the page comes up and finishes its startup sequence, I use the arrow keys to direct Pac-Man around the map gobbling up dots. When I finally run out of lives, I would hit the Insert Coin button and play some more.&lt;/p&gt;  &lt;p&gt;Today I just randomly hit the Insert Coin button before I started playing and low and behold Ms. Pac-Man appeared on the screen beside Pac-Man.&lt;/p&gt;  &lt;p&gt;A second person can play the Ms.Pac-Man at the same time that you play Pac-Man. Pac-Man is controlled by the arrow keys and Ms.Pac-Man is controlled by the W, A, S, and D keys: W is Up, A is Left, S is Down, and D is Right.&lt;/p&gt;  &lt;p&gt;I used to play Pac-Man on our ATARI when I was growing up and I don’t remember how or if 2 play worked, but this is fun.&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3UVJ_xkkQq9BevIXMlufagPp3JY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3UVJ_xkkQq9BevIXMlufagPp3JY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3UVJ_xkkQq9BevIXMlufagPp3JY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3UVJ_xkkQq9BevIXMlufagPp3JY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZacksFiasco/~4/pOymc_u29yw" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ZacksFiasco/~3/pOymc_u29yw/post.aspx</link>
      <author>blog.nospam@nospam.zacksfiasco.com (zack.moore)</author>
      <comments>http://zacksfiasco.com/post/2010/05/28/Google-Pac-Man-is-2-player-with-Ms-Pac-Man.aspx#comment</comments>
      <guid isPermaLink="false">http://zacksfiasco.com/post.aspx?id=9c50e727-afd8-408f-a827-a980d66399e3</guid>
      <pubDate>Fri, 28 May 2010 13:35:24 -0400</pubDate>
      <dc:publisher>zack.moore</dc:publisher>
      <pingback:server>http://zacksfiasco.com/pingback.axd</pingback:server>
      <pingback:target>http://zacksfiasco.com/post.aspx?id=9c50e727-afd8-408f-a827-a980d66399e3</pingback:target>
      <slash:comments>62</slash:comments>
      <trackback:ping>http://zacksfiasco.com/trackback.axd?id=9c50e727-afd8-408f-a827-a980d66399e3</trackback:ping>
      <wfw:comment>http://zacksfiasco.com/post/2010/05/28/Google-Pac-Man-is-2-player-with-Ms-Pac-Man.aspx#comment</wfw:comment>
      <wfw:commentRss>http://zacksfiasco.com/syndication.axd?post=9c50e727-afd8-408f-a827-a980d66399e3</wfw:commentRss>
    <feedburner:origLink>http://zacksfiasco.com/post.aspx?id=9c50e727-afd8-408f-a827-a980d66399e3</feedburner:origLink></item>
    <item>
      <title>jQuery 1.4 Released</title>
      <description>&lt;p&gt;jQuery 1.4 was released on Thursday, 14 Jan 2010. I didn’t see this until today.&lt;/p&gt;  &lt;p&gt;Head over to &lt;a href="http://jquery14.com/"&gt;14 Days of jQuery&lt;/a&gt; or &lt;a href="http://jquery.com/"&gt;the&amp;#160; jQuery home.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Looks like there have been some major performance improvements and some new features.&lt;/p&gt;  &lt;p&gt;One that jumped out at me is that jQuery now takes advantage of the native JSON object if present when calling jQuery Ajax methods.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9e6BX0nOJiIH3y9YVWtP77_Detk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9e6BX0nOJiIH3y9YVWtP77_Detk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9e6BX0nOJiIH3y9YVWtP77_Detk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9e6BX0nOJiIH3y9YVWtP77_Detk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZacksFiasco/~4/oUQOPfh9bXs" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ZacksFiasco/~3/oUQOPfh9bXs/post.aspx</link>
      <author>blog.nospam@nospam.zacksfiasco.com (zack.moore)</author>
      <comments>http://zacksfiasco.com/post/2010/01/21/jQuery-14-Released.aspx#comment</comments>
      <guid isPermaLink="false">http://zacksfiasco.com/post.aspx?id=3478dc04-6e16-4874-b87a-469c9112a8e6</guid>
      <pubDate>Thu, 21 Jan 2010 16:06:45 -0400</pubDate>
      <dc:publisher>zack.moore</dc:publisher>
      <pingback:server>http://zacksfiasco.com/pingback.axd</pingback:server>
      <pingback:target>http://zacksfiasco.com/post.aspx?id=3478dc04-6e16-4874-b87a-469c9112a8e6</pingback:target>
      <slash:comments>43</slash:comments>
      <trackback:ping>http://zacksfiasco.com/trackback.axd?id=3478dc04-6e16-4874-b87a-469c9112a8e6</trackback:ping>
      <wfw:comment>http://zacksfiasco.com/post/2010/01/21/jQuery-14-Released.aspx#comment</wfw:comment>
      <wfw:commentRss>http://zacksfiasco.com/syndication.axd?post=3478dc04-6e16-4874-b87a-469c9112a8e6</wfw:commentRss>
    <feedburner:origLink>http://zacksfiasco.com/post.aspx?id=3478dc04-6e16-4874-b87a-469c9112a8e6</feedburner:origLink></item>
    <item>
      <title>SQL Server Temporary Stored Procedures</title>
      <description>&lt;p&gt;I learned something new today. In SQL Server you can create temporary stored procedures that automatically go away when your session closes. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2009/11/25/temporary-procedures-sql-server.aspx"&gt;Here is a good article on Temporary Stored Procedures.&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I already knew that you could create temporary tables, but I hadn't known that the same applied to stored procedures. &lt;/p&gt;  &lt;p&gt;Temporary tables are created by starting the table name with a # sign. &lt;/p&gt;  &lt;p&gt;Example:    &lt;br /&gt;&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;create&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt; #mytbl &lt;/pre&gt;

  &lt;pre&gt;( &lt;/pre&gt;

  &lt;pre class="alt"&gt;    [Name] &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(50), &lt;/pre&gt;

  &lt;pre&gt;    [Age] &lt;span class="kwrd"&gt;int&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;)&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;The same trick is used for stored procedures.&lt;/p&gt;

&lt;p&gt;Example: &lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;create&lt;/span&gt; &lt;span class="kwrd"&gt;procedure&lt;/span&gt; #addName &lt;/pre&gt;

  &lt;pre&gt;( &lt;/pre&gt;

  &lt;pre class="alt"&gt;    @Name &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(50),&lt;/pre&gt;

  &lt;pre&gt;    @Age &lt;span class="kwrd"&gt;int&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;) &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;begin&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;    insert &lt;span class="kwrd"&gt;into&lt;/span&gt; #myTbl([Name], [Age]) &lt;span class="kwrd"&gt;values&lt;/span&gt;(@Name, @Age) &lt;/pre&gt;

  &lt;pre&gt;end&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt; 
  &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;This is really useful for scripts that you use for different tasks that contain repeated code that you hate duplicating but you don’t really want to permanently load into the database.&lt;/p&gt;

&lt;p&gt;For example, say you have a script that runs on your build and deployment that fixes up any server logins that may have become broken from a rebuild or some other action. You might have a script that looks like the following.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;declare&lt;/span&gt; @name &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(100)&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; @name = &lt;span class="str"&gt;'NT AUTHORITY\NETWORK SERVICE'&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- check to see if login exists&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; &lt;span class="kwrd"&gt;exists&lt;/span&gt;(&lt;span class="kwrd"&gt;select&lt;/span&gt; name &lt;span class="kwrd"&gt;from&lt;/span&gt; master.sys.syslogins &lt;span class="kwrd"&gt;where&lt;/span&gt; name = @name)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;begin&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="rem"&gt;-- if login exists, check to see if user exists on db&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; &lt;span class="kwrd"&gt;not&lt;/span&gt; &lt;span class="kwrd"&gt;exists&lt;/span&gt;(&lt;span class="kwrd"&gt;select&lt;/span&gt; name &lt;span class="kwrd"&gt;from&lt;/span&gt; sys.sysusers &lt;span class="kwrd"&gt;where&lt;/span&gt; name = @name)&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;begin&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;-- if user does not exist on db, then add it and add roles&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;exec&lt;/span&gt; sp_grantdbaccess @name&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;exec&lt;/span&gt; sp_addrolemember &lt;span class="str"&gt;'db_owner'&lt;/span&gt;, @name&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;print&lt;/span&gt; @name&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;end&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;begin&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;exec&lt;/span&gt; SP_CHANGE_USERS_LOGIN &lt;span class="str"&gt;'AUTO_FIX'&lt;/span&gt;, @name, &lt;span class="kwrd"&gt;NULL&lt;/span&gt;, &lt;span class="str"&gt;'*****'&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;end&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;end&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; @name = &lt;span class="str"&gt;'APPSVR\svnprojects'&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt;-- check to see if login exists&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; &lt;span class="kwrd"&gt;exists&lt;/span&gt;(&lt;span class="kwrd"&gt;select&lt;/span&gt; name &lt;span class="kwrd"&gt;from&lt;/span&gt; master.sys.syslogins &lt;span class="kwrd"&gt;where&lt;/span&gt; name = @name)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;begin&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;-- if login exists, check to see if user exists on db&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; &lt;span class="kwrd"&gt;not&lt;/span&gt; &lt;span class="kwrd"&gt;exists&lt;/span&gt;(&lt;span class="kwrd"&gt;select&lt;/span&gt; name &lt;span class="kwrd"&gt;from&lt;/span&gt; sys.sysusers &lt;span class="kwrd"&gt;where&lt;/span&gt; name = @name)&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;begin&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;-- if user does not exist on db, then add it and add roles&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;exec&lt;/span&gt; sp_grantdbaccess @name&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;exec&lt;/span&gt; sp_addrolemember &lt;span class="str"&gt;'db_owner'&lt;/span&gt;, @name&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;print&lt;/span&gt; @name&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;end&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;begin&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;exec&lt;/span&gt; SP_CHANGE_USERS_LOGIN &lt;span class="str"&gt;'AUTO_FIX'&lt;/span&gt;, @name, &lt;span class="kwrd"&gt;NULL&lt;/span&gt;, &lt;span class="str"&gt;'*****'&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;end&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;end&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; @name = &lt;span class="str"&gt;'APPSRV\agentmgr'&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- check to see if login exists&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; &lt;span class="kwrd"&gt;exists&lt;/span&gt;(&lt;span class="kwrd"&gt;select&lt;/span&gt; name &lt;span class="kwrd"&gt;from&lt;/span&gt; master.sys.syslogins &lt;span class="kwrd"&gt;where&lt;/span&gt; name = @name)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;begin&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="rem"&gt;-- if login exists, check to see if user exists on db&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; &lt;span class="kwrd"&gt;not&lt;/span&gt; &lt;span class="kwrd"&gt;exists&lt;/span&gt;(&lt;span class="kwrd"&gt;select&lt;/span&gt; name &lt;span class="kwrd"&gt;from&lt;/span&gt; sys.sysusers &lt;span class="kwrd"&gt;where&lt;/span&gt; name = @name)&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;begin&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;-- if user does not exist on db, then add it and add roles&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;exec&lt;/span&gt; sp_grantdbaccess @name&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;exec&lt;/span&gt; sp_addrolemember &lt;span class="str"&gt;'db_owner'&lt;/span&gt;, @name&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;print&lt;/span&gt; @name&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;end&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;begin&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;exec&lt;/span&gt; SP_CHANGE_USERS_LOGIN &lt;span class="str"&gt;'AUTO_FIX'&lt;/span&gt;, @name, &lt;span class="kwrd"&gt;NULL&lt;/span&gt;, &lt;span class="str"&gt;'*****'&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;end&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;end&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;This contains lots of duplicate code which is more difficult to read is also error prone if you need to update the code that is performed for each user.&lt;/p&gt;

&lt;p&gt;Now consider the updated code using a temp stored procedure.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;create&lt;/span&gt; &lt;span class="kwrd"&gt;procedure&lt;/span&gt; #addLogin&lt;/pre&gt;

  &lt;pre&gt;(&lt;/pre&gt;

  &lt;pre class="alt"&gt;    @name &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(256),&lt;/pre&gt;

  &lt;pre&gt;    @&lt;span class="kwrd"&gt;role&lt;/span&gt; &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(256),&lt;/pre&gt;

  &lt;pre class="alt"&gt;    @password &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(256)&lt;/pre&gt;

  &lt;pre&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;as&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;begin&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;-- check to see if login exists&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; &lt;span class="kwrd"&gt;exists&lt;/span&gt;(&lt;span class="kwrd"&gt;select&lt;/span&gt; name &lt;span class="kwrd"&gt;from&lt;/span&gt; master.sys.syslogins &lt;span class="kwrd"&gt;where&lt;/span&gt; name = @name)&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;begin&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;-- if login exists, check to see if user exists on db&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; &lt;span class="kwrd"&gt;not&lt;/span&gt; &lt;span class="kwrd"&gt;exists&lt;/span&gt;(&lt;span class="kwrd"&gt;select&lt;/span&gt; name &lt;span class="kwrd"&gt;from&lt;/span&gt; sys.sysusers &lt;span class="kwrd"&gt;where&lt;/span&gt; name = @name)&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;begin&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="rem"&gt;-- if user does not exist on db, then add it and add roles&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;exec&lt;/span&gt; sp_grantdbaccess @name&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;exec&lt;/span&gt; sp_addrolemember @&lt;span class="kwrd"&gt;role&lt;/span&gt;, @name&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;print&lt;/span&gt; @name + &lt;span class="str"&gt;' granted access'&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;end&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;begin&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;exec&lt;/span&gt; SP_CHANGE_USERS_LOGIN &lt;span class="str"&gt;'AUTO_FIX'&lt;/span&gt;, @name, &lt;span class="kwrd"&gt;NULL&lt;/span&gt;, @password&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;print&lt;/span&gt; @name + &lt;span class="str"&gt;' fixed.'&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;end&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;end&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;end&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;go&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;exec&lt;/span&gt; #addLogin @name = &lt;span class="str"&gt;'NT AUTHORITY\NETWORK SERVICE'&lt;/span&gt;, @&lt;span class="kwrd"&gt;role&lt;/span&gt;=&lt;span class="str"&gt;'db_owner'&lt;/span&gt;, @password=&lt;span class="str"&gt;'*****'&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;exec&lt;/span&gt; #addLogin @name = &lt;span class="str"&gt;'APPSVR\svnprojects'&lt;/span&gt;, @&lt;span class="kwrd"&gt;role&lt;/span&gt;=&lt;span class="str"&gt;'db_owner'&lt;/span&gt;, @password=&lt;span class="str"&gt;'*****'&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;exec&lt;/span&gt; #addLogin @name = &lt;span class="str"&gt;'APPSRV\agentmgr'&lt;/span&gt;, @&lt;span class="kwrd"&gt;role&lt;/span&gt;=&lt;span class="str"&gt;'db_owner'&lt;/span&gt;, @password=&lt;span class="str"&gt;'*****'&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;go&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&lt;/p&gt;
Much shorter and much easier to read. the #addLogin stored procedure will automatically be dropped when the session is closed so I don’t have to worry about polluting my database with utility procedures that don’t need to hang around.
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ci_xznaFBRuFPOfpVy-n5Ms2QMo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ci_xznaFBRuFPOfpVy-n5Ms2QMo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ci_xznaFBRuFPOfpVy-n5Ms2QMo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ci_xznaFBRuFPOfpVy-n5Ms2QMo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZacksFiasco/~4/7JI897ICXlU" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ZacksFiasco/~3/7JI897ICXlU/post.aspx</link>
      <author>blog.nospam@nospam.zacksfiasco.com (zack.moore)</author>
      <comments>http://zacksfiasco.com/post/2010/01/21/SQL-Server-Temporary-Stored-Procedures.aspx#comment</comments>
      <guid isPermaLink="false">http://zacksfiasco.com/post.aspx?id=1b0b3f3f-4ded-4059-b755-625e81abba6e</guid>
      <pubDate>Thu, 21 Jan 2010 14:56:32 -0400</pubDate>
      <category>sql server</category>
      <category>TSQL</category>
      <dc:publisher>zack.moore</dc:publisher>
      <pingback:server>http://zacksfiasco.com/pingback.axd</pingback:server>
      <pingback:target>http://zacksfiasco.com/post.aspx?id=1b0b3f3f-4ded-4059-b755-625e81abba6e</pingback:target>
      <slash:comments>23</slash:comments>
      <trackback:ping>http://zacksfiasco.com/trackback.axd?id=1b0b3f3f-4ded-4059-b755-625e81abba6e</trackback:ping>
      <wfw:comment>http://zacksfiasco.com/post/2010/01/21/SQL-Server-Temporary-Stored-Procedures.aspx#comment</wfw:comment>
      <wfw:commentRss>http://zacksfiasco.com/syndication.axd?post=1b0b3f3f-4ded-4059-b755-625e81abba6e</wfw:commentRss>
    <feedburner:origLink>http://zacksfiasco.com/post.aspx?id=1b0b3f3f-4ded-4059-b755-625e81abba6e</feedburner:origLink></item>
    <item>
      <title>TrueCrypt 6.3 released. Now supports Win7 and Snow Leopard</title>
      <description>&lt;p&gt;TrueCrypt 6.3 was released on the a couple of days ago on 21 Oct 2009 and now has full Windows 7 (32 and 64bit) and Mac Snow Leopard support. &lt;/p&gt;  &lt;p&gt;Some people had gotten the previous version, 6.2a to work with Windows 7 but others had run into some problems.&amp;#160; This new release should come as great news for people wanting to protect the data on their newly repaved or purchased PCs.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.truecrypt.org/"&gt;Get TrueCrypt here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IgRF_BHjHYVLQfyBSKIR5-Y9KiA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IgRF_BHjHYVLQfyBSKIR5-Y9KiA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IgRF_BHjHYVLQfyBSKIR5-Y9KiA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IgRF_BHjHYVLQfyBSKIR5-Y9KiA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZacksFiasco/~4/z5DDnnC_Hdo" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ZacksFiasco/~3/z5DDnnC_Hdo/post.aspx</link>
      <author>blog.nospam@nospam.zacksfiasco.com (zack.moore)</author>
      <comments>http://zacksfiasco.com/post/2009/10/23/TrueCrypt-63-released-Now-supports-Win7-and-Snow-Leopard.aspx#comment</comments>
      <guid isPermaLink="false">http://zacksfiasco.com/post.aspx?id=862182fe-8182-4b9f-926e-854f3589f1d3</guid>
      <pubDate>Fri, 23 Oct 2009 11:36:20 -0400</pubDate>
      <category>Security</category>
      <category>Windows7</category>
      <dc:publisher>zack.moore</dc:publisher>
      <pingback:server>http://zacksfiasco.com/pingback.axd</pingback:server>
      <pingback:target>http://zacksfiasco.com/post.aspx?id=862182fe-8182-4b9f-926e-854f3589f1d3</pingback:target>
      <slash:comments>73</slash:comments>
      <trackback:ping>http://zacksfiasco.com/trackback.axd?id=862182fe-8182-4b9f-926e-854f3589f1d3</trackback:ping>
      <wfw:comment>http://zacksfiasco.com/post/2009/10/23/TrueCrypt-63-released-Now-supports-Win7-and-Snow-Leopard.aspx#comment</wfw:comment>
      <wfw:commentRss>http://zacksfiasco.com/syndication.axd?post=862182fe-8182-4b9f-926e-854f3589f1d3</wfw:commentRss>
    <feedburner:origLink>http://zacksfiasco.com/post.aspx?id=862182fe-8182-4b9f-926e-854f3589f1d3</feedburner:origLink></item>
    <item>
      <title>IronPython in Action</title>
      <description>&lt;p&gt;For a limited time, you can get IronPython in Action by Michael Foord and Christian Muirhead at 35% off. You can grab the discount code here at &lt;a title="http://www.ironpythoninaction.com/" href="http://www.ironpythoninaction.com/"&gt;http://www.ironpythoninaction.com/&lt;/a&gt; if it is still available.&lt;/p&gt;  &lt;p&gt;IronPython is a .NET implementation of the Python programming language. It has been a long time since I looked at Python but I believe that its significant features are dynamic typing and dynamic binding.&lt;/p&gt;  &lt;p&gt;IronPython is getting a lot of attention now and you can use it on ASP.NET, Windows, Console, and Silverlight projects. It is interesting because it offers different ways to solve problems and write algorithms, so for me I’m not looking at it as a C# replacement but as a supplement to my C# and other skills, but I’ll write a review up as I get into the book.&lt;/p&gt;  &lt;p&gt;I got the eBook pretty cheap and I’m converting it for reading on my Kindle now.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TxT8Qz0eqggUACz8n_frDBSPXxw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TxT8Qz0eqggUACz8n_frDBSPXxw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TxT8Qz0eqggUACz8n_frDBSPXxw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TxT8Qz0eqggUACz8n_frDBSPXxw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZacksFiasco/~4/k1fuwcV-D3I" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ZacksFiasco/~3/k1fuwcV-D3I/post.aspx</link>
      <author>blog.nospam@nospam.zacksfiasco.com (zack.moore)</author>
      <comments>http://zacksfiasco.com/post/2009/04/27/IronPython-in-Action.aspx#comment</comments>
      <guid isPermaLink="false">http://zacksfiasco.com/post.aspx?id=bb563401-ac19-4233-94ea-a3e6ad3a9d73</guid>
      <pubDate>Mon, 27 Apr 2009 15:37:18 -0400</pubDate>
      <dc:publisher>zack.moore</dc:publisher>
      <pingback:server>http://zacksfiasco.com/pingback.axd</pingback:server>
      <pingback:target>http://zacksfiasco.com/post.aspx?id=bb563401-ac19-4233-94ea-a3e6ad3a9d73</pingback:target>
      <slash:comments>34</slash:comments>
      <trackback:ping>http://zacksfiasco.com/trackback.axd?id=bb563401-ac19-4233-94ea-a3e6ad3a9d73</trackback:ping>
      <wfw:comment>http://zacksfiasco.com/post/2009/04/27/IronPython-in-Action.aspx#comment</wfw:comment>
      <wfw:commentRss>http://zacksfiasco.com/syndication.axd?post=bb563401-ac19-4233-94ea-a3e6ad3a9d73</wfw:commentRss>
    <feedburner:origLink>http://zacksfiasco.com/post.aspx?id=bb563401-ac19-4233-94ea-a3e6ad3a9d73</feedburner:origLink></item>
    <item>
      <title>IE8 Released today</title>
      <description>&lt;p&gt;&lt;a href="http://www.microsoft.com/windows/internet-explorer/default.aspx"&gt;Head over to Microsoft and download the final version of IE8&lt;/a&gt;. You might have had a release candidate or beta version already but this is the final release version of version 8.&lt;/p&gt;  &lt;p&gt;IE8 has a bunch of cool features which are better detailed at the IE web site than I could do, but suffice to say that I like it a lot and it runs pretty fast.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1XdLva1naJg-36g9bsJgdyxV7V0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1XdLva1naJg-36g9bsJgdyxV7V0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1XdLva1naJg-36g9bsJgdyxV7V0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1XdLva1naJg-36g9bsJgdyxV7V0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZacksFiasco/~4/DDFl48xR-Ss" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ZacksFiasco/~3/DDFl48xR-Ss/post.aspx</link>
      <author>blog.nospam@nospam.zacksfiasco.com (zack.moore)</author>
      <comments>http://zacksfiasco.com/post/2009/03/19/IE8-Released-today.aspx#comment</comments>
      <guid isPermaLink="false">http://zacksfiasco.com/post.aspx?id=821728d4-0168-40af-94a4-07acb9589af3</guid>
      <pubDate>Thu, 19 Mar 2009 13:39:44 -0400</pubDate>
      <dc:publisher>zack.moore</dc:publisher>
      <pingback:server>http://zacksfiasco.com/pingback.axd</pingback:server>
      <pingback:target>http://zacksfiasco.com/post.aspx?id=821728d4-0168-40af-94a4-07acb9589af3</pingback:target>
      <slash:comments>26</slash:comments>
      <trackback:ping>http://zacksfiasco.com/trackback.axd?id=821728d4-0168-40af-94a4-07acb9589af3</trackback:ping>
      <wfw:comment>http://zacksfiasco.com/post/2009/03/19/IE8-Released-today.aspx#comment</wfw:comment>
      <wfw:commentRss>http://zacksfiasco.com/syndication.axd?post=821728d4-0168-40af-94a4-07acb9589af3</wfw:commentRss>
    <feedburner:origLink>http://zacksfiasco.com/post.aspx?id=821728d4-0168-40af-94a4-07acb9589af3</feedburner:origLink></item>
    <item>
      <title>Lots of Cool announcements from MIX2009 – MVC, Silverlight, Expression, AJAX</title>
      <description>&lt;p&gt;At the &lt;a href="http://visitmix.com/"&gt;MIX conference&lt;/a&gt; this week, Scot Gu announced the release version of ASP.NET MVC which has been widely anticipated.&lt;/p&gt;  &lt;p&gt;You probably heard that already in the several hundred blogs and web pages that already announced it. &lt;/p&gt;  &lt;p&gt;What you may not have read is that there is now documentation on MSDN for MVC. This is great for anyone who has been trying to learn MVC by following the increasingly out of date (but much appreciated) blog posts from since the early days of MVC.&lt;/p&gt;  &lt;p&gt;Check out the &lt;a href="http://msdn.microsoft.com/en-us/library/dd394709.aspx"&gt;MVC Documentation at MSDN&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;You can get the &lt;a href="http://www.asp.net/downloads/"&gt;latest MVC bits over at ASP.NET Downloads&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;That brings up one of the other items announced at MIX, v2 of the Web Platform Installer. This is how I would recommend that you install the updated MVC bits and anything else from ASP.NET. Note though that you need to uninstall any beta or RC first before you launch the Web Platform Installer.&lt;/p&gt;  &lt;p&gt;The Web Platform Installer has a bunch of other web and ASP.NET bits including the ability to install apps like &lt;a href="http://www.dotnetblogengine.net/"&gt;BlogEngine.NET&lt;/a&gt; and even some PHP apps that run on Windows like &lt;a href="http://acquia.com/products-services/acquia-drupal"&gt;Drupal&lt;/a&gt;. And since it runs off an RSS feed it will always have the most up to date listing.&lt;/p&gt;  &lt;p&gt;Also announced at MIX is the &lt;a href="http://silverlight.net/getstarted/silverlight3/default.aspx"&gt;Silverlight 3 Beta&lt;/a&gt;. You can get the beta and the Web Platform Installer will install the tools for Visual Studio. I haven’t installed it myself (yet) so I don’t know if the WPI will install all the Beta bits or just the VS Tools for Silverlight 3.&lt;/p&gt;  &lt;p&gt;Here out this &lt;a href="http://channel9.msdn.com/posts/Charles/Scott-Guthrie-Inside-Silverlight-3/"&gt;interview with Scot Gu on Silverlight 3 here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;One of the coolest things released are some of the new features in Expression Blend 3. You can get the current &lt;a href="http://www.microsoft.com/expression/try-it/blendpreview.aspx"&gt;preview of Expression Blend 3 here&lt;/a&gt; but what you may get really exited about is the new &lt;a href="http://www.microsoft.com/expression/try-it/superpreview/"&gt;SuperPreview feature which is a separate download&lt;/a&gt; (not sure if it is also included in the Blend 3 Preview). I haven’t installed Blend 3 yet but I haven installed the SuperPreview and it is very cool. Essentially what it allows you to do is see how your web pages look in&amp;#160; various browsers and versions of browses automatically without having to have those browsers installed AND it helps you find the tags and attributes and styles that are causing your pages to look different in each browser. The version that was demoed could show you your pages in IE8, IE7, IE6, Safari (version?), and FireFox (version?) which is very cool. Unfortunately the SuperPreview download can only compare your currently installed version of IE with IE6 but that is still very cool. I will be checking out the Blend Preview to see if it contains the full feature or the same as what is in the SuperPreview preview. &lt;/p&gt;  &lt;p&gt;You can &lt;a href="http://expression.microsoft.com/en-us/dd565874.aspx"&gt;read more about SuperPreview here&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/xweb/archive/2009/03/18/Microsoft-Expression-Web-SuperPreview-for-Windows-Internet-Explorer.aspx"&gt;read the Expression team’s blog entry&lt;/a&gt; and &lt;a href="http://visitmix.com/News/Expression-Web-SuperPreview"&gt;watch a SuperPreview video here&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;You can &lt;a href="http://visitmix.com/Opinions/MIX09-Live-Blog-2-Advancing-User-Experiences-Scott-Guthrie"&gt;read a summary of yesterday’s MIX keynotes here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eQDGl22_Brx-Fo6VV05IbEJiFHI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eQDGl22_Brx-Fo6VV05IbEJiFHI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eQDGl22_Brx-Fo6VV05IbEJiFHI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eQDGl22_Brx-Fo6VV05IbEJiFHI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZacksFiasco/~4/csK15PMH0Us" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ZacksFiasco/~3/csK15PMH0Us/post.aspx</link>
      <author>blog.nospam@nospam.zacksfiasco.com (zack.moore)</author>
      <comments>http://zacksfiasco.com/post/2009/03/19/Lots-of-Cool-announcements-from-MIX2009-e28093-MVC-Silverlight-Expression-AJAX.aspx#comment</comments>
      <guid isPermaLink="false">http://zacksfiasco.com/post.aspx?id=10e7d5af-610d-4575-a1ba-caaef2d9f85f</guid>
      <pubDate>Thu, 19 Mar 2009 13:27:17 -0400</pubDate>
      <dc:publisher>zack.moore</dc:publisher>
      <pingback:server>http://zacksfiasco.com/pingback.axd</pingback:server>
      <pingback:target>http://zacksfiasco.com/post.aspx?id=10e7d5af-610d-4575-a1ba-caaef2d9f85f</pingback:target>
      <slash:comments>31</slash:comments>
      <trackback:ping>http://zacksfiasco.com/trackback.axd?id=10e7d5af-610d-4575-a1ba-caaef2d9f85f</trackback:ping>
      <wfw:comment>http://zacksfiasco.com/post/2009/03/19/Lots-of-Cool-announcements-from-MIX2009-e28093-MVC-Silverlight-Expression-AJAX.aspx#comment</wfw:comment>
      <wfw:commentRss>http://zacksfiasco.com/syndication.axd?post=10e7d5af-610d-4575-a1ba-caaef2d9f85f</wfw:commentRss>
    <feedburner:origLink>http://zacksfiasco.com/post.aspx?id=10e7d5af-610d-4575-a1ba-caaef2d9f85f</feedburner:origLink></item>
    <item>
      <title>LINQ and Code Generation Slides</title>
      <description>&lt;p&gt;On Monday I did a presentation with Chad Brooks and Dave Cameron at our local .NET User Group: &lt;a href="http://MaconDotNet.org/"&gt;MaconDotNet&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;My sections were on LINQ and Code Generation. Other than me running a little long, the presentation went great. Here are my slides and examples but head over to &lt;a href="http://macondotnet.org/post/Slides-from-Mondays-Meeting-(12-Jan-2009).aspx"&gt;the user group page&lt;/a&gt; to grab Chad and Dave's slides and examples when they get posted.&lt;/p&gt;  &lt;p&gt;If you find any errors or typos, let me know. &lt;/p&gt;  &lt;p&gt;(Note: I did a section on LINQ and a section on Code Generation. Not &amp;quot;LINQ and Code Generation&amp;quot;)&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:aa5c4b0e-1707-4f6e-8aab-cc1bbd620e18" class="wlWriterSmartContent"&gt;&lt;p&gt; &lt;a href="http://zacksfiasco.com/blogimages/SlidesfromMondaysMeeting12Jan2009_AC67/DotNETDataAccessPart1Zack.pptx" target="_blank"&gt;LINQ and Code Generation Slides (Zack)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://zacksfiasco.com/blogimages/SlidesfromMondaysMeeting12Jan2009_AC67/ZacksDataAccessExamples.zip" target="_blank"&gt;LINQ and Code Generation Examples (Zack)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/FVnchyw_SmfudGD3d4N29iid1Ck/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/FVnchyw_SmfudGD3d4N29iid1Ck/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds2.feedburner.com/~r/ZacksFiasco/~4/MfgjFopME_g" height="1" width="1"/&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XxghegPe_CrnG69_wFUQAbpyU54/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XxghegPe_CrnG69_wFUQAbpyU54/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XxghegPe_CrnG69_wFUQAbpyU54/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XxghegPe_CrnG69_wFUQAbpyU54/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZacksFiasco/~4/z0iUQ-vXlqI" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ZacksFiasco/~3/z0iUQ-vXlqI/post.aspx</link>
      <author>blog.nospam@nospam.zacksfiasco.com (zack.moore)</author>
      <comments>http://zacksfiasco.com/post/2009/01/14/LINQ-and-Code-Generation-Slides.aspx#comment</comments>
      <guid isPermaLink="false">http://zacksfiasco.com/post.aspx?id=ddb0d4c0-e859-4670-8da5-538ebc880f0e</guid>
      <pubDate>Wed, 14 Jan 2009 12:26:00 -0400</pubDate>
      <category>Zack's Fiasco DAL</category>
      <category>codegeneration</category>
      <category>sql server</category>
      <category>Zack's Fiasco DAL</category>
      <category>LINQ</category>
      <category>codegeneration</category>
      <category>LINQ</category>
      <dc:publisher>zack.moore</dc:publisher>
      <pingback:server>http://zacksfiasco.com/pingback.axd</pingback:server>
      <pingback:target>http://zacksfiasco.com/post.aspx?id=ddb0d4c0-e859-4670-8da5-538ebc880f0e</pingback:target>
      <slash:comments>22</slash:comments>
      <trackback:ping>http://zacksfiasco.com/trackback.axd?id=ddb0d4c0-e859-4670-8da5-538ebc880f0e</trackback:ping>
      <wfw:comment>http://zacksfiasco.com/post/2009/01/14/LINQ-and-Code-Generation-Slides.aspx#comment</wfw:comment>
      <wfw:commentRss>http://zacksfiasco.com/syndication.axd?post=ddb0d4c0-e859-4670-8da5-538ebc880f0e</wfw:commentRss>
    <feedburner:origLink>http://zacksfiasco.com/post.aspx?id=ddb0d4c0-e859-4670-8da5-538ebc880f0e</feedburner:origLink></item>
  </channel>
</rss>

