<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Coding the Architecture - sbrown</title>
  <link>http://www.codingthearchitecture.com/authors/sbrown/</link>
  <description>Software architecture for developers</description>
  <language>en</language>
  <copyright>Coding the Architecture</copyright>
  <lastBuildDate>Mon, 09 Jan 2012 09:02:08 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>Ikke så smidig prosjektmetode, likevel?</title>
    <link>http://www.codingthearchitecture.com/2012/01/09/ikke_s_smidig_prosjektmetode_likevel.html</link>
    
      
        <description>
          &lt;p&gt;
While with &lt;a href=&#034;http://www.bouvet.no&#034; target=&#034;_blank&#034;&gt;Bouvet&lt;/a&gt;, in addition to the &lt;a href=&#034;http://www.codingthearchitecture.com/2012/01/08/smidig_m_kombineres_med_arkitektur.html&#034;&gt;digi.no interview&lt;/a&gt;, Simen Sommerfeldt and I were interviewed by Teknisk Ukeblad about how agile isn&#039;t a substitute for basic software engineering, architecture and craftsmanship.
&lt;/p&gt;

&lt;p align=&#034;center&#034;&gt;
&lt;a href=&#034;http://www.tu.no/it/article293780.ece&#034; target=&#034;_blank&#034;&gt;&lt;img src=&#034;http://www.codingthearchitecture.com/images/20111202-teknisk-ukeblad.jpg&#034; border=&#034;0&#034; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Read &lt;a href=&#034;http://www.tu.no/it/article293780.ece&#034; target=&#034;_blank&#034;&gt;Ikke så smidig prosjektmetode, likevel?&lt;/a&gt;...
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2012/01/09/ikke_s_smidig_prosjektmetode_likevel.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2012/01/09/ikke_s_smidig_prosjektmetode_likevel.html</guid>
    <pubDate>Mon, 09 Jan 2012 09:02:08 GMT</pubDate>
  </item>
  
  <item>
    <title>Smidig må kombineres med arkitektur</title>
    <link>http://www.codingthearchitecture.com/2012/01/08/smidig_m_kombineres_med_arkitektur.html</link>
    
      
        <description>
          &lt;p&gt;
I spent a fantastic few days with &lt;a href=&#034;http://www.bouvet.no&#034; target=&#034;_blank&#034;&gt;Bouvet&lt;/a&gt; in Oslo towards the end of last year where talked about software architecture with some of the team, customers and press. For the Norwegian speakers that haven&#039;t seen it, Simen Sommerfeldt and I were interviewed by digi.no about software architecture, agile and &#034;&lt;a href=&#034;http://www.codingthearchitecture.com/2012/01/05/contextualising_just_enough_up_front_design.html&#034;&gt;just enough&lt;/a&gt;&#034;.
&lt;/p&gt;

&lt;p align=&#034;center&#034;&gt;
&lt;a href=&#034;http://www.digi.no/881998/smidig-maa-kombineres-med-arkitektur&#034; target=&#034;_blank&#034;&gt;&lt;img src=&#034;http://www.codingthearchitecture.com/images/20111109-digi.jpg&#034; alt=&#034;digi.no interview&#034; border=&#034;0&#034; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Read &lt;a href=&#034;http://www.digi.no/881998/smidig-maa-kombineres-med-arkitektur&#034; target=&#034;_blank&#034;&gt;Smidig må kombineres med arkitektur&lt;/a&gt;...
&lt;/p&gt;



        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2012/01/08/smidig_m_kombineres_med_arkitektur.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2012/01/08/smidig_m_kombineres_med_arkitektur.html</guid>
    <pubDate>Sun, 08 Jan 2012 21:17:20 GMT</pubDate>
  </item>
  
  <item>
    <title>Contextualising just enough up front design</title>
    <link>http://www.codingthearchitecture.com/2012/01/05/contextualising_just_enough_up_front_design.html</link>
    
      
      
        <description>
          &lt;p&gt;
In our move away from the waterfall way of building software, it&#039;s common for software teams to ask how much up front design they should be doing. &lt;a href=&#034;http://www.codingthearchitecture.com/pages/book/just-enough-architecture.html&#034; target=&#034;_blank&#034;&gt;Just enough&lt;/a&gt; is a good starting point but what exactly does that mean?
&lt;/p&gt;&lt;p&gt;&lt;a href=&#034;http://www.codingthearchitecture.com/2012/01/05/contextualising_just_enough_up_front_design.html&#034;&gt;Read more...&lt;/a&gt;&lt;/p&gt;
        </description>
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2012/01/05/contextualising_just_enough_up_front_design.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2012/01/05/contextualising_just_enough_up_front_design.html</guid>
    <pubDate>Thu, 05 Jan 2012 22:40:41 GMT</pubDate>
  </item>
  
  <item>
    <title>RE: Clean Architecture</title>
    <link>http://www.codingthearchitecture.com/2011/11/22/re_clean_architecture.html</link>
    
      
        <description>
          &lt;p&gt;
