<?xml version="1.0" encoding="utf-8" standalone="no"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">
  <channel>
    <title>Ben Galluzzo</title>
    <description>A little bit of everything that beeps and blinks</description>
    <link>http://www.bengalluzzo.com/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 2.0.0.36</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://www.bengalluzzo.com/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://feeds.feedburner.com/BenGalluzzo</blogChannel:blink>
    <dc:creator>Ben Galluzzo</dc:creator>
    <dc:title>Ben Galluzzo</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <itunes:explicit>no</itunes:explicit><itunes:subtitle>A little bit of everything that beeps and blinks</itunes:subtitle><item>
      <title>Code Camp NYC 2016 - MongoDB for Developers</title>
      <description>&lt;p&gt;Code Camp NYC 2016 Presentation&lt;/p&gt;
&lt;p&gt;MongoDB For Developers And Accessing MongoDB data&lt;/p&gt;
&lt;p&gt;This is where .NET, MongoDB, and SSIS meet. We'll begin with an overview of what MongoDB and NoSQL are and how it is often used in the world. Then, we'll go over some of terminology of MongoDB and how these terms map to the SQL world. Lastly, we'll demonstrate how we can work with MongoDB from SSIS using .NET code to make all of the connections.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bengalluzzo.com/file.axd?file=2016%2f10%2fCodeCampNYC_2016_MongoDB_Intro.pptx"&gt;CodeCampNYC_2016_MongoDB_Intro.pptx (1.05 mb)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.codecampnyc.org/wp-content/uploads/2011/08/01.jpg" alt="Code Camp NYC" width="960" height="73" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <link>http://www.bengalluzzo.com/post/2016/10/08/Code-Camp-NYC-2016-MongoDB-for-Developers.aspx</link>
      <comments>http://www.bengalluzzo.com/post/2016/10/08/Code-Camp-NYC-2016-MongoDB-for-Developers.aspx#comment</comments>
      <guid>http://www.bengalluzzo.com/post.aspx?id=834c3538-f56a-47e2-8a71-fae7039fa09d</guid>
      <pubDate>Sat, 08 Oct 2016 05:38:00 +0300</pubDate>
      <category>.NET</category>
      <category>C#</category>
      <category>Events</category>
      <category>SQL</category>
      <category>NoSQL</category>
      <category>MongoDB</category>
      <category>SSIS</category>
      <category>Code Camp NYC</category>
      <dc:publisher>Ben Galluzzo</dc:publisher>
      <pingback:server>http://www.bengalluzzo.com/pingback.axd</pingback:server>
      <pingback:target>http://www.bengalluzzo.com/post.aspx?id=834c3538-f56a-47e2-8a71-fae7039fa09d</pingback:target>
      <slash:comments>5</slash:comments>
      <trackback:ping>http://www.bengalluzzo.com/trackback.axd?id=834c3538-f56a-47e2-8a71-fae7039fa09d</trackback:ping>
      <wfw:comment>http://www.bengalluzzo.com/post/2016/10/08/Code-Camp-NYC-2016-MongoDB-for-Developers.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.bengalluzzo.com/syndication.axd?post=834c3538-f56a-47e2-8a71-fae7039fa09d</wfw:commentRss>
    <enclosure length="1097131" type="application/octet-stream" url="http://www.bengalluzzo.com/file.axd?file=2016%2f10%2fCodeCampNYC_2016_MongoDB_Intro.pptx"/><itunes:explicit/><itunes:subtitle>Code Camp NYC 2016 Presentation MongoDB For Developers And Accessing MongoDB data This is where .NET, MongoDB, and SSIS meet. We'll begin with an overview of what MongoDB and NoSQL are and how it is often used in the world. Then, we'll go over some of terminology of MongoDB and how these terms map to the SQL world. Lastly, we'll demonstrate how we can work with MongoDB from SSIS using .NET code to make all of the connections. CodeCampNYC_2016_MongoDB_Intro.pptx (1.05 mb) &amp;nbsp;</itunes:subtitle><itunes:summary>Code Camp NYC 2016 Presentation MongoDB For Developers And Accessing MongoDB data This is where .NET, MongoDB, and SSIS meet. We'll begin with an overview of what MongoDB and NoSQL are and how it is often used in the world. Then, we'll go over some of terminology of MongoDB and how these terms map to the SQL world. Lastly, we'll demonstrate how we can work with MongoDB from SSIS using .NET code to make all of the connections. CodeCampNYC_2016_MongoDB_Intro.pptx (1.05 mb) &amp;nbsp;</itunes:summary><itunes:keywords>.NET, C#, Events, SQL, NoSQL, MongoDB, SSIS, Code Camp NYC</itunes:keywords></item>
    <item>
      <title>Windows 8 Camp</title>
      <description>&lt;p&gt;This past Saturday, Microsoft hosted a Windows 8 Camp at Harrisburg Area Community College (HACC) on the Harrisburg campus.&amp;nbsp; If you get the opportunity, take advantage of one of these free events offered by Microsoft.&amp;nbsp; They provide for a good way to keep abreast of newer technologies and connect with fellow developers.&amp;nbsp; Listed down below are links for you to keep tabs of some of the local development events.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The Windows 8 Camps are a great learning experience.&amp;nbsp; Right now, if you haven't noticed, there's quite a change in how people stay connected and work with computer technologies.&amp;nbsp; Tablet sales are projected to &lt;a href="http://venturebeat.com/2013/02/18/tablet-sales-will-surpass-pc-sales-by-late-2012-or-early-2013/" target="_blank"&gt;surpass&lt;/a&gt; PC sales this year so how users interact with the software which developers build is changing considerably.&amp;nbsp; In some ways, end users of current technologies sometimes seem to be more in tune with these changes than even seasoned developers.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The focus of this camp was right in line to help existing .NET developers get in sync with the new &lt;a href="http://www.testyengineer.com/2012/12/windows-8-quickstart.html" target="_blank"&gt;Windows paradigm shift&lt;/a&gt;.&amp;nbsp; Also, Microsoft kindly supplied breakfast munchies and a lunch.&amp;nbsp; Chris Gomez &lt;a href="https://twitter.com/SpaceShot" target="_blank"&gt;@SpaceShot&lt;/a&gt; and Microsoft MVP John Baird &lt;a href="https://twitter.com/jbaird_pa" target="_blank"&gt;@jbaird_pa&lt;/a&gt; gave tag-team presentations and were both understanding of what it takes for an existing .NET developer to advance the new mindset and make the jump to Windows 8 app development.&lt;/p&gt;
