<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>Coding</title>
        <link>http://edsid.com/blog/category/40.aspx</link>
        <description>Coding</description>
        <language>en-US</language>
        <copyright>Gerry Heidenreich</copyright>
        <managingEditor>grh@whdlaw.com</managingEditor>
        <generator>Subtext Version 1.9.5.177</generator>
        <item>
            <title>ASP.Net and Active Directory: The authentication mechanism is unknown</title>
            <link>http://edsid.com/blog/archive/2009/07/01/asp.net-and-active-directory-the-authentication-mechanism-is-unknown.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;The authentication mechanism is unknown&lt;br /&gt;
&lt;/strong&gt;I recently came across this issue when working with Active Directory in ASP.Net.  Turns out I needed to fully qualify my AD access username with the domain name.  When composing a DirectoryEntry([Domain], [Username], [Password]), precede the UserName with the Domain:  &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;DirectoryEntry de = new DirectoryEntry("LDAP://domainName", "domainName\gerryheidenreich", "myPassword");&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;I'm not sure yet why this web app is behaving different from others I've written that use AD, but this fixed the problem.&lt;/p&gt;&lt;img src="http://edsid.com/blog/aggbug/23327.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gerry Heidenreich</dc:creator>
            <guid>http://edsid.com/blog/archive/2009/07/01/asp.net-and-active-directory-the-authentication-mechanism-is-unknown.aspx</guid>
            <pubDate>Wed, 01 Jul 2009 20:55:21 GMT</pubDate>
            <wfw:comment>http://edsid.com/blog/comments/23327.aspx</wfw:comment>
            <comments>http://edsid.com/blog/archive/2009/07/01/asp.net-and-active-directory-the-authentication-mechanism-is-unknown.aspx#feedback</comments>
            <wfw:commentRss>http://edsid.com/blog/comments/commentRss/23327.aspx</wfw:commentRss>
            <trackback:ping>http://edsid.com/blog/services/trackbacks/23327.aspx</trackback:ping>
        </item>
        <item>
            <title>ConnectionStrings.Retrieve("Billing")</title>
            <link>http://edsid.com/blog/archive/2009/01/21/connectionstrings.retrieve.aspx</link>
            <description>&lt;font size="2"&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Connecting To Data&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;
CRM, DMS, Active Directory, internet / intranets / extranets, project management, time &amp;amp; billing, etc... All these systems provide valuable data for our custom development here at Whyte Hirschboeck Dudek. We regularly tap into these systems to retrieve information, so writing connection strings for each system was a regular occurrence, and a pain in the neck when one of our enterprise systems changed servers, or account information for security reasons - various custom apps would break and we would scramble to update the connection info in all the right places, to the new information.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;The Good Kind of Lazy&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;
I was feeling particularly lazy one day, and decided to fix the problem for good. I put all of our connection string data into a single table on a sql server, wrote a ConnectionStrings static class to Retrieve("systemName") them as needed, and a 2 minute cache to keep performance under control. Our apps now only need a reference to the ConnectionStrings class.  No more worrying about specific machine/account details, or XML file updates across multiple config files on the network.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Consequences&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;
Consequences need to be considered carefully, but are pretty easy to live with or get a handle on.  Server/db failure can be handled with a &lt;a href="http://bradmarsh.net/index.php/2008/07/29/sql-2005-mirroring-automatic-failover/"&gt;failover&lt;/a&gt;, or good disaster recovery plan.  There are a couple additional db calls, which again should have minimal impact on performance if you cache your connection strings when you retrieve them.  Finally, developers need to figure out the names to connect by.  We handled this with a quick datagrid web app that retrieves the ConnectionStrings table contents for reference.  Any arguments about security have better counter-arguments, especially when you consider that you can now change the way you retrieve connectionstrings easily (web service, xml file, hard-coded in the dll, encryption, etc), and therefore evolve your security for everything at once.  Furthermore, security accounts on these systems can be updated without fear of breaking custom apps.  The new information can be updated easily in the ConnectionStrings table.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;The benefits&lt;/font&gt;&lt;/strong&gt;, off the top of my head:&lt;/p&gt;
&lt;p&gt;- Connect semantically to our systems (by name &amp;amp; context), Retrieve("DocumentManagementSystem") instead of the traditional method "...server=ObiWanKenobi04..."&lt;/p&gt;
&lt;p&gt;- Connect in the code (why not?), instead of in an XML file somewhere&lt;/p&gt;
&lt;p&gt;- Single point for {failure &amp;amp; recovery, security, monitoring &amp;amp; auditing}&lt;/p&gt;
&lt;p&gt;- Integration across systems feels more natural, less fragile&lt;/p&gt;
&lt;p&gt;- DBA can manage connectionstrings and account security, and just provide meaningful names to the dev team&lt;/p&gt;
&lt;p&gt;- Log ALL connections retrieved, by application, user, &amp;amp; time&lt;/p&gt;
&lt;/font&gt;&lt;img src="http://edsid.com/blog/aggbug/23324.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gerry Heidenreich</dc:creator>
            <guid>http://edsid.com/blog/archive/2009/01/21/connectionstrings.retrieve.aspx</guid>
            <pubDate>Wed, 21 Jan 2009 17:12:11 GMT</pubDate>
            <wfw:comment>http://edsid.com/blog/comments/23324.aspx</wfw:comment>
            <comments>http://edsid.com/blog/archive/2009/01/21/connectionstrings.retrieve.aspx#feedback</comments>
            <wfw:commentRss>http://edsid.com/blog/comments/commentRss/23324.aspx</wfw:commentRss>
            <trackback:ping>http://edsid.com/blog/services/trackbacks/23324.aspx</trackback:ping>
        </item>
        <item>
            <title>Enterprise Integration with POCOs</title>
            <link>http://edsid.com/blog/archive/2008/08/27/enterprise-integration-with-pocos.aspx</link>
            <description>&lt;p&gt;Our custom development here at Whyte Hirschboeck Dudek regularly requires integration with our enterprise systems, from Active Directory to Time &amp;amp; Billing, our custom Marketing Dashboard, Document Management System, Customer Relations Management, etc... &lt;/p&gt;
