<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>altnet &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/altnet/</link>
	<description>Feed of posts on WordPress.com tagged "altnet"</description>
	<pubDate>Mon, 28 Dec 2009 21:17:52 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Code Sparring: a fun way to practice programming]]></title>
<link>http://microserf.wordpress.com/2009/12/14/code-sparring-a-fun-way-to-practice-programming/</link>
<pubDate>Mon, 14 Dec 2009 16:22:25 +0000</pubDate>
<dc:creator>microserf</dc:creator>
<guid>http://microserf.wordpress.com/2009/12/14/code-sparring-a-fun-way-to-practice-programming/</guid>
<description><![CDATA[Last week, the Swedish ALT.NET group hosted an experimental Code Sparring night at the RemoteX offic]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Last week, the<a href="http://altdotnet.se/"> Swedish ALT.NET group</a> hosted an experimental Code Sparring night at the <a href="http://www.remotex.se/">RemoteX</a> offices. The idea came from the experiences we&#8217;ve had with <a href="http://codingdojo.org/">coding dojos</a> and the problems we recognized with that particular way of evolving as a coder. Mainly we felt that there was too much idle time for the people not sitting at the computer, and things quickly became messy with complex communication behaviors disturbing the overall experience. So I suggested that we should work on programming challenges in pairs instead.</p>
<h2>Sparring in martial arts</h2>
<p>There are many metaphors for software development taken from the world of hurting other people, and this is no different. I have some limited martial arts experience, mainly <a href="http://en.wikipedia.org/wiki/Mixed_martial_arts">MMA</a>, and I&#8217;ve always found that the most rewarding part of practice was the sparring.</p>
<p><a href="http://microserf.wordpress.com/files/2009/12/drill.jpg"><img class="alignleft" title="Technique drilling" src="http://microserf.wordpress.com/files/2009/12/drill.jpg" alt="Technique drilling" width="126" height="191" /></a></p>
<p>A sparring session usually consists of people pairing up to try out their skills in a slightly more realistic environment that is still safe. The sparring may be very broad, i.e. everything is allowed, or sometimes only a subset of techniques can be utilized or you have to accomplish a specific goal (such as a <a href="http://en.wikipedia.org/wiki/Rear_naked_choke">rear naked choke</a>).</p>
<p>A boxing class, for example, might start off with warm-ups and then move on to technical drills, such as a improving hand-eye coordination, like the guy to the left, or specific striking combination for 30 minutes. After that, you could finish with 30 minutes of sparring. The sparring is usually done in pairs, and you go at it for a round and then change your sparring partner. The goal is of course to improve and during the rounds you learn from each other, help each other and get to apply fine-grained knowledge in a complex and fluid situation.</p>
<h2>How well does it translate to our profession?</h2>
<p>Very well if you ask me. We can say that learning the programming basics through reading books, attending courses, practicing katas etc. is like drilling, and our day jobs are like a real fight in front of an audience. So code sparring should be something in between that is safe (e.g. you wont harm any important production code) and less competitive/dangerous.</p>
<p>I know that <a href="http://blog.8thlight.com/micah">Micah Martin</a> has a <a href="http://rubyconf2008.confreaks.com/ruby-kata-and-sparring.html">different definition of what code sparring is</a>, but that was a sort of competition instead of what I feel sparring really is. I&#8217;m not saying that it&#8217;s a bad thing, but I&#8217;d call his version &#8220;light contact coding&#8221; or something.</p>
<p>Anyway, to emulate real programming work more than a dojo did for us, roughly 10 people gathered at a big table and paired up. In order to keep things fluent, fun and to learn to know each other better, we rotated every 20 minutes. Due to the fact that people might feel uneasy about the prospect of handing over their sacred computer to others, the ones who brought laptops stayed put, and the others switched seats by moving one step to the left. The assignment we chose to work on was the <a href="http://codingdojo.org/cgi-bin/wiki.pl?KataYahtzee">KataYahtzee</a>, driving the implementation out using <a href="http://en.wikipedia.org/wiki/Test-driven_development">test-driven development</a>.</p>
<p><a href="http://microserf.wordpress.com/files/2009/12/sparring.jpg"><img class="alignright size-full wp-image-150" title="Sparring" src="http://microserf.wordpress.com/files/2009/12/sparring.jpg" alt="Sparring" width="300" height="200" /></a>This was a very pleasant experience, far more enjoyable to me compared to a coding dojo, and the rest of the attendees seemed to agree. Before we knew it, the time was 10pm and we had to go home. </p>
<p>The people who rotated always had fresh and clever ideas from the other pairing stations they had been at (just like consultants, eh?) which merged together with the existing code to evolve into something new. And constantly being part of a pair meant that everybody seemed to be focused and utilizing the time efficiently from start to finish. Also, unlike a dojo, any group size should work for this kind of exercise. </p>
<p>The constant change of pairs also meant you had to be able to quickly communicate the whats and the hows of the code to your new partner, which sharpens your verbal skills as well.</p>
<p>The biggest problem that I could see was the strict division between the laptop owners and the more consultant-like people who changed code base every 20 minutes. Some people were not content with sitting in the same seat all night, so there&#8217;s room for improvement. Make sure to read <a href="http://www.morkeleb.com/2009/12/14/alt-net-code-sparring-session/">Morten Nielsens summary of the sparring</a> as well.</p>
<p>Why don&#8217;t you try a code sparring night in your office or with your local user group? If you do, tell me how it went and any suggestions you have for making this better.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The Poor Developer's Object DataStore: Iteration 000]]></title>
<link>http://just3ws.wordpress.com/2009/12/02/the-poor-developers-object-datastore-iteration-000/</link>
<pubDate>Wed, 02 Dec 2009 02:32:10 +0000</pubDate>
<dc:creator>just3ws</dc:creator>
<guid>http://just3ws.wordpress.com/2009/12/02/the-poor-developers-object-datastore-iteration-000/</guid>
<description><![CDATA[This is part zero of a multi-part series. Jump to The Poor Developer&#8217;s Object DataStore: Itera]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><b>This is part zero of a multi-part series. Jump to <a href="http://wp.me/pijpG-7f">The Poor Developer&#8217;s Object DataStore: Iteration 001</a> for the first code drop.</b></p>
<p>What is an object datastore? For an object-oriented developer it&#8217;s as easy to use as a typed collection. No need to build and maintain a complex relational model to simulate the native object functionality. Just create your object, modify it, store it, query for it and delete it. All the complicated work is handled by the object database engine. But let&#8217;s consider a situation where you may want to &#8220;roll your own&#8221; light-weight object datastore. And depending on your situation, it might make sense. <i>CAVEAT: Rule #1 of Software Engineering: If You Can Use A Proven Product Don&#8217;t Write Your Own. They Did It First And They Did It Better.</i> But for the sake of exercise and trying something new let&#8217;s just ignore that rule and keep on going.</p>
<p>Consider the following scenario. You&#8217;re a .NET developer and you&#8217;ve been tasked with creating an archiving system. The system needs to take a snapshot of the data and store it to be queried against and reported on later.</p>
<p>How would you implement this? Would you copy the data structure you&#8217;re looking to archive and pull the data state into there? How do you manage foreign keys? Do you squish the data into a single table? Do you recreate all the tables with annotations to identify the archived records? Now, it&#8217;s a few months later and the original data structure has changed. How do you handle that change in your archiving?</p>
<p>Do you really want to recreate that complex data structure and try to wrangle the data into it and manage it over time? No, neither did I and I think there is a better way. Let&#8217;s consider a new way: an <strong>object datastore</strong>.</p>
<p>Let&#8217;s get this out of the way. Object databases aren&#8217;t just for ninjas although they are often wielded by ninjas. An object database is exactly what it sounds like, a <em>database</em> for your <em>objects</em>. No sql, no tables, no object-relational impedance. Just objects persisted similar to how a relational database allows you to store and persist tabular information offline without all the grief of mapping your object-oriented structure onto a relational model. Instead you create your objects and using the database&#8217;s API you can save and query for your data without worrying about sql or any of that mess. My personal favorite OODBMS (object-oriented database management system) is <a href="http://developer.db4o.com/Resources/">db4o</a>. I recommend downloading and playing around with it to get a feel for how simple it is to use. (If you want to learn more about various types of *DBMS check out the great presentation by Ben Scoffield at WindyCityRails 2009 &#8211; <a href="http://windycityrails.org/videos#3">&#8220;Comics&#8221; is Hard</a>.)</p>
<p>There&#8217;s one catch to using db4o in a closed source or proprietary project. You can either pay to license the product. It&#8217;s not too expensive for bringing into a medium sized project. Or you can release your project under GPL. For the project I was working on, neither option was palatable for our client. Also, I didn&#8217;t want to introduce yet another external dependency that our client would have to manage. Instead I created the simplest possible implementation of an object datastore I could using only native .NET and Microsoft Sql Server functionality.</p>
<p>Continued in <a href="http://wp.me/pijpG-7f">The Poor Developer&#8217;s Object DataStore: Iteration 001</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The Poor Developer's Object DataStore : Iteration 001]]></title>
<link>http://just3ws.wordpress.com/2009/11/28/the-poor-developers-object-datastore-iteration-001/</link>
<pubDate>Sat, 28 Nov 2009 16:02:21 +0000</pubDate>
<dc:creator>just3ws</dc:creator>
<guid>http://just3ws.wordpress.com/2009/11/28/the-poor-developers-object-datastore-iteration-001/</guid>
<description><![CDATA[In The Poor Developer&#8217;s Object DataStore : Iteration 000 we proposed a possible motivation for]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>In <a href="http://wp.me/pijpG-7T">The Poor Developer&#8217;s Object DataStore : Iteration 000</a> we proposed a possible motivation for wanting to store complex objects in a database without resorting to creating a complicated relational model.</p>
<p>For our first iteration we need only to be able to create and read the object from the database. It&#8217;s not going to be necessary to update or delete the data at this point. Only store and read. So why bother recreating the original data structure? Why not just query for the data with your ORM of choice and then serialize that result to Xml and store <em>that</em>? If you&#8217;re already using Microsoft Sql Server 2005 or later you&#8217;re already in a very good position as MSSQL provides the Xml datatype which makes storing, querying and retrieving Xml data very<br />
easy and efficient.</p>
<p>If you are using an ORM for your data-access (you *ARE* using an ORM aren&#8217;t you?) then you&#8217;re already halfway there. My original implementation utilized custom objects that implemented an IStorable interface. Basically, I used Linq to Sql to query the data I wanted to archive and mapped the query result to an object that implemented the interface. Using that I could save the object into the datastore in a similar manner to <a href="http://en.wikipedia.org/wiki/Active_record_pattern">Active Record</a>. This was very easy to do.</p>
<pre class="brush: csharp;">
public interface IStorable&#60;T&#62;
{
  string ConnectionString { get; set; }
  string Serialize();
  T Deserialize(string xml);
  XmlSerializer CreateSerializer();
  int Save();
}
</pre>
<p>So I could load up my data into a custom object, set the connectionstring and then automatically save it into the database.</p>
<pre class="brush: csharp;">
//a sample unit test demonstrating usage of the IStorable object.
public void TestStoreFoo()
{
  var foo = new Foo();
  foo.Id = 100;
  foo.Name = &#34;Penelope&#34;;
  foo.ConnectionString = &#34;__YourConnectionString__&#34;
  var objectId = foo.Save();
  Assert.That(objectId == 1);
}
</pre>
<p>So here&#8217;s the implementation. If you wish to grab the source code don&#8217;t try to cut and paste it from here. All the source code for this blog post can be browsed and downloaded from <a href="http://github.com/just3ws">GitHub</a>.</p>
<p><a href="http://github.com/just3ws/PoorDevsObjectDataStore/tree/master/src/PoorDevsObjectDataStore.Examples/Iteration001/">Source Code for Iteration 001</a></p>
<p>First we must implement the IStorable interface. The interface must take the implementing type as it&#8217;s generic argument. This is because we&#8217;re providing functionality for the object to serialize and store itself.</p>
<pre class="brush: csharp;">
public class Foo : IStorable&#60;Foo&#62;
{
</pre>
<p>The Foo.Id and Foo.Name are our data. They are not part of the IStorable implementation.</p>
<pre class="brush: csharp;">
  public int Id { get; set; }
  public string Name { get; set; }
</pre>
<p>We need to provide the connectionstring to the database where the objects are going to be stored.</p>
<pre class="brush: csharp;">
  public string ConnectionString { get; set; }
</pre>
<p>Now we&#8217;re getting to the fun part. We will use an in-memory stream to serialize this instance of the Foo object and then write it to a string.</p>
<pre class="brush: csharp;">
  public string Serialize()
  {
    string output;
    using(var buffer = new MemoryStream())
    {
      new XmlSerializer(typeof(Foo)).Serialize(buffer, this);
      buffer.Position = 0;
      output = new StreamReader(buffer).ReadToEnd();
    }
    return output;
  }
</pre>
<p>The deserialize method takes the xml as a string from a previous serialization and will attempt to convert it back into a Foo instance.</p>
<pre class="brush: csharp;">
  public Foo Deserialize(string xml)
  {
    return (Foo)new XmlSerializer(typeof(Foo)).Deserialize(new StringReader(xml));
  }
</pre>
<p>In order to serialize a type we must create a typed instance of a serializer object. Here we&#8217;re just creating a Foo serializer and setting the error event handlers to output it&#8217;s errors to standard output.</p>
<pre class="brush: csharp;">
  public XmlSerializer CreateSerializer()
  {
    var serializer = new XmlSerializer(typeof(Foo));
    //simply output error messages for types that we don't know how to serialize.
    serializer.UnknownAttribute += ((sender, e)=&#62;Console.Out.WriteLine(e));
    serializer.UnknownElement += ((sender, e)=&#62;Console.Out.WriteLine(e));
    return serializer;
  }
</pre>
<p>The save method is where we will kick off the work. We take this current instance and apply the Serialize() method to itself which converts the instance to a xml string. We also capture the fully-qualified name of the object type, both the namespace and the type name. This will be important when we are ready to pull the object back out of the datastore.</p>
<p>Here I&#8217;m using a Linq to Sql context, you may use any ORM as long as it supports the Microsoft Sql Server Xml datatype.</p>
<pre class="brush: csharp;">
  public int Save()
  {
    using(var context = new Example001DataContext(this.ConnectionString))
    {
      var entity = new Example001ObjectDataStore {
        Serialized = XElement.Parse(this.Serialize()),
        FullyQualifiedTypeName = this.GetType().FullName
      };
      context.Example001ObjectDataStores.InsertOnSubmit(entity);
      context.SubmitChanges();
      return entity.Id;
    }
  }
}
</pre>
<p>The underlying data table is very simple. Only a single table with a field for storing the serialized xml data and a field for storing the fully qualified name of the object.<br />
<div id="attachment_480" class="wp-caption aligncenter" style="width: 433px"><a href="http://just3ws.wordpress.com/files/2009/11/iteration_001_table_definition.png"><img src="http://just3ws.wordpress.com/files/2009/11/example_001.png" alt="The Poor Developer&#39;s Object DataStore: Iteration 001, diagram" title="poordevsobjectdatastore_iteration001_example_001_table" width="423" height="180" class="size-full wp-image-480" /></a><p class="wp-caption-text">The Iteration 001 Object DataStore Table Definition</p></div></p>
<p>In this post we&#8217;ve got the ball rolling for storing objects into some some table. We can create an object that knows how to write itself into a database without requiring the creation of an elaborate data structure in order to just to simulate the object structure.</p>
<p>Next post we&#8217;ll cover how to retrieve the data from the table and convert it back into an instance of the persisted type. Next post we&#8217;ll look at how we can really test the functionality and behavior of the system. And begin to explore how to abstract the datastore to support arbitrary objects (with some minor restrictions.)</p>
<p>The source code for this project is hosted on <a href="http://github.com/just3ws">GitHub </a>and can be downloaded from <a href="http://github.com/just3ws/PoorDevsObjectDataStore/tree/master/src/PoorDevsObjectDataStore.Examples/Iteration001/">here</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Nhibernate y WCF &ndash; Parte 1]]></title>
<link>http://devsoftx.wordpress.com/2009/10/15/nhibernate-y-wcf-parte-1/</link>
<pubDate>Thu, 15 Oct 2009 01:44:00 +0000</pubDate>
<dc:creator>Jose Fabricio Rojas</dc:creator>
<guid>http://devsoftx.wordpress.com/2009/10/15/nhibernate-y-wcf-parte-1/</guid>
<description><![CDATA[Buenas con todos, En esta oportunidad compartiré una ultima experiencia personal y profesional al us]]></description>
<content:encoded><![CDATA[Buenas con todos, En esta oportunidad compartiré una ultima experiencia personal y profesional al us]]></content:encoded>
</item>
<item>
<title><![CDATA[The Art of Unit Testing - Chapter 1 ]]></title>
<link>http://roundcrisis.com/2009/09/09/the-art-of-unit-testing-chapter-1/</link>
<pubDate>Wed, 09 Sep 2009 09:35:55 +0000</pubDate>
<dc:creator>roundcrisis</dc:creator>
<guid>http://roundcrisis.com/2009/09/09/the-art-of-unit-testing-chapter-1/</guid>
<description><![CDATA[We are meeting for the first time for the Book club and just to get the ball rolling on this I thoug]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>We are meeting for the first time for the Book club and just to get the ball rolling on this I though I&#8217;d write up a mini summary of chapter 1 on <a href="http://www.manning.com/osherove/" target="_blank">The Art of  Unit Testing</a> before the meeting as a way to explore the concepts and then another one after if necesary.</p>
<p>So far I like the book, a very clean and concrete explanation of the basics, in plain english.</p>
<p>Some concept definitions are opinionated, but  Roy does a good job of it by telling you that there are many defintions available of certain terms, he then tells you wich one he will be using, for example when he defines Legacy Code he setteles for: Code that has no unit tests ( in line with M Feathers), he gives you a few other options including one that kept sticking in my head: Code that works. (quite possibly with bugs , I cant help to add).</p>
<p>He makes a lot of emphasis in Good Unit Tests, as tests that are automated, repeatable, easy to implement and read, that are trustworthy and run quickly, normally written using an unit testing framework.</p>
<p>I think a knock on effect of this is that the tests will be just a few lines long and quite likely many.</p>
<p>The definition of Integration Tests made me think a lot. For reference: Integration testing means testing two or more dependent software modules as a group.  I&#8217;d really like to discuss this with the group <span style="text-decoration:line-through;">tomorrow </span>today, I&#8217;d say many of us do more Integration testing that we tend to think? particularly if we have a dependency on a service that has no other hard dependencies ( like a db, I/O operations or similar)   &#8212; Will update on this.</p>
<p>Another good concept to be introducing at this early stage is the Regression, and when I was reading this I was thinking It&#8217;s so great to tie this up with CI, why? Well if you have relevant test coverage and you change something (adding the required unit tests and all ) you commit your code , the build machine will immediately go and try to build and run your test suite, so that will help you to know if potentially you have a regression.</p>
<p>He outlines a series of questions to ask yourself  to find out if you are writting good tests the one I liked the most is this one:</p>
<blockquote><p>Can I write a basic test in no more than a few minutes? &#8212; Will update on this too later on.</p></blockquote>
<p>There is a  unit test example without using a  framework, I liked it  first because of this little snippet that I didnt know about: MethodBase.GetMethod().Name , more to the point I think hes trying to highlight the advantages of the frameworks and also because it reminds you of the fact that you dont need unit testing frameworks.</p>
<p>Then there is a basic intro to TDD, where the last D stands for Development , and thats ok, I have not much more to add because I didnt find anything that sticks out .</p>
<p>So far so good, I think we could have jammed the first two chapters in this meet up.</p>
<p>Comments, corrections and questions as always welcome <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Meet ups Conferences Visitors ]]></title>
<link>http://roundcrisis.com/2009/08/24/meet-ups-conferences-visitors/</link>
<pubDate>Mon, 24 Aug 2009 11:21:42 +0000</pubDate>
<dc:creator>roundcrisis</dc:creator>
<guid>http://roundcrisis.com/2009/08/24/meet-ups-conferences-visitors/</guid>
<description><![CDATA[Very excited by a very very busy few months ahead: - This wednesday thursday and Friday  Epicenter, ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Very excited by a very very busy few months ahead:</p>
<p>- This wednesday thursday and Friday  <a href="http://epicenter.ie/index.html" target="_blank"><strong>Epicenter</strong></a>, In dublin where <a href="http://csharpindepth.com/" target="_blank">John Skeet</a>, <a href="http://www.craigmurphy.com/blog/" target="_blank">Craig Murphy</a> (the man behind the DDD events), <a href="http://idunno.org/" target="_blank">Barry Dorans</a>, Barry Carr  and many others will be talking, including me <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . Sounds like a busy conference full of choices.</p>
<p>Oh yeah! and Craig Managed to get a Special Offer on Epicenter,  buy 1 day get 3. More <a href="http://www.craigmurphy.com/blog/?p=1578">here</a></p>
<p>- September Dublin Alt Net meeting. 15th of September. New location <a href="http://www.seagrassdublin.com/" target="_blank">Seagrass</a> we ll be doing some lightning presentations on  Kanban, Mono and Fluent NHibernate ( a bit of a mixed bag) more details to follow in <a href="http://dublinalt.net" target="_blank">dublinalt.net</a></p>
<p>- <a href="http://www.ossbarcamp.com/" target="_blank">OSSBarcamp</a>, this is one not to miss, the  19th of September all things open source. ONe takl i m particularly interested in is the one on IPython, I really hope I can make it at least to that talk.</p>
<p>- Finally  the 30th of september  <a href="http://serialseb.blogspot.com/" target="_blank">Sebatien Lambla</a> istalking about <a href="http://www.ohloh.net/p/openrasta" target="_blank">Open Rasta</a> , finishing arrangements as we speak, this is the first urregular Dublin Alt net meet up =). Location will probably be Seagrass too. More info to follow in Dublinalt.net</p>
<p>Cheers</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[My object database lightning talk]]></title>
<link>http://microserf.wordpress.com/2009/08/06/my-object-database-lightning-talk/</link>
<pubDate>Thu, 06 Aug 2009 08:44:45 +0000</pubDate>
<dc:creator>microserf</dc:creator>
<guid>http://microserf.wordpress.com/2009/08/06/my-object-database-lightning-talk/</guid>
<description><![CDATA[I just found the video of my lightning talk on object databases for .NET.  It was recorded during th]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I just found the video of my lightning talk on object databases for .NET.  It was recorded during the February 2009 <a href="http://altdotnet.se/unconference.htm">ALT.NET Unconference in Stockholm</a>.</p>
<p><object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='437' height='370' id='viddler'><param name='movie' value='http://www.viddler.com/player/38a23e1f' /><param name='allowScriptAccess' value='always' /><embed src='http://www.viddler.com/player/38a23e1f' width='437' height='370' type='application/x-shockwave-flash' allowScriptAccess='always' name='viddler' allowFullScreen='true'></embed></object></p>
<p>Thanks to <a href="http://pwigle.wordpress.com/">Petter Wigle</a> for recording, editing and putting it up on Viddler.</p>
<p>Edit: I&#8217;ve been told I&#8217;m looking back at the slides projection way too much during this presentation. I agree. It&#8217;s because <a href="http://www.joakimsunden.com/">someone</a> changed the settings on the laptop just before my presentation, so that I couldn&#8217;t see what slide I was on on it&#8217;s screen.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Je ne suis pas Joel Spolsky]]></title>
<link>http://codingly.com/2009/08/05/je-ne-suis-pas-joel-spolsky/</link>
<pubDate>Wed, 05 Aug 2009 13:53:01 +0000</pubDate>
<dc:creator>Romain Verdier</dc:creator>
<guid>http://codingly.com/2009/08/05/je-ne-suis-pas-joel-spolsky/</guid>
<description><![CDATA[Je ne sais pas si vous avez remarqué, mais Joel a carrément sauté le requin. Avant, son blog était m]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Je ne sais pas si vous avez remarqué, mais <a href="http://www.joelonsoftware.com/">Joel</a> a carrément <a href="http://en.wikipedia.org/wiki/Jumping_the_shark">sauté le requin</a>. Avant, son blog était maintenu, la plupart du temps drôle, et généralement intéressant. Maintenant, il ne poste plus rien, ou très rarement. Pire : souvent il ne poste que pour signaler qu&#8217;il vient d&#8217;écrire un article sur <a href="http://www.inc.com/">Inc.</a> Du coup ses billets ressemblent à <a href="http://www.joelonsoftware.com/items/2009/06/10b.html">ça</a> (sur 8 lignes) :</p>
<blockquote><p>From my latest Inc. column : &#8220;Blah blah blah&#8221;</p></blockquote>
<p>Bon, moi, je ne suis pas Joel Spolsky car je n&#8217;ai pas tenu 10 ans avant de sauter le requin.<br />
<!--more--><br />
Extrait de <a href="http://www.altnetfr.org/2009/08/05/compte-rendu-rencontre-altnet-16-winddbg/">mon dernier compte-rendu sur altnetfr.org</a> :</p>
<blockquote><p>Par contre, Yann ne sait pas coder :</p>
<p><code>for(int i=0; i&#60; 100000000; i++)<br />
{<br />
&#160;&#160;&#160;if(!list.Contains(Guid.NewGuid().ToString()))<br />
&#160;&#160;&#160;&#160;&#160;&#160;list.Add(Guid.NewGuid().ToString());<br />
}</code></p>
<p>Il faut probablement avoir une maladie mentale pour écrire ça ! C&#8217;est en tout cas ce que j&#8217;ai pensé sur le coup, en pouffant sur ma chaise (j’étais au fond de la salle). Ensuite, je ne sais plus si je l&#8217;ai compris de moi même ou si Yann a dû le préciser d’un air atterré, mais il avait fait exprès d’écrire ça. Parce que d&#8217;autres ne font pas exprès, et que ça pose des problèmes.</p></blockquote>
<p>C&#8217;était au sujet de la dernière rencontre ALT.NET parisienne, où <a href="http://blog.polom.com/">Yann Schwartz</a> nous parlait de Windbg et d&#8217;autres trucs. C&#8217;était très bien.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[KaZaA's Comeback? Yeah, Right.]]></title>
<link>http://gigaom.com/2009/07/20/kazaas-comeback-yeah-right/</link>
<pubDate>Mon, 20 Jul 2009 20:04:03 +0000</pubDate>
<dc:creator>Janko Roettgers</dc:creator>
<guid>http://gigaom.com/2009/07/20/kazaas-comeback-yeah-right/</guid>
<description><![CDATA[Updated with comment from KaZaA: KaZaA, whose once-popular file-sharing service was shut down in 200]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="alignnone size-full wp-image-59808" title="header_logo" src="http://gigaom.wordpress.com/files/2009/07/header_logo.gif" alt="header_logo" width="154" height="80" /><a href="http://www.kazaa.com" target="_blank"><strong>Updated with comment from KaZaA:</strong> KaZaA</a>, whose once-popular file-sharing service was shut down in 2006 as part of a settlement with the music industry, is back in the headlines. Now it&#8217;s said to be launching a web-based legal music download service with the support of all four major labels. Sounds like a great story, especially in light of <a href="http://newteevee.com/2009/06/30/the-pirate-bay-being-acquired-going-straight/">The Pirate Bay&#8217;s efforts to go legit.</a> If only it were true.<!--more--></p>
<p>KaZaA&#8217;s purported rise from the ashes has been featured on<a href="http://news.cnet.com/8301-1023_3-10289985-93.html" target="_blank"> CNet</a>, <a href="http://gizmodo.com/5318514/kazaa-wakes-up-from-lawsuit+induced-coma-vows-to-go-legit" target="_blank">Gizmodo</a>, <a href="http://news.bbc.co.uk/2/hi/technology/8159560.stm" target="_blank">Billboard.com</a> and <a href="http://news.bbc.co.uk/2/hi/technology/8159560.stm" target="_blank">BBC News</a>, to name just a few. The <a href="http://www.smh.com.au/technology/biz-tech/kazaa-to-rise-from-the-dead-20090720-dqlk.html" target="_blank">Sydney Morning Herald was even able </a>to get a few quotes from Brilliant Digital CEO Kevin Bermeister, who was seen as the arch nemesis of the music industry during the KaZaA trial, but now promotes paid downloads as a &#8220;quality legal product.&#8221;</p>
<p>The paper is dutifully reporting that Bermeister&#8217;s company, who is running the service on KaZaA&#8217;s behalf, &#8220;appears to have the support of the music industry&#8221; because KaZaA&#8217;s download offering is going to feature some 1 million tracks from all the major labels and a handful of independents. It uses Microsoft&#8217;s Windows Media DRM and offers unlimited downloads for around $20 per month &#8212; what Gizmodo calls a &#8220;2005-style&#8221; music service.</p>
<p>It&#8217;s no coincidence that the folks at Gizmodo and other publications said they had flashbacks when they read about KaZaA&#8217;s comeback &#8212; the whole offering is old news, strategically recycled for maximum exposure. Corporate sibling <a href="http://www.altnet.com" target="_blank">Altnet.com</a> has been offering a DRM-restricted download service for $20 per month since late 2007. The service, dubbed &#8220;Altnet Music Club,&#8221; has been featured on the Kazaa.com homepage since early 2008. It was completely integrated into KaZaA&#8217;s web site site a couple months back and has been heavily promoted with Adsense ads ever since.</p>
<p>What about that cooperation with the music industry? That&#8217;s old news as well. Altnet&#8217;s and KaZaA&#8217;s offerings are basically repackaged subscription services from <a href="http://www.mndigital.com/" target="_blank">Medianet</a>, a company that used to be known as Musicnet. Major media players like Yahoo (s yhoo) and AOL (s twx) use to feature the same kind of subscriptions, albeit a lot cheaper. Most of these offerings have been shut down because people just don&#8217;t want to pay for DRM-restricted music downloads.</p>
<p>So why is KaZaA in the news this week for an outdated service it&#8217;s been offering for years? That&#8217;s a story as odd as the music service itself. The company <a href="http://www.p2p-blog.com/item-1105.html" target="_blank">issued a press release two weeks ago</a> that was as strange as they come: The Kazaa.com domain name was misspelled; a well-known hacker who committed suicide last year endorsed the service; and KaZaA&#8217;s new offering was linked to Jammie Thomas, who was recently handed a $1.92 million court verdict for using the old, unauthorized KaZaA version to download music. And it featured a number of links labeled &#8220;free music&#8221; that were pointing to Kazaa.com. Plain-old SEO, aimed at Google&#8217;s bots, not journalists.</p>
<p>Regardless, the release was still picked up by a number of web sites, so maybe KaZaA smelled an opportunity to get back into the headlines. Greg Sandoval over at CNet <a href="http://news.cnet.com/8301-1023_3-10289985-93.html" target="_blank">reported this weekend </a>that &#8220;sources close to the company&#8221; pitched him the story of an upcoming launch, and others are reporting that KaZaA plans to return on Tuesday. To be honest, we don&#8217;t know what will happen tomorrow. Maybe KaZaA will relaunch its site to slap a new face on its old service, or maybe it will just issue another bizarre press release.</p>
<p>We&#8217;ve left a message with the company seeking more info, but only received an email auto-reply. Turns out the person who published the KaZaA press release two weeks back is out of the office this week, just in time for the supposed comeback. But I guess that&#8217;s excusable. After all, <a href="http://www.linkedin.com/profile?viewProfile=&#38;key=46428667" target="_blank">he&#8217;s only the company&#8217;s SEO expert.</a> <strong>Update:</strong> KaZaA emailed us a short statement, explaining that the company is working on a video player that &#8220;will be released (within) a control group,&#8221; and adding: &#8220;The digital music subscription is still [$]19.98.&#8221;</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Языки предметной области Domain-Specific Languages (DSL)]]></title>
<link>http://butaji.wordpress.com/2009/06/29/%d1%8f%d0%b7%d1%8b%d0%ba%d0%b8-%d0%bf%d1%80%d0%b5%d0%b4%d0%bc%d0%b5%d1%82%d0%bd%d0%be%d0%b9-%d0%be%d0%b1%d0%bb%d0%b0%d1%81%d1%82%d0%b8-domain-specific-languages-dsl/</link>
<pubDate>Mon, 29 Jun 2009 19:34:51 +0000</pubDate>
<dc:creator>butaji</dc:creator>
<guid>http://butaji.wordpress.com/2009/06/29/%d1%8f%d0%b7%d1%8b%d0%ba%d0%b8-%d0%bf%d1%80%d0%b5%d0%b4%d0%bc%d0%b5%d1%82%d0%bd%d0%be%d0%b9-%d0%be%d0%b1%d0%bb%d0%b0%d1%81%d1%82%d0%b8-domain-specific-languages-dsl/</guid>
<description><![CDATA[Что это? Это некоторая форма компьютерных языков, разрабатываемых для специфичной предметной области]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><h2>Что это?</h2>
<p><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;margin:0 10px 0 0;" src="http://fabathome.org/machinesandmechanisms/images/8/87/Illinois-gear_collection.jpg" border="0" alt="" width="93" height="93" align="left" />Это <a href="http://ru.wikipedia.org/wiki/Предметно-ориентированный_язык_программирования">некоторая форма компьютерных языков</a>, разрабатываемых для специфичной предметной области. Это то, что позволяет вам (разработчикам ПО) лучше взаимодействовать с носителями “доменных знаний”. А так же позволяет более лаконично оформлять бизнес-логику. Это то, что представляет собой, к примеру, SQL, Linq, многое из синтаксиса Ruby On Rails.</p>
<h2>Зачем мне это?</h2>
<p>Если вы согласны с утверждением: “Языки общего назначения порой слишком красноречивы”, вы разрабатываете на .NET, либо сильно интересуетесь программированием, то наш доклад будет вам интересен.</p>
<h2>Что я узнаю?</h2>
<p>Ответы на следующие вопросы:</p>
<ul>
<li>Что такое DSL?</li>
<li>Откуда это понятие пришло к нам?</li>
<li>Какие бывают DSL?</li>
<li>Какие “языки общего употребления (GPL)”  предоставляют возможности построения DSL? Какие из них есть на .NET?</li>
<li>Почему я должен использовать DSL? Какие плюсы от этого?</li>
<li>Какие шаблоны используются при построении DSL?</li>
<li>А можно увидеть примеры?</li>
</ul>
<h2>Материалы <a href="http://spbalt.net/Home/Meetings/6">нашего</a> выступления</h2>
<p>Слайды презентации</p>
<p><a style="display:block;font:14px helvetica,arial,sans-serif;text-decoration:underline;margin:12px auto 6px;" title="View Building DSLs on CLR and DLR (.NET) on Scribd" href="http://www.scribd.com/doc/15894671/Building-DSLs-on-CLR-and-DLR-NET">Building DSLs on CLR and DLR (.NET)</a></p>
<p>Видео:</p>
<p><a href="http://video.yandex.ru/users/thecoffee/collection/1/">http://video.yandex.ru/users/thecoffee/collection/1/</a></p>
<p>Видео в более пригодном к рассматриванию надписей на доске качестве можно слить по ссылкам ниже:</p>
<p><a href="http://narod.ru/disk/9278634000/01.wmv.html">http://narod.ru/disk/9278634000/01.wmv.html</a></p>
<p><a href="http://narod.ru/disk/9279885000/02.wmv.html">http://narod.ru/disk/9279885000/02.wmv.html</a></p>
<p>Все рассмотренные примеры доступны здесь:</p>
<p><a title="http://spbalt.net/Content/Baum_Moiseev_DSL.zip" href="http://spbalt.net/Content/Baum_Moiseev_DSL.zip">http://spbalt.net/Content/Baum_Moiseev_DSL.zip</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[June Meetup Alt Net Ireland Review]]></title>
<link>http://roundcrisis.com/2009/06/24/june-meetup-alt-net-ireland-review/</link>
<pubDate>Wed, 24 Jun 2009 10:46:40 +0000</pubDate>
<dc:creator>roundcrisis</dc:creator>
<guid>http://roundcrisis.com/2009/06/24/june-meetup-alt-net-ireland-review/</guid>
<description><![CDATA[The past 18th of June we had a meetup. This month&#8217;s meetup topic was Behaviour Driven Developm]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>The past 18th of June we had a meetup.</p>
<p>This month&#8217;s meetup topic was <strong>Behaviour Driven Development</strong> presented by Claudio Perrone and Andre . It was an overview of the topic and how does it work as well as some examples with <strong><a href="http://cukes.info/" target="_blank">cucumber</a></strong> , Andre is a QA Professional and himself and Claudio demonstrated how they collaborate. Andre is involved in the Development process from early on and uses cucumber with Selenium and Watin (or Watin not sure).</p>
<p>Edit: Andre did a blog post about it (you can see it <a href="http://dublinalt.net/2009/06/23/cucumber/" target="_blank">here</a>)</p>
<p>Then we decided on July&#8217;s topic: <strong>IoC</strong> facilitated by Franklin (<a href="http://castleproject.org/container/index.html" target="_blank">Windsor</a>)  and I think someone said they will bring some <a href="http://structuremap.sourceforge.net/Default.htm" target="_blank"> StructureMap </a>samples  for a discussion, sounds good.</p>
<p>I really enjoyed the last few meetings and I hope it keeps happening.</p>
<p>Claudio will not be attending a few meeting as hes going to be busy looking after his new born, Best of luck for you and your family. We promise to keep you posted and hope you come back soon.</p>
<p>Cheers</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[ALT.NET en France : Présentation AOP, c'est fait.]]></title>
<link>http://codingly.com/2009/06/18/alt-net-en-france-presentation-aop-cest-fait/</link>
<pubDate>Thu, 18 Jun 2009 08:09:28 +0000</pubDate>
<dc:creator>Romain Verdier</dc:creator>
<guid>http://codingly.com/2009/06/18/alt-net-en-france-presentation-aop-cest-fait/</guid>
<description><![CDATA[Je me demande si 91 slides valent 1000 mots. Vous pourrez essayer de vous faire une idée puisqu]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Je me demande si 91 slides valent 1000 mots. Vous pourrez essayer de vous faire une idée puisqu&#8217;elles sont disponibles ci-dessous. Je vous conseille de carrément télécharger la présentation si vous êtes intéressés par les animations, puisque certaines (lire : toutes) sont très logiquement tuées par SlideShare.</p>
<p>Bon, pour ma part j&#8217;ai trouvé que ça s&#8217;était plutôt bien passé considérant que je ne suis pas un speaker &#8211; au mieux un <a href="http://codingly.com/2008/12/29/degage-sale-programmeur/">sale programmeur</a> &#8211; même si j&#8217;imaginais une présentation un peu plus courte. J&#8217;ai parlé pendant 45 min, je crois, puis j&#8217;ai ouvert VS pour la &#8220;démo interactive&#8221; qui s&#8217;est un peu éternisée.</p>
<p>Je tiens encore à remercier <a href="http://fastconnect.fr/">FastConnect</a> pour la salle, l&#8217;organisation, le buffet, etc.<br />
<!--more--><br />
<!-- SlideShare error: doc is missing or has illegal characters /[^-_a-zA-Z0-9]/ --></p>
<p>En ce qui concerne le code des exemples, j&#8217;essaierai d&#8217;éditer ce post ultérieurement.</p>
<p><span class="edittag">Edit</span> Quelques liens en rapport :</p>
<ul>
<li><a href="http://codingly.com/2008/10/29/utiliser-laop-avec-postsharp-pour-implementer-inotifypropertychanged/">INotifyPropertyChanged avec PostSharp</a></li>
<li><a href="http://codingly.com/2008/11/10/introduction-a-monocecil-implementer-inotifypropertychanged/">INotifyPropertyChanged avec Mono.Cecil</a></li>
</ul>
<p><span class="edittag">Edit</span> Le <a href="http://www.altnetfr.org/2009/06/24/altnet-paris-14-compte-rendu-aop/">compte rendu de la soirée</a> est maintenant dispo sur le site ALT.NET Fr. Merci <a href="http://evain.net/blog/">Jb</a>.</p>
<p>N&#8217;hésitez pas à me faire part de vos critiques <em>positives</em>, puisque les autres, constructives ou pas, elles vexent. OK ?</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Flew Through a ThoughtWorks Panel, Beer with Bost and Chicago Alt.NET. Boy Are My Arms Tired.]]></title>
<link>http://just3ws.wordpress.com/2009/06/11/flew-through-thoughtworks-panel-beer-with-bost-and-chicago-alt-net-and-boy-are-my-arms-tired/</link>
<pubDate>Thu, 11 Jun 2009 05:18:13 +0000</pubDate>
<dc:creator>just3ws</dc:creator>
<guid>http://just3ws.wordpress.com/2009/06/11/flew-through-thoughtworks-panel-beer-with-bost-and-chicago-alt-net-and-boy-are-my-arms-tired/</guid>
<description><![CDATA[Wow, today was a busy day. Got to spend about an hour cleaning up my slides for my next presentation]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Wow, today was a busy day. Got to spend about an hour cleaning up my slides for my next presentation for the <a href="http://www.eventbrite.com/event/357061982">Lake County .NET UG: Introduction to AOP with PostSharp</a> on the train ride to Chicago.</p>
<p>ThoughWorks hosted a pretty damn cool panel on some pretty damn cool topics: <a href="http://connect.thoughtworks.com/hottechtopics/">Hot Topics in Technology Panel Debate</a>. The topics were covered at a pretty high-level but the panelists are all experts in the field so they were very tightly focused on the topic and were authoritative on the subjects. They hold these panels monthly but this was the first I&#8217;d heard of the panel. You may have heard of <a href="http://www.martinfowler.com/">one</a> or <a href="http://www.thoughtworks.com/who-we-are/leadership-profiles/rebecca-parsons.html">two</a> (<a href="http://iancartwright.com/blog/">3</a>, <a href="http://olabini.com/blog/" title="this guy has a weird affinity for the color black, dude there's a whole rainbow of colors out there">4</a>, <a href="http://erik.doernenburg.com/">5</a>, <a href="http://www.nealford.com/">6</a>, <a href="http://grahamis.com/blog/">7</a>) of the panelists.</p>
<ul>
<li>
<h3>Cloud</h3>
<p>The cloud is going to change everything, except the stuff that it doesn&#8217;t. Basically, it&#8217;s a great tool that should be considered for even large organizations. Although it&#8217;s not for everybody and every situation. If you have irregular spikes in load or maybe want to reduce your hardware footprint you should consider developing in the cloud. If you have very highly computationally or I/O bound applications, maybe it won&#8217;t be appropriate. Some vendors, such as Google, offer secure channels to store critical data on your network and simply host the application in a cloud. It&#8217;s a relatively new concept and &#8220;best practices&#8221; are really yet to coalesce, but the technology is compelling and should be evaluated.</li>
<li>
<h3>Polyglot Programming</h3>
<p>Don&#8217;t try to write everything in one language. Virtual machines and run-times are getting better at supporting multiple languages that better express problems than the original imperative languages written for the VMs (i.e. Java on JVM or C# on CLR). Languages such as JRuby, Scala, Clojure running on top of the JVM can significantly reduce the LOC and be more focused on their specialty.</li>
<li>
<h3>DSL</h3>
<p>Trying to define systems using the businesses language. Hasn&#8217;t this been the dream of the entire computer industry for over 30 years? Frameworks for creating new, highly-focused languages are becoming more prevalent and have the potential to be applied to create systems that non-developers can better understand and communicate about. The key thing I took was that this isn&#8217;t about &#8220;getting rid of the developer&#8221; but instead creating clearer semantics for the developer to collaborate with the business expert.</li>
<li>
<h3>Developer Certifications</h3>
<p>Developer certifications are in no-way sufficient or able to accurately determine whether the developer actually is fit to write a line of code. Although, the Software Craftsmanship movement as espoused by Uncle Bob Martin of 8th Light is a good step in the right direction towards building a better definition of how to evaluate and mold a competent developer.</li>
</ul>
<p>After the panel I got a chance to ask some questions directly to the panelists and for such famous (in the developer community) were very nice, forthcoming and willing to answer questions and comments.</p>
<p>I meandered around for a little while after the meeting and walked down towards the Sears Tower to wait for the Chicago Alt.NET meeting. Serendipity bumped me into <a href="http://larryclarkin.com/">Larry Clarkin</a> who let me know that <a href="http://www.davebost.com/blog/">Dave Bost</a> was around the corner waiting for the meeting as well. Had a great conversation about the Microsoft developer events in the Chicagoland area. Dave and Larry had just recorded another interview for their <a href="http://thirstydeveloper.com/">Thirsty Developer</a> podcast. </p>
<p>Tonight&#8217;s Chicago Alt.NET meeting was <a href="http://devlicio.us/blogs/sergio_pereira/default.aspx?Sort=MostRecent&#38;PageIndex=1">Sergio Pereira</a> covering Git for Windows. He definitely knew his stuff and I was really surprised at how powerful the tool really is. Basically I was woefully under-utilizing the tool.</p>
<p>I tweeted over 100x today, which I think is a new personal record. Good times, good times. Would have been more but didn&#8217;t charge my Android G1 since the day before and even that awesome piece of technology (I &#60;3 My G1) can only take so much.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Учимся проектировать на основе предметной области (DDD: Domain Driven Design)]]></title>
<link>http://butaji.wordpress.com/2009/06/06/%d1%83%d1%87%d0%b8%d0%bc%d1%81%d1%8f-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d1%82%d1%8c-%d0%bd%d0%b0-%d0%be%d1%81%d0%bd%d0%be%d0%b2%d0%b5-%d0%bf%d1%80%d0%b5%d0%b4%d0%bc/</link>
<pubDate>Sat, 06 Jun 2009 18:48:15 +0000</pubDate>
<dc:creator>butaji</dc:creator>
<guid>http://butaji.wordpress.com/2009/06/06/%d1%83%d1%87%d0%b8%d0%bc%d1%81%d1%8f-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d1%82%d1%8c-%d0%bd%d0%b0-%d0%be%d1%81%d0%bd%d0%be%d0%b2%d0%b5-%d0%bf%d1%80%d0%b5%d0%b4%d0%bc/</guid>
<description><![CDATA[1. Введение В данной статье я хотел бы рассказать об этих трёх буквах, постоянно находящихся на слух]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><h2>1. Введение</h2>
<p>В данной статье я хотел бы рассказать об этих трёх буквах, постоянно находящихся на слуху, но для многих являющихся тайной за семью печатями, а так же привести ряд ресурсов, с которыми неплохо было бы познакомиться при желании продолжить развитие в проектировании на основе предметной области (DDD: Domain Driven Design). </p>
<h2>2. Так почему же DDD?</h2>
<p>Есть несколько шаблонов реализации предметной области (Domain Logic) или бизнес-логики (Business Logic):</p>
<p>1) <a href="http://martinfowler.com/eaaCatalog/tableModule.html">Table Module</a> – представляет собой объект, в единственном экземпляре, обрабатывающий бизнес логику для всех записей в таблице базы данных, либо представления.</p>
<p>2) <a href="http://martinfowler.com/eaaCatalog/transactionScript.html">Transaction Script</a> – организует взаимодействие с бизнес-логикой посредствам процедур, принимающих запросы с уровня представления.</p>
<p>3) <a href="http://martinfowler.com/eaaCatalog/domainModel.html">Domain Model</a> – непосредственно, объектная модель предметной области, включающая в себя как поведение, так и данные.</p>
<p><img style="display:inline;margin:10px 10px 0 0;" align="left" src="http://www.books.ru/img/156126.jpg" />Эти шаблоны описаны более подробно <a href="http://martinfowler.com/">Мартином Фаулером</a>, в его книге “<a href="http://www.books.ru/shop/books/156126?partner=butaji">Архитектура корпоративных программных приложений. Шаблоны корпоративных приложений</a>” <b><a href="http://martinfowler.com/books.html#eaa">(Patterns of Enterprise Application Architecture (P of EAA)</a>)</b>. В данной книге он показывает, что первые два шаблона более привлекательны в начале работы с предметной областью, однако так же обращает внимание, что при наращивании сложности логики предметной области стоит больше внимания уделять сопровождению инфраструктуры, используя первые два подхода, это время можно уменьшить, если обратиться в своём решении к третьему из вышеперечисленных шаблонов, так называемой “Модели предметной области”. </p>
<p>На основе этого сделаем небольшой вывод о том, что данный шаблон (“<a href="http://www.sbras.ru/Report2006/Report321/node14.html">Модель предметной области</a>”) лучше всего подойдёт, к примеру, для такой непростой области, как финансовый рынок. Большинство, создаваемого в наши дни программного обеспечения предназначено для различных нужд бизнеса, следовательно какие-то абстрактные, обобщенные решения находят своё место на рынке (с довольно таки высокой конкуренцией) всё реже и реже. <strong>К чему я пишу про всё это? </strong>Потому что DDD – это не только качественное проектирование, но так же и показательный пример того, как следует выделить предметную область в программном обеспечении, для того, чтобы проще преодолевать сложности, частые изменения, проблемы коммуникации и прочие недуги предметной области, вместо того чтобы разрабатывать уродливую, сложную для понимания систему, в которой любое изменение или исправление способно обрушить на вас лавину всё новых и новых дефектов.</p>
<p>DDD ни в коем случае не отрицает наследия практик разработки, таких как: </p>
<ul>
<li>
<p><a href="http://ru.wikipedia.org/wiki/Объектно-ориентированное_проектирование">Объектно-ориентированное проектирование</a></p>
</li>
<li>
<p><a href="http://ru.wikipedia.org/wiki/Шаблоны_проектирования">Шаблоны проектирования</a> (Design Patterns) (в том числе всем известные <a href="http://en.wikipedia.org/wiki/Design_Patterns_(book)">GoF</a>)</p>
</li>
<li>
<p>Так называемый ряд принципов проектирования <a href="http://www.lostechies.com/blogs/chad_myers/archive/2008/03/07/pablo-s-topic-of-the-month-march-solid-principles.aspx">S.O.L.I.D</a>, собранных <a href="http://www.objectmentor.com/omTeam/martin_r.html">Робертом “Uncle Bob” Мартином</a>.</p>
</li>
<li>
<p><a href="http://ru.wikipedia.org/wiki/Разработка_через_тестирование">Разработка по средствам тестирования</a> (TDD: <a href="http://www.agiledata.org/essays/tdd.html">Test-Driven Development</a>) </p>
</li>
</ul>
<p>DDD лишь дополняет их. Поиск подходящей модели и абстракций в сложных сценариях требует значительных знаний в сфере объектно-ориентированного подхода, и достаточного опыта применения различных принципов, шаблонов и практик, а не просто DDD, как может показаться.</p>
<h2>3. С чего можно начать?</h2>
<p>Если мой “нудный PR”&#160; проектирования на основе предметной области (DDD) вас до сих пор не утомил, то думаю нам стоит продолжить, если же иначе, то посмотрите хотя бы ссылки на материалы.</p>
<p><img style="display:inline;margin:10px 10px 10px 0;" align="left" src="http://domaindrivendesign.org/sites/default/files/images/cover_small.jpg" />Первой книгой пролившей свет на DDD для широкой публики была так называемая “Большая синяя книга” (мем. BBB: Big Blue Book): <a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215"><strong>Domain-Driven Design: Tackling Complexity in the Heart of Software</strong></a><strong>&#160;</strong>by<strong> </strong><a href="http://www.infoq.com/articles/eric-evans-ddd-matters-today"><strong>Eric Evans</strong></a><strong>&#160;</strong>(на русский язык пока не переведена). </p>
<p>Книга довольна подробно рассказывает о том, что из себя представляет DDD, и все связанные аспекты, такие как: язык предметной области, шаблоны, практики проектирования, рефакторинг, моделирование, как сделать <a href="http://ru.wikipedia.org/wiki/Гибкая_методология_разработки">разработку гибкой</a> и многое другое. Но даже если вы ознакомитесь со всеми вопросами, поднятыми в книге (что является не совсем простым занятием), вы обратите внимание, что вопросы рассматриваются только с теоретической точки зрения, оставляя весь простор для практики (книга не привязана к конкретной платформе разработки). <img style="display:inline;margin:10px 10px 0;" align="right" src="http://www.infoq.com/resource/news/2006/12/domain-driven-design/en/resources/http://www.infoq.com/resource/minibooks/domain-driven-design-quickly/en/smallimage/coversmall.jpg" />Для большинства из нас чтение чистой теории, без подкрепления практическими примерами не нравится, в связи с этим можно обратить своё внимание на сокращенную (и свободную для доступа) версию этой книги, подготовленную порталом <a href="http://www.infoq.com/">InfoQ</a>: <a href="http://www.infoq.com/news/2006/12/domain-driven-design"><b>Domain Driven Design Quickly</b></a>.</p>
<p>Есть так же несколько хороших презентаций Эрика Ивенса (Eric Evans), с которых можно начать:</p>
<p>1) <a href="http://www.infoq.com/presentations/model-to-work-evans">DDD: putting the model to work</a></p>
<p>2) <a href="http://www.infoq.com/presentations/strategic-design-evans">Eric Evans on DDD: Strategic Design</a></p>
<p>На портале <a href="http://www.infoq.com/">InfoQ</a> можно найти множество других <a href="http://www.infoq.com/domain-driven-design">презентаций, статей и интервью</a>, посвященных DDD.</p>
<p><img style="display:inline;margin:10px 10px 0 0;" align="left" src="http://tbn3.google.com/images?q=tbn:yo93K63P4ozz5M:http://www.diesel-ebooks.com/mas_assets/full/0470384026.jpg" />Итак, с теоретической частью мы разобрались, где же можно найти <strong>примеры практического применения DDD? </strong>Отличной книгой для этого является <a href="http://www.amazon.com/NET-Domain-Driven-Design-Solution-Programmer/dp/0470147563"><strong>.NET Domain-Driven</strong> Design with C#, Problem – Design – Solution</a> написанная Tim McCarthy.&#160; </p>
<p>В этой книге вы наёдете практические примеры:</p>
<p>1) Как проходит процесс проектирования и разработки, от определения требований, до написания кода</p>
<p>2) Как организовывать архитектурные слои в своих решениях</p>
<p>3) Как применять шаблоны и практики DDD</p>
<p>4) Как построить небольшой каркас для DDD</p>
<p>5) Как изолировать домен предметной области от модели</p>
<p>6) Современные паттерны представления данных и взаимодействия с ними (Model-View-ViewModel) в такой среде как WPF (так же применимы к Silverlight) в практики.</p>
<p>Эта книга – отличный практикум по DDD, содержащий очень широкий пласт идей. Начинается книга с разработки требований, а заканчивается реализацией промышленного приложения, исходные коды которого доступны на <a href="http://www.codeplex.com/dddpds">Codeplex</a>.</p>
<p>Вся концепция книги построена на 3 книгах-столпах DDD: </p>
<ol>
<li>PoEAA Мартина Фаулера </li>
<li>DDD Эрика Ивенса </li>
<li>Applying Domain &#8211; Driven Design and Patterns by Jimmy Nilsson’s <a href="http://www.books.ru/shop/books/536846?partner=butaji">(“Применение шаблонов проектирования: проблемно-ориентированное проектирование приложений с примерами на C# и .NET” Джимми Нильссона )</a> </li>
</ol>
<p> <img style="display:inline;margin:10px 10px 10px 0;" align="left" src="http://www.books.ru/img/536846.jpg" width="134" height="196" />
<p>В этой книге поверхностно рассмотрены все вопросы, техники и паттерны, применяемые в DDD, все примеры сопровождаются кодом, что упрощает понимание. Книга превосходная, однако русский перевод подкачал, поэтому, рекомендую прочитать оригинал.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>Однако DDD – это не просто практические решения или шаблоны, это мышление и подход, и есть великое множество нюансов, которые необходимо учитывать, если вы решили следовать DDD, таких как: фокусирование на высокий приоритет отдается модели, выработка языка предметной области, контекст модели, процесс моделирования, разделение знаний, рефакторинг, стратегический дизайн и т.д…это является&#160; основной причиной ознакомиться с книгой Эрика Ивенса, так как она даст вам более объемное и глубокое понимание философии DDD.</p>
<p><strong>DDD не привязанны к конкретной технологии, </strong>однако соблюдать DDD будет не так просто, без наличия хороших средств и практик в вашем арсенале, таких как: TDD-фреймворк, ORM, возможность реализации независимости сохраняемости (Persistence Ignorance), IoC-контейнер (Inversion of Control), и возможностей AOP (Аспектно-Ориентированного Программирования), конечно не значит, что все эти инструменты нам понадобятся, однако они приблизят нас к реализации DDD на практике. Практичная ценность этих средств в том, что они позволять изолировать модель предметной области, что является ключевой целью DDD. Книга Джимми Нильссона может познакомить вас с возможностями и видами данных инструментов. Джимми так же показывает как использовать <a href="http://martinfowler.com/eaaCatalog/index.html">шаблоны реализации корпоративных приложений</a>, и строить, благодаря им, цельное решение, основанное на современных инструментах и практиках.</p>
<p>Некоторые реализации шаблонов DDD на Ruby On Rails:</p>
<h4><a href="http://www.simplewebapp.de/2008/09/some-ddd-domain-driven-design-concepts-implemented-in-rails/">Some DDD (Domain Driven Design) Concepts implemented in Rails</a></h4>
<h2>4. Актуальные вопросы DDD</h2>
<p>C DDD так же тесно связана такая тема, как DDDD: Distributed Domain Driven Design (Распределенный DDD). DDDD – это DDD в распределенных сценариях. В настоящее время существует не так много ресурсов, посвященных DDDD, в нескольких словах о DDDD: покрывает проблему реализации сообщений и DDD, разделение команд и запросов (<a href="http://en.wikipedia.org/wiki/Command-Query_Separation">Command Query Separation (CQS)</a>) помогает реализовать данный подход. Грег Янг (<a href="http://codebetter.com/blogs/gregyoung/">Greg Young</a>) сообщил, что готовит <a href="http://www.infoq.com/interviews/greg-young-ddd">книгу, посвященную DDDD</a>.</p>
<p><a href="http://ru.wikipedia.org/wiki/Сервисно-ориентированная_архитектура">SOA</a> и DDD – это ещё одна объемная тема, часто обсуждаемая <a href="http://www.udidahan.com/">Udi Dahan</a></p>
<h2>5. DDD шаблоны, концепции и понятия</h2>
<p>В промышленных приложениях DDD использует ряд шаблонов, часть которых описана в книге Эрика Ивенса, но, это не отменяет применение объектно-ориентированного подхода, включающего <a href="http://en.wikipedia.org/wiki/Design_Patterns">GoF-шаблоны</a>,&#160; <a href="http://martinfowler.com/eaaCatalog/index.html">шаблоны Мартина Фаулера, описанные в его PoEAA</a>, <a href="http://www.enterpriseintegrationpatterns.com/">Шаблоны интеграции корпоративных приложений</a> и т.д.…</p>
<p>Вот некоторые из них:</p>
<ul>
<li><a href="http://domaindrivendesign.org/node/135">Value Object</a> </li>
<li><a href="http://www.martinfowler.com/bliki/EvansClassification.html">Entity</a> </li>
<li><a href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2008/08/21/services-in-domain-driven-design.aspx">Service</a> </li>
<li><a href="http://codeidol.com/csharp/domain-driven-design/A-Model-Expressed-in-Software/a.-Packages)/">Module</a> </li>
<li><a href="http://domaindrivendesign.org/node/88">Aggregate</a> </li>
<li><a href="http://martinfowler.com/eaaCatalog/repository.html">Repository</a> </li>
<li><a href="http://blogs.interknowlogy.com/timmccarthy/archive/2007/01/22/10863.aspx">Specification</a> </li>
<li><a href="http://martinfowler.com/eaaCatalog/layerSupertype.html">Layer Supertype</a> </li>
<li><a href="http://martinfowler.com/eaaCatalog/identityMap.html">Identity Map</a> </li>
<li><a href="http://domaindrivendesign.org/discussion/messageboardarchive/Factories.html">Factories</a> </li>
<li><a href="http://martinfowler.com/eaaCatalog/unitOfWork.html">Unit of Work(UoW)</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/cc707904.aspx">Inversion of Control(IoC)</a> </li>
<li><a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming">Aspect Oriented Programming(AOP)</a> </li>
<li><a href="http://domaindrivendesign.org/node/91">Bounded Context</a> </li>
<li><a href="http://domaindrivendesign.org/node/132">Ubiquities language</a> </li>
<li><a href="http://en.wikipedia.org/wiki/Object-relational_mapping">Object-relational mapping(ORM)</a> </li>
<li><a href="http://www.martinfowler.com/bliki/AnemicDomainModel.html">Anemic Domain Model anti pattern</a> </li>
</ul>
<h2>6. Примеры приложений</h2>
<p>Найти хорошие примеры реализации DDD очень сложно, не потому что их не существует, а потому что реальная сила DDD реализуется в приложениях, используемых в довольно сложных областях, и, как правило, являющихся коммерческими проектами. Однако можно найти несколько неплохих проектов, в которых можно проследить некоторые идеи реализации шаблонов DDD.</p>
<p>Вот они:</p>
<p>1) Приложение Тима Маккарти <a href="http://www.codeplex.com/dddpds">его проект</a>, описанный в деталях в его книге. Он описывает не только применение шаблонов, но так же акцентирует внимание в разработке модели предметной области с точки зрения DDD.</p>
<p>Проект так же интересен тем, что построен на .NET 3.5 и демонстрирует всю силу современного подхода связывания данных с моделью предметной области (data binding, реализация шаблона MVVM). Так же его стиль примечателен умением выделять абстракции и повторно используемый код.&#160;&#160;&#160;&#160;&#160;&#160; </p>
<p>2) Следующий проект, на который следует обратить внимание – это <a href="http://www.goeleven.com/resources/architecture/DDD/DDDSeries-Example.zip">приложение</a> разработанное <a href="http://www.goeleven.com/">Yves Goeleven</a>, создание данного приложения описано в его <a href="http://www.goeleven.com/blog/entryDetail.aspx?entry=89">блоге</a> (так же посвященному основным концептам DDD). Другим его приложением является <a href="http://www.goeleven.com/resources/architecture/DDD/DDDSeries-Framework.zip">DDD-каркас</a>. Следует обратить внимание на его реализацию взаимодействия шаблонов <a href="http://www.martinfowler.com/eaaCatalog/repository.html">Repository</a> и <a href="http://en.wikipedia.org/wiki/Specification_pattern">Specification</a>.&#160; </p>
<p>3) Billy McCafferty разрабатывает потрясающий open source фреймворк, сфокусированный на DDD, под названием <a href="http://code.google.com/p/sharp-architecture/">S#arp Architecture</a>. У него есть очень хорошее <a href="http://www.codeproject.com/KB/architecture/NHibernateBestPractices.aspx">описание</a>, включающее в себя описание шаблонов и подходов, заключенных в фреймворке. Фреймворк нацелен на разработку ASP.NET MVC приложений с применением NHibernate. </p>
<p>4) <a href="http://code.google.com/p/ndddsample/">C# Domain-Driven Design sample application ( ndddsample )</a>, это приложение, разрабатываемое Джимми Нильссоном, демонстрирует разбиение приложения на ключевые слои с точки зрения DDD. Так же демонстрируется практическое применение шаблонов <a href="http://www.informit.com/articles/article.aspx?p=598888">building block</a> в предметной области перевозки грузов, описанной в его книге. </p>
<p>Этот проект основан на совместной работе компании Эрика Ивенса “Domain Language” и шведской консалтинговой компании “Citerus”.</p>
<p>Цель этого проекта:</p>
<ul>
<li>Показать практическое применение использования DDD с применением .NET. </li>
<li>Использование актуальных утилит, технологий и методологий разработки в области .NET, обсуждаемых <a href="http://butaji.wordpress.com/2009/01/21/что-такое-altnet/">ALT.NET</a>-коммунити. </li>
<li>Привести практические примеры реализации типовых DDD приложений. </li>
<li>Показать способ реализации DDD на конкретной платформе, что позволит без труда осуществить тоже самое на любой другой платформе. </li>
<li>Помочь в выборе реализуемых практик. Различные подходы позволят сообществу обсудить их и выбрать соответствующий для конкретной реализации. </li>
</ul>
<p><a href="http://code.google.com/p/ndddsample/">здесь более подробная информация</a>.</p>
<h2>7. Ресурсы по Domain Driven Design</h2>
<blockquote><p>Официальный сайт &#8211; <a href="http://domaindrivendesign.org/">http://domaindrivendesign.org/</a></p>
<p>Группа обсуждений &#8211; <a href="http://tech.groups.yahoo.com/group/domaindrivendesign/">http://tech.groups.yahoo.com/group/domaindrivendesign/</a> это взрослая группа, очень хороший источник идей, место для обсуждений всех видов проблем в области DDD. В ней на ваши вопросы могут ответить опытные в DDD люди, даже Эрик Ивенс <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p>Блог Jimmy Bogard’а &#8211; <a href="http://www.lostechies.com/blogs/jimmy_bogard/default.aspx">http://www.lostechies.com/blogs/jimmy_bogard/default.aspx</a></p>
<p>Блог Colin Jack’а &#8211; <a href="http://colinjack.blogspot.com/">http://colinjack.blogspot.com/</a></p>
<p>Блог Greg Young’а &#8211; <a href="http://codebetter.com/blogs/gregyoung/default.aspx">http://codebetter.com/blogs/gregyoung/default.aspx</a></p>
<p>Блог Casey Charlton’а &#8211; <a href="http://devlicio.us/blogs/casey/">http://devlicio.us/blogs/casey/</a></p>
<p>Блог Udi Dahan’а &#8211; <a href="http://www.udidahan.com/">http://www.udidahan.com/</a></p>
<p>Введение в Domain-Driven Design &#8211; <a href="http://msdn.microsoft.com/ru-ru/magazine/dd419654.aspx">http://msdn.microsoft.com/ru-ru/magazine/dd419654.aspx</a></p>
</blockquote>
<h2>8. Заключение</h2>
<p>Если вы заинтересованы в расширении ваших “объектно-ориентированных горизонтов” в сложных корпоративных системах и изучении новых способов разработки и проектирования, то DDD – именно то что нужно. </p>
<p><a href="http://weblogs.asp.net/arturtrosin/archive/2009/02/09/domain-driven-design-learning.aspx">http://weblogs.asp.net/arturtrosin/archive/2009/02/09/domain-driven-design-learning.aspx</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Screencast: Keeping Features Out Your Way With Branching]]></title>
<link>http://nothingyoumissed.wordpress.com/2009/06/04/screencast-keeping-features-out-your-way-with-branching/</link>
<pubDate>Thu, 04 Jun 2009 19:12:23 +0000</pubDate>
<dc:creator>togakangaroo</dc:creator>
<guid>http://nothingyoumissed.wordpress.com/2009/06/04/screencast-keeping-features-out-your-way-with-branching/</guid>
<description><![CDATA[Pop quiz:  What&#8217;s the software developer&#8217;s biggest enemy?  It&#8217;s not marketing.  It]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Pop quiz:  What&#8217;s the software developer&#8217;s biggest enemy?  It&#8217;s not marketing.  It&#8217;s not those snot-nosed DBAs.  The rigid chair that will invariably give you arthritis?  Nah.  Your know-nothing boss?  Not even close.  No, the developer&#8217;s biggest enemy is the customer.</p>
<p>That&#8217;s right customers and their god d*mn feature requests and bug reports!  Life would be so much easier without them.  And acknowledging the absurdity of that statement, unless you are some kind of programmer <a href="http://en.wikipedia.org/wiki/Adonis">Adonis</a> (which unlike a regular Adonis physically implies only that your esophagus is invulnerable to lesions caused by <a href="http://www.bawls.com/">Bawls</a>) and write flawless code you will have to deal with feature requests that can rapidly pile up and overwhelm your development process.</p>
<p>I had mentioned previously on this blog that I am working with a team of Indian contractors and this is exactly what they found happening with the latest <em>high stakes omg-fix-this-now-or-we-all-die </em>release.  The team was behind and the release went out mere minutes before users started working with it.  Of course in the rush to finish on time bugs cropped up and features were left out.  Lots of features.</p>
<p>So immediately the next morning, with tickets raining down and demands for new drops every day the team got to work.  And the daily releases never came.  On the 3rd day we finally dived into their process with them to identify the problem.  </p>
<p>Simply speaking, they couldn&#8217;t reach a stopping point.  By the time certain features were ready to go others were half-implemented and so no release could be scheduled.  It was like some sort of real life <a href="http://en.wikipedia.org/wiki/Zeno's_paradoxes">Zeno&#8217;s paradox</a>.  Fortunately this one has a solution.  Fully acknowledging that it is probably named differently in a dozen books and Agile pamphlets (just not any that I&#8217;ve seen), I call it branch-per-release or &#8220;how to use source control to get yourself out of a tight spot&#8221;. </p>
<p>The idea is blatantly simple:</p>
<ol>
<li>Chose a release date</li>
<li>Decide which features will fit in that release date</li>
<li>Use your source control chops to create a branch for that release</li>
<li>Decide what release each of the features on your plate goes in</li>
<li>Create a branch for each of those releases</li>
<li>Implement each feature set in the branch for its release</li>
<li>When development on a branch is completed and tested, reintegrate into trunk.</li>
<li>Rinse, repeate.</li>
</ol>
<p>I have created a presentation and a series of screencasts (3 x 5 minutes thank you <a href="http://www.jingproject.com/">Jing</a>) to demonstrate the process.  And here they all are:</p>
<ul>
<li><a href="http://docs.google.com/Presentation?id=dnmmm9d_105c5r2mwhr">Presentation</a> &#8211; 6 Slides, Google Docs format (so its viewable in-browser)</li>
<li><a href="http://content.screencast.com/users/togakangaroo/folders/BranchVersioningDemo/media/b38e3992-0a2e-4c3e-8084-4f5d0fb01887/p1.swf">Part 1</a>  </li>
<li><a href="http://content.screencast.com/users/togakangaroo/folders/BranchVersioningDemo/media/fbe88cba-31ff-4318-a002-fbaffed1656b/p2.swf">Part 2</a></li>
<li><a href="http://content.screencast.com/users/togakangaroo/folders/BranchVersioningDemo/media/fbd8e5e8-98a7-41e4-a523-2f8bd82f0879/p3.swf">Part 3</a></li>
</ul>
<p>Apparently embedding videos on wordpress.com is a pain in the *ss (as is code highlighting) so as mere links they must stay.</p>
<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/us/"><img alt="Creative Commons License" style="border-width:0;" src="http://i.creativecommons.org/l/by-sa/3.0/us/88x31.png" /></a><br />This <span>work</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/us/">Creative Commons Attribution-Share Alike 3.0 United States License</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[ALT.NET en France : Présentation AOP à Paris le 17 juin]]></title>
<link>http://codingly.com/2009/06/02/alt-net-en-france-presentation-aop-a-paris-le-17-juin/</link>
<pubDate>Tue, 02 Jun 2009 21:18:28 +0000</pubDate>
<dc:creator>Romain Verdier</dc:creator>
<guid>http://codingly.com/2009/06/02/alt-net-en-france-presentation-aop-a-paris-le-17-juin/</guid>
<description><![CDATA[Avant toute chose : Non, je ne chercherai pas à justifier le rythme misérable de mes publications su]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Avant toute chose : Non, je ne chercherai pas à justifier le rythme misérable de mes publications sur ce blog. Et non, je ne m&#8217;excuserai pas de tricher lamentablement en postant aujourd&#8217;hui quelque chose d&#8217;aussi, heu, bref.</p>
<p>Je voulais vous informer, ou plus probablement vous rappeler, que j&#8217;allais commettre une présentation sur l&#8217;<a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming">AOP</a>, le 17 juin, à l&#8217;occasion de la 14ème rencontre ALT.NET Parisienne. Vous trouverez les détails pratiques <a href="http://www.altnetfr.org/2009/05/28/altnet-paris-14-aspect-oriented-programming-aop/">sur notre joli site</a>. Merci à <a href="http://www.fastconnect.fr">FastConnect</a> qui sponsorise l&#8217;évènement.<br />
<!--more--><br />
Il va sans dire que je serais plus à l&#8217;aise s&#8217;il n&#8217;y avait que 3 personnes qui jugeaient bon de se déplacer. Pourtant, je vais m&#8217;asseoir sur cette considération et vous inviter à venir nombreux. Plusieurs fois au cours des rencontres précédentes nous avons abordé la question de la programmation orientée aspect lors des discussions libres, et il semblerait donc que le sujet rende curieux, à défaut de préoccuper. Peut-être mérite-t-il que nous lui fassions plus de place le temps d&#8217;une soirée. Je ne sais pas encore exactement quel sera l&#8217;agenda, mais l&#8217;idée est de présenter l&#8217;AOP en tant que concept, de le confronter gentiment aux paradigmes traditionnels, avant de passer plus concrètement à l&#8217;étude des différentes techniques et outils qui existent en .NET.</p>
<p>D&#8217;aucuns pourraient penser que le sujet n&#8217;est pas spécialement ALT.NET.</p>
<p>Ce à quoi je répondrais :</p>
<blockquote><p>Certes, certes&#8230;</p></blockquote>
<p>Enfin. Si on compte uniquement sur Microsoft pour profiter de l&#8217;AOP on risque assez rapidement de se sentir à l&#8217;étroit. Il est possible de faire de l&#8217;AOP sans sortir de la BCL, oui, et il est possible de faire de l&#8217;AOP <em>un peu plus facilement</em> en débordant sur <a href="http://stackoverflow.com/questions/833729/built-in-aop-in-c-is-it-on-the-way/833919#833919">EntLib</a>. Cependant, les solutions les plus matures et les plus riches pour faire de l&#8217;AOP en .NET ne sont pas forcément estampillées Microsoft, ce qui risque de conduire l&#8217;utilisateur averti vers des frameworks plus spécialisés, open-source ou pas. Je veux parler de Castle.DynamicProxy, PostSharp, Linfu, Mono.Cecil, Spring.NET, etc.</p>
<p>Moi, je trouve que ça sent ALT.NET.</p>
<p>Bref, j&#8217;espère que cette rencontre verra naitre un débat et que nous pourrons collecter quelques retours d&#8217;expériences, comparer nos approches, bailler, etc. Encore une fois, toutes les infos sont disponibles sur le site <a href="http://www.altnetfr.org/">altnetfr</a>, à <a href="http://www.altnetfr.org/2009/05/28/altnet-paris-14-aspect-oriented-programming-aop/">cette adresse</a>.</p>
<p>Pensez à <a href="http://www.doodle.com/nd4f57ugtsddqk36">vous inscrire</a>, et n&#8217;hésitez pas à faire passer l&#8217;info.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[VAN &ndash; Virtual ALT.NET sobre Nhibernate]]></title>
<link>http://devsoftx.wordpress.com/2009/05/23/van-virtual-alt-net-sobre-nhibernate/</link>
<pubDate>Sat, 23 May 2009 15:41:00 +0000</pubDate>
<dc:creator>Jose Fabricio Rojas</dc:creator>
<guid>http://devsoftx.wordpress.com/2009/05/23/van-virtual-alt-net-sobre-nhibernate/</guid>
<description><![CDATA[Hola con todos, el día de mañana domingo 24 se realizara la primera VAN(espero que sean varias) sobr]]></description>
<content:encoded><![CDATA[Hola con todos, el día de mañana domingo 24 se realizara la primera VAN(espero que sean varias) sobr]]></content:encoded>
</item>
<item>
<title><![CDATA[Resultados del Primer VAN Hispano(Virtual ALT.NET)]]></title>
<link>http://devsoftx.wordpress.com/2009/04/28/resultados-del-primer-van-hispanovirtual-altnet/</link>
<pubDate>Tue, 28 Apr 2009 12:38:00 +0000</pubDate>
<dc:creator>Jose Fabricio Rojas</dc:creator>
<guid>http://devsoftx.wordpress.com/2009/04/28/resultados-del-primer-van-hispanovirtual-altnet/</guid>
<description><![CDATA[Bueno, el sábado 25 se realizo la primera VAN en habla hispana, lamentablemente no pude asistir , co]]></description>
<content:encoded><![CDATA[Bueno, el sábado 25 se realizo la primera VAN en habla hispana, lamentablemente no pude asistir , co]]></content:encoded>
</item>
<item>
<title><![CDATA[Primera VAN en Latinoam&eacute;rica &ndash; Virtual ALT.NET]]></title>
<link>http://devsoftx.wordpress.com/2009/04/22/primera-van-en-latinoamrica-virtual-altnet/</link>
<pubDate>Wed, 22 Apr 2009 22:01:00 +0000</pubDate>
<dc:creator>Jose Fabricio Rojas</dc:creator>
<guid>http://devsoftx.wordpress.com/2009/04/22/primera-van-en-latinoamrica-virtual-altnet/</guid>
<description><![CDATA[Hola con todos , a través de Jorge Gamba me entero que la Comunidad ALT.NET Hispano realizará la pri]]></description>
<content:encoded><![CDATA[Hola con todos , a través de Jorge Gamba me entero que la Comunidad ALT.NET Hispano realizará la pri]]></content:encoded>
</item>
<item>
<title><![CDATA[&iquest;Que es ASP.NET MVC?]]></title>
<link>http://devsoftx.wordpress.com/2009/04/22/que-es-aspnet-mvc/</link>
<pubDate>Wed, 22 Apr 2009 15:42:00 +0000</pubDate>
<dc:creator>Jose Fabricio Rojas</dc:creator>
<guid>http://devsoftx.wordpress.com/2009/04/22/que-es-aspnet-mvc/</guid>
<description><![CDATA[Hola con todos, este es el primer post acerca de ASP.NET MVC, espero contribuir: con mi experiencia ]]></description>
<content:encoded><![CDATA[Hola con todos, este es el primer post acerca de ASP.NET MVC, espero contribuir: con mi experiencia ]]></content:encoded>
</item>
<item>
<title><![CDATA[I'll be speaking at Chicago Code Camp!]]></title>
<link>http://just3ws.wordpress.com/2009/04/21/ill-be-speaking-at-chicago-code-camp/</link>
<pubDate>Tue, 21 Apr 2009 03:01:58 +0000</pubDate>
<dc:creator>just3ws</dc:creator>
<guid>http://just3ws.wordpress.com/2009/04/21/ill-be-speaking-at-chicago-code-camp/</guid>
<description><![CDATA[I&#8217;ve been doing some deep-diving on the PostSharp documents in preparation for my first code c]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I&#8217;ve been doing some deep-diving on the PostSharp documents in preparation for my first code camp presentation.</p>
<p>Chicago Code Code Camp<br />
May 30th 2009<br />
<a href="http://www.chicagocodecamp.com/">http://www.chicagocodecamp.com/</a></p>
<p>I&#8217;ll be presenting an introduction to AOP using PostSharp. Very exciting, very cool. I am really excited about this. But much work to be done!</p>
<p>And just so I&#8217;m not a liar, check out Sergio&#8217;s post of speakers and presentations! Wow, what a spread of topics. Too bad I&#8217;ll be speaking because I would like to check out every one! <a href="http://devlicio.us/blogs/sergio_pereira/archive/2009/04/19/partial-list-of-sessions-for-chicago-code-camp.aspx">partial-list-of-sessions-for-chicago-code-camp</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Boo Programming Language]]></title>
<link>http://butaji.wordpress.com/2009/04/18/boo-programming-language/</link>
<pubDate>Sat, 18 Apr 2009 07:56:44 +0000</pubDate>
<dc:creator>butaji</dc:creator>
<guid>http://butaji.wordpress.com/2009/04/18/boo-programming-language/</guid>
<description><![CDATA[Slides from first meeting of spbalt.net group 25 Feb&#8217;09 View this document on Scribd]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Slides from first meeting of <a href="http://spbalt.net">spbalt.net</a> group 25 Feb&#8217;09 <object id="14356100" name="14356100" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" align="middle" height="500" width="100%">
<param name="movie" value="http://documents.scribd.com/ScribdViewer.swf?document_id=14356100&access_key=key-t194lc0oo84pwaf1lb0&page=&version=1&auto_size=true&viewMode="><param name="quality" value="high"><param name="play" value="true"><param name="loop" value="true"><param name="scale" value="showall"><param name="wmode" value="opaque"><param name="devicefont" value="false"><param name="bgcolor" value="#ffffff"><param name="menu" value="true"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><param name="salign" value="">
<embed src="http://documents.scribd.com/ScribdViewer.swf?document_id=14356100&access_key=key-t194lc0oo84pwaf1lb0&page=&version=1&auto_size=true&viewMode=" name="14356100_object" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" menu="true" allowfullscreen="true" allowscriptaccess="always" salign="" type="application/x-shockwave-flash" align="middle"  height="500" width="100%"></embed>
</object>
<div style="font-size:10px;text-align:center;width:100%"><a href="http://www.scribd.com/doc/14356100">View this document on Scribd</a></div></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[ALT .NET ]]></title>
<link>http://sakowicz.wordpress.com/2009/04/15/alt-net/</link>
<pubDate>Wed, 15 Apr 2009 21:40:20 +0000</pubDate>
<dc:creator>sakowicz</dc:creator>
<guid>http://sakowicz.wordpress.com/2009/04/15/alt-net/</guid>
<description><![CDATA[Właśnie zauważyłem, że całkiem niedawno, bo w Grudniu ubiegłego roku, powstała w Dublinie grupa ALT ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:justify;">Właśnie zauważyłem, że całkiem niedawno, bo w Grudniu ubiegłego roku, powstała w Dublinie grupa <a href="http://dublinalt.net/">ALT .NET</a>. Jest to pierwsza tego typu inicjatywa w Irlandii. Spotkania tego typu są świetną okazja do poszerzenia swoich wiadomości jak również spotkania ludzi o podobnych zainteresowaniach. Dla tych, co nie wiedzą, czym jest ALT .NET krótkie wyjaśnienie ze strony społeczności:</p>
<p style="text-align:justify;padding-left:30px;"><em>We are a self-organizing, ad-hoc community of developers bound by a desire to improve ourselves, challenge assumptions, and help each other pursue excellence in the practice of software development.</em></p>
<p style="text-align:justify;padding-left:30px;">Źródło:<em> <a href="http://altdotnet.org/">http://altdotnet.org/</a></em></p>
<p style="text-align:justify;">
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Alt.Net Beers #7 was a good time]]></title>
<link>http://andrewmyhre.wordpress.com/2009/04/01/altnet-beers-7-was-a-good-time/</link>
<pubDate>Wed, 01 Apr 2009 09:12:58 +0000</pubDate>
<dc:creator>Andrew Myhre</dc:creator>
<guid>http://andrewmyhre.wordpress.com/2009/04/01/altnet-beers-7-was-a-good-time/</guid>
<description><![CDATA[Thanks to everyone who attended Alt.Net Beers #7 and made it such a fun, interesting night. I hope e]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Thanks to everyone who attended Alt.Net Beers #7 and made it such a fun, interesting night. I hope everyone learned a whole heap about DDD &#8211; I know I did.</p>
<p><a href="http://twitpic.com/2o903"><img class="alignnone size-medium wp-image-235" title="31032009273" src="http://andrewmyhre.wordpress.com/files/2009/04/31032009273.jpg?w=225" alt="31032009273" width="158" height="210" /></a></p>
<p><a href="http://twitpic.com/2o91q"><img class="alignnone size-medium wp-image-234" title="31032009272" src="http://andrewmyhre.wordpress.com/files/2009/04/31032009272.jpg?w=300" alt="31032009272" width="300" height="225" /></a></p>
<p><a href="http://twitpic.com/2oan6"><img class="alignnone size-medium wp-image-233" title="31032009271" src="http://andrewmyhre.wordpress.com/files/2009/04/31032009271.jpg?w=300" alt="31032009271" width="300" height="225" /></a></p>
<p><a href="http://twitpic.com/2oan7"><img class="alignnone size-medium wp-image-232" title="31032009270" src="http://andrewmyhre.wordpress.com/files/2009/04/31032009270.jpg?w=300" alt="31032009270" width="300" height="225" /></a></p>
<p><a href="http://twitpic.com/2oan5"><img class="alignnone size-medium wp-image-231" title="31032009269" src="http://andrewmyhre.wordpress.com/files/2009/04/31032009269.jpg?w=300" alt="31032009269" width="300" height="225" /></a></p>
<p><a href="http://twitpic.com/2nd2t"><img class="alignnone size-medium wp-image-229" title="31032009267" src="http://andrewmyhre.wordpress.com/files/2009/04/31032009267.jpg?w=300" alt="31032009267" width="300" height="225" /></a></p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
