Click here to monitor SSC

Author Profile

Michael Sorens

Michael Sorens is passionate about software to be more productive, evidenced by his open source libraries in several languages (see his API bookshelf) as well as SqlDiffFramework (a DB comparison tool for heterogeneous systems including SQL Server, Oracle, and MySql). With degrees in computer science and engineering he has worked the gamut of companies from Fortune 500 firms to Silicon Valley startups over the last 25 years or so. Current passions include PowerShell, .NET, SQL, and XML technologies (see his full brand page). Spreading the seeds of good design wherever possible, he enjoys sharing knowledge via writing (see his full list of articles), teaching, and StackOverflow. Like what you have read? Connect with Michael on LinkedIn and Google +

PowerShell One-Liners: Help, Syntax, Display and Files

PowerShell is designed to be used by busy IT professionals who want to get things done, and don't necessarily enjoy programming. PowerShell tackles this paradox by providing its own help and command-line intellisense. We aim to make it a bit easier still by providing a series of collections of general-purpose one-liners to cover most of what you'll need to get useful scripting done. Read more...

Acceptance Testing with FitNesse: Multiplicities and Comparisons

FitNesse is one of the most popular tools for unit testing since it is designed with a Wiki-style interface that makes it very easy to set up individual tests. Michael Sorens' sixth article in his series delves into the nuances of multiple inputs vs. multiple outputs, multiple rows vs. multiple columns, as well as things that can trip you up when attempting to validate a value. Read more...

Acceptance Testing with FitNesse: Symbols, Variables and Code-behind Styles

Although FitNesse can be used as a generic automated testing tool for both applications and databases, it excels at unit testing since it is designed with a Wiki-style interface that makes it very easy to set up tests. In part 5, Michael Sorens explains how to use symbols and variables effectively, and why those terms are themselves rather problematic Read more...

PowerShell Data Basics: XML

To master PowerShell, you must know how to use XML. XML is an essential data interchange format because it remains the most reliable way of ensuring that an object's data is preserved. Fortunately, PowerShell makes it all easy, as Michael Sorens demonstrates. Read more...

PowerShell Data Basics: File-Based Data

One of the frustrations of anyone beginning with PowerShell is the simple task of getting data in and out. To help out with this, Michael Sorens begins a series that shows you how to import data from most of the common file formats and sources. He also shows how to export data in a range of formats. Read more...

Acceptance Testing with FitNesse: Debugging, Control Flow, and Tracing

FitNesse is an automated testing tool for software. based on Ward Cunningham's Framework for Integrated Test. It is designed particularly for acceptance testing and works with both applications and databases. In part 4, Michael Sorens shows you how to debug with Visual Studio, manage control flow and enable tracing. Read more...

Acceptance Testing with FitNesse: Naming and Layout

Having dealt with Documentation and Infrastructure in the popular wiki-based acceptance-testing tool Fitnesse, Michael turns his attention to conventions and best-practices for naming and layout, in his continuing series of articles that represent the 'view from the trenches'. Read more...

Acceptance Testing with FitNesse: Documentation and Infrastructure

FitNesse is a popular general-purpose wiki-based framework for writing acceptance tests for software systems, including databases. It is intended to be easy for the tester to learn and use. In this article, Michael Sorens gives a 'view from the trenches' of Fitnesse's documentation and infrastructure. Read more...

Acceptance Testing With FitNesse, The Overview

FitNesse is an open-source framework for supporting user-acceptance testing. The aim is to make the construction of the individual tests as easy and intuitive as possible. It works with Java, .NET and database applications. It is very useful, but needs a simple 'tips from the trenches' guide to its use. Here is the start of that guide. Read more...

How To Document Your PowerShell Library

PowerShell provides comment-based help for functions and scripts with Get-Help, but when you want to document modules or generate a complete indexed API in HTML format, just as you can with Sandcastle for .NET or javadoc for Java, then stronger magic is required. Michael Sorens shows you how it is done, with source code. Read more...

MySQL Data Compare: The Manual that Time Forgot