&lt;h3&gt;Sessions&lt;/h3&gt;
&lt;h4&gt;Building Windows Store Apps Using HTML5/JavaScript&lt;/h4&gt;
&lt;p&gt;The first session overviewed Building Windows Store apps using HTML5, CSS3, and JavaScript.&amp;nbsp; Chris opened up by keying in on some of main features of Windows 8 user interaction and what is essential in making good applications interoperable within a Windows 8 environment.&amp;nbsp; Basically this was to jump-start experienced developers with one of the more significant changes to the Microsoft development portfolio.&lt;/p&gt;
&lt;p&gt;In order to understand what is to be accomplished, Chris presented a cursory review of the Windows 8 user experience and then did a code walkthrough of navigation, searching, controls, sharing, and async operations.&amp;nbsp; If there's one thing you can take away from this, it's Microsoft's recommendation that interacting with WinJS will simplify developing Windows 8 apps when using HTML5, CSS3, and JavaScript .&amp;nbsp; WinJS is simply a JavaScript, CSS, and HTML library that helps build Windows 8 controls that are not necessarily implemented in HTML5.&amp;nbsp; However, you can still develop apps with HTML5/JavaScript without the use of WinJS.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Building Windows store Apps with XAML/C#&lt;/h4&gt;
&lt;p&gt;Next John jumped into Building Windows Store apps with XAML and C#.&amp;nbsp; A good portion of the participants had already been developing in this realm, so this session was an easier jump to constructing Windows 8 apps.&amp;nbsp; If you've been building .NET applications in XAML for sometime, whether it's Silverlight or WPF, your learning curve to getting a Windows 8 app running is actually going to be fairly quick.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Process Lifetime of Windows 8 Apps&lt;/h4&gt;
&lt;p&gt;The third session, Process lifetime of Windows 8 apps, was led by Chris.&amp;nbsp; Certainly, anyone who's been running Windows over the years knows that being mindful of your available resources is important in ensuring that things run smoothly, and actively keeping tabs of what's running and killing any unnecessary processes is a part of daily computing.&amp;nbsp; However,&amp;nbsp; the intention with Windows 8 is a bit different. To get you in the right frame of mind, think how you've been computing these days with your smart phone or tablet.&amp;nbsp; The perspective is that provisions for an always-on and available mentality is in place when interacting with Windows 8 apps.&amp;nbsp; Chris went on to describe throughout his walkthrough how apps go through the suspend and resume process and how to maintain consistent application state for a user friendly experience.&lt;/p&gt;
&lt;h4&gt;Introducing the Windows Store&lt;/h4&gt;
&lt;p&gt;Lastly, John went into an overview&amp;nbsp; of the Windows Store.&amp;nbsp; If you've used &lt;a href="https://play.google.com/store" target="_blank"&gt;Google Play&lt;/a&gt; or the &lt;a href="http://www.apple.com/osx/apps/app-store.html" target="_blank"&gt;Mac App Store&lt;/a&gt;, you understand this concept.&amp;nbsp; The Windows Store is basically a distribution system which allows for developers to deliver their certified apps to consumers.&amp;nbsp; John went over a list of details in using the Windows Store and performed a walkthrough of signing up and registering your app on the Store.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;During this, he discussed details on:   &lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;bull; Selling, price points, and getting paid    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;bull; Advertising options    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;bull; Beta options&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;bull; Limited functionality and timed trials&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;bull; Registration    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;bull; Application Certification Kit (ACK)    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;bull; Localization    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;bull; Deploying apps for use in other countries    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;bull; Updates and versioning&lt;/p&gt;
&lt;h3&gt;Wrapping Up&lt;/h3&gt;
&lt;p&gt;As with any other nice event there was a little bit of &lt;a href="http://en.wikipedia.org/wiki/Promotional_item" target="_blank"&gt;SWAG&lt;/a&gt; and closing with a bunch a nice prizes. &amp;nbsp;Again, keep tabs on your local events. &amp;nbsp;The most important thing you can do is to meet other developers and possibly form ongoing relationships in your field. &amp;nbsp;Right now, there's a dramatic change taking place in personal computing, and now's a great time to be part of that change.&lt;/p&gt;
&lt;h3&gt;Resources&lt;/h3&gt;
&lt;h4&gt;Downloads, SDK&amp;rsquo;s, &amp;amp; Tools&lt;/h4&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/windows/apps/br229516" target="_blank"&gt;Windows Store Apps Developer Downloads&lt;/a&gt; &lt;br /&gt;includes the Windows 8 SDK, Blend for Visual Studio, Windows Application Certification Kit (ACK), practice labs, sample apps, and much more.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;a href="http://www.windowsstore.com/" target="_blank"&gt;The Microsoft Windows Store&lt;/a&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=29854" target="_blank"&gt;Windows 8 Camp in a Box&lt;/a&gt; - Official Microsoft Download Center    &lt;br /&gt;Lesson slides, the hands-on-labs, samples, and related resources.    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/jj554680.aspx" target="_blank"&gt;Windows 8 Hands-on Labs Online (HOLO)&lt;/a&gt; &lt;br /&gt;Scheduled live online presentations and labs.&amp;nbsp; Experts are available in for real-time assistance through your lab work.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;a href="https://applabs.msregistration.com/" target="_blank"&gt;Windows Store App Labs&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Event Calendars&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://channel9.msdn.com/Events/Windows-Camp" target="_blank"&gt;Windows Camps Events Channel 9&lt;/a&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;a href="http://communitymegaphone.com/" target="_blank"&gt;Community Megaphone&lt;/a&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;a href="http://msevents.microsoft.com" target="_blank"&gt;Microsoft World Wide Events&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://www.bengalluzzo.com/post/2013/03/18/Windows-8-Camp.aspx</link>
      <comments>http://www.bengalluzzo.com/post/2013/03/18/Windows-8-Camp.aspx#comment</comments>
      <guid>http://www.bengalluzzo.com/post.aspx?id=ce9d389b-b903-450c-9bbd-2f1e8a212d87</guid>
      <pubDate>Mon, 18 Mar 2013 20:31:00 +0300</pubDate>
      <category>.NET</category>
      <category>Events</category>
      <category>Windows 8</category>
      <dc:publisher>Ben Galluzzo</dc:publisher>
      <pingback:server>http://www.bengalluzzo.com/pingback.axd</pingback:server>
      <pingback:target>http://www.bengalluzzo.com/post.aspx?id=ce9d389b-b903-450c-9bbd-2f1e8a212d87</pingback:target>
      <slash:comments>545</slash:comments>
      <trackback:ping>http://www.bengalluzzo.com/trackback.axd?id=ce9d389b-b903-450c-9bbd-2f1e8a212d87</trackback:ping>
      <wfw:comment>http://www.bengalluzzo.com/post/2013/03/18/Windows-8-Camp.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.bengalluzzo.com/syndication.axd?post=ce9d389b-b903-450c-9bbd-2f1e8a212d87</wfw:commentRss>
    </item>
    <item>
      <title>Down-Convert an SSRS 2008 R2 RDL to SSRS 2008</title>
      <description>&lt;p&gt;&lt;span style="font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif; font-size: 14px;"&gt;Recently a team member brought up a problem in regards to obtaining a fairly sizeable 2008 R2 SSRS report which needed some modifications and to be deployed to a 2008 SSRS system; essentially requiring that the report RDL be down-converted to 2008 SSRS. &amp;nbsp;Unfortunately, installing BIDS for 2008 R2 on this team member's development environment is not an option so there needs to be another way to provide for a 2008 version of this particular RDL for which to be modified. &amp;nbsp;Could BIDS 2008 R2 on another developer workstation or a conversion utility provide the solution? &amp;nbsp;Possibly. &amp;nbsp;However, taking a look at the XML of the RDL, it's clear that the solution might be a bit simpler. &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif; font-size: 14px;"&gt;This solution should be able to be applied when converting from 2012 back to 2008 as well. &amp;nbsp;Additionally, this may not be the most optimum method to update the RDL, however it was easy and quickly got a report out to production. &amp;nbsp;One other detail to note is that this report allows for the ability to provide names to be assigned to each worksheet when it is exported to an Excel worksheet. &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif; font-size: 14px;"&gt;There are only two main steps to provide for this down-conversion:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif;"&gt;&lt;span style="font-size: 14px;"&gt;Apply proper schema&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif;"&gt;&lt;span style="font-size: 14px;"&gt;Remove unsupported elements&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Step 1 - Apply Proper Schema&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;To apply the older definition information, simply r&lt;span style="font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif;"&gt;eplace the newer RDL schema definition with the older version RDL schema. &amp;nbsp;&lt;/span&gt;Find the SSRS 2008 R2 &amp;lt;Report&amp;gt; element:&lt;/span&gt;&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;&amp;lt;Report 
    xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"
    xmlns:cl="http://schemas.microsoft.com/sqlserver/reporting/2010/01/componentdefinition"
    xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition"
