<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>Perfect Storm</title><link>http://perfectstorm.codeplex.com/Project/ProjectRss.aspx</link><description>Perfect Storm started life as a code generation utility.      It now includes workflow utilities.      It requires .NET 3.0 to be installed.    </description><item><title>Source code checked in, #22759</title><link>http://perfectstorm.codeplex.com/SourceControl/ListDownloadableCommits.aspx</link><description>.</description><author>chriseyre2000</author><pubDate>Tue, 31 Mar 2009 20:14:51 GMT</pubDate><guid isPermaLink="false">Source code checked in, #22759 20090331081451P</guid></item><item><title>Updated Wiki: Home</title><link>http://perfectstorm.codeplex.com/Wiki/View.aspx?title=Home&amp;version=16</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Perfect Storm started life as a code generation utility.&lt;br /&gt;&lt;br /&gt;It now includes workflow utilities.&lt;br /&gt;&lt;br /&gt;It requires .NET 3.0 to be installed. &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;PerfectStorm.CodeGen&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=Design%20Philosophy&amp;amp;referringTitle=Home"&gt;Design Philosophy&lt;/a&gt;  &lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=XML%20as%20a%20Domain%20Specific%20Language&amp;amp;referringTitle=Home"&gt;XML as a Domain Specific Language&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;This is a one stop code generation utility.&lt;br /&gt;It permits model driven development leaving the user in total control.&lt;br /&gt; &lt;br /&gt;Now includes the ability for the user to define their own &lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=Transformation%20Filters&amp;amp;referringTitle=Home"&gt;Transformation Filters&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;The initial utility has the following syntax:&lt;br /&gt; &lt;br /&gt;CodeGen model transform target [name value]*&lt;br /&gt; &lt;br /&gt;This can be used to create a batch file which when run against the model document can be used to generate whatever source you want.&lt;br /&gt;Look in the demo folder for an example.&lt;br /&gt; &lt;br /&gt;The transform is an xslt document.&lt;br /&gt; &lt;br /&gt;Since the transforms and the model are entirely customizable by the user this can be used to create almost anything. &lt;br /&gt; &lt;br /&gt;This project was inspired by &lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=Code%20Generation%20in%20Microsoft.NET&amp;amp;referringTitle=Home"&gt;Code Generation in Microsoft.NET&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;The application now includes a small suite of xslt &lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=Functions&amp;amp;referringTitle=Home"&gt;Functions&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;There are a number of &lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=demo%20projects&amp;amp;referringTitle=Home"&gt;demo projects&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;Here is a quick &lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=xslt%20tutorial&amp;amp;referringTitle=Home"&gt;xslt tutorial&lt;/a&gt;.  I am not claiming to be an expert, but I can read xslt.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;I would love to get feedback on this project - ideas for expansion, contributed samples, success stories (or otherwise).&lt;/b&gt;&lt;br /&gt;All contributions will be credited.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=About%20Version%20Numbers&amp;amp;referringTitle=Home"&gt;About Version Numbers&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=Things%20I%20Have%20Generated&amp;amp;referringTitle=Home"&gt;Things I Have Generated&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;PerfectStorm.Rules&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;I have taken to experimenting with the rules engine from the WF framework. This is a place for me to keep the rules engine parts.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Mon, 23 Mar 2009 21:02:21 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090323090221P</guid></item><item><title>Source code checked in, #15333</title><link>http://www.codeplex.com/PerfectStorm/SourceControl/ListDownloadableCommits.aspx</link><description>Added useful filter plugin implementations.</description><author>chriseyre2000</author><pubDate>Mon, 01 Sep 2008 17:31:59 GMT</pubDate><guid isPermaLink="false">Source code checked in, #15333 20080901053159P</guid></item><item><title>Source code checked in, #15332</title><link>http://www.codeplex.com/PerfectStorm/SourceControl/ListDownloadableCommits.aspx</link><description>Split out helper methods.</description><author>chriseyre2000</author><pubDate>Mon, 01 Sep 2008 17:29:29 GMT</pubDate><guid isPermaLink="false">Source code checked in, #15332 20080901052929P</guid></item><item><title>Source code checked in, #15331</title><link>http://www.codeplex.com/PerfectStorm/SourceControl/ListDownloadableCommits.aspx</link><description>Documented the before transform.</description><author>chriseyre2000</author><pubDate>Mon, 01 Sep 2008 17:27:05 GMT</pubDate><guid isPermaLink="false">Source code checked in, #15331 20080901052705P</guid></item><item><title>Source code checked in, #15330</title><link>http://www.codeplex.com/PerfectStorm/SourceControl/ListDownloadableCommits.aspx</link><description>Plugins now have identity - you can have multiple instances with different parameters.</description><author>chriseyre2000</author><pubDate>Mon, 01 Sep 2008 17:25:47 GMT</pubDate><guid isPermaLink="false">Source code checked in, #15330 20080901052547P</guid></item><item><title>Source code checked in, #15329</title><link>http://www.codeplex.com/PerfectStorm/SourceControl/ListDownloadableCommits.aspx</link><description>Move code to libraries.</description><author>chriseyre2000</author><pubDate>Mon, 01 Sep 2008 17:21:04 GMT</pubDate><guid isPermaLink="false">Source code checked in, #15329 20080901052104P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Home&amp;version=15</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Perfect Storm is a code generation utility.&lt;br /&gt;&lt;br /&gt;It requires .NET 2.0 to be installed. This also works with Mono.&lt;br /&gt;It is written in C&amp;#35;, but that should not prevent it from being used to generate anything &amp;#40;it can make raw text files and xml - what else do you need&amp;#63;&amp;#41;.
&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Design%20Philosophy&amp;amp;referringTitle=Home"&gt;Design Philosophy&lt;/a&gt;  &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=XML%20as%20a%20Domain%20Specific%20Language&amp;amp;referringTitle=Home"&gt;XML as a Domain Specific Language&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;This is a one stop code generation utility.&lt;br /&gt;It permits model driven development leaving the user in total control.&lt;br /&gt; &lt;br /&gt;Now includes the ability for the user to define their own &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Transformation%20Filters&amp;amp;referringTitle=Home"&gt;Transformation Filters&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;The initial utility has the following syntax:&lt;br /&gt; &lt;br /&gt;CodeGen model transform target [name value]*&lt;br /&gt; &lt;br /&gt;This can be used to create a batch file which when run against the model document can be used to generate whatever source you want.&lt;br /&gt;Look in the demo folder for an example.&lt;br /&gt; &lt;br /&gt;The transform is an xslt document.&lt;br /&gt; &lt;br /&gt;Since the transforms and the model are entirely customizable by the user this can be used to create almost anything. &lt;br /&gt; &lt;br /&gt;This project was inspired by &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Code%20Generation%20in%20Microsoft.NET&amp;amp;referringTitle=Home"&gt;Code Generation in Microsoft.NET&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;The application now includes a small suite of xslt &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Functions&amp;amp;referringTitle=Home"&gt;Functions&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;There are a number of &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=demo%20projects&amp;amp;referringTitle=Home"&gt;demo projects&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;Here is a quick &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=xslt%20tutorial&amp;amp;referringTitle=Home"&gt;xslt tutorial&lt;/a&gt;.  I am not claiming to be an expert, but I can read xslt.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;I would love to get feedback on this project - ideas for expansion, contributed samples, success stories (or otherwise).&lt;/b&gt;&lt;br /&gt;All contributions will be credited.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=About%20Version%20Numbers&amp;amp;referringTitle=Home"&gt;About Version Numbers&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Things%20I%20Have%20Generated&amp;amp;referringTitle=Home"&gt;Things I Have Generated&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;This project will not be updated during September as I am getting married. Updates will resume when I am back from my Honeymoon&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Sat, 30 Aug 2008 10:01:31 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080830100131A</guid></item><item><title>Updated Wiki: Things I Have Generated</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Things I Have Generated&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Things I Have Generated
&lt;/h1&gt; &lt;br /&gt;In addition to being the developer of this project I am also a user of it.&lt;br /&gt; &lt;br /&gt;Here are a list of the items that I have generated:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Sharepoint Content Type and Field defintions (as feature.xml)&lt;/li&gt;&lt;li&gt;Table creation scripts&lt;/li&gt;&lt;li&gt;Index creation scripts&lt;/li&gt;&lt;li&gt;Trigger creation scripts&lt;/li&gt;&lt;li&gt;Monorail Model components&lt;/li&gt;&lt;li&gt;Monorail Controller components&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;The real benefit of this is that you can create a whole project worth of identically structured files.&lt;br /&gt;Any improvements that you think of will be applied everywhere.&lt;br /&gt;You end up with very consistent code and the business analysts can keep changing their minds and you are not driven to distraction!&lt;br /&gt; &lt;br /&gt;The only catch I have found is getting the whitespace to work properly.  The trick is to use  &amp;lt;xsl:value-of select=&amp;quot;' '&amp;quot;/&amp;gt;  between consectutive xslt tags where you want a space.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 21:11:31 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Things I Have Generated 20080820091131P</guid></item><item><title>Updated Wiki: Things I Have Generated</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Things I Have Generated&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
!Things I Have Generated&lt;br /&gt; &lt;br /&gt;In addition to being the developer of this project I am also a user of it.&lt;br /&gt; &lt;br /&gt;Here are a list of the items that I have generated:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Sharepoint Content Type and Field defintions (as feature.xml)&lt;/li&gt;&lt;li&gt;Table creation scripts&lt;/li&gt;&lt;li&gt;Index creation scripts&lt;/li&gt;&lt;li&gt;Trigger creation scripts&lt;/li&gt;&lt;li&gt;Monorail Model components&lt;/li&gt;&lt;li&gt;Monorail Controller components&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;The real benefit of this is that you can create a whole project worth of identically structured files.&lt;br /&gt;Any improvements that you think of will be applied everywhere.&lt;br /&gt;You end up with very consistent code and the business analysts can keep changing their minds and you are not driven to distraction!&lt;br /&gt; &lt;br /&gt;The only catch I have found is getting the whitespace to work properly.  The trick is to use  &amp;lt;xsl:value-of select=&amp;quot;' '&amp;quot;/&amp;gt;  between consectutive xslt tags where you want a space.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 21:11:04 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Things I Have Generated 20080820091104P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Home&amp;version=14</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Perfect Storm is a code generation utility.&lt;br /&gt;&lt;br /&gt;It requires .NET 2.0 to be installed. This also works with Mono.&lt;br /&gt;It is written in C&amp;#35;, but that should not prevent it from being used to generate anything &amp;#40;it can make raw text files and xml - what else do you need&amp;#63;&amp;#41;.
&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Design%20Philosophy&amp;amp;referringTitle=Home"&gt;Design Philosophy&lt;/a&gt;  &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=XML%20as%20a%20Domain%20Specific%20Language&amp;amp;referringTitle=Home"&gt;XML as a Domain Specific Language&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;This is a one stop code generation utility.&lt;br /&gt;It permits model driven development leaving the user in total control.&lt;br /&gt; &lt;br /&gt;Now includes the ability for the user to define their own &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Transformation%20Filters&amp;amp;referringTitle=Home"&gt;Transformation Filters&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;The initial utility has the following syntax:&lt;br /&gt; &lt;br /&gt;CodeGen model transform target [name value]*&lt;br /&gt; &lt;br /&gt;This can be used to create a batch file which when run against the model document can be used to generate whatever source you want.&lt;br /&gt;Look in the demo folder for an example.&lt;br /&gt; &lt;br /&gt;The transform is an xslt document.&lt;br /&gt; &lt;br /&gt;Since the transforms and the model are entirely customizable by the user this can be used to create almost anything. &lt;br /&gt; &lt;br /&gt;This project was inspired by &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Code%20Generation%20in%20Microsoft.NET&amp;amp;referringTitle=Home"&gt;Code Generation in Microsoft.NET&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;The application now includes a small suite of xslt &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Functions&amp;amp;referringTitle=Home"&gt;Functions&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;There are a number of &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=demo%20projects&amp;amp;referringTitle=Home"&gt;demo projects&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;Here is a quick &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=xslt%20tutorial&amp;amp;referringTitle=Home"&gt;xslt tutorial&lt;/a&gt;.  I am not claiming to be an expert, but I can read xslt.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;I would love to get feedback on this project - ideas for expansion, contributed samples, success stories (or otherwise).&lt;/b&gt;&lt;br /&gt;All contributions will be credited.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=About%20Version%20Numbers&amp;amp;referringTitle=Home"&gt;About Version Numbers&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Things%20I%20Have%20Generated&amp;amp;referringTitle=Home"&gt;Things I Have Generated&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 21:03:59 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080820090359P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Home&amp;version=13</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Perfect Storm is a code generation utility.&lt;br /&gt;&lt;br /&gt;It requires .NET 2.0 to be installed. This also works with Mono.&lt;br /&gt;It is written in C&amp;#35;, but that should not prevent it from being used to generate anything &amp;#40;it can make raw text files and xml - what else do you need&amp;#63;&amp;#41;.
&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Design%20Philosophy&amp;amp;referringTitle=Home"&gt;Design Philosophy&lt;/a&gt;  &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=XML%20as%20a%20Domain%20Specific%20Language&amp;amp;referringTitle=Home"&gt;XML as a Domain Specific Language&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;This is a one stop code generation utility.&lt;br /&gt;It permits model driven development leaving the user in total control.&lt;br /&gt; &lt;br /&gt;Now includes the ability for the user to define their own &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Transformation%20Filters&amp;amp;referringTitle=Home"&gt;Transformation Filters&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;The initial utility has the following syntax:&lt;br /&gt; &lt;br /&gt;CodeGen model transform target [name value]*&lt;br /&gt; &lt;br /&gt;This can be used to create a batch file which when run against the model document can be used to generate whatever source you want.&lt;br /&gt;Look in the demo folder for an example.&lt;br /&gt; &lt;br /&gt;The transform is an xslt document.&lt;br /&gt; &lt;br /&gt;Since the transforms and the model are entirely customizable by the user this can be used to create almost anything. &lt;br /&gt; &lt;br /&gt;This project was inspired by &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Code%20Generation%20in%20Microsoft.NET&amp;amp;referringTitle=Home"&gt;Code Generation in Microsoft.NET&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;The application now includes a small suite of xslt &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Functions&amp;amp;referringTitle=Home"&gt;Functions&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;There are a number of &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=demo%20projects&amp;amp;referringTitle=Home"&gt;demo projects&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;Here is a quick &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=xslt%20tutorial&amp;amp;referringTitle=Home"&gt;xslt tutorial&lt;/a&gt;.  I am not claiming to be an expert, but I can read xslt.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;I would love to get feedback on this project - ideas for expansion, contributed samples, success stories (or otherwise).&lt;/b&gt;&lt;br /&gt;All contributions will be credited.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=About%20Version%20Numbers&amp;amp;referringTitle=Home"&gt;About Version Numbers&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 21:02:55 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080820090255P</guid></item><item><title>Updated Wiki: Code Generation in Microsoft.NET</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Code Generation in Microsoft.NET&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Code Generation in Microsoft.NET&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;by Kathleen Dollard&lt;br /&gt; &lt;br /&gt;This is the book that inspired the writing of this tool.&lt;br /&gt; &lt;br /&gt;The price of the book is worth it for the xslt tutorial chapters alone!&lt;br /&gt; &lt;br /&gt;The book describes a set of principles and techniques that can be used to develop code using code generation techniques.&lt;br /&gt;The book intended to provide the reader with the knowledge required to create their own code generation utility.&lt;br /&gt;However as the book provided a sample suite of generation tools to act as examples most discussions of the book treats it as an introduction to the supplied generation tools.&lt;br /&gt;I have taken the other approach and have created my own tool based upon the presented techniques.&lt;br /&gt; &lt;br /&gt;Here are the principles:&lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;You have control of the templates that generate your code and can change them as required.&lt;/li&gt;&lt;li&gt;Collect metadata as a separate, distinct step with usable output that can independently evolve.&lt;/li&gt;&lt;li&gt;You or someone unfamiliar with the project can regenerate your code precisely as a one click process - now or at any point in the future.&lt;/li&gt;&lt;li&gt;You embrace handcrafted code by isolation and protecting it. Code generation is a supporting player to human programming and doesn't overwrite files unless they were generated and haven't been edited.&lt;/li&gt;&lt;li&gt;The code generated application is a high quality application. It allows more effective testing, has equal or better performance and is more easily maintained than a similar fully handcrafted application.&lt;/li&gt;
&lt;/ol&gt; &lt;br /&gt;Currently Perfect Storm's CodeGen fails to acheive protection of handcrafted code  - but I intend to add this as a feature soon. &lt;br /&gt; &lt;br /&gt;Protection of handcrafted code can be implemented as a transform filter.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 21:00:11 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Code Generation in Microsoft.NET 20080820090011P</guid></item><item><title>New Post: Suggestions for improvements</title><link>http://www.codeplex.com/PerfectStorm/Thread/View.aspx?ThreadId=33945</link><description>&lt;div style="line-height: normal;"&gt;&lt;h3 style="color:rgb(0, 104, 28)"&gt;&lt;span&gt;Dmitri Nesteruk suggested that&amp;nbsp; I consider&amp;nbsp; XQuery as an alternative to&amp;nbsp; xslt. &lt;br&gt;
&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 20:57:44 GMT</pubDate><guid isPermaLink="false">New Post: Suggestions for improvements 20080820085744P</guid></item><item><title>Updated Wiki: Transformation Filters</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Transformation Filters&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
!Transformation Filters&lt;br /&gt; &lt;br /&gt;A transformation filter is a class that implements the ITransformFilter interface.&lt;br /&gt; &lt;br /&gt;It is registered by adding an entry in the app.config file under filters.&lt;br /&gt; &lt;br /&gt;The following is the definition of ITransformFilter:&lt;br /&gt; &lt;br /&gt;    public interface ITransformFilter&lt;br /&gt;    {&lt;br /&gt;        bool BeforeTransform(XmlDocument model, XmlDocument xslt, string outputFilename, Hashtable data, params string[] arguments); &lt;br /&gt; &lt;br /&gt;        MemoryStream AfterTransform(XmlDocument model, XmlDocument xslt, MemoryStream priorOutput, MemoryStream output, string outputFilename, Hashtable data, params string[] arguments);&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;&lt;b&gt;BeforeTransform&lt;/b&gt; is used to prevent the transformation taking place.  &lt;br /&gt;If any registered filter returns false from the BeforeTransform then the output will not be written.&lt;br /&gt;This allows specific files to be protected (effectively they can become write once) &lt;br /&gt;It is passed:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;the model file (as xml), &lt;/li&gt;&lt;li&gt;the transform file (as xml) &lt;/li&gt;&lt;li&gt;the name of the file to be created&lt;/li&gt;&lt;li&gt;A hashtable (intended to allow the filters to communicate with one another)&lt;/li&gt;&lt;li&gt;the command line parameters initially passed in&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;If it returns true then the filter permits the code generation to continue,&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AfterTransform&lt;/b&gt; is used to alter the output.  It can do anything to the output.&lt;br /&gt;If it does not return null then the returned memorystream is used in place of the output.&lt;br /&gt;It is passed:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;the model file (as xml), &lt;/li&gt;&lt;li&gt;the transform file (as xml) &lt;/li&gt;&lt;li&gt;the previous output as a memorystream (or null if it did not previously exist).&lt;/li&gt;&lt;li&gt;the current output.&lt;/li&gt;&lt;li&gt;A hashtable (intended to allow the filters to communicate with one another)&lt;/li&gt;&lt;li&gt;the command line parameters initially passed in&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;If it returns a non-null memory stream then this is used in place of the current memory stream.&lt;br /&gt; &lt;br /&gt;The minimal null transform would return true from the BeforeTransform and null from the AfterTransform.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 20:54:46 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Transformation Filters 20080820085446P</guid></item><item><title>Updated Wiki: Transformation Filters</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Transformation Filters&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
!Transformation Filters&lt;br /&gt; &lt;br /&gt;A transformation filter is a class that implements the ITransformFilter interface.&lt;br /&gt; &lt;br /&gt;It is registered by adding an entry in the app.config file under filters.&lt;br /&gt; &lt;br /&gt;The following is the definition of ITransformFilter:&lt;br /&gt; &lt;br /&gt;    public interface ITransformFilter&lt;br /&gt;    {&lt;br /&gt;        bool BeforeTransform(XmlDocument model, XmlDocument xslt, string outputFilename, Hashtable data, params string[] arguments); &lt;br /&gt; &lt;br /&gt;        MemoryStream AfterTransform(XmlDocument model, XmlDocument xslt, MemoryStream priorOutput, MemoryStream output, string outputFilename, Hashtable data, params string[] arguments);&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;&lt;b&gt;BeforeTransform&lt;/b&gt; is used to prevent the transformation taking place.  &lt;br /&gt;If any registered filter returns false from the BeforeTransform then the output will not be written.&lt;br /&gt;This allows specific files to be protected (effectively they can become write once) &lt;br /&gt;It is passed:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;the model file (as xml), &lt;/li&gt;&lt;li&gt;the transform file (as xml) &lt;/li&gt;&lt;li&gt;the name of the file to be created&lt;/li&gt;&lt;li&gt;A hashtable (intended to allow the filters to communicate with one another)&lt;/li&gt;&lt;li&gt;the command line parameters initially passed in&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;If it returns true then the filter permits the code generation to continue,&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AfterTransform&lt;/b&gt; is used to alter the output.  It can do anything to the output.&lt;br /&gt;If it does not return null then the returned memorystream is used in place of the output.&lt;br /&gt;It is passed:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;the model file (as xml), &lt;/li&gt;&lt;li&gt;the transform file (as xml) &lt;/li&gt;&lt;li&gt;the previous output as a memorystream (or null if it did not previously exist).&lt;/li&gt;&lt;li&gt;the current output.&lt;/li&gt;&lt;li&gt;A hashtable (intended to allow the filters to communicate with one another)&lt;/li&gt;&lt;li&gt;the command line parameters initially passed in&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;If it returns a non-null memory stream then this is used in place of the current memory stream.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 20:53:08 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Transformation Filters 20080820085308P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Home&amp;version=12</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Perfect Storm is a code generation utility.&lt;br /&gt;&lt;br /&gt;It requires .NET 2.0 to be installed. This also works with Mono.&lt;br /&gt;It is written in C&amp;#35;, but that should not prevent it from being used to generate anything &amp;#40;it can make raw text files and xml - what else do you need&amp;#63;&amp;#41;.
&lt;br /&gt; &lt;br /&gt;This is a one stop code generation utility.&lt;br /&gt;It permits model driven development leaving the user in total control.&lt;br /&gt; &lt;br /&gt;Now includes the ability for the user to define their own &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Transformation%20Filters&amp;amp;referringTitle=Home"&gt;Transformation Filters&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;The initial utility has the following syntax:&lt;br /&gt; &lt;br /&gt;CodeGen model transform target [name value]*&lt;br /&gt; &lt;br /&gt;This can be used to create a batch file which when run against the model document can be used to generate whatever source you want.&lt;br /&gt;Look in the demo folder for an example.&lt;br /&gt; &lt;br /&gt;The transform is an xslt document.&lt;br /&gt; &lt;br /&gt;Since the transforms and the model are entirely customizable by the user this can be used to create almost anything. &lt;br /&gt; &lt;br /&gt;This project was inspired by &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Code%20Generation%20in%20Microsoft.NET&amp;amp;referringTitle=Home"&gt;Code Generation in Microsoft.NET&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;The application now includes a small suite of xslt &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Functions&amp;amp;referringTitle=Home"&gt;Functions&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;There are a number of &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=demo%20projects&amp;amp;referringTitle=Home"&gt;demo projects&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;Here is a quick &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=xslt%20tutorial&amp;amp;referringTitle=Home"&gt;xslt tutorial&lt;/a&gt;.  I am not claiming to be an expert, but I can read xslt.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Design%20Philosophy&amp;amp;referringTitle=Home"&gt;Design Philosophy&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;I would love to get feedback on this project - ideas for expansion, contributed samples, success stories (or otherwise).&lt;/b&gt;&lt;br /&gt;All contributions will be credited.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=XML%20as%20a%20Domain%20Specific%20Language&amp;amp;referringTitle=Home"&gt;XML as a Domain Specific Language&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=About%20Version%20Numbers&amp;amp;referringTitle=Home"&gt;About Version Numbers&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 20:39:36 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080820083936P</guid></item><item><title>Closed Issue: Add a plugin framework for filters</title><link>http://www.codeplex.com/PerfectStorm/WorkItem/View.aspx?WorkItemId=2118</link><description>This should allow extensions to be added to CodeGen to allow the process to be customized.&lt;br /&gt;Filter Plugins may&amp;#58;&lt;br /&gt;&lt;br /&gt;Prevent the transform from happening for a specific file.&lt;br /&gt;Alter the transformed output &amp;#40;for example copy a version control header from an old file to the newly created one&amp;#41;.&lt;br /&gt;Comments: Implemented.</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 20:38:03 GMT</pubDate><guid isPermaLink="false">Closed Issue: Add a plugin framework for filters 20080820083803P</guid></item><item><title>Commented Issue: Add a plugin framework for filters</title><link>http://www.codeplex.com/PerfectStorm/WorkItem/View.aspx?WorkItemId=2118</link><description>This should allow extensions to be added to CodeGen to allow the process to be customized.&lt;br /&gt;Filter Plugins may&amp;#58;&lt;br /&gt;&lt;br /&gt;Prevent the transform from happening for a specific file.&lt;br /&gt;Alter the transformed output &amp;#40;for example copy a version control header from an old file to the newly created one&amp;#41;.&lt;br /&gt;Comments: ** Comment from web user: chriseyre2000 ** &lt;p&gt;Filters are now defined in the config file.&lt;/p&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 20:37:43 GMT</pubDate><guid isPermaLink="false">Commented Issue: Add a plugin framework for filters 20080820083743P</guid></item><item><title>Released: Release 1.0.1.0 (Aug 20, 2008)</title><link>http://www.codeplex.com/PerfectStorm/Release/ProjectReleases.aspx?ReleaseId=16480</link><description>&lt;div&gt;
This is the first release since the code has undergone a major restructure.&lt;br&gt;The main feature is the source is now covered by a small (but hopefully growing) suite of unit tests.&lt;br&gt;The driving force behind the restructure was to allow the code to be unit tested.&lt;br&gt;Along the way much of the functionality has been broken down into separate interfaces and made configurable.&lt;br&gt; &lt;br&gt;Oddly there is no new direct functionality, however I have provided a plugin infrastructure that I plan to explore and document.&lt;br&gt;It is now possible to replace the logger with your own implementation.&lt;br&gt;It is also possible to add transform filters to the system.&lt;br&gt;Filters can change the output after the transformation or prevent the transformation from happening for a given file.&lt;br&gt;The only current filter removes the unicode header.&lt;br&gt; &lt;br&gt;The app.config file has changed substantially and we now have a seperate dll with the guts of the processing.&lt;br&gt;
&lt;/div&gt;</description><author></author><pubDate>Wed, 20 Aug 2008 20:36:31 GMT</pubDate><guid isPermaLink="false">Released: Release 1.0.1.0 (Aug 20, 2008) 20080820083631P</guid></item></channel></rss>