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

<channel>
	<title>Developer&#039;s Dump</title>
	<atom:link href="http://devdump.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://devdump.wordpress.com</link>
	<description></description>
	<lastBuildDate>Mon, 13 May 2013 20:22:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='devdump.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Developer&#039;s Dump</title>
		<link>http://devdump.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://devdump.wordpress.com/osd.xml" title="Developer&#039;s Dump" />
	<atom:link rel='hub' href='http://devdump.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Linking SQL Server to an Access database</title>
		<link>http://devdump.wordpress.com/2013/05/03/linking-sql-server-to-access/</link>
		<comments>http://devdump.wordpress.com/2013/05/03/linking-sql-server-to-access/#comments</comments>
		<pubDate>Fri, 03 May 2013 19:47:41 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[Access]]></category>
		<category><![CDATA[Linked Server]]></category>
		<category><![CDATA[OleDB]]></category>
		<category><![CDATA[SPN]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://devdump.wordpress.com/?p=431</guid>
		<description><![CDATA[Even if importing an old Access database to SQL Server is pretty easy using available tools, this might not always be the optimal solution. Linking an old Access mdp file to your SQL Server enables you to gradually move old legacy databases and systems to leverage the power and stability of a server database as you [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=431&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Even if importing an old Access database to SQL Server is pretty easy using available tools, this might not always be the optimal solution. Linking an old Access mdp file to your SQL Server enables you to gradually move old legacy databases and systems to leverage the power and stability of a server database as you can leave the old dependencies untouch while implementing new ones to use the server.</p>
<p>Setting up an Access database as a linked server on a SQL Server requires a number of steps. For those in a hurry and not wanting to read the whole article, this is what you need to do:</p>
<ol>
<li>Install the 64 bit database driver</li>
<li>Configure the Access Database Engien provider settings</li>
<li>Allow users full access to the temp directory of the SQL Server service account</li>
<li>Setup the linked server</li>
</ol>
<p>First thing to do is to get the<a title="Access drivers" href="http://www.microsoft.com/en-us/download/details.aspx?id=13255" target="_blank"> Jet database drivers </a>installed on the server. As Access first did not support 64 bit operating the drivers are not available out of the box. Don&#8217;t worry, you will not need to restart after installing this.</p>
<p>Then go to Server Objects &#8212; Linked Servers &#8212; Providers and you should see the newly installed &#8220;Microsoft.ACE.OLEDB.120.0&#8243; driver. Open it&#8217;s properties and check both &#8220;Dynamic parameters&#8221; and &#8220;Allow inprocess&#8221;.  <img class="aligncenter size-full wp-image-433" alt="Provider properties" src="http://devdump.files.wordpress.com/2013/05/step11.png?w=594&#038;h=205" width="594" height="205" /></p>
<p>Then complete this  first step by enabling the &#8216;Ad Hoc Distributed Queries&#8217; setting with the the following command:</p>
<p>sp_configure &#8216;show advanced options&#8217;, 1;<br />
GO<br />
RECONFIGURE;<br />
GO<br />
sp_configure &#8216;Ad Hoc Distributed Queries&#8217;, 1;<br />
GO<br />
RECONFIGURE;<br />
GO</p>
<p> Now you will avoid getting errors when trying to browse or access items in the database.</p>
<p>SQL Server needs to use the temp directory of the SQL Server service account for handling the linked server. For things to work and you to avoid any &#8220;Unspecified errors&#8221; you need to make sure also the account accessing the linked server has access to that same temp directory (the security settings of the link seem to have no affect on this). The quick and dirty solution to this is to give the account(s) or all users access to the temp directory under the application data folder under the account profile. The proper solution is to:</p>
<ol>
<li>create a new temp folder for the service account (or use c:\temp)</li>
<li>change the TMP and TEMP environment variables of the service account to point to the new folder &#8212; this will require restaring the server for the changes to take effect</li>
<li> setup a group with the accounts that need access to the database to give it full control over the folder.</li>
</ol>
<p>As a final touch before setting up the actual linked server you might need to take the time to <a title="SPN" href="http://msdn.microsoft.com/en-us/library/ms191153.aspx" target="_blank">define a SPN </a>for the service account in cases when the database file is not on the same server as the SQL Server.</p>
<p>Finally go to Server Objects &#8212; Linked Servers and add a new linked server. Give it any name you like to identify it and select Office Access Database Engine as the driver. The define the connection parameters as follows:n</p>
<ul>
<li><em>Product name</em> can be anything you like, usually the type of the database e.g. ACCESS</li>
<li><em>Data source</em> defines the path to the database file</li>
<li><em>Provider string</em> can be used to define additional connection string parameters</li>
</ul>
<p><a href="http://devdump.files.wordpress.com/2013/05/step2.png"><img class="aligncenter size-full wp-image-434" alt="Linked server properties" src="http://devdump.files.wordpress.com/2013/05/step2.png?w=594&#038;h=535" width="594" height="535" /></a></p>
<p>Make sure to check that the settings on the Security page are has you want to have it. Then click on OK.</p>
<p>Now to make sure the linked server actually works, first open the context menu of the new linked server and select <em>Test Connection</em>. Then browse through the structure down to the tables to see if SQL Server is able to display you the objects in the database. If no errors are displayed the link is now ready and you can go and get your self your well deserved hot beverage.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/devdump.wordpress.com/431/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/devdump.wordpress.com/431/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=431&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devdump.wordpress.com/2013/05/03/linking-sql-server-to-access/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2e530d210a3f05cb43bdcc60e29bd4fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tom</media:title>
		</media:content>

		<media:content url="http://devdump.files.wordpress.com/2013/05/step11.png" medium="image">
			<media:title type="html">Provider properties</media:title>
		</media:content>

		<media:content url="http://devdump.files.wordpress.com/2013/05/step2.png" medium="image">
			<media:title type="html">Linked server properties</media:title>
		</media:content>
	</item>
		<item>
		<title>The best JavaScript MVC framework</title>
		<link>http://devdump.wordpress.com/2013/04/28/the-best-javascript-mvc-framework/</link>
		<comments>http://devdump.wordpress.com/2013/04/28/the-best-javascript-mvc-framework/#comments</comments>
		<pubDate>Sun, 28 Apr 2013 20:31:37 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[AngularJS]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Ember]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Kendo UI]]></category>
		<category><![CDATA[Knockout]]></category>

		<guid isPermaLink="false">http://devdump.wordpress.com/?p=422</guid>
		<description><![CDATA[I&#8217;m a great believer in frameworks as they provide a SOLID and well tested infrastructure for you solutions. Modern web apps are base on a almost excessive amount of JavaScript on the client side and REST services on the server side. There are a lot of frameworks that support this and the challenge for developers is to [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=422&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m a great believer in frameworks as they provide a SOLID and well tested infrastructure for you solutions. Modern web apps are base on a almost excessive amount of JavaScript on the client side and REST services on the server side. There are a lot of frameworks that support this and the challenge for developers is to figure out on which one to invest their time on. Even if  the teams behind the products encourage to mix these, the reality is that  doing so will only result in hacks &#8211; in other words the framework needs to be complete.</p>
<p>So, on what horse did I decide to bet on? The answer is <em>AngularJS</em>.<br />
Why? Let me telly you:</p>
<ul>
<li>It tells a lot about a framework if the most basic examples reveal many features but are also easy to understand</li>
<li>Unlike the jQuery+Knockout+whatever combos it provides a complete framework which not only guides developers to setup the app in a certain way but also supports testing by design</li>
<li>It is a product of a big company (Google) but unlike Kendo it is 100% free making it easy to to take into use and to find developers already familiar with it. Not to mention that it is actually possible to find reviews without any commercial BS.</li>
<li>Unlike e.g. Ember it is a mature framework with a good online documentation and active community.</li>
<li>It provides templating by allowing to extend the standard set of HTML/DOM elements with your own components. Personally I find this approach most intuitive and clear.</li>
<li>The apps are based on controllers, directives, filters and services. There is a inbuilt support for dependency injection.</li>
<li>Unlike Knockout there is no need to use special observable object types in your model to get the data binding to work.</li>
<li>The Chrome and Angular teams have worked together to provide a browser add-on to help debugging.</li>
<li>It has no (inbuilt jQuery lite) dependencies on other frameworks unlike backbone, ember and most others.</li>
</ul>
<p>Time will show if my investment pays off <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Worth reading:</p>
<ul>
<li><a title="Getting started with AngularJS" href="http://www.adobe.com/devnet/html5/articles/getting-started-with-angularjs.html" target="_blank">http://www.adobe.com/devnet/html5/articles/getting-started-with-angularjs.html</a></li>
<li><a title="Confusing ember" href="http://wekeroad.com/2013/03/06/ember-confuses-me" target="_blank">http://wekeroad.com/2013/03/06/ember-confuses-me</a></li>
<li><a title="Comparison" href="http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/" target="_blank">http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/devdump.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/devdump.wordpress.com/422/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=422&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devdump.wordpress.com/2013/04/28/the-best-javascript-mvc-framework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2e530d210a3f05cb43bdcc60e29bd4fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tom</media:title>
		</media:content>
	</item>
		<item>
		<title>SharePoint Web Part Basics</title>
		<link>http://devdump.wordpress.com/2013/03/26/sharepoint-web-part-basics/</link>
		<comments>http://devdump.wordpress.com/2013/03/26/sharepoint-web-part-basics/#comments</comments>
		<pubDate>Mon, 25 Mar 2013 21:12:54 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web Part]]></category>

		<guid isPermaLink="false">http://devdump.wordpress.com/?p=398</guid>
		<description><![CDATA[All web parts are based on the same basic ingredients. When I started developing on my first web parts I did some extra work to find out the best practices. This post is meant to work as a simple reference and to answer some of the questions I had when I first started. What web [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=398&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>All web parts are based on the same basic ingredients. When I started developing on my first web parts I did some extra work to find out the best practices. This post is meant to work as a simple reference and to answer some of the questions I had when I first started.</p>
<h3>What web parts events should I use?</h3>
<p>There are many different opinions on this. This is mine:</p>
<ul>
<li>Never put code in the <em>constructor</em> as it might be called even if the object is later never used</li>
<li>In the <em>OnInit</em> initialize any controllers etc. you might have</li>
<li>In the <em>CreateChildControls</em> method create your controls, but don&#8217;t populate them. Note that it is a common practice to define all the controls and the wepart layout in a separate control class to keep the web part clean.</li>
<li>In the <em>OnPreRender</em> load the data into the controls and setup any async task you might need (they will be executed next)</li>
</ul>
<h3>How to register JavaScript?</h3>
<p>There are many ways to include JavaScript on a page, the right one depends on your need. To include a script to to be executed directly after page load use the RegisterStartupScript combined with the ExecuteOrDelayUntilScriptLoaded (<a href="http://www.ilovesharepoint.com/2010/08/sharepoint-scripts-on-demand-spsod.html">SOD</a>) or _spBodyOnLoadFunctionNames.push functions:</p>
<pre class="brush: csharp; title: ; notranslate">
public static class SharePointScriptHelper
{
public static string ExecuteOrDelayUntilScriptLoaded(Control control, string script, string after)
{
string script = string.Format(&quot;ExecuteOrDelayUntilScriptLoaded(function(){{{0}}}, '{1}');&quot;, script, after);
ScriptManager.RegisterStartupScript(control.Page, typeof(Page), &quot;Script_&quot; + control.ID, script, true);
}
}
</pre>
<pre class="brush: csharp; title: ; notranslate">SharePointScriptHelper.ExecuteOrDelayUntilScriptLoaded(this, &quot;alert('Hello world!');&quot;, &quot;SP.js&quot;);</pre>
<p>The first mentioned takes care of the correct load order of scripts.</p>
<p>To include e.g. a library that is not meant to be directly executed use e.g. the RegisterClientScriptInclude method:</p>
<pre class="brush: csharp; title: ; notranslate">
ScriptManager.RegisterClientScriptInclude(this.Page, typeof(Page), &quot;MyScriptNamespace&quot;, ScriptFileUrl);
</pre>
<p>The point in using the ScriptManager is to avoid having the same script included multiple times, hence the key parameter in e.g. RegisterclientScriptInclude. The class offers a lot of functions that are worth taking a closer look at.</p>
<p>Note that is is a good practice to wrap you scripts in a &#8220;class&#8221;/namespace to avoid e.g. function name collisions with other scripts.</p>
<p>To easily include the web part id in your inline scripts you can use the ReplaceTokens function of the web part class to do this. It will simply replace tokens like e.g. _WPID_ with the correct property values.</p>
<h3>How to include CSS on a page?</h3>
<pre class="brush: csharp; title: ; notranslate">
CssRegistration css = new CssRegistration();
css.After = &quot;corev4.css&quot;;
css.Name = Settings.StyleSheetFileUrl;
this.Controls.Add(css);
</pre>
<p>I have not yet had a chance to test SharePoint 2013 to see if it works to refer to the corev4.css also in that version.</p>
<h3>Where to define configuration parameters?</h3>
<p>The web part definition file (yourwebpart.webpart) is definitely the only correct place. This way they the properties are fully customizable by the site owners when necessary.</p>
<p>Never store passwords in any file as they belong in the secure store service. You can prevent property values from being exportable for a simple way of hiding them.</p>
<h3>How should I define my layout?</h3>
<p>The most flexible and powerful way is to use XSLT for the rendering. You can implement it your self or inherit the DataFormWebPart class.</p>
<h3>Where should I put the CSS, image and other files?</h3>
<p>Put them in the appropriate SharePoint mapped folders. Always create a sub folder for you web part and give it a unique name e.g. based on the namespace of the main class.</p>
<h3>How to do logging and debug?</h3>
<p>Use the inbuilt framework. The most elegant solution would be to <a href="http://www.parago.de/2011/01/how-to-implement-a-custom-sharepoint-2010-logging-service-for-uls-and-windows-event-log/">write your own service class</a> deriving from the SPDiagnosticsServiceBase but note that it will need to be registered at deployment time.</p>
<pre class="brush: csharp; title: ; notranslate">
public static class SPDiagnosticsServiceExtension
{
public static void WriteTrace(this SPDiagnosticsService service, string message, string categoryName, TraceSeverity severity)
{
SPDiagnosticsCategory category = new SPDiagnosticsCategory(categoryName, TraceSeverity.Unexpected, EventSeverity.Information);
service.WriteTrace(0, category, severity, message);
}
}
</pre>
<p>Usage</p>
<pre class="brush: csharp; title: ; notranslate">
SPDiagnosticsService.Local.WriteTrace(ex.ToString(), &quot;Web Parts&quot;, TraceSeverity.Unexpected);
</pre>
<p>I strongly recommend enabling the Developer dashboard and using the SPMonitoredScope to help optimize the performance of your web part.</p>
<p>That&#8217;s all for now, more to to come later.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/devdump.wordpress.com/398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/devdump.wordpress.com/398/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=398&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devdump.wordpress.com/2013/03/26/sharepoint-web-part-basics/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2e530d210a3f05cb43bdcc60e29bd4fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tom</media:title>
		</media:content>
	</item>
		<item>
		<title>Don&#8217;t go (Entity Framework) code first</title>
		<link>http://devdump.wordpress.com/2013/03/21/dont-go-entity-framework-code-first/</link>
		<comments>http://devdump.wordpress.com/2013/03/21/dont-go-entity-framework-code-first/#comments</comments>
		<pubDate>Wed, 20 Mar 2013 21:21:25 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Entity Framework]]></category>
		<category><![CDATA[Fluent Migrations]]></category>

		<guid isPermaLink="false">http://devdump.wordpress.com/?p=404</guid>
		<description><![CDATA[Code first (Entity Framework) allows developers to forget about SQL, deploy schemas and have everything under source control. As long as you don&#8217;t think about the future all is just fine and dandy. But the life cycle of a solution and especially it&#8217;s database is only starting when it is first developed. The new Fluent [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=404&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Code first (Entity Framework) allows developers to forget about SQL, deploy schemas and have everything under source control. As long as you don&#8217;t think about the future all is just fine and dandy. But the life cycle of a solution and especially it&#8217;s database is only starting when it is first developed. The new Fluent Migrations framework and SQL Server Data Tools have got me thinking about what in the end would be the tooling that will retain its value also later in the life cycle.</p>
<p>Using code first getting started is easy and the initial deployment is close to zero effort. Unfortunately this is where the sunshine ends and the dark clouds appear. As time goes buy, the production database gets full with masses of business data and other systems start relying on all the views and schema. Some monday morning your boss asks you to to add a couple of columns, remove some depricated ones and maybe do some renaming while your at it. To be able to test your changes you of course start by copying a part of the production data to to the test server. Now then fun starts! You first edit your (code first) entities classes, then fire up SQL Server Management Studio to edit the database and finally give the changes a thorough testing. To finish off you prepare SQL scripts to get the production database updated. As this is all manual work, you find your self thinking that life could be easier - and so it can!</p>
<p>Imagine coding your schema first with Fluent Migrations, then letting the standard Entity Framework to generate your entities based on the database. Now, no mather what changes come you can always do them first by code, then let Visual Studio update the entities and finally deploy you changes without leaving your IDE. All the promises of code first, without code first. Oh happy days!</p>
<p style="text-align:center;"><img class="aligncenter  wp-image-405" alt="Dilemma of code first" src="http://devdump.files.wordpress.com/2013/03/ef_dilemma.gif?w=560&#038;h=319" width="560" height="319" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/devdump.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/devdump.wordpress.com/404/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=404&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devdump.wordpress.com/2013/03/21/dont-go-entity-framework-code-first/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2e530d210a3f05cb43bdcc60e29bd4fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tom</media:title>
		</media:content>

		<media:content url="http://devdump.files.wordpress.com/2013/03/ef_dilemma.gif" medium="image">
			<media:title type="html">Dilemma of code first</media:title>
		</media:content>
	</item>
		<item>
		<title>Make your Windows 7 a little bit safer</title>
		<link>http://devdump.wordpress.com/2013/03/19/make-your-windows-7-a-little-bit-safer/</link>
		<comments>http://devdump.wordpress.com/2013/03/19/make-your-windows-7-a-little-bit-safer/#comments</comments>
		<pubDate>Tue, 19 Mar 2013 09:45:20 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[Safety]]></category>
		<category><![CDATA[Virus]]></category>

		<guid isPermaLink="false">http://devdump.wordpress.com/?p=400</guid>
		<description><![CDATA[Virus scanners and firewalls are like vitamins, they help you stay healthier but they don&#8217;t prevent you from getting sick. This other day I found the Antivirus virus rampaging on my laptop. Vulnerabilities in browser add-ins is the most common reason for viruses to get on your computer.  In my case there where suspicious files [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=400&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Virus scanners and firewalls are like vitamins, they help you stay healthier but they don&#8217;t prevent you from getting sick. This other day I found the Antivirus virus rampaging on my laptop. Vulnerabilities in browser add-ins is the most common reason for viruses to get on your computer.  In my case there where suspicious files both in the Java and browser cache.</p>
<p>After removing the troublemaker with the scanner I had and running some online scanners just to make sure, I did what I should have done a long time ago to make my Windows a little bit safer:</p>
<ul>
<li><span style="line-height:13px;">First a made a separate admin account and removed the rights from my standard account. Windows will now prompt me for the admin password when necessary. Experts claim 80% of the know viruses will be stopped just by doing this. I had done it on my XP (never had a virus scanner on that old computer) but forgot about it when I upgraded.</span></li>
<li><span style="line-height:13px;">I updated my Java to the latest version and then I disabled Java both from the Java console and the browsers. I also disabled the Java cache just to be sure. Best option would of course be to just remove the whole thing but I was not sure if I would need it later.</span></li>
<li>Then I installed Chrome as it&#8217;s claimed to be the safest browser and set it as default.</li>
<li>As a final touch I disabled the JavaScript support from my PDF viewer and disabled the Chrome internal one has I could not find any option to do the same there. I then used some safe PDF scripting examples available on the internet to test my configuration.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/devdump.wordpress.com/400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/devdump.wordpress.com/400/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=400&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devdump.wordpress.com/2013/03/19/make-your-windows-7-a-little-bit-safer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2e530d210a3f05cb43bdcc60e29bd4fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tom</media:title>
		</media:content>
	</item>
		<item>
		<title>The evolution of web development</title>
		<link>http://devdump.wordpress.com/2013/03/04/the-evolution-of-web-development/</link>
		<comments>http://devdump.wordpress.com/2013/03/04/the-evolution-of-web-development/#comments</comments>
		<pubDate>Sun, 03 Mar 2013 21:12:19 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://devdump.wordpress.com/?p=394</guid>
		<description><![CDATA[Now over 13 years back I worked as a professional web developer. In those times JavaSscript was just something used to validate forms and anything else (e.g. toggling the visibility of a element) was considered fancy and labeled as DHTML. Few weeks ago I got a email from a co-worker having problems with including inline JavaScript [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=394&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Now over 13 years back I worked as a professional web developer. In those times JavaSscript was just something used to validate forms and anything else (e.g. toggling the visibility of a element) was considered fancy and labeled as DHTML. Few weeks ago I got a email from a co-worker having problems with including inline JavaScript in a ASP.NET razor page &#8211; this got me on memory lane.</p>
<p>Back in the days the code to open a popup window could look like this</p>
<pre class="brush: xml; title: ; notranslate">
&lt;p&gt;&lt;a href=&quot;javascript:window.open('http://www.google.com','mypopup')&quot;&gt;Open google!&lt;/a&gt;&lt;/p&gt;
</pre>
<p>This not only displayes as a scary link in the browsers status bar but also is useless in browsers not running JavaScript. So quite quickly the developers shape up and started putting the code in a separate JS file and using the events available:</p>
<pre class="brush: jscript; title: ; notranslate">
function popitup(url) {  window.open(url,'mypopup'); }
</pre>
<pre class="brush: xml; title: ; notranslate">
&lt;a href=&quot;http://www.google.com&quot; onclick=&quot;popitup(this.href);return false;&quot;&gt;Open google!&lt;/a&gt;
</pre>
<p>This was fine for many years. But then it became modern to write nonobtrusive code (keeping the scripting and visuals separate). Even if this in practice requires a lot more code frameworks like jQuery make it easy.</p>
<pre class="brush: jscript; title: ; notranslate">
window.onload = function() {
var myPopupLink = document.getElementById('myPopupLink');
if(~myPopupLink) myPopupLink.onclick = function() { popitup(myPopupLink.href); return false; }
}
</pre>
<pre class="brush: xml; title: ; notranslate">
&lt;a id=&quot;myPopupLink&quot; href=&quot;http://www.google.com&quot;&gt;Open google!&lt;/a&gt;
</pre>
<p>What next?<br />
&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/devdump.wordpress.com/394/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/devdump.wordpress.com/394/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=394&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devdump.wordpress.com/2013/03/04/the-evolution-of-web-development/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2e530d210a3f05cb43bdcc60e29bd4fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tom</media:title>
		</media:content>
	</item>
		<item>
		<title>Explaining QlikView</title>
		<link>http://devdump.wordpress.com/2012/12/29/explaining-qlikview/</link>
		<comments>http://devdump.wordpress.com/2012/12/29/explaining-qlikview/#comments</comments>
		<pubDate>Fri, 28 Dec 2012 21:00:30 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[BI]]></category>
		<category><![CDATA[QlikView]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">https://devdump.wordpress.com/?p=392</guid>
		<description><![CDATA[Dmitry Gudkov has written a very nice post attempting to explain what make QlikView so special: http://bi-review.blogspot.fi/2012/05/really-is-qlikview-bi-tool.html?m=1 Make sure to also follow the links in the article for more interesting insight.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=392&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Dmitry Gudkov has written a very nice post attempting to explain what make QlikView so special: <a href="http://bi-review.blogspot.fi/2012/05/really-is-qlikview-bi-tool.html?m=1">http://bi-review.blogspot.fi/2012/05/really-is-qlikview-bi-tool.html?m=1</a> </p>
<p>Make sure to also follow the links in the article for more interesting insight.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/devdump.wordpress.com/392/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/devdump.wordpress.com/392/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=392&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devdump.wordpress.com/2012/12/29/explaining-qlikview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2e530d210a3f05cb43bdcc60e29bd4fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tom</media:title>
		</media:content>
	</item>
		<item>
		<title>Working with legacy web services and WCF</title>
		<link>http://devdump.wordpress.com/2012/10/26/working-with-legacy-web-services-and-wcf/</link>
		<comments>http://devdump.wordpress.com/2012/10/26/working-with-legacy-web-services-and-wcf/#comments</comments>
		<pubDate>Thu, 25 Oct 2012 21:54:12 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://devdump.wordpress.com/?p=382</guid>
		<description><![CDATA[It is quite common that WCF has problems working with old and none-.NET web services. Usually the old &#8220;web reference&#8221; (ASMX) tehcnology works better in this kind of situtations, but this one time I was determined to solve the challange using WCF. After having Visual Studio generate me the client classes I did a unit [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=382&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>It is quite common that WCF has problems working with old and none-.NET web services. Usually the old &#8220;web reference&#8221; (ASMX) tehcnology works better in this kind of situtations, but this one time I was determined to solve the challange using WCF.</p>
<p>After having Visual Studio generate me the client classes I did a unit test to see if I could call the web service successfully. It turned out that the call succeeded and the function returned a response. Unfortunately the response object only contained the result code and descrption, but the data property was null.</p>
<p>Usually in this kind of situations I first turn to Wireshark or some similiar network traffic packer analyzer to see what&#8217;s actually gets sent and returned. This this time I had to come up with an alternative way as the web service only allowed me to use a secure HTTPS address so all the traffic was encrypted. As the calls returned a valid object with part of the expected data I knew the authentication was working and there was nothing wrong with the message headers. This meant it was enough for me to see the message content and writing this simple message inspector worked as the solution.</p>
<pre class="brush: csharp; title: ; notranslate">
    public class SoapMessageInspector : IClientMessageInspector, IEndpointBehavior
    {
        public string LastRequest { get; private set; }
        public string LastResponse { get; private set; }

        #region IClientMessageInspector Members

        public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
        {
            LastResponse = reply.ToString();
        }

        public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel)
        {
            LastRequest = request.ToString();
            return null;
        }

        #endregion

        #region IEndpointBehavior Members

        public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
        {
            clientRuntime.MessageInspectors.Add(this);
        }

        public void AddBindingParameters(ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection bindingParameters) { }
        public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher) { }
        public void Validate(ServiceEndpoint endpoint) { }

        #endregion
    }
</pre>
<p>Usage</p>
<pre class="brush: csharp; title: ; notranslate">
            inspector = new SoapMessageInspector();
            factory.Endpoint.Behaviors.Add(inspector);
</pre>
<p>The message inspector revealed to me that the call was sent ok and also the data returned by the server was fine. It was the WCF framework that failed to properly deserialize the response.</p>
<p>The property for the result data was called Any in the response class, so I took a look at the WSDL provided by the server.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;s:complexType name=&quot;response&quot;&gt;
&lt;s:sequence&gt;
&lt;s:element type=&quot;s0:statusType&quot; name=&quot;status&quot; maxOccurs=&quot;1&quot; minOccurs=&quot;1&quot;/&gt;
&lt;s:any maxOccurs=&quot;unbounded&quot; minOccurs=&quot;0&quot; processContents=&quot;skip&quot; namespace=&quot;targetNamespace&quot;/&gt; &lt;/s:sequence&gt;
&lt;/s:complexType&gt;
</pre>
<p>The any WSDL element leaves the structure of the content undefined. WCF translates this to a Any property of type XmlElment. The reason why WCF could not process the response correctly was pobably caused by this and the minOccurs value.</p>
<p>After trying to edit some of the attributes of the generated classes without success, I decided to take over the parsing of the response using a custom response formater.</p>
<pre class="brush: csharp; title: ; notranslate">
        public class MyResponseBehaviour : IOperationBehavior
        {
            public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation)
            {
                clientOperation.Formatter = new MyResponseFormatter(clientOperation.Formatter);
            }

            public void AddBindingParameters(OperationDescription operationDescription, System.ServiceModel.Channels.BindingParameterCollection bindingParameters) { }
            public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation) { }
            public void Validate(OperationDescription operationDescription) { }

        }

        public class MyResponseFormatter : IClientMessageFormatter
        {
            private const string XmlNameSpace = &quot;http://www.eroom.com/eRoomXML/2003/700&quot;;

            private IClientMessageFormatter _InnerFormatter;
            public eRoomResponseFormatter(IClientMessageFormatter innerFormatter)
            {
                _InnerFormatter = innerFormatter;
            }

            #region IClientMessageFormatter Members

            public object DeserializeReply( System.ServiceModel.Channels.Message message, object[] parameters )
            {
                XPathDocument document = new XPathDocument(message.GetReaderAtBodyContents());
                XPathNavigator navigator = document.CreateNavigator();

                XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
                manager.AddNamespace(&quot;er&quot;, XmlNameSpace);

                if (navigator.MoveToFollowing(&quot;response&quot;, XmlNameSpace))
                {
                    ExecuteXMLCommandResponse commandResponse = new ExecuteXMLCommandResponse();
                    // and some XPath calls...
                    return commandResponse;
                }
                else
                {
                    throw new NotSupportedException(&quot;Failed to parse response&quot;);
                }
            }

            public System.ServiceModel.Channels.Message SerializeRequest( System.ServiceModel.Channels.MessageVersion messageVersion, object[] parameters )
            {
                return _InnerFormatter.SerializeRequest( messageVersion, parameters );
            }

            #endregion
    }
</pre>
<p>As the web service only provided one function returning a fairly simple response object writing the formater only required a couple of lines of code to parse<br />
the response data using XPath. As soon as I had replaced the default formatter with my own, things started working perfectly.</p>
<pre class="brush: csharp; title: ; notranslate">
            factory.Endpoint.Contract.Operations.Find(&quot;ExecuteXMLCommand&quot;).Behaviors.Add(new MyResponseBehaviour());
</pre>
<p>I found out later that the message inspector I had written earlier also provided me with a way to throw exceptions with meaningful messages as the server always included a error descrption in the SOAP error envelope that WCF did not reveal.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/devdump.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/devdump.wordpress.com/382/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=382&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devdump.wordpress.com/2012/10/26/working-with-legacy-web-services-and-wcf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2e530d210a3f05cb43bdcc60e29bd4fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tom</media:title>
		</media:content>
	</item>
		<item>
		<title>Combining SharePoint Workflows and Calculated fields</title>
		<link>http://devdump.wordpress.com/2012/10/13/combining-sharepoint-workflows-and-calculated-fields/</link>
		<comments>http://devdump.wordpress.com/2012/10/13/combining-sharepoint-workflows-and-calculated-fields/#comments</comments>
		<pubDate>Sat, 13 Oct 2012 20:17:57 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Calculated columns]]></category>
		<category><![CDATA[SharePoint Designer]]></category>
		<category><![CDATA[Workflow]]></category>

		<guid isPermaLink="false">http://devdump.wordpress.com/?p=372</guid>
		<description><![CDATA[In one of my projects I wanted to allow teams to work privately with their documents but also allow the rest of the organization to be able to access everything considered final. The two level versioning feature allowed me easily to do exactly this, but the challenge was to also find a way to encourage [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=372&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>In one of my projects I wanted to allow teams to work privately with their documents but also allow the rest of the organization to be able to access everything considered final. The two level versioning feature allowed me easily to do exactly this, but the challenge was to also find a way to encourage the teams to finally &#8221;publish&#8221; their items. The solution was to have a special column indicate the state of the item.</p>
<p><img class="aligncenter size-full wp-image-375" title="Final list" alt="" src="http://devdump.files.wordpress.com/2012/10/splist_result.png?w=594"   /></p>
<p>To make things more interesting, I decided to only use the dialogs of SharePoint designer and the web interface to accomplish this. The easiest way to insert HTML  into a list is by using a calculated column. Unfortunately, as I quite quickly found out, the calculated columns do not update on version and approval changes. The only workaround was to create workflow to react on these changes and then use the calculated column to generate the output.</p>
<p>This is what the list column setup looked like</p>
<p><img class="aligncenter size-full wp-image-373" title="List columns" alt="" src="http://devdump.files.wordpress.com/2012/10/splist_cols.png?w=594"   /></p>
<p>The IsPublic column gets updated by the workflow and the Visibility column generates the HTML based on the value. There are many posts describing how to use a calculated column together with JavaScript to print out HTML, but all you actually need is to set the result type of the column to integer!</p>
<p><img class="aligncenter size-full wp-image-374" title="Calculated field" alt="" src="http://devdump.files.wordpress.com/2012/10/splist_formula.png?w=594"   /></p>
<p>Using SharePoint designer I created the following workflow for the list</p>
<p><img class="aligncenter size-full wp-image-376" title="Workflow" alt="" src="http://devdump.files.wordpress.com/2012/10/splist_wf.png?w=594"   /></p>
<p>The problem with document libraries is that the file might not have been completely uploaded before the workflow kicks in. This is why the workflow needs to first make sure it can access the item before editing it.</p>
<p>There are probably many ways to check if there is a major version available, I decided to convert the version number (which is actually a string) to an int and see if it is higher than 0. After some trial and error I found out that the only way to convert a string representing a decimal (yes, the version column is a text field) value is by first converting it to a double.</p>
<p>The final task was to hide the IsPublic field from the list forms and find some nice icons to indicate the visibility.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/devdump.wordpress.com/372/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/devdump.wordpress.com/372/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=372&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devdump.wordpress.com/2012/10/13/combining-sharepoint-workflows-and-calculated-fields/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2e530d210a3f05cb43bdcc60e29bd4fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tom</media:title>
		</media:content>

		<media:content url="http://devdump.files.wordpress.com/2012/10/splist_result.png" medium="image">
			<media:title type="html">Final list</media:title>
		</media:content>

		<media:content url="http://devdump.files.wordpress.com/2012/10/splist_cols.png" medium="image">
			<media:title type="html">List columns</media:title>
		</media:content>

		<media:content url="http://devdump.files.wordpress.com/2012/10/splist_formula.png" medium="image">
			<media:title type="html">Calculated field</media:title>
		</media:content>

		<media:content url="http://devdump.files.wordpress.com/2012/10/splist_wf.png" medium="image">
			<media:title type="html">Workflow</media:title>
		</media:content>
	</item>
		<item>
		<title>QlikView vs. Tableau</title>
		<link>http://devdump.wordpress.com/2012/07/30/qlikview-vs-tableau/</link>
		<comments>http://devdump.wordpress.com/2012/07/30/qlikview-vs-tableau/#comments</comments>
		<pubDate>Mon, 30 Jul 2012 19:40:18 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[BI]]></category>
		<category><![CDATA[QlikView]]></category>
		<category><![CDATA[Tableau]]></category>

		<guid isPermaLink="false">http://devdump.wordpress.com/?p=351</guid>
		<description><![CDATA[Some while ago I was asked by the CIO of my company to give a report on the Microsoft BI tool set. While gathering information I constantly found QlikView and Tableau being named as the new top dogs. Having used QlikView for a couple of years now I got interested to know more about the [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=351&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Some while ago I was asked by the CIO of my company to give a report on the Microsoft BI tool set. While gathering information I constantly found QlikView and Tableau being named as the new top dogs. Having used QlikView for a couple of years now I got interested to know more about the rival.</p>
<p>Just by reading blog posts and articles it already became clear Tableau fits into the category of data analysis tools. QlikView emphasizes on data discovery, so would it be fair to compare them against the same criteriors?</p>
<p>Planning to buy me a new car I needed to analyse the balance history of my bank account. This gave me a perfect scenario to try to implement using both tools utilizing the data I already had ready in a Excel workbook.</p>
<h2>QlikView</h2>
<p>In QlikView the building of a solution always starts by configuring the load script defining how the data will get imported. QlikView is never directly connected to a data source, instead the information is always first imported, processed and compressed.</p>
<p>I had to add two data transformations: convert the date information to a correct date format and to change the numbers with a trailing negative or positive sign to the more traditional format. To help with displaying the values on a monthly and weekly timeline I also had the script generate some additional information.</p>
<p><img class="aligncenter size-full wp-image-364" title="qv-koodi" src="http://devdump.files.wordpress.com/2012/07/qv-koodi1.png?w=594" alt="QlikView load script"   /></p>
<p>When I was ready with the importing, setting up the chart and table objects was easy. As I only had data from the beginning of this year I configured the accumulation &#8220;manually&#8221; by defining it in the chart expression enabling me to include the initial balance.</p>
<p><img class="aligncenter size-full wp-image-366" title="qv_solution" src="http://devdump.files.wordpress.com/2012/07/qv_solution3.png?w=594" alt="QlikView solution"   /></p>
<p>The final result looked nice and as QlikView by default already supports filtering by clicking on any visible information I did not see a need for any additional filter boxes.</p>
<h2>Tableau</h2>
<p>My plan was to use Tableau Desktop but as my trial license had expired I had to turn to Tableau Public that is offered free for publishing dasboards online.</p>
<p>Configuring my Excel files as a data source was easy using the inbuilt wizard. Unike QlikView Tableau links in general directly with the data source and the transformations are processed on the fly.</p>
<p>As the data required some tansformation as desrcibed earlier, I created two additional calculated dimension fields for this. The script language was quite close to what I used in QlikView so I could copy-paste most of what I had earlier written.</p>
<p>Creating the list was easy and done by drag and drop just like when working with pivots in Excel. Configuring the chart was more of a challange as I needed to create some additional calculated measure fields to get the same result I had in my QlikView solution. In contrast to QlikView, I did not have to create any week and month fields has Tableau could do the groupping directly using the available date field by selecting the desired option from the menu.</p>
<p><img class="aligncenter size-full wp-image-354" title="tableau_editing" src="http://devdump.files.wordpress.com/2012/07/tableau_editing.png?w=594" alt="Tableau workbook"   /></p>
<p>In Tableau the visual elements are defined in worksheets and these are then composed on a dasboard. Setting up the dasboard was easy and done by placing the previsouly created worksheets onto a grid. As there is no standard drill down and filtering available the presentation ended up being quite static .</p>
<p><img class="aligncenter size-full wp-image-355" title="tableau-dashboard" src="http://devdump.files.wordpress.com/2012/07/tableau-dashboard.png?w=594" alt="Tableau dashboard"   /></p>
<h2>Summary</h2>
<p>Using QlikView, writing the import script and configuring the objects on the canvas requires some degree of knowledge but it also allows the user to setup complex data handling and having full freedom to define the visual appearance of the solution. QlikView enables not only setting up dashboards but also has potential as a platform for creating complete BI tools.</p>
<p>Despite the fact that I did not spend any time on reading manuals or watching video tutorials before getting started with Tableauwas easy. Tableau also offered much of the functionality through menu options that required scripting in QlikView. Unfortunately when working with dashboards what you see is what you get, leaving less room for discovery.</p>
<p>I would imagine Tableau is closer to Microsoft PowerPivot in its user experience and approach than to QlikView. As there tools are of different nature, only by comparing them against specific requiremets will yeld in a truthful conclution.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/devdump.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/devdump.wordpress.com/351/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devdump.wordpress.com&#038;blog=5612730&#038;post=351&#038;subd=devdump&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devdump.wordpress.com/2012/07/30/qlikview-vs-tableau/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2e530d210a3f05cb43bdcc60e29bd4fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tom</media:title>
		</media:content>

		<media:content url="http://devdump.files.wordpress.com/2012/07/qv-koodi1.png" medium="image">
			<media:title type="html">qv-koodi</media:title>
		</media:content>

		<media:content url="http://devdump.files.wordpress.com/2012/07/qv_solution3.png" medium="image">
			<media:title type="html">qv_solution</media:title>
		</media:content>

		<media:content url="http://devdump.files.wordpress.com/2012/07/tableau_editing.png" medium="image">
			<media:title type="html">tableau_editing</media:title>
		</media:content>

		<media:content url="http://devdump.files.wordpress.com/2012/07/tableau-dashboard.png" medium="image">
			<media:title type="html">tableau-dashboard</media:title>
		</media:content>
	</item>
	</channel>
</rss>