&amp;gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Replace this &amp;lt;Report&amp;gt; element namespace information with the 2008 namespace information:&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;&amp;lt;Report
    xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition"
    xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"
&amp;gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Step 2 - Remove Unsupported Elements&lt;/h4&gt;
&lt;p&gt;&lt;span style="font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif; font-size: 14px;"&gt;Remove incompatible start and end XML element tags. &amp;nbsp;&lt;/span&gt;Look for and remove the following start and end elements if they exist; being sure to leave the data within the elements:&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;&amp;lt;ReportSections&amp;gt;
&amp;lt;/ReportSections&amp;gt;

&amp;lt;ReportSection&amp;gt;
&amp;lt;/ReportSection&amp;gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Look for and remove, if they exist,&amp;nbsp;the following start and end elements as well as the data within the elements:&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;&amp;lt;PageName&amp;gt;...&amp;lt;/PageName&amp;gt;
&amp;lt;Authentication&amp;gt;integrated...&amp;lt;/Authentication&amp;gt;
&amp;lt;rd:SecurityType&amp;gt;Integrated&amp;lt;/rd:SecurityType&amp;gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif; font-size: 14px;"&gt;Finally, test within BIDS for SSRS 2008. &amp;nbsp;That's pretty much all there is to it. &amp;nbsp;One additional note, it's possible that there may be other properties within an SSRS 2008 R2 RDL that will balk in BIDS for SSRS 2008. &amp;nbsp;Please feel free to share comments on any additional pieces of the RDL that may need to be removed or modified for a proper down-conversion.&lt;/span&gt;&lt;/p&gt;</description>
      <link>http://www.bengalluzzo.com/post/2012/12/17/Down-Convert-an-SSRS-2008-R2-RDL-to-SSRS-2008.aspx</link>
      <comments>http://www.bengalluzzo.com/post/2012/12/17/Down-Convert-an-SSRS-2008-R2-RDL-to-SSRS-2008.aspx#comment</comments>
      <guid>http://www.bengalluzzo.com/post.aspx?id=d2c29afa-48ad-458b-82a4-e8b8f77ce1ff</guid>
      <pubDate>Mon, 17 Dec 2012 05:02:00 +0300</pubDate>
      <category>SSRS</category>
      <dc:publisher>Ben Galluzzo</dc:publisher>
      <pingback:server>http://www.bengalluzzo.com/pingback.axd</pingback:server>
      <pingback:target>http://www.bengalluzzo.com/post.aspx?id=d2c29afa-48ad-458b-82a4-e8b8f77ce1ff</pingback:target>
      <slash:comments>284</slash:comments>
      <trackback:ping>http://www.bengalluzzo.com/trackback.axd?id=d2c29afa-48ad-458b-82a4-e8b8f77ce1ff</trackback:ping>
      <wfw:comment>http://www.bengalluzzo.com/post/2012/12/17/Down-Convert-an-SSRS-2008-R2-RDL-to-SSRS-2008.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.bengalluzzo.com/syndication.axd?post=d2c29afa-48ad-458b-82a4-e8b8f77ce1ff</wfw:commentRss>
    </item>
    <item>
      <title>Hide Tab Header of Tab Control</title>
      <description>&lt;p&gt;There are multiple ways in which the tab header of a tab control can be hidden. &amp;nbsp;One way is to set the DrawMode of the control to "OwnerDrawFixed," the SizeMode to "Fixed, " and then set the ItemSize to "0, 1" &amp;nbsp;What's left is somewhat of an abandoned tab header. &amp;nbsp;A little bit of fussing with the layout is then required to clean up the tab control. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Another method is to extend the WinForm tab control and override the WndProc method to trap the TCM_ADJUSTRECT message, which is sent when it needs to adjust the size of the tabs, while the control is in DesignMode. &amp;nbsp;This allows for a nice way of completely eliminating the tab header from the control without any need to clean up the layout. &amp;nbsp;Once you trap the TCM_ADJUSTRECT message, return the value 1 to specify that the message was handled.&lt;/p&gt;
&lt;pre class="brush: c-sharp;"&gt;        if (_message.Msg == TCM_ADJUSTRECT &amp;amp;&amp;amp; !DesignMode)
            _message.Result = (IntPtr)1;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;While you're at it, put the class inside your custom library and add it the Visual Studio Toolbox so it can dragged onto a form whenever it is needed.&amp;nbsp;&lt;/p&gt;
&lt;pre class="brush: c-sharp;"&gt;using System;

using System.Windows.Forms;

namespace StoreLib
{
    public class NoHeaderTabControl : TabControl
    {
        private const int TCM_ADJUSTRECT = 0x1328;