&lt;a href=&#034;http://blog.8thlight.com/uncle-bob/2011/11/22/Clean-Architecture.html&#034; target=&#034;_blank&#034;&gt;Clean Architecture&lt;/a&gt; is a follow-up post by Uncle Bob to much of the recent commentary on &lt;a href=&#034;http://www.cleancoders.com/codecast/clean-code-episode-7/show&#034; target=&#034;_blank&#034;&gt;Clean Code Episode VII - Architecture, Use Cases, and High Level Design&lt;/a&gt;, including my own post called &lt;a href=&#034;http://www.codingthearchitecture.com/2011/11/06/the_delivery_mechanism_is_an_annoying_detail.html&#034; target=&#034;_blank&#034;&gt;The delivery mechanism is an annoying detail&lt;/a&gt;. I&#039;ll keep this short because I only want to pick up on a couple of points. Uncle Bob says...
&lt;/p&gt;

&lt;blockquote&gt;
In the weeks since I started talking about the need to clean up our architecture, I’ve noticed a surprising resistance to the idea. Apparently the notion that it’s a good idea to hide the framework, UI, or database from the application code is not universally accepted.
&lt;/blockquote&gt;

&lt;p&gt;
I&#039;m 100% behind the idea of keeping architectures clean and (as far as possible) decoupling the application code from the technology choices. I even mention &#034;Boundary, Controller, Entity&#034; in my &lt;a href=&#034;/2011/11/16/the_frustrated_architect_video_and_slides.html&#034; target=&#034;_blank&#034;&gt;The Frustrated Architect talk (video available)&lt;/a&gt; as a good way to decouple. I mean, why would you want to start a web server or database just to run some unit tests? That&#039;s crazy.
&lt;/p&gt;

&lt;blockquote&gt;
One somewhat dissenting view, written by The Frustrated Architect in his coding {the} architecture blog is here. He shows a picture, which I’ll repeat:
&lt;br /&gt;
&lt;br /&gt;
... see picture below ...
&lt;br /&gt;
&lt;br /&gt;
The point he’s trying to make is that if the UI and Database are a much larger part of the system than the business rules, then the architecture of the system should be more oriented around those larger elements. Of course I disagree. No matter how large any one part of the system is, the other parts should be decoupled from it.
&lt;/blockquote&gt;

&lt;p&gt;
No, that&#039;s not the point I&#039;m trying to make. I&#039;m saying the delivery mechanism is NOT an annoying detail that can be deferred or ignored &#034;right off the end of the world&#034;. I&#039;m going to quote myself here from &lt;a href=&#034;http://www.codingthearchitecture.com/2011/11/06/the_delivery_mechanism_is_an_annoying_detail.html&#034; target=&#034;_blank&#034;&gt;The delivery mechanism is an annoying detail&lt;/a&gt;...
&lt;/p&gt;

&lt;blockquote&gt;
That&#039;s right, the annoying detail is actually a large chunk of the system and, for me, architecture is about more than just what&#039;s contained within &#034;the application&#034;. Structure is very important, but what about that tricky stuff like non-functional requirements, the actual delivery mechanism (technologies, frameworks, tools, APIs, etc), infrastructure services (e.g. logging, exception handling, configuration, etc), integration services (internal and external), satisfying any environmental constraints (e.g. operations and support), etc. For me, this is what &#034;architecture&#034; is all about and *that&#039;s* &#034;the whole enchilada&#034;.
&lt;/blockquote&gt;

&lt;p&gt;
I consider the role of the software architect to be about looking after the big picture and the type of decoupling that Uncle Bob talks about is exactly the sort of architectural principle that I would adopt on my projects. However, in this role as a software architect, I&#039;d be foolish to ignore the other major factors that may cause my project to fail. This includes, but is not limited to, all of the stuff that I quote above (tricky non-functional requirements, etc). A good software architecture is not just about clean code.
&lt;/p&gt;

&lt;p align=&#034;center&#034;&gt;
&lt;img src=&#034;http://www.codingthearchitecture.com/images/the-delivery-mechanism-is-an-annoying-detail-5.png&#034; alt=&#034;The delivery mechanism is an annoying detail&#034; /&gt;
&lt;/p&gt;

