<?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/"
	>

<channel>
	<title>Akash Kava &#187; Technology</title>
	<atom:link href="http://akashkava.com/blog/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://akashkava.com/blog</link>
	<description>Founder of NeuroSpeech</description>
	<lastBuildDate>Tue, 10 Apr 2012 18:00:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Windows 8 Developer Preview (First Look)</title>
		<link>http://akashkava.com/blog/421/windows-8-developer-preview-first-look/</link>
		<comments>http://akashkava.com/blog/421/windows-8-developer-preview-first-look/#comments</comments>
		<pubDate>Sun, 18 Sep 2011 16:21:00 +0000</pubDate>
		<dc:creator>Akash Kava</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Developer Preview]]></category>
		<category><![CDATA[Metro]]></category>
		<category><![CDATA[Metro UI]]></category>
		<category><![CDATA[Preview]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[UI Atoms]]></category>
		<category><![CDATA[Windows 8]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://akashkava.com/blog/421/windows-8-developer-preview-first-look/</guid>
		<description><![CDATA[I installed Windows Developer Preview of upcoming operating system Windows 8, and it has few good and bad things. Just like a new product, it has new dashboard and cool way to navigate between apps using touch gesture, these things sure excites me up but also looking at the internals, there are more challenges for [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://akashkava.com/blog/421/windows-8-developer-preview-first-look/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "Windows+8+Developer+Preview+%28First+Look%29";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakashkava.com%2Fblog%2F421%2Fwindows-8-developer-preview-first-look%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakashkava.com%2Fblog%2F421%2Fwindows-8-developer-preview-first-look%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I installed Windows Developer Preview of upcoming operating system Windows 8, and it has few good and bad things. Just like a new product, it has new dashboard and cool way to navigate between apps using touch gesture, these things sure excites me up but also looking at the internals, there are more challenges for everyone to catch up with Window 8.</p>
<h1>New Task Manager</h1>
<p>Nice of all, I like the new improved Task Manager, which lets me look into complete Process Tree as well as I can see user wise Process Tree.</p>
<p><a href="http://akashkava.com/blog/wp-content/uploads/2011/09/WindowsTaskManager.png" target="_blank"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="WindowsTaskManager" src="http://akashkava.com/blog/wp-content/uploads/2011/09/WindowsTaskManager_thumb.png" border="0" alt="WindowsTaskManager" width="628" height="484" /></a></p>
<p>It also displays Process Tree grouped by Users.</p>
<p><a href="http://akashkava.com/blog/wp-content/uploads/2011/09/UserProcesses.png" target="_blank"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="UserProcesses" src="http://akashkava.com/blog/wp-content/uploads/2011/09/UserProcesses_thumb.png" border="0" alt="UserProcesses" width="579" height="484" /></a></p>
<p>And best of all, it lets me control my startup items from here, I can disable items I don’t want to auto start.</p>
<p><a href="http://akashkava.com/blog/wp-content/uploads/2011/09/StartupItems.png" target="_blank"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="StartupItems" src="http://akashkava.com/blog/wp-content/uploads/2011/09/StartupItems_thumb.png" border="0" alt="StartupItems" width="644" height="321" /></a></p>
<h1>New File Copy Dialog</h1>
<p>Another improved user interface is, File Copy dialog, instead of old style animation, it now displays a graph of progress with real cool line graph that’s very live.</p>
<p><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="FileCopyDialog" src="http://akashkava.com/blog/wp-content/uploads/2011/09/FileCopyDialog.png" border="0" alt="FileCopyDialog" width="467" height="302" /></p>
<h1>New Search</h1>
<p>Search is redesigned completely and you can search for settings by pressing Window + W key. Let’s say I want to change my desktop background, so I pressed Window + W and I typed “wallpaper”, it did give me these options.</p>
<p>Well I just tried all combinations of Window keys and only found following five useful combinations.</p>
<ol>
<li>Window + W lets you search the settings (usually control panel)</li>
<li>Window + P lets you switch between dual desktop and connect to projector settings</li>
<li>Window + D brings back the desktop</li>
<li>Window + F lets you search the files</li>
<li>Window + Q lets you search Metro App’s Items</li>
</ol>
<p><strong>To a big disappointment, I did not find anything to search apps, so I have to click on Windows + W and then click on App to actually search applications installed on my machine.</strong></p>
<p><a href="http://akashkava.com/blog/wp-content/uploads/2011/09/Wallpaper.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="Wallpaper" src="http://akashkava.com/blog/wp-content/uploads/2011/09/Wallpaper_thumb.png" border="0" alt="Wallpaper" width="644" height="380" /></a></p>
<h1>No Old Apps on Metro Desktop</h1>
<p>Metro UI Apps are redesigned using HTML5+JS and Appx with Windows Runtime (XAML + Windows Runtime). So none of your old Win32, .NET apps will execute on Metro UI. They can only execute inside the desktop (old fashion windows). So we have to redesign and rewrite the applications for Metro Desktop completely from scratch.</p>
<h1>Metro Desktop Apps are not Silverlight</h1>
<p>Although they quite look like silverlight, but looking at the documentation, Microsoft has introduced complete new set of library with “Windows.UI” namespace, which represents complete copy of Silverlight controls (and more) but they are not silverlight. So if you wrote your apps in Silverlight, they wont directly run on Metro UI, but you might be able to port them to Metro UI with some code changes as namespace changes System.Windows.Controls to Windows.UI.Controls. However, it may not be so easy but you will get very unexpected behavior if you try to port it directly.</p>
<h1>Three Different UI Technologies to Deal With</h1>
<p>Well the only sad part is, now we have total 3 different UI technologies to deal with.</p>
<ol>
<li>WPF 3.0, 3.5, 4.0 (Original WPF based on XAML). Apps written on WPF are old fashioned, and they will not execute on Metro UI, they will only run in Desktop version.</li>
<li>Silverlight (Web and Phone), Once again, two different forms of same Silverlight for web and phone. However all web that runs Silverlight (and even flash) wont run on Metro UI.</li>
<li>Windows Runtime (XAML,HTML5+JS), this is complete new set of library including various controls from Silverlight and WPF, however it is still not complete with both of them and it also includes more controls of its own. This is purely for Metro UI. HTML5 and JS are once again little different as Microsoft has its own API embedded to make developers feel easy to write code. But this does not mean that your HTML5 code will work absolutely correctly without any changes on Metro UI. In IE 10, it may run, but to make it an appx, you might need to change few things.</li>
</ol>
<p>As new UI stack is introduced by Microsoft, we will soon release a new version of “<a href="http://uiatoms.neurospeech.com" target="_blank">UI Atoms</a>” that will allow users to write Windows Runtime Metro UI apps with UI Atoms Controls.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fakashkava.com%2Fblog%2F421%2Fwindows-8-developer-preview-first-look%2F&amp;title=Windows%208%20Developer%20Preview%20%28First%20Look%29"><img src="http://akashkava.com/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://akashkava.com/blog/421/windows-8-developer-preview-first-look/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UI Atoms 1.7.5 Released</title>
		<link>http://akashkava.com/blog/387/ui-atoms-1-7-5-released/</link>
		<comments>http://akashkava.com/blog/387/ui-atoms-1-7-5-released/#comments</comments>
		<pubDate>Sun, 03 Apr 2011 09:04:00 +0000</pubDate>
		<dc:creator>Akash Kava</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Customize]]></category>
		<category><![CDATA[DataForm]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[UI Atoms]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://akashkava.com/blog/387/ui-atoms-1-7-5-released/</guid>
		<description><![CDATA[We are happy to announce new release of UI Atoms 1.7.5 with following new features. New AtomDataForm Control Tabs in AtomForm and AtomDataForm Lambda Binding Extensions Introducing new Control AtomDataForm AtomForm did support UI Validations, however Microsoft RIA Services Client has some inbuilt validation and support for IEditableObject. So we created a new AtomDataForm that [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://akashkava.com/blog/387/ui-atoms-1-7-5-released/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "UI+Atoms+1.7.5+Released";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakashkava.com%2Fblog%2F387%2Fui-atoms-1-7-5-released%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakashkava.com%2Fblog%2F387%2Fui-atoms-1-7-5-released%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>We are happy to announce new release of UI Atoms 1.7.5 with following new features.</p>
<ol>
<li>New AtomDataForm Control </li>
<li>Tabs in AtomForm and AtomDataForm </li>
<li>Lambda Binding Extensions </li>
</ol>
<h2>Introducing new Control AtomDataForm</h2>
<p>AtomForm did support UI Validations, however Microsoft RIA Services Client has some inbuilt validation and support for IEditableObject. So we created a new AtomDataForm that supports RIA Services validation and IEditableObject support.</p>
<ol>
<li>AtomDataForm supports object with IEditableObject interface and fires event for BeginEdit, CancelEdit and EndEdit </li>
<li>AtomDataForm displays items in read only mode unless Edit button is clicked </li>
<li>After edit button is clicked, Save and Cancel button appear for you to persist changes or cancel changes </li>
<li>AtomDataForm contains UI Element (TextBox, ComboBox etc) as children, so you can easily define child ui element in your xaml as shown in sample below </li>
<li>AtomDataForm supports Tabbed layout, for that you can insert your items within AtomDataFormTab as shown in example below </li>
<li>Following sample illustrates Tabs, but you can also create simple user interface without tab as well </li>
<li>You can also use AtomDataFormGroup to group items in to a headered group </li>
<li>Every child element of AtomDataForm can be accessed in code behind file easily because they appear as a variables when you define x:Name property </li>
<li>AtomDataForm supports CanChangeDataContext property, which is false when the form is in edit mode </li>
<li>You can easily reuse any third party control within AtomDataForm, AtomDataFormGroup and AtomDataFormTab </li>
</ol>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4af705bb-bc40-4470-8c60-7e87ee7745ca" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">AtomDataForm Sample</div>
<div style="background: #ddd; max-height: 500px; overflow: auto">
<ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px; white-space: nowrap">
<li><span style="color:#0000ff">&lt;</span><span style="color:#a31515">ns</span><span style="color:#0000ff">:</span><span style="color:#a31515">AtomDataForm</span> </li>
<li>   <span style="color:#ff0000"> Grid.Column</span><span style="color:#0000ff">=&quot;1&quot;</span> </li>
<li>   <span style="color:#ff0000"> DataContext</span><span style="color:#0000ff">=&quot;{</span><span style="color:#a31515">Binding</span><span style="color:#ff0000"> SelectedItem</span><span style="color:#0000ff">,</span><span style="color:#ff0000">ElementName</span><span style="color:#0000ff">=dataGrid}&quot; &gt;</span></li>
<li>            <span style="color:#a31515"></span></li>
<li>    <span style="color:#a31515"></span><span style="color:#008000">&lt;!&#8211; 1st Tab&#8211;&gt;</span></li>
<li>    <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">ns</span><span style="color:#0000ff">:</span><span style="color:#a31515">AtomDataFormTab</span><span style="color:#ff0000"> Header</span><span style="color:#0000ff">=&quot;Default&quot;&gt;</span></li>
<li>                <span style="color:#a31515"></span></li>
<li>        <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">TextBox</span> </li>
<li>           <span style="color:#ff0000"> ns</span><span style="color:#0000ff">:</span><span style="color:#ff0000">AtomDataForm.Label</span><span style="color:#0000ff">=&quot;Name:&quot;</span> </li>
<li>           <span style="color:#ff0000"> Text</span><span style="color:#0000ff">=&quot;{</span><span style="color:#a31515">Binding</span><span style="color:#ff0000"> ProductName</span><span style="color:#0000ff">,</span><span style="color:#ff0000"> Mode</span><span style="color:#0000ff">=TwoWay}&quot;/&gt;</span></li>
<li>                <span style="color:#a31515"></span></li>
<li>        <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">ns</span><span style="color:#0000ff">:</span><span style="color:#a31515">AtomToggleButtonBar</span> </li>
<li>           <span style="color:#ff0000"> ns</span><span style="color:#0000ff">:</span><span style="color:#ff0000">AtomDataForm.Label</span><span style="color:#0000ff">=&quot;Type:&quot;</span></li>
<li>           <span style="color:#ff0000"> SelectedItem</span><span style="color:#0000ff">=&quot;{</span><span style="color:#a31515">Binding</span><span style="color:#ff0000"> ProductType</span><span style="color:#0000ff">,</span><span style="color:#ff0000">Mode</span><span style="color:#0000ff">=TwoWay}&quot;&gt;</span></li>
<li>            <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">sys</span><span style="color:#0000ff">:</span><span style="color:#a31515">String</span><span style="color:#0000ff">&gt;</span><span style="color:#a31515">Product</span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">sys</span><span style="color:#0000ff">:</span><span style="color:#a31515">String</span><span style="color:#0000ff">&gt;</span></li>
<li>            <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">sys</span><span style="color:#0000ff">:</span><span style="color:#a31515">String</span><span style="color:#0000ff">&gt;</span><span style="color:#a31515">Service</span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">sys</span><span style="color:#0000ff">:</span><span style="color:#a31515">String</span><span style="color:#0000ff">&gt;</span></li>
<li>        <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">ns</span><span style="color:#0000ff">:</span><span style="color:#a31515">AtomToggleButtonBar</span><span style="color:#0000ff">&gt;</span></li>
<li>                <span style="color:#a31515"></span></li>
<li>        <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">TextBox</span></li>
<li>           <span style="color:#ff0000"> ns</span><span style="color:#0000ff">:</span><span style="color:#ff0000">AtomDataForm.Label</span><span style="color:#0000ff">=&quot;Folder:&quot;&gt;</span></li>
<li>            <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">ns</span><span style="color:#0000ff">:</span><span style="color:#a31515">AtomDataForm.CommandBox</span><span style="color:#0000ff">&gt;</span></li>
<li>                <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">Button</span><span style="color:#ff0000"> Content</span><span style="color:#0000ff">=&quot;&#8230;&quot;/&gt;</span></li>
<li>            <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">ns</span><span style="color:#0000ff">:</span><span style="color:#a31515">AtomDataForm.CommandBox</span><span style="color:#0000ff">&gt;</span></li>
<li>        <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">TextBox</span><span style="color:#0000ff">&gt;</span></li>
<li>                <span style="color:#a31515"></span></li>
<li>    <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">ns</span><span style="color:#0000ff">:</span><span style="color:#a31515">AtomDataFormTab</span><span style="color:#0000ff">&gt;</span></li>
<li>            <span style="color:#a31515"></span></li>
<li>    <span style="color:#a31515"></span><span style="color:#008000">&lt;!&#8211; 2nd Tab&#8211;&gt;</span></li>
<li>    <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">ns</span><span style="color:#0000ff">:</span><span style="color:#a31515">AtomDataFormTab</span><span style="color:#ff0000"> Header</span><span style="color:#0000ff">=&quot;General&quot;&gt;</span></li>
<li>                <span style="color:#a31515"></span></li>
<li>        <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">TextBox</span> </li>
<li>           <span style="color:#ff0000"> ns</span><span style="color:#0000ff">:</span><span style="color:#ff0000">AtomDataForm.Label</span><span style="color:#0000ff">=&quot;Email:&quot;</span>  </li>
<li>           <span style="color:#ff0000"> Text</span><span style="color:#0000ff">=&quot;{</span><span style="color:#a31515">Binding</span><span style="color:#ff0000"> Email</span><span style="color:#0000ff">,</span><span style="color:#ff0000"> Mode</span><span style="color:#0000ff">=TwoWay}&quot;/&gt;</span></li>
<li>                <span style="color:#a31515"></span></li>
<li>    <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">ns</span><span style="color:#0000ff">:</span><span style="color:#a31515">AtomDataFormTab</span><span style="color:#0000ff">&gt;</span></li>
<li>            <span style="color:#a31515"></span></li>
<li>    <span style="color:#a31515"></span><span style="color:#008000">&lt;!&#8211; 3rd Conditional Tab&#8211;&gt;</span></li>
<li>    <span style="color:#a31515"></span><span style="color:#008000">&lt;!&#8211; This tab will be visible only if Product&#39;s </span></li>
<li>    <span style="color:#008000">IsTypeService is true&#8211;&gt;</span></li>
<li>    <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">ns</span><span style="color:#0000ff">:</span><span style="color:#a31515">AtomDataFormTab</span> </li>
<li>       <span style="color:#ff0000"> Header</span><span style="color:#0000ff">=&quot;Service&quot;</span> </li>
<li>       <span style="color:#ff0000"> IsEnabled</span><span style="color:#0000ff">=&quot;{</span><span style="color:#a31515">Binding</span><span style="color:#ff0000"> IsTypeService}</span><span style="color:#0000ff">&quot;&gt;</span></li>
<li>                <span style="color:#a31515"></span></li>
<li>        <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">TextBox</span> </li>
<li>           <span style="color:#ff0000"> ns</span><span style="color:#0000ff">:</span><span style="color:#ff0000">AtomDataForm.Label</span><span style="color:#0000ff">=&quot;Service Details:&quot;/&gt;</span></li>
<li>                <span style="color:#a31515"></span></li>
<li>    <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">ns</span><span style="color:#0000ff">:</span><span style="color:#a31515">AtomDataFormTab</span><span style="color:#0000ff">&gt;</span></li>
<li>&nbsp;</li>
<li>    <span style="color:#a31515"></span><span style="color:#008000">&lt;!&#8211; 4th Conditional Tab&#8211;&gt;</span></li>
<li>    <span style="color:#a31515"></span><span style="color:#008000">&lt;!&#8211; This tab will be visible only if Product&#39;s </span></li>
<li>    <span style="color:#008000">IsTypeProduct is true&#8211;&gt;</span></li>
<li>    <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">ns</span><span style="color:#0000ff">:</span><span style="color:#a31515">AtomDataFormTab</span> </li>
<li>       <span style="color:#ff0000"> Header</span><span style="color:#0000ff">=&quot;Product&quot;</span> </li>
<li>       <span style="color:#ff0000"> IsEnabled</span><span style="color:#0000ff">=&quot;{</span><span style="color:#a31515">Binding</span><span style="color:#ff0000"> IsTypeProduct}</span><span style="color:#0000ff">&quot;&gt;</span></li>
<li>                <span style="color:#a31515"></span></li>
<li>        <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">TextBox</span><span style="color:#ff0000"> ns</span><span style="color:#0000ff">:</span><span style="color:#ff0000">AtomDataForm.Label</span><span style="color:#0000ff">=&quot;Product Details:&quot;</span> <span style="color:#0000ff"> &gt;</span></li>
<li>            <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">ns</span><span style="color:#0000ff">:</span><span style="color:#a31515">AtomDataForm.CommandBox</span><span style="color:#0000ff">&gt;</span></li>
<li>                <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">Button</span><span style="color:#ff0000"> Content</span><span style="color:#0000ff">=&quot;Search&quot;/&gt;</span></li>
<li>            <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">ns</span><span style="color:#0000ff">:</span><span style="color:#a31515">AtomDataForm.CommandBox</span><span style="color:#0000ff">&gt;</span></li>
<li>        <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">TextBox</span><span style="color:#0000ff">&gt;</span></li>
<li>                <span style="color:#a31515"></span></li>
<li>    <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">ns</span><span style="color:#0000ff">:</span><span style="color:#a31515">AtomDataFormTab</span><span style="color:#0000ff">&gt;</span></li>
<li>            <span style="color:#a31515"></span></li>
<li><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">ns</span><span style="color:#0000ff">:</span><span style="color:#a31515">AtomDataForm</span><span style="color:#0000ff">&gt;</span></li>
</ol></div>
</p></div>
</p></div>
<p>In above sample you can notice following things,</p>
<ol>
<li>Header property of AtomDataFormTab is displayed in the title section on the top </li>
<li>AtomDataFormTab contains children and each child can have properties as below
<ol>
<li>ns:AtomDataForm.Label displays label on left side </li>
<li>ns:AtomDataForm.Description displays description on bottom </li>
<li>ns:AtomDataForm.Title displays title on the top of control </li>
<li>ns:AtomDataForm.CommandBox displays a UI Element on the right corner, usually a search button or expand button </li>
</ol>
</li>
<li>AtomDataFormTab supports IsEnabled binding, you can bind this property to show/hide the tab as shown in the example above </li>
<li>Every child elemen of either AtomDataForm , AtomDataFormTab or AtomDataFormGroup supports Visibility and IsEnabled binding
<ol>
<li>If Visibility is bound and it results in Collapsed then entire form item is not displayed </li>
<li>IsEnabled binding can enable/disable the editable control </li>
</ol>
</li>
</ol>
<p>Following is screenshot of Tabbed AtomDataForm in edit mode</p>
<p><a href="http://akashkava.com/blog/wp-content/uploads/2011/04/AtomDataForm.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="AtomDataForm" border="0" alt="AtomDataForm" src="http://akashkava.com/blog/wp-content/uploads/2011/04/AtomDataForm_thumb.png" width="367" height="275" /></a></p>
<h2>Introducing Lambda Binder Extensions</h2>
<p>Writing binding expressions with conditions and converters can be very complex especially rewriting many and same logic at different classes. Now UI Atoms support, Lambda Binding Extensions which lets you do binding within the code without creating any complex IValueConverter implementation.</p>
<h3>Bind Method Extension</h3>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e332ae3d-d3f7-4a80-9c53-c235f4c6914e" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Element Property Binding</div>
<div style="background: #ddd; max-height: 300px; overflow: auto">
<ol style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;">
<li>theForm.Bind(<span style="color:#2b91af">AtomDataForm</span>.HeaderProperty,</li>
<li>    () =&gt; <span style="color:#0000ff">string</span>.Format(<span style="color:#a31515">&quot;{0} ({1})&quot;</span>,</li>
<li>            productName.Text,</li>
<li>            typeToggleButtonBar.SelectedItem</li>
<li>        ));</li>
</ol></div>
</p></div>
</p></div>
<p>This will bind theForm’s Header property to an expression that will combine properties of two different elements. And this will also automatically update when any of bound source or its property will change.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:3002cb7e-bef1-4f9b-9df1-b62ba184b9b3" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">DataContext Property Binding</div>
<div style="background: #ddd; max-height: 300px; overflow: auto">
<ol style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;">
<li>theForm.Bind(<span style="color:#2b91af">AtomDataForm</span>.HeaderProperty, </li>
<li>    () =&gt; <span style="color:#0000ff">string</span>.Format(<span style="color:#a31515">&quot;{0} ({1})&quot;</span>,</li>
<li>            theForm.DataContext.Property(<span style="color:#a31515">&quot;ProductName&quot;</span>),</li>
<li>            theForm.DataContext.Property(<span style="color:#a31515">&quot;ProductType&quot;</span>)</li>
<li>        ));</li>
</ol></div>
</p></div>
</p></div>
<p>Assuming, we may not have property information at design time, but we know that DataContext will be set to an object containing properties, then we can write Property extension method as shown above.</p>
<h3>BindVisibility Method Extension</h3>
<p>Visibility converters are very frequent so we created a BindVisibility extension method that will let you specify a boolean expression that will be converted to Visibility on the fly.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:a064c496-433a-43e7-a96f-5b55bd5a8449" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">BindVisibility Extension</div>
<div style="background: #ddd; max-height: 300px; overflow: auto">
<ol style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;">
<li>productTab.BindVisibility(</li>
<li>    () =&gt; </li>
<li>        typeToggleButtonBar.SelectedIndex == 0);</li>
</ol></div>
</p></div>
</p></div>
<p>These extensions can be used anywhere in any third party controls as well.</p>
<h3>Download Now</h3>
<p><a href="http://uiatoms.neurospeech.com/v1/download/UIAtoms2010Demo.zip" target="_blank">Click here</a> to download your free demo copy of NeuroSpeech UI Atoms 1.7.5</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fakashkava.com%2Fblog%2F387%2Fui-atoms-1-7-5-released%2F&amp;title=UI%20Atoms%201.7.5%20Released"><img src="http://akashkava.com/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://akashkava.com/blog/387/ui-atoms-1-7-5-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lambda Binder for WPF and Silverlight</title>
		<link>http://akashkava.com/blog/382/lamda-binder-for-wpf-and-silverlight/</link>
		<comments>http://akashkava.com/blog/382/lamda-binder-for-wpf-and-silverlight/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 10:19:00 +0000</pubDate>
		<dc:creator>Akash Kava</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Binding]]></category>
		<category><![CDATA[Expression]]></category>
		<category><![CDATA[Lambda]]></category>
		<category><![CDATA[Linq]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[MultiBinding]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[UI Atoms]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://akashkava.com/blog/382/lamda-binder-for-wpf-and-silverlight/</guid>
		<description><![CDATA[LambdaBinder class helps in creating complex binding expressions without having to create IValueConverter and IMultiValueConverter, it lets you write inline expresions with advanced binding scenarios. Lets say, you have two TextBox for first and last name and you want a Title to be displayed as addition of both. So lets say, you can write it [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://akashkava.com/blog/382/lamda-binder-for-wpf-and-silverlight/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "Lambda+Binder+for+WPF+and+Silverlight";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakashkava.com%2Fblog%2F382%2Flamda-binder-for-wpf-and-silverlight%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakashkava.com%2Fblog%2F382%2Flamda-binder-for-wpf-and-silverlight%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>LambdaBinder class helps in creating complex binding expressions without having to create IValueConverter and IMultiValueConverter, it lets you write inline expresions with advanced binding scenarios.</p>
<p>Lets say, you have two TextBox for first and last name and you want a Title to be displayed as addition of both.</p>
<p>So lets say, you can write it as follow,</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:9061959b-fde6-475a-bf14-95c7053acc05" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Adding Two Properties</div>
<div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px;">title.Bind(<span style="color:#2b91af">TextBlock</span>.TextProperty, <br />     () =&gt; firstName.Text + <span style="color:#a31515">&quot; &quot;</span> + lastName.Text);</div>
</p></div>
</p></div>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:be7019f9-9dce-4972-870e-e80107dfd84c" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Formatting Properties</div>
<div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px;">title.Bind(<span style="color:#2b91af">TextBlock</span>.TextProperty, <br />     () =&gt; <span style="color:#0000ff">string</span>.Format(<span style="color:#a31515">&quot;{0} {1}&quot;</span>, <br />         firstName.Text, lastName.Text));</div>
</p></div>
</p></div>
<p>You can pass on the Linq expression to Bind extension method of LamdaBinder and that will convert and set binding so that anytime if firstName or lastName is modified, the title will be updated automatically.</p>
<p>Assuming I want some hypothetical visibility logic, for example, only if the firstName is entered, lastName should be visible.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:5714191b-945b-42ad-ab19-bb35ba18d822" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Conditional Visibility Binding</div>
<div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px;">lastName.Bind(<span style="color:#2b91af">TextBox</span>.VisibilityProperty, <br />     () =&gt; firstName.Text.Length &gt; 0 ? <span style="color:#2b91af">Visibility</span>.Visible : <br />         <span style="color:#2b91af">Visibility</span>.Collapsed);</div>
</p></div>
</p></div>
<p>You can also use this to avoid writing IValueConverters and do inline binding in code very easily.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:3581c9f9-18d6-4824-97c5-f4d710e7ecd4" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Lambda Binder</div>
<div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px;"><span style="color:#0000ff">public</span> <span style="color:#0000ff">static</span> <span style="color:#0000ff">class</span> <span style="color:#2b91af">LambdaBinder</span><br /> {</p>
<p>     <span style="color:#0000ff">public</span> <span style="color:#0000ff">static</span> <span style="color:#0000ff">void</span> Bind(<br />         <span style="color:#0000ff">this</span> <span style="color:#2b91af">DependencyObject</span> dest, <br />         <span style="color:#2b91af">DependencyProperty</span> destProperty, <br />         <span style="color:#2b91af">Expression</span>&lt;Func&lt;<span style="color:#0000ff">object</span>&gt;&gt; func)<br />     {<br />         <span style="color:#2b91af">MultiBinding</span> b = <span style="color:#0000ff">new</span> <span style="color:#2b91af">MultiBinding</span>();<br />         b.Converter = <span style="color:#0000ff">new</span> <span style="color:#2b91af">MultiDelegateConverter</span>(func.Compile());<br />         <span style="color:#2b91af">LambdaBindingBuilder</span> bb = <span style="color:#0000ff">new</span> <span style="color:#2b91af">LambdaBindingBuilder</span>(b);<br />         bb.Visit(func.Body);<br />         <span style="color:#2b91af">BindingOperations</span>.SetBinding(dest, destProperty, b);<br />     }</p>
<p> }</p>
<p> <span style="color:#0000ff">public</span> <span style="color:#0000ff">class</span> <span style="color:#2b91af">LambdaBindingBuilder</span> : <span style="color:#2b91af">ExpressionVisitor</span><br /> {<br />     <span style="color:#0000ff">private</span> <span style="color:#2b91af">MultiBinding</span> multiBinding;</p>
<p>     <span style="color:#0000ff">private</span> <span style="color:#0000ff">string</span> lastPath = <span style="color:#0000ff">null</span>;</p>
<p>     <span style="color:#0000ff">public</span> LambdaBindingBuilder(<span style="color:#2b91af">MultiBinding</span> mb)<br />     {<br />         <span style="color:#0000ff">this</span>.multiBinding = mb;<br />     }</p>
<p>     <span style="color:#0000ff">protected</span> <span style="color:#0000ff">override</span> System.Linq.Expressions.<span style="color:#2b91af">Expression</span> VisitMember(<span style="color:#2b91af">MemberExpression</span> node)<br />     {<br />         <span style="color:#2b91af">PropertyInfo</span> p = node.Member <span style="color:#0000ff">as</span> <span style="color:#2b91af">PropertyInfo</span>;<br />         <span style="color:#0000ff">if</span> (p != <span style="color:#0000ff">null</span>) {<br />             <span style="color:#0000ff">if</span> (<span style="color:#0000ff">string</span>.IsNullOrWhiteSpace(lastPath))<br />             {<br />                 lastPath = p.Name;<br />             }<br />             <span style="color:#0000ff">else</span> {<br />                 lastPath = p.Name + <span style="color:#a31515">&quot;.&quot;</span> + lastPath;<br />             }<br />         }<br />         <span style="color:#2b91af">FieldInfo</span> f = node.Member <span style="color:#0000ff">as</span> <span style="color:#2b91af">FieldInfo</span>;<br />         <span style="color:#0000ff">if</span> (f != <span style="color:#0000ff">null</span>) { <br />             <span style="color:#2b91af">Binding</span> b = <span style="color:#0000ff">new</span> <span style="color:#2b91af">Binding</span>(lastPath);<br />             b.Source = System.Linq.Expressions.<span style="color:#2b91af">Expression</span>.Lambda&lt;Func&lt;<span style="color:#0000ff">object</span>&gt;&gt;(node).Compile()();<br />             multiBinding.Bindings.Add(b);<br />             lastPath = <span style="color:#0000ff">null</span>;<br />         }<br />         <span style="color:#0000ff">return</span> <span style="color:#0000ff">base</span>.VisitMember(node);<br />     }</p>
<p>     <span style="color:#0000ff">protected</span> <span style="color:#0000ff">override</span> System.Linq.Expressions.<span style="color:#2b91af">Expression</span> VisitConstant(<span style="color:#2b91af">ConstantExpression</span> node)<br />     {<br />         <span style="color:#0000ff">if</span> (!<span style="color:#0000ff">string</span>.IsNullOrWhiteSpace(lastPath)) {<br />             <span style="color:#2b91af">Binding</span> b = <span style="color:#0000ff">new</span> <span style="color:#2b91af">Binding</span>(lastPath);<br />             b.Source = node.Value;<br />             multiBinding.Bindings.Add(b);<br />             lastPath = <span style="color:#0000ff">null</span>;<br />         }<br />         <span style="color:#0000ff">return</span> <span style="color:#0000ff">base</span>.VisitConstant(node);<br />     }<br /> }</p>
<p> <span style="color:#0000ff">public</span> <span style="color:#0000ff">class</span> <span style="color:#2b91af">MultiDelegateConverter</span> : <span style="color:#2b91af">IMultiValueConverter</span><br /> {<br />     <span style="color:#0000ff">private</span> Func&lt;<span style="color:#0000ff">object</span>&gt; func;</p>
<p>     <span style="color:#0000ff">public</span> MultiDelegateConverter(Func&lt;<span style="color:#0000ff">object</span>&gt; func)<br />     {<br />         <span style="color:#0000ff">this</span>.func = func;<br />     }</p>
<p>     <span style="color:#0000ff">public</span> <span style="color:#0000ff">object</span> Convert(<span style="color:#0000ff">object</span>[] values, <br />         <span style="color:#2b91af">Type</span> targetType, <br />         <span style="color:#0000ff">object</span> parameter, <br />         System.Globalization.<span style="color:#2b91af">CultureInfo</span> culture)<br />     {<br />         <span style="color:#0000ff">return</span> func();<br />     }</p>
<p>     <span style="color:#0000ff">public</span> <span style="color:#0000ff">object</span>[] ConvertBack(<span style="color:#0000ff">object</span> value, <br />         <span style="color:#2b91af">Type</span>[] targetTypes, <br />         <span style="color:#0000ff">object</span> parameter, <br />         System.Globalization.<span style="color:#2b91af">CultureInfo</span> culture)<br />     {<br />         <span style="color:#0000ff">throw</span> <span style="color:#0000ff">new</span> <span style="color:#2b91af">NotImplementedException</span>();<br />     }<br /> }</div>
</p></div>
</p></div>
<p>&#160;</p>
<p>LambdaBinder is part of UI Atoms suite. At NeuroSpeech, we do research on UI and we are coming up with more interesting featues in UI Atoms.</p>
<p>Please <a href="http://uiatoms.neurospeech.com/silverlight/" target="_blank">Click Here</a> to download latest update of UI Atoms with AtomForm including Tabs in the form.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fakashkava.com%2Fblog%2F382%2Flamda-binder-for-wpf-and-silverlight%2F&amp;title=Lambda%20Binder%20for%20WPF%20and%20Silverlight"><img src="http://akashkava.com/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://akashkava.com/blog/382/lamda-binder-for-wpf-and-silverlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NeuroSpeech releases XamlGenerator 1.0</title>
		<link>http://akashkava.com/blog/356/neurospeech-releases-xamlgenerator-1-0/</link>
		<comments>http://akashkava.com/blog/356/neurospeech-releases-xamlgenerator-1-0/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 16:51:00 +0000</pubDate>
		<dc:creator>Akash Kava</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Generator]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[Xaml]]></category>

		<guid isPermaLink="false">http://akashkava.com/blog/356/neurospeech-releases-xamlgenerator-1-0/</guid>
		<description><![CDATA[XamlGenerator is Code Behind source code Generator for Xaml. Xaml Code Behind Generator makes it easier to generate Code Behind designer code from XAML, where code can be used at places where Xaml Services are not accessible. Features Using XAML 2009 in Silverlight and WPF Reusing Xaml Business Pages in Silverlight and WPF Support for [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://akashkava.com/blog/356/neurospeech-releases-xamlgenerator-1-0/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "NeuroSpeech+releases+XamlGenerator+1.0";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakashkava.com%2Fblog%2F356%2Fneurospeech-releases-xamlgenerator-1-0%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakashkava.com%2Fblog%2F356%2Fneurospeech-releases-xamlgenerator-1-0%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>XamlGenerator is Code Behind source code Generator for Xaml. </p>
<p>Xaml Code Behind Generator makes it easier to generate Code Behind designer code from XAML, where code can be used at places where Xaml Services are not accessible.   <br /><b>Features</b></p>
<ol>
<li>Using XAML 2009 in Silverlight and WPF </li>
<li>Reusing Xaml Business Pages in Silverlight and WPF </li>
<li>Support for User Controls derived from any Control </li>
<li>Using Complied code instead of BAML </li>
<li>Improving speed of XAML runtime </li>
<li>Using XAML to generate code to be used in ASP.NET, Server Core etc, where XAML Services are not available </li>
<li>Generated code is pure .NET 2.0 compliant, and you can target xaml objects to run in earlier .NET version too. </li>
<li>You can also create Xaml for WinForms and use it for your .NET 2.0 projects, however please notice, the features of WPF will not be available, it can only create object hierarchies based on XAML, but it can not give you binding etc features. </li>
<li>x:Name support for Resources, very useful for MVVM Pattern </li>
<li>Support for Custom Extension with Custom Code Generator</li>
</ol>
<h3>Xaml Code Generator</h3>
<p> .Net 4 introduces Xaml Services that can load Xaml Object Trees and it provides great deal in terms of intellisense and code behind facilities, however this can only be used where Xaml Services are installed. Also it is quite painful to debug and hide the generated baml resources, that actually is quite easy to disassemble and view the source.  <br />Xaml Code Generator can easily solve these problems by creating source code equivalent to loading object via Xaml Services. Instead, once generated, the performance of source code is quite faster then baml and xaml. Since ASP.NET and WinForms, code behind files did serve great support to link the UI and Code. However in WPF and Silverlight does not support simple references to code behind objects except events. There are work arounds, but we decided to create Xaml Code Generator that will solve lot of problems.<br />
<h4>Benefits to WPF and Silverlight</h4>
<ol>
<li>Xaml pages can now use x:Reference markup extension </li>
<li>Xaml pages can support generic type parameters </li>
<li>Xaml page can now derive from any control/panel </li>
<li>Xaml can easily reference any expression that involves code behind operation including &quot;this&quot; keyword </li>
<li>By using custom Xaml markup extensions, you can reuse Xaml between WPF and Silverlight</li>
</ol>
<h4>Known limitations with Xaml Code Generated files</h4>
<ol>
<li>Control Templates and Styles must use respective WPF/Silverlight markup only </li>
<li>No code behind files can be generated for Control Templates and Styles </li>
<li>Xaml pages can not be used with Navigation Urls </li>
<li>Instead code generated files are simply source code equivalent of Xaml, and they should be treated as .Net CLR Objects instead of Xaml Pages and there exists no equivalent baml resources</li>
</ol>
<h4>So how to use benefits of Code Generator as well as XAML</h4>
<p> We recommend following pattern to make use of best of both the worlds
<ol>
<li>Create Main Application Window/Page as regular Xaml </li>
<li>Instead of User Controls, use Xaml derived from Equivalent controls, such as StackPanel, Grid etc, and use them in Main Window/Pages </li>
<li>In this pattern, generated CLR objects of xaml will perform exactly same</li>
</ol>
<h3>Why Generate source code from XAML?</h3>
<p> Xaml and Xaml Services are great, they give a huge benefit in terms of runtime model loading and behaviour. For larger systems, and for complex enterprise applications Xaml is perfect. But we still have lot of code in .NET 2.0 and applications that are still heavily dependent on the components that do not support Xaml Services.  <br />Plus, shift of paradigm from code behind to view model is quite painful. Infact ability to use more code behind features is quite needed for current generation.  <br />Debugging Xaml is quite painful still, we still have lot of logic that lies in functional code and there is little more time still before we reach to completely modelled code.  <br />Here are few benefits outlined of generated code,
<ol>
<li>View Model can be replaced by Code behind, as we can easily reference xc:This and xc:Ref extensions </li>
<li>Debugging c# code can be easier which involves more complex UI designs </li>
<li>Xaml Generated can generate anything, even non UI code </li>
<li>You can even use Xaml Generator in your DSL tool</li>
</ol>
<p>For more details, please visit, <a title="http://xamlgenerator.codeplex.com/" href="http://xamlgenerator.codeplex.com/">http://xamlgenerator.codeplex.com/</a></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fakashkava.com%2Fblog%2F356%2Fneurospeech-releases-xamlgenerator-1-0%2F&amp;title=NeuroSpeech%20releases%20XamlGenerator%201.0"><img src="http://akashkava.com/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://akashkava.com/blog/356/neurospeech-releases-xamlgenerator-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UI Delegation Pattern for Data Controls in WPF/Silverlight</title>
		<link>http://akashkava.com/blog/258/ui-delegation-pattern-for-data-controls-in-wpfsilverlight/</link>
		<comments>http://akashkava.com/blog/258/ui-delegation-pattern-for-data-controls-in-wpfsilverlight/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 10:44:00 +0000</pubDate>
		<dc:creator>Akash Kava</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Delegation]]></category>
		<category><![CDATA[Pattern]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://akashkava.com/blog/?p=258</guid>
		<description><![CDATA[This is Preliminary documentation about UI Delegation Pattern to create Clean and Reusable Data Components and UI Markups in a Business Application. UI Delegation Pattern for WPF and Silverlight View more presentations from Akash Kava. UI Delegation Pattern I would call it simply divide and rule, UI Delegation Pattern is narrowing the focus towards piece [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://akashkava.com/blog/258/ui-delegation-pattern-for-data-controls-in-wpfsilverlight/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "UI+Delegation+Pattern+for+Data+Controls+in+WPF%2FSilverlight";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakashkava.com%2Fblog%2F258%2Fui-delegation-pattern-for-data-controls-in-wpfsilverlight%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakashkava.com%2Fblog%2F258%2Fui-delegation-pattern-for-data-controls-in-wpfsilverlight%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p align="justify">This is Preliminary documentation about UI Delegation Pattern to create Clean and Reusable Data Components and UI Markups in a Business Application.</p>
<div align="justify">
<div style="padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:77a73d93-0392-4904-b5ec-376ec54e12c8" class="wlWriterEditableSmartContent">
<div>
<div style="width:425px" id="__ss_3832620"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/ackava/ui-delegation-pattern-for-wpf-and-silverlight" title="UI Delegation Pattern for WPF and Silverlight">UI Delegation Pattern for WPF and Silverlight</a></strong><object width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=uidelegationpatternfordatacontrolsinwpfandsilverlight-100423123459-phpapp02&amp;stripped_title=ui-delegation-pattern-for-wpf-and-silverlight" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=uidelegationpatternfordatacontrolsinwpfandsilverlight-100423123459-phpapp02&amp;stripped_title=ui-delegation-pattern-for-wpf-and-silverlight" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/ackava">Akash Kava</a>.</div>
</div>
</div>
</div></div>
<h2 align="justify">UI Delegation Pattern</h2>
<p align="justify">I would call it simply divide and rule, UI Delegation Pattern is narrowing the focus towards piece of UI Element on the screen and have a UI component to fulfill every specific business needs.</p>
<p align="justify">User Interface is the direct connection between User and your business application, thought MVC, MVVM models exist, but they are found to be very useful in CRUD business applications, but when your application is more then CRUD and it involves complex UI and media / hardware interfaces for scientific and entertainment related applications, MVC/MVVM are little difficult to maintain over huge applications. This pattern is already in existence at many places. </p>
<h2 align="justify">Initial Rough Draft</h2>
<p align="justify">This is initial rough draft, I intend to collect problems and solutions and then I want to give a good name to this pattern, for now I am calling this as “UI Delegation Pattern” however I don&#8217;t know whether it suits the name correctly or not. But your opinions are most welcome, if such pattern is already named and exists then I am sorry if I am unaware of it, but please suggest if you know so.</p>
<h2 align="justify">UI Markup vs. Editor Files</h2>
<p align="justify">Earlier Visual Basic or Visual Studio would create .frm and resource files that would contain the contents of UI design created in “Designer/Editor” inside an IDE. These Editors would create code that is required to execute at runtime to create desired user interface. However since Editors would create code with specific style and pattern, these editor files are more or less very structured and they are less buggy. Of course too much of code will certainly make Editor very slow but at the same time, the consistency of UI code is preserved. But you are too much dependent on the Editor and complex UI could be very difficult to work in Editors.</p>
<p align="justify">Where else UI Markup based on xml, gives full freedom to user to create highly complex UI, but at the same time there is no consistency left as everyone writes code very differently. Markups gets piled into one file and it becomes way to difficult to maintain and understand how it works.</p>
<h2 align="justify">Identify Markup Noise</h2>
<p align="justify">My first approach is to identify problems with Markup Noise, so lets identify what is markup noise. When I see any html, aspx, php or such web scripts, the most annoying things I discover that in spite&#160; great CSS and Modular programming support, the scripts becomes a big junk to maintain. Sure WPF / Silverlight are also text markups, hand coded markups becomes way to big junk to manage.</p>
<p align="justify">Bigger problem is to visualize markups as they become more complex. As more and more lines of code gets piled into markup, more time is spent understanding and troubleshooting the UI.</p>
<h2 align="justify">How to Reduce Markup Noise?</h2>
<p align="justify">
<p align="justify">CSS brought a very useful way to reduce markup noise. Still lot of developers write inline styles and I hate to see that. Ideally nicely written code should have inline styles as small as possible.</p>
<h3 align="justify">Appearance Delegation</h3>
<p align="justify">CSS comes under category of Appearance Delegation where your delegate the look and feel of your component to CSS file. In WPF and Silverlight the themes are styles are introduced and you must have all your styles and look and feel related code into resources only.</p>
<p align="justify">The markup containers (Connection Containers) such as Window / Page / User Control should not have any inbuilt styles at all.</p>
<h3 align="justify">Business Logic Delegation</h3>
<p align="justify">This was not possible in plain html, but aspx, php etc did brought concept of server side controls where in you could inject business logic specific to components and reuse them. But these components (user controls / custom controls ) are only designed when they need to be reused, but even if it will be used only once, I would still suggest its better to have components as small as possible.</p>
<p align="justify">Example, Country Combo drop down , Gender Combo drop down, these boxes are nothing but set of options provided to user to select one of them. Now nobody makes specific custom controls for such items, but lets see a practical example.</p>
<h2 align="justify">Bad Markup Example</h2>
<div align="justify">
<pre class="csharpcode">    <span class="kwrd">&lt;</span><span class="html">Window.Resources</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">XmlDataProvider</span> <span class="attr">x:Key</span><span class="kwrd">=&quot;CountryData&quot;</span> <span class="attr">XPath</span><span class="kwrd">=&quot;/Countries&quot;</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">Countries</span> <span class="attr">xmlns</span><span class="kwrd">=&quot;&quot;</span><span class="kwrd">&gt;</span>
                <span class="kwrd">&lt;</span><span class="html">Country</span>
                    <span class="attr">CountryName</span><span class="kwrd">=&quot;United States&quot;</span>
                    <span class="attr">CountryCode</span><span class="kwrd">=&quot;US&quot;</span><span class="kwrd">/&gt;</span>
                <span class="kwrd">&lt;</span><span class="html">Country</span>
                    <span class="attr">CountryName</span><span class="kwrd">=&quot;United States&quot;</span>
                    <span class="attr">CountryCode</span><span class="kwrd">=&quot;US&quot;</span><span class="kwrd">/&gt;</span>
            <span class="kwrd">&lt;/</span><span class="html">Countries</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;/</span><span class="html">XmlDataProvider</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">Window.Resources</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">StackPanel</span><span class="kwrd">&gt;</span>

        <span class="kwrd">&lt;</span><span class="html">ComboBox</span>
            <span class="attr">ItemsSource</span><span class="kwrd">=&quot;{Binding Source={StaticResource CountryData},
                XPath=Country}&quot;</span>
            <span class="attr">DisplayMemberPath</span><span class="kwrd">=&quot;@CountryName&quot;</span>
            <span class="attr">SelectedValuePath</span><span class="kwrd">=&quot;@CountryCode&quot;</span>
            <span class="kwrd">/&gt;</span>

        <span class="kwrd">&lt;</span><span class="html">ComboBox</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">sys:String</span><span class="kwrd">&gt;</span>Male<span class="kwrd">&lt;/</span><span class="html">sys:String</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">sys:String</span><span class="kwrd">&gt;</span>Female<span class="kwrd">&lt;/</span><span class="html">sys:String</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;/</span><span class="html">ComboBox</span><span class="kwrd">&gt;</span>

    <span class="kwrd">&lt;/</span><span class="html">StackPanel</span><span class="kwrd">&gt;</span></pre>
</div>
<p align="justify">
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
</p>
<p align="justify">Now this file defines a resource xml for Country List, and it is bounded by ComboBox to list countries and another ComboBox defines inline items to be displayed.</p>
<h3 align="justify">Let us identify “Controls and Connection Containers”.</h3>
<p align="justify">The window, that hosts Country List and Gender Combo Boxes is <strong>“Connection Container” </strong>in which we should only host controls and connect inter dependent properties of every controls.</p>
<p align="justify">The Connection Container should not have any code that is not related to either any other items or business logic of the container at all.</p>
<p align="justify">List of Countries and Gender items are not at all related to anyone else except for the drop downs. This is pure markup junk where we have so many unnecessary information.</p>
<h2>Solution</h2>
<p>Define custom controls as shown below and see how small our markup becomes. And move Country List xml to some resource file.</p>
<pre class="csharpcode">    <span class="kwrd">public</span> <span class="kwrd">class</span> CountryComboBox : ComboBox
    {

        <span class="kwrd">public</span> CountryComboBox()
        {
            <span class="kwrd">this</span>.DisplayMemberPath = <span class="str">&quot;@CountryName&quot;</span>;
            <span class="kwrd">this</span>.SelectedValuePath = <span class="str">&quot;@CountryCode&quot;</span>;

            Binding b = <span class="kwrd">new</span> Binding();
            b.XPath = <span class="str">&quot;Country&quot;</span>;
            b.Source = FindResource(<span class="str">&quot;CountryData&quot;</span>);
            <span class="kwrd">this</span>.SetBinding(ItemsSourceProperty, b);
        }

    }</pre>
<p>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
</p>
<pre class="csharpcode">    <span class="kwrd">public</span> <span class="kwrd">class</span> GenderComboBox : ComboBox
    {
        <span class="kwrd">public</span> GenderComboBox()
        {
            <span class="kwrd">this</span>.ItemsSource =
                <span class="kwrd">new</span> <span class="kwrd">string</span>[] {
                    <span class="str">&quot;Male&quot;</span>,
                    <span class="str">&quot;Female&quot;</span>
                };
        }
    }</pre>
<p>&#160;</p>
<p>The final Markup.</p>
<pre class="csharpcode">    <span class="kwrd">&lt;</span><span class="html">StackPanel</span><span class="kwrd">&gt;</span>

        <span class="kwrd">&lt;</span><span class="html">local:CountryComboBox</span>
            <span class="kwrd">/&gt;</span>

        <span class="kwrd">&lt;</span><span class="html">local:GenderComboBox</span>
            <span class="kwrd">/&gt;</span>

    <span class="kwrd">&lt;/</span><span class="html">StackPanel</span><span class="kwrd">&gt;</span></pre>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>&#160;</p>
<p>Wow, the markup is very clean now. Also the code is easy to understand.</p>
<h2>Conclusion</h2>
<p align="justify">The connection container (Window / Page / User Control) should only have interdependent declarations and should not have any items that are only specific to one control. It should be as clean as possible and it should execute all necessary business logic for the component.</p>
<p align="justify">Configuration items, even resource bindings should be avoided in Connection Containers. They should be narrowed down to custom controls as much as possible.</p>
<p align="justify">This increases readability, reusability and helps in troubleshooting while focusing by narrowing the target.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fakashkava.com%2Fblog%2F258%2Fui-delegation-pattern-for-data-controls-in-wpfsilverlight%2F&amp;title=UI%20Delegation%20Pattern%20for%20Data%20Controls%20in%20WPF%2FSilverlight"><img src="http://akashkava.com/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://akashkava.com/blog/258/ui-delegation-pattern-for-data-controls-in-wpfsilverlight/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>LOB Business Form Layout for WPF &amp; Silverlight</title>
		<link>http://akashkava.com/blog/272/lob-business-form-layout-for-wpf-silverlight/</link>
		<comments>http://akashkava.com/blog/272/lob-business-form-layout-for-wpf-silverlight/#comments</comments>
		<pubDate>Sat, 17 Apr 2010 10:34:48 +0000</pubDate>
		<dc:creator>Akash Kava</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[DataForm]]></category>
		<category><![CDATA[Layout]]></category>
		<category><![CDATA[LOB]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[UI Atoms]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://akashkava.com/blog/272/lob-business-form-layout-for-wpf-silverlight/</guid>
		<description><![CDATA[UI Atoms LOB Business Form Layout for WPF &#38; Silverlight View more presentations from Akash Kava. There is lot of buzz about LOB Business Form Layout for new platforms WPF &#38; Silverlight, both capable of displaying rich content and extend functionalities of existing components so better then ever before. XAML is better then earlier Rapid [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://akashkava.com/blog/272/lob-business-form-layout-for-wpf-silverlight/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "LOB+Business+Form+Layout+for+WPF+%26amp%3B+Silverlight";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakashkava.com%2Fblog%2F272%2Flob-business-form-layout-for-wpf-silverlight%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakashkava.com%2Fblog%2F272%2Flob-business-form-layout-for-wpf-silverlight%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div style="padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:e15324b0-9e04-458a-bccf-63639d8642e2" class="wlWriterEditableSmartContent">
<div>
<div style="width:425px" id="__ss_3756627"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/ackava/ui-atoms-lob-business-form-layout-for-wpf-silverlight" title="UI Atoms LOB Business Form Layout for WPF &amp; Silverlight">UI Atoms LOB Business Form Layout for WPF &amp; Silverlight</a></strong><object width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=uiatomslobbusinessformlayoutforwpfsilverlight-100417052402-phpapp01&amp;stripped_title=ui-atoms-lob-business-form-layout-for-wpf-silverlight" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=uiatomslobbusinessformlayoutforwpfsilverlight-100417052402-phpapp01&amp;stripped_title=ui-atoms-lob-business-form-layout-for-wpf-silverlight" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/ackava">Akash Kava</a>.</div>
</div>
</div>
</div>
<p align="justify">There is lot of buzz about LOB Business Form Layout for new platforms WPF &amp; Silverlight, both capable of displaying rich content and extend functionalities of existing components so better then ever before.</p>
<p align="justify">XAML is better then earlier Rapid Form designers where you need to drag and drop within an IDE and the layout management becomes so complicated because no IDE is perfect. I remember upgrading from Visual Studio 2005 to 2008 and now 2010, most of our ASP.NET and WinForm projects would require lot of effort to work seamlessly in newer versions. The worst of all is, modifying layout without IDE becomes way to difficult.</p>
<p align="justify">In this presentation, I collected all important aspects of Business Form that we encounter in our day to day life and the complexity of forms make life terrible when clients request changes that takes hours on any IDE that sure breaks lot of code graphs and makes existing working system as completely useless code junk.</p>
<p align="justify">In UI Atoms, we at NeuroSpeech tried make set of components that are very easy to operate while going through tough change management.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fakashkava.com%2Fblog%2F272%2Flob-business-form-layout-for-wpf-silverlight%2F&amp;title=LOB%20Business%20Form%20Layout%20for%20WPF%20%26amp%3B%20Silverlight"><img src="http://akashkava.com/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://akashkava.com/blog/272/lob-business-form-layout-for-wpf-silverlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using SQL Assembly to replace T-SQL Business Logic</title>
		<link>http://akashkava.com/blog/259/using-sql-assembly-to-replace-t-sql-business-logic/</link>
		<comments>http://akashkava.com/blog/259/using-sql-assembly-to-replace-t-sql-business-logic/#comments</comments>
		<pubDate>Sun, 04 Apr 2010 09:00:32 +0000</pubDate>
		<dc:creator>Akash Kava</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Assembly]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://akashkava.com/blog/?p=259</guid>
		<description><![CDATA[SQL Assembly brings power of CLR (Common language runtime) inside SQL Database Stored Procedure which can overcome T-SQL programming pains of Intellisense, Debugging, Logging and Versioning. Traditional Problems with T-SQL and Stored Procedures I never liked programming in T-SQL, for various reasons listed below, No Intellisense, of course it has been introduced SQL 2008 onwards, [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://akashkava.com/blog/259/using-sql-assembly-to-replace-t-sql-business-logic/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "Using+SQL+Assembly+to+replace+T-SQL+Business+Logic";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakashkava.com%2Fblog%2F259%2Fusing-sql-assembly-to-replace-t-sql-business-logic%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakashkava.com%2Fblog%2F259%2Fusing-sql-assembly-to-replace-t-sql-business-logic%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>SQL Assembly brings power of CLR (Common language runtime) inside SQL Database Stored Procedure which can overcome T-SQL programming pains of Intellisense, Debugging, Logging and Versioning.</p>
<h2>Traditional Problems with T-SQL and Stored Procedures</h2>
<p>I never liked programming in T-SQL, for various reasons listed below,</p>
<ol>
<li><font color="#333333">No Intellisense, of course it has been introduced SQL 2008 onwards, but still its far behind what we get in Visual Studio.</font> </li>
<li><font color="#333333">Source Code Control, although scripts can be added to source code control, usually its unawareness and unwillingness of Database Administrator / Designer to use it correctly and mess things up.</font> </li>
<li><font color="#333333">Less human readable, T-SQL is very difficult to understand if its not documented well.</font> </li>
<li><font color="#333333">Source code is open, it can be modified, so in short Database Administrator has complete access to alter business logic.</font> </li>
<li><font color="#333333">Very less reusable, unless you do copy paste, no way to standardize the development.</font> </li>
<li><font color="#333333">No support for advanced visual tools to design T-SQL Stored Procedures.</font> </li>
<li><font color="#333333">Deployment is difficult, minor alternation can cause problems.</font> </li>
<li><font color="#333333">Most of business logic involves, loops, if-else, switch statements, and it takes 10 times more code to execute such logic in T-SQL then any other programming language in world.</font> </li>
<li><font color="#333333">You need multiple language talent, one with either VB.NET/C# and T-SQL.</font> </li>
<li>Difficult to Log information.</li>
</ol>
<h2>Introduction of SQL Assembly</h2>
<p>Since SQL 2005, introduction of SQL Assembly has been of great importance, however not much of people still use it, because of unawareness. But SQL Assembly can be modularized and reused, and it exists as simple CLR assembly inside database. </p>
<p>And following are benefits of SQL Assembly, besides few listed in <a href="http://msdn.microsoft.com/en-us/library/k2e1fb36(v=VS.100).aspx" target="_blank">MSDN here</a>.</p>
<ol>
<li><font color="#333333">LINQ in CLR Stored Procedure.</font> </li>
<li><font color="#333333">Better Source Code control over Visual C#/Visual Basic.NET project through Team System.</font> </li>
<li><font color="#333333">Intellisense.</font> </li>
<li><font color="#333333">Closed source, its safe.</font> </li>
<li><font color="#333333">Highly secure as Database Administrator can not alter business logic.</font> </li>
<li><font color="#333333">C# and VB.NET along with LINQ are more human readable, understanding and reusing code can be very easy.</font> </li>
<li><font color="#333333">Support for advanced documentation in comments.</font> </li>
<li><font color="#333333">Visual Studio Model designer can be used.</font> </li>
<li>Reuse your Business Logic for other database vendor products, e.g. Oracle, MySQL (Explained below). </li>
<li>You can do advanced logging with log-4-net or custom logging.</li>
</ol>
<h2>Small Example of How to use LINQ in SQL Assembly</h2>
<ol>
<li>Create a simple Visual C# Class Library Project. </li>
<li>Add reference of “System.Data” Assembly. </li>
<li>Create new ADO.NET Entity Model, and you can create it from Database or empty model, the way you want to develop your project. </li>
<li>Add few entities, I am going to demonstrate entity “Cart” which is a saved shopping cart for the Customer. </li>
</ol>
<h2><a href="http://akashkava.com/blog/wp-content/uploads/2010/04/CartDemo.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="CartDemo" border="0" alt="CartDemo" src="http://akashkava.com/blog/wp-content/uploads/2010/04/CartDemo_thumb.png" width="389" height="206" /></a>Create a Stored Procedure Class</h2>
<p>After creating model, lets create a class called “ShoppingCart” and add a static method as shown below.</p>
<blockquote><pre class="code"><span style="color: blue">public class </span><span style="color: #2b91af">ShoppingCart
</span>{

    <span style="color: gray">/// &lt;summary&gt;
    /// </span><span style="color: green">Creates new Cart if none exists and returns the Cart ID
    </span><span style="color: gray">/// &lt;/summary&gt;
    /// &lt;param name=&quot;CustomerID&quot;&gt;&lt;/param&gt;
    /// &lt;returns&gt;&lt;/returns&gt;
    </span>[<span style="color: #2b91af">SqlProcedure</span>]
    <span style="color: blue">public static </span><span style="color: #2b91af">SqlInt64 </span>GetSavedCartID(<span style="color: #2b91af">SqlInt64 </span>CustomerID)
    {

        <span style="color: green">// Set context connection=true
        </span><span style="color: #2b91af">ShoppingCartModelContainer </span>context =
            <span style="color: blue">new </span><span style="color: #2b91af">ShoppingCartModelContainer</span>(<span style="color: #a31515">&quot;context connection=true&quot;</span>);

        <span style="color: green">// Query for exisitng cart
        </span><span style="color: #2b91af">Cart </span>c = context.Carts.FirstOrDefault(
                        t =&gt; t.CustomerID == CustomerID.Value);

        <span style="color: blue">if </span>(c == <span style="color: blue">null</span>) { 

            <span style="color: green">// create new Cart
            </span>c = <span style="color: #2b91af">Cart</span>.CreateCart(0, CustomerID.Value, <span style="color: #2b91af">DateTime</span>.Now);
            context.AddToCarts(c);
            context.SaveChanges();
        }

        <span style="color: green">// return the Cart ID
        </span><span style="color: blue">return new </span><span style="color: #2b91af">SqlInt64</span>(c.CartdID);

    }

}</pre>
</blockquote>
<p align="justify">This code demonstrates how easy it is to write SQL Assembly, now here is the ultimate benefit of everything.</p>
<h2>Ultimate Benefit</h2>
<p align="justify">You can use your Business Logic in multiple vendor databases, like for example for Oracle and MySQL, you can reuse your SQL Assembly and just change your connection string. You can reuse your business logic in your front end code with simple wrapper.</p>
<p align="justify">And with SQL Server, you can reuse this assembly inside SQL Database.</p>
<p align="justify"><a href="http://akashkava.com/blog/wp-content/uploads/2010/04/CodeSharing.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="CodeSharing" border="0" alt="CodeSharing" src="http://akashkava.com/blog/wp-content/uploads/2010/04/CodeSharing_thumb.png" width="644" height="200" /></a></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fakashkava.com%2Fblog%2F259%2Fusing-sql-assembly-to-replace-t-sql-business-logic%2F&amp;title=Using%20SQL%20Assembly%20to%20replace%20T-SQL%20Business%20Logic"><img src="http://akashkava.com/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://akashkava.com/blog/259/using-sql-assembly-to-replace-t-sql-business-logic/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WPF vs Silverlight &#8211; Native vs Thin Applications</title>
		<link>http://akashkava.com/blog/244/wpf-vs-silverlight-native-vs-thin-applications/</link>
		<comments>http://akashkava.com/blog/244/wpf-vs-silverlight-native-vs-thin-applications/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 09:28:54 +0000</pubDate>
		<dc:creator>Akash Kava</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://akashkava.com/blog/244/wpf-vs-silverlight-native-vs-thin-applications/</guid>
		<description><![CDATA[Looking at the innovation driving inside Silverlight, it is getting more attention then the former WPF. However having very similar syntax and .NET as base platform, both WPF and Silverlight are very different in approach, design and use. Today lot of developers live in dilemma of WPF vs Silverlight and it has now become a [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://akashkava.com/blog/244/wpf-vs-silverlight-native-vs-thin-applications/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "WPF+vs+Silverlight+%26ndash%3B+Native+vs+Thin+Applications";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakashkava.com%2Fblog%2F244%2Fwpf-vs-silverlight-native-vs-thin-applications%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakashkava.com%2Fblog%2F244%2Fwpf-vs-silverlight-native-vs-thin-applications%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p align="justify">Looking at the innovation driving inside Silverlight, it is getting more attention then the former WPF. However having very similar syntax and .NET as base platform, both WPF and Silverlight are very different in approach, design and use. Today lot of developers live in dilemma of WPF vs Silverlight and it has now become a great trade off as similar to speed vs size.</p>
<p align="justify">Lets compare the need and features of both and make the trade off very easy to understand.</p>
<h1 align="justify">History of Microsoft Development Platform</h1>
<p align="justify">We all loved Visual Basic, what did it provide? a rapid development platform to make quick business applications. By business applications I mean, the one to track your purchases, your activities which are just probably relational database and reports. Business Application makers didn’t have to worry about device drivers, system services, hardware and component versions.</p>
<p align="justify">Visual Basic provided very thin layer of application development for rapid turnaround time of small scale but huge in demand business applications. These applications require very less programming language expertise but more of business expertise. But it had limitations, you could not create a huge resource intensive application like CAD programs, Media editing programs, servers, games etc.</p>
<p align="justify">On other hand we had Visual C++, a huge development framework with possibility to do almost everything that was possible on Windows Operating System. Where you could fulfill need of any program, be it CAD, games, media editing, or servers etc.</p>
<p align="justify">But the development time required was very high, performance was great and the intelligence required to create system applications was very high. Getting talent to build such applications weren&#8217;t easy and even it is not easy today, because you need real in depth knowledge of how every part of the system functions. There is more dependency upon device drivers, component versions and there was no drag and drop.</p>
<p align="justify">Apart from any other platforms existed so far, Microsoft clearly and distinctly divided development into two major categories. Rapid vs System, or Native vs Thin applications.</p>
<h1 align="justify">Evolution of .NET</h1>
<p align="justify">Ever since c# came into existence, we started seeing quick shift from tedious MFC/COM/ATL to c#, because all technologies were simply extension of c/c++ and each needed separate runtime to exist. Even still today, some of my components are written in ATL/COM and compiling them in newer version of Visual Studio is always pain. Compilation time is huge.</p>
<p align="justify">Where else, .NET based project took less time to compile, even the 1.0 versions are still in use and still in good shape.</p>
<p align="justify">Earlier it was expected that it will only replace the Visual Basic segment of programming, but somehow all devs started liking it and preferred it as an alternative to ATL/COM/MFC as its native capability and speed provided easy development and quick turnaround.</p>
<p align="justify">Windows Forms did provide an alternative to Visual Basic. But there was lack of more powerful, GUI interface in .NET. So came WPF. Not only this, .NET being neutral, the compiled apps are independent of 32 bit or 64 bit platforms.</p>
<h1 align="justify">Windows Presentation Framework</h1>
<p align="justify">As we clearly see, Microsoft has its plan to make WPF as its primary GUI framework against all Win32 components. WPF is very easy to write as it is very simple XML, XML is very easy to read, and its very easy to organize, even the editors and compilers need less overhead in parsing and taking decisions based on XML.</p>
<p align="justify">The challenge here was to imitate almost everything that existed in Win32 inside WPF, and WPF became very feature rich, but once again it requires more intelligence to write complicated and big applications. Having talent already expert in HTML+JS area, and transforming them into WPF talent was little difficult.</p>
<p align="justify">Plus the way WPF was built, it was built more tight coupled with system operating system, just like the way MFC/ATL/COM were built. But WPF is very fast and very rich in features. It is now possible to write CAD, games and such high performance applications in WPF which can utilize latest hardware technologies.</p>
<p align="justify">And it is exact alternative for COM/ATL/MFC today.</p>
<h1 align="justify">Silverlight</h1>
<p align="justify">Realizing that converting HTML+JS and Visual Basic devs to WPF was more challenging, silverlight pop in to existence, Which is very light weight, a smaller counterpart of WPF, although the syntax remains same, the ability to develop apps are limited in silverlight as it is not very tightly coupled with operating system.</p>
<p align="justify">However, you can develop apps pretty fast, but only focused on business logic, which here is one step ahead amongst all being platform independent. The devs are not required to have in depth knowledge of system, nor silverlight are more dependent on hardware, resources or other components.</p>
<p align="justify">But you cant develop high performance apps like CAD, games and media editing apps.</p>
<p align="justify">Indeed, it is an exact alternative for Visual Basic.</p>
<h1>Conclusion</h1>
<p align="justify">You need to choose WPF when you are creating any application of following type,</p>
<ol>
<li>
<div align="justify">Interfaces with custom hardware.</div>
</li>
<li>
<div align="justify">You need to control memory and control the performance of app.</div>
</li>
<li>
<div align="justify">Create application that requires very high memory, CAD programs etc.</div>
</li>
<li>
<div align="justify">Connect to system components and used to manage system, hardware.</div>
</li>
<li>
<div align="justify">Want to connect to native system via COM/DLL interfaces.</div>
</li>
<li>
<div align="justify">Media (Audio/Video/Picture) editing applications.</div>
</li>
<li>
<div align="justify">Where your target audience can download and install .NET platform easily.</div>
</li>
</ol>
<p align="justify">However you can use Silverlight for following alternative type of applications,</p>
<ol>
<li>
<div align="justify">Provides smooth and quick animation on the web.</div>
</li>
<li>
<div align="justify">Make Rapid Business Applications, which can connect to your enterprise apps.</div>
</li>
<li>
<div align="justify">Make typical CRUD applications.</div>
</li>
<li>
<div align="justify">Registration, Dashboard type of applications.</div>
</li>
<li>
<div align="justify">Lightweight gaming and interaction websites.</div>
</li>
<li>
<div align="justify">Run in browser, with very small installation needed.</div>
</li>
</ol>
<h2>Coming Up:</h2>
<blockquote><p>UI Atoms from NeuroSpeech, a set of controls to develop rapid business applications on both WPF as well as Silverlight. A true alternative for DataForm on Silverlight and WPF, to have unified coding for Business Apps. <a href="http://uiatoms.neurospeech.com/silverlight/index.html" target="_blank"><strong>Please click here to check the preview</strong></a>.</p>
</blockquote>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fakashkava.com%2Fblog%2F244%2Fwpf-vs-silverlight-native-vs-thin-applications%2F&amp;title=WPF%20vs%20Silverlight%20%26ndash%3B%20Native%20vs%20Thin%20Applications"><img src="http://akashkava.com/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://akashkava.com/blog/244/wpf-vs-silverlight-native-vs-thin-applications/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Apple&#8217;s iPad risks RIA Technologies (Flex/Silverlight)</title>
		<link>http://akashkava.com/blog/222/apples-ipad-risks-ria-technologies-flexsilverlight/</link>
		<comments>http://akashkava.com/blog/222/apples-ipad-risks-ria-technologies-flexsilverlight/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 09:25:35 +0000</pubDate>
		<dc:creator>Akash Kava</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Future]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[PC]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://akashkava.com/blog/?p=222</guid>
		<description><![CDATA[Apple announces iPad, a bigger version of iPod Touch. With a big screen of 1024&#215;786 pixels. And it comes with basic need of surfing internet and be online. So called magical and revolutionary device does not support Flash and Silverlight yet. And most of business apps today, built upon RIA are running either on Flash [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://akashkava.com/blog/222/apples-ipad-risks-ria-technologies-flexsilverlight/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "Apple%26rsquo%3Bs+iPad+risks+RIA+Technologies+%28Flex%2FSilverlight%29";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakashkava.com%2Fblog%2F222%2Fapples-ipad-risks-ria-technologies-flexsilverlight%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakashkava.com%2Fblog%2F222%2Fapples-ipad-risks-ria-technologies-flexsilverlight%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://apple.com/ipad" target="_blank"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Apple-iPad" border="0" alt="Apple-iPad" src="http://akashkava.com/blog/wp-content/uploads/2010/02/AppleiPad1.png" width="244" height="200" /></a> </p>
<p align="justify">Apple announces iPad, a bigger version of iPod Touch. With a big screen of 1024&#215;786 pixels. And it comes with basic need of surfing internet and be online. So called magical and revolutionary device does not support Flash and Silverlight yet. And most of business apps today, built upon RIA are running either on Flash or on Silverlight. And IT Devs are heavily investing in RIA technologies due to snail speed of WWW group. However, the device can replace a laptop for most of users who just spend time on internet doing their regular business, studies or entertainment. So lets analyze what will be future of Web for different type of users.</p>
<h2>Students</h2>
<p align="justify">Today students need a good web browser and an internet with lot of social media websites to study, interact, entertain and play games. Apple iPad is a best bet for students. Do they really care that it does not support Flash and Silverlight yet? Answer is no. They will certainly buy iPad, come to the website, and if it has Flash or Silverlight, they will call website’s support instead of Apple’s support and say, </p>
<blockquote><p align="justify">Your website is not working on my iPad.</p>
</blockquote>
<h2>Sales Reps and Business Owners</h2>
<p align="justify"><font color="#000000">Looking at the cost, and attractive looks, Sales Reps and Business Owners will buy iPad because they usually do not type anything great whole day, all they do is, look at websites, present demos (which are powerpoint or keynote), and access their office through online business portals. For all these purpose they will be very happy with iPad. However, once they come to your business app through online portal, they cant see Flash or Silverlight, they are not going to call apple support. They will call IT devs and say,</font></p>
<blockquote><p>What the hell IT devs are doing, cant they make our business app work on iPad?</p>
</blockquote>
<h2>Independent Professionals</h2>
<p align="justify">Independent professionals like Doctors, Lawyers, Photographers, Actors .. anyone who probably does not sit in front of PC for more then 2 hours a day, will certainly like to get rid of big laptop bag with 4-10 external wires and device connectors. All what they do mostly is, check their emails, surf the websites, fill simple forms on some business web apps and which they can do it on iPad. Today iPad may not have great drawing tools but some professional apps on App store will certainly provide capability of tagging, drawing and marking tools needed by these professionals. Today lot of business applications are on Flash and new ones are coming on silverlight. But iPad will not support !! , once again, they will pickup the phone to vendor and say,</p>
<blockquote><p>Your website is not working on my iPad.</p>
</blockquote>
<h2>Who needs any of following?</h2>
<p align="justify"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="pc_vs_mac" border="0" alt="pc_vs_mac" src="http://akashkava.com/blog/wp-content/uploads/2010/02/pc_vs_mac1.jpg" width="244" height="128" />Clerks,&#160; Graphics/Media artist and IT Developers, which comprises of small part of computer users. Because their applications and workspace requires bigger screens and multiple devices, connectivity and computing performance. Apple’s iPad will be useful only to test the business apps and for other entertainment to this group.</p>
<p align="justify">It seems iPad will spread in Home Entertainment, Education and Independent Professional sectors very fast because of low cost solution. And that will shake the developer community.</p>
<h2>Troubles for IT Devs</h2>
<ol>
<li>Current investment in Flex or Silverlight is at stake, as usage of mobile devices is increasing heavily, supporting business apps on these devices will not be possible until device OS creators, Adobe or Microsoft work towards supporting RIA technologies. </li>
<li>Silverlight/Flex are heavy and costly to run on battery based devices, they will consume more cpu and battery to create consumption problems. </li>
<li>Rewriting apps in light HTML5 is a big challenge, training, planning and supporting all existing modules will be a big pain. However looks like World Wide Web Consortium (W3C) has been sleeping for 10 years to create features of RIA required today. Need of consumers were high, that created innovations like DHTML, Flash and Silverlight, and the problem was, W3C never observed in market what consumers (Internet users) really need. </li>
<li>Even if you decide to invest heavily on iMac and decide to make apps that can run on iPad, your Apps are at mercy of Apple Employee doing approval, here is the funny process. </li>
</ol>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="AppStoreComic" border="0" alt="AppStoreComic" src="http://akashkava.com/blog/wp-content/uploads/2010/02/AppStoreComic.jpg" width="364" height="574" /> </p>
<h2>Death of Free and Open Internet</h2>
<p>IT Devs will slowly loose the independence over distributing apps against open free internet distribution. Today any release, distribution of media (song, movie, play) etc are controlled by major Labels.</p>
<blockquote><p>If The&#160; Intelligence will be controlled by major Labels in IT with narrow route to success by Apple, Google, Microsoft etc giants, then the growth we saw in last decade in IT industry will slow down very rapidly and independent innovators will become slaves to major labels. </p>
</blockquote>
<h2>Will Bubble of RIA Burst now?</h2>
<p>Once again, just like Dot Com, if RIA (Flex/Silverlight) Bubble bursts and all IT Devs will be blamed again.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fakashkava.com%2Fblog%2F222%2Fapples-ipad-risks-ria-technologies-flexsilverlight%2F&amp;title=Apple%26rsquo%3Bs%20iPad%20risks%20RIA%20Technologies%20%28Flex%2FSilverlight%29"><img src="http://akashkava.com/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://akashkava.com/blog/222/apples-ipad-risks-ria-technologies-flexsilverlight/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Retouch! I would say &#8211; why not?</title>
		<link>http://akashkava.com/blog/204/retouch-i-would-say-why-not/</link>
		<comments>http://akashkava.com/blog/204/retouch-i-would-say-why-not/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 18:42:38 +0000</pubDate>
		<dc:creator>Akash Kava</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Beauty]]></category>
		<category><![CDATA[Cindy]]></category>
		<category><![CDATA[Crawford]]></category>
		<category><![CDATA[Diet]]></category>
		<category><![CDATA[Photo]]></category>
		<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[Retouch]]></category>

		<guid isPermaLink="false">http://akashkava.com/blog/?p=204</guid>
		<description><![CDATA[Its less of a risk then getting yourself a liposuction or a nasty boob job .. Before I answer WHY let me answer WHAT! For all of you who don&#8217;t know what I am talking about watch this video “The Photoshop Effect” &#160; Why Retouching On a serious note, Human psyche has been on a [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://akashkava.com/blog/204/retouch-i-would-say-why-not/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "Retouch%21+I+would+say+%26%238211%3B+why+not%3F";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakashkava.com%2Fblog%2F204%2Fretouch-i-would-say-why-not%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakashkava.com%2Fblog%2F204%2Fretouch-i-would-say-why-not%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Its less of a risk then getting yourself a liposuction or a nasty boob job <img src='http://akashkava.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ..</p>
<p>Before I answer WHY let me answer WHAT! For all of you who don&#8217;t know what I am talking about watch this video <strong>“The Photoshop Effect”</strong></p>
<div style="padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:fdd4286b-40ba-48ee-ae61-f83aa8fee6c3" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/YP31r70_QNM&amp;hl=en"></param><embed src="http://www.youtube.com/v/YP31r70_QNM&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
</div>
<h1>&#160;</h1>
<h1>Why Retouching</h1>
<p>On a serious note, Human psyche has been on a constant Endeavour to achieve perfection. Retouching is a means to persue that human pursuit. How else would you preserve and portray the invaluable momentary short lived tequila shots of your life. A retouched image would give you that well deserved kick time and again.</p>
<p>Besides not all of us can carry a Cindy Crawford mole as a beauty spot the way she does. Come on, would you want that dark spot seen in your wedding snaps. You would rather get them retouched. Similarly you would more often then not, want to get a brighter retouch-er if you are from the Naomi Campbell or a Hale Berry progeny. &quot;I don&#8217;t mean to be a racist here&quot; unless you want to spend a bomb to look as good.</p>
<h1>Retouching the History</h1>
<p>Beginning from our inception, Adam was perfect as a first masterpiece, as a human being, but as a man he was lacking. Later, Adam with Eve became a perfect couple until they fell prey to Satan&#8217;s handiwork and since then we&#8217;ve been living in an imperfect world. I need not elaborate on this any further and no wonder everything around us is (believe it or not) imperfect.</p>
<h1>Retouched &#8211; Do We Even Know?</h1>
<p>BTW If you see a problem here, sure do something, lets run a campaign to make it a mandate to put an * (asterisk) symbol on every retouched image. I bet you would see 99.9 % of photographs retouched in any magazine or billboard or for that matter any print media with an asterisk sign, the way we notice &quot;*&quot; or &quot;Conditions Apply&quot; on every shop running a SALE.</p>
<p>Lately there has been a lot of hype around retouching and its adverse effect or so they call it, just because some nuts went on an indefinite dieting spree to fulfill there fantasies of attaining that perfection portrayed by a retouched image of a model. I have a question here, if some one ignores that &#8216;asterisk&#8217; on a FOR SALE sign board and happens to pick up stuff and queued up at the counter only to realize that there was some other exception, what do you think would happen. Wouldn&#8217;t you ask her to go back to shopping basics. She&#8217;s not duped! An asterisk is supposed to be taken for granted.</p>
<h1>Retouching&#160; &amp; The Craving Need of It</h1>
<p>As I proclaimed above I see no moral hang-up in retouching a photo but the reality is that it can change a picture from something you dislike to something enjoyable. We all understand the difference between tweaking the truth and portraying the expected. Perfect moments do not always prove to be perfect and that&#8217;s where we need the so called digital liposuction.</p>
<p>Let me sum up with a practical example:</p>
<p>A stunning model sitting right in front of you that has potential but several flaws. By several I mean the following two major flaws apart from a few here and there that can otherwise be taken care of:</p>
<p>Dull Hair    <br />has a pimple right on the face of the camera lights</p>
<p>What do you do ?</p>
<p>1) Hand over the best shampoo available and wait for the results + wait for the pimple to even out.    <br />2) Click the snap and retouch it. Its simple and worth while.</p>
<p>I leave it for you guys to decide. Any takers!!</p>
<p>For all of you guys who want to try the first option you need to keep visiting my blogs for the rest I know you guys understand how difficult it is to get a boob job done, and how difficult it is to get that perfect look unless we go to <a href="http://RetouchMAX.com" target="_blank">RetouchMAX.com</a></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fakashkava.com%2Fblog%2F204%2Fretouch-i-would-say-why-not%2F&amp;title=Retouch%21%20I%20would%20say%20%26%238211%3B%20why%20not%3F"><img src="http://akashkava.com/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://akashkava.com/blog/204/retouch-i-would-say-why-not/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

