<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Software Engineering with Sean Eby</title>
        <link>http://geekswithblogs.net/seaneby/Default.aspx</link>
        <description>opinions, trips, tricks and tools for Software Engineering and .NET</description>
        <language>en-US</language>
        <copyright>Sean Eby</copyright>
        <managingEditor>sean.d.eby@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Software Engineering with Sean Eby</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/seaneby/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>RE: RE: How I am becoming a better developer...</title>
            <link>http://geekswithblogs.net/seaneby/archive/2007/12/31/118099.aspx</link>
            <description>&lt;p&gt;Back in June, I posted that I was attempting to become a &lt;a href="http://geekswithblogs.net/seaneby/archive/2007/06/28/113549.aspx"&gt;better developer&lt;/a&gt;, in 6 months, by accomplishing 3 goals.  Well, it's been more than 6 months, and I thought I'd post an update. &lt;/p&gt;&lt;p&gt;1) Complete 3 OMSE courses. &lt;/p&gt;&lt;p&gt;Well, I did great on this one, having finished OMSE 522 in the summer, and OMSE 513 and 535 this fall.  All three were great courses, and I learned a great deal.  For the next 6 months, I intend on completing another 3 courses. &lt;/p&gt;&lt;p&gt;2) Add 1 tip, trick or tool to this blog per week. &lt;/p&gt;&lt;p&gt;Well, if good intentions were the name of the game, I'd be winning.  However, as it turns out, I was only able to crank out 2 tips and 2 tools.  Because I am so busy with work and school, I'm changing this goal to be 1 tip/trick per month.  Hopefully, this is more realistic, and I'll be able to keep up with it. &lt;/p&gt;&lt;p&gt;3)  Comment on at least 5 forum questions per month from the various forums that I usually lurk in. &lt;/p&gt;&lt;p&gt;I actually did pretty well on this one, posting in some ASP.NET and Telerik forums.  I will keep this goal active, and continue posting.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/seaneby/aggbug/118099.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sean Eby</dc:creator>
            <guid>http://geekswithblogs.net/seaneby/archive/2007/12/31/118099.aspx</guid>
            <pubDate>Mon, 31 Dec 2007 20:04:47 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/seaneby/comments/118099.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/seaneby/archive/2007/12/31/118099.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/seaneby/comments/commentRss/118099.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/seaneby/services/trackbacks/118099.aspx</trackback:ping>
        </item>
        <item>
            <title>Tip #2: ASP.NET ImageButton and the famous style=&amp;quot;border-width:0px;&amp;quot;</title>
            <category>Tips</category>
            <link>http://geekswithblogs.net/seaneby/archive/2007/09/13/115342.aspx</link>
            <description>&lt;p&gt;Today, I had the pleasure of trying to use &lt;a href="http://www.w3.org/Style/CSS/" target="_blank"&gt;CSS&lt;/a&gt; to style some ASP.NET ImageButtons.  One aspect of the style that we wanted was a border around the button on a mouse hover.  However, no matter what I tried, I could not set a border on the button with CSS.  After a bit more digging, I found out that ASP.NET is trying to help us by inserting an Inline style of border-width:0px if we haven't defined a border-width for the ImageButton (which, of course, we have not, as we're using CSS!).  So, I went to faithful Google, to find an answer.  &lt;/p&gt;
