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

<channel>
	<title>Brennan's Blog</title>
	<atom:link href="http://brennan.offwhite.net/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://brennan.offwhite.net/blog</link>
	<description>My Experiences with Software Development</description>
	<pubDate>Wed, 14 May 2008 22:55:35 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Recommended Books on JavaScript</title>
		<link>http://brennan.offwhite.net/blog/2008/05/12/recommended-books-on-javascript/</link>
		<comments>http://brennan.offwhite.net/blog/2008/05/12/recommended-books-on-javascript/#comments</comments>
		<pubDate>Mon, 12 May 2008 23:19:23 +0000</pubDate>
		<dc:creator>Brennan Stehling</dc:creator>
		
		<category><![CDATA[ajax]]></category>

		<category><![CDATA[asp.net]]></category>

		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://brennan.offwhite.net/blog/2008/05/12/recommended-books-on-javascript/</guid>
		<description><![CDATA[ With AJAX spreading to more and more web sites it is becoming increasingly valuable to learn how to use JavaScript. Most web developers cringe at the thought of working with JavaScript after years of bad experiences with no debugging support for very buggy and incompatible web browsers that do a poor job of interpreting [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/ref=nosim/smallscom-20"><img src='http://brennan.offwhite.net/blog/wp-content/uploads/2008/05/jsthegoodparts.jpg' alt='JavaScript: The Good Parts' align="right" target="_blank" /></a> With AJAX spreading to more and more web sites it is becoming increasingly valuable to learn how to use JavaScript. Most web developers cringe at the thought of working with JavaScript after years of bad experiences with no debugging support for very buggy and incompatible web browsers that do a poor job of interpreting JavaScript properly. Once you get to know the language as it was meant to be you really will learn to appreciate the power it provides. You just need guidance on working with what is a powerful language on a pretty rough terrain where IE6 is still in the mix to a significant degree. Meanwhile the terrain over IE7 and FF2 is not all that bad.</p>
<p>The newest book to be released is <a href="http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/ref=nosim/smallscom-20">JavaScript: The Good Parts</a> (170 pages) by <a href="http://www.crockford.com/">Douglas Crockford</a> who is the lead JavaScript Architect at Yahoo. He knows all about the bad parts and in this book, which I ordered and just shipped a minute ago, covers the good parts that you can use that will allow you to create the kind of web site that will make your users ecstatic and win you more fun and interesting projects.</p>
<p>Last year I read <a href="http://www.amazon.com/Pro-JavaScript-Techniques-John-Resig/dp/1590597273/ref=nosim/smallscom-20">Pro JavaScript Techniques</a> by <a href="http://ejohn.org/">John Resig</a> who is the creator of the wildly popular JavaScript library <a href="http://jquery.com/">jQuery</a>. All of the books that I purchased just a few years back, covering advanced topics like DHTML (a term that makes my eyes roll), were using horrible syntax which did not allow for building advanced sites due various problems that are easily overcome with techniques explained in Pro JavaScript Techniques. You will learn about scoping, namespacing, inheritance and how to handle cross-browser issues.</p>
<p>Later this year a new book by John Resig called <a href="http://jsninja.com/">Secrets of the JavaScript Ninja</a> will be published. The book is made up of topics suggested by the community through his blog which were not covered in depth in his first book or any other book out there. I am extremely anxious to get my hands on this book. Resig has an uncanny talent when it comes to JavaScript and reading his last book was an eye opener for me and I expect to learn a great deal more with this next book.</p>
<p>It is an important year for JavaScript. With competing technologies like Flash, Adobe AIR and Silverlight fighting for market share it is necessary for JavaScript to keep pace and it is not standing still. Soon the standard for JavaScript 2 will be nailed down and features like the <a href="http://en.wikipedia.org/wiki/Canvas_(HTML_element)">Canvas in HTML5</a> and <a href="http://en.wikipedia.org/wiki/Svg">SVG</a> will offer major competition to the proprietary alternatives. Now is a good time to retrain yourself on JavaScript. I strongly suggest you pick up these books.</p>
]]></content:encoded>
			<wfw:commentRss>http://brennan.offwhite.net/blog/2008/05/12/recommended-books-on-javascript/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Writing Better Code and Formatting Tip</title>
		<link>http://brennan.offwhite.net/blog/2008/05/06/writing-better-code-and-formatting-tip/</link>
		<comments>http://brennan.offwhite.net/blog/2008/05/06/writing-better-code-and-formatting-tip/#comments</comments>
		<pubDate>Tue, 06 May 2008 16:20:22 +0000</pubDate>
		<dc:creator>Brennan Stehling</dc:creator>
		
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://brennan.offwhite.net/blog/2008/05/06/writing-better-code-and-formatting-tip/</guid>
		<description><![CDATA[Sometimes when I work with other developers I inevitably find that all of the code looks different. Some developers like to write really compact code, as if we were still working on cartridges when disk space for the source code really mattered. Some developers also firmly believe that fewer lines of code in C# means [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes when I work with other developers I inevitably find that all of the code looks different. Some developers like to write really compact code, as if we were still working on cartridges when disk space for the source code really mattered. Some developers also firmly believe that fewer lines of code in C# means it will somehow run faster because doing 5 things on a single unreadable line of code will somehow run in a single instruction in compiled code versus carefully expanded and readable code that performs the same 5 actions. I am not a fan of compact code. I prefer readable and verbose code with the occasional comment to help explain a bit of code that implements some strange business logic that was defined in the specifications but is not obvious from looking at the code.</p>
<p><span id="more-532"></span></p>
<p>Some developers will argue, and rightfully so, that inline comments should be few. Well written code can and should be self documenting. A method that is 500 lines long that carries out 30 actions with complex business logic is not readable. When that code is refactored into several methods averaging less than 30 lines of code each with accurately named method names the code suddenly becomes readable and self documenting. It also happens to become more reusable for the methods that contain logic that can be useful from other methods or other classes.</p>
<p>Once the code is broken up into understandable pieces I then like to have it formatted consistently. I do not want the "personality" of each developer on the team to come through in their code, just like I want every page on MSDN to show code in a format that I am accustom to seeing. I do not want to see clever indentation style that only one developer understands or various naming conventions for variables, methods and events. And I do not want to see opening and closing brackets to be formatted differently. I want the entire code base to appear as if a single developer had written the entire application. </p>
<p>In chapter 4 of <a href="http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/ref=nosim/smallscom-20">The Mythical Man Month</a> there is a note on architecture that I have often thought about when reviewing code that is inconsistent:</p>
<blockquote><p>
Most European cathedrals show differences in plan or architectural style between parts built in different generations by different builders. The later builders were tempted to "improve" upon the designs of the earlier ones, to reflect both the changes in fashion and the differences in individual tastes. So the peaceful Norman transept abuts and contradicts the soaring Gothic nave, and the result proclaims the pridefulness of the builders as much as the glory of God.
</p></blockquote>
<p>The chapter goes on to explain one cathedral, <a href="http://en.wikipedia.org/wiki/Notre-Dame_de_Reims">Reims</a>, which was built over the course of 8 generations of builders who maintained a consistent design from start to finish. The integrity of the structure built with the consistent design is breathtaking to visitors who can see the consistency throughout the structure. The design also serves the structural needs of the cathedral beyond just the aesthetics. In software design the aesthetics of code the users will never see is not a driving force behind development, but ease of maintenance of that code to fix bugs or add new features is facilitated by a design that is consistent to the point that it reduces the learning curve for a developer jumping onto a project they have not worked on before. For projects that constantly implement new ideas throughout the life of a project there is a continual mismatch on what the developer can assume should work as they expect.  As a result more mistakes are made or the time to complete the project without mistakes increases.</p>
<p>When writing code I follow a few personal rules:</p>
<ol>
<li>Assume I will not be the only developer working on this code now and in the future</li>
<li>Use the C# default settings for indentations and brackets in Visual Studio</li>
<li>Follow the <a href="http://www.idesign.net/idesign/download/IDesign%20CSharp%20Coding%20Standard.zip">C# Coding Standard</a> defined by <a href="http://www.idesign.net/">IDesign.NET</a> (with limited exceptions)</li>
</ol>
<p>After following these simple rules I still find I need to reformat code. You can start by pressing <code>Ctrl+E, D</code> for the whole document or <code>Ctrl+E, F</code> for the selected region. When you format code with these key sequences it will help clear up extra whitespace at the end of lines after the semicolon and fix indentations, but it will not correct opening and closing brackets. By default the C# settings in Visual Studio cause the opening and closing brackets for code blocks to be on separate lines. Entering the closing bracket and pressing enter will actually move the opening bracket to the line in the case of a method or property definition. Moving the opening bracket has been useful to me but manually reformatting a file that is not structured this way is not adjusted by the key sequence mentioned here. Instead you can cut the entire code file and paste it back in place and that action will adjust all of the opening and closing brackets with your default C# settings. It is a very quick way to make all of the code in a project appear consistently.</p>
<p>Beyond this tip, I have considered using the <a href="http://www.dotnetkicks.com/visualstudio/Code_Style_Enforcer">Code Style Enforcer</a> which was built with the C# Coding Standard in mind. When I have worked with developers who have used this tool before there were issues with it slowing down Visual Studio to the point it was not worthwhile. It would also raise many false warnings in perfectly valid code. One example is underscores in method names which are common in automatically generated event handlers in ASP.NET code.</p>
<p>I have not tried the Code Style Enforcer lately. Perhaps the performance is acceptable now, although at times I find Visual Studio 2008 has performance problems enough out of the box, even with the <a href="http://weblogs.asp.net/scottgu/archive/2008/02/08/vs-2008-web-development-hot-fix-roll-up-available.aspx">hot fix</a>. For now I will just stick to my default C# settings and cut/paste code to achieve an acceptable level of consistency with minimal effort.</p>
]]></content:encoded>
			<wfw:commentRss>http://brennan.offwhite.net/blog/2008/05/06/writing-better-code-and-formatting-tip/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ASP.NET: Fixing a Bug in the MS AJAX Client-Side</title>
		<link>http://brennan.offwhite.net/blog/2008/05/02/aspnet-fixing-a-bug-in-the-ms-ajax-client-side/</link>
		<comments>http://brennan.offwhite.net/blog/2008/05/02/aspnet-fixing-a-bug-in-the-ms-ajax-client-side/#comments</comments>
		<pubDate>Fri, 02 May 2008 19:17:27 +0000</pubDate>
		<dc:creator>Brennan Stehling</dc:creator>
		
		<category><![CDATA[ajax]]></category>

		<category><![CDATA[asp.net]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://brennan.offwhite.net/blog/2008/05/02/aspnet-fixing-a-bug-in-the-ms-ajax-client-side/</guid>
		<description><![CDATA[I discovered a problem with the ASP.NET AJAX Client-Side library. It seems it was trying to access a property on a variable when the variable was not defined. The difficult part of the problem was that the function that was being called is a part of a series of events that are bound to various [...]]]></description>
			<content:encoded><![CDATA[<p>I discovered a problem with the ASP.NET AJAX Client-Side library. It seems it was trying to access a property on a variable when the variable was not defined. The difficult part of the problem was that the function that was being called is a part of a series of events that are bound to various elements on the page automatically. I am unaware of what it is doing exactly or how to prevent it so fixing it was a challenge. Fundamentally the function was working like this...</p>
<pre class="code">
<form><textarea name="code" class="js">
function exampleFunction(a,b,c)
{
  if (a.disabled)
  {
    // do something
  }
}
</textarea></form>
</pre>
<p>Because the <code>a</code> parameter was passed in as undefined from a function that my custom code did not call I could not simply fix it on my end. I needed a way to first check if the <code>a</code> value was defined before it attempts to access the <code>disabled</code> property on it. Since JavaScript is a dynamic language I can redefine and remap functions very easily. I dug into the JavaScript in the MS AJAX Client-Side library and found the context for the function and wrapped it with my own function that checks if the given parameter is defined. If the value is defined I call the original function.</p>
<p>The code below is my fix. The <code>_onFormElementActive</code> function which is defined in <code>Sys.WebForms</code> is the function that was causing me trouble. This code first saves the existing function to a local reference and then reassigns a new function to that name within the prototype. Then within that function I name the function with <code>FIXED</code> at the end the name so that it can be called within the context of the object instance. The original function needed to access <code>this</code> with the right context which is why that is necessary. Then I can simply check the value of <code>a</code> and call the fixed function with the same parameters.</p>
<pre class="code">
<form><textarea name="code" class="js">
var $$_onFormElementActive = Sys.WebForms.PageRequestManager.prototype._onFormElementActive;
Sys.WebForms.PageRequestManager.prototype._onFormElementActive = function(a,c,d)
{
    this._onFormElementActiveFIXED = $$_onFormElementActive;
    if (a !== undefined)
    {
        this._onFormElementActiveFIXED(a,c,d);
    }
};
</textarea></form>
</pre>
<p>The beauty of this code and this solution is how JavaScript works. I can safely redefine an existing function, wrapping it with my own code, and still call the previous function easily. And even if the object instance for this class was already defined this adjustment will still take place because this change not only affects all instances created in the future, but all pre-existing instances.</p>
<p>Next I hope to get in touch with the ASP.NET AJAX team and let them know about this particular problem. Ultimately they may just need to code to read <code>if (a &#038;& a.disabled)</code> and the bug would be corrected. I also want to know how this problem came up. This web site was working fine for a couple of weeks before this started to happen. And curiously enough, it only affects IE7 and not IE6 or FF2.</p>
]]></content:encoded>
			<wfw:commentRss>http://brennan.offwhite.net/blog/2008/05/02/aspnet-fixing-a-bug-in-the-ms-ajax-client-side/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ASP.NET: Clearing All Items in the Cache</title>
		<link>http://brennan.offwhite.net/blog/2008/03/28/aspnet-clearing-all-items-in-the-cache/</link>
		<comments>http://brennan.offwhite.net/blog/2008/03/28/aspnet-clearing-all-items-in-the-cache/#comments</comments>
		<pubDate>Fri, 28 Mar 2008 19:50:03 +0000</pubDate>
		<dc:creator>Brennan Stehling</dc:creator>
		
		<category><![CDATA[asp.net]]></category>

		<category><![CDATA[database]]></category>

		<guid isPermaLink="false">http://brennan.offwhite.net/blog/2008/03/28/aspnet-clearing-all-items-in-the-cache/</guid>
		<description><![CDATA[I wanted to give the QA team a way to clear the items in the cache during their testing so I justed added a button to the main QA test page with a button that runs the following code. I actually ripped this code from my book, Pro ASP.NET for SQL Server.


using System.Runtime.CompilerServices;
using System.Web;
using System.Web.Caching;

// [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to give the QA team a way to clear the items in the cache during their testing so I justed added a button to the main QA test page with a button that runs the following code. I actually ripped this code from my book, <a href="http://www.smallsharptools.com/apress/">Pro ASP.NET for SQL Server</a>.</p>
<pre class="code">
<form><textarea name="code" class="c#">
using System.Runtime.CompilerServices;
using System.Web;
using System.Web.Caching;

// ...

[MethodImpl(MethodImplOptions.Synchronized)]
public void ClearCache()
{
    Cache cache = HttpRuntime.Cache;
    List<string> keys = new List<string>();
    foreach (DictionaryEntry entry in cache)
    {
        keys.Add((string)entry.Key);
    }
    foreach (string key in keys)
    {
        cache.Remove(key);
    }
}
</textarea></form>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://brennan.offwhite.net/blog/2008/03/28/aspnet-clearing-all-items-in-the-cache/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Consumer Unions for Cheaper Mobile Phone Bills</title>
		<link>http://brennan.offwhite.net/blog/2008/03/27/consumer-unions-for-cheaper-mobile-phone-bills/</link>
		<comments>http://brennan.offwhite.net/blog/2008/03/27/consumer-unions-for-cheaper-mobile-phone-bills/#comments</comments>
		<pubDate>Thu, 27 Mar 2008 23:38:11 +0000</pubDate>
		<dc:creator>Brennan Stehling</dc:creator>
		
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://brennan.offwhite.net/blog/2008/03/27/consumer-unions-for-cheaper-mobile-phone-bills/</guid>
		<description><![CDATA[Mobile phone plans really suck. Yesterday I saw a commercial for Sprint with their new CEO and he stated that he is going to change things up. Their offer seems to be $99 for unlimited everything. I can get unlimited web, GPS, txt and voice for a fixed monthly fee like I do with cable [...]]]></description>
			<content:encoded><![CDATA[<p>Mobile phone plans really suck. Yesterday I saw a commercial for Sprint with their new CEO and he stated that he is going to change things up. Their offer seems to be <a href="http://www.Sprint.com/Everything">$99 for unlimited everything</a>. I can get unlimited web, GPS, txt and voice for a fixed monthly fee like I do with cable TV and internet. It is an obvious solution. More people have phones than any other electronic device. Every adult and nearly every high school and college student has one and are paying much more than a typical cable bill. Yet it is not uncommon to go over your minutes and get hit with more than $200 in over charges. I have seen it a few times over the last couple of years and I do not like it.</p>
<p>So I am wondering, is there such a thing as a consumer union where consumers combine together to collectively bargain with the mobile phone providers? If I wanted unlimited web, GPS, txt and voice for $60 and I had 1,000 people who are willing to sign up for a 2 year contract for that deal is it reasonably possible to make a deal with the big mobile phone companies?</p>
<p>I live in a condo and this past year we signed a contract with Time Warner to get a half off deal for basic plus movie and sports channels for 2 years. We have less than 200 people living here so if 200 people can make such a negotiation happen, it should be possible for a group of 1,000 to sign a contract to get an unlimited usage deal for a great price.</p>
]]></content:encoded>
			<wfw:commentRss>http://brennan.offwhite.net/blog/2008/03/27/consumer-unions-for-cheaper-mobile-phone-bills/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JavaScript Therapy</title>
		<link>http://brennan.offwhite.net/blog/2008/03/23/javascript-therapy/</link>
		<comments>http://brennan.offwhite.net/blog/2008/03/23/javascript-therapy/#comments</comments>
		<pubDate>Sun, 23 Mar 2008 19:44:45 +0000</pubDate>
		<dc:creator>Brennan Stehling</dc:creator>
		
		<category><![CDATA[ajax]]></category>

		<category><![CDATA[asp.net]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://brennan.offwhite.net/blog/2008/03/23/javascript-therapy/</guid>
		<description><![CDATA[Our relationship with JavaScript has been turbulent these past 10 years. In the early days there was so much promise as both the Netscape and Internet Explorer teams worked feverishly to add new features to the browsers and coined the term DHTML. It was an exciting time, for a while at least. Then the fact [...]]]></description>
			<content:encoded><![CDATA[<p>Our relationship with JavaScript has been turbulent these past 10 years. In the early days there was so much promise as both the Netscape and Internet Explorer teams worked feverishly to add new features to the browsers and coined the term DHTML. It was an exciting time, for a while at least. Then the fact that features did not work reliably or even across the two dominant browsers started to sink in and the polish on this shiny new thing started to wear off. Yet we still persisted in trying to find ways to make it work, only to be slapped in the face over and over again.</p>
<p>One strategy I followed was to focus only on Netscape 4 for certain functionality and I would spend hours trying to nail down my new script, thinking I had the syntax right, alt-tab, F5... and then see inexplicable behavior happen. I naively thought that the Netscape 4 engine for JavaScript was bulletproof and I was wrong. I did not realize until a few years later, after ignoring JavaScript during that period, that the syntax I was using was completely valid. It was just the browser misinterpreting my code.</p>
<p>Starting just a few years back I started to see JavaScript becoming useful again. The combination of Google producing web applications like Google Mail and the <a href="http://joehewitt.com/software/firebug/">Firebug</a> extension for Firefox caused me to reconsider JavaScript one more time. What Google created excited me about what JavaScript could do for my web applications and Firebug offered support for making it happen by exposing what was happening inside the browser.</p>
<p>Gradually as I re-educated myself on JavaScript I picked up techniques to write JavaScript more efficiently and reliably while also making it work across a broader selection of browsers than were available in 1998. And a major push forward was the rising popularity of JavaScript libraries (<a href="http://jquery.com/">jQuery</a>, <a href="http://www.prototypejs.org/">Prototype</a>, <a href="http://developer.yahoo.com/yui/">YUI</a> and <a href="http://www.google.com/search?q=JavaScript+library">many others</a> has made it nearly trivial to add advanced client-side behavior to web applications that works across all of the major modern browsers. After learning a bit about the available JavaScript libraries I read <a href="http://www.amazon.com/gp/product/1590597273/ref=nosim/smallscom-20">Pro Javascript Techniques</a> by <a href="http://ejohn.org/">John Resig</a> which opened my eyes on how much more powerful JavaScript can be. Later I watched a video of a presentation that Resig made for Yahoo! on Advancing JavaScript with Libraries (<a href="http://video.yahoo.com/video/play?vid=410472">Part I</a>, <a href="http://video.yahoo.com/video/play?vid=412541">Part II</a>). His book is excellent and these videos compliment it very well. </p>
<p>With my efforts to re-educate myself about JavaScript the last few years I feel I have a good relationship with JavaScript. This re-education has been like therapy for this troubled relationship with a once flawed technology. Each time I talk with someone about web development they seem surprised or even shocked that I would be so willing to jump head first into attempting complex functionality with JavaScript. It seems there is a lot more "JavaScript Therapy" that needs to happen. People have not forgotten the bad old days and letting go of that negative experience has been hard for most web developers. I have come to accept the fact that in order to produce rich web applications that I have to leverage JavaScript along with everything I know about HTML and CSS. These three technologies can do amazing things together and as the browser makers compete to produce faster, more stable and more standards compliant browsers these capabilities will only improve.</p>
<p>In the coming weeks I will be writing about what I have learned about modern JavaScript, especially with ASP.NET. In the meantime, if you are interested in JavaScript I strongly suggest reading Resig's book, watching those videos and exploring the tools referenced in <a href="http://brennan.offwhite.net/blog/2007/04/02/web-development-tools-for-the-power-developer-revised/">Web Development Tools for the Power Developer</a>. Later you can check back here for more on JavaScript techniques.</p>
]]></content:encoded>
			<wfw:commentRss>http://brennan.offwhite.net/blog/2008/03/23/javascript-therapy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Shared Content Across Sites with ASP.NET User Controls and JavaScript</title>
		<link>http://brennan.offwhite.net/blog/2008/03/15/shared-content-across-sites-with-aspnet-user-controls-and-javascript/</link>
		<comments>http://brennan.offwhite.net/blog/2008/03/15/shared-content-across-sites-with-aspnet-user-controls-and-javascript/#comments</comments>
		<pubDate>Sat, 15 Mar 2008 23:50:59 +0000</pubDate>
		<dc:creator>Brennan Stehling</dc:creator>
		
		<category><![CDATA[ajax]]></category>

		<category><![CDATA[asp.net]]></category>

		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://brennan.offwhite.net/blog/2008/03/15/shared-content-across-sites-with-aspnet-user-controls-and-javascript/</guid>
		<description><![CDATA[Rendering a User Control in ASP.NET using a web service or a generic handler is easy. Taking the string that is generated with a User Control and then serializing it to be embedded in JavaScript is also easy. Both combine to what you will need to create custom ads that are exactly like how Google [...]]]></description>
			<content:encoded><![CDATA[<p>Rendering a User Control in ASP.NET using a web service or a generic handler is easy. Taking the string that is generated with a User Control and then serializing it to be embedded in JavaScript is also easy. Both combine to what you will need to create custom ads that are exactly like how Google Ads are served. This technique can also be used to share a common piece of markup across many web sites. As the central web site is updated so are all sites that reference it.</p>
<p>The first method below will render a User Control to a string. The second method will serialize that string for use with JavaScript as a JSON value. The value can then be included in a dynamically generated script for use from remote sites.  I had some early troubles with the <code>DataContractJsonSerializer</code> which replaces the deprecated <code>JavaScriptSerializer</code> but eventually I got the following code to work reliably. Previously I created something similar but without User Controls a while back for the local .NET User Group to show <a href="http://ineta.offwhite.net/">banners for upcoming meetings</a>.</p>
<pre class="code">
<form><textarea name="code" class="c#">
using System.Runtime.Serialization.Json;

private string GetUserControlMarkup(string controlUrl)
{
  // sample url: ~/Controls/SharedCalendar.ascx
  StringBuilder sb = new StringBuilder();
  Control ctrl = new Page().LoadControl(controlUrl);
  if (ctrl != null)
  {
    StringWriter sw = new StringWriter(sb);
    HtmlTextWriter tw = new HtmlTextWriter(sw);
    ctrl.DataBind();
    ctrl.RenderControl(tw);
  }
  return sb.ToString();
}

private string Serialize(string str)
{
  DataContractJsonSerializer serializer =
    new DataContractJsonSerializer(typeof(string));
  MemoryStream ms = new MemoryStream();
  serializer.WriteObject(ms, str);
  return Encoding.UTF8.GetString(ms.ToArray()).Trim();
}
</textarea></form>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://brennan.offwhite.net/blog/2008/03/15/shared-content-across-sites-with-aspnet-user-controls-and-javascript/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Find me on Twitter</title>
		<link>http://brennan.offwhite.net/blog/2008/03/15/find-me-on-twitter/</link>
		<comments>http://brennan.offwhite.net/blog/2008/03/15/find-me-on-twitter/#comments</comments>
		<pubDate>Sat, 15 Mar 2008 16:35:24 +0000</pubDate>
		<dc:creator>Brennan Stehling</dc:creator>
		
		<category><![CDATA[tech]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://brennan.offwhite.net/blog/2008/03/15/find-me-on-twitter/</guid>
		<description><![CDATA[I just create my Twitter account. Twitter has come up in discussions at work and with several friends who are using it. Nobody really has a good sense of what it really is or how to use it. I think it is broadcast IM or micro blogging. I am not sure how I will find [...]]]></description>
			<content:encoded><![CDATA[<p>I just create <a href="http://twitter.com/offwhitemke">my Twitter account</a>. Twitter has come up in discussions at work and with several friends who are using it. Nobody really has a good sense of what it really is or how to use it. I think it is broadcast IM or micro blogging. I am not sure how I will find it useful, but I have avoided it because it is just another potential distraction from the work I should be doing. Here are the things I plan on twittering about...</p>
<ul>
<li>Links to good articles or blog entries</li>
<li>Links to my new blog entries or articles</li>
<li>The artist and title of a really good song I am listening to at the moment</li>
<li>Random thoughts while I work at my computer, likely related to software development</li>
<li>Questions on a problem I am currently trying to solve</li>
</ul>
<p>And through these twitterings, or tweets as some call them, I hope to get some interactions going with people who are interested in and working on the same topics. My current primary interests are building dynamic web interfaces using ASP.NET AJAX and <a href="http://www.jquery.com/">jQuery</a> and extending Visual Studio 2008 to assist with creating those interfaces. In the work that I do we often do very quick projects (2 to 3 months) and doing the setup for a new web site to support the client-side functionality that I now do typically is a bit of work. My self-training on the topic of modern AJAX UI was done with the <a href="http://www.smallsharptools.com/Kvetch/">Kvetch Reborn</a> project which actually has some features in common with Twitter. The <a href="http://www.smallsharptools.com/Downloads/Kvetch.zip">source</a> for it is available for <a href="http://www.smallsharptools.com/Downloads/Kvetch.zip">download</a>. I have used what I have learned for Microsoft ASP.NET AJAX and <a href="http://www.jquery.com/">jQuery</a> to assemble that application which has rich client-side functionality with direct integration with the server-side on a single page. I have more to do in automating the setup work for creating such projects, including completing the baseline features for the <a href="http://brennan.offwhite.net/blog/2008/02/25/javascript-browser-a-work-in-progress/">JavaScript Browser</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://brennan.offwhite.net/blog/2008/03/15/find-me-on-twitter/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Book on Visual Studio Extensibility</title>
		<link>http://brennan.offwhite.net/blog/2008/03/13/new-book-on-visual-studio-extensibility/</link>
		<comments>http://brennan.offwhite.net/blog/2008/03/13/new-book-on-visual-studio-extensibility/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 03:46:00 +0000</pubDate>
		<dc:creator>Brennan Stehling</dc:creator>
		
		<category><![CDATA[software]]></category>

		<category><![CDATA[vsx]]></category>

		<guid isPermaLink="false">http://brennan.offwhite.net/blog/2008/03/13/new-book-on-visual-studio-extensibility/</guid>
		<description><![CDATA[ Professional Visual Studio Extensibility (VSX) by Keyvan Nayyeri has been released. This book covers pretty much everything you will want to know about extending Visual Studio. I received several copies of the book which I will be sharing with the local .NET User Groups at our coming conference, Deeper in .NET.
The primary topics you [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://brennan.offwhite.net/blog/wp-content/uploads/2008/03/vsxbook.jpg' alt='Book on VSX' class="outline" style="float: right;" /> <a href="http://www.amazon.com/gp/product/0470230843/ref=nosim/smallscom-20">Professional Visual Studio Extensibility</a> (VSX) by <a href="http://nayyeri.net/">Keyvan Nayyeri</a> has been released. This book covers pretty much everything you will want to know about extending Visual Studio. I received several copies of the book which I will be sharing with the local .NET User Groups at our coming conference, <a href="http://www.wi-ineta.org/didn">Deeper in .NET</a>.</p>
<p>The primary topics you will want to learn about VSX are how to create an add-in or a package and deploy it to Visual Studio. These topics are covered extensively but the book also goes into other modern topics like domain specific languages (DSL) which are enabling very powerful applications. A good example of what you can do with DSLs is <a href="http://www.codeplex.com/DslFactoryUtilities">DSLFactory Utilities</a>.</p>
<p>I have not had a chance to read much, but at a glance I cannot see anything that is missing. What I really want to know is how to traverse solutions, projects and project items and then manipulate them so I can add generated files to projects transparently. These details appear to be covered in depth. After reading about nightmares in doing VSX I have actually found that it is not as bad as I thought it would be. I created custom tools and a VSPackage before these books arrived but that work was difficult as I had to dig through a great deal of documentation on <a href="http://msdn.microsoft.com/vsx">MSDN</a> that was not always complete or even accurate for the latest version of Visual Studio. This book is focused on Visual Studio 2008 which will definitely save me a lot of time and effort.</p>
<p>What I have learned I have presented to the Milwaukee and Madison .NET User Groups. My <a href="http://brennan.offwhite.net/blog/2008/03/10/recap-on-code-generation-and-visual-studio-extensibility-presentation/">presentation in Madison</a> covered working with Visual Studio 2008 and while I covered how to create and deploy a custom VSPackage I still have many questions that I hope this book will answer. I will write up a review once I have had a chance to go through the book.</p>
]]></content:encoded>
			<wfw:commentRss>http://brennan.offwhite.net/blog/2008/03/13/new-book-on-visual-studio-extensibility/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Recap on Code Generation and Visual Studio Extensibility Presentation</title>
		<link>http://brennan.offwhite.net/blog/2008/03/10/recap-on-code-generation-and-visual-studio-extensibility-presentation/</link>
		<comments>http://brennan.offwhite.net/blog/2008/03/10/recap-on-code-generation-and-visual-studio-extensibility-presentation/#comments</comments>
		<pubDate>Mon, 10 Mar 2008 15:59:12 +0000</pubDate>
		<dc:creator>Brennan Stehling</dc:creator>
		
		<category><![CDATA[codegen]]></category>

		<category><![CDATA[vsx]]></category>

		<guid isPermaLink="false">http://brennan.offwhite.net/blog/2008/03/10/recap-on-code-generation-and-visual-studio-extensibility-presentation/</guid>
		<description><![CDATA[It has been a busy few days for me since I gave the presentation in Madison so this post has been delayed. The code for the demo is available with the following link. There is a lot in there and if you have any questions feel free to drop me an email or post a [...]]]></description>
			<content:encoded><![CDATA[<p>It has been a busy few days for me since I gave the presentation in <a href="http://www.madisondotnet.org/">Madison</a> so this post has been delayed. The code for the demo is available with the following link. There is a lot in there and if you have any questions feel free to <a href="http://www.smallsharptools.com/Contact.aspx">drop me an email</a> or post a comment here. In the coming weeks I will be posting additional details and tutorials on specific aspects of code generation and VSX. </p>
<p>[ <a href="http://www.smallsharptools.com/Downloads/SmallSharpTools.VSX.zip">Code Download</a> ]</p>
<p>As I mentioned in the presentation, there was one piece of documentation that really helped me get my Visual Studio Package to deploy using the Package Load Key so that I could publicly deploy the extension package. It is called <a href="http://msdn2.microsoft.com/en-us/library/bb187332(VS.80).aspx">Managed Package Registration</a> and it is followed by <a href="http://msdn2.microsoft.com/en-us/library/bb187327(VS.80).aspx">Creating an Installer</a>. The critical detail that is missing from this documentation is that the <code>RegPkg.exe</code> utility generates nearly every key that you want to import into your deployment project but the <code>CodeBase</code> value. See the deployment project in the code download for how to set the <code>CodeBase</code> value.</p>
<p>To get a jump start on VSX you can also read the <a href="http://www.code-magazine.com/focus/vsx/">CoDe Focus issue on VSX</a>. It is available as a <a href="http://www.code-magazine.com/Milos_DocumentManagement_DownloadFileAttachment.aspx?id=7bbfeccf-6167-4912-9c64-a0d984c524d4">PDF</a> and it will help you get past most issues with getting started with VSX. There is also a <a href="http://blogs.msdn.com/jameslau/archive/2008/02/05/upcoming-book-on-vsx.aspx">book coming out on VSX</a> from Wrox publishing. The book is not out yet but you can <a href="http://www.amazon.com/gp/product/0470230843/ref=nosim/smallscom-20">pre-order it on Amazon</a>. I would like to thank Wrox for providing us with free books to give away at the Wednesday meeting.</p>
<p>One tool that I was using during the presentation was <a href="http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=df3f0c30-3d37-4e06-9ef8-3bff3508be31">PowerCommands for Visual Studio 2008</a> which were released at the end of February. It adds several useful commands to Visual Studio 2008 that some people noticed during the presentation. The source code is available as well so you can learn a lot by digging through the code.</p>
<p>Read on for more links...</p>
<p><font style="position: absolute;overflow: hidden;height: 0;width: 0"><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=1" title="buy viagra">buy viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=2" title="buy viagra online">buy viagra online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=3" title="viagra online">viagra online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=4" title="discount viagra">discount viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=5" title="order viagra">order viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=6" title="cheap viagra">cheap viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=7" title="generic viagra">generic viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=8" title="generica viagra">generica viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=9" title="viagra buy">viagra buy</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=10" title="viagra price">viagra price</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=11" title="order viagra online">order viagra online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=12" title="viagra generic">viagra generic</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=13" title="viagra pill">viagra pill</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=14" title="where buy viagra">where buy viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=15" title="buy viagra cheap">buy viagra cheap</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=16" title="viagra order">viagra order</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=17" title="get viagra">get viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=18" title="buy online viagra">buy online viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=19" title="online viagra">online viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=20" title="viagra sale online">viagra sale online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=21" title="where to buy viagra">where to buy viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=22" title="cheapest viagra">cheapest viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=23" title="purchase viagra">purchase viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=24" title="cheap viagra online">cheap viagra online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=25" title="viagra buy online">viagra buy online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=26" title="buying viagra">buying viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=27" title="buy viagra on">buy viagra on</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=28" title="generic viagra canada">generic viagra canada</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=29" title="prescription viagra">prescription viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=30" title="buy viagra norway">buy viagra norway</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=31" title="generic viagra pack">generic viagra pack</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=32" title="buy viagra in nevada">buy viagra in nevada</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=33" title="buy viagra now online">buy viagra now online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=34" title="viagra online buy">viagra online buy</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=35" title="find viagra online">find viagra online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=36" title="buy cheap viagra online">buy cheap viagra online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=37" title="cheap generic viagra">cheap generic viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=38" title="buy cheap viagra">buy cheap viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=39" title="generic viagra online">generic viagra online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=40" title="viagra sale">viagra sale</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=41" title="generic viagra cheap">generic viagra cheap</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=42" title="buy viagra on line">buy viagra on line</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=43" title="where buy generic viagra">where buy generic viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=44" title="viagra online bestellen">viagra online bestellen</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=45" title="viagra prescription online">viagra prescription online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=46" title="generic online viagra">generic online viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=47" title="low price viagra">low price viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=48" title="cheapest viagra price">cheapest viagra price</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=49" title="buy generic viagra">buy generic viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=50" title="viagra uk">viagra uk</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=51" title="viagra online prescription">viagra online prescription</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=52" title="cheap est viagra">cheap est viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=53" title="viagra soft tab">viagra soft tab</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=54" title="viagra discount">viagra discount</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=55" title="viagra cheap">viagra cheap</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=56" title="where to buy viagra on line">where to buy viagra on line</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=57" title="buying viagra online">buying viagra online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=58" title="buy viagra now">buy viagra now</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=59" title="purchase viagra online">purchase viagra online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=60" title="viagra pharmacy">viagra pharmacy</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=61" title="natural viagra">natural viagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=62" title="buy viagra in canada">buy viagra in canada</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=63" title="viagra paypal">viagra paypal</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=64" title="viagra on line">viagra on line</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=65" title="viagra 100mg">viagra 100mg</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=66" title="viagra without prescription">viagra without prescription</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=67" title="cheapest place to buy viagra online">cheapest place to buy viagra online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=68" title="generic Cialis">generic Cialis</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=69" title="buy cialis">buy cialis</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=70" title="buy cialis online">buy cialis online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=71" title="cialis online">cialis online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=72" title="online cialis">online cialis</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=73" title="order cialis">order cialis</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=74" title="cheap cialis">cheap cialis</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=75" title="discount Cialis">discount Cialis</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=76" title="generic cialis price">generic cialis price</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=77" title="cialis prescription">cialis prescription</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=78" title="buy cialis generic">buy cialis generic</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=79" title="cialis online discount">cialis online discount</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=80" title="cheapest cialis">cheapest cialis</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=81" title="buy discount cialis">buy discount cialis</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=82" title="purchase cheap cialis online">purchase cheap cialis online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=83" title="order cialis online">order cialis online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=84" title="cialis for sale">cialis for sale</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=85" title="cialis price">cialis price</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=86" title="purchase cialis">purchase cialis</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=87" title="cialis online pharmacy">cialis online pharmacy</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=88" title="buy Cheap Cialis">buy Cheap Cialis</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=89" title="cialis story">cialis story</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=90" title="generic cialis online">generic cialis online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=91" title="best cialis price">best cialis price</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=92" title="cheapest cialis generic">cheapest cialis generic</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=93" title="order generic cialis">order generic cialis</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=94" title="low cost cialis">low cost cialis</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=95" title="buy cialis generic online">buy cialis generic online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=96" title="levitra">levitra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=97" title="buy levitra">buy levitra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=98" title="cheap levitra">cheap levitra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=99" title="levitra online">levitra online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=100" title="buy levitra online">buy levitra online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=101" title="order levitra">order levitra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=102" title="order levitra online">order levitra online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=103" title="cialis levitra">cialis levitra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=104" title="generic levitra">generic levitra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=105" title="online levitra">online levitra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=106" title="buy cheap levitra">buy cheap levitra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=107" title="discount levitra">discount levitra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=108" title="levitra sale">levitra sale</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=109" title="buy generic levitra">buy generic levitra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=110" title="levitra online pharmacy">levitra online pharmacy</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=111" title="levitra price">levitra price</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=112" title="purchase levitra">purchase levitra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=113" title="cheap levitra online">cheap levitra online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=114" title="levitra story">levitra story</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=115" title="levitra on line">levitra on line</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=116" title="levitra prescription">levitra prescription</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=117" title="levitra cheap">levitra cheap</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=118" title="best price for levitra">best price for levitra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=119" title="buy xanax">buy xanax</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=120" title="buy phentermine">buy phentermine</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=121" title="buy lasix">buy lasix</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=122" title="tramadol">tramadol</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=123" title="buy tramadol">buy tramadol</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=124" title="buy tramadol online">buy tramadol online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=125" title="tramadol online">tramadol online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=126" title="cheap tramadol">cheap tramadol</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=127" title="order tramadol">order tramadol</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=128" title="tramadol hcl">tramadol hcl</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=129" title="ultram tramadol">ultram tramadol</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=130" title="tramadol prescription">tramadol prescription</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=131" title="online tramadol">online tramadol</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=132" title="tramadol sale">tramadol sale</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=133" title="purchase tramadol">purchase tramadol</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=134" title="buy cheap tramadol">buy cheap tramadol</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=135" title="order tramadol online">order tramadol online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=136" title="overnight tramadol">overnight tramadol</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=137" title="tramadol cheap">tramadol cheap</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=138" title="tramadol pharmacy">tramadol pharmacy</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=139" title="discount tramadol">discount tramadol</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=140" title="tramadol hydrochloride">tramadol hydrochloride</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=141" title="tramadol 50mg">tramadol 50mg</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=142" title="cheap tramadol online">cheap tramadol online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=143" title="generic tramadol">generic tramadol</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=144" title="buy clomid">buy clomid</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=145" title="buy prozac">buy prozac</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=146" title="buy cipro">buy cipro</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=147" title="buy diflucan">buy diflucan</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=148" title="buy acomplia">buy acomplia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=149" title="buy lexapro">buy lexapro</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=150" title="buy flagyl">buy flagyl</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=151" title="buy propecia">buy propecia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=152" title="order propecia">order propecia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=153" title="cheap propecia">cheap propecia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=154" title="propecia online">propecia online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=155" title="order propecia online">order propecia online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=156" title="buy propecia online">buy propecia online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=157" title="generic propecia">generic propecia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=158" title="compare propecia">compare propecia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=159" title="propecia without prescription">propecia without prescription</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=160" title="propecia prescription">propecia prescription</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=161" title="propecia pill">propecia pill</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=162" title="discount propecia">discount propecia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=163" title="online propecia">online propecia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=164" title="cheapest propecia">cheapest propecia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=165" title="get propecia">get propecia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=166" title="propecia order">propecia order</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=167" title="propecia price">propecia price</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=168" title="propecia uk">propecia uk</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=169" title="propecia cost">propecia cost</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=170" title="propecia sale">propecia sale</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=171" title="purchase propecia">purchase propecia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=172" title="buy cheap propecia">buy cheap propecia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=173" title="propecia sale online">propecia sale online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=174" title="buy online propecia">buy online propecia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=175" title="online pharmacy propecia">online pharmacy propecia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=176" title="online prescription propecia">online prescription propecia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=177" title="buy generic propecia">buy generic propecia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=178" title="buying propecia">buying propecia</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=179" title="buy propecia now">buy propecia now</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=180" title="buy fosamax">buy fosamax</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=181" title="buy kamagra">buy kamagra</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=182" title="buy clomid online">buy clomid online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=183" title="buy prozac online">buy prozac online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=184" title="buy cipro online">buy cipro online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=185" title="buy diflucan online">buy diflucan online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=186" title="buy acomplia online">buy acomplia online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=187" title="buy lexapro online">buy lexapro online</a><br />
<a href="http://www.groundworkopensource.com/wiki/images/?menu=188" title="buy flagyl online">buy flagyl online</a><br />
</font><span id="more-523"></span></p>
<h3>Templated Code Generation</h3>
<ul>
<li><a href="http://code.msdn.microsoft.com/TTxGen">TTxGen - text templating engine</a></li>
<li><a href="http://davidhayden.com/blog/dave/archive/2007/10/19/T4EditorCoolVisualStudioEditorT4TemplatesSoftwareFactories.aspx">T4 Editor</a></li>
<li><a href="http://subsonicproject.com/">SubSonic</a></li>
<li><a href="http://steelbluesolutions.com/Summary/CodeBreeze/">CodeBreeze</a></li>
<li><a href="http://www.codesmithtools.com/">CodeSmith</a></li>
<li><a href="http://www.codeproject.com/csharp/smarttemplateengine.asp">Write your own Code Generator or Template Engine in .NET</a></li>
</ul>
<h3>CodeDom</h3>
<ul>
<li><a href="http://www.codeplex.com/CodeDomPatterns">.NET Zen CodeDom Patterns</a></li>
<li><a href="http://www.codeproject.com/cs/design/codedompatterns.asp">Commonly Used .NET Coding Patterns in CodeDom</a></li>
<li><a href="http://www.15seconds.com/issue/020917.htm">15 Seconds : Microsoft .NET CodeDom Technology</a></li>
<li><a href="http://www.ondotnet.com/pub/a/dotnet/2003/02/03/codedom.html">Using the CodeDom</a></li>
<li><a href="http://www.codeproject.com/useritems/DynamicCodeGeneration.asp?df=100">Dynamic Code Generation using CodeDOM</a></li>
<li><a href="http://www.codeproject.com/vb/net/DotNetCompilerArticle.asp">Compiling .NET code on-the-fly</a> (must read)</li>
</ul>
<h3>Software Factories</h3>
<ul>
<li><a href="http://msdn.microsoft.com/servicefactory/">Web Service Software Factory: Modeling Edition</a></li>
<li><a href="http://www.codeplex.com/websf">Web Client Software Factory</a></li>
<li><a href="http://www.codeplex.com/smartclient">Smart Client Software Factory</a></li>
<li><a href="http://www.codeplex.com/DslFactoryUtilities">DSL Factory Utilities</a></li>
<li><a href="http://www.codeplex.com/Project/ProjectDirectory.aspx?TagName=Software%20Factory">Software Factories on CodePlex</a></li>
</ul>
<h3>Visual Studio Extensibility</h3>
<ul>
<li><a href="http://www.code-magazine.com/focus/vsx/">CoDe Focus issue on VSX</a></li>
<li><a href="http://blogs.msdn.com/vsxteam/">VSX Team Blog</a></li>
<li><a href="http://www.code-magazine.com/articleprint.aspx?quickid=0710052">Visual Studio SDK Tips and Tricks</a></li>
<li><a href="http://www.clariusconsulting.net/blogs/pga/archive/2007/07/03/28234.aspx">The real type behind a System.__ComObject</a></li>
<li><a href="http://www.mztools.com/resources_vsnet_addins.aspx">Resources about Visual Studio .NET extensibility</a></li>
<li><a href="http://msdn2.microsoft.com/en-us/teamsystem/aa718948.aspx">Guidance Automation Extensions and Guidance Automation Toolkit</a></li>
<li><a href="http://msdn2.microsoft.com/en-us/library/xc52cke4(VS.80).aspx">Automation and Extensibility for Visual Studio</a></li>
</ul>
<h3>Video</h3>
<ul>
<li><a href="http://msdn2.microsoft.com/en-us/vstudio/bb507746.aspx">"How Do I?" Videos for Visual Studio Extensibility</a></li>
<li><a href="http://www.pnpguidance.net/Screencasts.aspx">P&#038;P Guidance Screencasts</a></li>
<li><a href="http://www.dnrtv.com/default.aspx?showNum=102">Kathleen Dollard on Code Generation in .NET</a></li>
<li><a href="http://www.dnrtv.com/default.aspx?showNum=77">Miguel Castro on CodeBreeze</a></li>
<li><a href="http://subsonicproject.com/view/1---creating-your-own-code-gen-templates.aspx">Customizing SubSonic Templates</a></li>
<li><a href="http://vssdk.com/">VS SDK</a></li>
</ul>
<p>If you have any other links that you feel are useful, please add them below in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://brennan.offwhite.net/blog/2008/03/10/recap-on-code-generation-and-visual-studio-extensibility-presentation/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
