<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Bonas Khanal on Software</title>
	<atom:link href="http://coderhaven.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://coderhaven.wordpress.com</link>
	<description></description>
	<lastBuildDate>Mon, 30 Jan 2012 20:42:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='coderhaven.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Bonas Khanal on Software</title>
		<link>http://coderhaven.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://coderhaven.wordpress.com/osd.xml" title="Bonas Khanal on Software" />
	<atom:link rel='hub' href='http://coderhaven.wordpress.com/?pushpress=hub'/>
		<item>
		<title>A week on the darker side with Microstrategy SDK, Flex, Flash and Eclipse</title>
		<link>http://coderhaven.wordpress.com/2011/03/19/a-week-on-the-darker-side-with-microstrategy-sdk-flex-flash-and-eclipse/</link>
		<comments>http://coderhaven.wordpress.com/2011/03/19/a-week-on-the-darker-side-with-microstrategy-sdk-flex-flash-and-eclipse/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 23:04:51 +0000</pubDate>
		<dc:creator>bkhanal</dc:creator>
				<category><![CDATA[Flash / Flex]]></category>
		<category><![CDATA[MicroStrategy]]></category>

		<guid isPermaLink="false">http://coderhaven.wordpress.com/?p=81</guid>
		<description><![CDATA[The past week I was playing with Microstrategy and evaluating it as a potential BI solution. Obvious question was how does it gel with custom development. Can we have a simple Silverlight charts that can go and use all features of Microstrategy? Similarly, how does it behave with custom Flash controls. To start with, I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderhaven.wordpress.com&amp;blog=16648717&amp;post=81&amp;subd=coderhaven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The past week I was playing with Microstrategy and evaluating it as a potential BI solution. Obvious question was how does it gel with custom development. Can we have a simple Silverlight charts that can go and use all features of Microstrategy?<br />
Similarly, how does it behave with custom Flash controls.<br />
To start with, I had to install MSTR 9, setup MSTR 9, install FlashBuilder 4. Oh I did install FlashBuilder 4 and had to install FlexBuilder 3, as MSTR 9 doesn&#8217;t support FLash Builder 9. I had the same problem with Eclipse. MSTR 9 supports 3.5 and I went and installed latest version. After lot of installations, darker side of Flash and Flex wasnot that bad at all.<br />
Given this was my first take on Flex, I was amazed on how similar its syntax is with Silverlight xaml. I think Microsoft did &#8220;learn&#8221; a lot from Flex in terms of xaml syntax. I did miss Visual Studio and the friendly programming, but I have to admit getting up and running with FLex was easy.<br />
Eclipse &#8211; I used to work with Java in school and eclipse and Java just needed a little bit of brush up before I was ready to dive deep in to MSTR SDK.<br />
MSTR SDK has three main components : Visualization SDK, Web Serices SDK and Web SDK.<br />
- Visualization SDK helps in visualization changes, adding more custom widgets out of flash and deploying them as MSTR widgets.<br />
- Web Services SDK exposes services as SOAP APIs with common 7-8 mostly used method calls.<br />
- Web SDK is used to customize thigns related around microstrategy Web.</p>
<p>Having gone through MSTR documentation, I have to admit I didn&#8217;t have an easy learning curve, it did take a while to understand what exactly was going on, but once you get feel of it, Web and Visualization SDK are pretty powerful. There&#8217;s good extension around creating tasks, exposing them as webservices, ,deploying controls as web customizations. I am not yet very comfortable around good architecture principals of Flex, but I think MSTR and eclipse (especially for Web SDK) does a pretty good job.</p>
<p>One challenge I had was calling MSTR web services sdk from silverlight page to get some data, MSTR out of the box visualizations only have formatted grid style or the flash style transformations. I am really surprised on why is there no default method to return the data in plain xml that can transform that data into a strongly typed dataset easily. There are some custom visualizations that can be applied to tranform the data to plainer XML, but again these needs to be deployed explicitly. I would have at least made sure I have simplegridBasedVisualization by default if I was to write a webservice SDK to execute a report.</p>
<p>Overall in conclusion, it was good times in the darker side, lot of new, interesting and different things, MSTR is pretty powerful, but there is considerable amount of work when one needs to customize lot of out of box stuff. In the end of the day,  I think its end users choice on what type of system one wants to build. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderhaven.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderhaven.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderhaven.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderhaven.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderhaven.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderhaven.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderhaven.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderhaven.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderhaven.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderhaven.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderhaven.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderhaven.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderhaven.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderhaven.wordpress.com/81/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderhaven.wordpress.com&amp;blog=16648717&amp;post=81&amp;subd=coderhaven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderhaven.wordpress.com/2011/03/19/a-week-on-the-darker-side-with-microstrategy-sdk-flex-flash-and-eclipse/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7688520a3f653407126085bca5824b99?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bkhanal</media:title>
		</media:content>
	</item>
		<item>
		<title>How to Become a Better Developer / Architect</title>
		<link>http://coderhaven.wordpress.com/2011/02/21/how-to-become-a-better-developer-architect/</link>
		<comments>http://coderhaven.wordpress.com/2011/02/21/how-to-become-a-better-developer-architect/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 20:24:21 +0000</pubDate>
		<dc:creator>bkhanal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://coderhaven.wordpress.com/?p=58</guid>
		<description><![CDATA[There are quite few articles floating around how can one be a better developer (and / or) architect . I also wanted to share my ideas / thoughts around it. Couple of things made me write this blog post : I have been proactively reading lot of blogs &#38; books (even old blogposts), teaching a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderhaven.wordpress.com&amp;blog=16648717&amp;post=58&amp;subd=coderhaven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There are quite few articles floating around how can one be a better developer (and / or) architect . I also wanted to share my ideas / thoughts around it.<br />
Couple of things made me write this blog post : I have been proactively reading  lot of blogs &amp; books (even old blogposts),  teaching a .NET class, watching technical videos and constantly challenging myself to think how can I become a better developer. </p>
<p>So, here are my top 10 list of how you can do it.</p>
<p><strong>0) Zero!! (like Sprint 0) </strong>- what you need is a desire to become better and commitment that you will improve myself. Technology is ever changing and if you stop somewhere, for lets say 6 months, you will see yourself left behind. Basically, you need to be <strong>passionate about technology</strong>. If you don&#8217;t have this, this blog post should be skipped. </p>
<p><strong>1) Watch training videos </strong>Lot of times, we focus on one side of technology. This is mostly driven by which company you work for and what&#8217;s the decided technology (if you don&#8217;t have influence on changing that) or what type of application you are working on. This makes us really good at one technology and we forget other technology stack completely.<br />
One good way to speed up learning new technology / API stack is watching training videos. This helps us know what&#8217;s going on other side of the fence and we are in a position to utilize technology wherever necessary.<br />
I am in love with Pluralsight and Tekpub videos and strongly recommend them. Pluralsight for giving me a deep dive on LINQ and ASP.NET MVC. Tekpub for all Ruby videos.</p>
<p><strong>2) Read Books.</strong>Reading books, without a doubt is what gives a depth to your understanding. Grab some real good books and read them if you want to know a certain technology in and out. I recommend reading books that are deeply focused on one side of the technology when you want to learn it in and out or read those books which are recommended by lot of people in the community. Some of books on top of my head are : DDD &#8211; Eric Evans, Working Effectively with Legacy Code &#8211; Michael Feathers, CLR via C# &#8211; Jeffrey Richter, Enterprise Architecture Patterns &#8211; Martin Fowler. </p>
<p><strong>3) Read blogs, have your blogroll, write a blog</strong><br />
This is where you know what&#8217;s going on in the community and you read thought leaders. Reading blogs gives you how people are thinking, what they are doing and where is the technology heading towards. Reading blogs needs a discipline (which I do miss most of the times) and I would say it requires at least around 30 minutes a day. So, between your morning coffee to lunch, find a 30 minute window to go through the blog, this is a very valuable time that you would spend on yourself.<br />
Write a blog goes along with reading a blog, when you start reading more, learning more, you would need an outlet to vent out / give out what you learnt to the world. This not only gives makes you makes you work on your blogpost technically but makes you understand how to express your own thoughts. I recommend writing at least 2 blog posts a month (I am trying to stick to it), and write about something trivial if some topic doesn&#8217;t really come to your mind because that&#8217;s how you can discipline yourself.</p>
<p><strong>4) Take some technical interviews</strong><br />
This might come to a surprise to lot of people. But, when you take technical interviews, it suddenly awakens you and you realize you need to learn a lot. This is generally an awakening call when you cannot answer questions from interviewer and you see where the market is going, how people are doing things differently in different companies, it just broadens your horizon and makes you want to learn more.</p>
<p><strong>5) Jump into unfamiliar territory</strong><br />
Jumping into unfamiliar zone broadens your horizon. You start seeing world in terms of many different languages and how languages and technology is learning from each other. Go and try some F#, see how LINQ benefited from it. Go and try some Ruby and see how ASP.NET MVC have similarities with it. Go and try Entity Framework if you work primarily with NHibernate and appreciate differences and similarities. This way you can see things more broadly and see how technologies evolve.</p>
<p><strong>6) Teach</strong><br />
This is in the list because teaching really does make you read a lot. I have been teaching .NET class for begineers and just to make myself more confident, I have to go to the depth onto how CLR works, how it evolved and what not. You also get into a good discussion with people, collaborate with people and in the end learn new things. </p>
<p><strong>7) Discuss technology and &#8220;listen&#8221;</strong><br />
I know all of us who work in &#8220;IT&#8221;, do discuss technology over lunch (lets say more or less we do). What I miss out is how many of us listen (I am the culprit at times)? If you hang out around cool smart people, its always good to share and discuss technology options, other people experience and how they view technology. There&#8217;s always a way to learn you just need to be open and listen.</p>
<p><strong>8 ) Be active member of user group, attend presentations and conferences </strong><br />
User groups are where people who do all of the above things hang around. Couple of advantages of going to user group &#8211; smart people, good content for learning, good networking and (free food)!. User groups gives you a vibe to learn more with lot of positive energy and keeps you up to date with new stuff. Attending presentations and conferences helps you learn more from the expters.<br />
Being involved in user group might also provide a chance to speak in one of those, which in turn helps you learn more about the thing you are speaking in and keeps you in the run of probably being a good speaker.</p>
<p><strong>9) Read framework code and other people&#8217;s code</strong><br />
This is where you get to see some of the cool stuff people are doing, where actual theory is being implemented and how you can possibly use them in your code. Reading framework gives the real boost where you need to understand implementation of all the things you read before.</p>
<p><strong>10) Be involved in an open source project. Write some framework.</strong><br />
Getting hands dirty in open source projects and trying to write some frameworks makes you do the talk and makes you involved in using real core stuff. Let&#8217;s say you are writing a MVVM framework. Not only it helps learn MVVM, see how other people are doing it, but gives you in-depth understanding of MVVM (its related patterns) and what&#8217;s probably right way of doing it.</p>
<p>Above points, not only makes the person a better developer or an architect, but it also brands your name and maybe move you a lot ahead in your career.<br />
I am trying to discipline and follow lot of these myself. </p>
<p>I hope you find this interesting. Please leave comments and thoughts. Happy coding!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderhaven.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderhaven.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderhaven.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderhaven.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderhaven.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderhaven.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderhaven.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderhaven.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderhaven.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderhaven.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderhaven.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderhaven.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderhaven.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderhaven.wordpress.com/58/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderhaven.wordpress.com&amp;blog=16648717&amp;post=58&amp;subd=coderhaven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderhaven.wordpress.com/2011/02/21/how-to-become-a-better-developer-architect/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7688520a3f653407126085bca5824b99?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bkhanal</media:title>
		</media:content>
	</item>
		<item>
		<title>Advanced Distributed Design @Udi Dahan Take Away</title>
		<link>http://coderhaven.wordpress.com/2011/01/08/advanced-distributed-design-udi-dahan/</link>
		<comments>http://coderhaven.wordpress.com/2011/01/08/advanced-distributed-design-udi-dahan/#comments</comments>
		<pubDate>Sat, 08 Jan 2011 19:59:14 +0000</pubDate>
		<dc:creator>bkhanal</dc:creator>
				<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://coderhaven.wordpress.com/?p=45</guid>
		<description><![CDATA[Udi Dahan has been an inspiring personality, his blogs, his architecture style , NServiceBus are simply amazing. I have been following his blog for couple of years now and I got a chance to meet, see, interact and learn from the guy when I went for a training in Seattle ( http://www.udidahan.com/training/#Advanced_Distributed_System_Design). My reaction after [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderhaven.wordpress.com&amp;blog=16648717&amp;post=45&amp;subd=coderhaven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Udi Dahan has been an inspiring personality, his blogs, his architecture style , NServiceBus are simply amazing. I have been following his blog for couple of years now and I got a chance to meet, see, interact and learn from the guy when I went for a training in Seattle ( http://www.udidahan.com/training/#Advanced_Distributed_System_Design).</p>
<p>My reaction after 1st day in the training was &#8211; WOW! &#8211; This guy is so knowledegable and yet so down to earth and humble.</p>
<p>By the 5th day on the training, he convinced almost everyone in the room that we are still maturing a lot in terms of architecture, SOA and he showed the proper way of doing it. There was probably more than total of 300+ years of experience in that room (around 25 ppl) and am sure all of us learnt something in our own ways.</p>
<p>I won&#8217;t be doing justice if I try to write a blog post around 5 days of training that he gave. But, I decided to jot my top 10 take aways from that class.</p>
<p>1) We as developers / architects take network, bandwith, performance, latency for granted. We assume, its not our responsibility to consider so &#8211; called edge cases / fail over scenarios.</p>
<p>2) Problems should be solved using simple methods when problems are simple. Every technology has its place, e.g if a problem requires us to run a proc and cleanse something  in a set based operation, maybe SQL is the way to go, or if we are trying to load object graph &#8211; maybe ORM is the way to go. I have seen big proponents of people saying stored proc is bad, &#8220;NEVER&#8221; use it.</p>
<p>3) Covering a business logic around WCF and exposing as a WCF contract is not going to give us our &#8220;domain model&#8221; and a service.</p>
<p>4) Introducing tiers just for the sake of it is not a good idea. Its probably adding one more tier that can fail.</p>
<p>5) SOA is confused by many people. Service is the module / component that have an autonomy over its business and data model. And no other service component should share this data or logic. If we try to align our services, just using this rule, we will get rid of lot of complexity that already exists. Service is composed of not an operation contract (like WCF), but it has all components from UI to the data base layer and its a single autonomous unit.</p>
<p>6) Saga are very powerful way of handling business logic and really capturing business intent. It can model really complex business logic.﻿﻿ NServiceBus looks more powerful than MassTransit.</p>
<p>7) SOA and CQRS go hand in hand. Trying to do CQRS without SOA where everything is shared and replicated across multiple databases &#8220;might&#8221; make system more complex. Yes, we would get some advantage of being able to normalize reads and writes, but full advantage of CQRS comes from knowing service boundaries.</p>
<p>8) Doing &#8220;real SOA&#8221; is a big leap from where most of the companies stand today. Its a big leap which needs a thought process  change at all levels.</p>
<p>9) We can do lot of interesting things with commands &#8211; instead of just going to the data base and inserting a record. Commands can actually mimic real business world use case and fire lot of other events in other Business Component to fulfill related tasks.</p>
<p>10) Lot of times, we donot get the real business requirement, business tries to think in terms of CRUD and tables and old way of doing things, however, systems can be made much more intelligent to align with the real business domain. We as developers need to talk more with business with to know the real business requirements.</p>
<p>There was lot of good learning out of this class. But, I see quite few pressing questions and challenges that&#8217;s hard to break when you try to implement Udi&#8217;s recommendation</p>
<p>&#8212; There&#8217;s no real source of truth. a Central database that has all the data. Most companies are used to saying this database holds all the data. In this stlyle, all Business Components will have its own segregated form of database.</p>
<p>&#8211; Big reports / SSAS - ETLs (which crosses service boundaries) that already exists in company are hard to move around and there&#8217;s definitely a huge challenge in trying to remodel  / reaccess these reports based on new architecture. Its definitely hard to figure out which service component would be responsible for this type of report.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderhaven.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderhaven.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderhaven.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderhaven.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderhaven.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderhaven.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderhaven.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderhaven.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderhaven.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderhaven.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderhaven.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderhaven.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderhaven.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderhaven.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderhaven.wordpress.com&amp;blog=16648717&amp;post=45&amp;subd=coderhaven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderhaven.wordpress.com/2011/01/08/advanced-distributed-design-udi-dahan/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7688520a3f653407126085bca5824b99?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bkhanal</media:title>
		</media:content>
	</item>
		<item>
		<title>MVVM SmackDown : MVVM Frameworks (MVVMLight, Caliburn Micro, Jounce, Prism)</title>
		<link>http://coderhaven.wordpress.com/2011/01/08/mvvm-smackdown-mvvm-frameworks-mvvmlight-caliburn-jounce-prism/</link>
		<comments>http://coderhaven.wordpress.com/2011/01/08/mvvm-smackdown-mvvm-frameworks-mvvmlight-caliburn-jounce-prism/#comments</comments>
		<pubDate>Sat, 08 Jan 2011 00:04:56 +0000</pubDate>
		<dc:creator>bkhanal</dc:creator>
				<category><![CDATA[Caliburn Micro]]></category>
		<category><![CDATA[MVVM Light]]></category>

		<guid isPermaLink="false">http://coderhaven.wordpress.com/?p=41</guid>
		<description><![CDATA[I had an opportunity to be a part of MVVM Smackdown on one of our user group NTexas Silveright User Group meetings.  We had an awesome idea of having different people talk  on different MVVM frameworks. Four of us, took four different frameworks and in a 2 hr period talked about pros and cons of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderhaven.wordpress.com&amp;blog=16648717&amp;post=41&amp;subd=coderhaven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I had an opportunity to be a part of MVVM Smackdown on one of our user group NTexas Silveright User Group meetings.  We had an awesome idea of having different people talk  on different MVVM frameworks. Four of us, took four different frameworks and in a 2 hr period talked about pros and cons of each of these. I got to talk on MVVM Light.</p>
<p>Speaking about MVVM Light, I would say, I liked the fact that MVVM Light is simple, easy to understand and yet very powerful framework that just does what a basic MVVM framework needs to do.</p>
<p>This was my first presentation in the user group. I had an awesome experience going through the whole process and I did appreciate how talking about something helps you learn, prepare and present. Also, I got some valuable feedback after the presentation and loved it. I was waiting to post this until we get the recording on INETA site.</p>
<p>Thanks goes to Shawn and INETA for recording this, helped me review my presentation and find things I need to improve on.</p>
<p>I have attached slides, codes and videos from the presentation.</p>
<p>Slides : http://www.ntsilverlight.com/wp-content/uploads/2010/11/mvvm.zip</p>
<p>Link to video : MVVMLight Part (http://live.ineta.org/Presentation/ViewVideo/189)</p>
<p>All MVVM frameworks : http://live.ineta.org/Presentation/Group/26</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderhaven.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderhaven.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderhaven.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderhaven.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderhaven.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderhaven.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderhaven.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderhaven.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderhaven.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderhaven.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderhaven.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderhaven.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderhaven.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderhaven.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderhaven.wordpress.com&amp;blog=16648717&amp;post=41&amp;subd=coderhaven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderhaven.wordpress.com/2011/01/08/mvvm-smackdown-mvvm-frameworks-mvvmlight-caliburn-jounce-prism/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7688520a3f653407126085bca5824b99?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bkhanal</media:title>
		</media:content>
	</item>
		<item>
		<title>WP7 and Chart Control</title>
		<link>http://coderhaven.wordpress.com/2010/11/17/wp7-and-chart-control/</link>
		<comments>http://coderhaven.wordpress.com/2010/11/17/wp7-and-chart-control/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 05:59:23 +0000</pubDate>
		<dc:creator>bkhanal</dc:creator>
				<category><![CDATA[Windows Phone 7]]></category>

		<guid isPermaLink="false">http://coderhaven.wordpress.com/?p=37</guid>
		<description><![CDATA[Windows Phone 7 toolkit doesn&#8217;t have a chart control (which I think would be a nice to have). However, WP7 is built on top of Silverlight 3 and it supports Silverlight Toolkit which has the chart control. With this assumption, one would go get the latest Nov 09 build of Toolkit and try to run [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderhaven.wordpress.com&amp;blog=16648717&amp;post=37&amp;subd=coderhaven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Windows Phone 7 toolkit doesn&#8217;t have a chart control (which I think would be a nice to have). However, WP7 is built on top of Silverlight 3 and it supports Silverlight Toolkit which has the chart control.</p>
<p>With this assumption, one would go get the latest Nov 09 build of Toolkit and try to run the chart under WP7. But, seems there&#8217;s a bug in the Phone version of .NET Framework which causes exceptions.</p>
<p>So, after googling around a bit, I came across blogpost of David Anson where he talks about this bug and has new binaries for datavisualization component. You can get to source <a href="http://blogs.msdn.com/b/delay/archive/2010/04/20/phone-y-charts-silverlight-wpf-data-visualization-development-release-4-and-windows-phone-7-charting-sample.aspx">here </a>.</p>
<p>After changing the referenced November DLL&#8217;s to the above dll&#8217;s for (System.Windows.Controls.DataVisualization.Toolkit.dll), chart looks fine and seems to be working. David has even added template for landscape and potrait orientation.</p>
<p>The size of dll is 388KB and looks like I am using it only to get a simple bar and a pie chart. I would be trying to extract part of the code for bar and pie chart and put into its own assembly for a smaller footprint, also it would be interesting to see if same chart can be WP7 optimized.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderhaven.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderhaven.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderhaven.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderhaven.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderhaven.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderhaven.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderhaven.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderhaven.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderhaven.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderhaven.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderhaven.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderhaven.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderhaven.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderhaven.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderhaven.wordpress.com&amp;blog=16648717&amp;post=37&amp;subd=coderhaven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderhaven.wordpress.com/2010/11/17/wp7-and-chart-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7688520a3f653407126085bca5824b99?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bkhanal</media:title>
		</media:content>
	</item>
		<item>
		<title>WP7 : Getting Started</title>
		<link>http://coderhaven.wordpress.com/2010/11/15/wp7-getting-started/</link>
		<comments>http://coderhaven.wordpress.com/2010/11/15/wp7-getting-started/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 04:41:47 +0000</pubDate>
		<dc:creator>bkhanal</dc:creator>
				<category><![CDATA[Caliburn Micro]]></category>
		<category><![CDATA[Windows Phone 7]]></category>

		<guid isPermaLink="false">http://coderhaven.wordpress.com/?p=26</guid>
		<description><![CDATA[I am getting started with writing a WP7 app and will be blogging about the experience. I come from SL background and I wil probably use Caliburn Micro (caliburnmicro.codeplex.com/) as MVVM framework around the app. (Not that its necessary, but I think it will help code faster in the long run). These are few gotchas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderhaven.wordpress.com&amp;blog=16648717&amp;post=26&amp;subd=coderhaven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am getting started with writing a WP7 app and will be blogging about the experience. I come from SL background and I wil probably use Caliburn Micro (caliburnmicro.codeplex.com/) as MVVM framework around the app. (Not that its necessary, but I think it will help code faster in the long run).</p>
<p>These are few gotchas I ran into while downloading and installing silverlight for windows phone 7. Few things that might same some time.<br />
<strong>Installation</strong><br />
Here&#8217;s a direct link for installation.</p>
<p>http://www.microsoft.com/downloads/en/details.aspx?FamilyID=04704acf-a63a-4f97-952c-8b51b34b00ce&#038;displaylang=en</p>
<p>Running vm_web.exe, I ran into the compatibility error in two machines I installed so far.</p>
<p>The trick was to remove comatibility mode.</p>
<p><a href="http://coderhaven.files.wordpress.com/2010/11/bugtracker1.png"><img class="alignnone size-medium wp-image-28" title="bugtracker" src="http://coderhaven.files.wordpress.com/2010/11/bugtracker1.png?w=300&#038;h=187" alt="" width="300" height="187" /></a><a href="http://coderhaven.files.wordpress.com/2010/11/bugtracker.png"></a></p>
<p><strong>Compiling Issue</strong><br />
Also, I ran into weird issue of zune software not being upto date while compiling and running the WP7 app. The exact exception<br />
Error 1 Zune software is not installed. Install the latest version of Zune software. 0 0</p>
<p>After googling and wasting some time, I figured its because I was trying to compile against windows 7 device instead of emulator.</p>
<p>I hope this helps save some time.</p>
<p>Happy WP7 coding..</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderhaven.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderhaven.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderhaven.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderhaven.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderhaven.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderhaven.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderhaven.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderhaven.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderhaven.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderhaven.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderhaven.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderhaven.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderhaven.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderhaven.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderhaven.wordpress.com&amp;blog=16648717&amp;post=26&amp;subd=coderhaven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderhaven.wordpress.com/2010/11/15/wp7-getting-started/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7688520a3f653407126085bca5824b99?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bkhanal</media:title>
		</media:content>

		<media:content url="http://coderhaven.files.wordpress.com/2010/11/bugtracker1.png?w=300" medium="image">
			<media:title type="html">bugtracker</media:title>
		</media:content>
	</item>
		<item>
		<title>StructureMap, Factories and Profile</title>
		<link>http://coderhaven.wordpress.com/2010/10/26/structuremap-factories-and-profile/</link>
		<comments>http://coderhaven.wordpress.com/2010/10/26/structuremap-factories-and-profile/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 04:20:17 +0000</pubDate>
		<dc:creator>bkhanal</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Dependency Injection]]></category>
		<category><![CDATA[IOC Container]]></category>
		<category><![CDATA[structuremap]]></category>

		<guid isPermaLink="false">http://coderhaven.wordpress.com/?p=8</guid>
		<description><![CDATA[At work, we have been using structuremap for a while for dependency injection framework. We came across a scenario where we had to switch objects at the run time. This switch was done based on some user profile settings. Lets say User is of Type : Manager Role, then I need to go to a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderhaven.wordpress.com&amp;blog=16648717&amp;post=8&amp;subd=coderhaven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>At work, we have been using structuremap for a while for dependency injection framework. We came across a scenario where we had to switch objects at the run time. This switch was done based on some user profile settings. Lets say User is of Type : Manager Role, then I need to go to a different database (Manager Database) and fetch records and if the user is of type : Employee Role, then I need to go to a different database (Employee Database). This sounds like a perfect case where we should be using factories and have a code like<br />
<code><br />
public class RepositoryFactory</code></p>
<p><code>{</code></p>
<p><code>public static IRepositry CreateRepository(EmployeeType role)</code></p>
<p><code> </code></p>
<p><code>{</code></p>
<p><code>if (role == EmployeeType.Employee) return new EmployeeRepository;</code></p>
<p><code>if (role == EmployeeType.Manager) return new ManagerRepository;</code></p>
<p><code>}</code></p>
<p><code> </code></p>
<p>&nbsp;</p>
<p><code>}</code></p>
<p>So, my question was : This works well and good, but when I am using a DI container to inject, why can&#8217;t I just mimic this behavior using structuremap and have all this setup during bootstrapping?</p>
<p>1)</p>
<p>I followed  an approach using structuremap Profile. Profile was originally intended to get different objects based on different environments. There can be a dev, test, mock, production profile, each of which would use different sessionfactories / repositories / logging as per user requirement. Setting up the profile is pretty simple. Here&#8217;s what it looks like.<br />
<code><br />
CreateProfile("Employee")<br />
            .For&lt;IRepository&gt;().UseConcreteType&lt;EmployeeRepository&gt;();<br />
 CreateProfile("Manager")<br />
            .For&lt;IRepository&gt;().UseConcreteType&lt;ManagerRepository&gt;();<br />
</code><br />
So, basically wherever I found whether user is employee or manager, I can now just go and set the profile to the one that I am interested in. This looks pretty good as we can extend this to have many different types switches in a profile. </p>
<p>I found couple of blog posts around how people are having issues with profile in multi-threaded environment, it concerned me, as I didn&#8217;t want to introduce possible defect just for some factory logic.<br />
Then, I gave it a second thought , do we really need to use profiles for  one simple factory code, does it need to be this complicated. After some googling, some help in user groups, here&#8217;s the second approach that I liked and used.</p>
<p>2) Define the condition within the bootstrapping code itself. My registration looked like this.<br />
<code><br />
For&lt;IRepository&gt;().Use(x =&gt;<br />
 {<br />
 if ( x.GetInstance&lt;UserRole&gt;().EmployeeType.Equals<br />
        (EmployeeType.Manager))<br />
        return new ManagerRepository();<br />
else<br />
     return new EmployeeRepository();<br />
 });</code><br />
I created a class wrapper UserRole and registered with structuremap, so at runtime wherever I need a repository, I would just get right repository by calling:</p>
<p>ObjectFactory.GetInstance&lt;IRepository&gt;();</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderhaven.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderhaven.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderhaven.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderhaven.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderhaven.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderhaven.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderhaven.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderhaven.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderhaven.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderhaven.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderhaven.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderhaven.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderhaven.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderhaven.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderhaven.wordpress.com&amp;blog=16648717&amp;post=8&amp;subd=coderhaven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderhaven.wordpress.com/2010/10/26/structuremap-factories-and-profile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7688520a3f653407126085bca5824b99?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bkhanal</media:title>
		</media:content>
	</item>
	</channel>
</rss>