        protected override void WndProc(ref Message _message)
        {
            if (_message.Msg == TCM_ADJUSTRECT &amp;amp;&amp;amp; !DesignMode)
                _message.Result = (IntPtr)1;
            else
                base.WndProc(ref _message);
        }
    }
}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;References&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.control.wndproc.aspx" target="_blank"&gt;Control.WndProc Method&lt;br /&gt;&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb760573(v=vs.85).aspx" target="_blank"&gt;TCM_ADJUSTRECT message (Windows)&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://www.bengalluzzo.com/post/2012/11/07/Hide-Tab-Header-of-Tab-Control.aspx</link>
      <comments>http://www.bengalluzzo.com/post/2012/11/07/Hide-Tab-Header-of-Tab-Control.aspx#comment</comments>
      <guid>http://www.bengalluzzo.com/post.aspx?id=ea960188-e833-46b1-80bc-dcdc77ebf9c9</guid>
      <pubDate>Wed, 07 Nov 2012 19:00:00 +0300</pubDate>
      <category>.NET</category>
      <category>C#</category>
      <category>WinForm</category>
      <dc:publisher>Ben Galluzzo</dc:publisher>
      <pingback:server>http://www.bengalluzzo.com/pingback.axd</pingback:server>
      <pingback:target>http://www.bengalluzzo.com/post.aspx?id=ea960188-e833-46b1-80bc-dcdc77ebf9c9</pingback:target>
      <slash:comments>215</slash:comments>
      <trackback:ping>http://www.bengalluzzo.com/trackback.axd?id=ea960188-e833-46b1-80bc-dcdc77ebf9c9</trackback:ping>
      <wfw:comment>http://www.bengalluzzo.com/post/2012/11/07/Hide-Tab-Header-of-Tab-Control.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.bengalluzzo.com/syndication.axd?post=ea960188-e833-46b1-80bc-dcdc77ebf9c9</wfw:commentRss>
    </item>
    <item>
      <title>Reading and Writing to an INI File in Managed Code</title>
      <description>&lt;p&gt;&lt;span style="font-size: 14px; font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif;"&gt;Due to the push for the adoption of XML configuration files, INI file handling was not built into the .NET Framework. &amp;nbsp;However, INI files do still exist in legacy applications and can sometimes be found in newer software as well. &amp;nbsp;So there needs to be a way to work with them from code. &amp;nbsp;There are some available libraries, such as &lt;a href="http://sourceforge.net/projects/nini/" target="_blank"&gt;Nini&lt;/a&gt; and &lt;a href="http://sourceforge.net/projects/nini/" target="_blank"&gt;CommonLibrary.NET&lt;/a&gt;, which can perform this type of work, however, since this is part of the &lt;a href="http://www.bengalluzzo.com/category/Quick-and-Dirty.aspx"&gt;Quick-and-Dirty&lt;/a&gt;&amp;nbsp;Series, here's a very simple example that will work for a lot of scenarios. &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h5&gt;&lt;span style="font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif;"&gt;&lt;span style="font-size: 14px;"&gt;Interop Services to the rescue&lt;/span&gt;&lt;/span&gt;&lt;/h5&gt;
&lt;p&gt;&lt;span style="font-size: 14px; font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif;"&gt;Two kernel32.dll functions can be exposed to handle these INI files; WritePrivateProfileString and GetPrivateProfileString. &amp;nbsp;The class IniFile listed below shows how to utilize these functions from Kernel32 via interop.&lt;/span&gt;&lt;/p&gt;
&lt;pre class="brush: c-sharp;"&gt;using System;
using System.Text;

using System.Runtime.InteropServices;

namespace StoreLib.Configuration.Ini
{
    public class IniFile
    {
        [DllImport("kernel32")]
        private static extern long WritePrivateProfileString(string _section, string _key, string _val, string _filePath);

        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string _section, string _key, string _def, StringBuilder _retVal, int _size, string _filePath);

        public IniFile(string _path)
        {
            Path = _path;
        }

        //Write to INI File
        public void WriteValue(string _section, string _key, string _value)
         {
            WritePrivateProfileString(_section, _key, _value, Path);
        }

        //Read from INI File
 public string ReadValue(string _section, string _key)
 {
 StringBuilder sb = new StringBuilder(255);
 int i = GetPrivateProfileString(_section, _key, "", sb, 255, Path);

 return sb.ToString();
 }
        public string Path { get; set; }
    }
}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif; font-size: 14px;"&gt;Once the IniFile class is ready, reading a value is easy:&lt;/span&gt;&lt;/p&gt;
&lt;pre class="brush: c-sharp;"&gt;IniFile iniFile;
iniFile = newIniFile(@"C:\LegacyApplication\la.ini");

string dataSourceKey = "source1";
string dataSourceName = iniFile.ReadValue("DataSources", dataSourceKey);&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif; font-size: 14px;"&gt;Similarly, writing a value to the file is just as easy:&lt;/span&gt;&lt;/p&gt;
&lt;pre class="brush: c-sharp;"&gt;IniFile iniFile;
iniFile = newIniFile(@"C:\LegacyApplication\la.ini");

string appLoadKey= "splash";
string appLoadValue = "logo";
iniFile.WriteValue("AppLoad", appLoadKey, appLoadValue);&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif; font-size: 14px;"&gt;That's all there is to it. &amp;nbsp;This is just one option for accessing an INI file and should be able to handle most instances of a section's simple key-value pair. &amp;nbsp;Feel free to give it a try.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif; font-size: 14px;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif; font-size: 14px;"&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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="text-decoration: underline; font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif; font-size: 14px;"&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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ___________&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a style="font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif; font-size: 14px;" href="http://www.bengalluzzo.com/category/Quick-and-Dirty.aspx"&gt;Quick-and-Dirty&lt;/a&gt;&lt;span style="font-family: 'Segoe UI', Frutiger, Tahoma, Helvetica, 'Helvetica Neue', Arial, sans-serif; font-size: 14px;"&gt;&amp;nbsp;Series - Hopefully still a sound solution, these may not be the best, fastest, or most appropriate methods of accomplishing a development task, however, they work and are fast to put in place.&lt;/span&gt;&lt;/p&gt;</description>
      <link>http://www.bengalluzzo.com/post/2012/08/13/Reading-and-Writing-to-an-INI-File-in-Managed-Code.aspx</link>
      <comments>http://www.bengalluzzo.com/post/2012/08/13/Reading-and-Writing-to-an-INI-File-in-Managed-Code.aspx#comment</comments>
      <guid>http://www.bengalluzzo.com/post.aspx?id=70f8c6c9-e821-4f3d-9d05-c8ca9688cdda</guid>
      <pubDate>Mon, 13 Aug 2012 19:00:00 +0300</pubDate>
      <category>.NET</category>
      <category>C#</category>
      <category>Quick-and-Dirty</category>
      <dc:publisher>Ben Galluzzo</dc:publisher>
      <pingback:server>http://www.bengalluzzo.com/pingback.axd</pingback:server>
      <pingback:target>http://www.bengalluzzo.com/post.aspx?id=70f8c6c9-e821-4f3d-9d05-c8ca9688cdda</pingback:target>
      <slash:comments>723</slash:comments>
      <trackback:ping>http://www.bengalluzzo.com/trackback.axd?id=70f8c6c9-e821-4f3d-9d05-c8ca9688cdda</trackback:ping>
      <wfw:comment>http://www.bengalluzzo.com/post/2012/08/13/Reading-and-Writing-to-an-INI-File-in-Managed-Code.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.bengalluzzo.com/syndication.axd?post=70f8c6c9-e821-4f3d-9d05-c8ca9688cdda</wfw:commentRss>
    </item>
    <item>
      <title>My .NET Development Environment Toolset</title>
      <description>&lt;p&gt;By all means, this is far from a complete list of my .NET development toolbelt. &amp;nbsp;It is just a select few of effective lightweight utilities that I commonly use. &amp;nbsp;Often said, although there is often a better tool for the job, sometimes the best tool for the job is the one you know. &amp;nbsp;Please feel free to share some of your own favorites.&lt;/p&gt;