&lt;p&gt;The best solution I was able to come up with was to make my own CustomButton that inherited from ImageButton.  In the CustomButton, I override the BorderWidth property, as seen below:&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; BorderWidth() &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Web.UI.WebControls.Unit&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;     &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;          &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.BorderWidth.IsEmpty = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;               &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.BorderWidth = Unit.Pixel(0)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;          &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;          &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.BorderWidth&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;     &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;     &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Web.UI.WebControls.Unit)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;          &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.BorderWidth = value&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;     &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; Property&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The key here, is to set the BorderWidth to zero if it's not set, to prevent ASP.NET from setting the inline style for us.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/seaneby/aggbug/115342.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sean Eby</dc:creator>
            <guid>http://geekswithblogs.net/seaneby/archive/2007/09/13/115342.aspx</guid>
            <pubDate>Thu, 13 Sep 2007 21:14:39 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/seaneby/comments/115342.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/seaneby/archive/2007/09/13/115342.aspx#feedback</comments>
            <slash:comments>10</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/seaneby/comments/commentRss/115342.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/seaneby/services/trackbacks/115342.aspx</trackback:ping>
        </item>
        <item>
            <title>Tool #3: IE7Pro</title>
            <link>http://geekswithblogs.net/seaneby/archive/2007/08/24/114947.aspx</link>
            <description>&lt;p&gt;We all know that IE 7 is a big letdown, and Fire Fox is still the best browser, for tech minded people.  Today, however, I became aware of an add-on to IE 7  that helps level the playing field.  It's called &lt;a href="http://www.ie7pro.com/" target="_blank"&gt;IE7Pro&lt;/a&gt;.  I haven't done extensive testing with this plug-in, but what I've seen so far is very promising.  &lt;/p&gt; &lt;img src="http://geekswithblogs.net/seaneby/aggbug/114947.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sean Eby</dc:creator>
            <guid>http://geekswithblogs.net/seaneby/archive/2007/08/24/114947.aspx</guid>
            <pubDate>Fri, 24 Aug 2007 13:46:11 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/seaneby/comments/114947.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/seaneby/archive/2007/08/24/114947.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/seaneby/comments/commentRss/114947.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/seaneby/services/trackbacks/114947.aspx</trackback:ping>
        </item>
        <item>
            <title>Tool #2: CodeMetrics for Reflector</title>
            <category>Tools</category>
            <link>http://geekswithblogs.net/seaneby/archive/2007/08/01/114336.aspx</link>
            <description>&lt;p&gt;I've been using &lt;a href="http://www.aisto.com/roeder/dotnet/" target="_blank"&gt;Reflector for .NET&lt;/a&gt; for a while now to help me debug issues.  I recently became aware that Reflector has support for &lt;a href="http://www.codeplex.com/reflectoraddins" target="_blank"&gt;AddIns&lt;/a&gt;.  I haven't checked all of them out yet, but I must say that the &lt;a href="http://www.codeplex.com/reflectoraddins/Wiki/View.aspx?title=CodeMetrics&amp;amp;referringTitle=Home" target="_blank"&gt;CodeMetrics&lt;/a&gt; add in really rocks.  It has metrics for &lt;a href="http://en.wikipedia.org/wiki/Cyclomatic_complexity" target="_blank"&gt;Cyclomatic Complexity&lt;/a&gt;, Code Size, counts for Methods and many others.  I'd love to see this add in enhanced to have additional metrics, such as maintenance complexity, and the ability to run metrics from the command prompt.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/seaneby/aggbug/114336.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sean Eby</dc:creator>
            <guid>http://geekswithblogs.net/seaneby/archive/2007/08/01/114336.aspx</guid>
            <pubDate>Wed, 01 Aug 2007 21:24:18 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/seaneby/comments/114336.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/seaneby/archive/2007/08/01/114336.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/seaneby/comments/commentRss/114336.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/seaneby/services/trackbacks/114336.aspx</trackback:ping>
        </item>
        <item>
            <title>Tool #1: Paint.NET</title>
            <category>Tools</category>
            <link>http://geekswithblogs.net/seaneby/archive/2007/07/25/114175.aspx</link>
            <description>&lt;p&gt;I've had to do some graphics work lately, and was looking for an alternative to &lt;a target="_blank" href="http://www.gimp.org/windows/"&gt;GIMP&lt;/a&gt;, when I ran across &lt;a target="_blank" href="http://www.getpaint.net/index2.html"&gt;paint.net&lt;/a&gt;.  So far, I'm really impressed.  This little app is FREE, currently under development (meaning it's getting new features all the time) and was really simple to use.  Give it a try!&lt;/p&gt; &lt;img src="http://geekswithblogs.net/seaneby/aggbug/114175.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sean Eby</dc:creator>
            <guid>http://geekswithblogs.net/seaneby/archive/2007/07/25/114175.aspx</guid>
            <pubDate>Wed, 25 Jul 2007 21:03:18 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/seaneby/comments/114175.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/seaneby/archive/2007/07/25/114175.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/seaneby/comments/commentRss/114175.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/seaneby/services/trackbacks/114175.aspx</trackback:ping>
        </item>
        <item>
            <title>Tip #1: Properties for CruiseControl.NET</title>
            <category>Tips</category>
            <link>http://geekswithblogs.net/seaneby/archive/2007/07/03/113664.aspx</link>
            <description>&lt;p&gt;I am a huge fan of &lt;a href="http://www.martinfowler.com/articles/continuousIntegration.html" target="_blank"&gt;Continuous Integration&lt;/a&gt; and have been using &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET" target="_blank"&gt;CruiseControl.NET&lt;/a&gt; (CCNet) successfully for the past year.  Recently, I've run across a limitation in the way the &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Configuring+the+Server" target="_blank"&gt;cnet.config&lt;/a&gt; file is used. Normally, when a developer needs to reuse some piece of information, such as a file path, he will put this information in a Property or Constant. However, unlike &lt;a href="http://msdn2.microsoft.com/en-us/library/0k6kkbsd.aspx" target="_blank"&gt;MSBuild&lt;/a&gt; files which supports a &lt;a href="http://msdn2.microsoft.com/en-us/library/t4w159bs.aspx" target="_blank"&gt;PropertyGroup&lt;/a&gt;, the ccnet.config provides no support for Properties or Constants.&lt;/p&gt;
&lt;p&gt;For example, in my ccnet.config file, I need to specify the artifactDirectory, where build artifacts will be stored.  &lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;artifactDirectory&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;C:\Projects\Artifacts\MyFirstProject&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;artifactDirectory&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Let's say I have 10 projects to build. I will need to copy and paste the path above 9 more times.  This "copy and paste" mentality introduces too many places for error for my taste. So, after searching the net for a while, I finally found a solution. Enter the &lt;a href="http://www.w3.org/TR/1998/REC-xml-19980210#intern-replacement" target="_blank"&gt;XML Entity&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, now, we can do the following.&lt;/p&gt;
&lt;p&gt;Enter this at the top of the ccnet.config file:&lt;/p&gt;
&lt;p&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;DOCTYPE&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;cruisecontrol&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;[&lt;br /&gt;
  &amp;lt;!&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;ENTITY&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ArtifactsDirectory&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; &lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;C:\Projects\Artifacts&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;  &lt;/span&gt;Use the XML Entity in place of the hard coded string:
&lt;pre class="code"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;artifactDirectory&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;amp;ArtifactsDirectory;\MyFirstProject&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;artifactDirectory&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="code"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;artifactDirectory&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;amp;ArtifactsDirectory;\MySecondProject&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;artifactDirectory&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;etc...   &lt;/pre&gt; &lt;img src="http://geekswithblogs.net/seaneby/aggbug/113664.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sean Eby</dc:creator>
            <guid>http://geekswithblogs.net/seaneby/archive/2007/07/03/113664.aspx</guid>
            <pubDate>Wed, 04 Jul 2007 01:46:24 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/seaneby/comments/113664.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/seaneby/archive/2007/07/03/113664.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/seaneby/comments/commentRss/113664.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/seaneby/services/trackbacks/113664.aspx</trackback:ping>
        </item>
        <item>
            <title>RE: How I am becoming a better developer...</title>
            <link>http://geekswithblogs.net/seaneby/archive/2007/06/28/113549.aspx</link>
            <description>I was recently “called out” by &lt;a href="../../../../clingermangw/archive/2007/06/22/113405.aspx"&gt;George Clingerman&lt;/a&gt; to join The Brotherhood of Becoming Better Developers.  Although I do not have the energy level George has, I will accept the challenge. &lt;br /&gt;
  &lt;br /&gt;
Here is my list of goals for the next 6 months:&lt;br /&gt;
&lt;br /&gt;
1) Complete 3 &lt;a href="http://www.omse.org/"&gt;OMSE&lt;/a&gt; courses.&lt;br /&gt;
        I am currently enrolled in the masters Oregon Masters of Software Engineering, so this one goes without saying.&lt;br /&gt;
&lt;br /&gt;
2) Add 1 tip, trick or tool to this blog per week.&lt;br /&gt;
    This one will be tough, as I never post on blogs.&lt;br /&gt;
&lt;br /&gt;
3) Comment on at least 5 forum questions per month from the various forums that I usually lurk in.&lt;br /&gt;
    This is equally as hard as #2, as I love to lurk.&lt;br /&gt;
&lt;br /&gt;
Hopefully I can help spread the word.  As I do, I will update this post with the others I've pulled in. &lt;img src="http://geekswithblogs.net/seaneby/aggbug/113549.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sean Eby</dc:creator>
            <guid>http://geekswithblogs.net/seaneby/archive/2007/06/28/113549.aspx</guid>
            <pubDate>Thu, 28 Jun 2007 20:55:18 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/seaneby/comments/113549.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/seaneby/archive/2007/06/28/113549.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/seaneby/comments/commentRss/113549.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/seaneby/services/trackbacks/113549.aspx</trackback:ping>
        </item>
    </channel>
</rss>
