<?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>Desenvolvimento Archives - Blog IT</title>
	<atom:link href="https://blogit.create.pt/tag/desenvolvimento/feed/" rel="self" type="application/rss+xml" />
	<link>https://blogit.create.pt/tag/desenvolvimento/</link>
	<description>Create IT blogger community</description>
	<lastBuildDate>Thu, 10 Jan 2019 14:18:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>
	<item>
		<title>AutoMapper Revisited</title>
		<link>https://blogit.create.pt/jota/2012/03/26/automapper-revisited/</link>
					<comments>https://blogit.create.pt/jota/2012/03/26/automapper-revisited/#respond</comments>
		
		<dc:creator><![CDATA[Jota]]></dc:creator>
		<pubDate>Mon, 26 Mar 2012 07:45:00 +0000</pubDate>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[MsdnArquitecturaPT]]></category>
		<category><![CDATA[Posts in English]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/joaomartins/?p=421</guid>

					<description><![CDATA[<p>A few months back I posted about AutoMapper, a tool for which I had use in a project. One of the characteristics of AutoMapper is that, when it can&#8217;t map a given attribute, if fails silently. For example, if attribute A in the source object is renamed to B and there is no B in [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/jota/2012/03/26/automapper-revisited/">AutoMapper Revisited</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A few months back I <a href="/blogs/joaomartins/archive/2011/08/09/AutoMapper.aspx" target="_blank">posted about AutoMapper</a>, a tool for which I had use in a project. One of the characteristics of <strong>AutoMapper</strong> is that, when it can&rsquo;t map a given attribute, if fails silently. For example, if attribute A in the source object is renamed to B and there is no B in the target object, we don&rsquo;t get any exception or error back. This is the normal behavior, ignore what it can&rsquo;t map.</p>
<p>The side effect of this is that when you change the source or destination classes, unless you have unit tests, you can get had to find errors. For this reason (and we <strong>do</strong> <strong>have</strong> unit tests), I opted for the progressive removal of <strong>AutoMapper</strong> in the project. Now the mappers simply break compilation when the classes change, and the fixes are simple to make. The convenience wasn&rsquo;t worth it.</p>
<p>The post <a href="https://blogit.create.pt/jota/2012/03/26/automapper-revisited/">AutoMapper Revisited</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/jota/2012/03/26/automapper-revisited/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AutoMapper</title>
		<link>https://blogit.create.pt/jota/2011/08/09/automapper/</link>
					<comments>https://blogit.create.pt/jota/2011/08/09/automapper/#respond</comments>
		
		<dc:creator><![CDATA[Jota]]></dc:creator>
		<pubDate>Tue, 09 Aug 2011 09:52:19 +0000</pubDate>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[MsdnArquitecturaPT]]></category>
		<category><![CDATA[Posts in English]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/joaomartins/?p=461</guid>

					<description><![CDATA[<p>AutoMapper is a «convention-based object-to-object mapper». According to the description, «AutoMapper uses a fluent configuration API to define an object-object mapping strategy. AutoMapper uses a convention-based matching algorithm to match up source to destination values. Currently, AutoMapper is geared towards model projection scenarios to flatten complex object models to DTOs and other simple objects, whose [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/jota/2011/08/09/automapper/">AutoMapper</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://automapper.codeplex.com/" target="_blank">AutoMapper</a> is a «<em>convention-based object-to-object mapper</em>». According to the description, «<em>AutoMapper uses a fluent configuration API to define an object-object mapping strategy. AutoMapper uses a convention-based matching algorithm to match up source to destination values. Currently, AutoMapper is geared towards model projection scenarios to flatten complex object models to DTOs and other simple objects, whose design is better suited for serialization, communication, messaging, or simply an anti-corruption layer between the domain and application layer.</em>»     </p>
<p>I’ve been using AutoMapper to map entity objects between data and service layers, as well as service and UI layers. What I mean with mapping is doing stuff such as:</p>
<blockquote>
<p><font face="Consolas">public TDestination Map(TSource src) </font><font face="Consolas">{</font></p>
</blockquote>
<blockquote>
<p><font face="Consolas">TDestination dest = new TDestination ();</font></p>
<p><font face="Consolas">dest.Field1 = src.Field1;</font></p>
<p><font face="Consolas">dest.Field2 = src.Field2 + src.Field3;</font></p>
<p><font face="Consolas">dest.Field3 = src.Field10;</font></p>
<p><font face="Consolas">// …</font></p>
<p><font face="Consolas">return dest;</font></p>
<p>}</p>
</blockquote>
<p>This is boring and repetitive code, and it’s what AutoMapper wants to avoid writing.</p>
<p>In its simplest usage, we setup the mapper with:</p>
<blockquote>
<p><font face="Consolas">using AutoMapper;</font></p>
<p><font face="Consolas">[…]</font></p>
<p><font face="Consolas">Mapper.CreateMap&lt;TSource , TDestination&gt;();</font></p>
</blockquote>
<p>and then convert by calling:</p>
<blockquote>
<p><font face="Consolas">TDestination dest = Mapper.Map&lt;TSource , TDestination&gt;(srcObject);</font></p>
</blockquote>
<p>By default, AutoMapper only maps properties that have the same names on the source and destination, however you can parameterize the mapper in a different way. For example, assuming that Field10 in TSource becomes Field3 in TDestination, you can write:</p>
<blockquote>
<p><font face="Consolas">Mapper.CreateMap&lt;TSource , TDestination&gt;()        <br />&#160;&#160;&#160; .ForMember( dst =&gt; dst.Field3, options =&gt; options.MapFrom(src =&gt; src.Id));</font></p>
</blockquote>
<p>You can add as many ForMember clauses as you want. Also note that dst, options are src are not variable names, but are part of the lambda function definitions.</p>
<p>After the map is setup like this, the call to Map will now convert the objects correctly.</p>
<p>So AutoMapper is an extremely convenient way to map between objects, and more convenient the more similarity there is in the names of the properties of the objects being mapped. </p>
<p>&#160;</p>
<p><strong>However</strong>, and quite obviously, AutoMapper does this by using reflection, and I wanted to measure the impact of doing these conversions this way, compared with the hand-coded assignments shown at the top.</p>
<p>I created two examples: in the first, the two objects have exacly the same structure, so AutoMapper does all the work. In the second, the destination type has the same fields, but with different names, so I had to use ForMember once for each of the 6 fields in my test classes.</p>
<p>I then created a loop that converted using either of the two methods a number of times and printed out the elapsed time. Here are the results:</p>
<table border="1" cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr bgcolor="#808080">
<td valign="top" width="116">Type of Conversion</td>
<td valign="top" width="92">Number of loop iterations</td>
<td valign="top" width="105">Elapsed time using AutoMapper</td>
<td valign="top" width="76">Elapsed time hand-coded map</td>
<td valign="top" width="73">Ratio</td>
</tr>
<tr>
<td valign="top" width="130">Direct</td>
<td valign="top" width="101">100.000</td>
<td valign="top" width="113">2 sec, 165 ms</td>
<td valign="top" width="82">20 ms</td>
<td valign="top" width="77">1:108</td>
</tr>
<tr>
<td valign="top" width="134">With Property Renames</td>
<td valign="top" width="105">100.000</td>
<td valign="top" width="116">3 mins, 14 secs, 157ms</td>
<td valign="top" width="86">25 ms</td>
<td valign="top" width="76">1:7726</td>
</tr>
</tbody>
</table>
<p>The first time was according to what I expected, but the second was actually much larger.</p>
<p>Getting these results, I then tried an optimization, which was to create the map outside of the test loop – but still after the timer start (assuming it could be created and stored in some in-memory cache), and re-ran the tests. This time the results where much better, especially in the renames case, showing that setting up the map with renames can have a large impact on the execution times. The following table shows the results.</p>
<table border="1" cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr bgcolor="#808080">
<td valign="top" width="116">Type of Conversion</td>
<td valign="top" width="92">Number of loop iterations</td>
<td valign="top" width="105">Elapsed time using AutoMapper</td>
<td valign="top" width="76">Elapsed time hand-coded map</td>
<td valign="top" width="73">Ratio</td>
</tr>
<tr>
<td valign="top" width="130">Direct</td>
<td valign="top" width="101">100.000</td>
<td valign="top" width="113">2 sec, 611 ms</td>
<td valign="top" width="82">24 ms</td>
<td valign="top" width="77">1:109</td>
</tr>
<tr>
<td valign="top" width="134">With Property Renames</td>
<td valign="top" width="105">100.000</td>
<td valign="top" width="116">2 sec, 508 ms</td>
<td valign="top" width="86">27 ms</td>
<td valign="top" width="76">1:93</td>
</tr>
</tbody>
</table>
<p>Quite surprising that the renames option is now actually faster than the automatic direct conversion.</p>
<p>&#160;</p>
<p><strong>My conclusion:</strong> I’ll go on using <a href="http://automapper.codeplex.com/" target="_blank">AutoMapper</a> for its convenience when writing code, but if performance is an issue, I’ll just directly hand-code the mapping.     <br />Pre-creating and populating a cache of Mappers would also be a viable alternative, but hard to justify in terms or architecture.</p>
<p>Check out the <a href="http://automapper.codeplex.com/" target="_blank">codeplex site</a> for more features of AutoMapper, such as Flattening or Projection, or contact me if you want the source code I used for these tests.</p>
<p>The post <a href="https://blogit.create.pt/jota/2011/08/09/automapper/">AutoMapper</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/jota/2011/08/09/automapper/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>«Does IT Matter», and Waves of Innovation</title>
		<link>https://blogit.create.pt/jota/2008/04/03/does-it-matter-and-waves-of-innovation/</link>
					<comments>https://blogit.create.pt/jota/2008/04/03/does-it-matter-and-waves-of-innovation/#respond</comments>
		
		<dc:creator><![CDATA[Jota]]></dc:creator>
		<pubDate>Thu, 03 Apr 2008 10:26:00 +0000</pubDate>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Arquitectura]]></category>
		<category><![CDATA[MsdnArquitecturaPT]]></category>
		<category><![CDATA[Software Factories]]></category>
		<category><![CDATA[Posts in English]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/joaomartins/?p=1301</guid>

					<description><![CDATA[<p>A few years back I read Francis Fukuyama&#039;s &#34;The End of History and the Last Man&#34;, a book that presented and defended the theory that the current political and economical status quo/zeitgeist is as good as it gets. There&#039;s supposedly no better system, hence the title of the book. This was a book I profoundly [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/jota/2008/04/03/does-it-matter-and-waves-of-innovation/">«Does IT Matter», and Waves of Innovation</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A few years back I read Francis Fukuyama&#039;s <a href="http://www.amazon.com/End-History-Last-Man/dp/0380720027">&quot;The End of History and the Last Man&quot;</a>, a book that presented and defended the theory that the current political and economical status quo/zeitgeist is as good as it gets. There&#039;s supposedly no better system, hence the title of the book. This was a book I profoundly disagreed with, but had to admit it had strong and extremely intelligent and well built arguments.</p>
<p>A few days back I finally ended reading <a href="http://www.roughtype.com/">Nicholas Carr</a>&#039;s polemic <a href="http://www.amazon.com/Information-Technology-Corrosion-Competitive-Advantage/dp/1591394449">&quot;Does IT matter &#8211; Information Technology and the Corrosion of Competitive Advantage&quot;</a>. Being in a company that has &quot;IT&quot; in its name, the contents of these book are very relevant. The author spells a message similar to Fukuyama&#039;s, but applied to IT, stating that IT cannot be seen as giving a real competitive advantage in today&#039;s markets: whatever lead the use of Information Technology gives to a given organization, will be quickly replicated by its competitors. Additionally, the author defends that IT is becoming infrastructure, much like electricity or the railway (or other means of fast transportation). This analogy with electricity actually is used throughout most of the book to sustain the main thesis: no organization strategy today is based on the fact that the company has access to &quot;state-of-the-art&quot; electricity. And, consequently, no organization can base their strategies/market leads in investments in information technology.</p>
<p>This book had a lot of impact a few years back, and like Fukuyama&#039;s, has strong, extremely intelligent and well built arguments. It&#039;s a book I profoundly disagree with, as well, one that made me scribble lots of notes on its margins. XXX wrote a book dedicated to contradict Carr, and there is information all over the net about this, so I doubt I can add much to this argument, so I&#039;ll just leave some notes: there are a lot of anecdotes in the book that justify some positions. While stories and specific cases are interesting to know, they are hardly proof of anything: there are probably as many examples pointing in the opposite direction. The last part of the book I found especially dishonest, when the author compares the impact of IT with that of basic living conditions stuff, such as clean water to drink, or sanitation. My answer to this is: can&#039;t the same be said of BOOKS (=recorded human history) and that same water/sanitation? We wouldn&#039;t have this world without it. This is the stuff of journalist rhetoric, and not honest discussion.</p>
<p>ANYWAY, changing gears, I do think several of the arguments in the book make perfect sense. The emerging trend of moving into cloud-based, hosted, software, is clearly a step that brings more truth the analogy of electricity and IT (software is just&#8230; there, somewhere, I don&#039;t really care). Having the software is no longer the advantage. At least, not for long periods of time, as it will be replicated by competitors sooner or later. So it all comes back to good, ol&#039;, business strategy and practices.</p>
<p>The question I now pose myself is: how can I, aware of this line of reasoning, &quot;sell&quot; a project to a customer based on its technology merits? I happened to have a conversation with a long-time client and business partner about the book, which he had also read, and 5 minutes later the topic changed to a possible new project we are doing with them, where I am proposing brand new technology, one month old. I couldn&#039;t help feeling something was wrong. I am going forward with it, especially because it&#039;s a very sound architectural approach to the specific business problem, but I feels uncomfortable anyway.</p>
<p>Changing to the second, related, topic of this post: in college, quite a few years back, I remember studying <strong><a href="http://en.wikipedia.org/wiki/Amdahl&#039;s_law">Amdahl&#039;s Law</a></strong>. It basically states (if I remember correctly) that the impact of a given change/optimization on a component of a system has an impact on the full system that is proportional to the relative importance of that component in the full system. Simple proportionality rules. An example. Like I said above, I have this situation where I am considering using this new technology that just came out. In the typical projects we do at <strong>|create|<font color="#ff0000">it</font>|</strong>, 40-60% of the effort of a given project is spent in development/programming tasks, so let&#039;s consider 50% as the average. Let&#039;s suppose this technology is applies to 10% of the project, and that it allows me to cut in half (50%) the development time. This means, summit it up, that if the project had 100 days of development, we&#039;d be saving the customer 0.5 * 0.1 * 0.5 * 100 = 2.5 days, or about 2.5% of the total cost of the project. And this is discounting the learning curve, obviously.</p>
<p>This whole rant is related to <strong>constant </strong>flux of innovations and new technology being made available almost everyday by Microsoft and other vendors (<em>&quot;can&#039;t they just <strong>stop</strong> for a few months?&quot;</em> &#8211; sentence I heard recently), and it serves as a kind of reality check. It&#039;s important to measure the impact of the technology we choose for our projects, especially if it&#039;s new technology. I&#039;m just bundling here for the sake of example, but <strong>make sure </strong>you have an answer, when a customer asks you what&#039;s in it for him when you decide to use Linq, the Entity Framework Asp.Net MVC stuff, WCF/WPF/WF, Windows or Sql 2008, etc.</p>
<p>That said, and since I personally thrive on innovation and breathe new technology :-), I&#039;ll make sure I have that answer. It&#039;s a different world, out there in &quot;<em>Does IT matter</em>&quot;-land.</p>
<p>By the way: the new technology I mentioned is the <a href="http://blogs.msdn.com/adapters/archive/2008/02/15/biztalk-adapter-pack-released.aspx">BizTalk Adapter Pack</a>.</p>
<p>The post <a href="https://blogit.create.pt/jota/2008/04/03/does-it-matter-and-waves-of-innovation/">«Does IT Matter», and Waves of Innovation</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/jota/2008/04/03/does-it-matter-and-waves-of-innovation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Curso &#034;Certified Scrum Master&#034; &#8211; 30-31/Jan/08</title>
		<link>https://blogit.create.pt/jota/2008/01/03/curso-quotcertified-scrum-masterquot-30-31jan08/</link>
					<comments>https://blogit.create.pt/jota/2008/01/03/curso-quotcertified-scrum-masterquot-30-31jan08/#respond</comments>
		
		<dc:creator><![CDATA[Jota]]></dc:creator>
		<pubDate>Thu, 03 Jan 2008 14:15:53 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/joaomartins/?p=1461</guid>

					<description><![CDATA[<p>A Fullsix está a organizar um curso de Certified Scrum Master, que vai ser leccionado por Mitch Lacey em Lisboa, no final de Janeiro, com duração de dois dias. Pessoalmente tenho tido algum sucesso na utilização de Scrum, apesar de ser muito fácil fugir a usar todas as práticas da abordagem, e considero que o [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/jota/2008/01/03/curso-quotcertified-scrum-masterquot-30-31jan08/">Curso &quot;Certified Scrum Master&quot; &#8211; 30-31/Jan/08</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A Fullsix está a organizar um <a href="http://www.fullsix.pt/scrum/">curso de Certified Scrum Master</a>, que vai ser leccionado por <a href="http://www.scrumalliance.org/profiles/55-mitch-lacey-pmp">Mitch Lacey</a> em Lisboa, no final de Janeiro, com duração de dois dias. </p>
<p>Pessoalmente tenho tido algum sucesso na utilização de Scrum, apesar de ser muito fácil fugir a usar todas as práticas da abordagem, e considero que o conhecimento (se não a utilização) de metodologias ágeis como absolutamente essencial no desenvolvimento de <em>software</em>. V<strong>ivamente </strong>recomendado!</p>
<p>The post <a href="https://blogit.create.pt/jota/2008/01/03/curso-quotcertified-scrum-masterquot-30-31jan08/">Curso &quot;Certified Scrum Master&quot; &#8211; 30-31/Jan/08</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/jota/2008/01/03/curso-quotcertified-scrum-masterquot-30-31jan08/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>New Portuguese MVP</title>
		<link>https://blogit.create.pt/jota/2008/01/02/new-portuguese-mvp/</link>
					<comments>https://blogit.create.pt/jota/2008/01/02/new-portuguese-mvp/#respond</comments>
		
		<dc:creator><![CDATA[Jota]]></dc:creator>
		<pubDate>Wed, 02 Jan 2008 10:20:31 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Posts in English]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/joaomartins/?p=1481</guid>

					<description><![CDATA[<p>Tiago Pascoal has just been awarded Microsoft Most Valuable Professional on Visual Studio Team System. Congratulations, and welcome aboard! 🙂</p>
<p>The post <a href="https://blogit.create.pt/jota/2008/01/02/new-portuguese-mvp/">New Portuguese MVP</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://agilior.pt/blogs/tiago.pascoal/archive/2008/01/01/3456.aspx">Tiago Pascoal</a> has just been awarded Microsoft <strong>M</strong>ost <strong>V</strong>aluable <strong>P</strong>rofessional on Visual Studio Team System. Congratulations, and welcome aboard! 🙂</p>
<p>The post <a href="https://blogit.create.pt/jota/2008/01/02/new-portuguese-mvp/">New Portuguese MVP</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/jota/2008/01/02/new-portuguese-mvp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>VSoft FinalBUilder 5.5</title>
		<link>https://blogit.create.pt/jota/2007/12/22/vsoft-finalbuilder-5-5/</link>
					<comments>https://blogit.create.pt/jota/2007/12/22/vsoft-finalbuilder-5-5/#respond</comments>
		
		<dc:creator><![CDATA[Jota]]></dc:creator>
		<pubDate>Sat, 22 Dec 2007 02:04:33 +0000</pubDate>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Arquitectura]]></category>
		<category><![CDATA[MsdnArquitecturaPT]]></category>
		<category><![CDATA[Posts in English]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/joaomartins/?p=1501</guid>

					<description><![CDATA[<p>In the last few days I finally got around to test and deploy FinalBuilder. This tool is like a DSL for building&#160;software applications. With over 600 actions (almost anything you can imagine), it takes just a couple of hours to set up a Visual Studio solution/projects doing daily builds. What I did was set it [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/jota/2007/12/22/vsoft-finalbuilder-5-5/">VSoft FinalBUilder 5.5</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><p>In the last few days I finally got around to test and deploy <a href="http://www.finalbuilder.com/finalbuilder.aspx">FinalBuilder</a>. This tool is like a DSL for building&nbsp;software applications. With over 600 actions (almost anything you can imagine), it takes just a couple of hours to set up a Visual Studio solution/projects doing daily builds. </p>
<p>What I did was set it up to automatically build one of my company&#8217;s MOSS2007 components, <strong>SharePoint</strong> Rules, and five of its plug-in&#8217;s. I created a project, configured it to get the latest version of the code, created 6 separate &#8220;action lists&#8221; (==build subroutines), and finished it off by sending a success e-mail. Each of the subroutines just preps up the dependent assemblies, builds the respective solution, and then generates SharePoint&#8217;s solution for installation. If anything fails in the process, a failure email is sent. </p>
<p>The usual approach when setting up continuous/daily builds is using either Microsoft&#8217;s MSBuild/TFS, or something like CruiseControl.Net . Having been through this in the past, my opinion is: forget it. <strong>Buy this product</strong>, it is <strong>definitely</strong> worth it and save you hours if not days. It supports over 10 source control systems (including VSS, TFS, CVS, SubVersion and&nbsp;ClearCase), FTP, NNTP, ICQ, FTP, installers, virtual machine control&nbsp;(VPC, Virtual Server,&nbsp; and VMWare Server/Workstation), burning CD&#8217;s, and a lot more (the list is <a href="http://www.finalbuilder.com/finalbuilder/Help/HTML/actionsreference.htm">here</a>). The design experience even includes debugging the build project, and the mandatory breakpoints/watches. </p>
<p>All this said, there are some minor glitches: the lack of an &#8220;Undo&#8221; means I&#8217;ve had to resort to previous versions of the build project a couple of times. Also, I quickly found a difference between the Help File and one specific action (I did post a message in VSoft&#8217;s support forum and got a complete reply in under 24 hours explaining the situation &#8212; with a solution attached). </p>
<p>Along with CodeSmith and a few other, this is one of the most valuable tools I&#8217;ve <strong>ever</strong> used in development. <strong>Highly recommended.</strong> </p>
<p>&nbsp; </p>
<p>Changing topics: one of the things I tried to set up as part of the build project, was generating the CHM help files for the compiled assemblies. The idea was to use the included <strong>SandCastle </strong>actions to do this. I had a good impression of <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E82EA71D-DA89-42EE-A715-696E3A4873B2">SandCastle</a> (I used Oct2007 CTP) from what people told me, and of NDoc before that, but never actually tried to use it until now, and I was thoroughly <strong>disappointed</strong>. SandCastle&nbsp;is <strong>far </strong>from being a simple tool/product, and usability is near zero. After trying to configure it (for longer than it took me to create the entire build project), hunting for tips in blogs and Xml files, and even failing to get the included samples to work, and always ending up with 0x8000-like errors, I just quit. A colleague had success when using the <a href="http://www.codeplex.com/SHFB">SandCastle Help File Builder</a> available at CodePlex, but since this is not usable in the automated build scenario, I just disabled the SandCastle actions until a better day comes. A disappointment I wasn&#8217;t expecting. Can&#8217;t win them all. 🙂 </p>
<p><em></em>&nbsp; </p>
<p><em>Disclosure: as an MVP, I have received a free license for FinalBUilder 5.5 as a 3rd party offer from VSoft Technologies.</em></p>
<p>The post <a href="https://blogit.create.pt/jota/2007/12/22/vsoft-finalbuilder-5-5/">VSoft FinalBUilder 5.5</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/jota/2007/12/22/vsoft-finalbuilder-5-5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MyTechEd 2007 &#8211; Day 2</title>
		<link>https://blogit.create.pt/jota/2007/11/08/myteched-2007-day-2/</link>
					<comments>https://blogit.create.pt/jota/2007/11/08/myteched-2007-day-2/#respond</comments>
		
		<dc:creator><![CDATA[Jota]]></dc:creator>
		<pubDate>Thu, 08 Nov 2007 08:01:01 +0000</pubDate>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Arquitectura]]></category>
		<category><![CDATA[MsdnArquitecturaPT]]></category>
		<category><![CDATA[Posts in English]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/joaomartins/?p=1541</guid>

					<description><![CDATA[<p>The second day started with a BizTalk Server session: &#8220;Enterprise Ready BizTalk &#8211; Best Practices from Customer Implementations&#8220;, by Ewan Fairweather, one of the authors of the excellent &#8220;Professional BizTalk Server 2006&#8221; (ed. wrox). Not the greatest of sessions, but it had some interesting stuff. One of the topics covered was BizUnit, the test framework [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/jota/2007/11/08/myteched-2007-day-2/">MyTechEd 2007 &#8211; Day 2</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The second day started with a BizTalk Server session: &#8220;<strong>Enterprise Ready BizTalk &#8211; Best Practices from Customer Implementations</strong>&#8220;, by Ewan Fairweather, one of the authors of the excellent &#8220;Professional BizTalk Server 2006&#8221; (ed. wrox). Not the greatest of sessions, but it had some interesting stuff. One of the topics covered was BizUnit, the test framework for BizTalk, and what I found interesting here was the usage of the database query shapes to query BizTalk&#8217;s own database, as well as the notion of &#8220;priming messages&#8221;, to warm up the system to the tests you are doing. The session also described and demo&#8217;ed code coverage using Visual Studio&#8217;s performance tools (vsperfmon/vsinstr), to use for instance when testing pipelines of custom components, and the last part was dedicated entirely to Disaster Recovery and the various mechanisms available, from Log Shipping to SAN mirroring or applicational mirroring.</p>
<p>After this, a level 200 session, &#8220;<strong>Introducing the Microsoft Synchronization Framework</strong>&#8220;, by Philip Vaughn. This was a very high level and un-technical description of the features of the just announced sync framework, presenting its use scenarios (offline and collaboration). The framework supports both hub&amp;spoke and P2P topologies, and was described as &#8220;<em>the glue for S+S</em>&#8220;. The fw includes three components: a sync agent (the &#8220;deamon&#8221;), a set of built in providers (relational, file system, etc. &#8212; and like the name implies, this set is extensible), and the runtime, and basically supports a &#8220;poll&#8221; model of change detection, based on versions. Apparently there&#8217;s already a <a href="http://msdn.microsoft.com/sync">dev center at MSDN</a> about this CTP technology. The session also included a demo of n-way contact synchronization between a SQL database, Outlook contacts, Windows Mobile 6 Contacts, and Windows Vista contacts. Also, the SF is based on metadata information for the sync, which was summarily described, but no-one quite understood what that metadata consists of. I was really curious about the Sync Framework, but this was definitely not the best of sessions, especially because of being too general for a technical audience (<em>IMHO</em>). </p>
<p>Following this session was lunchtime&#8217;s David S. Plat&#8217;s &#8220;<strong>Why Software Sucks</strong>&#8220;. David Plat is a very engaging and amusing speaker, and his session was basically about user experience&#8230; problems. The session highlighted several UX problems, enumerated his law of UX design: «Know thy user because he is not thee», and ended giving 5 suggestions: 1) Add a Virgin to the design team (ie, someone from outside); 2) Break convention when needed (ie, Palm/OneNote/MS Money lack of a Save feature); 3) Don&#8217;t let the edge cases complicate the mainstream case; 4) Instrument carefully (ie, get info from user usage); 5) Always ask: &#8220;<em>Is this individual design decision taking us closer to Just Working? or farther away?</em>&#8221; (ie, are we introducing unnecessary steps or interaction). Having worked in Usability in my previous life, the message convened in the session really resonates with my personal views on this topic. <strong>HOWEVER</strong>, this is an easy session to make: the problems and bad examples in UX abound (I used several when I <em>sold </em>usability services), and Usability is described in a very light way. I totally agree with David Plat&#8217;s principle, and clearly having the developers engage users (or at least be conscious of them and of the difference in usage profiles) is advantageous, but by itself this is not enough. Plus, I&#8217;ve seen a lot of bad decisions being done by marketing (after all, marketing teams design sites/products, not developers &#8212; usually, at least), <strong>NOT</strong> developers, so pointing the fingers at them is not 100% correct. To conclude:&nbsp;a&nbsp;fun and motivational&nbsp;session, if not 100% &#8220;scientific&#8221;. 🙂</p>
<p>After lunch there was another excellent session by Pat Helland, &#8220;<strong>Life beyond distributed transactions: an apostate&#8217;s opinion</strong>&#8220;. Pat&#8217;s basic premise is that you shouldn&#8217;t use distributed transactions. They are fragile, and they break encapsulation (especially in SOA scenarios). The entire session explored what happens when you assume this, and ways to design your systems, also focusing on scalability. Pat published an article at CIDR 2007 which apparently is available online for download on this topic alone, and he also has posts on his blog about this which I highly recommend. This is the kind of session that makes you re-consider the way you design systems. One of the sentences that I always find motivational is his &#8220;accountants don&#8217;t use erasers&#8221;. A lot can be derived from this, especially in the way we use databases.<br />Btw, and I didn&#8217;t know this, apparently Pat was involved in the several implementations of Transactions, both local and distributed (2PC), and the word &#8220;apostate&#8221; means <em>&#8220;someone who used to believe [in distributed txs] but no longer does&#8221;</em>. And when someone in the audience asked him about the MS sales pitch about dist tx&#8217;s a few years back, he just honestly replied: &#8220;<em>You&#8217;re right. I&#8217;m sorry.</em>&#8221; </p>
<p>Next session,&nbsp;Neil Padgett&#8217;s &#8220;<strong>Implementing solutions that leverage MS Sync Framework to provide sync capabilities across devices, services and applications&#8221;</strong>. This session gave some more detail about the Sync technology, and included both a repeat of the contact-sync demo and some code samples (who had the idea of using dark blue keywords over a dark gray slide background?). I learnt that the SF is a set of assemblies, about &#8220;sync endpoints/replicas&#8221; &#8211; the various parts in a sync network &#8211; , and that the providers are used to expose these replicas. Neil also described the concepts of Version (of the information) and Knowledge (a representation of the versions a replica knows about), essential to the architecture.<br />I&#8217;m guessing the team still didn&#8217;t have the time to prime SF&#8217;s presentations, as this was another somewhat poor session. Also Neil didn&#8217;t always speak very clearly, so I ended up leaving early.</p>
<p>The next session I picked was about &#8220;<strong>Microsoft Robotics Studio</strong>&#8220;, by Martin Calsyn and Olivier Bloch. Robotics Studio is very frequently mentioned because of the CCR (Concurrency and Coordination Runtime), which can be used to manage apps w/out robots. Back to the session: Martin did most of the session and demos, which several robots on-stage. The basic idea of the RS is abstracting the capabilities of the robots (which are controlled with Web Services), and once you do this, you can now change the specific physical robot without modifying your code.&nbsp; MRS also includes a visual programming language (VPL).<br />I have been an owner of Lego Mindstorm for some years now, and am still amazed with how easy it is to program robots using Lego&#8217;s visual language. This session is mostly unrelated to most of my everyday work, but it was very interesting nonetheless. It&#8217;s a technology to keep an eye on, even if only for personal curiosity.</p>
<p>And thus ended the second day of the event. At night, there was a &#8220;Influential&#8217;s&#8221; dinner, with several MVP&#8217;s, RD&#8217;s, and conference speakers. Did I mention TechEd was&nbsp;largely&nbsp;about networking? 😉</p>
<p>The post <a href="https://blogit.create.pt/jota/2007/11/08/myteched-2007-day-2/">MyTechEd 2007 &#8211; Day 2</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/jota/2007/11/08/myteched-2007-day-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MyTechEd 2007 &#8211; Day 1</title>
		<link>https://blogit.create.pt/jota/2007/11/08/myteched-2007-day-1/</link>
					<comments>https://blogit.create.pt/jota/2007/11/08/myteched-2007-day-1/#respond</comments>
		
		<dc:creator><![CDATA[Jota]]></dc:creator>
		<pubDate>Thu, 08 Nov 2007 07:56:30 +0000</pubDate>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Arquitectura]]></category>
		<category><![CDATA[MsdnArquitecturaPT]]></category>
		<category><![CDATA[Posts in English]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/joaomartins/?p=1561</guid>

					<description><![CDATA[<p>The event officially opened with Soma&#8217;s Keynote, &#8220;Building great apps&#8221;. This was an overview session, as was to be expected, with some announcements: VS2008/.Net 3.5 will RTM before the end of the month (Nov07). Also announced were the MS Synchronization Framework and&#160;P&#38;P&#8217;s &#8220;S+S Blueprints&#8221;,&#160;both of which&#160;sounded interesting, and a &#8220;Popfly explorer&#8221;.&#160;The session included a few [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/jota/2007/11/08/myteched-2007-day-1/">MyTechEd 2007 &#8211; Day 1</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The event officially opened with Soma&#8217;s Keynote, <strong>&#8220;Building great apps&#8221;</strong>. This was an overview session, as was to be expected, with some announcements: VS2008/.Net 3.5 will RTM before the end of the month (Nov07). Also announced were the MS Synchronization Framework and&nbsp;P&amp;P&#8217;s &#8220;S+S Blueprints&#8221;,&nbsp;both of which&nbsp;sounded interesting, and a &#8220;Popfly explorer&#8221;.&nbsp;The session included a few very nice demos, including one of using Visual Studio (no open to third-parties) to develop World Of&nbsp;Warcraft Add-Ins.</p>
<p>After this I went to Pat Helland&#8217;s &#8220;<strong>Metropolis: Interchangeability of Applications</strong>&#8220;. This was the first of a series of sessions Pat is doing, and it consisted of a study of how interchangeability evolved in the physical and industrial world, with parts replacement, assemblage locations, etc., and what we can learn in IT from this evolution, and apply it to the services-enabled world. We frequently read that, in the SOA world, if a service is not adequate, you can simply replace it with another one with the same interface. Well, truth is, I&#8217;ve never seen this happening in the real world. And even if the interface/contract is the same, are the semantics the same? So this is the kind of issue Pat discussed. It was a very thought-provoking and interesting session.</p>
<p>The next session was Stephen Forte&#8217;s &#8220;<strong>Database Design Patterns</strong>&#8220;, which identified some interesting database patterns. The most interesting were the Slowly Changing Dimension (SCD) and the horizontal/vertical partitionings. The SCD basically consists of creating a replica of your business database, but optimized for reporting or a given type of queries. The replicas are typically created using some ETL mechanism like SQL Server Integration Services/DTS. This allows you to alleviate load from your original, normalized, business database. I&#8217;m guessing this technique is not as frequently used as it should, especially in high-traffic systems. Forte&#8217;s style is very dynamic, maybe we&#8217;ll have him at the next TechDays. I hear he&#8217;s available at that date and interesting in visiting Lisbon, so perhaps <a href="http://canoas.com/blog">someone</a> will invite him over.</p>
<p>And thus ended the first day of the event. At night, after some time at the welcome reception, there was a &#8220;<em>Connected Systems Influential&#8217;s</em>&#8221; dinner at Las Ramblas. Did I mention TechEd was largely about networking? 😉</p>
<p>The post <a href="https://blogit.create.pt/jota/2007/11/08/myteched-2007-day-1/">MyTechEd 2007 &#8211; Day 1</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/jota/2007/11/08/myteched-2007-day-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>techEd 2007 Influencer Community Camps: Development +/vs Architecture Communities</title>
		<link>https://blogit.create.pt/jota/2007/11/05/teched-2007-influencer-community-camps-development-vs-architecture-communities/</link>
					<comments>https://blogit.create.pt/jota/2007/11/05/teched-2007-influencer-community-camps-development-vs-architecture-communities/#respond</comments>
		
		<dc:creator><![CDATA[Jota]]></dc:creator>
		<pubDate>Mon, 05 Nov 2007 16:45:03 +0000</pubDate>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Arquitectura]]></category>
		<category><![CDATA[MsdnArquitecturaPT]]></category>
		<category><![CDATA[Posts in English]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/joaomartins/?p=1581</guid>

					<description><![CDATA[<p>This year Microsoft held a set of pre-conference meetings with &#8220;Community Influencers&#8221; (MVP&#8217;s, etc.). These meetings happened in an interesting open format: The Microsoft Influencers Community Camps will be modeled after Open Space Technology where the attendees define the topics, volunteer or nominate peers to host sessions and then attend a series of sessions that [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/jota/2007/11/05/teched-2007-influencer-community-camps-development-vs-architecture-communities/">techEd 2007 Influencer Community Camps: Development +/vs Architecture Communities</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This year Microsoft held a set of pre-conference meetings with &#8220;Community Influencers&#8221; (MVP&#8217;s, etc.). These meetings happened in an interesting open format:</p>
<blockquote>
<p>The Microsoft Influencers Community Camps will be modeled after <a href="http://www.openspaceworld.org/cgi/wiki.cgi?AboutOpenSpace">Open Space Technology</a> where the attendees define the topics, volunteer or nominate peers to host sessions and then attend a series of sessions that interest them most (quote from <a href="http://communitycamp.editme.com/">here</a>).</p>
</blockquote>
<p>Basically the idea is that the participants define the rules and what is to be discussed. At an initial session, people suggest topics that are placed in an agenda and assigned a room, and whoever wants shows up. And rules are there to be bent (schedule, topic, etc.). A very interesting format which I am looking forward to try out in Portugal. Maybe at the next TechDays 2008? 🙂</p>
<p>I proposed the topic &#8220;<em>Development +/vs Architecture Communities</em>&#8220;, which got some people interested in the idea. The two issues that were mentioned more often were &#8220;<em>Architects are the guys with the tie</em>&#8221; and &#8220;<em>Architects don&#8217;t know the real technology, they are just theory</em>&#8220;. It&#8217;s interesting how &#8211; at least at <a href="http://www.arquitecturadesoftware.org/">GASP</a> &#8211; this <strong>doesn&#8217;t </strong>happen, as the group is very much focused in real experiences. There were some good ideas about how to keep the <em>&#8220;gap&#8221;</em> small, most focused on the real issue: community and social issues. The <a href="http://communitycamp.editme.com/">Wiki</a> will be updated with notes from that session, I&#8217;m told, so keep an eye on that for a complete summary.</p>
<p>The post <a href="https://blogit.create.pt/jota/2007/11/05/teched-2007-influencer-community-camps-development-vs-architecture-communities/">techEd 2007 Influencer Community Camps: Development +/vs Architecture Communities</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/jota/2007/11/05/teched-2007-influencer-community-camps-development-vs-architecture-communities/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>BizTalk 2006 R2 RTM</title>
		<link>https://blogit.create.pt/jota/2007/09/28/biztalk-2006-r2-rtm/</link>
					<comments>https://blogit.create.pt/jota/2007/09/28/biztalk-2006-r2-rtm/#respond</comments>
		
		<dc:creator><![CDATA[Jota]]></dc:creator>
		<pubDate>Fri, 28 Sep 2007 00:25:42 +0000</pubDate>
				<category><![CDATA[BizTalk Server]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[MsdnArquitecturaPT]]></category>
		<category><![CDATA[Posts in English]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/joaomartins/?p=1701</guid>

					<description><![CDATA[<p>Although with very little publicity (!?), BizTalk 2006 R2 RTM&#8217;d 2 weeks ago. This new (evolutionary) version includes a very interesting set of new features, including an RFID server, the ability to expose and invoke services using WCF, EDI support, and lots of other new stuff. Here&#8217;s my first post about this a few months [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/jota/2007/09/28/biztalk-2006-r2-rtm/">BizTalk 2006 R2 RTM</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Although with very little publicity (!?), BizTalk 2006 R2 RTM&#8217;d 2 weeks ago. This new (evolutionary) version includes a very interesting set of new features, including an <a href="http://www.arquitecturadesoftware.org/blogs/joaomartins/archive/2007/07/29/biztalk-rfid-notes.aspx">RFID server</a>, the ability to expose and invoke services using WCF, EDI support, and lots of other new stuff. Here&#8217;s <a href="http://www.arquitecturadesoftware.org/blogs/joaomartins/archive/2007/04/03/biztalk-2006-r2-beta-2-is-out.aspx">my first post about this</a> a few months back, and <a href="http://biztalkhotrod.com/default.aspx">BizTalk HotRod</a> issue 1 has an article detailing the new features.</p>
<p>The evaluation version can be downloaded from <a href="http://technet.microsoft.com/en-us/bb738059.aspx">here</a>. The Developer edition ISO has been posted to MSDN Subscriber downloads yesterday.</p>
<p>I&#8217;m looking forward to try out this version in conjunction with <a href="http://www.arquitecturadesoftware.org/blogs/joaomartins/archive/2007/06/25/transfering-files-with-biztalk-services.aspx">BizTalk Services</a>&#8230;</p>
<p>The post <a href="https://blogit.create.pt/jota/2007/09/28/biztalk-2006-r2-rtm/">BizTalk 2006 R2 RTM</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/jota/2007/09/28/biztalk-2006-r2-rtm/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