&lt;h1&gt;Productivity &amp;amp; Desktop&lt;/h1&gt;
&lt;h3&gt;dnGREP&lt;/h3&gt;
&lt;p&gt;Developing and working within Unix (I often date myself by typing UNIX) and Linux environments, I've learned to really appreciate some of the great shells and commandline utilities. One of my favorite utilities was grep, which is a text searching utility. dnGrep is a Windows implementation of this utility.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code.google.com/p/dngrep/"&gt;http://code.google.com/p/dngrep/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Cygwin Bash Shell&lt;/h3&gt;
&lt;p&gt;Tee'ing off of the previously stated usefulness of the Unix command shells, Cygwin is a port of many of the more popular Unix tools and provides commandline interaction of these utilities.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cygwin.com/"&gt;http://www.cygwin.com/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Focus Booster&lt;/h3&gt;
&lt;p&gt;This is just one of a dozen-dozen utilities assisting with the Pomodoro Technique. This is just one that I like because it's simple, clean, and small. That's kind of a theme of mine when it comes to maintaining my development toolbelt.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.focusboosterapp.com/"&gt;http://www.focusboosterapp.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you want to learn more about the Pomodoro Technique have a look here: &amp;nbsp;&lt;a href="http://www.pomodorotechnique.com/"&gt;http://www.pomodorotechnique.com/&lt;/a&gt; &amp;nbsp;Obviously, this isn't the end-all be-all of productivity methods. &amp;nbsp;There may another one that's a better fit for you.&lt;/p&gt;
&lt;h3&gt;Input Director&lt;/h3&gt;
&lt;p&gt;Multiple computers, multiple monitors, one keyboard, one mouse. There's nothing that keeps my desk cleaned up and my hands in one place better than this productivity tool.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.inputdirector.com/"&gt;http://www.inputdirector.com/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;notepad&lt;/h3&gt;
&lt;p&gt;Maybe overstating the obvious, but notepad is one of my more useful tools as well. &amp;nbsp;Often I'm on a system without a good toolset and need to remove any textual formatting from any text that's block copied. While my development machines have various utilities for pasting cleaned up text, that system on the other end of the network probably will not.&lt;/p&gt;
&lt;h3&gt;ImgBurn&lt;/h3&gt;
&lt;p&gt;As often, simple is always better. I've created so many less coasters over the years with this CD/DVD burning/copying utility than with any other tool.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.imgburn.com/"&gt;http://www.imgburn.com/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;FormatFactory&lt;/h3&gt;
&lt;p&gt;This is a just a great media converter. &amp;nbsp;It's been very effective for me and is one of the few that doesn't bog down my workstation.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pcfreetime.com/"&gt;http://www.pcfreetime.com/&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Graphics &amp;amp; Images&lt;/h1&gt;
&lt;h3&gt;Paint.NET&lt;/h3&gt;
&lt;p&gt;This is probably my alltime favorite graphic editor. &amp;nbsp;It is such a capable image editor and has a large following with which to collaborate.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.getpaint.net/"&gt;http://www.getpaint.net/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Greenshot&lt;/h3&gt;
&lt;p&gt;Greenshot is a speedy lightweight screenshot tool. I'm hesitant to keep anything running in my windows taskbar that I don't need at all times and is going to use up a lot of memory. &amp;nbsp;These kind of utilities are notorious for sapping away more memory than they need while waiting for you to use them. &amp;nbsp;Greenshot is not one of them and has a home in my taskbar. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://getgreenshot.org/"&gt;http://getgreenshot.org/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Wordpad&lt;/h3&gt;
&lt;p&gt;Did I hear a laugh? Yes, as funny as it sounds. Often I need to get full or partial screen shots on systems that don't have much of anything in terms of productivity tools installed on them. I sometimes need to gather a few simple screen shots and to move on. &amp;nbsp;I've found that it's quicker, and tidy, to just drop a bunch of images in a Wordpad document and then wrap things up elsewhere.&lt;/p&gt;
&lt;h1&gt;Reporting&lt;/h1&gt;
&lt;h3&gt;RSScripter&lt;/h3&gt;
&lt;p&gt;Although, it can be done from a manual sense, I often need to grab a load of SSRS reports from a server to either be moved or worked on. &amp;nbsp;This little utility is great for short work of these operations.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.sqldbatips.com/showarticle.asp?ID=62"&gt;http://www.sqldbatips.com/showarticle.asp?ID=62&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Report Builder&lt;/h3&gt;
&lt;p&gt;I often say that developers are lazy. They only want to type something once, automate things, and build things that, in turn, build things for them. Every once in awhile a dynamically generated report doesn't fit the bill and a one-up report is needed. I don't want to take up time with a project, I just want to get the information out there into a report format as quickly as possible. Better yet, if all of the work is done in a stored procedure and available to the report definition, I only need to worry about the layout, groupings, etc. of the report.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=6116"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=6116&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Internals&lt;/h1&gt;
&lt;h3&gt;Dependency Walker&lt;/h3&gt;
&lt;p&gt;This great utility by Steve Walker examines Windows assemblies and provides realtime interactive diagrams of any activity, errors, and interactions between the different modules running on your system. While it provides extremely detailed useful information, it is surprisingly intuitive for the uninitiated.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dependencywalker.com/"&gt;http://www.dependencywalker.com/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Sysinternals&lt;/h3&gt;
&lt;p&gt;Ever since I first purchased the Winternals suite of admin tools years ago, I've been a satisfied customer. &amp;nbsp;This suite of small and effective utilities are use for monitoring and managing Windows systems. &amp;nbsp;Microsoft later obtained Winternals and still has the majority of the tools available for free. I often create scripts or shell commands to the various utilities. &amp;nbsp;Process Explorer, TCPView, PsService, PsList, PsKill, PsInfo, PsExec are the utilities I make use of on a regular basis.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb842062"&gt;http://technet.microsoft.com/en-us/sysinternals/bb842062&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Development/Debug&lt;/h1&gt;
&lt;h3&gt;Firebug&lt;/h3&gt;
&lt;p&gt;This is a Firefox plugin that provides a more detailed view of HTML, CSS, and JavaScript from the client.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://getfirebug.com/"&gt;http://getfirebug.com/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Glimpse&lt;/h3&gt;
&lt;p&gt;This is an ASP.NET diagnostics tool that captures performance characteristics for further debugging or troubleshooting. &amp;nbsp;It has the ability to gather an amazing amount of detail fairly easly.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://getglimpse.com/"&gt;http://getglimpse.com/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;JustDecompile&lt;/h3&gt;
&lt;p&gt;Reflector used to be my go-to tool for .NET code decompilation. &amp;nbsp;This has been an incredible useful tool. &amp;nbsp;Not long after Reflector became a premium product, JustDecompile from Telerik came on the scene.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.telerik.com/products/decompiler.aspx"&gt;http://www.telerik.com/products/decompiler.aspx&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;FXCop&lt;/h3&gt;
&lt;p&gt;FXCop is tool that helps maintain that certain rules pertaining to security, naming conventions, proper memory usage, and design are met within .NET code. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb429476(v=vs.80).aspx"&gt;http://msdn.microsoft.com/en-us/library/bb429476(v=vs.80).aspx&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://www.bengalluzzo.com/post/2011/09/11/My-NET-Development-Environment-Toolset.aspx</link>
      <comments>http://www.bengalluzzo.com/post/2011/09/11/My-NET-Development-Environment-Toolset.aspx#comment</comments>
      <guid>http://www.bengalluzzo.com/post.aspx?id=dad07c77-227d-4a6d-9616-b25ec6ae687b</guid>
      <pubDate>Sun, 11 Sep 2011 22:00:00 +0300</pubDate>
      <category>.NET</category>
      <category>Development Environment</category>
      <category>Utilities</category>
      <dc:publisher>Ben Galluzzo</dc:publisher>
      <pingback:server>http://www.bengalluzzo.com/pingback.axd</pingback:server>
      <pingback:target>http://www.bengalluzzo.com/post.aspx?id=dad07c77-227d-4a6d-9616-b25ec6ae687b</pingback:target>
      <slash:comments>4721</slash:comments>
      <trackback:ping>http://www.bengalluzzo.com/trackback.axd?id=dad07c77-227d-4a6d-9616-b25ec6ae687b</trackback:ping>
      <wfw:comment>http://www.bengalluzzo.com/post/2011/09/11/My-NET-Development-Environment-Toolset.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.bengalluzzo.com/syndication.axd?post=dad07c77-227d-4a6d-9616-b25ec6ae687b</wfw:commentRss>
    </item>
    <item>
      <title>Setting Up Debug Mode for a Windows Service Project</title>
      <description>&lt;p&gt;If you&amp;rsquo;ve tried to run a Windows Service project in debug mode, you&amp;rsquo;ve probably seen the message shown below.&amp;nbsp; To debug our code by default, we would have to install the service and then attach the debugger to a Process (Ctrl+Alt+P).&amp;nbsp; Obviously, this can get tedious.&amp;nbsp; There is a more appropriate and efficient way to debug the Windows Service project in which we&amp;rsquo;re developing.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bengalluzzo.com/image.axd?picture=DebugModeError_489x199.png"&gt;&lt;img style="background-image: none; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="DebugModeError_489x199" src="http://www.bengalluzzo.com/image.axd?picture=DebugModeError_489x199_thumb.png" border="0" alt="DebugModeError_489x199" width="491" height="203" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start out by constructing a simple Windows Service&amp;hellip;&amp;nbsp; Add a Windows Service class item to the project; in our case, the class is named &lt;span style="font-family: 'Courier New';"&gt;AgentService&lt;/span&gt;.&amp;nbsp;&lt;/p&gt;