MySQL Data Compare can both compare the data in MYSQL databases and also synchronise them. It is handy for a number of tasks for which MySQL has no built-in tools. Although it is intuitive to use and has online help, there has never been a manual; until now! Read more...

MySQL Compare: The Manual That Time Forgot, Part 1

Although SQL Compare, for SQL Server, is one of Red Gate's best-known products, there are also 'sister' tools that allow you to compare and synchronise MySQL and Oracle databases. MySQL Compare was originally a 'down-tools' project, so never had the extra features or lavish documentation of its siblings. In respect for a highly useful tool, we publish simple instructions of how to use it. Read more...

TortoiseSVN and Subversion Cookbook Part 11: Subversion and Oracle

It is only recently that the tools have existed to make source-control easy for database developers. Although entire build-scripts for databases could be stored in Subversion, tools like Source Control for Oracle (SoCO) now allow for a more effective source-control at object-level. Read more...

TortoiseSVN and Subversion Cookbook Part 10: Extending the reach of Subversion

Subversion provides a good way of source-controlling a database, but many operations are best done from within your database-development environmant. Fortunately, several products provide this integration Read more...

TortoiseSVN and Subversion Cookbook Part 9: Server, Repository, and Statistics

In the ninth installment of his popular series on using Subversion, Michael describes how to set up a simple Subversion server for a multi-user project and describes some of the reports, charts and tables you can get about the activity in your project Read more...

.NET Reflector Through the Looking Glass: The Cheese Course

Part 4 describes how you can extend reflector further by describing how reflector can be used to compare or manage assemblies and exercise the code in front of you or even any arbitrary code on the fly. Read more...

.NET Reflector Through the Looking Glass: The Pudding

There a number of ways in which Reflector, either by itself or with an Addin, allows you to analyse and explore assemblies, or even change the disassembly language Read more...

.NET Reflector Through the Looking Glass: The Meat and Potatoes

.NET Reflector is most often used for viewing, filtering, navigating, and debugging assemblies to understand it better. Here is how all that is done. Read more...

.NET Reflector Through the Looking Glass: The Hors d'Oeuvres

Almost everywhere that .NET applications are developed, there is .NET Reflector. Although there have been some blogs on how to use it, there has never been a documentation. Michael Sorens puts the matter right! Read more...

Database Source Control Basics: The Unified Solution

It isn't easy to use source control effectively for a database project unless you have a single solution that covers both your application files and your database, but which also allows you direct access from the file system. As always, it is the detail that can trip you up. Read more...

Database Source Control Basics: The Essential Operations

Database Source Control operates much like a conventional file-based source control, particularly with the Commit and Update operations. The complexities of applying updates to databases, doing rollbacks and deployment, come from the requirement to preserve the data in the database and ensure that it goes in the right place as the schema changes Read more...

Database Source Control Basics: Getting Started

It makes a lot of sense to do it, but how do you get started? Whatever you use to build Applications with SQL Server, there is a good way of using source control and many reasons for doing so. Read more...

TortoiseSVN and Subversion Cookbook: Part 8: Log Messages

There should always be a reason for a commit to source control, so why not make a log message mandatory when you commit, and make it easy add a link to a record in a bug-tracking system, or to another Log message? Michael Sorens explains how. Read more...

Practical PowerShell for SQL Server Developers and DBAs – Part 2

Having shown just how useful PowerShell can be for DBAs in executing queries, Michael Sorens now takes us through navigating SQL Server space and finding meta-information - valuable information for anyone looking to be more productive in SQL Server. Read more...

Practical PowerShell for SQL Server Developers and DBAs – Part 1

There is a lot of confusion amongst DBAs about using PowerShell due to existence the deprecated SQLPS mini-shell of SSMS and the newer SQLPS module. In a two-part article and wallchart, Michael explains how to install it, what it is, and some of the excellent things it has to offer. Read more...

TortoiseSVN and Subversion Cookbook Part 7: Managing Revisions

