<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.southworks.net/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.southworks.net/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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" version="2.0">

<channel>
	<title>Diego Marcet</title>
	
	<link>http://blogs.southworks.net/dmarcet</link>
	<description />
	<pubDate>Thu, 31 Jul 2008 20:56:33 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.southworks.net/dmarcet" type="application/rss+xml" /><item>
		<title>Working with Composite Application Guidance for WPF</title>
		<link>http://blogs.southworks.net/dmarcet/2008/07/11/working-with-composite-application-guidance-for-wpf/</link>
		<comments>http://blogs.southworks.net/dmarcet/2008/07/11/working-with-composite-application-guidance-for-wpf/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 14:08:25 +0000</pubDate>
		<dc:creator>dmarcet</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Composite Application Guidance for WPF]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/dmarcet/?p=42</guid>
		<description><![CDATA[The last few days I&#8217;ve been working on a sample application (Composite Mail Client) using Composite Application Guidance for WPF.
In this post I&#8217;ll explain the steps I took for understanding the guidance reviewing the assets included with the Composite Application Guidance for WPF package, and a small preview of the sample application I&#8217;m developing.
&#160;
Steps for [...]]]></description>
			<content:encoded><![CDATA[<p>The last few days I&#8217;ve been working on a sample application (<em>Composite Mail Client</em>) using <strong>Composite Application Guidance for WPF</strong>.</p>
<p>In this post I&#8217;ll explain the steps I took for understanding the guidance reviewing the assets included with the Composite Application Guidance for WPF package, and a small preview of the sample application I&#8217;m developing.</p>
<p>&#160;</p>
<h2>Steps for getting familiar with the guidance</h2>
<p>The first step was to read the documentation included with the package, which is very complete and prove to be useful during the whole application development. Even though I had little background working with <a href="http://msdn.microsoft.com/en-us/library/ms754130.aspx" target="_blank">WPF</a> and <a href="http://www.codeplex.com/unity" target="_blank">Unity Application Block</a> (the container used for dependency injection) the induction was quite natural and after the first module, the other modules were very easily created.</p>
<p><a href="http://blogs.southworks.net/dmarcet/files/2008/07/image.png"><img height="248" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/07/image-thumb.png" width="203" border="0" /></a>     <br /><em>Figure 1: Documentation tree</em></p>
<p>&#160;</p>
<p>Once I understood the architecture and the HOW-TOs&#160; for the basic tasks I reviewed the Quickstarts, these sample applications show specific tasks implementations and are very useful as a reference when addressing particular tasks (dynamic module discovery, interaction of different views in a decoupled way, etc.).</p>
<p><a href="http://blogs.southworks.net/dmarcet/files/2008/07/image1.png"><img height="184" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/07/image-thumb1.png" width="244" border="0" /></a>     <br /><em>Figure 2: UI Composition Quickstart sample application</em></p>
<p>&#160;</p>
<p>Finally, for a complete features review, I checked out the <strong>Stock Trader Reference Implementation </strong>included in the package. In this solution you can get a full sample of the capability of the Composite Application Guidance for WPF, and turned to be an useful guidance while I was developing my sample application.</p>
<p><a href="http://blogs.southworks.net/dmarcet/files/2008/07/image2.png"><img height="152" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/07/image-thumb2.png" width="244" border="0" /></a>     <br /><em>Figure 3: Stock Trader RI</em></p>
<p>&#160;</p>
<h2>Developing the sample application</h2>
<p>My app is still under development, but I&#8217;ll give you a quick review of it.</p>
<h4>The scenario</h4>
<p>The application represents a basic e-mail client, where you have 3 panels: Contact Groups List, Contacts List and Mail List; there is also a second window where you can read the e-mails (by double-clicking on the mail at the Mail List panel).</p>
<h4>Implementation</h4>
<p>For implementing the application, each of the 3 panels is represented as a module, with a Service that retrieves data from XML, a View and a Presentation Model. For the Mail List there is an extra View for the mail reader window with a Presenter class.</p>
<p>And ff course it&#8217;s being fully TDDed! <img src='http://blogs.southworks.net/dmarcet/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><a href="http://blogs.southworks.net/dmarcet/files/2008/07/image4.png"><img height="269" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/07/image-thumb4.png" width="350" border="0" /></a>     <br /><em>Figure 4: Composite Mail Client layout on beta version</em></p>
<p>&#160;</p>
<p><a href="http://blogs.southworks.net/dmarcet/files/2008/07/image3.png"><img height="244" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/07/image-thumb3.png" width="215" border="0" /></a>     <br /><em>Figure 5: Composite Mail Client solution&#8217;s structure</em></p>
<p>&#160;</p>
<p>I hope I&#8217;ll be able to finish developing it soon so the moment I&#8217;ve done with it I&#8217;ll post the code&#8230;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>You can get the guidance from: <a title="http://www.codeplex.com/CompositeWPF" href="http://www.codeplex.com/CompositeWPF">http://www.codeplex.com/CompositeWPF</a>. Enjoy it!</p>
<p> <a href="http://technorati.com/claim/gspszkkiwg" rel="me">Technorati Profile</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.southworks.net/dmarcet/2008/07/11/working-with-composite-application-guidance-for-wpf/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Introduction to WCF</title>
		<link>http://blogs.southworks.net/dmarcet/2008/06/26/introduction-to-wcf/</link>
		<comments>http://blogs.southworks.net/dmarcet/2008/06/26/introduction-to-wcf/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 04:07:48 +0000</pubDate>
		<dc:creator>dmarcet</dc:creator>
		
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/dmarcet/2008/06/26/introduction-to-wcf/</guid>
		<description><![CDATA[As a first approach to Windows Communication Foundation, I started reading the book &#34;Microsoft Windows Communication Foundation Step by Step&#34; by John Sharp.
On the first section of the post I&#8217;ll talk a little about the fundamental concepts of WCF and SOA; on later sections I&#8217;ll explain the steps that must be performed to define a [...]]]></description>
			<content:encoded><![CDATA[<p>As a first approach to Windows Communication Foundation, I started reading the book <a href="http://www.microsoft.com/mspress/books/10022.aspx" target="_blank">&quot;Microsoft Windows Communication Foundation Step by Step&quot;</a> by John Sharp.</p>
<p>On the first section of the post I&#8217;ll talk a little about the fundamental concepts of WCF and SOA; on later sections I&#8217;ll explain the steps that must be performed to define a simple WCF service and host it in IIS will be described in the following sections. And on a future post I&#8217;ll be writing a little about hosting the service on a different host other than IIS.</p>
<p>&#160;</p>
<h2>Fundamentals of WCF and SOA</h2>
<h3>Endpoints</h3>
<p>A host application makes a service available to client applications by providing an endpoint to which clients can send requests. An endpoint contains three pieces of information commonly known as <strong>ABC</strong>: <strong>Address</strong>, <strong>Binding </strong>and <strong>Contract</strong>.</p>
</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <a href="http://blogs.southworks.net/dmarcet/files/2008/06/image.png"><img height="183" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/06/image-thumb.png" width="181" border="0" /></a>
</p>
<ul>
<li>Endpoint Address:      <br />The form of a service address depends on several factors, including the transport protocol being used. Different transport mechanisms use different address spaces. If you build your own custom host application, you can use a different transport mechanism, and you must specify an address that is appropriate to your chosen transport mechanism. </li>
</ul>
<ul>
<li>Binding:      <br />The binding for a service describes how a client can connect to the service and the format of the data expected by the service. The presence of each binding element describes part of the how of communicating with the Endpoint since for each binding element a channel will be created on the channel stack (see the next section <em><strong>Processing a Client Request</strong></em>) </li>
</ul>
<ul>
<li>Contract Description:      <br />A WCF service contract is an interface stored in a .NET Framework assembly and annotated with the <strong><em>[ServiceContract]</em></strong> attribute. The service contract describes the operations implemented by the service by tagging them with the <em><strong>[OperationContract]</strong></em> attribute. Any data passed to and from operations must be serializable. </li>
</ul>
<h3>Processing a Client Request</h3>
<p>When a request arrives to the WCF Service&#8217;s host, it goes through a <strong>channel stack</strong> where each element is a channel that receives the message, transforms it in some way (for example decodes it if it&#8217;s on binary format, decrypts it if it&#8217;s using Asymmetric encryption, etc.), and passes the output as input to the next channel on the stack. </p>
<p>Although there is no order on the channel stack, a <strong>transport channel</strong> will always be at the bottom of the stack and will be the first channel to receive data from the network. Also an <strong>encoding</strong> <strong>channel</strong> must be the first element of the stack. These two channels are the only mandatory, all the rest are optional.</p>
<p>&#160;</p>
<p><a href="http://blogs.southworks.net/dmarcet/files/2008/06/image1.png"><img height="236" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/06/image-thumb1.png" width="454" border="0" /></a> </p>
<h3>SOA&#8217;s 4 Tenets</h3>
<p align="left">An <a href="http://en.wikipedia.org/wiki/Service-oriented_architecture" target="_blank">Service-Oriented Architecture</a> consists of a set of resources on a network that are made available as independent services, and that can be accessed without requiring any knowledge of how they are implemented. To successfully design and implement an SOA, you should be aware of what has become known as the &#8220;Four Tenets of Service Orientation&#8221;:</p>
<ul>
<li>Boundaries are explicit      <br />Applications and services communicate by sending messages to each other:
<ul>
<li>You should not make any assumptions about how a service processes a request or how a client application handles any response to a request.</li>
<li>Because of the associated cost in terms of communications when sending and receiving messages. You should design the operations that services implement with this in mind, and ensure that clients call services only when necessary.</li>
<li>The services must be easy to consume, for that the client perspective must be taken into account.</li>
<li>Keep the service&#8217;s scope as small as possible because the more operations the service expose, the more difficult will be to use it by clients.</li>
<li>Never expose details of internal implementation.</li>
</ul>
</li>
<li>Services are autonomous:      <br />If you are building an application based on services, you might not have control over every service you are using.
<ul>
<li>Design the service decoupled of the platform in which will be deployed and will be consumed.</li>
<li>Contracts must be designed considering that once deployed they can&#8217;t be changed.</li>
<li>Adopt a pessimistic position: for providers, there will be clients who will make a bad use of the service; for clients, the services will fail or won&#8217;t be available.</li>
</ul>
</li>
<li>Services share schema and contract, not class:      <br />Services publish information about the operations that they implement and the structure of the data that they expect to send and receive. Clients use this information when communicating with the service.
<ul>
<li>The contract of the service must be maintained stable, if it&#8217;s updated it should maintain compatibility with existing clients by continuing to implement existing contracts and send messages that conform to existing schemas.</li>
<li>Contracts must be clear and explicit to avoid bad interpretations.</li>
<li>Keep the internal implementation hidden.</li>
<li>Version services when changes to the service&#8217;s contract are unavoidable. This approach minimizes breakage of existing consumer implementations.</li>
</ul>
</li>
<li>Service compatibility is based upon policy:      <br />The schemas and contracts exposed by a service define the &#8220;shape&#8221; of the service but not the nonfunctional requirements that a client attempting to access the service must fulfill. These nonfunctional requirements might change over time and so should be decoupled from the service&#8217;s and client&#8217;s implementation.&#160; You should design services so that their policy requirements are independent of any implementation, and you should enforce clients to abide by any policies required by the service. Additionally, all services and client applications must agree on how to specify this policy information (typically by using some sort of configuration file). This is the purpose of the WS-Policy framework, published by the World Wide Web Consortium, and widely adopted by Web service developers. </li>
</ul>
<p>&#160;</p>
<h2>Writing your first WCF Service</h2>
<h3>Define the contracts</h3>
<p>As WCF adopts a <a href="http://msdn.microsoft.com/en-us/magazine/cc163850.aspx" target="_blank">contract-first</a> the first step to create a service is to define the contract, which is done by defining an <strong>Interface</strong>. This interface has the only peculiarity that must have a <strong>ServiceContract</strong> attribute to mark it as a service contract, besides each of the methods that wants to be exposed must have a <strong>OperationContract</strong> attribute to expose it in the service. </p>
<p><a href="http://blogs.southworks.net/dmarcet/files/2008/06/image2.png"><img height="216" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/06/image-thumb2.png" width="454" border="0" /></a> </p>
<p>The parameters and values returned can be of any kind as long as WCF can serialize and deserialize them, this includes the native types (int, bool, string, etc), collections (including generics) and Datasets.    <br />To pass your own classes as parameters and return values, you can also define a data contract. To do this add the <strong>DataContract</strong> attribute to the class and the <strong>DataMember</strong> attribute to each of the properties that you want to expose of this class, these can be of any kind that WCF is able to serialize/deserialize to XML including other classes tagged with DataContract.</p>
<p>By doing this you&#8217;ll be marking the class as serializable and WCF will handle the persistence to XML.</p>
<p><a href="http://blogs.southworks.net/dmarcet/files/2008/06/image3.png"><img height="212" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/06/image-thumb3.png" width="454" border="0" /></a> </p>
<h3>Implement the service</h3>
<p>Once you have defined the contract you have to define the class that will implement the contract (interface). Remember that even if you declare public members in this class, if they are not defined in the contract they won&#8217;t be visible for the users of the service.</p>
<p>&#160;<a href="http://blogs.southworks.net/dmarcet/files/2008/06/image4.png"><img height="40" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/06/image-thumb4.png" width="316" border="0" /></a> </p>
<h3>Configure the service</h3>
<p>Now that you have your service defined it&#8217;s time to configure the service, this will depend on how you will be deploying it. For this example I&#8217;ll be explaining how would you do it on an IIS deploy.</p>
<p>The first step is to define an <strong>.svc</strong> file that will represent the service as a special content file to IIS (in a similar way as ASMX pages are represented inside of an IIS application as .asmx files). The name of this file must be exactly the same as the service binary. Inside this file the WCF-specific processing directive <strong>@ServiceHost</strong> must be contained, that will allow the WCF hosting infrastructure to activate hosted services in response to incoming messages. For this example the content of the file would be the following:</p>
<p><a href="http://blogs.southworks.net/dmarcet/files/2008/06/image5.png"><img height="16" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/06/image-thumb5.png" width="404" border="0" /></a></p>
<p>The last step is to add the service configuration to the .config file (web.config in this case since it&#8217;ll be hosted on IIS, app.config otherwise). </p>
<p>&#160;<a href="http://blogs.southworks.net/dmarcet/files/2008/06/image6.png"><img height="145" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/06/image-thumb6.png" width="454" border="0" /></a> </p>
</p>
<p>The <strong>&lt;serviceModel&gt;</strong> section of the Web.config file contains the configuration information for a WCF Web service. The <strong>&lt;services&gt;</strong> section contains the details for each service implemented. The name attribute of the &lt;service&gt; element specifies the namespace and class that implement the service. The <strong>&lt;endpoint&gt;</strong> element provides the details of the service that client applications require in order to communicate with the service. An endpoint comprises three pieces of information: an address, a binding, and a contract.</p>
<ul>
<li>The address is the location that the application hosting the service uses to advertise the service. In the case of IIS, the address element actually is ignored as IIS will use a URL containing the name of the virtual directory holding the service and the name of the .svc file as the endpoint. </li>
<li>The binding element specifies items such as the transport mechanism used to access the Web service, and the protocol to use, amongst other items. For a complete list of the binding elements see <a href="http://msdn.microsoft.com/en-us/library/ms733033.aspx" target="_blank">&quot;Windows Communication Foundation Bindings&quot;</a>. </li>
<li>Finally, the contract element indicates the contract that the service implements. </li>
</ul>
<p>The last action on the Project is changing the Output path to \bin (instead of \bin\Debug or \bin\Release). This has to be done because IIS expects the assemblies containing the code for Web services and Web applications to be located in the bin folder of the Web site.    <br />To do this right-click on the WCF service project and select the <strong>Properties</strong> option, then select the <strong>Build </strong>tab and change the <strong>Output path</strong> to <em>\bin</em>.</p>
<p><a href="http://blogs.southworks.net/dmarcet/files/2008/06/image7.png"><img height="343" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/06/image-thumb7.png" width="454" border="0" /></a>&#160; </p>
<p>Now it&#8217;s time to create the web application, I&#8217;ll show you how to do it on IIS 7.0 (included with Windows Vista and Server 2008), on previous versions of IIS the process is very similar but you&#8217;ll have to use <strong>Virtual Directory </strong>instead of <strong>Application</strong>.</p>
<p>On the IIS Manager, right-click on the <strong>Default Web Site</strong> node and select the <strong>Add Application&#8230; </strong>option. </p>
<p><a href="http://blogs.southworks.net/dmarcet/files/2008/06/image8.png"><img height="328" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/06/image-thumb8.png" width="454" border="0" /></a> </p>
<p>For the <strong>Alias</strong> select any name you like, this will be part of the URL how you&#8217;ll invoke the service, to be consistent I used ProductsService. For the <strong>Physical Path </strong>select the ProductsService&#8217;s project folder.</p>
<p>And that&#8217;s it! You have a fully functional WCF Service hosted on IIS <img src='http://blogs.southworks.net/dmarcet/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>To check if it&#8217;s running you can browse <strong><em>http://localhost/&lt;alias selected&gt;/ProductsService.svc</em></strong> and a page like the following should show up on the browser.</p>
<p><a href="http://blogs.southworks.net/dmarcet/files/2008/06/image9.png"><img height="261" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/06/image-thumb9.png" width="454" border="0" /></a> </p>
<p>&#160;</p>
<p>&#160;</p>
<h2>Final thoughts</h2>
<p>Windows Communication Foundation is a very complex topic and I&#8217;m sure I&#8217;ll continue studying it for a long time so expect more posts about it in the future! </p>
<p>Besides the mentioned book, I got recommended <a href="http://www.microsoft.com/MSPress/books/9610.aspx" target="_blank">&quot;Inside Windows Communication Foundation&quot;</a> as a continuation book for this one since it covers lower level subjects on WCF.</p>
<p>&#160;</p>
<h2>Lessons learnt</h2>
<ul>
<li>When hosting a WCF service in IIS, you must have the .svc file extension handled. If you installed IIS after installing WCF as I did, you&#8217;ll have to configure the IIS in order to have your WCF services hosted on IIS working. To accomplish this you have two options, you can do it through command line or through the windows UI (only tested on Windows Vista Business).      <br />For the first option you can check the steps at <a href="http://msdn.microsoft.com/en-us/library/ms752241.aspx" target="_blank">&quot;Service (.svc) File Type Not Recognized&quot;</a>, for the second option go to <em>Control Panel-&gt;Programs and Features </em>and select <strong>Turn windows features on or off</strong>, there check the options under the <strong>Microsoft .NET Framework 3.0</strong>.
<p><a href="http://blogs.southworks.net/dmarcet/files/2008/06/image10.png"><img height="343" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/06/image-thumb10.png" width="454" border="0" /></a> </p>
</li>
<li>
<p>Another problem I had was when trying to attach the AdventureWorks database to my SQL Server 2005 Express Edition. Since it was installed with Server authentication set to <strong>Windows Authentication mode</strong>, and the only user with administrator permissions was the &quot;sa&quot; user which was disabled because its login uses the SQL Server Authentication mode; I couldn&#8217;t execute any administrative action, including database attaching. To solve this problem:</p>
<ol>
<li>
<p>Run the MS SQL Server Management Studio as an administrator.</p>
<p><a href="http://blogs.southworks.net/dmarcet/files/2008/06/image11.png"><img height="244" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/06/image-thumb11.png" width="142" border="0" /></a> </p>
</li>
<li>
<p>Go to Security-&gt;Logins, right-click on your Windows user and select properties.</p>
</li>
<li>
<p>On the left menu (Select a page), select <strong>Server Roles</strong>.</p>
</li>
<li>
<p>Finally check the <strong>sysadmin</strong> and <strong>dbcreator </strong>server roles and that&#8217;s it, you can now run the Management Studio app normally and log-in with your Windows user and you will have permissions on system databases to create and attach new databases.</p>
<p><a href="http://blogs.southworks.net/dmarcet/files/2008/06/image12.png"><img height="332" alt="image" src="http://blogs.southworks.net/dmarcet/files/2008/06/image-thumb12.png" width="454" border="0" /></a> </p>
</li>
</ol>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.southworks.net/dmarcet/2008/06/26/introduction-to-wcf/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The seven habits of highly effective people</title>
		<link>http://blogs.southworks.net/dmarcet/2008/06/04/the-seven-habits-of-highly-effective-people/</link>
		<comments>http://blogs.southworks.net/dmarcet/2008/06/04/the-seven-habits-of-highly-effective-people/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 15:30:00 +0000</pubDate>
		<dc:creator>dmarcet</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">/blogs/dmarcet/archive/2008/06/04/The-seven-habits-of-highly-effective-people.aspx</guid>
		<description><![CDATA[
I won&#8217;t write a summary post of this book because I think I&#8217;d miss the whole point. Instead, I&#8217;ll enumerate the habits giving a brief explanation and my thoughts about it.
The richness of the book I think it&#8217;s in reading and thinking at each step how it applies to you, in fact, I think it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.southworks.net/dmarcet/files/2008/06/51wqecvjg4l__ss500_.jpg"><img class="alignnone size-medium wp-image-7" src="http://blogs.southworks.net/dmarcet/files/2008/06/51wqecvjg4l__ss500_.jpg" alt="" width="300" height="300" /></a></p>
<p>I won&#8217;t write a summary post of this book because I think I&#8217;d miss the whole point. Instead, I&#8217;ll enumerate the habits giving a brief explanation and my thoughts about it.</p>
<p>The richness of the book I think it&#8217;s in reading and thinking at each step how it applies to you, in fact, I think it&#8217;s impossible to no &#8220;<em>project</em>&#8221; yourself into what it&#8217;s said on the book, showing you your strengths and weaknesses.</p>
<p>The most important <em>lesson learnt</em> I think I got from the book is that you have control on what happens around you. Of course there are things you can&#8217;t change, but most of what affects you is inside your <strong>Circle of Influence</strong>. That means you have the power to change the things that make you unhappy, even if you think it&#8217;s somebody else&#8217;s fault.</p>
<p>Briefly, the seven habits are:</p>
<h2>Be proactive</h2>
<p>Proactivity means more than merely taking initiative. It means that as human beings, we are responsible for our own lives. Our behavior is a function of our decisions, not our conditions. We can subordinate feelings to values. We have the initiative and the responsibility to make things happen. Look at the word responsibility &#8212; &#8220;response-ability&#8221; &#8212; the ability to choose your response.</p>
<p>This is I think the habit that impacted the most on me, when I reviewed situations in my daily life, I recognized that things that I felt where out of my control, actually could be affected by actions and decisions I made. As the author says exist &#8220;<em>a gap between stimulus and response</em>&#8220;, and you can act on that gap to make your life better.</p>
<h2>Begin with the end in mind</h2>
<p>Talks about writing your mission, your end in each role you have in life (as professional, as father, as son, etc.) that must focus on what you want to be and to do, and on the values or principles upon which being and doing are based.</p>
<p>Once you have enunciated your mission, you have to always keep it in mind when taking decisions and in every aspect of your life.</p>
<p>I think once a person acquires this habit, he can take decisions that act accordingly to a purpose and to have a goal in mind is always a beacon to which direct our efforts.</p>
<h2>Put first things first</h2>
<p>This habit is about organize and execute according to priorities, it&#8217;s about acting on <strong>Important things that are not Urgent</strong>: building relationships, acknowledge new opportunities, planification, etc.</p>
<p>To focus on things according to priorities organize our efforts and makes more effective the use of our energy.</p>
<h2>Think win-win</h2>
<p>Is centered on conducting positive negotiations, looking for an agreement that satisfies all the parts involved and that strengthen the relationship.</p>
<p>Negotiation is a subject I really like, I think most of the relationships (commercial and affective) would seriously improve if we always tried to use the win-win paradigm.</p>
<h2>Seek first to understand</h2>
<p>This habit is about empathy, is about understanding in every relationship what&#8217;s happening to the other person to improve the effectiveness of the communication.</p>
<p>Again, in every relationship it&#8217;s important to understand how the other person/s feel about a subject and why, one of the most important step in relationships in general, and negotiations in particular, is to understand the other part in order to <em>talk the same language.</em></p>
<h2>Synergize</h2>
<p>This habit focuses on working together as a team, to make the whole more than the sum of the parts.</p>
<p>From all my experiences in team work I&#8217;d learned that the only way to get to the finish line in a productive and effectively way, it&#8217;s imperative to trust in the other team members, helping each other and delegating responsibilities, in a manner to act as a whole; so I think this habit is one of the most important.</p>
<h2>Sharpen the saw</h2>
<p>Finally, this habit concentrates on &#8220;<em>&#8230; preserving and enhancing the greatest asset you have &#8212; you. It&#8217;s renewing the four dimensions of your nature &#8212; physical, spiritual, mental, and social/emotional.</em>&#8221;</p>
<p>It may sound selfish, but I agree that it&#8217;s important to give some time for oneself, because as said so many times in the book the change is made from <strong>inside-out</strong>, so being at peace with oneself is the first step to being at peace with the rest of the people.</p>
<p>While reading this book I found I&#8217;d several concepts from texts I&#8217;d read for some courses on university. So here are some books I know that you might find interesting:</p>
<p>- <a href="http://www.amazon.com/Aquarian-Conspiracy-Marilyn-Ferguson/dp/0874774586/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1212588685&amp;sr=1-2"><em>The Aquarian Conspiracy</em></a>, Marilyn Ferguson. Talks about changing paradigms and several other subject covered in &#8220;<em>7 Habits&#8230;</em>&#8221;</p>
<p><em><a href="http://www.amazon.com/Getting-Yes-Negotiating-Agreement-Without/dp/0395631246/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1212588956&amp;sr=1-1">- Getting to Yes: Negotiating Agreement Without Giving In</a></em>, Roger Fisher, William Ury and Bruce Patton. Negotiation.</p>
<p>- <a href="http://www.amazon.com/Getting-Past-No-William-Ury/dp/0553371312/ref=pd_bxgy_b_img_b"><em>Getting Past No</em></a>, William Ury. Negotiation.</p>
<p>- <span><em><a href="http://www.amazon.com/Irrationality-Enemy-Within-Stuart-Sutherland/dp/0094712204/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1212593528&amp;sr=1-1">Irrationality : The Enemy Within</a>,</em> Stuart Sutherland. Taking decisions.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.southworks.net/dmarcet/2008/06/04/the-seven-habits-of-highly-effective-people/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Impresions on Scrum</title>
		<link>http://blogs.southworks.net/dmarcet/2008/05/29/first-impresions-on-scrum/</link>
		<comments>http://blogs.southworks.net/dmarcet/2008/05/29/first-impresions-on-scrum/#comments</comments>
		<pubDate>Thu, 29 May 2008 12:44:00 +0000</pubDate>
		<dc:creator>dmarcet</dc:creator>
		
		<category><![CDATA[SCRUM]]></category>

		<guid isPermaLink="false">/blogs/dmarcet/archive/2008/05/29/First-impresions-on-Scrum.aspx</guid>
		<description><![CDATA[For my second post I&#8217;d like to write a little about Scrum. Since it&#8217;s such a common topic I&#8217;ll only give the basics of the method and some impressions I have of this method compared with previous work experiences.
The Scrum Method
Scrum is a &#8220;simple set of practices and rules that encompasses the transparency, inspection and [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin: 0in 0in 10pt"><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">For my second post I&#8217;d like to write a little about Scrum. Since it&#8217;s such a common topic I&#8217;ll only give the basics of the method and some impressions I have of this method compared with previous work experiences.</span></p>
<h1 style="margin: 24pt 0in 0pt"><span style="font-size: large"><span style="color: #365f91"><span style="font-family: Cambria"><span>The Scrum Method</span></span></span></span></h1>
<p class="MsoNormal" style="margin: 12pt 0in 10pt"><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">Scrum is a &#8220;</span><em><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">simple set of practices and rules that encompasses the transparency, inspection and adaptation requirements inherent in empirical process control</span></em><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">&#8221; [<a href="http://www.scrumalliance.org/resource_download/227" target="_blank"><span style="color: blue">What Is Scrum?, Ken Shwaber</span></a>].</span></p>
<ul type="disc">
<li class="MsoNormal"><strong><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">Transparency:</span></strong><span style="font-size: 10pt;font-family: 'Arial','sans-serif'"> means that those who control the process must have visibility of the aspects that affect the outcome of the process.</span></li>
<li class="MsoNormal"><strong><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">Inspection:</span></strong><span style="font-size: 10pt;font-family: 'Arial','sans-serif'"> means that unacceptable variances in the process must be detected by inspecting it with enough frequency.</span></li>
<li class="MsoNormal"><strong><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">Adaptation:</span></strong><span style="font-size: 10pt;font-family: 'Arial','sans-serif'"> if the inspector determines that one or more aspects of the process are outside limits and that the result will be unacceptable, he must adjust the process as quickly as possible to minimize further deviation.</span></li>
</ul>
<p class="MsoNormal" style="margin: 0in 0in 0pt"><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">Scrums employs an iterative, incremental process where each iteration, called </span><strong><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">Sprint</span></strong><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">, is planned at a meeting of the </span><strong><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">Team</span></strong><span style="font-size: 10pt;font-family: 'Arial','sans-serif'"> with the </span><strong><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">Product Owner</span></strong><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">; during the Sprint (which usually has a 1 month length), smaller daily-based iterations occur, where the Teams work to develop the requirements into the product that will be delivered at the end of the Sprint. At the start of every day the Team has a short meeting where three questions must be answered by all of the Team’s members:</span></p>
<p class="MsoListParagraphCxSpFirst" style="margin: 12pt 0in 0pt 0.5in"><span style="font-size: 10pt;font-family: 'Arial','sans-serif'"><span>-<span style="font-style: normal;font-variant: normal;font-weight: normal;font-size: 7pt;font-family: 'Times New Roman'"> </span></span></span><em><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">What have you done on this project since the last Daily Scrum meeting?</span></em></p>
<p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in"><span style="font-size: 10pt;font-family: 'Arial','sans-serif'"><span>-<span style="font-style: normal;font-variant: normal;font-weight: normal;font-size: 7pt;font-family: 'Times New Roman'"> </span></span></span><em><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">What do you plan on doing on this project between now and the next Daily Scrum meeting?</span></em></p>
<p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0pt 0.5in"><span style="font-size: 10pt;font-family: 'Arial','sans-serif'"><span>-<span style="font-style: normal;font-variant: normal;font-weight: normal;font-size: 7pt;font-family: 'Times New Roman'"> </span></span></span><em><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">What impediments are in the way of you meeting your commitments toward this Sprint and this project?</span></em></p>
<p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0pt 0.5in"><em></em></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt"><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">These questions are done to synchronize the work of all team members daily and to schedule any meetings that the Team needs to forward its progress. The team members are <strong>inspecting</strong> each other work and making <strong>adaptations</strong> to optimize their chance of meeting their commitments.</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt"><span style="font-size: 10pt;font-family: 'Arial','sans-serif'">At the end of the Sprint, a version with the features developed during the iteration is released; this must be a version with value for the customer, who should be able to put in production the application if he chose to.</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt"><a href="http://blogs.southworks.net/dmarcet/files/2008/06/scrum_process_svg.png"><img class="alignnone size-full wp-image-8" src="http://blogs.southworks.net/dmarcet/files/2008/06/scrum_process_svg.png" alt="" width="400" height="200" /></a></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt">
<p class="MsoNormal" style="margin: 0in 0in 10pt 1.25in">
<p><span style="font-family: Cambria;color: #365f91;font-size: large">First Impressions </span></p>
<p class="MsoNormal" style="margin: 12pt 0in 10pt"><span style="font-family: Calibri;font-size: small">Having always work in the past with traditional development processes (or no processes at all), the Scrum method seems an interesting approach that I’m anxious to try.</span></p>
<p class="MsoNormal" style="margin: 12pt 0in 10pt"><span style="font-size: small"><span style="font-family: Calibri"><span> </span>The first thing that caught my attention is the commitment it’s expected by the Team Members and the freedom it gives to plan how you will accomplish these commitments. Even as other methods and processes dictate that commitment has to be given by Team Members on kick-off meetings, estimation of work, etc. With Scrum you are “exposed” to other team members and the client in a way that you don’t have any other option than do what you said you would do or raise an alarm so everybody is aware of the problems you have to accomplish those commitments.</span></span></p>
<p class="MsoNormal" style="margin: 12pt 0in 10pt"><span style="font-family: Calibri;font-size: small">Another thing that I really want to try is how changes on requirements are handled. This has always been a problem on previous project I’d worked in, the changes on the requirements made by customers have always been badly managed (or not managed at all) and for a developer that many times means a “tied with wire” solution (specially on the projects where time is a critical resource and you have only a few hours to come up with a solution to a big problem). But with such a dynamic approach I think changes on requirements can be handled in a proper way and are no longer a <em>developer suffering </em>issue.</span></p>
<p class="MsoNormal" style="margin: 12pt 0in 10pt"><span style="font-family: Calibri;font-size: small">Finally I hope that such a collaborative process will allow me to learn a lot from other team members, and will give me a professional growth as I’d never experienced before.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.southworks.net/dmarcet/2008/05/29/first-impresions-on-scrum/feed/</wfw:commentRss>
		</item>
		<item>
		<title>First week @ Southworks</title>
		<link>http://blogs.southworks.net/dmarcet/2008/05/28/first-week-southworks/</link>
		<comments>http://blogs.southworks.net/dmarcet/2008/05/28/first-week-southworks/#comments</comments>
		<pubDate>Wed, 28 May 2008 13:46:00 +0000</pubDate>
		<dc:creator>dmarcet</dc:creator>
		
		<category><![CDATA[Introduction to Southworks]]></category>

		<guid isPermaLink="false">/blogs/dmarcet/archive/2008/05/28/First-week-_4000_-Southworks.aspx</guid>
		<description><![CDATA[On my fourth day at the company I decided to write my first entry so here I am&#8230; I suppose this post will be very similar to the ones written by other Southies on their first days but I&#39;ll try to give my own first impressions .
The first thing that caught my attention this first [...]]]></description>
			<content:encoded><![CDATA[<p>On my fourth day at the company I decided to write my first entry so here I am&#8230; I suppose this post will be very similar to the ones written by other Southies on their first days but I&#39;ll try to give my own first impressions .</p>
<p>The first thing that caught my attention this first days is how much importance the company gives to communicate its philosophy of work. In all my previous jobs I always had a day or two for reading a couple of documents about the company and the project I would be working on, and immediately after that I&#39;d start coding. Here it&#39;s the opposite thing, first you have to focus on understanding the philosophy the company has and how they expect you to behave (like being proactive, collaborative with teammates, and so on), and for this it&#39;s particularly important to read and understand the book <a href="http://www.quickmba.com/mgmt/7hab/" target="_blank">&#8220;The Seven Habits of Highly Effective People&#8221;</a> by Stephen Covey, which I&#39;m currently reading and will be posting an entry on it soon. Then you move your attention to a more &#8220;implementative&#8221; view of the work, by researching the <a href="http://en.wikipedia.org/wiki/Scrum_%28development%29" title="Scrum" target="_blank">Scrum</a> method and <a href="http://en.wikipedia.org/wiki/Test-driven_development" title="Test-Driven Development" target="_blank">Test-Driven Development (TDD)</a> and how they are used in the company, specially in my case since I haven&#39;t work with either in the past. And only after you have aquired all that knowledge, you start focusing on technology matters, but since I haven&#39;t reached that milestone I&#39;ll leave the details for a future post [:)].</p>
<p>I hope that either if you are a new Southie as I am, or if you are looking to get a picture on how this company works and how it feels to work in it, this post helps you understand that.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.southworks.net/dmarcet/2008/05/28/first-week-southworks/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