&lt;h3&gt;&lt;a name=&#034;summary&#034;&gt;The executive summary&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;
Again, to recap in case I&#039;m not being clear...
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Decoupling application code from technology is good and certainly something we should all strive for. The result is code that is easy to unit test, easy to substitute, easy to maintain, easy to change, etc.&lt;/li&gt;
&lt;li&gt;Software architecture is about the big picture and application code is only one part of that big picture.&lt;/li&gt;
&lt;li&gt;You run the risk of your software project failing if you continually defer significant decisions about the &#034;delivery mechanism&#034; and don&#039;t consider how to address your significant non-functional requirements and/or constraints.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
To summarise points 2 and 3 ... &lt;a href=&#034;http://www.codingthearchitecture.com/2011/11/06/the_delivery_mechanism_is_an_annoying_detail.html&#034; target=&#034;_blank&#034;&gt;the delivery mechanism is not an annoying detail&lt;/a&gt;. Now, please go back and read &lt;a href=&#034;http://blog.8thlight.com/uncle-bob/2011/11/22/Clean-Architecture.html&#034; target=&#034;_blank&#034;&gt;Clean Architecture&lt;/a&gt; from the &#034;Not Rocket Science&#034; section because there&#039;s some really good advice in there. :-)
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2011/11/22/re_clean_architecture.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2011/11/22/re_clean_architecture.html</guid>
    <pubDate>Tue, 22 Nov 2011 23:10:04 GMT</pubDate>
  </item>
  
  <item>
    <title>The Frustrated Architect - video and slides</title>
    <link>http://www.codingthearchitecture.com/2011/11/16/the_frustrated_architect_video_and_slides.html</link>
    
      
        <description>
          &lt;p&gt;
A really short note to say that the video and slides from my &#034;The Frustrated Architect&#034; talk at Skills Matter yesterday evening are now all available online. Here are the links...
&lt;/p&gt;

&lt;p align=&#034;center&#034;&gt;
&lt;a href=&#034;http://codingthearchitecture.com/presentations/skillsmatter2011-the-frustrated-architect/&#034; target=&#034;_blank&#034;&gt;&lt;img src=&#034;http://static.codingthearchitecture.com/presentations/skillsmatter2011-the-frustrated-architect/thumbnails/slide.005.png&#034; alt=&#034;&#034; border=&#034;0&#034; /&gt;&lt;/a&gt;
&lt;a href=&#034;http://codingthearchitecture.com/presentations/skillsmatter2011-the-frustrated-architect/&#034; target=&#034;_blank&#034;&gt;&lt;img src=&#034;http://static.codingthearchitecture.com/presentations/skillsmatter2011-the-frustrated-architect/thumbnails/slide.006.png&#034; alt=&#034;&#034; border=&#034;0&#034; /&gt;&lt;/a&gt;
&lt;a href=&#034;http://codingthearchitecture.com/presentations/skillsmatter2011-the-frustrated-architect/&#034; target=&#034;_blank&#034;&gt;&lt;img src=&#034;http://static.codingthearchitecture.com/presentations/skillsmatter2011-the-frustrated-architect/thumbnails/slide.021.png&#034; alt=&#034;&#034; border=&#034;0&#034; /&gt;&lt;/a&gt;
&lt;a href=&#034;http://codingthearchitecture.com/presentations/skillsmatter2011-the-frustrated-architect/&#034; target=&#034;_blank&#034;&gt;&lt;img src=&#034;http://static.codingthearchitecture.com/presentations/skillsmatter2011-the-frustrated-architect/thumbnails/slide.039.png&#034; alt=&#034;&#034; border=&#034;0&#034; /&gt;&lt;/a&gt;
&lt;a href=&#034;http://codingthearchitecture.com/presentations/skillsmatter2011-the-frustrated-architect/&#034; target=&#034;_blank&#034;&gt;&lt;img src=&#034;http://static.codingthearchitecture.com/presentations/skillsmatter2011-the-frustrated-architect/thumbnails/slide.069.png&#034; alt=&#034;&#034; border=&#034;0&#034; /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&#034;http://codingthearchitecture.com/presentations/skillsmatter2011-the-frustrated-architect/&#034; target=&#034;_blank&#034;&gt;Abstract and slides (online view and downloadable PDF)&lt;/a&gt;
&lt;/p&gt;

&lt;p align=&#034;center&#034;&gt;
&lt;a href=&#034;http://skillsmatter.com/podcast/java-jee/frustrated-architect&#034; target=&#034;_blank&#034;&gt;&lt;img src=&#034;http://www.codingthearchitecture.com/images/videos/skillsmatter2011-the-frustrated-architect.jpg&#034; alt=&#034;The Frustrated Architect&#034; border=&#034;0&#034; /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&#034;http://skillsmatter.com/podcast/java-jee/frustrated-architect&#034; target=&#034;_blank&#034;&gt;Video&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I really enjoyed presenting this session but the discussion afterwards in the pub was fantastic. Seems like others are running into similar problems on some of their projects, so maybe the advice I give in the talk will be of use to you too. :-)
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2011/11/16/the_frustrated_architect_video_and_slides.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2011/11/16/the_frustrated_architect_video_and_slides.html</guid>
    <pubDate>Wed, 16 Nov 2011 23:40:00 GMT</pubDate>
  </item>
  
  <item>
    <title>The delivery mechanism is an annoying detail</title>
    <link>http://www.codingthearchitecture.com/2011/11/06/the_delivery_mechanism_is_an_annoying_detail.html</link>
    
      
        <description>
          &lt;p&gt;
