Patterns & Practices: Application Architecture Guide 2.0

This week the book Application Architecture Guide 2.0 - Designing Applications on the .NET platform was released.

This book is from the Patterns & Practices (P&P) team and is edited by Microsoft Press. It is available for free download. I have known that the P&P team has developed some interesting work on software engineering, by I haven't found the time to actually read something from them. This book might be my chance to do so. I opened it up a little bit and found a foreword from non other than Scott Guthrie, a very active engineer in the .NET community.

By the way, some previous reading material from P&P include two interesting topics: Performance Testing Guidance for Web Applications and Team Development with Visual Studio Team Foundation Server.

Until next time, may you enjoy some free reading.


A couple of Web development tools

I have been recently in contact with a couple of nice tools for Web Development:
  • Internet Explorer Developer Toolbar: Internet Explorer's equivalent to Firebug.
  • Fiddler: A stand alone tool/IE plug-in. Basically, it allows you to intercept HTTP requests and replies made through Internet Explorer, either directly or implicitly through tools that use IE facilities.
  • Firecookie: Yet another Firebug extension. This one adds a new tab for watching cookies. Very cool!
Until next time, may you enjoy extending your Web browser.


Two interesting add-ins for MS Office

If you use Microsoft Office, there are a couple of interesting add-ins which I find interesting.
Until next, may you enjoy adding things.


Hyper/Net: MDSoC support for .NET

Earlier this year, I attended the MSc discussion of Tiago Dias, entitled "Hyper/Net: MDSoC support for .NET". The thesis explored Multi-Dimensional Separation of Concerns (MDSoc) for the .NET platform, namely using the C# programming language. The idea is based Hyper/J, a research project abandoned by IBM a couple of years ago. While this may same like a bad start, Tiago's presentation was very good and convincing. Essentially, the MDSoC support is based on .NET's partial classes and some generative programming techniques. This work originated a research paper, with the same name of the dissertation, published in 2006. Also, some of the dissertation's chapters were stripped, as they belong on a possible future PhD thesis. These chapters dealt with the cognitive aspects of the multidimensional separation of concerns.

Until next time, may you enjoy separating concerns, one way or the other.


SQL Server BCP

A couple of weeks ago I was writing a small application to perform some ETL (Extract, Transform, Load) operations. As I was researching an efficient way to perform a large number of SQL insert statements, I found out about the BCP (Bulk CoPy) utility for MS SQL Server. This tool performs efficient data insertion (something in the order of thousands of row inserts per second), using as source CSV (Comma Separated Values) files. The mapping is performed through configuration files in a semi-structured format, or using an XML file (the latter is strongly recommended). Basically, the trick resides that unlike in regular inserts, database restrictions (primary keys, foreign keys, unique restrictions, null values, etc.) are not enforced for each row, but only at the end of the introduction, or per each block.

This was good solution for my needs at the time, which was to extract a large number of data from CSV files into a small number of tables, on a secondary database to the system in question. Of course, the mapping is limited: you cannot perform data normalization, only insert/remove columns, or switch its order. This means that either the input data is normalized, or you end up with a denormalized database. In sum, BCP does not replace an ETL tool, but provides an interesting complement in the "Loading" part.

By the way, a very nice book on the subject is Professional SQL Server 2005 Programming, by Robert Vieira, published by Wrox.

Until next time, may you enjoy bulk copying.