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

<channel>
	<title>Andre&#039;s Non-Technical and Other Musings</title>
	<atom:link href="http://thedovgals.com/andre/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://thedovgals.com/andre/blog</link>
	<description>Not Just Another WordPress Weblog</description>
	<pubDate>Thu, 04 Aug 2011 21:04:49 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Zachman &#8220;Framework&#8221;</title>
		<link>http://thedovgals.com/andre/blog/?p=213</link>
		<comments>http://thedovgals.com/andre/blog/?p=213#comments</comments>
		<pubDate>Thu, 04 Aug 2011 21:01:46 +0000</pubDate>
		<dc:creator>andredovgal</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://thedovgals.com/andre/blog/?p=213</guid>
		<description><![CDATA[Many years ago my friends and I had multiple discussions on what architecture was and who architects were.  We were figuring out multiple details and were trying to give a definition? description? of software architects, solutions architects, systems architects, enterprise architects.  Belonging to the domain where these terms were abused (or at least [...]]]></description>
			<content:encoded><![CDATA[<p>Many years ago my friends and I had multiple discussions on what architecture was and who architects were.  We were figuring out multiple details and were trying to give a definition? description? of software architects, solutions architects, systems architects, enterprise architects.  Belonging to the domain where these terms were abused (or at least used loosely), we felt a necessity for properly defining who we were and what we did.</p>
<p>Many years passed.</p>
<p>Today I witness same discussions, but I don&#8217;t participate in them anymore; I have had my share of pioneer excitement.  However, when I observe a significant deviation from the original meanings of these terms primarily by people who have no idea about the domain, it makes me think about one of characters I worked with in my previous life.  He a priori believed that people were fools, which eventually made him a lot of money.  I may also believe that I deal with fools, but that rather makes me sad&#8230;</p>
<p>The Enterprise Architecture term itself is being misused all the time.  It does not make me laugh anymore when someone calls a software architect working on big projects an enterprise architect, it happens so often&#8230; So much they have no idea that EA is about strategic planning of the enterprise&#8230;  Well, what I really want to talk about in so called Zachman &#8216;Framework&#8217;.</p>
<p>As you may know, the essence of the Zachman &#8216;Framework&#8217; is a 6&#215;6 matrix that models an enterprise and suggest a convenient way of documenting processes and analyzing the enterprise architecture.  The rows represent different views/perspectives, the columns represent areas to consider for each view and are named using the words &#8216;what&#8217;, &#8216;how&#8217;, &#8216;where&#8217;, who&#8217;, &#8216;when&#8217;, and &#8216;why&#8217;. There is nothing much more to it, just a few rules prescribing consistency and describing the monadic view of the cells.  Why on Earth is it called a framework?  This is simply a model, even a matrix, presenting a view of an enterprise.  I should admit that it is a very convenient way to deal with enterprise architecture, and should be definitely considered a great tool&#8230; not a framework.</p>
<p>Once looking into the Zachman matrix for one organization, I realized that the columns in the Zachman matrix are all one word questions in English language.  Which means that if John Zachman spoke Russian, he would create more columns.  Actually this thought helped me get over the limitations of the model and reasonably expand it.  But much more entertaining was realizing the connection between the Zachman matrix and the following verse by Rudyard Kipling:</p>
<p><em>I keep six honest serving men<br />
(They taught me all I knew);<br />
Their names are What and Why and When<br />
And How and Where and Who.</p>
<p>I send them over land and sea,<br />
  I send them east and west;<br />
But after they have worked for me,<br />
  I give them all a rest.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://thedovgals.com/andre/blog/?feed=rss2&amp;p=213</wfw:commentRss>
		</item>
		<item>
		<title>Software Tech Market in Vancouver is Dying?</title>
		<link>http://thedovgals.com/andre/blog/?p=206</link>
		<comments>http://thedovgals.com/andre/blog/?p=206#comments</comments>
		<pubDate>Sun, 31 Jul 2011 17:56:29 +0000</pubDate>
		<dc:creator>andredovgal</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://thedovgals.com/andre/blog/?p=206</guid>
		<description><![CDATA[We have been noticing recently that there are some significant changes in the Vancouver hi-tech market. Hi-tech professionals are moving to the States or even to Toronto.:) Why? One of answers I see is a significant discrepancy between the cost of living and salaries.  According to the survey (numbeo.com); consumer prices, rent prices, groceries [...]]]></description>
			<content:encoded><![CDATA[<p>We have been noticing recently that there are some significant changes in the Vancouver hi-tech market. Hi-tech professionals are moving to the States or even to Toronto.:) Why? One of answers I see is a significant discrepancy between the cost of living and salaries.  According to the survey (<a href="http://www.numbeo.com/cost-of-living/compare_cities.jsp?country1=Canada&#038;city1=Toronto&#038;country2=Canada&#038;city2=Vancouver">numbeo.com</a>); consumer prices, rent prices, groceries prices, etc. is higher in Vancouver&#8230; pretty much everything&#8230; with the exception of salaries.  Salaries are 11% lower in Vancouver, according to numbeo.com.</p>
<p>I bet, if you dig the statistics comparing Vancouver and major cities in the US, the gap will be even huger.</p>
<p>As a result, the quality of skills of an average software professional in Vancouver is significantly below the used-to-be norm.  Project managers keep adding contingency that does not cover low quality work and re-work anymore.  Products are being developed rarely on-time and never on-budget.  Managers tend to save money by hiring even cheaper (and therefore even less skilled) staff, and the entire quality of software products is degrading constantly and rapidly.</p>
<p>One may notice that in the last few years several noticeable software companies have been looking for new (and replacing former) technology executives; CTOs and VPs.  Some of them are being replaced again, since changing the people did not change the paradigm, and some CEOs still believe that software products can be developed by a bunch of smart and enthusiastic young people working over time for pizza and pop.  Unfortunately, cheap labour is akin to slavery; the quality is low and the value of the result can barely cover the cost.</p>
<p>I believe that most of the software development can be done cheaper and more effectively if companies let 60% of their employees go and hire real professionals with competitive salaries; competitive enough to keep the brain in the company.  (Actually, just getting rid of morons would save money <img src='http://thedovgals.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> but how many companies are willing to do that?)  I used to estimate projects I have been involved in as a consultant (used to&#8230; before I figured out the rule and got bored), and I guarantee that the majority of those projects could have been performed at 10%-20% of their official budget.</p>
<p>And what&#8217;s next?  With the 2010 Olympics and changes in the demographics there is a high possibility that Vancouver becomes a retirement city.  This factor adds even more pressure to the hi-tech community.  I feel that companies like Absolute Software and PNI Media will start shrinking or looking for new investment ideas, and if they don&#8217;t restructure the businesses (or sell them, which is restructuring as well), they will reach the point of hibernation very soon.</p>
<p>And the real question is: &#8220;Does it create a business opportunity for people like myself who can fix the problem?&#8221;  And the answer is &#8230; (to be continued)</p>
]]></content:encoded>
			<wfw:commentRss>http://thedovgals.com/andre/blog/?feed=rss2&amp;p=206</wfw:commentRss>
		</item>
		<item>
		<title>Project Management Anti-patterns</title>
		<link>http://thedovgals.com/andre/blog/?p=203</link>
		<comments>http://thedovgals.com/andre/blog/?p=203#comments</comments>
		<pubDate>Tue, 19 Jul 2011 20:34:36 +0000</pubDate>
		<dc:creator>andredovgal</dc:creator>
		
		<category><![CDATA[Process and Tactics]]></category>

		<guid isPermaLink="false">http://thedovgals.com/andre/blog/?p=203</guid>
		<description><![CDATA[The more I work in IT industry, the more I want to publish a book named &#8220;Project Management Anti-Patterns&#8221;.  Looks like every project I have been on (especially, big projects&#8230; especially, government projects) have some project management, well, &#8230; challenges.  My last project is an great example of a total absence of communication. [...]]]></description>
			<content:encoded><![CDATA[<p>The more I work in IT industry, the more I want to publish a book named &#8220;Project Management Anti-Patterns&#8221;.  Looks like every project I have been on (especially, big projects&#8230; especially, government projects) have some project management, well, &#8230; challenges.  My last project is an great example of a total absence of communication.  Work (good work!) that some people do is getting undone by others.  Like two forces moving a load into different directions.</p>
<p>What I figured out&#8230; If I just do nothing, I will bring more value to the project&#8230; because I will not be creating an opposite force.</p>
]]></content:encoded>
			<wfw:commentRss>http://thedovgals.com/andre/blog/?feed=rss2&amp;p=203</wfw:commentRss>
		</item>
		<item>
		<title>VB.NET Loop Performance</title>
		<link>http://thedovgals.com/andre/blog/?p=197</link>
		<comments>http://thedovgals.com/andre/blog/?p=197#comments</comments>
		<pubDate>Tue, 05 Jul 2011 16:27:17 +0000</pubDate>
		<dc:creator>andredovgal</dc:creator>
		
		<category><![CDATA[Technology Depth]]></category>

		<guid isPermaLink="false">http://thedovgals.com/andre/blog/?p=197</guid>
		<description><![CDATA[A couple years ago I have developed a huge WPF VB.Net program.  Once in a while, my customers get back to me with questions; and recently I was trying to improve the performance of the application.
Remembering my discussions with the Barbarian Programmer, who suggested using for i loops instead of foreach, I immediately applied it [...]]]></description>
			<content:encoded><![CDATA[<p>A couple years ago I have developed a huge WPF VB.Net program.  Once in a while, my customers get back to me with questions; and recently I was trying to improve the performance of the application.</p>
<p>Remembering my discussions with the Barbarian Programmer, who <a href="http://barbarianprogrammer.blogspot.com/2011/06/some-things-dont-change-much.html">suggested using <em>for i</em> loops instead of <em>foreach</em></a>, I immediately applied it to my program.  And surprise&#8230; surprise&#8230; the data processing time increased.  An average time of performing an operation for 160,000+ records in <em>foreach </em>loop increased from 5.22 sec to 6.81 sec when I replaced the <em>foreach </em>with <em>for i</em>.</p>
<p>I was too lazy to look into IL; however trying to explain the phenomenon I came up with this thought. VB started using <em>foreach </em>before C-like languages.  Microsoft guys spent some time optimizing it, which apparently did not find its way into other languages; that&#8217;s why VB.NET <em>foreach</em>&#8217;s performance is better of that in C#.</p>
]]></content:encoded>
			<wfw:commentRss>http://thedovgals.com/andre/blog/?feed=rss2&amp;p=197</wfw:commentRss>
		</item>
		<item>
		<title>Unskilled and Unaware of It</title>
		<link>http://thedovgals.com/andre/blog/?p=187</link>
		<comments>http://thedovgals.com/andre/blog/?p=187#comments</comments>
		<pubDate>Sat, 02 Jul 2011 04:33:32 +0000</pubDate>
		<dc:creator>andredovgal</dc:creator>
		
		<category><![CDATA[Communication]]></category>

		<category><![CDATA[Leadership]]></category>

		<guid isPermaLink="false">http://thedovgals.com/andre/blog/?p=187</guid>
		<description><![CDATA[People tend to hold overly favorable views of their abilities in many social and intellectual domains.  The authors suggest that this overestimation occurs, in part, because people who are unskilled in these domains suffer a dual burden.  Not only do these people reach erroneous conclusions and make unfortunate choices, but their incompetence robs them of [...]]]></description>
			<content:encoded><![CDATA[<p>People tend to hold overly favorable views of their abilities in many social and intellectual domains.  The authors suggest that this overestimation occurs, in part, because people who are unskilled in these domains suffer a dual burden.  Not only do these people reach erroneous conclusions and make unfortunate choices, but their incompetence robs them of metacognitive ability to realize it.</p>
<p><a href="http://www.google.co.uk/url?sa=t&amp;source=web&amp;cd=7&amp;ved=0CF0QFjAG&amp;url=http%3A%2F%2Fpeople.psych.cornell.edu%2F~dunning%2Fpublications%2Fpdf%2Funskilledandunaware.pdf&amp;rct=j&amp;q=%27Unskilled%20and%20Unaware%20of%20It%3A%20How%20Difficulties%20in%20Recognizing%20One%27s%20Own%20Incompetence%20Lead%20to%20Inflated%20Self-Assessments&amp;ei=VtYMTqP3I5G1hAfjhPyADg&amp;usg=AFQjCNEAQbmRYmrMpXY1OhlmxS5SeEppoA&amp;sig2=rGqRBm_sa2lkt095wAY7WQ&amp;cad=rja">Article by Justin Kruger and David Dunning</a></p>
]]></content:encoded>
			<wfw:commentRss>http://thedovgals.com/andre/blog/?feed=rss2&amp;p=187</wfw:commentRss>
		</item>
		<item>
		<title>My Epitaph</title>
		<link>http://thedovgals.com/andre/blog/?p=183</link>
		<comments>http://thedovgals.com/andre/blog/?p=183#comments</comments>
		<pubDate>Thu, 26 May 2011 20:40:48 +0000</pubDate>
		<dc:creator>andredovgal</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://thedovgals.com/andre/blog/?p=183</guid>
		<description><![CDATA[He visited this world. He enjoyed it.
]]></description>
			<content:encoded><![CDATA[<p>He visited this world. He enjoyed it.</p>
]]></content:encoded>
			<wfw:commentRss>http://thedovgals.com/andre/blog/?feed=rss2&amp;p=183</wfw:commentRss>
		</item>
		<item>
		<title>64-bit Virtual Machine</title>
		<link>http://thedovgals.com/andre/blog/?p=181</link>
		<comments>http://thedovgals.com/andre/blog/?p=181#comments</comments>
		<pubDate>Thu, 23 Dec 2010 21:43:20 +0000</pubDate>
		<dc:creator>andredovgal</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://thedovgals.com/andre/blog/?p=181</guid>
		<description><![CDATA[Did you know that you could not install a 64-bit VM client on a Microsoft/Windows Virtual PC regardless of the computer and OS you are running?
VMWare is your answer.
]]></description>
			<content:encoded><![CDATA[<p>Did you know that you could not install a 64-bit VM client on a Microsoft/Windows Virtual PC regardless of the computer and OS you are running?</p>
<p>VMWare is your answer.</p>
]]></content:encoded>
			<wfw:commentRss>http://thedovgals.com/andre/blog/?feed=rss2&amp;p=181</wfw:commentRss>
		</item>
		<item>
		<title>WPF Datagrid and Legacy Applications</title>
		<link>http://thedovgals.com/andre/blog/?p=98</link>
		<comments>http://thedovgals.com/andre/blog/?p=98#comments</comments>
		<pubDate>Sun, 25 Apr 2010 00:00:14 +0000</pubDate>
		<dc:creator>andredovgal</dc:creator>
		
		<category><![CDATA[Technology Depth]]></category>

		<category><![CDATA[WPF datagrid row indicators]]></category>

		<guid isPermaLink="false">http://thedovgals.com/andre/blog/?p=98</guid>
		<description><![CDATA[When you migrate legacy LOB applications,  your customers always want to keep &#8220;old good&#8221; features.  I still remember how in mid-1990s I delivered a new fancy system to one of the Lower Mainland warehouses.  Client-server application with a fancy Windows 95 client and MS SQL Server as a back-end&#8230;  I was [...]]]></description>
			<content:encoded><![CDATA[<p>When you migrate legacy LOB applications,  your customers always want to keep &#8220;old good&#8221; features.  I still remember how in mid-1990s I delivered a new fancy system to one of the Lower Mainland warehouses.  Client-server application with a fancy Windows 95 client and MS SQL Server as a back-end&#8230;  I was so proud of myself&#8230; The first question that I heard from the customer was &#8220;How can we get rid of these colors?&#8221; &#8212; she meant new Windows 95 colors&#8230;</p>
<p>Well, now working with WPF&#8230; &#8220;How can we have Access/Visual Basic 6/old programs-like indicators for selected and new lines on the data grids?&#8221;  That is the question, as Shakespeare would say.</p>
<p>I spent a lot of time (and I mean a lot) to answer this question, especially its second part about the new line indicator.  And see what I got:</p>
<p><a rel="attachment wp-att-128" href="http://thedovgals.com/andre/blog/?attachment_id=128"><img class="alignnone size-full wp-image-128" title="wpf201004241" src="http://thedovgals.com/wordpress/wp-content/uploads/2010/04/wpf201004241.jpg" alt="wpf201004241" width="382" height="336" /></a></p>
<p>The following style completely defines the selected row indicator and partially (you also need some code behind) deals with the new row indicator:</p>
<pre><span style="color: #000080;">        &lt;Style TargetType="toolkit:DataGridRowHeader"
               x:Key="DataGridRowHeaderStyle"&gt;
            &lt;Setter Property="Content"
                    Value="{Binding Converter={StaticResource cnvNewRowIndicatorConverter}}" /&gt;
            &lt;Setter Property="Foreground" Value="RoyalBlue" /&gt;
            &lt;Setter Property="FontWeight" Value="Bold" /&gt;
            &lt;Setter Property="FontSize" Value="15" /&gt;
            &lt;Setter Property="Height" Value="18" /&gt;

            &lt;Style.Triggers&gt;
                &lt;Trigger Property="IsRowSelected" Value="True"&gt;
                    &lt;Setter Property="Template"&gt;
                        &lt;Setter.Value&gt;
                            &lt;ControlTemplate&gt;
                                &lt;Border BorderBrush="Black"
                                        BorderThickness="0,1,0,1"
                                        Margin="0,-1,0,0"&gt;
                                &lt;DockPanel Background="Transparent"&gt;
                                &lt;Path x:Name="arrow"
                                      StrokeThickness = "1"
                                      Fill            = "RoyalBlue"
                                      Data            = "M 5,13 L 10,8 L 5,3 L 5,13"/&gt;
                                &lt;/DockPanel&gt;
                                &lt;/Border&gt;
                            &lt;/ControlTemplate&gt;
                        &lt;/Setter.Value&gt;
                    &lt;/Setter&gt;
                &lt;/Trigger&gt;
            &lt;/Style.Triggers&gt;
        &lt;/Style&gt;</span></pre>
<p>For the new line indicator we need to add some code behind:</p>
<pre><span style="color: #000080;">Public Class NewRowIndicatorConverter</span></pre>
<pre><span style="color: #000080;">    Implements IValueConverter</span></pre>
<pre><span style="color: #000080;">    Public Function Convert(ByVal value As Object, _</span></pre>
<pre><span style="color: #000080;">                            ByVal targetType As System.Type, _</span></pre>
<pre><span style="color: #000080;">                            ByVal parameter As Object, _</span></pre>
<pre><span style="color: #000080;">                            ByVal culture As System.Globalization.CultureInfo) As Object _</span></pre>
<pre><span style="color: #000080;">                            Implements System.Windows.Data.IValueConverter.Convert</span></pre>
<pre><span style="color: #000080;">        If value Is Nothing Then Return ""</span></pre>
<pre><span style="color: #000080;">        If value.GetType.FullName = "MS.Internal.NamedObject" Then Return "*"</span></pre>
<pre><span style="color: #000080;">        Return ""</span></pre>
<pre><span style="color: #000080;">    End Function</span></pre>
<pre><span style="color: #000080;">    Public Function ConvertBack(ByVal value As Object, _</span></pre>
<pre><span style="color: #000080;">                                ByVal targetType As System.Type, _</span></pre>
<pre><span style="color: #000080;">                                ByVal parameter As Object, _</span></pre>
<pre><span style="color: #000080;">                                ByVal culture As System.Globalization.CultureInfo) As Object _</span></pre>
<pre><span style="color: #000080;">                                Implements System.Windows.Data.IValueConverter.ConvertBack</span></pre>
<pre><span style="color: #000080;">        ' this function is not supposed to be called</span></pre>
<pre><span style="color: #000080;">        Throw New Exception</span></pre>
<pre><span style="color: #000080;">    End Function</span></pre>
<pre><span style="color: #000080;">End Class</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://thedovgals.com/andre/blog/?feed=rss2&amp;p=98</wfw:commentRss>
		</item>
		<item>
		<title>WPF Datagrid IsReadOnly</title>
		<link>http://thedovgals.com/andre/blog/?p=85</link>
		<comments>http://thedovgals.com/andre/blog/?p=85#comments</comments>
		<pubDate>Sat, 03 Apr 2010 16:21:06 +0000</pubDate>
		<dc:creator>andredovgal</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[datagrid]]></category>

		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://thedovgals.com/andre/blog/?p=85</guid>
		<description><![CDATA[I have datagrids (from the WPF toolkit) that are read only.  Nevertheless, once in a while certain dataset (ADO.NET) columns were producing the following error:
&#8220;A TwoWay or OneWayToSource binding cannot work on the read-only property &#8230;&#8221;
even if the corresponding binding used the OneTime or OneWay mode.
This was happening for each expression column in my [...]]]></description>
			<content:encoded><![CDATA[<p>I have datagrids (from the WPF toolkit) that are read only.  Nevertheless, once in a while certain dataset (ADO.NET) columns were producing the following error:<br />
&#8220;A TwoWay or OneWayToSource binding cannot work on the read-only property &#8230;&#8221;<br />
even if the corresponding binding used the OneTime or OneWay mode.<br />
This was happening for each expression column in my dataset tables.</p>
<p>What I learned:<br />
1. There is a bug in the WPF toolkit (don&#8217;t know whether it&#8217;s removed in VS 2010), that sets the binding as TwoWay even if it is explicitly defined as OneWay/OneTime.<br />
2. To avoid the problem one simply needs to specify IsReadOnly=&#8221;True&#8221; for all expression  columns.</p>
<p>PS.  Same error occurs if the column is created using calculations in the SELECT statement. </p>
]]></content:encoded>
			<wfw:commentRss>http://thedovgals.com/andre/blog/?feed=rss2&amp;p=85</wfw:commentRss>
		</item>
		<item>
		<title>Windows Presentation Foundation</title>
		<link>http://thedovgals.com/andre/blog/?p=83</link>
		<comments>http://thedovgals.com/andre/blog/?p=83#comments</comments>
		<pubDate>Fri, 05 Mar 2010 02:10:27 +0000</pubDate>
		<dc:creator>andredovgal</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://thedovgals.com/andre/blog/?p=83</guid>
		<description><![CDATA[I have completed my long WPF project. Well, it was quite an experience.  I guess, now I can modestly call myself a WPF Architect.  I&#8217;ll try to summarize this experience and soon come up with a few blog posts about WPF problems I ran across.
]]></description>
			<content:encoded><![CDATA[<p>I have completed my long WPF project. Well, it was quite an experience.  I guess, now I can modestly call myself a WPF Architect. <img src='http://thedovgals.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> I&#8217;ll try to summarize this experience and soon come up with a few blog posts about WPF problems I ran across.</p>
]]></content:encoded>
			<wfw:commentRss>http://thedovgals.com/andre/blog/?feed=rss2&amp;p=83</wfw:commentRss>
		</item>
	</channel>
</rss>

