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


CleanCode architecture overview -- click for full size

The CleanCode site includes a myriad of open-source software libraries and applications in PowerShell, C#, Java, T-SQL, Perl, and JavaScript (see the Products menu above or the tables below). Lately my focus has been on PowerShell and .NET, both in developing code and in writing articles (see my publications page). The diagram at left (click to enlarge) gives you a graphical map of my applications and libraries, separated by language. Several concept bubbles span multiple languages indicating I have touched upon those technologies with either an implementation of the same engine (e.g. Diagnostics in Perl and JavaScript have the identical engine) or with a different but related concept (e.g. C# also has Diagnostics, but it is quite different). The source code for virtually everything here is available on the download page.

As far as documentation, I have endeavored to be thorough. javadoc and ndoc have been immensely helpful in generating a complete API for Java and C#, respectively, building not just HTML files for each class, but a documentation tree for all modules. My CleanCode utility Pod2HtmlTree included below performs similarly for Perl documentation (since the standard pod2html operates on single files only); DocTreeGenerator creates a PowerShell documentation set, and my general XML tool XmlTransform was configured to generate my SQL documentation set. Regrettably I have not yet had a need to generate more than an overview page for my JavaScript tools.

I have grouped what I consider the top-level components of the CleanCode libraries into the three tables below, grouped by .NET Controls, Applications, and Engines.

Notation: All of the controls listed have API references. The following symbols are used in the tables below: a formally published article on ( article reference) or ( article reference) -- each typically includes further code resources to download, separate from the libraries available for download here; an internally published article on this website (CleanCode article reference) -- some include links to live sandboxes for experimentation; a C#/.NET API reference (C# API reference); a PowerShell/.NET API reference (PowerShell API reference); a T-SQL API reference (SQL API reference); a Perl API reference (Perl API Reference); and a Java API reference (Java API Reference).

.NET User Controls

The newest addition to my collection of open-source material is a useful set of user controls for .NET Windows Forms applications. The major ones are shown below. (Others may be found at the CleanCode.GeneralComponents.Controls) and CleanCode.GeneralComponents.Dialogs APIs.) I also have written two detailed articles on user controls in general: .NET Building Blocks: Custom User Control Fundamentals and .NET Building Blocks: Custom User Controls in Practice.

Image References Description
FileMask -- click for full size 'Using LINQ Lambda Expressions to Design Customizable Generic Components' on FileMask API Reference on CleanCode FileMask: Provides a panel for specifying one or more file masks to filter a directory by file name patterns using standard Windows wildcards. The control displays the selected set of files as well as a count of files; these update instantly as masks are entered or updated. Beyond being a completely generic filter-by-mask control, the FileMask control may be customized (using LINQ lambda expressions) to add an additional arbitrary filtering capability. You could require files to be later than a certain date, have a particular attribute, contain certain data, or anything else you might need.
MultiConnectionStringManager -- click for full size '.NET Building Blocks: Build a Configurable Database Credential Selector' on ConnectionStringManager API Reference on CleanCode MultiConnectionStringManager API Reference on CleanCode ConnectionStringManager: A plug-and-play control that allows defining and testing connection strings for a SqlServer database, an Oracle database, or any data source that has ODBC connectivity. This provides a complete solution for interactive handling of database credentials: usernames and passwords, server choices, and connection types.
MultiConnectionStringManager: Manages a set of database connection strings and associated details, providing a mechanism for easy loading and saving of the set to persistent storage (configuration file).
ChameleonRichTextBox -- click for full size '.NET Building Blocks: Build a RichTextBox-Based Syntax-Highlighting Editor and IDE' on ChameleonRichTextBox API Reference on CleanCode ChameleonRichTextBox: This second generation syntax-highlighting control includes much faster performance, much easier customization (even at runtime), and keyword completion (a simple Intellisense). Supports SQL Server, Oracle, MySql, and any ODBC connection out-of-the-box, and may be easily customized with an XML context file--no subclassing required. The DevX article at left discusses its predecessor (SyntaxHilightTextBox) but it is still partially relevant to this new control.
ExtendedDataGridView -- click for full size ExtendedDataGridView API Reference on CleanCode ExtendedDataGridView: Extends a DataGridView with filtering, searching, sizing, masking, formatting, and export capabilities. See also my DevX articles on enhancing any DataGridView: Exploring Secrets of the .NET DataGridView and Dynamic Data Manipulation and Exploring Secrets of BindingSource Filters.
SqlEditor -- click for full size SqlEditor API Reference on CleanCode SqlEditor: A complete SQL-editor-in-a-box, combining a ChameleonRichTextBox with an ExtendedDataGridView. This control is designed to synchronize with a partner instance when you use two of them together in a WinForm application.
QueryPicker -- click for full size 'How to build a Query Template Explorer' on QueryPicker API Reference on CleanCode QueryPicker: Builds meta-queries from templates, dynamically generating a set of input fields for the place holders within a meta-query template, then letting the user enter values in any or all fields, and finally returning a finished meta-query. Meta-queries included with the control (for SQL Server, Oracle, and MySql): displaying the version of a database, listing columns for a given table, finding tables containing a given column, listing the size of all non-empty tables, and more. See also my three-part Simple-Talk series on the QueryPicker: A Unified Approach to Multi-DataBase Query Templates, How to build a Query Template Explorer, and Using Three Flavors of LINQ To Populate a TreeView.
ProgressBarMessager -- click for full size ProgressBarMessager API Reference on CleanCode ProgressBarMessager: Enhances a standard .NET ProgressBar with progress messages that appear sequentially beneath the bar, to provide useful feedback during a lengthy operation. As you add progress steps the message panel expands vertically to contain a selectable number of messages. Messages beyond that count cause the panel to scroll messages. You can set each step to optionally show the duration of the step.