&lt;pre class="brush: c-sharp;"&gt;using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;

using System.Timers;

namespace ProvingGrounds.Agent
{
    partial class AgentService : ServiceBase
    {
        private Timer timer = null;

        public AgentService()
        {
            InitializeComponent();

            timer = new Timer(6000);
            timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
            timer.Enabled = true;
            timer.AutoReset = true;
        }

        protected override void OnStart(string[] args)
        {
            Start();
        }

        protected override void OnStop()
        {
            Stop();
        }

        public void Start()
        {
            timer.Start();
        }

        public void Stop()
        {
            timer.Stop();
        }

        void timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            //TODO:Do Something
        }
    }
}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Next, update Main() found in Program.cs to execute AgentService.&lt;/p&gt;
&lt;pre class="brush: c-sharp;"&gt;        static void Main()
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
			{ 
				new AgentService() 
			};
            ServiceBase.Run(ServicesToRun);
        }&lt;/pre&gt;
&lt;p&gt;We should now have our Windows Service constructed. Feel free to compile it and then go ahead try running it in debug mode. You should be receiving our "Start Failure" error message.&lt;/p&gt;
&lt;p&gt;Next, let's get this thing running in debug mode from Visual Studio. We can do this by adding the #if DEBUG preprocessor directive to our Main() function. We simply wrap the existing call to our AgentService with the conditional preprocessor directives.&lt;/p&gt;
&lt;pre class="brush: c-sharp;"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceProcess;
using System.Text;

using System.Threading;

namespace ProvingGrounds.Agent
{
    static class Program
    {
        static void Main()
        {
            #if DEBUG
            
            AgentService agentService = new AgentService();
            agentService.Start();

            Thread.Sleep(Timeout.Infinite);

            agentService.Stop();

            #else

            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
			{ 
				new AgentService() 
			};
            ServiceBase.Run(ServicesToRun);
            
            #endif
        }
    }
}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;That's all there is to.&amp;nbsp; Go ahead and hit F5 from Visual Studio and your Windows Project should be running in Debug Mode.&lt;/p&gt;</description>
      <link>http://www.bengalluzzo.com/post/2011/01/14/Setting-Up-Debug-Mode-for-a-Windows-Service-Project.aspx</link>
      <comments>http://www.bengalluzzo.com/post/2011/01/14/Setting-Up-Debug-Mode-for-a-Windows-Service-Project.aspx#comment</comments>
      <guid>http://www.bengalluzzo.com/post.aspx?id=f5bfe414-b111-4bbe-866b-678ed07e7974</guid>
      <pubDate>Fri, 14 Jan 2011 17:36:00 +0300</pubDate>
      <category>.NET</category>
      <category>Debugging</category>
      <category>Windows Service</category>
      <category>C#</category>
      <dc:publisher>Admin</dc:publisher>
      <pingback:server>http://www.bengalluzzo.com/pingback.axd</pingback:server>
      <pingback:target>http://www.bengalluzzo.com/post.aspx?id=f5bfe414-b111-4bbe-866b-678ed07e7974</pingback:target>
      <slash:comments>391</slash:comments>
      <trackback:ping>http://www.bengalluzzo.com/trackback.axd?id=f5bfe414-b111-4bbe-866b-678ed07e7974</trackback:ping>
      <wfw:comment>http://www.bengalluzzo.com/post/2011/01/14/Setting-Up-Debug-Mode-for-a-Windows-Service-Project.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.bengalluzzo.com/syndication.axd?post=f5bfe414-b111-4bbe-866b-678ed07e7974</wfw:commentRss>
    </item>
    <item>
      <title>Rounding-Out A Class Library – Extension Methods</title>
      <description>&lt;p&gt;One potential improvement to a custom class library could lie in the use of extension methods.&amp;#160; In short, extension methods are a quick and simple way to extend a type without modifying or recompiling the actual type which is being extended.&amp;#160; Utilizing an extension method is as simple as calling the &lt;em&gt;&lt;strong&gt;ToString()&lt;/strong&gt;&lt;/em&gt; method on a type.&amp;#160; At first it may seem difficult to come up with uses for extension methods.&amp;#160; However, working through a project, potential use for an extension method may present itself and also could very well reside in commonly created utility classes.&amp;#160; Operations often performed against a type in the same context is a perfect use for converting a utility function into an extension method.&lt;/p&gt;  &lt;p&gt;Defining an extension method might seem a little odd at first to the uninitiated.&amp;#160; Take a bit of time to think about what’s happening under the hood to provide this added functionality, automatically, to an existing type. The first parameter of an extension method takes on the &lt;em&gt;&lt;strong&gt;this&lt;/strong&gt;&lt;/em&gt; modifier to accept the type on which the method operates.&amp;#160; Utilizing the extension methods requires adding a &lt;em&gt;&lt;strong&gt;using&lt;/strong&gt;&lt;/em&gt; directive of the namespace for which the extension method resides.&amp;#160; &lt;/p&gt;  &lt;p&gt;Below are a couple very simple examples of extension methods and their use.&amp;#160; These two extension methods provide a boolean value for a check of a null value or an empty value against an Array type and also a for String type.&lt;/p&gt;  &lt;pre class="brush: csharp;"&gt;using System;