Here are recipes to manage Subversion source control revisions effectively, such as managing revisions, working out the current revision, whether it is up to date, working with more than one revision at a time, and getting notifications when certain files change. Read more...

Practical PowerShell: Pruning File Trees and Extending Cmdlets

One of the most radical features of PowerShell is amongst the least known. It is possible to extend the buit-in Cmdlets to provide extra functionality. One can add or remove parameters to make subsequent scripting simpler. Michael shows how this is done to meet a practical requirement:, excluding entire subtrees from a recursive directory trawl for automating source control. Read more...

TortoiseSVN and Subversion Cookbook Part 6: Snapshots

Moving backwards in time in Subversion is like time travel in science fiction. It's fine to look around, but If you change anything it can have unforseen consequences, and you always have to return to the present. Snapshots enable you to navigate in source control to examine or compile the code as it existed at a point in time; to access a particular build. Read more...

TortoiseSVN and Subversion Cookbook Part 5: Instrumenting Files with Version Information

Subversion lets you embed, and automatically update, information within source-controlled files to make it easy to see who did what, and when they did so. It is not entirely straightforward to get it working, though; unless of course you read, and follow, Michael's easy guide. Read more...

TortoiseSVN and Subversion Cookbook Part 4: Sharing Common Code

Michael Sorens continues his series on source control with Subversion and TortoiseSVN by describing several ways one can use to share code among several projects. Read more...

TortoiseSVN and Subversion Cookbook Part 3: In, Out, and Around

Subversion doesn't have to be difficult, especially if you have Michael Sorens's guide at hand. After dealing in previous articles with checkouts and commits in Subversion, and covering the various file-manipulation operations that are required for Subversion, Michael now deals in this article with file macro-management, the operations such as putting things in, and taking things out, that deal with repositories and projects. Read more...

TortoiseSVN and Subversion Cookbook Part 2: File Operations and Subversion Filtering

The second part of Michael's series of articles gives more recipes for Subversion Source Control. This time he explains how to add files, highlights tools and techniques for determining what to include in source control and shows how to quickly and efficiently filter out the "noise". Read more...

Subversion and TortoiseSVN Cookbook Part 1- The Basics

If you have more than zero developers in your team, then you need Source Control. In this article Michael starts a series that aims to provide clear and complete recipes for using Subversion, mainly through its simple, elegant, graphical interface: TortoiseSVN. Read more...

Further Down the Rabbit Hole: PowerShell Modules and Encapsulation

Modules allow you to use standard libraries that extend PowerShell's functionality. They are easier to use than to create, but if you get the hang of creating them, your code will be more easily-maintained and re-usable. Let Michael Sorens once more be your guide through PowerShell's 'Alice in Wonderland' world. Read more...

Down the Rabbit Hole- A Study in PowerShell Pipelines, Functions, and Parameters

For an experienced programmer to learn a new language can be a journey quite like Alice's in wonderland. Paradoxes, unexpected twists, blind tangents, bafflements and nice surprises. Michael comes to the rescue of anyone learning PowerShell with an explanation of how to use PowerShell functions. Read more...

Harnessing PowerShell's String Comparison and List-Filtering Features

When you are first learning PowerShell, it often seems to be an 'Alice through the looking-glass' world. Just the simple process of comparing and selecting strings can seem strangely obtuse. Michael turns the looking-glass into wonderland with his wall-chart of the PowerShell string-comparison operators and syntax. Read more...

XPath, CSS, DOM and Selenium: The Rosetta Stone

Some programming conventions are best represented in a chart. Nobody will claim that XPath or CSS are entirely intuitive, as they are terse, economical ways of identifying elements in a hierarchy. However, a chart with recipes and examples is a different matter. Suddenly, apps like Selenium IDE are made easier. Read more...

Web Testing with Selenium Sushi: A Practical Guide and Toolset

How does one test the user-interface of a web application? Too often, the answer seems to be 'clumsily, slowly, and not very well'. The technology of automated, repeatable, testing of websites is still developing, but it exists; and Michael Sorens is here to describe an even better approach based on Selenium Read more...