&lt;p&gt;A few examples of data we may regularly need include:&lt;br /&gt;
- Contact information&lt;br /&gt;
- Member of a security or distribution group in Active Directory&lt;br /&gt;
- Current secretaries assigned to lawyers, or vice-versa&lt;br /&gt;
- Who is associated with what clients and projects&lt;/p&gt;
&lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;Motivation&lt;/strong&gt;&lt;/font&gt; &lt;br /&gt;
&lt;strong&gt;A small disclaimer&lt;/strong&gt;&lt;em&gt;: we are lucky to be in a Microsoft house, with Visual Studio 2008, Active Directory, Exchange, (mostly) SQL 2000 &amp;amp; 2005, and some APIs to play with.  Our systems are positioned to play nice with each other.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;There are so many different infrastructure frameworks, paradigms, and architectures that it is overwhelming to try to keep up (just learning about them, never mind putting them into production!).  Sure, service-enabling your enterprise with SOA seems to fit the bill through total abstraction, but the up-front costs are &lt;em&gt;huge&lt;/em&gt;, and the ROI is uncertain at best.  &lt;/p&gt;
&lt;p&gt;As you probably know, POJO is a formalized ('&lt;a href="http://www.martinfowler.com/bliki/POJO.html"&gt;Fowlerized&lt;/a&gt;") term for a 'plain old java object', and POCO is the CLR representation (PORO is Ruby, etc).  It is a domain entity that carries no special baggage.  It doesn't extend anything or carry any dependencies on other frameworks or methodologies, &lt;em&gt;only the CLR&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;When writing the application itself (a webpart or user control, clickonce app/utility, extranet, report, etc) 100% focus should be on the application's purpose and logic.  I should never have to tell the application what a Client is, just that I need one.  I shouldn't have to say that a client has matters, my client object should expose that for me!  Also, I don't want to get my objects by writing up services, proxies, ORM metadata, and various providers unless it is absolutely necessary.  I know these things are what's cool, and I need to grow up, but I like simplicity: I want my app to be as simple as possible to develop, and I want anything written outside the bounds of my app to be available as a single .dll file that describes my business entities so they can be &lt;em&gt;reused&lt;/em&gt; later by other projects.&lt;/p&gt;
&lt;p&gt;.Net provides some amazing capabilities for wiring an app together: Lambdas, LINQ, Extension methods, Generics, System.Converter&amp;lt;T1, T2&amp;gt;.  It is much more capable than it used to be to work with objects quickly and easily &lt;em&gt;on its own.  &lt;/em&gt;(With this in mind, I am anxious to see what the &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=entity+framework&amp;amp;aq=f&amp;amp;oq="&gt;Entity Framework&lt;/a&gt; does for us as far as value:complexity!)&lt;/p&gt;
&lt;p&gt;The following explains our approach, starting with the fundamental bits in our framework, the core library...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Enterprise Core Library&lt;/font&gt;&lt;/strong&gt; &lt;br /&gt;
The foundation of our enterprise integration efforts.  The classes contain regularly needed functionality like:&lt;br /&gt;
- Logging (to a single EnterpriseLog table)&lt;br /&gt;
- Connection strings to various systems (SQL, Ldap, Service URLs)&lt;br /&gt;
- Email, Notifications&lt;br /&gt;
- Active Directory querying&lt;br /&gt;
- ClickOnce helpers (add to startup, autoupdate methods, etc)&lt;br /&gt;
- SQL access methods for reading and executing SqlCommand objects.&lt;br /&gt;
- List to RSS mapping&lt;/p&gt;
&lt;p&gt;Our custom apps need a few keys in their .config, to access Active Directory, and to access our WhdEnterprise.ConnectionStrings table.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;ConnectionStrings&lt;/font&gt;&lt;/strong&gt;  (&lt;a href="http://www.edsid.com/blog/archive/2009/01/21/connectionstrings.retrieve.aspx"&gt;here is my post on this&lt;/a&gt;)&lt;br /&gt;
Connecting to a system from our apps are trivial: ConnectionString.Retrieve("TimeBilling") grabs the appropriate string from the WhdEnterprise.ConnectionStrings table.  When (not if) the Time &amp;amp; Billing system moves servers, update the row in the table instead of mass-updating config files for all broken apps that use it.  A dictionary cache exists to keep performance from being an issue.&lt;/p&gt;
&lt;p&gt;ConnectionStrings may be used for more than just databases... consider LDAP string for Active Directory, and URLs for web services.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;User&lt;br /&gt;
&lt;/font&gt;&lt;/strong&gt;One of our most fundamental objects is in our Core library: WhdUser.&lt;/p&gt;
&lt;p&gt;WhdUser.Current uses Environment.UserName to identify the current user when needed, and optionally (lazily) grab email, phone extension, and computername from Active Directory.  &lt;/p&gt;
&lt;p&gt;Once the current user is identified, a domain-specific user can be instantiated (ex: List&amp;lt;Client&amp;gt; clients = TimeBillingUser(WhdUser.Current).Clients).  Each system has its POCO user object, and controller to retrieve the relevant domain-specific info.  Our time &amp;amp; billing system for instance, has a TimeBillingUser, which may have properties and methods like Secretaries, Clients, Projects, HoursWorked(), HoursBilled(), HoursCollected(), etc.  This data is lazy-loaded when appropriate.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Organic, &lt;em&gt;Evolutionary&lt;/em&gt; library growth&lt;/font&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;em&gt;"We stress the importance of creating objects not to meet mythical future needs, but only under the demands of the moment. This ensures that a design contains only as much information as the designer has directly experienced, and avoids premature complexity."&lt;/em&gt; - Kent Beck &amp;amp; Ward Cunningham, &lt;a href="http://c2.com/doc/oopsla89/paper.html"&gt;A Laboratory For Teaching Object-Oriented Thinking&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We extend our libraries only as needed, to meet current requirements.  The caveat is that we must keep our libraries backwards-compatible.  This can be accomplished easily by writing tests as the library is developed, and making sure those tests stay with the library project, and are run every time the project is extended.&lt;/p&gt;
&lt;p&gt;For example, to get a list of our most active lawyers, we may write a library that contains objects for Timekeeper, and Timecard, then map these into our Time &amp;amp; Billing system that contains our timekeeper and financial (hours worked) data.  At a later date, we may need a list of clients a lawyer does work for, so we would create a Client object, and map it into the appropriate table(s).&lt;/p&gt;
&lt;p&gt;At this point, we have a single DLL (Whd.Enterprise.TimeBilling.dll) that is deployed with the new app.  Other deployments of this dll used by other apps are older, but they were deployed with the requirements &lt;em&gt;that app&lt;/em&gt; needed.  With tests in place, those older apps should not have to worry about the new TimeBilling library being incompatible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Controllers&lt;/font&gt;&lt;/strong&gt; &lt;br /&gt;
This is a controversial idea, and my naming could be better (not to be confused with MVC controller), but it works very nicely to develop against (especially with Intellisense).  Each enterprise object has 2 classes, the POCO (plain old CLR object), and its controller class (Client, and ClientController respectively).  Controller classes are full of static methods to do the work.  &lt;/p&gt;
&lt;p&gt;One of the key methods in the controller is Read(), which does the object-relational mapping.  The Read() method is delegated to the Core's Sql class to handle, and returns the appropriate POCO it's responsible for.  Other methods are added as needed, and if the controller class ever gets too big or busy to work with, it can then be refactored out to partial class files.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Pragmatic App Development&lt;/font&gt;&lt;/strong&gt; &lt;br /&gt;
From the app-developer's perspective, integrating with the enterprise should be as simple as possible:&lt;br /&gt;
- Add projects to my solution for each library I will be using, extend it as needed to fulfill my needs (or just reference the dll!)&lt;br /&gt;
- Reference the enterprise projects in my app's solution. &lt;br /&gt;
- Simplest possible namespace structure as possible.  Ideally, "WHD.Enterprise." opens up all of the domain objects and controllers I would ever need.  &lt;br /&gt;
- [Object] &amp;amp; [Object]Controller is the only enterprise-related pattern I need to understand.  &lt;br /&gt;
- Centralized logging (&lt;a href="http://www.edsid.com/blog/archive/2008/04/01/enterpriselog-usage-logging.aspx"&gt;Logging usage&lt;/a&gt; has proved its value already)&lt;/p&gt;
&lt;p&gt;Hopefully this is a good start to explain my thought and dev processes.  Don't hesitate to post any questions and/or criticism, I am sure that in future posts I will delve deeper into some of the bits, maybe even post some code.&lt;/p&gt;&lt;img src="http://edsid.com/blog/aggbug/23321.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gerry Heidenreich</dc:creator>
            <guid>http://edsid.com/blog/archive/2008/08/27/enterprise-integration-with-pocos.aspx</guid>
            <pubDate>Wed, 27 Aug 2008 23:20:36 GMT</pubDate>
            <wfw:comment>http://edsid.com/blog/comments/23321.aspx</wfw:comment>
            <comments>http://edsid.com/blog/archive/2008/08/27/enterprise-integration-with-pocos.aspx#feedback</comments>
            <wfw:commentRss>http://edsid.com/blog/comments/commentRss/23321.aspx</wfw:commentRss>
            <trackback:ping>http://edsid.com/blog/services/trackbacks/23321.aspx</trackback:ping>
        </item>
        <item>
            <title>GiveCamps: Geeks Giving Back</title>
            <link>http://edsid.com/blog/archive/2008/08/08/givecamps-geeks-giving-back.aspx</link>
            <description>&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Overview&lt;/font&gt;:&lt;/strong&gt; A Give Camp is a gathering of professionals (developers, graphic designers, database ninjas) that volunteer their time and resources to design and implement solutions (websites, applications, content-management systems, etc) for various charities and non-profit groups.  Proposals can be submitted by non-profit groups and charities before the camp, and they are reviewed and selected, and teams of volunteers are organized to represent a project, create a plan and execute it, all over the period of a single weekend.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Projects / Features&lt;/font&gt;:&lt;br /&gt;
&lt;/strong&gt;Web sites, new sections&lt;br /&gt;
Access Databases&lt;br /&gt;
Mobility Projects&lt;br /&gt;
New Content Management System (Graftiti, DotNetNuke, Sharepoint)&lt;br /&gt;
Intranet&lt;br /&gt;
Membership Tracking App&lt;br /&gt;
Paypal integration&lt;br /&gt;
Hosting&lt;br /&gt;
Training&lt;br /&gt;
Social Media Presence &amp;amp; Advocacy&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Volunteer Qualifications&lt;/font&gt;:&lt;/strong&gt;&lt;br /&gt;
Most importantly: A desire to contribute&lt;br /&gt;
Development experience (any level of expertise)&lt;br /&gt;
Sharepoint&lt;br /&gt;
Database Administrators&lt;br /&gt;
Developers! (.Net, Java, C++, PHP, Excel, Html)&lt;br /&gt;
Flash Developers &amp;amp; Designers&lt;br /&gt;
Photography&lt;br /&gt;
Social Media&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Other GiveCamps&lt;/font&gt;:&lt;br /&gt;
&lt;em&gt;Upcoming&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;:&lt;br /&gt;
&lt;/em&gt;- &lt;a href="http://indygivecamp.org/"&gt;Indianapolis, Indiana&lt;/a&gt;, January 23-25, 2009&lt;br /&gt;
- &lt;a href="http://www.givecampmke.org/"&gt;Milwaukee, WI&lt;/a&gt;, TBD (Nov-Dec, 2008?), &lt;a href="http://www.tapmymind.com/blog/tap_my_mind/archive/2008/08/05/givecamp-mke.aspx"&gt;Scott's announcement&lt;/a&gt;&lt;br /&gt;
- &lt;a href="http://www.nwadnug.org/"&gt;Northwest Arkansas .Net UG&lt;/a&gt;, TBD, &lt;a href="http://jaysmith.us/index.php/2008/07/northwest-arkansas-givecamp-organizing/"&gt;Jay's announcement&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Past&lt;/strong&gt;:&lt;/em&gt;&lt;br /&gt;
- &lt;a href="http://www.wearemicrosoft.com/WAM/Home.aspx"&gt;Dallas, Texas&lt;/a&gt;, January 18-20, 2008&lt;br /&gt;
- &lt;a href="http://coders4charities.com/"&gt;Kansas City&lt;/a&gt;, April 25-27, 2008&lt;br /&gt;
- &lt;a href="http://annarborgivecamp.org/"&gt;Ann Arbor, Michigan&lt;/a&gt;, July 11-13, 2008&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;font color="#ff0000"&gt;Important URLs&lt;/font&gt;:&lt;/strong&gt;&lt;br /&gt;
- &lt;a href="http://givecamp.org/"&gt;Givecamp.org&lt;/a&gt;&lt;br /&gt;
- &lt;a href="http://www.wearemicrosoft.com/Charity/Charities.aspx"&gt;We Are Microsoft: 18 projects for charities&lt;/a&gt; (brief case studies! - click links to see project details)&lt;br /&gt;
- &lt;a href="http://blogs.msdn.com/jennifer/archive/2008/07/15/ann-arbor-give-camp.aspx"&gt;Jennifer Marsman's review of the Ann Arbor Give Camp&lt;/a&gt;&lt;br /&gt;
- &lt;a href="http://search.twitter.com/search?q=%22givecamp%22"&gt;Twitter chatter "givecamp"&lt;/a&gt;&lt;br /&gt;
- &lt;a href="http://www.new.facebook.com/group.php?gid=25590171916"&gt;GiveCamp Facebook Group&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;People&lt;/font&gt;:&lt;br /&gt;
&lt;/strong&gt;- &lt;a href="http://blogs.msdn.com/chkoenig/"&gt;Chris Koenig&lt;/a&gt;, Dev Evangelist @ Microsoft, Founder of first GiveCamp&lt;br /&gt;
- &lt;a href="http://blogs.msdn.com/jennifer/"&gt;Jennifer Marsman&lt;/a&gt;, Dev Evangelist @ Microsoft&lt;br /&gt;
- &lt;a href="http://www.davebost.com/blog/"&gt;Dave Bost&lt;/a&gt;, Dev Evangelist @ Microsoft&lt;br /&gt;
- &lt;a href="http://larryclarkin.com/"&gt;Larry Clarkin&lt;/a&gt;, Architect Evangelist @ Microsoft&lt;br /&gt;
- &lt;a href="http://www.tapmymind.com/blog/tap_my_mind/default.aspx"&gt;Scott Isaacs&lt;/a&gt;, President of WI .Net Users Group, leading up GiveCamp MKE&lt;br /&gt;
- &lt;a href="http://phacker.wordpress.com/"&gt;Paul Hacker&lt;/a&gt;, leading up Indianapolis GiveCamp&lt;br /&gt;
- &lt;a href="http://jaysmith.us/"&gt;Jay Smith&lt;/a&gt;, President, Northwest Arkansas .Net User's Group&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Accomplishments to date&lt;/font&gt;:&lt;br /&gt;
&lt;/strong&gt;- &lt;strong&gt;GiveCamp #1&lt;/strong&gt;: &lt;a href="http://www.wearemicrosoft.com/Charity/Charities.aspx"&gt;"We Are Microsoft" 18 projects from the first GiveCamp in Dallas, TX&lt;/a&gt;&lt;br /&gt;
- &lt;strong&gt;GiveCamp #2&lt;/strong&gt;: "Coders For Charities", Kansas City, Missouri (&lt;a href="http://coders4charities.com/news/"&gt;overview&lt;/a&gt;)&lt;br /&gt;
- - &lt;a href="http://coders4charities.com/news/c4c-boy-scouts-troop-813/"&gt;Boy Scouts Troop 813&lt;/a&gt;&lt;br /&gt;
- - &lt;a href="http://coders4charities.com/news/c4c-berean-bible-church/"&gt;Berean Bible Church&lt;/a&gt;&lt;br /&gt;
- - &lt;a href="http://coders4charities.com/news/c4c-task-force-omega-of-missouri-inc/"&gt;Task Force Omega of MO&lt;/a&gt;&lt;br /&gt;
- - &lt;a href="http://coders4charities.com/news/c4c-missouri-pit-bull-rescue/"&gt;Missouri Pit Bull Rescue&lt;/a&gt;&lt;br /&gt;
- - &lt;a href="http://coders4charities.com/news/c4c-mocsa/"&gt;Metropolitan Org to Counter Sexual Assault&lt;/a&gt;&lt;br /&gt;
- &lt;strong&gt;GiveCamp #3&lt;/strong&gt;: Ann Arbor, Michigan (&lt;a href="http://www.annarborgivecamp.org/"&gt;15 projects&lt;/a&gt;, charity names only, no details found)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Getting Started&lt;/font&gt;:&lt;br /&gt;
&lt;/strong&gt;&lt;a href="http://givecamp.org/information/givecamp-cookbook/"&gt;The GiveCamp cookbook&lt;/a&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Media Coverage, spreading the word&lt;/font&gt;:&lt;/strong&gt;&lt;br /&gt;
- Local news (&lt;a href="http://www.youtube.com/watch?v=9kSydh9b2Yo&amp;amp;eurl=http://coders4charities.com/news/"&gt;Kansas City Fox 4&lt;/a&gt;)&lt;br /&gt;
- Press Release (&lt;a href="http://coders4charities.com/news/c4c-official-press-release/"&gt;Kansas City&lt;/a&gt;)&lt;br /&gt;
- Radio (&lt;a href="http://coders4charities.com/news/thank-you-dick-dale/"&gt;Kansas City, Dick Dale Morning Show&lt;/a&gt;)&lt;br /&gt;
- Twitter&lt;br /&gt;
- Blogs&lt;br /&gt;
- Camp homepages&lt;br /&gt;
- GiveCamp.org&lt;/p&gt;
&lt;p&gt;This post will be updated as I find more info for each section, and I will have a series of posts on our Milwaukee GiveCamp as it comes together.  I am sure I have missed people and news, but this should serve as a good start to encapsulate the GiveCamp movement as it takes off.&lt;/p&gt;&lt;img src="http://edsid.com/blog/aggbug/23318.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gerry Heidenreich</dc:creator>
            <guid>http://edsid.com/blog/archive/2008/08/08/givecamps-geeks-giving-back.aspx</guid>
            <pubDate>Fri, 08 Aug 2008 19:24:59 GMT</pubDate>
            <wfw:comment>http://edsid.com/blog/comments/23318.aspx</wfw:comment>
            <comments>http://edsid.com/blog/archive/2008/08/08/givecamps-geeks-giving-back.aspx#feedback</comments>
            <wfw:commentRss>http://edsid.com/blog/comments/commentRss/23318.aspx</wfw:commentRss>
            <trackback:ping>http://edsid.com/blog/services/trackbacks/23318.aspx</trackback:ping>
        </item>
        <item>
            <title>Depot, an exercise in Community-Sourcing</title>
            <link>http://edsid.com/blog/archive/2008/06/07/depot-an-exercise-in-community-sourcing.aspx</link>
            <description>&lt;p&gt;No downloads or pics, just a quick rundown of a very cool app idea while it's in my head.&lt;/p&gt;
&lt;p&gt;About a year and a half ago, I wrote a small winforms app.  It's stayed &lt;em&gt;very&lt;/em&gt; rough around the edges and hasn't gone anywhere from the original prototype.  This prototype (I called it &lt;em&gt;Depot&lt;/em&gt;) was written as a &lt;font color="#ff0000"&gt;proof-of-concept of the simplest possible &lt;/font&gt;&lt;a title="Community-Sourcing: The act of taking a task traditionally performed by individual members of the group,  and exposing it to a controlled, generally large group of people who share the same interest as the group, in the form of an open call." href="http://www.edsid.com/blog/archive/2008/04/02/community-sourcing.aspx"&gt;&lt;font color="#ff0000"&gt;community-sourced&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt; bookmarking / tagging / searching tool that could possibly exist&lt;/font&gt;.  A self-organizing business-specific link / text library could provide immense value to a company.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Depot hinges on 4 basic features common with collaborative apps:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1. &lt;strong&gt;Producing&lt;/strong&gt;: Adding content in the form of URLS and/or text (2 different fields that can be used individually or combined)&lt;/p&gt;
&lt;p&gt;2. &lt;strong&gt;Tagging&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;3. &lt;strong&gt;Searching &lt;/strong&gt;for any item by any combination of title words or tag&lt;/p&gt;
&lt;p&gt;4. &lt;strong&gt;Sharing&lt;/strong&gt;: All content is automatically shared, and open to edit &amp;amp; extend, by anyone within the network&lt;/p&gt;
&lt;p&gt;The search is an autocomplete textbox, that works with any combination of title words and tags.  Typing &lt;strong&gt;&lt;font color="#ff0000"&gt;'catering'&lt;/font&gt;&lt;/strong&gt; displays all catering items, but as you start to type &lt;strong&gt;&lt;font color="#ff0000"&gt;'catering madison'&lt;/font&gt;&lt;/strong&gt;, the suggestions filter appropriately.  As you would expect, changing the text over to &lt;strong&gt;&lt;font color="#ff0000"&gt;'thai madison'&lt;/font&gt;&lt;/strong&gt; updates to items tagged or titled with thai and madison.&lt;/p&gt;
&lt;p&gt;The url + text fields is an interesting feature - a user may want to toss in a quick note for a catering url someone else added, like "Beware the red curry!!!".&lt;/p&gt;
&lt;p&gt;The app seemed to work beautifully, but the algorithm is not built to scale up yet.  Everything is cached heavily on the client-side.  There are no concurrency checks.  Also, to be fit for production, it will need some kind of user-auditing, history, and probably some kind of browser integration (or at least bookmark / favorites sync).&lt;/p&gt;
&lt;p&gt;I don't know yet what will become of Depot.  I hope to find the time and motivation soon to dust it off and start polishing it up for a pilot group.  If nothing else, I got an ornery hog of a tag-search algorithm that may come in useful someday.&lt;/p&gt;&lt;img src="http://edsid.com/blog/aggbug/23312.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gerry Heidenreich</dc:creator>
            <guid>http://edsid.com/blog/archive/2008/06/07/depot-an-exercise-in-community-sourcing.aspx</guid>
            <pubDate>Sun, 08 Jun 2008 04:43:59 GMT</pubDate>
            <wfw:comment>http://edsid.com/blog/comments/23312.aspx</wfw:comment>
            <comments>http://edsid.com/blog/archive/2008/06/07/depot-an-exercise-in-community-sourcing.aspx#feedback</comments>
            <wfw:commentRss>http://edsid.com/blog/comments/commentRss/23312.aspx</wfw:commentRss>
            <trackback:ping>http://edsid.com/blog/services/trackbacks/23312.aspx</trackback:ping>
        </item>
        <item>
            <title>Stackoverflow.com = joelonsoftware + codinghorror</title>
            <link>http://edsid.com/blog/archive/2008/04/16/stackoverflow.com--joelonsoftware--codinghorror.aspx</link>
            <description>&lt;p&gt;Jeff Atwood has paired up with Joel Spolsky and today they both announced stackoverflow.com, a new community support site that doesn't exist yet... but will be run by Jeff, created by the community for the community, and narrated weekly via podcast.  Looks like a digg-like structure where diggable items are answers to questions posted by the community.  Submit questions, submit answers, vote for answers...&lt;/p&gt;
&lt;p&gt;[&lt;a href="http://www.codinghorror.com/blog/archives/001101.html"&gt;Jeff's announcement&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;[&lt;a href="http://www.joelonsoftware.com/items/2008/04/16.html"&gt;Joel's announcement&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;[&lt;a href="http://www.stackoverflow.com/"&gt;stackoverflow.com&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;[&lt;a href="http://www.stackoverflow.com/audio/stackoverflow-podcast-001.mp3"&gt;podcast #1&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;This will be interesting... &lt;font face="Arial"&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://edsid.com/blog/aggbug/23306.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gerry Heidenreich</dc:creator>
            <guid>http://edsid.com/blog/archive/2008/04/16/stackoverflow.com--joelonsoftware--codinghorror.aspx</guid>
            <pubDate>Thu, 17 Apr 2008 03:37:58 GMT</pubDate>
            <wfw:comment>http://edsid.com/blog/comments/23306.aspx</wfw:comment>
            <comments>http://edsid.com/blog/archive/2008/04/16/stackoverflow.com--joelonsoftware--codinghorror.aspx#feedback</comments>
            <wfw:commentRss>http://edsid.com/blog/comments/commentRss/23306.aspx</wfw:commentRss>
            <trackback:ping>http://edsid.com/blog/services/trackbacks/23306.aspx</trackback:ping>
        </item>
        <item>
            <title>The Thirsty Developer, Project Euler</title>
            <link>http://edsid.com/blog/archive/2008/04/11/the-thirsty-developer-project-euler.aspx</link>
            <description>&lt;p&gt;I can't believe that I didn't post about this!  My site was acting up when we did this, so I probably didn't have a place to post it.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.larryclarkin.com/"&gt;Larry Clarkin&lt;/a&gt; &amp;amp; &lt;a href="http://www.davebost.com/blog/"&gt;Dave Bost&lt;/a&gt; from Microsoft have a podcast called &lt;a href="http://thirstydeveloper.com/"&gt;The Thirsty Developer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Back in December I met up with Larry, Dave, and &lt;a href="http://damonpayne.com"&gt;Damon Payne&lt;/a&gt; at the Ale House in downtown Milwaukee to talk about &lt;a href="http://projecteuler.net/"&gt;Project Euler&lt;/a&gt;.  I remember having a lot of fun, despite being a bit nervous (my first experience on that side of a podcast!).  It was very loud in there as well; I think Larry did a great job of editing.&lt;/p&gt;
&lt;p&gt;[&lt;a href="http://thirstydeveloper.com/ct.ashx?id=2395c271-8796-433c-82c5-fc7c3d69fd29&amp;amp;url=http%3a%2f%2fthirstydeveloper.com%2fshows%2ftd006-ProjectEuler.mp3"&gt;Here is the Project Euler episode&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;[&lt;a href="http://thirstydeveloper.com/"&gt;The Thirsty Developer&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;[&lt;a href="http://feeds.feedburner.com/ThirstyDeveloperPodcast"&gt;Subscribe to The Thirsty Developer Podcast&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;[&lt;a href="http://feeds.feedburner.com/ThirstyDeveloper"&gt;Subscribe to The Thirsty Developer Blog&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://edsid.com/blog/aggbug/23303.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gerry Heidenreich</dc:creator>
            <guid>http://edsid.com/blog/archive/2008/04/11/the-thirsty-developer-project-euler.aspx</guid>
            <pubDate>Fri, 11 Apr 2008 16:28:31 GMT</pubDate>
            <wfw:comment>http://edsid.com/blog/comments/23303.aspx</wfw:comment>
            <comments>http://edsid.com/blog/archive/2008/04/11/the-thirsty-developer-project-euler.aspx#feedback</comments>
            <wfw:commentRss>http://edsid.com/blog/comments/commentRss/23303.aspx</wfw:commentRss>
            <trackback:ping>http://edsid.com/blog/services/trackbacks/23303.aspx</trackback:ping>
        </item>
        <item>
            <title>EnterpriseLog, usage-logging</title>
            <link>http://edsid.com/blog/archive/2008/04/01/enterpriselog-usage-logging.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Most development work contains some type of logging.  Usually, it's to a local log file or an email, for exception tracking at the most.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Recently, I decided to throw together an EnterpriseLog table.  We tossed our logging bits into a central library... I don't know why it took so long to centralize this particular functionality, but I'm glad we did it.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Our EnterpriseLog table is providing useful data, as well as helping us answer some good questions:&lt;br /&gt;
- What applications are people using?&lt;br /&gt;
- Tracking ClickOnce downloads, system updates made by clickonce apps, etc.&lt;br /&gt;
- What terms are people searching for?&lt;br /&gt;
- Exceptions&lt;br /&gt;
- Usage&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;Usage Logging&lt;/strong&gt;&lt;br /&gt;
Usage logging is has been very interesting so far.  An immediate benefit we have found is keeping track of how formatted information is being entered in unexpected ways.  It is amazing how many different ways there are to enter a phone number!  With a quick look at EnterpriseLog usage data for an application, &lt;strong&gt;we are able to recognize, learn, and accommodate &lt;em&gt;actual &lt;/em&gt;usage patterns&lt;/strong&gt;.  Continuing with the phone # topic:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;With any phone number, a quick regex levels the playing field by stripping out all non-digit characters:&lt;br /&gt;
string nums = Regex.Replace(textBox.Text, @"[^\d]", "");&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;If the result string is 10 chars (in the US), format appropriately for area code and exchange.  If it is 7 characters, try to infer the area code from the exchange.  If it is only 4 characters, assume it is an extension and build the real number from there if possible.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;In this case, usage logging helped me to skip the annoying validation and instructions and let my users do what they do.  We have been able to identify actual usage, throw assumptions out the window, and help them arrive at the appropriate result invisibly:&lt;br /&gt;
textBox.Text = String.Format("({0}) {1}-{2}", areaCode, exch, num);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Most of us base our UI development on assumptions about our users, past experience, and hopefully a &lt;a href="http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1207090821&amp;amp;sr=8-1"&gt;book&lt;/a&gt; or &lt;a href="http://www.amazon.com/Humane-Interface-Directions-Designing-Interactive/dp/0201379376/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1207090863&amp;amp;sr=1-1"&gt;two&lt;/a&gt;.  It is the assumptions part I have trouble with.  I'm a data guy.  I prefer to question the assumptions, set up some auditing and collect some data, and turn the assumptions into concrete UI features that keep the user in the flow.  &lt;/p&gt;&lt;img src="http://edsid.com/blog/aggbug/23298.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gerry Heidenreich</dc:creator>
            <guid>http://edsid.com/blog/archive/2008/04/01/enterpriselog-usage-logging.aspx</guid>
            <pubDate>Tue, 01 Apr 2008 23:03:50 GMT</pubDate>
            <wfw:comment>http://edsid.com/blog/comments/23298.aspx</wfw:comment>
            <comments>http://edsid.com/blog/archive/2008/04/01/enterpriselog-usage-logging.aspx#feedback</comments>
            <wfw:commentRss>http://edsid.com/blog/comments/commentRss/23298.aspx</wfw:commentRss>
            <trackback:ping>http://edsid.com/blog/services/trackbacks/23298.aspx</trackback:ping>
        </item>
        <item>
            <title>Salesperanto AND Coderian?</title>
            <link>http://edsid.com/blog/archive/2008/03/14/salesperonto-and-coderian.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;"Stop Thinking Like A Programmer"&lt;/strong&gt;&lt;/font&gt;&lt;a title="YinYang by GerryHeidenreich, on Flickr" target="_blank" href="http://www.flickr.com/photos/gheidenreich/2332531057/"&gt;&lt;strong&gt;&lt;img height="143" alt="YinYang" width="150" align="right" border="0" src="http://farm4.static.flickr.com/3139/2332531057_a773642fae_o.jpg" /&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I swear it's the theme this week.. I was actually told this by someone at work.  In my own defense, I was thinking like somebody that would rather script a solution than wait 3 weeks for it (ok yeah, that's like a programmer).... &lt;/p&gt;
&lt;p&gt;Think about this...&lt;/p&gt;
&lt;p&gt;1. &lt;strong&gt;Business&lt;/strong&gt;: Coders should be able to think in terms of features, interface complexity, barrier to entry, design and visualization, and capable of elevator pitching their product (notice I didn't say solution?) to a customer in these terms.&lt;/p&gt;
&lt;p&gt;2. &lt;strong&gt;Innovation&lt;/strong&gt;: getting the "I can do that" people (e.g. your engineers/architects/coders) to be able to speak directly to the "it would be cool if..." people (e.g. your billers, customers, parents, etc)&lt;/p&gt;
&lt;p&gt;3. &lt;strong&gt;Apple&lt;/strong&gt;'s innovation/momentum and Microsoft's shift in perspective &amp;amp; ability to compete:  Microsoft has &lt;em&gt;always &lt;/em&gt;been guilty of "thinking like programmers", and it has been very profitable for them, but things are changing, and they &lt;em&gt;are&lt;/em&gt; reacting accordingly.&lt;/p&gt;
&lt;p&gt;4. &lt;strong&gt;Black &amp;amp; White:&lt;/strong&gt; on one side are the geeks that appreciate your architecture and could debate code/frameworks/paradigms all day.  On the other side are your customers, who want to know how you are going to make them more profitable/efficient/confident/marketable/competitive.  Not much of a grey area here.  2 different languages: Salesperanto AND Coderian. &lt;/p&gt;
&lt;p&gt;5. &lt;strong&gt;Intentional Programming&lt;/strong&gt; [&lt;a href="http://en.wikipedia.org/wiki/Intentional_programming"&gt;wikipedia&lt;/a&gt;]: Your skillset is in demand, but we are getting closer to the day that "&lt;a href="http://www.nytimes.com/2007/01/28/business/yourmoney/28slip.html?_r=1&amp;amp;oref=slogin"&gt;Everyone Writes Software&lt;/a&gt;"... &lt;a href="http://www.aisto.com/roeder/Paper/"&gt;Lutz has a section&lt;/a&gt; dedicated to this.  Developers &lt;em&gt;must&lt;/em&gt; learn to understand the intent of their users.  Stop &lt;em&gt;thinking&lt;/em&gt; in syntax, start thinking in &lt;a href="http://en.wikipedia.org/wiki/Semantics"&gt;semantics&lt;/a&gt;...  Mashups, &lt;a href="http://en.wikipedia.org/wiki/Feature_Driven_Development"&gt;FDD&lt;/a&gt;, REST, RDF, &lt;a href="http://pipes.yahoo.com/pipes/"&gt;Pipes&lt;/a&gt; &amp;amp; &lt;a href="http://www.popfly.com/"&gt;Popfly&lt;/a&gt; (&lt;a href="http://labs.google.com/sets?hl=en&amp;amp;q1=microsoft+popfly&amp;amp;q2=yahoo+pipes&amp;amp;q3=&amp;amp;q4=&amp;amp;q5=&amp;amp;btn=Large+Set"&gt;Google SETS prediction&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;There is a pattern developing here, and there is A LOT of money being tossed around because of it (&lt;a href="http://www.techcrunch.com/2008/03/14/aol-on-a-bender-kickapps-may-be-next-acquisition/"&gt;check this out&lt;/a&gt;!).  &lt;/p&gt;&lt;img src="http://edsid.com/blog/aggbug/23295.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gerry Heidenreich</dc:creator>
            <guid>http://edsid.com/blog/archive/2008/03/14/salesperonto-and-coderian.aspx</guid>
            <pubDate>Fri, 14 Mar 2008 16:03:47 GMT</pubDate>
            <wfw:comment>http://edsid.com/blog/comments/23295.aspx</wfw:comment>
            <comments>http://edsid.com/blog/archive/2008/03/14/salesperonto-and-coderian.aspx#feedback</comments>
            <wfw:commentRss>http://edsid.com/blog/comments/commentRss/23295.aspx</wfw:commentRss>
            <trackback:ping>http://edsid.com/blog/services/trackbacks/23295.aspx</trackback:ping>
        </item>
        <item>
            <title>.Net now "Shared Source" NOT Open Source</title>
            <link>http://edsid.com/blog/archive/2007/10/03/17635.aspx</link>
            <description>&lt;P&gt;&lt;BR&gt;Scott Guthrie &lt;A href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx"&gt;announced&lt;/A&gt; on his blog, a few hours ago, that&amp;nbsp;.Net source code will be opened up to the public, under a &lt;A href="http://www.microsoft.com/resources/sharedsource/licensingbasics/referencelicense.mspx"&gt;ms-rl license&lt;/A&gt;&amp;nbsp;(for reference, read-only).&lt;/P&gt;
&lt;P&gt;Scott's announcement, already flooded with lots of comments &amp;amp; trackbacks, mostly positive, is &lt;A href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx"&gt;here&lt;/A&gt;.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Starting with Visual Studio 2008 (Orcas), currently set to be released later this year, we will be able to reference the internal state of .Net objects as if they were local.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;This means a few things: &lt;BR&gt;1.&lt;/STRONG&gt; F11 will step you &lt;EM&gt;into&lt;/EM&gt; the actual .Net object being called, where you can reference in-state .Net classes.&lt;BR&gt;&lt;STRONG&gt;2.&lt;/STRONG&gt; You will see real objects, variables, line numbers in your call stack for the&amp;nbsp;.Net classes being referenced.&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;3.&lt;/STRONG&gt; (I assume) you will be able to &amp;#8220;Go to definition&amp;#8220; and view actual .Net class source code instead of an interface.&amp;nbsp; Of course, we've always had the ability to reflect on the libraries, and with a little work, figure out what was happening... but this will make things a lot more simple and accessible (have a look at&amp;nbsp;&lt;A href="http://www.aisto.com/roeder/dotnet/"&gt;Reflector&lt;/A&gt; to&amp;nbsp;figure out the Asp.Net treeview control!)&lt;BR&gt;&lt;STRONG&gt;4.&lt;/STRONG&gt; WWBAD (What would &lt;A href="http://blogs.msdn.com/brada/"&gt;Brad Abrams&lt;/A&gt; do?)&amp;nbsp; Now we can see for real instead of reverse engineer it and spend our time figuring out what&amp;nbsp;the variable datetime17 is doing.&amp;nbsp; In other words, quality of code should improve.&amp;nbsp; As we constantly reference the .Net library, some of the&amp;nbsp;msft&amp;nbsp;QA, v3.5 juju should rub off on us and help us fall a little more in line with standards, best practice, etc.&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Anyway, it's read-only.&amp;nbsp; It's not Open source.&amp;nbsp; But it's&amp;nbsp;another big step in what I think is the right direction for Microsoft...&lt;/P&gt;
&lt;P&gt;Some good&amp;nbsp;MS pages to check out on open/shared source initiatives:&lt;BR&gt;- &lt;A href="http://www.microsoft.com/opensource/default.mspx"&gt;Open Source at Microsoft&lt;/A&gt;&lt;BR&gt;- &lt;A href="http://www.microsoft.com/opensource/default.mspx"&gt;Microsoft Shared Source Initiative&lt;/A&gt;&lt;BR&gt;- &lt;A href="http://www.microsoft.com/resources/sharedsource/Licensing/Developer.mspx"&gt;MS Developer Tools&lt;/A&gt; (A &lt;EM&gt;goldmine&lt;/EM&gt; of open/shared source projects, most on CodePlex)&lt;/P&gt;&lt;img src="http://edsid.com/blog/aggbug/17635.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gerry Heidenreich</dc:creator>
            <guid>http://edsid.com/blog/archive/2007/10/03/17635.aspx</guid>
            <pubDate>Wed, 03 Oct 2007 16:49:00 GMT</pubDate>
            <wfw:comment>http://edsid.com/blog/comments/17635.aspx</wfw:comment>
            <comments>http://edsid.com/blog/archive/2007/10/03/17635.aspx#feedback</comments>
            <wfw:commentRss>http://edsid.com/blog/comments/commentRss/17635.aspx</wfw:commentRss>
            <trackback:ping>http://edsid.com/blog/services/trackbacks/17635.aspx</trackback:ping>
        </item>
    </channel>
</rss>