In my &lt;a href=&#034;http://www.codingthearchitecture.com/presentations/gotoaarhus2011-the-frustrated-architect/&#034; target=&#034;_blank&#034;&gt;The Frustrated Architect&lt;/a&gt; presentation at GOTO Aarhus in October&lt;sup&gt;*&lt;/sup&gt;, I talked about how there are a number of &#034;classic&#034; software design techniques from the pre-agile era that are being used less and less. For example, things like UML, class-responsibility-collaboration cards and component-based design. This is a shame because some of these techniques can complement an agile way of working and would perhaps prevent some wheels from being reinvented. If people don&#039;t know about these techniques though, how will they adopt them? I&#039;ll come back to this shortly but, first, I was intrigued by this tweet from Uncle Bob a few weeks back.
&lt;/p&gt;

&lt;p align=&#034;center&#034;&gt;
&lt;a href=&#034;http://twitter.com/#!/unclebobmartin/status/118365858581069824&#034; target=&#034;_blank&#034;&gt;&lt;img src=&#034;http://www.codingthearchitecture.com/images/the-delivery-mechanism-is-an-annoying-detail-1.png&#034; alt=&#034;The architecture of an accounting app should scream accounting not Spring &amp; Hibernate.&#034; border=&#034;0&#034; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I don&#039;t necessarily disagree with this statement, although I like to see a software architecture grounded in reality, and that includes technology choices. Another tweet from Uncle Bob...
&lt;/p&gt;

&lt;p align=&#034;center&#034;&gt;
&lt;a href=&#034;http://twitter.com/#!/unclebobmartin/status/118403913937453056&#034; target=&#034;_blank&#034;&gt;&lt;img src=&#034;http://www.codingthearchitecture.com/images/the-delivery-mechanism-is-an-annoying-detail-2.png&#034; alt=&#034;A good architecture allows you to defer framework decisions. A good architecture allows frameworks to act as plugins to the app.&#034; border=&#034;0&#034; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Again ... maybe, maybe not. Surely if there are some key technology choices that need to be made, then they should be made, right? Finally, another tweet...
&lt;p&gt;

&lt;p align=&#034;center&#034;&gt;
&lt;a href=&#034;http://twitter.com/#!/unclebobmartin/status/118428475249008640&#034; target=&#034;_blank&#034;&gt;&lt;img src=&#034;http://www.codingthearchitecture.com/images/the-delivery-mechanism-is-an-annoying-detail-3.png&#034; alt=&#034;I am amazed by the fact that some people actually disagree that a good software architecture allows you to defer framework decisions.&#034; border=&#034;0&#034; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Hmmm, if I don&#039;t or can&#039;t defer decisions, does this mean that I have a bad architecture? Shouldn&#039;t deferral be a conscious decision rather than a rule? All of this and the discussion that followed on Twitter intrigued me enough to stump up the cash for &lt;a href=&#034;http://www.cleancoders.com/codecast/clean-code-episode-7/show&#034; target=&#034;_blank&#034;&gt;Clean Code Episode VII - Architecture, Use Cases, and High Level Design&lt;/a&gt; to see what Uncle Bob&#039;s perspective on architecture is.
&lt;/p&gt;
 
&lt;h3&gt;Clean Code Episode VII - Architecture, Use Cases, and High Level Design&lt;/h3&gt;
&lt;p&gt;
Now that I&#039;ve watched it, what do I think? Well I&#039;m really pleased to see coverage of a couple of things. The first is describing functionality through delivery mechanism independent use cases, where there is no discussion of web pages, screens, buttons, technology, etc. And the second is the follow-up technique where you decompose a use case down into a number of different classes, each of which has a distinct responsibility. These are entities (e.g. business objects), controllers (also known as interactors, which represent the actual flow of control described in the use cases) and boundaries (which represent an interaction with an actor through the &#034;delivery mechanism&#034;). What these techniques basically do is allow you to describe and implement a use case in a way that is completely independent from the way that the use case will be delivered. In effect, you can bolt-on a number of different delivery mechanisms (e.g. a web or console app) without changing the actual core of &#034;the application&#034;, which is ultimately the functionality that is being described by the use cases. As I said at the start of this post, these are the sort of techniques that many people don&#039;t know about, so I&#039;m really pleased to see them being communicated here.
&lt;/p&gt;
 
&lt;h3&gt;I&#039;m in agreement then?&lt;/h3&gt;
&lt;p&gt;
Coming back to Uncle Bob&#039;s tweets, I can now see his perspective. Adopting this approach does allow you to defer technology decisions and from the perspective of the use cases, this technology stuff is really just an &#034;annoying detail&#034;.
&lt;/p&gt;