LINQ Lycanthropy: Transformations into LINQ

LINQ is one of the few technologies that you can start to use without a lot of preliminary learning. Also, it lends itself to learning by trying out examples. With Michael's help, you can watch as your conventional C# code changes to ravenous LINQ before your very eyes. Read more...

LINQ Secrets Revealed: Chaining and Debugging

LINQ has the capabilities of providing a great productivity boost. LINQ Chaining is particularly powerful magic, giving your code greater clarity and brevity. Using it, and debugging it, can be tricky without the right tools and techniques, but Michael is on hand to explain and make suggestions. Read more...

Creating Tray Applications in .NET: A Practical Guide

It isn’t widely known that you can use both WPF and Winforms with VS2010 to create a system tray application in .NET. Michael gives you a practical guide, illustrated by an example that is so effective it can be put to immediate practical use. HostSwitcher comes complete with source code and can be downloaded. Read more...

Taming Sandcastle: A .NET Programmer's Guide to Documenting Your Code

The most effective way to document .NET code so that others can understand it and use it, is to use XML Documentation and SandCastle. It isn't that easy. Michael Sorens produces the easy guide to the process that Microsoft never managed, and introduces several applications that help. Read more...

Mixing WPF and WinForms

You can embed WPF controls in a WinForms application or WinForms controls in a WPF application, using a simple adapter. Because of this inherent symmetry, you can build hybrid applications, mixing controls from the other platform. Michael Sorens gives a practical guide to WPF / WinForms interoperability Read more...

Creating WPF Prototypes with SketchFlow

Prototyping with Sketchflow transforms what was once a frustrating and time-consuming chore. With SketchFlow, WPF prototypes can be created and changed with amazing ease. SketchFlow is WPF's secret weapon. Well, it was secret until Michael Sorens produced this article. Read more...

Essential Tools for the WPF Novice

When Michael sets out to do something, there are no half-measures; So when he set out to learn WPF, we all stand to benefit from the thorough research that he put into the task. He wondered what utility applications could assist programming in WPF. Here are the fruits of all his work. Read more...

From WinForm to WPF: A Quick Reference Guide

Michael Sorens provides a handy wallchart to help migration between WinForm / WPF, VS 2008 / 2010, and .NET 3.5 / 4.0. this can be downloaded for free from the speech-bubble at the head of the article. He also describes the current weaknesses in WPF, and the most obvious differences between the two. Read more...

Using LINQ Lambda Expressions to Design Customizable Generic Components

LINQ makes code easier to write and maintain by abstracting the data source. It provides a uniform way to handle widely diverse data structures within an application. LINQ’s Lambda syntax is clever enough even to allow you to create generic building blocks with hooks into which you can inject arbitrary functions. Michael Sorens explains, and demonstrates with examples. Read more...

Using Three Flavors of LINQ To Populate a TreeView

LINQ is a valuable technology. LINQ to XML, LINQ to Objects and LINQ to XSD, in particular, can save valuable time for developers and produce more maintainable code. Michael describes how he used three different flavours of LINQ to map XML to a Treeview component that he used in the QueryPicker control that was the subject of a two-part article here on Simple-Talk. Read more...

How to build a Query Template Explorer

Having introduced his cross-platform Query Template solution, Michael now gives us the technical details on how to integrate his .NET controls into applications both simple and complex. With screenshots and code samples, this has everything you need to build your own powerful SQL editor or Query Template explorer. Read more...

A Unified Approach to Multi-DataBase Query Templates

While trying to get the information he needed out of various SQL, MySQL and Oracle environments, Michael finally got tired of endlessly flicking through reference manuals and having to work so hard just to formulate his queries. So he decided to build a cross-platform Query Template solution to make his life easier, and he even went as far as building a .NET control to be integrated into applications. He's been kind enough to share the control, and the theory behind it, with us. Read more...

Why Join

Over 400,000 Microsoft professionals subscribe to the Simple-Talk technical journal. Join today, it's fast, simple, free and secure.