namespace ProvingGrounds.Lib
{
    public static class LibraryExtensions
    {
        public static bool IsNullOrEmpty(this Array _value)
        {
            return (_value == null || _value.Length == 0);
        }

        public static bool IsNullOrEmpty(this string _value)
        {
            return (_value == null || _value.Length == 0);
        }

    }
}&lt;/pre&gt;
Utilizing these new extension methods can only be done if applying the proper using directive to the calling class; in this case, using &lt;font color="#008000"&gt;ProvingGrounds.Lib&lt;/font&gt;. 

&lt;pre class="brush: csharp;"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using ProvingGrounds.Lib;

namespace ProvingGrounds.Console
{
    class Program
    {
        static void Main(string[] args)
        {
            string emptyTest = null;
            if (emptyTest.IsNullOrEmpty())
                System.Console.WriteLine(&amp;quot;emptyTest is null or empty&amp;quot;);
        }
    }
}&lt;/pre&gt;

&lt;p&gt;Omitting the proper using directive will result in the extension method not being available for use.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.bengalluzzo.com/image.axd?picture=ExtensionMethod_271x101.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="ExtensionMethod_271x101" border="0" alt="ExtensionMethod_271x101" src="http://www.bengalluzzo.com/image.axd?picture=ExtensionMethod_271x101_thumb.png" width="273" height="105" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Care should be taken when enabling more global usage. For instance, if the class housing the extension methods are added to the &lt;font color="#008000"&gt;System&lt;/font&gt; namespace, their use can be made more readily available. &lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;using System;

namespace System
{
    public static class SystemExtensions
    {
        public static bool IsNullOrEmpty(this Array _value)
        {
            return (_value == null || _value.Length == 0);
        }

        public static bool IsNullOrEmpty(this string _value)
        {
            return (_value == null || _value.Length == 0);
        }

    }
}&lt;/pre&gt;

&lt;p&gt;So there it is. A couple of very simply extension methods in practice. Have fun with them. Use them to simplify often used operations on types; operations whose functionality may already reside in common util classes.&lt;/p&gt;</description>
      <link>http://www.bengalluzzo.com/post/2010/11/01/Rounding-Out-Your-Class-Library-–-Extension-Methods.aspx</link>
      <comments>http://www.bengalluzzo.com/post/2010/11/01/Rounding-Out-Your-Class-Library-–-Extension-Methods.aspx#comment</comments>
      <guid>http://www.bengalluzzo.com/post.aspx?id=22ed5c09-889d-4f5b-82e2-1a7274180e25</guid>
      <pubDate>Mon, 01 Nov 2010 16:57:00 +0300</pubDate>
      <category>.NET</category>
      <dc:publisher>admin</dc:publisher>
      <pingback:server>http://www.bengalluzzo.com/pingback.axd</pingback:server>
      <pingback:target>http://www.bengalluzzo.com/post.aspx?id=22ed5c09-889d-4f5b-82e2-1a7274180e25</pingback:target>
      <slash:comments>132</slash:comments>
      <trackback:ping>http://www.bengalluzzo.com/trackback.axd?id=22ed5c09-889d-4f5b-82e2-1a7274180e25</trackback:ping>
      <wfw:comment>http://www.bengalluzzo.com/post/2010/11/01/Rounding-Out-Your-Class-Library-–-Extension-Methods.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.bengalluzzo.com/syndication.axd?post=22ed5c09-889d-4f5b-82e2-1a7274180e25</wfw:commentRss>
    </item>
    <item>
      <title>Utilizing table variable and while loop to avoid cursor-style operations</title>
      <description>&lt;p&gt;So, here is one of many scenarios in which the work performed can be accomplished by use of a cursor. &amp;nbsp;For a long running set of queries such as what's listed below, utilizing a cursor could have undesired painful effects such as blocking. &amp;nbsp;In a tough spot, those who look toward a procedural approach in SQL often quickly jump to using cursors.&lt;/p&gt;
&lt;p&gt;Here the scenario is described. &amp;nbsp;There are two dissimilar systems. The first is the old system which will still be in production for an indefinite period of time. &amp;nbsp;The old system is actually comprised of multiple systems on multiple SQL servers; one for each client. &amp;nbsp;The second, the replacement system, is running along side the old system and is managing different data of the same type of business process. &amp;nbsp;Specific work data is to be retrieved from the old system and married to the work data being retrieved from the new system so team leads can keep tabs on the work data without going to both systems.&lt;/p&gt;
&lt;p&gt;It's actually fairly easy to utilize a&amp;nbsp;table variable and a while loop to avoid these cursor-style operations. &amp;nbsp;Here is an example of a very simplified operation to obtain the related client data from the older system in preparation for marrying it to the related client data from the new system. &amp;nbsp;This example also briefly looks at a way to generate dynamic SQL. There probably is a better way to do this type of work, but it is indeed easy enough for most to be able to wrap their mind around.&lt;/p&gt;
&lt;p&gt;The key pieces of the query are the table variable containing the list of client databases, an iterator, a total row count variable, and the while loop. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;The table variable, of course, will only persist in the life time of the SQL connection. &amp;nbsp;Once the query has completed, the table variable is gone. &amp;nbsp;Creating the table variable with an auto-incrementing integer identity field provides for the ability to actually loop through the work list.&lt;/p&gt;
&lt;div&gt;
&lt;pre class="brush: sql;"&gt;DECLARE @clientData table (                      
    RowNum int IDENTITY (1, 1) Primary key NOT NULL,                      
    ClientID uniqueidentifier,          
    ClientName varchar(100),               
    ClientSource varchar(50)  --location of old system
)                 &lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now, populate the temp table with all of items for with which to work. &amp;nbsp;Next, is the preparation of the variables to be able to run through the loop properly.&lt;/p&gt;
&lt;pre class="brush: sql;"&gt;DECLARE @rowCount int                      
DECLARE @maxRows int                    
                      