&lt;p align=&#034;center&#034;&gt;
&lt;img src=&#034;http://www.codingthearchitecture.com/images/the-delivery-mechanism-is-an-annoying-detail-4.png&#034; alt=&#034;You can plug-in the delivery mechanism to the application&#034; border=&#034;0&#034; /&gt;
&lt;/p&gt;

&lt;p&gt;
I agree that the boundary-controller-entity technique is a great way to design software because the result is a really nice separation of concerns, which ultimately leads to something that can be easily unit tested and extended in the future. This is all about partitioning and isolation. OK, so I&#039;m agreeing with Uncle Bob then? Hmm, not quite.
&lt;/p&gt;

&lt;h3&gt;&#034;Architecture&#034;&lt;/h3&gt;
&lt;p&gt;
Throughout the video, Uncle Bob says the following (which I&#039;ve paraphrased).
&lt;/p&gt;

&lt;blockquote&gt;
The architecture of an accounting app should scream accounting. A web and console version of the same accounting app should have identical architectures. The web delivery mechanism is a detail.
&lt;/blockquote&gt;

&lt;p&gt;
This is repeated a number of times through the video and it&#039;s based upon all of the good stuff that I&#039;ve talked about above. However, I find myself in strong disagreement with the message as a whole. And here&#039;s why ... because the word &#034;architecture&#034; is being used. At face value this might sound pedantic but let&#039;s consider for a moment what Uncle Bob is actually talking about by redrawing the above diagram. Let&#039;s imagine that you&#039;re building an accounting app that you want to deliver over the web. Security is important so let&#039;s break it into multiple physical tiers. And we need to store all of the accounting data somewhere, so let&#039;s use a database. How does that annoying detail look now then...
&lt;/p&gt;

&lt;p align=&#034;center&#034;&gt;
&lt;img src=&#034;http://www.codingthearchitecture.com/images/the-delivery-mechanism-is-an-annoying-detail-5.png&#034; alt=&#034;Architecture is about the big picture&#034; border=&#034;0&#034; /&gt;
&lt;/p&gt;

&lt;p&gt;
That&#039;s right, the annoying detail is actually a large chunk of the system and, for me, architecture is about more than just what&#039;s contained within &#034;the application&#034;. Structure is very important, but what about that tricky stuff like non-functional requirements, the actual delivery mechanism (technologies, frameworks, tools, APIs, etc), infrastructure services (e.g. logging, exception handling, configuration, etc), integration services (internal and external), satisfying any environmental constraints (e.g. operations and support), etc. For me, this is what &#034;architecture&#034; is all about and *that&#039;s* &#034;the whole enchilada&#034;.
&lt;/p&gt;

&lt;p class=&#034;small&#034;&gt;
&lt;sup&gt;*&lt;/sup&gt;I&#039;ll be presenting &lt;a href=&#034;http://www.codingthearchitecture.com/presentations/gotoaarhus2011-the-frustrated-architect/&#034; target=&#034;_blank&#034;&gt;The Frustrated Architect&lt;/a&gt; at &lt;a href=&#034;http://skillsmatter.com/event/design-architecture/frustrated-architect&#034; target=&#034;_blank&#034;&gt;Skills Matter in London on the 15th of November and you can sign-up for free&lt;/a&gt;
&lt;/p&gt; 

&lt;h3&gt;Update&lt;/h3&gt;
&lt;p&gt;
If you don&#039;t have the video but want to get a feel for Uncle Bob&#039;s approach to architecture, take a look at the following links...
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#034;http://cleancoder.posterous.com/architecture-deference&#034; target=&#034;_blank&#034;&gt;Architecture Deference&lt;/a&gt; (&lt;2 minute video)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#034;http://blog.8thlight.com/uncle-bob/2011/09/30/Screaming-Architecture.html&#034; target=&#034;_blank&#034;&gt;Screaming Architecture&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2011/11/06/the_delivery_mechanism_is_an_annoying_detail.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2011/11/06/the_delivery_mechanism_is_an_annoying_detail.html</guid>
    <pubDate>Sun, 06 Nov 2011 20:16:02 GMT</pubDate>
  </item>
  
  <item>
    <title>GOTO Aarhus 2011 and Software Architect 2011</title>
    <link>http://www.codingthearchitecture.com/2011/10/06/goto_aarhus_2011_and_software_architect_2011.html</link>
    
      
        <description>
          &lt;p&gt;
Conference season is again upon us and I&#039;m speaking at two events over the next couple of weeks.
&lt;/p&gt;

&lt;h3&gt;GOTO Aarhus 2011&lt;/h3&gt;
&lt;p&gt;
&lt;a href=&#034;http://gotocon.com/aarhus-2011/speaker/Simon+Brown&#034; target=&#034;_blank&#034;&gt;&lt;img src=&#034;http://www.codingthearchitecture.com/images/goto-2011-logo.png&#034; alt=&#034;GOTO Aarhus 2011&#034; border=&#034;0&#034; align=&#034;right&#034;&gt;&lt;/a&gt;
I&#039;m presenting a session at the &lt;a href=&#034;http://gotocon.com/aarhus-2011/speaker/Simon+Brown&#034; target=&#034;_blank&#034;&gt;GOTO conference&lt;/a&gt; in Aarhus, Denmark called &lt;a href=&#034;http://gotocon.com/aarhus-2011/presentation/The%20Frustrated%20Architect&#034; target=&#034;_blank&#034;&gt;The Frustrated Architect&lt;/a&gt; that will look at the role of the software architect in today&#039;s world of modern software development. I&#039;ll be focussing on perceptions of the role, how agile has positively and negatively affected software architecture, some of my pet peeves with people that call themselves &#034;software architects&#034; as well as my own frustrations with the role. To end on a high note, we&#039;ll finish off by looking at how you can undertake the role in a lightweight and effective way. There&#039;s some other stuff in there too but you&#039;ll have to wait for that. ;-)
&lt;/p&gt;

&lt;h3&gt;Software Architect 2011&lt;/h3&gt;
&lt;p&gt;
&lt;a href=&#034;http://www.software-architect.co.uk&#034; target=&#034;_blank&#034;&gt;&lt;img src=&#034;http://www.codingthearchitecture.com/images/sa2011-logo.jpg&#034; alt=&#034;Software Architect 2011&#034; border=&#034;0&#034; align=&#034;right&#034;&gt;&lt;/a&gt;
The week after I&#039;ll be in London for the &lt;a href=&#034;http://www.software-architect.co.uk&#034; target=&#034;_blank&#034;&gt;Software Architect conference&lt;/a&gt; where I&#039;ll be presenting two one-day workshops (&#034;Software architecture in a day&#034; and &#034;Just enough up front design&#034;) and three 90 minute breakout sessions (&#034;Effective sketches&#034;, &#034;Software Project SOS&#034; and &#034;How much is just enough?&#034;). All of these follow the same theme in looking at how software architecture fits into the new shiny agile world that we now live in.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&#034;http://www.codingthearchitecture.com/2011/08/27/using_evernote_for_training_courses.html&#034; target=&#034;_blank&#034;&gt;Evernote slide packs&lt;/a&gt; will be available for all of these sessions and I&#039;ll post the URLs (here and on &lt;a href=&#034;http://twitter.com/simonbrown&#034; target=&#034;_blank&#034;&gt;Twitter&lt;/a&gt;) 1-2 days before each session. Should be an excellent couple of weeks.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2011/10/06/goto_aarhus_2011_and_software_architect_2011.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2011/10/06/goto_aarhus_2011_and_software_architect_2011.html</guid>
    <pubDate>Thu, 06 Oct 2011 10:56:30 GMT</pubDate>
  </item>
  
  <item>
    <title>Effective Sketches at Skills Matter</title>
    <link>http://www.codingthearchitecture.com/2011/09/02/effective_sketches_at_skills_matter.html</link>
    
      
        <description>
          &lt;p&gt;
I presented my &#034;Effective Sketches&#034; talk last night at Skills Matter where we looked at how to produce effective diagrammatic representations of software systems and why they are useful. In other words, we looked at how to draw boxes and lines. :-)
&lt;/p&gt;

&lt;p align=&#034;center&#034;&gt;
&lt;a href=&#034;http://bit.ly/obrsp2&#034; target=&#034;_blank&#034;&gt;&lt;img src=&#034;http://www.codingthearchitecture.com/images/20110901-effective-sketches.png&#034; class=&#034;photo&#034; alt=&#034;Effective Sketches at Skills Matter&#034; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Here are the links to the slides and video.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#034;http://t.co/nc5c7ik&#034; target=&#034;_blank&#034;&gt;Evernote version of the slides&lt;/a&gt; (~34MB; see &lt;a href=&#034;http://www.codingthearchitecture.com/2011/08/27/using_evernote_for_training_courses.html&#034; target=&#034;_blank&#034;&gt;Using Evernote for training courses &lt;/a&gt; for information about what this is all about)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#034;http://t.co/H9yd3Fa&#034; target=&#034;_blank&#034;&gt;PDF version of the slides&lt;/a&gt; (~85MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#034;http://t.co/SWKXCML&#034; target=&#034;_blank&#034;&gt;Online view of the slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#034;http://bit.ly/ojkR8K&#034; target=&#034;_blank&#034;&gt;Video of the talk&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p align=&#034;center&#034;&gt;
&lt;img src=&#034;http://www.codingthearchitecture.com/images/20110901-when-are-diagrams-useful.jpg&#034; alt=&#034;When are diagrams useful?&#034; class=&#034;photo&#034; /&gt;
&lt;/p&gt;

&lt;p&gt;
If you missed the talk, I&#039;ll be doing a &lt;a href=&#034;http://www.codingthearchitecture.com/2011/08/17/effective_sketches.html&#034;&gt;slightly longer version at the upcoming Software Architect 2011 conference&lt;/a&gt;, which takes place in London during October.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2011/09/02/effective_sketches_at_skills_matter.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2011/09/02/effective_sketches_at_skills_matter.html</guid>
    <pubDate>Fri, 02 Sep 2011 06:40:56 GMT</pubDate>
  </item>
  
  <item>
    <title>Using Evernote for training courses</title>
    <link>http://www.codingthearchitecture.com/2011/08/27/using_evernote_for_training_courses.html</link>
    
      
        <description>
          &lt;p&gt;
&lt;img src=&#034;http://www.codingthearchitecture.com/images/evernote-logo-small.gif&#034; alt=&#034;Evernote&#034; align=&#034;right&#034; /&gt;
There&#039;s been some interesting discussion on Twitter recently about whether trainers should provide handouts before training, after training or even at all. Some organisations that I train through do provide printed slide handouts and some don&#039;t. My preference is to not provide attendees with printed handouts of the slides because it just seems excessive from an environmental perspective, but I am happy to provide a PDF copy of the slides instead. The downside of PDF slides is that taking notes related to a particular slide is somewhat trickier than it needs to be. So, I want to try something for my upcoming &lt;a href=&#034;http://www.softwarearchitecturefordevelopers.com&#034; target=&#034;_blank&#034;&gt;Software Architecture for Developers training courses&lt;/a&gt; ... Evernote; a cross-platform notebook application.
&lt;/p&gt;

&lt;p align=&#034;center&#034;&gt;
&lt;img src=&#034;http://www.codingthearchitecture.com/images/sa4d-evernote.png&#034; alt=&#034;Software Architecture for Developers in Evernote&#034; /&gt;
&lt;/p&gt;

&lt;p&gt;
In addition to the PDF copy of the slides, I&#039;ll also be providing an Evernote XML Format file (.enex) that you can import into your own copy of Evernote on your PC or Mac. This contains all of the slides that I&#039;ll be using along with the handouts that are required for the case study exercises. You can add your own notes to each slide and create new notes to store photos of the case study exercises, thoughts and useful links as we progress through the course.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&#034;http://www.evernote.com&#034; target=&#034;_blank&#034;&gt;Evernote&lt;/a&gt; is free to download and you&#039;ll need to register for a free account, which is all you need for a local (non-cloud based) notebook. Premium account holders will be able to import the notes into a cloud-based notebook and have it synced to all of their other Evernote devices&lt;sup&gt;*&lt;/sup&gt;. If you&#039;re coming along to one of my training courses over the next few months, please do feel free to bring your laptop. I&#039;ll also be doing the same for my upcoming presentations for the rest of the year and will provide the .enex files in advance.
&lt;/p&gt;

&lt;p class=&#034;small&#034;&gt;
&lt;sup&gt;*&lt;/sup&gt; you do get syncing with the free account, but the size of the notebook is slightly larger than the monthly usage allowance :-)
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;28th August 2011&lt;/b&gt;: since each Evernote note can have a &#034;source URL&#034;, each note in the notebook will additionally have a link to the associated essay from &lt;a href=&#034;http://www.codingthearchitecture.com/pages/book/index.html&#034; target=&#034;_blank&#034;&gt;our book&lt;/a&gt; for further reading after the course.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2011/08/27/using_evernote_for_training_courses.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2011/08/27/using_evernote_for_training_courses.html</guid>
    <pubDate>Sat, 27 Aug 2011 11:57:54 GMT</pubDate>
  </item>
  
  <item>
    <title>Load Testing for Developers</title>
    <link>http://www.codingthearchitecture.com/2011/08/25/load_testing_for_developers.html</link>
    
      
        <description>
          &lt;p&gt;
