General Development

  • Powershell

    I first started writing Powershell to gain greater control of the database backup routine provided by TFS 2012 Express for its back-end SQL Server Express databases in the absence of SQL Agent.

    This has evolved into a module that contains cmdlets for enumerating SQL Server instances, backing up instance databases (full/log, user/system) after checking integrity and reorganizing/rebuilding indexes, exporting instance configuration settings (including version info, account & user info & mappings, the configuration of SQL Agent jobs, attached databases and their file paths, CLR assembly details and database mail settings) and outputting various reports from failed logins to log file fragmentation.

    I’ve also put together a module that performs tasks more commonly associated with SSIS to perform a variety of ETL functions.

    Many of the above are run as SQL Agent jobs from a single instance, providing a consistent automation environment.

    There’s also a module that allows other cmdlets to send email notifications and alerts.

    Original devlepment was done in PoSh ISE but has now migrated to Visual Studio (image)

  • OpenXml

    I have a lot of experience using OpenXml with C# to produce in-memory Word documents on a web server.

    Letters are either built up entirely in code or are stored as templates in SQL Server. In either case, mail merges are performed with database data and the resulting document(s) either sent to the browser for printing of hard copy or sent as an attachment to an email.

    I’ve also created sophisticated and fully styled digital forms and written the code to extract the data back from the forms upon their completetion (image).

  • WinForms

    • C#

      Although most of my development work over the last four years has been with ASP.NET MVC we still develop desktop apps as appropriate.

      These tend to be for ETL processes where the user needs to supply input and receive feedback and therefore SSIS is not appropriate.

      They are required when we're moving data between legacy systems built on Access or third party applications, such as the Finance department use, where we may not have direct developer access to the underlying tables.

      This can involve exporting data into Excel where the desktop apps can extract it, using OleDb, for further processing.

      We routinely also import the data, using ODBC, into in-house SQL Server databases e.g. for reporting using SSRS.

      While this provides an interface for the user, behind the scenes we can trigger SQL Agent Powershell jobs as well as manually code the more traditional ADO.Net elements of dealing with non-SQL Server data.

      These apps are built using the same multi-layer, multi-assembly techniques as we employ throughout our MVC development.

      Though we effectively use this process to move data into SQL Server for reporting, these are still OLTP databases and I'd welcome any opportunity to extend my academic experience with Data Warehouses & OLAP.

    • VB

      My previous experience with WinForms was during my three years with Compaq/HP from 2000-2003.

      We built and maintained a wide variety of line of business apps which controlled the production and shipping processes at their assembly plant near Bishopton.

      For these we used Visual Studio 6 and they were coded in Visual Basic.