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 source code for virtually everything here is available on the download page.
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 Simple-Talk.com () or DevX.com () -- each typically includes further code resources to download, separate from the libraries available for download here; an internally published article on this website () -- some include links to live sandboxes for experimentation; a C#/.NET API reference (); a PowerShell/.NET API reference (); a T-SQL API reference (); a Perl API reference (); and a Java API reference ().
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.
|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.|
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: 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: 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: 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: 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: 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.|
|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.|
|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||Provides an API to manage external file resources.|
|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||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.)|
This section contains applications that may be run "out of the box", in various languages as noted in the table.
|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: 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: 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 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: Simplify your SQL tasks by giving your queries and stored procedures the ability to iterate over arrays of table names or values.|
|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: 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: 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: 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: 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.|