September sees me picking up the travel baton again and one of the things I&#039;m doing is a half-day session at the &lt;a href=&#034;http://skillsmatter.com/event/open-source-dot-net/progressive-dot-net-tutorials-2011&#034; target=&#034;_blank&#034;&gt;Skills Matter Progressive .NET Tutorials&lt;/a&gt; in London on the 6th.
&lt;/p&gt;

&lt;p align=&#034;center&#034;&gt;
&lt;a href=&#034;http://skillsmatter.com/event/open-source-dot-net/progressive-dot-net-tutorials-2011&#034; target=&#034;_blank&#034;&gt;&lt;img src=&#034;http://www.codingthearchitecture.com/images/prognet2011.png&#034; alt=&#034;Progressive .NET Tutorials&#034; border=&#034;0&#034; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The session is called &lt;a href=&#034;http://skillsmatter.com/podcast/open-source-dot-net/load-testing-for-developers&#034; target=&#034;_blank&#034;&gt;Load Testing for Developers&lt;/a&gt; and it&#039;s exactly what it says on the tin ... an introduction to load testing for developers. You can be as progressive as you like with the .NET platform, but performance and scalability problems can still rear their ugly heads regardless of the technology you&#039;re using.
&lt;/p&gt;

&lt;blockquote&gt;
Have you ever built a software system and your users have complained that it’s too slow? I have; debugging live performance and scalability issues with business sponsors watching over your shoulder isn’t fun! Load testing is an often forgotten and seemingly difficult task that many people shy away from but a basic level of load testing is often enough to give you confidence that you&#039;ve satisfied expectations regarding performance and scalability. This tutorial will look at how to load test your website and you’ll learn:
&lt;ul&gt;
&lt;li&gt;What load testing is all about.&lt;/li&gt;
&lt;li&gt;How to implement a load testing script using the free and open source &lt;a href=&#034;http://jakarta.apache.org/jmeter/&#034; target=&#034;_blank&#034;&gt;Apache JMeter&lt;/a&gt; tool.&lt;/li&gt;
&lt;li&gt;How to run a load test and monitor the environment (the load testing client and your website server environment).&lt;/li&gt;
&lt;li&gt;How to process, analyse and present the results.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;
The tutorial is a mix of presentation, discussion and hands-on exercises where we&#039;ll be looking at some of the theory behind load testing before trying it out with Apache JMeter. Specifically, we will:
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a basic test plan using the proxy feature of JMeter.&lt;/li&gt;
&lt;li&gt;Clean-up the test plan plan and make it work for a single user.&lt;/li&gt;
&lt;li&gt;Add some test assertions, as you would when unit testing.&lt;/li&gt;
&lt;li&gt;Modify the test plan to work for a number of concurrent users.&lt;/li&gt;
&lt;li&gt;Run the plan in JMeter headless mode.&lt;/li&gt;
&lt;li&gt;Parameterise the number of threads (users), website hostname and port.&lt;/li&gt;
&lt;li&gt;Modify the plan to make it more realistic (e.g. simulating user think time).&lt;/li&gt;
&lt;li&gt;Execute the tests and capture the results data.&lt;/li&gt;
&lt;li&gt;Process the results and draw conclusions.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Software&lt;/h3&gt;
&lt;p&gt;
If you&#039;re coming along and want to participate in the hands-on exercises, you&#039;ll need the following installed on your laptop:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Microsoft Visual Studio (2008 or 2010; to run a C#/ASP.NET 3.5 web application).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#034;http://www.oracle.com/technetwork/java/javase/downloads/index.html&#034; target=&#034;_blank&#034;&gt;Java SE Development Kit&lt;/a&gt; (version 6 or 7).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#034;http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi&#034; target=&#034;_blank&#034;&gt;Apache JMeter 2.5&lt;/a&gt; (download the ZIP version and unzip it somewhere obvious).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#034;http://www.evernote.com/about/download/all.php&#034; target=&#034;_blank&#034; /&gt;Evernote&lt;/a&gt; (optional; if you want the enhanced slide pack).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Material&lt;/h3&gt;
&lt;p&gt;
Here are links to download the material we&#039;ll be using in the tutorial.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#034;http://www.codingthearchitecture.com/presentations/prognet11-load-testing-for-developers/&#034; target=&#034;_blank&#034;&gt;Slides (online view)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#034;http://static.codingthearchitecture.com/presentations/prognet11-load-testing-for-developers.pdf&#034; target=&#034;_blank&#034;&gt;Slides (PDF; 8MB)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#034;http://static.codingthearchitecture.com/presentations/prognet11-load-testing-for-developers.enex.zip&#034; target=&#034;_blank&#034;&gt;Enhanced slide pack (Evernote format; 20MB)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#034;http://static.codingthearchitecture.com/presentations/prognet11-load-testing-for-developers.zip&#034; target=&#034;_blank&#034;&gt;ASP.NET web app (Visual Studio solution)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Load testing &lt;del&gt;is a natural extension to&lt;/del&gt; &lt;b&gt;should be part of&lt;/b&gt; the developer or &lt;a href=&#034;http://www.codingthearchitecture.com/pages/book/chapter2.html&#034; target=&#034;_blank&#034;&gt;architect role&lt;/a&gt; if you&#039;re building web applications and not something that should be left until the very end of the software development lifecycle. Come along if you want to find out how easy load testing can be.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2011/08/25/load_testing_for_developers.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2011/08/25/load_testing_for_developers.html</guid>
    <pubDate>Thu, 25 Aug 2011 20:43:59 GMT</pubDate>
  </item>
  
  </channel>
</rss>

