I just released a new version of open source Texticize. Texticize is an extensible and intuitive object-to-text template engine for .NET. You can use Texticize to quickly create dynamic e-mails, letters, source code, or any other structured/unstructured text documents using predefined text templates substituting placeholders with properties of CLR objects at run-time.
Check it out on CodePlex at Texticize
AutoMapper is an awesome open source library that allows automatic object-to-object mapping. There are various getting-started blog posts and articles on the web (e.g. Getting Started Guide and AutoMapper on CodeProject) that will get you started with AutoMapper. I was recently challenged with a particular situation using AutoMapper that wasn’t immediately clear and took me a little investigating and some trial and error work, so I will share that with you.
My source object exposed some simple properties as well as a generic List property of another type. My target object had same simple properties, but the generic List property was of an interface type. Following is a simplified illustration of my source and target objects:
A cool thing about AutoMapper is that when it encounters a target object of an interface, it automatically generates a dynamic proxy class using Castle Dynamic Proxy. This is usually the desired behavior when mapping to a non-existent target class. In my case, however, the target class already existed, and dynamic proxy was just an overhead. I tinkered with AutoMapper mappings to actually map to my existing target rather than generating a proxy:
Essentially what I am doing in my mapping is to first create a map between my source and target Orders objects. Once that’s done, I create a map between my source and target Customer objects but provide a custom map for the Orders property. In my custom map I simply use AutoMapper to map my source Orders property to target Orders property using the map definition I provided earlier (lines 1-2 above). This works out great and I get my expected target object without incurring the overhead of expensive proxies.
Google Wave – a game changer that will change the very fundamentals of communications and collaboration over Internet as we know it today. If this technology takes off, as I believe it will, tools like e-mail and IM that we have grown to love and depend upon will gradually cease to exist. Other collaboration tools such as discussion forums, social networking, and blogging tools will change dramatically.
If you have not done so yet, checkout the Google Wave preview video here.
Web analytics is the science of collecting and analyzing your web site usage data so that you can optimize your site for best results. For example, if you analyze the click behavior of your web site users, you can learn how to best place links on your site to encourage most sales. Similarly if you learn about the demographics of your users, you can target marketing campaigns to those demographics that yield most results.
There are several tools that can be used for web analytics. Some of these are paid, while others are free. Below I will discuss some of the most useful tools available. Read more…