AOP for logging in .NET

UPDATE (02/24/2013):
I did manage to figure out (thanks to Jon Skeet answering my question on SO) how to tackle the async/await scenario for a AOP logger using StructureMap and DynamicProxy. Check out the tag v0.2 the tag v0.3 1 on GitHub for the source.

Implementing the AOP pattern into a C# .NET application is something I always wanted to do. I had tried PostSharp with a few other team members, a while ago, but could not get it working soon enough, that we quit the attempt after a while.

After reading up a little more (here, here and here) I am now trying it all over again in the flickr downloadr that I am now working on.

I still haven’t completely cracked it, because the Flickr Downloadr WPF app heavily uses the new asynchrony features (async/await etc.) from .NET 4.5. I hope to somehow adapt the dynamic proxy based intercept paradigm to make it work with the new asynchronous model soonand I shall follow this up here then with the details.

Read More…

Compressing JSON - lzwCompress.js

The application that I am working on now is a nice little ASP.NET MVC4 web app, whose target audience will access it on some of the popular tablets of the day - iPad, Android and Windows 8 Surface etc.!

The USP of the otherwise regular data entry app is that it has an offline mode, so that the data collection can happen even when there is no connectivity. Even with ubiquity of the data networks, this proved to be the critical aspect of the app for the client. And among the things being cached for offline mode, there is some really hefty business look-up/metadata, that has to be there for the app to function. The fact that the app would be targeting multiple devices, and because the HTML5 recommended IndexedDB API is still not implemented by some of the major players (Opera or Safari or any iOS6 browser), we had to fall back to the better/older/more-robust and now-deprecated Web SQL database as well.

Read More…

Useful git commands

  • Compare branches after squash merge or rebase
    git log --graph --left-right --cherry-pick --oneline master...experiment
  • Get git log graphically with all tags/branches:
    git log --all --decorate --oneline  --graph
  • Create or delete remote branches on push:
    # create new remote branch on push
    git push origin mybranch

    # delete existing remote branch on push
    git push origin :mybranch