This section contains the major engines--building blocks--to plug into your code. (Others may be found at the CleanCode C# API as well as Java, SQL, JavaScript, and Perl.)

Image References Description
.NET Diagnostics -- click for full size CleanCode C# API Reference 'Exploring Secrets of .NET Diagnostics' on StructuredTraceSource: Diagnostics, or program tracing, is a crucial-and often overlooked and underappreciated-component of application development. It is useful not only during program development but even more so once your application is deployed. Ongoing maintenance costs are one of the largest segments of software's true cost, and well-instrumented diagnostics can reduce maintenance costs significantly. See also the DataDiagnostic engine for Perl, Java, and JavaScript, a similar idea but with a completely different mechanism, listed separately.
DataDiagnostic -- click for full size CleanCode DataDiagnostic details CleanCode Perl API Reference CleanCode Java API Reference CleanCode JavaScript API Reference DataDiagnostic: Provides an extensible, configurable diagnostic tool allowing precise control to isolate and dissect the output of your diagnostically-instrumented program, and to channel it to your console, a web page, and/or a log file. See also the StructuredTraceSource engine for C#, a similar idea but with a completely different mechanism, listed separately.
C# Validator -- click for full size CleanCode C# API Reference 'Exploring Secrets of Windows Form Validation' on WinForm Validator: Input validation is something that every program needs, and every programmer dreads. Most developers craft hard-coded program logic to verify that a phone number consists of 7 or 10 digits; that an IP address consists of 4 octets; that a country name matches 1 of 193 choices, etc. While .NET 2.0 provides some support for streamlining input validation, it barely scratches the surface of automating and simplifying the input validation process. See also the PageValidator engine for Perl and JavaScript, a similar idea but with a completely different mechanism, listed separately.
PageValidator -- click for full size CleanCode PageValidator details CleanCode Perl API Reference CleanCode JavaScript API Reference PageValidator: For both front-end and back-end processing, this validation engine provides an extensible and user-configurable library to verify values from a web page form. PageValidator uses a single library for client and for server validation, guaranteeing synchronization. Accommodating new fields on a page is just a matter of updating the dictionary--no code needs to be changed. Moreover, PageValidator can validate not just single fields but also multiple dependent fields. This validation engine is virtually identical line-for-line in Perl and in JavaScript, within the constraints of these languages. This engine is designed for front-end validation (JavaScript) and back-end server processing (Perl). See also the WinForm Validator engine for C#, a similar idea but with a completely different mechanism, listed separately.
DisplayCommandsForm -- click for full size CleanCode C# API Reference DisplayCommandsForm: This WinForm provides a handy pop-up, quick-reference chart for the commands in either an application or a control. If you have several complex controls within an application, embed this in each of them and then wire them up at the application level to show a quick-reference for each of them in separate windows. This is built-in to the following controls: ChameleonRichTextBox, ExtendedDataGridView, and SqlEditor.
IO.ResourceMgr CleanCode C# API Reference Provides an API to manage external file resources.
WebSiteInABox -- click for full size CleanCode WebSiteInABox details CleanCode Perl API Reference WebSiteInABox: Quickly build a dynamic web site with this CGI framework. Unlike some frameworks, this includes sufficient infrastructure so you literally have a website right out of the box.
Net::DataMining CleanCode Perl API Reference Provides a mechanism for extracting data for a list of items from a set of web sites. Grabs data from a series of related and unrelated web pages, formatting it into a table suitable for spreadsheet-import or word-processor import. (I have one application which mines over 500 web pages for 2300 pieces of data, which I run on a weekly basis.)

Standalone Utilities and Applications

This section contains applications that may be run "out of the box", in various languages as noted in the table.

Image References Description
PowerShell DocTreeGenerator-- click for full size DocTreeGenerator API Reference on CleanCode PowerShell DocTreeGenerator: Provides an easy-to-use documentation generator for documenting your PowerShell libraries. It comes with a simple, generic template but you can easily instrument your own template to blend in with the look and feel of your site.
Keystroke Sandbox -- click for full size 'Exploring Secrets of .NET Keystroke Handling' on Code download is available from the DevX article Keystroke Sandbox: If you've ever been frustrated trying to figure out how to intercept or assign specific keystrokes to specific controls, you'll be glad you found this article. It reveals not only the fundamentals about how keystroke handling is exposed in the .NET framework, but also provides a handy Keystroke Sandbox to actually observe how keystrokes flow through an application, and concludes with a "cook book" detailing how to instrument your code for all the common key handling hooks.
XmlTransform -- click for full size 'XmlTransform:A General-Purpose XSLT Pre-Processor' on 'Add Custom XML Documentation Capability To Your SQL Code' on CleanCode XmlTransform details CleanCode Java API Reference XmlTransform: Preprocess HTML (or any XML), or generally convert XML to HTML, or XML to XML, via XSLT transformation. This package operates on an entire input tree of files, generating a comparable output tree after conversion. XmlTransform also provides XML Schema validation for either the input tree or output tree, or both. And, while transforming to HTML, you may choose to generate multiple tables of contents to go down a tree, and add navigational linkages to move sideways or up a tree. There are two published articles about this: one describes the engine itself; the second discusses an application of the engine--generating a documentation tree for a SQL procedure/function library.
Histogram -- click for full size CleanCode SQL API Reference 'Build a Generic Histogram Generator for SQL Server' on Histogram Generator: Histograms help people analyze large amounts of data, whether you display them as tables or as charts. This article shows you how to do both.
SQL Map -- click for full size CleanCode SQL API Reference 'Bring Array Mapping Capabilities to SQL' on SQL Map: Simplify your SQL tasks by giving your queries and stored procedures the ability to iterate over arrays of table names or values.
JSArchive -- click for full size CleanCode JSArchive details CleanCode Java API Reference JSArchive: Consolidate and compress one or more JavaScript files to create a single release archive for production, as well as to improve network throughput.
Pod2HtmlTree -- click for full size CleanCode Pod2HtmlTree details CleanCode Perl API Reference Pod2HtmlTree: Pod2HtmlTree bridges the gap between perldoc and javadoc, generating a hierarchical, hyperlinked documentation tree of your Perl library. This includes a full hyperlinked index of functions, methods, variables, and modules in your library. Pod2HtmlTree also supports multi-lingual libraries, cross-linking common modules between languages. Finally, each generated documentation page includes a capability bar that identifies generic capabilities of the module.
Plumb -- click for full size CleanCode Perl API Reference Plumb: A static Perl include file analyzer. Plumb the depths of the included module hierarchy for specified Perl files, providing a simple way to determine a module dependency tree. For a simple program, this won't reveal too much, but once you have dozens or hundreds of interlinked files, this can help track down dependency issues. This program is adapted from a version for C code I created when I worked at one firm which used a few libraries. Checking the dependencies on a single file produced a list of 17,000+ dependent files (with duplication, though)!
ServerFileExplorer -- click for full size CleanCode ServerFileExplorer details CleanCode Perl API Reference ServerFileExplorer: View files on a remote host with a Windows Explorer-like interface. If you have command-line access to a remote host or server but no windowing interface, this package allows you to use your browser as an interactive file explorer. Offering list, tree, and image modes, ServerFileExplorer provides unique features not found in Windows Explorer or even Novatix' ExplorerPlus, including the ability to view all files below any point in your directory tree, and the ability to enlarge or reduce thumbnails with a single keystroke.
WebPageInspector -- click for full size CleanCode WebPageInspector details CleanCode Java API Reference WebPageInspector: An interactive tool that fetches a web page and provides tables detailing headers, links, cookies, parameters, and meta-data, and provides windows to view the source code, the web page text, and the conventional display of the web page.
MultiFileReplace -- click for full size CleanCode MultiFileReplace details CleanCode Perl API Reference MultiFileReplace: MultiFileReplace provides a search and replace facility for all files (or selected files) in an entire directory tree. With two preview modes, it helps you ensure that you modify exactly what you want. And you may work with text blocks of arbitrary length by using file references rather than strings as your target and replacement text.
Valid XHTML 1.0!Valid CSS!Get CleanCode at Fast, secure and Free Open Source software downloads
Copyright © 2001-2013 Michael Sorens • Contact usPrivacy Policy
Usage governed by Mozilla Public License 1.1 and CleanCode Courtesy License
CleanCode -- The Website for Clean DesignRevised 2013.06.30