<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://ehs-it.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Jean Hibbert&amp;#39;s Blog</title><subtitle type="html">.NET Framework, SQL Server and other random thoughts.</subtitle><id>http://ehs-it.net/blogs/jeanhibbert/atom.aspx</id><link rel="alternate" type="text/html" href="http://ehs-it.net/blogs/jeanhibbert/default.aspx" /><link rel="self" type="application/atom+xml" href="http://ehs-it.net/blogs/jeanhibbert/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20611.960">Community Server</generator><updated>2008-07-24T23:59:00Z</updated><entry><title>Write your own web server in less than 40 lines</title><link rel="alternate" type="text/html" href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/26/write-your-own-web-server-in-less-than-40-lines.aspx" /><id>http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/26/write-your-own-web-server-in-less-than-40-lines.aspx</id><published>2008-11-25T23:01:00Z</published><updated>2008-11-25T23:01:00Z</updated><content type="html">I&amp;#39;ve recently been toying with the System.Net.Sockets namespace... and this is how easy it is to write your own web server: using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO; using System.Net.Sockets; using System.Threading; namespace MyFirstWebServer { class Program { static void Main( string [] args) { TcpListener listener = new TcpListener ( IPAddress .Parse( &amp;quot;127.0.0.1&amp;quot; ), 8010); listener.Start(); TcpClient client = listener.AcceptTcpClient...(&lt;a href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/26/write-your-own-web-server-in-less-than-40-lines.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://ehs-it.net/aggbug.aspx?PostID=45" width="1" height="1"&gt;</content><author><name>jean</name><uri>http://ehs-it.net/members/jean.aspx</uri></author><category term=".Net Framework 2.0" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/.Net+Framework+2.0/default.aspx" /></entry><entry><title>Patterns and Practices Summit 2008 - Day 5</title><link rel="alternate" type="text/html" href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/08/patterns-and-practices-summit-2008-day-5.aspx" /><id>http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/08/patterns-and-practices-summit-2008-day-5.aspx</id><published>2008-11-07T23:11:00Z</published><updated>2008-11-07T23:11:00Z</updated><content type="html">1. John De Vos, David Hill &amp;amp; Ajoy Krishnamoorthy - P&amp;amp;P Looking ahead : These guys are the P&amp;amp;P architects and they wanted to know how we felt about the current set of Enterprise Library tools. They also did a bit of horn blowing by providing us with the general usage statistics for the Enterprise Library in the development community. I made a point of standing up and stressing the importance of having StarterKits for the different Ent Lib tools. I also stressed the importance of the Astoria...(&lt;a href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/08/patterns-and-practices-summit-2008-day-5.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://ehs-it.net/aggbug.aspx?PostID=36" width="1" height="1"&gt;</content><author><name>jean</name><uri>http://ehs-it.net/members/jean.aspx</uri></author><category term="Design Patterns" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/Design+Patterns/default.aspx" /><category term=".Net Framework 2.0" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/.Net+Framework+2.0/default.aspx" /><category term="P&amp;amp;P Summit 2008" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/P_2600_amp_3B00_P+Summit+2008/default.aspx" /></entry><entry><title>Patterns and Practices Summit 2008 - Day 4</title><link rel="alternate" type="text/html" href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/08/patterns-and-practices-summit-2008-day-4.aspx" /><id>http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/08/patterns-and-practices-summit-2008-day-4.aspx</id><published>2008-11-07T22:34:00Z</published><updated>2008-11-07T22:34:00Z</updated><content type="html">1. Keynote - David Treadwell: This talk focused on cloud computing and David gave a demonsration of the how a &amp;quot;mesh&amp;quot; application would work. 2. David Hill &amp;amp; Kyle Huntley - Composition and presentation patterns : What a brilliant talk! David and Kyle took us through a WPF/Silverlight applicaton where the only differentiation was the UI skin!!! He showed how by implementing this pattern a WPF application can be easily upgraded to a Silverlight application. The application leveraged the...(&lt;a href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/08/patterns-and-practices-summit-2008-day-4.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://ehs-it.net/aggbug.aspx?PostID=35" width="1" height="1"&gt;</content><author><name>jean</name><uri>http://ehs-it.net/members/jean.aspx</uri></author><category term="Design Patterns" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/Design+Patterns/default.aspx" /><category term=".Net Framework 2.0" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/.Net+Framework+2.0/default.aspx" /><category term="P&amp;amp;P Summit 2008" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/P_2600_amp_3B00_P+Summit+2008/default.aspx" /></entry><entry><title>Patterns and Practices Summit 2008 - Day 3</title><link rel="alternate" type="text/html" href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/07/patterns-and-practices-summit-2008-day-3.aspx" /><id>http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/07/patterns-and-practices-summit-2008-day-3.aspx</id><published>2008-11-06T16:04:00Z</published><updated>2008-11-06T16:04:00Z</updated><content type="html">1. Keynote - Pat Helland : Pat gave a brilliant speech on the energy consumption of data centers. He gave us insight into the setup of Microsofts data centers and the strategies Microsoft use to conserve energy and keep costs low. This was an unexpected subject, but Pat is somebody definitely worth keeping an eye on. 2. Data Access - Don Smith : Don gave us a talk and demonstration on the Entity framework. At the end of the session I had a chat with him and asked him what Microsoft is doing to facilitate...(&lt;a href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/07/patterns-and-practices-summit-2008-day-3.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://ehs-it.net/aggbug.aspx?PostID=34" width="1" height="1"&gt;</content><author><name>jean</name><uri>http://ehs-it.net/members/jean.aspx</uri></author><category term="Design Patterns" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/Design+Patterns/default.aspx" /><category term=".Net Framework 2.0" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/.Net+Framework+2.0/default.aspx" /><category term="P&amp;amp;P Summit 2008" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/P_2600_amp_3B00_P+Summit+2008/default.aspx" /></entry><entry><title>Patterns and Practices Summit 2008 - Day 2</title><link rel="alternate" type="text/html" href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/05/patterns-and-practices-summit-2008-day-2.aspx" /><id>http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/05/patterns-and-practices-summit-2008-day-2.aspx</id><published>2008-11-05T15:51:00Z</published><updated>2008-11-05T15:51:00Z</updated><content type="html">1. Keynote - Kent Beck : - This guy is the father of XP programming. The talk he gave was about the philosopy behind problem solving, and a few key techniques we can use to tackle problems. They were. a) Have the guts to make the LEAP sometimes. b) Somtimes its critical to SIMPLIFY c) Sometimes it&amp;#39;s usefull to REWRITE the system in paralell to maintaining the system. d) It&amp;#39;s always important to REFACTOR. 2. Architecture without big design - Peter Provost: This was an introduction into Architect...(&lt;a href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/05/patterns-and-practices-summit-2008-day-2.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://ehs-it.net/aggbug.aspx?PostID=33" width="1" height="1"&gt;</content><author><name>jean</name><uri>http://ehs-it.net/members/jean.aspx</uri></author><category term="Design Patterns" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/Design+Patterns/default.aspx" /><category term=".Net Framework 2.0" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/.Net+Framework+2.0/default.aspx" /><category term="P&amp;amp;P Summit 2008" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/P_2600_amp_3B00_P+Summit+2008/default.aspx" /></entry><entry><title>Patterns and Practices Summit 2008 - Day 1</title><link rel="alternate" type="text/html" href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/04/patterns-and-practices-summit-2008-day-1.aspx" /><id>http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/04/patterns-and-practices-summit-2008-day-1.aspx</id><published>2008-11-03T20:30:00Z</published><updated>2008-11-03T20:30:00Z</updated><content type="html">1. Keynot Jeff Teper - This guy did an overview of sharepoint and the future of the product. 2. Functional programming - Erik Meijer : I&amp;#39;ve been looking forward to this talk for a while. Erik M. is one of the architects that works with Anders H. Erik gave some brilliant insight into the evolution of programming languages and pointed us to a Language called Haskell which is a pure functional language and would be an ideal introduction into this sphere. A book we were advised to read : Graham Hutton...(&lt;a href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/04/patterns-and-practices-summit-2008-day-1.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://ehs-it.net/aggbug.aspx?PostID=32" width="1" height="1"&gt;</content><author><name>jean</name><uri>http://ehs-it.net/members/jean.aspx</uri></author><category term="Design Patterns" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/Design+Patterns/default.aspx" /><category term=".Net Framework 2.0" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/.Net+Framework+2.0/default.aspx" /><category term="P&amp;amp;P Summit 2008" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/P_2600_amp_3B00_P+Summit+2008/default.aspx" /></entry><entry><title>Seattle Day 1 - Sunday</title><link rel="alternate" type="text/html" href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/03/seattle-day-1-sunday.aspx" /><id>http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/03/seattle-day-1-sunday.aspx</id><published>2008-11-03T15:19:00Z</published><updated>2008-11-03T15:19:00Z</updated><content type="html">The jet lag was pretty rough.... I still find myself waking up at wierd hours of the night and checking the time. I also have a lot on my mind at the moment, and am looking forward to the conference which kicks off in 1 hour. This blog post is about yesterday though. I managed to watch the Seattle Seahawks play the Philidelphia Eagles, ... the &amp;quot;Battle of the Birds&amp;quot;. American football has always made more sense than rugby to me.You can tackle whoever the hell you please and you can throw...(&lt;a href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/03/seattle-day-1-sunday.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://ehs-it.net/aggbug.aspx?PostID=31" width="1" height="1"&gt;</content><author><name>jean</name><uri>http://ehs-it.net/members/jean.aspx</uri></author><category term="Daily Thoughts" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/Daily+Thoughts/default.aspx" /></entry><entry><title>Patterns &amp; Practices Summit 2008</title><link rel="alternate" type="text/html" href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/01/patterns-amp-practices-summit-2008.aspx" /><id>http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/01/patterns-amp-practices-summit-2008.aspx</id><published>2008-10-31T16:02:00Z</published><updated>2008-10-31T16:02:00Z</updated><content type="html">I will be attending the Patterns and Practices summit 2008, which starts next week. A list of speakers http://www.pnpsummit.com/west2008/west2008.aspx General topics http://www.pnpsummit.com/West2008/west2008sessions.aspx I attended the 2005 patterns and practices summit(the year before I joined m35) and found this conference extremely informative with regards to: 1) Gaining insight into the .Net Framework, and design patterns. 2) Learning about the Enterprise Library. 3) Learning about the new Infragistics...(&lt;a href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/11/01/patterns-amp-practices-summit-2008.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://ehs-it.net/aggbug.aspx?PostID=30" width="1" height="1"&gt;</content><author><name>jean</name><uri>http://ehs-it.net/members/jean.aspx</uri></author><category term="Design Patterns" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/Design+Patterns/default.aspx" /><category term="IT Project Management" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/IT+Project+Management/default.aspx" /><category term=".Net Framework 2.0" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/.Net+Framework+2.0/default.aspx" /></entry><entry><title>Top 10 Mixes of all time</title><link rel="alternate" type="text/html" href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/10/23/top-10-mixes-of-all-time.aspx" /><id>http://ehs-it.net/blogs/jeanhibbert/archive/2008/10/23/top-10-mixes-of-all-time.aspx</id><published>2008-10-22T20:35:00Z</published><updated>2008-10-22T20:35:00Z</updated><content type="html">&lt;p&gt;I thought I&amp;#39;d list my top 10 favourite house mixes of all time. I&amp;#39;ve been listening to to house, trance and hard house for a long time now so I generally have a good idea of what is going on out there... The good thing about house is that it&amp;#39;s always changing.&lt;/p&gt;&lt;p&gt;1) Renaissance - Singapore : Dave Seaman&lt;/p&gt;&lt;p&gt;2) Global underground - San Francisco : Sasha&lt;/p&gt;&lt;p&gt;3) Communicate : Sasha and John Digweed&lt;/p&gt;&lt;p&gt;4) Friendz boat party..podcast 004 - Wynand Delport (This is a surprise 4th place a good hard house mix that gets me through most weekends... available free from the &lt;a href="http://www.friendzclub.co.uk/podcasts.php" title="This rocks!"&gt;friendz&lt;/a&gt; website.)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;5) Renaissance - Desire : Dave Seaman&lt;/p&gt;&lt;p&gt;6) Global underground - Cape Town : Dave Seaman&lt;/p&gt;&lt;p&gt;7) Gareth Emery - &lt;a href="http://ehs-it.net/music/Gareth%20Emery%20EM%202008-01-12.mp3"&gt;Essential Mix Debut 2008&lt;/a&gt;&lt;/p&gt;&lt;p&gt;8) Armin van Buuren - &lt;a href="http://www.ehs-it.net/music/Armin%20Van%20Buuren%20EM%202006-12-24.mp3"&gt;Essential Mix 2006-12-24&lt;/a&gt;&lt;/p&gt;&lt;p&gt;9) Eddie Halliwel - The Residency : 2006-06-04&lt;/p&gt;&lt;p&gt;10) Matt Hardwick -&amp;nbsp; Gatecrasher : Resident Transmission&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp;Jean &lt;br /&gt;&lt;/p&gt;&lt;img src="http://ehs-it.net/aggbug.aspx?PostID=29" width="1" height="1"&gt;</content><author><name>jean</name><uri>http://ehs-it.net/members/jean.aspx</uri></author><category term="Music" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/Music/default.aspx" /></entry><entry><title>"Nice to have" VS "Must Have"</title><link rel="alternate" type="text/html" href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/09/24/curse-of-the-it-industry.aspx" /><id>http://ehs-it.net/blogs/jeanhibbert/archive/2008/09/24/curse-of-the-it-industry.aspx</id><published>2008-09-24T08:48:00Z</published><updated>2008-09-24T08:48:00Z</updated><content type="html">&lt;p&gt;Programmers enjoy writing code. As long as we are not under too much preassure, its always fun to add those features into the system that are &amp;quot;nice to have&amp;quot; rather than critical or &amp;quot;must have&amp;quot; features. We have become &amp;quot;Code Addicts&amp;quot;. By adding all these unessesary features it allows us to play with the technology and learn from our mistakes, even if it&amp;#39;s not at our own cost.&lt;/p&gt;&lt;p&gt;This is unfortunately a reality. I call to all developers there to fight their code addiction. When it gets to features, LESS IS ALWAYS MORE.&lt;/p&gt;&lt;p&gt;Try to find: &lt;br /&gt;&lt;/p&gt;&lt;p&gt;- The solution that involved the least amount of lines of code. &lt;/p&gt;&lt;p&gt;- The solution that leverages the technology in the way it is supposed to be leveraged.&lt;/p&gt;&lt;p&gt;- The soluton that results in a refactored whole. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Complexity results in the following:&lt;br /&gt;&lt;br /&gt;1. Longer time periods to train up support programmer who need to support the system.&lt;br /&gt;&lt;br /&gt;2. Greater likelihood that there are unforeseen functional bugs in the system.&lt;br /&gt;&lt;br /&gt;3. More time is required to fix and find bugs in complex systems.&lt;br /&gt;&lt;br /&gt;4. Non-technical staff (including management) becoming skeptical and negative towards the IT industry due to support issues.&lt;br /&gt;&lt;br /&gt;I&amp;#39;m not saying that there are not times when I complex problem requires a complex solution, but we must always strive to find the shortest path through the forest.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.dotnetmasters.com/"&gt;Billy Hollis&lt;/a&gt;, one of my heroes will be giving a talk at the &lt;a href="http://www.pnpsummit.com/West2008/West2008.aspx"&gt;2008 Patterns and Practices Summit in Seattle&lt;/a&gt; this year which I will be attending. The topic is &lt;a href="http://www.pnpsummit.com/West2008/west2008schedule.aspx"&gt;&amp;quot;Drowing in Complexity&amp;quot;&lt;/a&gt;. Seems like I&amp;#39;m not the only one aware of this problem! :-)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Jean &lt;br /&gt;&lt;/p&gt;&lt;img src="http://ehs-it.net/aggbug.aspx?PostID=28" width="1" height="1"&gt;</content><author><name>jean</name><uri>http://ehs-it.net/members/jean.aspx</uri></author><category term="Philosophy" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/Philosophy/default.aspx" /><category term="Daily Thoughts" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/Daily+Thoughts/default.aspx" /><category term="IT Project Management" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/IT+Project+Management/default.aspx" /></entry><entry><title>SubSonic vs Nettiers</title><link rel="alternate" type="text/html" href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/09/23/subsonic-vs-nettiers.aspx" /><id>http://ehs-it.net/blogs/jeanhibbert/archive/2008/09/23/subsonic-vs-nettiers.aspx</id><published>2008-09-22T20:52:00Z</published><updated>2008-09-22T20:52:00Z</updated><content type="html">&lt;p&gt;I&amp;#39;ve recently been working extensively with 2 ORMS. Subsonic and Nettiers. Both really good ORMS. My favourite though without a doubt is Subsonic written and designed by &lt;a href="http://blog.wekeroad.com/blog/microsoft-subsonic-and-me/" title="Rob Connery&amp;#39;s blog" target="_blank"&gt;Rob Connery&lt;/a&gt; who just coincidentally now works for the ASP.NET team at Microsoft.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Reasons I like Subsonic:&lt;/p&gt;&lt;p&gt;1. Its extremely lightweight. It creates stored procedure objects that return readers or datasets.&lt;/p&gt;&lt;p class="MsoNormal"&gt;eg.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Consolas;color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/span&gt;&lt;span style="font-size:8pt;font-family:Consolas;"&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt;
System.Data.&lt;span style="color:teal;"&gt;DataSet&lt;/span&gt;
GetItemTypesForClientTypeSysID(&lt;span style="color:blue;"&gt;int&lt;/span&gt;
clienttypesysid, &lt;span style="color:blue;"&gt;bool&lt;/span&gt; bIsBatch)&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Consolas;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Consolas;"&gt;&amp;nbsp;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:teal;"&gt;StoredProcedure&lt;/span&gt;
sp = &lt;span style="color:teal;"&gt;SPs&lt;/span&gt;.ProcSelectItemsForClientType(clienttypesysid,
bIsBatch);&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Consolas;"&gt;&amp;nbsp;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt;
sp.GetDataSet();&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Consolas;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;span style="font-size:8pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&amp;nbsp;&lt;p&gt;2. You can write queries in your code that can do most things including using the SQL where / ordering and only selecting specific columns.&lt;/p&gt;&lt;p class="MsoNormal"&gt;eg&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Consolas;color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/span&gt;&lt;span style="font-size:8pt;font-family:Consolas;"&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;int&lt;/span&gt;
GetClientTypeSysIDFromDesc(&lt;span style="color:blue;"&gt;string&lt;/span&gt;
clienttypedesc)&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Consolas;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Consolas;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Consolas;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;
tempID = 0;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Consolas;"&gt;&amp;nbsp;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:teal;"&gt;Query&lt;/span&gt;
query = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:teal;"&gt;Query&lt;/span&gt;(&lt;span style="color:teal;"&gt;TblClientType&lt;/span&gt;.Schema.TableName);&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Consolas;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;query.SelectList = &lt;span style="color:teal;"&gt;TblClientType&lt;/span&gt;.&lt;span style="color:teal;"&gt;Columns&lt;/span&gt;.Sysid;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Consolas;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;query.AddWhere(&lt;span style="color:teal;"&gt;TblClientType&lt;/span&gt;.&lt;span style="color:teal;"&gt;Columns&lt;/span&gt;.ClientTypeDesc, &lt;span style="color:teal;"&gt;Comparison&lt;/span&gt;.Equals,
clienttypedesc);&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Consolas;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;query.QueryType = &lt;span style="color:teal;"&gt;QueryType&lt;/span&gt;.Select;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Consolas;"&gt;&amp;nbsp;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;tempID = (&lt;span style="color:blue;"&gt;int&lt;/span&gt;)query.ExecuteScalar();&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Consolas;"&gt;&amp;nbsp;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt;
tempID;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Consolas;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;span style="font-size:8pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;3. Its rediculously easy to set up. You need 1) Download the subsonic libraries, 2) Run the install so that VS will pick it up, and then 3) make an update the config file&amp;#39;s of the projects which will be using the ORM. Obviously you need to reference the subsonic libraries also.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Reasons I like Nettiers.&lt;/p&gt;&lt;p&gt;1.&amp;nbsp; The &lt;a href="http://nettiers.com/Introduction.ashx#ServiceLayer_11"&gt;documentation&lt;/a&gt; is pretty good.&lt;/p&gt;&lt;p&gt;2. Setting up nettiers is also straight forward. 1) Download the templates Codesmith Templates, 2) BUY a copy of codesmith and generate the ORM layer.&lt;/p&gt;&lt;p&gt;The Nettiers templates are written by the author of codesmith.... This.... in my opinion is a sales stunt although any intermediate programmer should use codesmith anyway. It&amp;#39;s and awesome template based code generation tool.&lt;/p&gt;&lt;p&gt;3. You can perform DeepSave and DeepLoad actions where you are able to save and load object trees based on relational database mappings.&lt;/p&gt;&lt;p&gt;4. You are able to create a web services layer. With some tinkering you can expose this layer as a WCF service and thus create middle-tier DAL that is accessible using your protocol/security strategy (aka Binding) of choice.&lt;/p&gt;&lt;p&gt;5. Nettiers also has its own cuncurrency functionality built in assuming that all the database tables used to generate the ORM have a timestamp field.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;/u&gt; Nettiers does generate a lot of code though, and if you don&amp;#39;t use the custom TList collection object (which doesn&amp;#39;t lend itself well to databinding) you won&amp;#39;t be able to deepsave and deepload. Hopefully this will be fixed in later versions of nettiers.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Jean &lt;br /&gt;&lt;/p&gt;&lt;img src="http://ehs-it.net/aggbug.aspx?PostID=27" width="1" height="1"&gt;</content><author><name>jean</name><uri>http://ehs-it.net/members/jean.aspx</uri></author><category term="Open Source" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/Open+Source/default.aspx" /><category term="SQL" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/SQL/default.aspx" /><category term=".Net Framework 2.0" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/.Net+Framework+2.0/default.aspx" /></entry><entry><title>Passion</title><link rel="alternate" type="text/html" href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/09/20/my-passion.aspx" /><id>http://ehs-it.net/blogs/jeanhibbert/archive/2008/09/20/my-passion.aspx</id><published>2008-09-19T19:40:00Z</published><updated>2008-09-19T19:40:00Z</updated><content type="html">&lt;p&gt;Passion. It&amp;#39;s a double edged sword. It can be used to achieve your wildest dreams and goals or it can make one very self destructive. &lt;/p&gt;&lt;p&gt;Its that feeling you get in your chest when you listen to Beethoven&amp;#39;s 9th symphony and the vocals kick in. Its that feeling you get when you are hill training and your whole body is aching but you enjoy the pain... It&amp;#39;s the excitement that comes with channeling the stress at work into whatever you are doing.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;We should all do our best to find our passions and when we do never let the flame burn out.&lt;/p&gt;&lt;img src="http://ehs-it.net/aggbug.aspx?PostID=26" width="1" height="1"&gt;</content><author><name>jean</name><uri>http://ehs-it.net/members/jean.aspx</uri></author><category term="Daily Thoughts" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/Daily+Thoughts/default.aspx" /></entry><entry><title>Removing the Tool container from the Workflowview</title><link rel="alternate" type="text/html" href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/09/11/removing-the-tool-container-from-the-workflowview.aspx" /><link rel="enclosure" type="image/png" length="148539" href="http://ehs-it.net/blogs/jeanhibbert/attachment/25.ashx" /><id>http://ehs-it.net/blogs/jeanhibbert/archive/2008/09/11/removing-the-tool-container-from-the-workflowview.aspx</id><published>2008-09-10T17:37:00Z</published><updated>2008-09-10T17:37:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;I&amp;#39;ve just recently been asked to make a &amp;#39;minor&amp;#39; change to a customized version of the WorkflowView which forms part of the System.Workflow.ComponentModel.Design namespace.&lt;/p&gt;&lt;p&gt;The image below highlights the ToolContainer:&lt;/p&gt;&lt;p&gt;&lt;a href="http://ehs-it.net/blogs/jeanhibbert/ToolContainerinWorkflowview.png"&gt;&lt;img src="http://ehs-it.net/blogs/jeanhibbert/ToolContainerinWorkflowview.png" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;By investigating the WorkflowView object using reflector I discovered that there was an internal field called ShowToolContainter that is hard-coded to true. See below:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://ehs-it.net/blogs/jeanhibbert/workflowviewToolContainer.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;By using&amp;nbsp; reflection you can set this property to false!! Thus removing those irritating buttons.&lt;/p&gt;&lt;p&gt;&lt;a href="http://ehs-it.net/blogs/jeanhibbert/workflowviewToolContainer1.png"&gt;&lt;img src="http://ehs-it.net/blogs/jeanhibbert/workflowviewToolContainer1.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span id="PreviewBody"&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:teal;"&gt;Type&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; t = _workflowView.GetType();&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;////
Set the parent field.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span&gt;&lt;/span&gt;t.InvokeMember(&lt;span style="color:maroon;"&gt;&amp;quot;ShowToolContainer&amp;quot;&lt;/span&gt;, System.Reflection.&lt;span style="color:teal;"&gt;BindingFlags&lt;/span&gt;.NonPublic | System.Reflection.&lt;span style="color:teal;"&gt;BindingFlags&lt;/span&gt;.Instance | System.Reflection.&lt;span style="color:teal;"&gt;BindingFlags&lt;/span&gt;.SetProperty, &lt;span style="color:blue;"&gt;null&lt;/span&gt;,
_workflowView, &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:teal;"&gt;Object&lt;/span&gt;[]
{ &lt;span style="color:blue;"&gt;false&lt;/span&gt; });&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Where there is a will there is a way!! You can use this technique in future to set other internal properties which the framework does not expose. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Jean &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;br /&gt;&lt;/p&gt;&lt;img src="http://ehs-it.net/aggbug.aspx?PostID=25" width="1" height="1"&gt;</content><author><name>jean</name><uri>http://ehs-it.net/members/jean.aspx</uri></author><category term="Windows Work Flow" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/Windows+Work+Flow/default.aspx" /></entry><entry><title>Training regime - Mon - Friday</title><link rel="alternate" type="text/html" href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/08/05/training-regime-mon-friday.aspx" /><id>http://ehs-it.net/blogs/jeanhibbert/archive/2008/08/05/training-regime-mon-friday.aspx</id><published>2008-08-04T21:45:00Z</published><updated>2008-08-04T21:45:00Z</updated><content type="html">I&amp;#39;ve recently started a new training regime which has been really forcing me back into shape. One week of this regime and I could see a noticeable difference in my physique. Scary stuff.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;In addition to my normal diet I am taking in: &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;I drink 1 protein shake a day.&lt;br /&gt;&lt;br /&gt;8 glasses of water a day.&lt;br /&gt;&lt;br /&gt;3 cups of rooibos or green tea a day.&lt;br /&gt;&lt;br /&gt;2 Tins of Tuna OR 2 steaks OR 2 chicken breasts&lt;br /&gt;&lt;br /&gt;This diet is subject to change since I have minimal time to prepare food, and my trainer(Brent) will be revising this diet over the next few weeks.&lt;p&gt;You can download the training regime &lt;a href="http://www.ehs-it.net/downloads/Training_Routing_Mon-Fri.xls" title="Nasty training regime by Brent"&gt;here&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;img src="http://ehs-it.net/aggbug.aspx?PostID=24" width="1" height="1"&gt;</content><author><name>jean</name><uri>http://ehs-it.net/members/jean.aspx</uri></author><category term="Fitness" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/Fitness/default.aspx" /></entry><entry><title>Log4PostSharp : How to set it up</title><link rel="alternate" type="text/html" href="http://ehs-it.net/blogs/jeanhibbert/archive/2008/07/24/log4postsharp-how-to-set-it-up.aspx" /><id>http://ehs-it.net/blogs/jeanhibbert/archive/2008/07/24/log4postsharp-how-to-set-it-up.aspx</id><published>2008-07-24T14:59:00Z</published><updated>2008-07-24T14:59:00Z</updated><content type="html">&lt;p&gt;After an hour of banging my head against the wall and much dissapointment at the amount of documentation out there on such a usefull tool as Log4PostSharp I&amp;#39;ve decided that it would be a good idea to get off my lazy .... and write a short blog post on Log4PostSharp.&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;b&gt;Firstly let me give you a quick description of what Log4PostSharp is:&lt;/b&gt;&lt;/u&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Log4PostSharp is an Aspect-Oriented tool that allows you to log when a &lt;/p&gt;&lt;p&gt;1) method is entered&lt;/p&gt;&lt;p&gt;2) method is exited&lt;/p&gt;&lt;p&gt;3) when a method throws an exception&lt;/p&gt;&lt;p&gt;Methods that you would like to implement this logging functionality on, only have to be decorated by a Log attribute from the Log4PostSharp namespace.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Steps to set up An application to use Log4PostSharp&lt;/u&gt;&lt;/b&gt;:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1) Download the source code for the Log4Post sharp project from http://postsharp-user-plugins.googlecode.com/svn/trunk/Log4PostSharp/&lt;/p&gt;&lt;p&gt;2) Optionally you can compile the project in VS2008 - There is a \Libraries folder that contains all though if you are still stuck with VS 2005 (like the 95% of the working population :-) )&lt;/p&gt;&lt;p&gt;3) Download and install the PostSharp Aspect Oriented tool from http://www.postsharp.org/.&lt;/p&gt;&lt;p&gt;4) Copy Log4PostSharp.psplugin and Log4PostSharp.Weaver.dll from the Libraries folder in the Log4PostSharp project into the plugins folder created by the PostSharp installation which would normally be at C:\Program Files\PostSharp 1.0\PlugIns &lt;/p&gt;&lt;p&gt;5)&amp;nbsp; Then in your project: Add references to the following libraries : &lt;b&gt;log4net.dll&lt;/b&gt; (from the log4net project) + &lt;b&gt;log4PostSharp.dll&lt;/b&gt; (from the log4postsharp project) + &lt;b&gt;PostSharp.Public.dll&lt;/b&gt; (from the PostSharp project)&lt;/p&gt;&lt;p&gt;6)&amp;nbsp; Update your AssemblyInfo.cs file with:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;"&gt;[assembly: &lt;span style="color:teal;"&gt;Log&lt;/span&gt;(AttributeTargetTypes = &lt;span style="color:maroon;"&gt;&amp;quot;*&amp;quot;&lt;/span&gt;,
EntryLevel = &lt;span style="color:teal;"&gt;LogLevel&lt;/span&gt;.Debug, ExitLevel = &lt;span style="color:teal;"&gt;LogLevel&lt;/span&gt;.Debug, ExceptionLevel = &lt;span style="color:teal;"&gt;LogLevel&lt;/span&gt;.Error)]&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;"&gt;[assembly:
log4net.Config.&lt;span style="color:teal;"&gt;XmlConfigurator&lt;/span&gt;(ConfigFile = &lt;span style="color:maroon;"&gt;&amp;quot;Log4PostSharpTest.exe.log4net.config&amp;quot;&lt;/span&gt;,
Watch = &lt;span style="color:blue;"&gt;true&lt;/span&gt;)]&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;As you can see Log4PostSharpTest.exe.log4net.config is the name of the config file that will hold the log4net configuration settings.&amp;nbsp;&lt;/p&gt;&lt;p&gt;7) Create a configuration file Log4PostSharpTest.exe.log4net.config and insert the log4net configuration settings: eg&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;span style="font-family:Consolas;color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;xml&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:red;"&gt;version&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;=&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;1.0&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;encoding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;utf-8&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;log4net&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;appender&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:red;"&gt;name&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;=&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;RollingLogFileAppender&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;log4net.Appender.RollingFileAppender&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;param&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:red;"&gt;name&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;=&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;File&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;value&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;trace.log&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;param&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:red;"&gt;name&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;=&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;AppendToFile&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;value&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;param&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:red;"&gt;name&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;=&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;MaxSizeRollBackups&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;value&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;5&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;param&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:red;"&gt;name&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;=&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;MaximumFileSize&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;value&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;100KB&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;param&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:red;"&gt;name&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;=&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;RollingStyle&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;value&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Size&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;param&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:red;"&gt;name&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;=&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;StaticLogFileName&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;value&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;layout&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:red;"&gt;type&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;=&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;log4net.Layout.PatternLayout,log4net&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;param&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:red;"&gt;name&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;=&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;ConversionPattern&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;value&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;%d [%t] %-5p %c [%x]
- %m%n&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;layout&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;appender&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;root&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;level&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:red;"&gt;value&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;=&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;DEBUG&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;appender-ref&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:red;"&gt;ref&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;=&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;RollingLogFileAppender&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;root&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family:Consolas;color:maroon;"&gt;log4net&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;8) Finally decorate the methods in your application that you would like to treack with the logging functionality by using the log attribute as mentioned earlier eg:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="color:teal;"&gt;Log&lt;/span&gt;(EntryLevel
= &lt;span style="color:teal;"&gt;LogLevel&lt;/span&gt;.Debug, EntryText = &lt;span style="color:maroon;"&gt;&amp;quot;Test for &amp;#39;{@i1}&amp;#39;, &amp;#39;{@i2}&amp;#39;, &amp;#39;{@r1}&amp;#39;, &amp;#39;{@r2}&amp;#39;.&amp;quot;&lt;/span&gt;)]&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="color:teal;"&gt;Log&lt;/span&gt;(ExitLevel
= &lt;span style="color:teal;"&gt;LogLevel&lt;/span&gt;.Fatal, ExitText = &lt;span style="color:maroon;"&gt;&amp;quot;Was called with params: {paramvalues}.&amp;quot;&lt;/span&gt;)]&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="color:teal;"&gt;Log&lt;/span&gt;(ExceptionLevel
= &lt;span style="color:teal;"&gt;LogLevel&lt;/span&gt;.Fatal, ExceptionText = &lt;span style="color:maroon;"&gt;&amp;quot;Exception occured with parameters : &amp;#39;{@i1}&amp;#39;,
&amp;#39;{@i2}&amp;#39;, &amp;#39;{@r1}&amp;#39;, &amp;#39;{@r2}&amp;#39;.&amp;quot;&lt;/span&gt;)]&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;9) Run the application and have a look at the magic in the trace.log file output. Since I had my debug setting set to DEBUG, every every event handled by the log4postsharp framework was logged.&amp;nbsp;&lt;/p&gt;&lt;p&gt;So my output looked like:&lt;/p&gt;&lt;p&gt;2008-07-24 15:49:32,726 [1] DEBUG Log4PostSharpTest.Program [(null)] - Entering method: Void Main(System.String[]).&lt;br /&gt;2008-07-24 15:49:32,757 [1] DEBUG Log4PostSharpTest.Program [(null)] - Entering method: Void MethodWithNoReturnValue().&lt;br /&gt;2008-07-24 15:49:32,757 [1] DEBUG Log4PostSharpTest.Program [(null)] - Exiting method: Void MethodWithNoReturnValue().&lt;br /&gt;2008-07-24 15:49:32,757 [1] FATAL Log4PostSharpTest.Program [(null)] - Calling eebd09aa-c47c-4f2e-a21e-e90d8030ed6a.&lt;br /&gt;2008-07-24 15:49:32,773 [1] DEBUG Log4PostSharpTest.Program [(null)] - Entering method: Void MethodWithNoReturnValue(System.Guid).&lt;br /&gt;2008-07-24 15:49:32,773 [1] DEBUG Log4PostSharpTest.Program [(null)] - Exiting method: Void MethodWithNoReturnValue(System.Guid).&lt;br /&gt;2008-07-24 15:49:32,773 [1] FATAL Log4PostSharpTest.Program [(null)] - Return value is: &amp;#39;&amp;#39;.&lt;br /&gt;2008-07-24 15:49:32,773 [1] DEBUG Log4PostSharpTest.Program [(null)] - Test for &amp;#39;1&amp;#39;, &amp;#39;A&amp;#39;, &amp;#39;10&amp;#39;, &amp;#39;X&amp;#39;.&lt;br /&gt;2008-07-24 15:49:32,773 [1] DEBUG Log4PostSharpTest.Program [(null)] - Entering method: Int32 MultipleArgsMethod(Int32, System.String, Int32 ByRef, System.Object ByRef, System.Guid ByRef, System.String ByRef).&lt;br /&gt;2008-07-24 15:49:32,773 [1] FATAL Log4PostSharpTest.Program [(null)] - Return value is: &amp;#39;51&amp;#39;.&lt;br /&gt;2008-07-24 15:49:32,773 [1] DEBUG Log4PostSharpTest.Program [(null)] - Exiting method: Int32 MultipleArgsMethod(Int32, System.String, Int32 ByRef, System.Object ByRef, System.Guid ByRef, System.String ByRef).&lt;br /&gt;2008-07-24 15:49:32,773 [1] FATAL Log4PostSharpTest.Program [(null)] - Was called with params: &amp;quot;1&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;6fef8a16-9373-490c-bf07-3d47feda5c31&amp;quot;, &amp;quot;X&amp;quot;.&lt;br /&gt;2008-07-24 15:49:32,773 [1] INFO&amp;nbsp; Log4PostSharpTest.Program [(null)] - Test message.&lt;br /&gt;2008-07-24 15:49:32,773 [1] DEBUG Log4PostSharpTest.Program [(null)] - Entering method: System.Guid MethodWithGuidReturnValue().&lt;br /&gt;2008-07-24 15:49:32,773 [1] DEBUG Log4PostSharpTest.Program [(null)] - Exiting method: System.Guid MethodWithGuidReturnValue().&lt;br /&gt;2008-07-24 15:49:32,773 [1] INFO&amp;nbsp; Log4PostSharpTest.Program [(null)] - Doing stuff.&lt;br /&gt;2008-07-24 15:49:32,773 [1] DEBUG Log4PostSharpTest.Program [(null)] - Entering method: Int32 MethodWithIntReturnValue().&lt;br /&gt;2008-07-24 15:49:32,773 [1] DEBUG Log4PostSharpTest.Program [(null)] - Exiting method: Int32 MethodWithIntReturnValue().&lt;br /&gt;2008-07-24 15:49:32,773 [1] DEBUG Log4PostSharpTest.Program+AnotherSubprogram`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] [(null)] - Entering method: Void .cctor().&lt;br /&gt;2008-07-24 15:49:32,773 [1] DEBUG Log4PostSharpTest.Program+AnotherSubprogram`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] [(null)] - Exiting method: Void .cctor().&lt;br /&gt;2008-07-24 15:49:32,773 [1] DEBUG Log4PostSharpTest.Program+AnotherSubprogram`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] [(null)] - Entering method: Void .ctor().&lt;br /&gt;2008-07-24 15:49:32,773 [1] DEBUG Log4PostSharpTest.Program+AnotherSubprogram`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] [(null)] - Exiting method: Void .ctor().&lt;br /&gt;2008-07-24 15:49:32,773 [1] DEBUG Log4PostSharpTest.Program+AnotherSubprogram`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] [(null)] - Entering method: U Act[U]().&lt;br /&gt;2008-07-24 15:49:32,773 [1] DEBUG Log4PostSharpTest.Program+AnotherSubprogram`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] [(null)] - Exiting method: U Act[U]().&lt;br /&gt;2008-07-24 15:49:32,773 [1] DEBUG Log4PostSharpTest.Program [(null)] - Exiting method: Void Main(System.String[]).&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;b&gt;Additional information and references:&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;- http://www.postsharp.org/&lt;/p&gt;&lt;p&gt;- http://postsharp-user-plugins.googlecode.com/svn/wiki/Log4PostSharp.wiki&lt;/p&gt;&lt;p&gt;- http://www.postsharp.org/forum/log4postsharp/&lt;/p&gt;&lt;p&gt;- http://haacked.com/archive/2006/08/08/Log4NetAndExternalConfigurationFileInASP.NET2.0.aspx&lt;/p&gt;&lt;p&gt;- http://code.google.com/p/postsharp-user-plugins/wiki/Log4PostSharp&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;br /&gt;And finally a big thank you to PostSharp for the AOP tool and especially &lt;span class="com"&gt;&lt;a href="http://herrmic-coding.blogspot.com/"&gt;Michal Dabrowski&lt;/a&gt; for writing the Log4PostSharp addin. &lt;/span&gt;Thanks also to my boss Eden that introduced me to this tool.&lt;/p&gt;&lt;p&gt;I&amp;#39;ll be updating this post with more information in the near future. You can either follow the instructions above or you can download my Test application from &lt;a href="http://ehs-it.net/downloads/Log4PostSharpTest.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Happy coding.&lt;br /&gt;Jean&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://ehs-it.net/aggbug.aspx?PostID=23" width="1" height="1"&gt;</content><author><name>jean</name><uri>http://ehs-it.net/members/jean.aspx</uri></author><category term=".Net Framework 2.0" scheme="http://ehs-it.net/blogs/jeanhibbert/archive/tags/.Net+Framework+2.0/default.aspx" /></entry></feed>