CleanCode logo
NAVIGATION: first page in sectionprevious pageup one levelnext pagefinal page in section

What's New (and Old)

16 December 2015 -- DocTreeGenerator migrated from this site over to its own site on github (

30 December 2014 -- TFS cmdlets have been in the works for some time; finally got those added to the PowerShell library. Also converted over my PowerShell unit tests to Pester, and those that are more integration tests are now labeled as such.

12 July 2014 -- More writing outside of this site, over on Recently completed a huge collection of Powershell one-liners--about 400 or so(!)--in a 4-part series. Again, see my publications page for links.

19 November 2013 -- Most of my time in the intervening months since my last code release was devoted to a 7-part series on FitNesse along with extensive code libraries. I have not posted the code amongst my open-source libraries here, but it is all available for download from the articles -- see my publications page for links.

31 July 2013 -- Giving some thought to my open source libraries it does not really make sense to issue a new release for every language when in any given release I am typically only making changes in one or perhaps two language libraries. As such I reorganized the file structure on my download page as follows. Rather than have a top-level set of folders named for each release number, with each folder containing a supposedly new release for each language, the top level is now comprised of one folder for each language. Each language folder then contains numbered releases but it only has releases when that particular language has an update. And this, in fact, means that some languages have seemingly gone backward in version number since they have not actually had changes recently.

30 June 2013 -- In prepartion for my article on generating PowerShell documentation for a library (as opposed to for a single module) I enhanced the capabilities of my DocTreeGenerator. The article should appear very soon on This release also includes a handy new PowerShell function, Select-StringAligned, that actually provides two useful enhancements to Select-String: alignment and colorization.

31 March 2013 -- I did some housecleaning on dependency libraries for my C# libraries for this release (1.2.02), getting them all to the same version of .NET and including source for users who wish to customize further. Just one new PowerShell cmdlet, ConvertFrom-Text, which lets you convert text into PowerShell objects based on regular expressions--check it out on my API bookshelf!

10 December 2012 -- the new PowerShell SqlTools module headlines this release (1.2.01). This includes three new cmdlets--Out-DataTable, Add-SqlTable, and Write-DataTable--based on Chad Miller's originals. I have added some new capabilites, full documentation, and a few bug fixes. This release also includes a few enhancements to my PowerShell Subversion cmdlets; see the release notes for more details.

31 August 2012 -- mostly PowerShell enhancements with a couple C# bug fixes for this minor release. Probably the highlight is the PowerShell documentation generator that gives you the power to apply CSS in broad strokes to PowerShell API pages and enables live links for related topics.

12 April 2012 -- though not much reflected in my libraries I have been busy with Subversion (my multi-part cookbook on and PowerShell (groundwork for a new series of articles). This 1.1.03 minor release includes just a few PowerShell bugs and enhancements.

11 November 2011 -- This very quick follow-on release 1.1.02 follows 1.1.01 from last week because I am a stickler for doing things well. My new PowerShell library included my new whiz-bang Get-EnhancedChildItem that could automatically filter Subversion files with a command-line flag... but then Subversion 1.7 was released, and its revised metadata structure broke Get-EnhancedChildItem. With this release, Get-EnhancedChildItem is now compatible with 1.7 or earlier versions of Subversion. I have also included a handy new SQL utility for validating all stored procedures, aptly called ValidateStoredProcs.

31 October 2011 -- PowerShell has been my focus for a number of months; after I finally organized my code and documented it, I realized there was no API generator to create a documentation set, so I had to build one of those as well--and include it in my open-source library. Take a look at the new documentation tree for the new library. I have also put in some effort to better define my personal brand so you, dear reader, can have a better idea of my background and strengths. And still more of my time has been funneled into my published articles as well as efforts on

31 December 2010 -- .NET updates are the only notable maintenance item in this release, moving from .NET 2.0 to .NET 3.5 (and from VS2008 to VS2010), obviating the need for LINQBridge. Neither I nor any users have reported any bugs of late so no bug fixes are included. More of my time has been going into my published articles appearing on

31 May 2010 -- Time to breakout of beta status, precipitated by the release of my first commercial (though open-source!) product built with substantial components from the CleanCode libraries. SqlDiffFramework is a multi-database comparison tool, capable of comparing SQL Server, Oracle,, MySql, and any ODBC data source (Access, Excel, CSV, etc.).

30 April 2010 -- A developer's question on using the ChameleonRichTextBox led me to find a bit of cleanup to be done with the control and revealed one defect. Also found a couple defects in the SqlEditor, and removed the long-deprecated SyntaxHilightTextBox control from the library, and pruned from several controls properties that were visible in Visual Studio's designer that should not have been.

28 February 2010 -- A new hook I included in the last release to allow swapping in your own help panel for some of the user controls caused the controls, though still workable, to be unrenderable in the Visual Studio designer. So this 0.9.32 release includes that bug fix along with a few others. It also includes a small but nifty extension method to convert a list to a string for diagnostics or display purposes. Finally, in the what-was-I-thinking vein, I renamed the recently introduced FileMaskControl to just FileMask ('nuff said).

31 January 2010 -- A nifty, new FileMaskControl highlights this 0.9.31 release that provides a easy-to-use mechanism for allowing a user to filter the contents of a directory for processing (based on any number of file masks plus any arbitrary filtering function). (See my article on Simple-Talk coming out soon!) The other new component is a RoundedTimeSpan structure, providing ultimate flexibility in the display of a time span rather than the all-or-nothing precision display of the standard TimeSpan. Finally, I spent quite a bit of time converting from ndoc to Sandcastle for generating the C# API; see the whole new documentation tree.

31 October 2009 -- No major issues have turned up as a result of the last release. This 0.9.30 release is, in fact, a very minor release, fixing a few bugs and added a few small enhancements that came out of the QueryPicker articles I have written recently for On this website I have introduced a novel feature, the ability to use Google's service to translate the pages dynamically to many different languages.

31 August 2009 -- A major reorganization of the C# libraries spearheads this 0.9.29 release. Details are in the release notes, but in brief this includes refactoring classes into more logical project groupings; giving all assemblies a "CleanCode." prefix to easily distinguish them; partitioning the download package into source, binary, and API; and compiling for release rather than for debugging.

30 June 2009 -- Some enhancements, cleanup, and standardization of major controls (SqlEditor, ChameleonRichTextBox, ExtendedDataGridView). This unfortunately introduces several changes that are not backward compatible, marked with "breaking change" in the release notes. Most of these were instigated by my efforts at writing a user manual for a major new product I hope to have out later this year.

30 April 2009 -- Some enhancements to the just-released ChameleonRichTextBox, both code and documentation, spearhead this minor maintenance release, along with a few bug fixes. Other minor code enhancements include defining XML Schemas for data files used by ChameleonRichTextBox and QueryPicker, which let you use Intellisense in Visual Studio.

31 March 2009 -- Wow! An exciting new syntax-highlighting control called the ChameleonRichTextBox provides much better performance, keyword completion, and a context menu that gives it great flexibility. All this activity was spurred by a bug report that pointed me to the poor performance of the original SyntaxHilightTextBox, and I decided to improve more than just the performance. A second item that is much improved is the DisplayCommandsForm, used for displaying a context-sensitive quick reference sheet. It now is resizable, with scroll bars, and delineates both buttons and keys.

31 December 2008 -- A major revamping of the QueryPicker control plus Oracle and SQL Server support now broadened to include MySql for the ConnectionStringManager and SqlEditor controls, headline this 0.9.25 release. Other enhancements include an informative pop-up for those controls instrumented with a ContainerTest property. Also, while adding MySql support as mentioned, I took the liberty to clean up the code and consolidate the database interactions from several classes into a new DbDetails class. On the C# API documentation side, I went through all properties and explicitly stated the default, where appropriate.

31 October 2008 -- A new article on .NET keystroke handling is one highlight of this 0.9.24 release, which includes a Keystroke Sandbox application (available only from within the article at present). The second major highlight is the new product roadmap (under the Products >> Highlights menu ). This includes a more complete and richer list of applications, engines, and controls that you may find here on CleanCode. As of this release I have started also posting this history on the Sourceforge news page for my project at The release is rounded off with numerous updates to the CleanCode C# library including both bug fixes and enhancements.

31 July 2008 -- New SQL editor pane (a .NET user control) and new manual testing framework are the highlights of this code-rich release. The testing framework (CleanCodeManualTest) is to support GUI code, allowing you to test specific user controls in isolation that cannot be tested in Visual Studio's test container (because they do not derive from UserControl).

31 May 2008 -- New SQL Server stored procedure for generating a wide variety of histograms, in conjunction with a new article for on the topic soon to be published. Also spent time converting from Visual Studio 2005 to 2008 (though still compiling for .NET 2.0), and upgrading NUnit from 2.4 to 2.4.7.

30 Apr 2008 -- New ProgressBarMessage control for .NET that attaches a display message to each processing step for more useful visual feedback.

31 Mar 2008 -- New .NET diagnostics enhancements include the StructuredTraceSource and AlignedTextWriterTraceListener. Both of these components are expounded upon in detail in my new, comprehensive article just published on See the publications page for links.

31 Jan 2008 -- New user controls for .NET include the MultiConnectionStringManager and the QueryPicker, both components useful in database work. I also had a pair of new articles published on, discussing XmlTransform and SQL API documentation generation. for SQL code. See the publications page for links.

30 Nov 2007 -- With the completion of my SP_map article published on, I also completed its API documentation and a documentation generator for SQL code.

30 Sep 2007 -- Added new SQL code section to the website to introduce my powerful new tool, SP_map. Stay tuned for an upcoming article on this on

31 Jul 2007 -- Completed work on the .Net control entitled ConnectionStringManager, providing a plug-in handler for SqlServer or Oracle database connections.

30 Jun 2007 -- Concentrating on .Net controls, both creating tools for my CleanCodeControls library and writing DevX articles on some of them as well. To date I have a SyntaxHilightTextBox, StyleAwareRichTextBox, IdentifyingGroupBox, and (a work-in-progress) ConnectionStringManager.

30 Apr 2007 -- Succumbed to the urge to write and publish articles again (having taken a multi-year hiatus) this time on

31 Mar 2007 -- Entered the realm of .Net user controls with a SyntaxHilightTextBox control, along with several other additions to the C# library including CSV file reading and writing, building upon an excellent CSV reader from LumenWorks. Busy in unrelated matters delving into the intricacies of setting up VNC, SSH, port forwarding, Cygwin, and live video streaming.

31 Jan 2007 -- Source control switchover from CS-RCS to SubVersion, plus switching development from one computer to another took up most of my time and energy getting this release out. The net result is that there are very few changes in the released libraries.

31 Oct 2006 -- Just a few site fixes in this minor site cleanup, quieting some warnings in various areas (html validation, documentation build checks, java compiler warning).

30 Sep 2006 -- Seven new C# classes added for this minor release. Also, spent some time delving into my PostScript past, manipulating the graphical display of the CleanCode build process, now available as PDF files here.

31 Aug 2006 -- A massive synchronization effort took place as I brought JUnit support from 3.8 to 4.0 (and added NUnit support), Java source from 1.4 to 1.5, Ant support from 1.6.2 to 1.6.5, Antcontrib from 1.5 to 1.6, and added a lot more self-check code into the master CleanCode build file to include checking Java code (Checkstyle), Java documentation (DocCheck), and C# code (FxCop).

31 Jul 2006 -- Cleaned up and fully documented the C# library released last month. Also added a home page for JavaScript documentation (not much, but it is a start!) and made all 4 supported language API home pages more similar.

30 Jun 2006 -- Preliminary C# library is ready for release, developed with the aid of FxCop, Ndoc, Net Reflector, Ghostdoc, and of course, Visual Studio.

31 May 2006 -- Brainbench provided another round of free certification tests, so I took advantage and ticked off another 10 tests for my own credentials page.

28 Feb 2006 -- Fingers are flying delving into the brand new Visual Studio 2005 and C#. Stay tuned for more.

30 Nov 2005 -- Version 0.9.06 released, containing just a few bug fixes and a few minor updates. The SourceForge database services have changed, necessitating a few modifications to re-synchronize WebSiteInABox. Similarly, the SourceForge file services have changed, requiring updates to the CleanCode search and beacon facilities. Finally, there are a few tweaks to the Net::DataMining module, a powerful tool for compiling tabular data from a multitude of diverse web pages. (It does, however, require reasonable Perl experience to make use of it effectively.)

15 Jul 2005 -- Version 0.9.05 released, centering around the new product Website-In-a-Box. This is a CGI application that--with just a little bit of setup--provides a functioning dynamically generated website with authentication, account management, and more, ready to be customized for your own needs. Besides the code, the release includes the API, the marketing description (Products >> Highlights >> Website-In-A-Box), and a live installation.

Web Stats: over 7100 visitors (56% from IE browsers) -- from 70 countries (!)

28 Feb 2005 -- Version 0.9.04 released, including updates for practically nothing. What this release does include is "getting the house in order" by automating both the website and the distribution build completely under Ant. For such a simple site, the Ant build file is rather complex; I've added a new behind the scenes section on the website where you may see the actual build file, plus graphic visualizations of it. I also took this automation opportunity to add documentation files to the Perl and Java distributions as well.

Web Stats: over 3800 visitors (56% from IE browsers) -- from 58 countries (!)

31 Dec 2004 -- Version 0.9.03 released, including minor updates and bug fixes to Diagnostics (Java and Perl), and to XmlTransform (the XML transformation tool). Further revised the download gateway page, Java section, to provide a cleaner, easier-to-use reference. Behind the scenes: continuing to spruce up Test Driven Development efforts using JUnit; started using XmlBeans; found Java diff library, handy for regression tests that have file system side effects.

Web Stats: almost 900 visitors -- over 1800 hits (over half from IE 6 browsers) -- from 47 countries (!)

15 Dec 2004 -- Internet presence of CleanCode is crawling along slowly but steadily; CleanCode has turned up (even on first page results!) in some Google queries. Plus other search engines have begun picking up CleanCode as well.

9 Nov 2004 -- Version 0.9.02 released, including updates to Perl and Java, and filled in the bulk of the gaps in online (API) documentation. Also, enhanced the download gateway page to include complete details about external dependencies as well as providing them for download as a convenience.

31 Oct 2004 -- Google puts CleanCode on the radar, after 5 months.

28 Sep 2004 -- Version 0.9.01 released, covering a handful of bug fixes and the beginnings of switching over to "proper" test cases using JUnit on the Java side, as well as tidying up Java code style using Eclipse's style checker and the Eclipse plug-in CheckStyle.

Summer 2004 -- Miscellaneous work including getting up to speed with Eclipse 3 and its plug-ins. Thought it could be used for Perl development as well, but apparently there's something unique about my environment that causes the Epic plug-in to report spurious warnings.

27 May 2004 -- Began publicizing CleanCode (version 0.9) on major search engines (google, dmoz, and yahoo), so this could be considered the official release date of CleanCode.

late May 2004 -- The CleanCode archives were uploaded (after going through the codebase to ensure consistent license information, RCS labeling, and so forth) and connected to the SourceForge download facility. Also, using the Xenu link checker, the site integrity was verified; the only anomalies reported are relegated to known issues: a few pages on Sun's Java 1.4 API pages seem to have bad links, and the JavaScript documentation section on CleanCode is not available.

early May 2004 -- The final components to complete the site for public consumption were brought online, including integrating the outstanding search engine from AXS, adding a high-level site map, and updating the backup menu functionality for when the user disables JavaScript. Also, completed refinements of the as-yet-unpublicized CGI PageGenerator / Page Sequencer so that I could have a customized CGI-driven contact page as one mode of user communication. (The Page Generator / Page Sequencer are available, however, in the code base archives; I have not added these to the official product section of the website since they still need a bit more work.)

April 2004 -- Process flow for loading SourceForge developed and refined as the website was populated with the three major sections: main, Java API, and Perl API. Maintained relative URLs in most cases so the site could also be executed from the local filesystem for testing. Re-discovered the curious quirk that absolute URLs are needed with CGI when PATH_INFO is used. Salivated over the exquisite usefulness of Pageant, Putty, and particularly WinSCP.

March 2004 -- In preparation for SourceForge deployment, I realized that I needed product feature descriptions to entice users, rather than just the API documentation. Worked on the web section to contain the marketing and promotion product pages.

February 2004 -- Applied for SourceForge project space and the application was successful. Began exploration of SourceForge capabilities and interconnections.

Fall 2003 -- Time marches on... while cleaning up documentation and beginning to developer cleaner web site structure.

Spring 2003 -- Continued work on tool set offerings: diagnostics, Perl documentation generator, XSL processor/validator, and others...

Fall 2002 -- Intensive effort to get web site ready; added menus, searching, browser degradation, tracking, link verification.

December 2000 -- A germ of an idea sprouts, CleanCode takes form, the author having amassed enough background material to make a contribution to open source and promote good design practices.

Valid XHTML 1.0!Valid CSS!Get CleanCode at Fast, secure and Free Open Source software downloads
Copyright © 2001-2015 Michael Sorens • Contact usPrivacy Policy
Usage governed by Mozilla Public License 1.1 and CleanCode Courtesy License
CleanCode -- The Website for Clean DesignRevised 2015.12.16