SELECT @rowCount = 1            
          
SELECT @maxRows = count(*) from @clientData          
PRINT @maxrows&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Then the loop is built; being sure that the @rowCount variable is incremented by one for the next return back through the loop. &amp;nbsp;Note&amp;nbsp;how the current temp table row data can be accessed for use inside the loop.&amp;nbsp;&lt;/p&gt;
&lt;pre class="brush: sql;"&gt;WHILE @rowCount &amp;lt;= @maxRows                      
BEGIN              
    DECLARE @clientID uniqueidentifier          
    SET @clientID = (SELECT ClientID FROM @clientData WHERE rowNum = @rowCount)          
        
    DECLARE @clientName varchar(100)          
    SET @clientName = (SELECT ClientName FROM @clientData WHERE rowNum = @rowCount)          
              
    DECLARE @sourceName varchar(50)                      
    SET @sourceName = (SELECT ClientSource FROM @clientData WHERE rowNum = @rowCount)                      
          
    DECLARE @sql varchar(4500)          
          
    SET @sql = '          
    INSERT INTO WorkList          
    SELECT
        '''+@clientID+''' ClientID,
        WI.create_date CreatedDate,       
        '''+@clientName+''' Client,          
        ....
        ....
        ....
        ....
        ....
        ....
        ....
    LEFT JOIN          
        ' + @sourceName + '.dbo.WorkItem WI
    ON          
    '                            
    EXEC SP_EXECUTESQL @SQL
          
    SELECT @rowCount = @rowCount + 1   
END&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To provide the big picture, here is the query in its entirety.&amp;nbsp;&lt;/p&gt;
&lt;pre class="brush: sql;"&gt;-------------------------------------------------------          
-- Begin - Obtain client list          

DECLARE @clientData table (                      
    RowNum int IDENTITY (1, 1) Primary key NOT NULL,                      
    ClientID uniqueidentifier,          
    ClientName varchar(100),               
    ClientSource varchar(50)  --location of old system
)                 
          
INSERT INTO @clientData (ClientID, ClientName, ClientSource)          
SELECT          
    C.ID ClientID,          
    C.[Name] ClientName,            
    '[' + M.cServer + '].' + M.cDatabase ClientSource              
FROM [ModernServer].CoreClient.dbo.Client C
LEFT JOIN Mapping.dbo.Client M
ON C.MappingClientID = M.cID                  
WHERE C.IsActive = 1                      
          
-- End - Obtain client list          
-------------------------------------------------------          
          
-------------------------------------------------------                                  
-- Begin - Create temp table                                  
                                  
IF object_id('WorkList') IS NOT NULL                                  
BEGIN                                  
    DROP TABLE WorkList
    PRINT 'Table Dropped'                                  
END                                  
                                  
CREATE TABLE WorkList (
    ClientID uniqueidentifier,
    CreatedDate datetime,    
    ClientName varchar(100),
    CreatedByName varchar(100),          
    ProblemCode varchar(50),          
    CustomerName varchar(100),          
    AccountNumber varchar(50),          
    StatusType varchar(25),
    LastUpdateDate datetime,
    UpdatedByName varchar(100)
)                                  
     
-- End - Create temp table                               
-------------------------------------------------------           

DECLARE @rowCount int                      
DECLARE @maxRows int                    
                      
SELECT @rowCount = 1            
          
SELECT @maxRows = count(*) from @clientData          
PRINT @maxrows
          
WHILE @rowCount &amp;lt;= @maxRows                      
BEGIN              
    DECLARE @clientID uniqueidentifier          
    SET @clientID = (SELECT ClientID FROM @clientData WHERE rowNum = @rowCount)          
        
    DECLARE @clientName varchar(100)          
    SET @clientName = (SELECT ClientName FROM @clientData WHERE rowNum = @rowCount)          
              
    DECLARE @sourceName varchar(50)                      
    SET @sourceName = (SELECT ClientSource FROM @clientData WHERE rowNum = @rowCount)                      
          
    DECLARE @sql varchar(4500)          
          
    SET @sql = '          
    INSERT INTO WorkList          
    SELECT
        '''+@clientID+''' ClientID,
        WI.create_date CreatedDate,       
        '''+@clientName+''' Client,          
        ....
        ....
        ....
        ....
        ....
        ....
        ....
    LEFT JOIN          
        ' + @sourceName + '.dbo.WorkItem WI
    ON          
    '                  
          
    PRINT (@SQL)
    EXEC SP_EXECUTESQL @SQL
          
    SELECT @rowCount = @rowCount + 1   
END&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;That's all there is to it. &amp;nbsp;This is just one example of so many others to use a temp table or table variable and while loop in lieu of a cursor. &amp;nbsp;&amp;nbsp;&lt;/p&gt;</description>
      <link>http://www.bengalluzzo.com/post/2010/05/07/Utilizing-table-variable-and-while-loop-to-avoid-cursor-style-operations.aspx</link>
      <comments>http://www.bengalluzzo.com/post/2010/05/07/Utilizing-table-variable-and-while-loop-to-avoid-cursor-style-operations.aspx#comment</comments>
      <guid>http://www.bengalluzzo.com/post.aspx?id=be7bc9f5-1506-4281-9b7a-ea63cbc95700</guid>
      <pubDate>Fri, 07 May 2010 17:57:00 +0300</pubDate>
      <category>SQL</category>
      <dc:publisher>Ben Galluzzo</dc:publisher>
      <pingback:server>http://www.bengalluzzo.com/pingback.axd</pingback:server>
      <pingback:target>http://www.bengalluzzo.com/post.aspx?id=be7bc9f5-1506-4281-9b7a-ea63cbc95700</pingback:target>
      <slash:comments>459</slash:comments>
      <trackback:ping>http://www.bengalluzzo.com/trackback.axd?id=be7bc9f5-1506-4281-9b7a-ea63cbc95700</trackback:ping>
      <wfw:comment>http://www.bengalluzzo.com/post/2010/05/07/Utilizing-table-variable-and-while-loop-to-avoid-cursor-style-operations.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.bengalluzzo.com/syndication.axd?post=be7bc9f5-1506-4281-9b7a-ea63cbc95700</wfw:commentRss>
    </item>
  </channel>
</rss>