<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A0INQ3gzcCp7ImA9WhRRFE4.&quot;"><id>tag:blogger.com,1999:blog-6297249324455358452</id><updated>2011-11-28T02:19:52.688+02:00</updated><category term="linux" /><category term="TDD" /><category term="Web development" /><category term="agile" /><category term="general" /><category term="ASP.NET MVC" /><category term="Razor" /><title>Software Development Dynamics</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://swdevdynamics.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://swdevdynamics.blogspot.com/" /><author><name>Tomi Juhola</name><uri>http://www.blogger.com/profile/08818412135673974435</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/SoftwareDevelopmentDynamics" /><feedburner:info uri="softwaredevelopmentdynamics" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DkYMQHY8fyp7ImA9Wx5TEkg.&quot;"><id>tag:blogger.com,1999:blog-6297249324455358452.post-986685397224814561</id><published>2010-07-27T16:13:00.007+03:00</published><updated>2010-07-27T21:09:41.877+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-27T21:09:41.877+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web development" /><category scheme="http://www.blogger.com/atom/ns#" term="Razor" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET MVC" /><category scheme="http://www.blogger.com/atom/ns#" term="TDD" /><title>ASP.NET MVC 3 Preview 1 out...</title><content type="html">I've been spending my free time with &lt;a href="http://www.asp.net/mvc"&gt;ASP.NET MVC 2&lt;/a&gt; for last few months and I do love the way it let's me be in control. I've never been such a big fan of ASP.NET Web Forms, or ASP.NET at all. However, I've tried out Ruby on Rails, Django, etc. fancy web frameworks and haven't just seen the use of those in enterprise software and in web applications especially. But ASP.NET MVC feels like suitable for those also.&lt;br /&gt;&lt;br /&gt;So, I'm very enthusiastic about the new stuff that's coming out. I've already played around with the &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx"&gt;Razor &lt;/a&gt;view engine that was included in &lt;a href="http://www.microsoft.com/web/webmatrix/"&gt;WebMatrix&lt;/a&gt;. And now I got the &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=cb42f741-8fb1-4f43-a5fa-812096f8d1e8"&gt;first preview of ASP.NET MVC 3.&lt;/a&gt;  Yei!&lt;br /&gt;&lt;br /&gt;So what's nice and new in this one?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Razor view engine&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This one I've played with already a bit. The razor engine is more streamlined option for HTML templates with minimalistic syntax. It just feels like coding C# inside a HTML page. E.g.&lt;br /&gt;&lt;br /&gt;WebFormsViewEngine:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;p&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;&amp;lt;% &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var invoice &lt;span class="kwrd"&gt;in&lt;/span&gt; Model.Invoices) { %&amp;gt;&lt;br /&gt; &amp;lt;li&amp;gt;&amp;lt;%:invoice.Balance%&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;% } %&amp;gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;/p&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And same in Razor view engine:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;@&lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var invoice &lt;span class="kwrd"&gt;in&lt;/span&gt; Model.Invoices) {&lt;br /&gt; &amp;lt;li&amp;gt;@invoice.Balance&amp;lt;/li&amp;gt;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;/p&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Or example with if and foreach statements:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;@if(Model.Invoices.Count == 0) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  No invoices open!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;} &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;ul&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  @&lt;/span&gt;&lt;span class="kwrd"  style="font-family:courier new;"&gt;foreach&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; (var invoice &lt;/span&gt;&lt;span class="kwrd"  style="font-family:courier new;"&gt;in&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; Model.Invoices) { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &amp;lt;li&amp;gt;@invoice.Balance&amp;lt;/li&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  } &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So the idea here is to make things a bit easier for everyone.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ViewData dictionary improvement&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Another thing that makes your life just a bit easier is the support for the dynamic ViewData dictionary.&lt;br /&gt;&lt;br /&gt;Previously we added stuff to the ViewData dictionary like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ViewData["Field"] = "Field content stuff";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now we can use dynamic properties:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ViewData.Field = "Field content stuff";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A small change that makes me happy!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Dependency injection support&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To ease up the unit testing and TDD, there's also new DI and IoC related features, that I haven't yet had time to play with. The following hooks are provided:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Creating controller factories&lt;/li&gt;&lt;li&gt;Creating controllers and setting dependencies&lt;/li&gt;&lt;li&gt;Setting dependencies on view pages for both the Web Form view engine and the Razor view engine&lt;/li&gt;&lt;li&gt;Setting dependencies on action filters&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;And of course tons of more stuff, check the release notes for more!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6297249324455358452-986685397224814561?l=swdevdynamics.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zpw8L5LfovXQ42GAThrb86GVyQg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zpw8L5LfovXQ42GAThrb86GVyQg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zpw8L5LfovXQ42GAThrb86GVyQg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zpw8L5LfovXQ42GAThrb86GVyQg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftwareDevelopmentDynamics/~4/owKN2ewLBo4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://swdevdynamics.blogspot.com/feeds/986685397224814561/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://swdevdynamics.blogspot.com/2010/07/aspnet-mvc-3-preview-1-out.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6297249324455358452/posts/default/986685397224814561?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6297249324455358452/posts/default/986685397224814561?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SoftwareDevelopmentDynamics/~3/owKN2ewLBo4/aspnet-mvc-3-preview-1-out.html" title="ASP.NET MVC 3 Preview 1 out..." /><author><name>Tomi Juhola</name><uri>http://www.blogger.com/profile/08818412135673974435</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://swdevdynamics.blogspot.com/2010/07/aspnet-mvc-3-preview-1-out.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MBRXk9fip7ImA9WxJQF0s.&quot;"><id>tag:blogger.com,1999:blog-6297249324455358452.post-5115752848371405400</id><published>2009-05-31T13:21:00.003+03:00</published><updated>2009-05-31T13:24:14.766+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-31T13:24:14.766+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="agile" /><category scheme="http://www.blogger.com/atom/ns#" term="TDD" /><title>Test-driven development and its flavors</title><content type="html">&lt;div class="pp_items"&gt;&lt;div class="pp_item" align="left"&gt;&lt;p&gt;Someone asked me on some of my agile courses months ago that what is the &lt;span style="font-weight:bold;"&gt;difference between test-driven development and test-first programming&lt;/span&gt;. I guess I answered right away without much thought that these terms refer to exactly same practice. Later on I've been experimenting with different ways to do TDD and suddenly found out that there really are &lt;span style="font-weight:bold;"&gt;different flavours of TDD&lt;/span&gt;. These all also have their own value and purpose in sw development.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Test-driven vs. Test-first&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Test-driven is the traditional strict and very disciplined approach to development. Basically it means the &lt;span style="font-weight:bold;"&gt;RED-GREEN-REFACTOR&lt;/span&gt; cycle where tests are written one test at a time, the simplest possible solution to make that test is implemented and finally the code is refatored. &lt;br /&gt;&lt;br /&gt;Test-first gives us means to make some &lt;span style="font-weight:bold;"&gt;more planning and test design&lt;/span&gt; before implementing the solution. We might e.g. write some high-level acceptance tests, integration tests and a bunch of unit tests to see how few tightly coupled classes work. After this the production code is written in order to make those tests pass. This approach might give us an opportunity to look at a broader picture in cases where it is needed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Development vs. Design vs. Programming&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What comes to test-driven development/design/programming I feel that the development is a bit more like an umbrella term. The terms design and programming have more interesting distinction.&lt;br /&gt;&lt;br /&gt;Test-driven design is again the more XP way to implement software. We approach the whole design by writing &lt;span style="font-weight:bold;"&gt;tests that drive our design&lt;/span&gt; to certain way. After each test implemented we step back and look at the design and refactor in order to improve it.&lt;br /&gt;&lt;br /&gt;However test-driven programming is highly popular approach throughout agile community. Design can be developed in front of whiteboard with few fellow team members and after the design seems suitable for the task at hand we'll move to implementation phase. The programming is done in test-driven/-first manner but with keeping the &lt;span style="font-weight:bold;"&gt;design in mind&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Well, this is how I see it. How about you? Any thoughts on this?&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6297249324455358452-5115752848371405400?l=swdevdynamics.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/abnzSfaGJv7pK033iZbScNWxKIw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/abnzSfaGJv7pK033iZbScNWxKIw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/abnzSfaGJv7pK033iZbScNWxKIw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/abnzSfaGJv7pK033iZbScNWxKIw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftwareDevelopmentDynamics/~4/wuVMHEL7JQk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://swdevdynamics.blogspot.com/feeds/5115752848371405400/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://swdevdynamics.blogspot.com/2009/05/test-driven-development-and-its-flavors.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6297249324455358452/posts/default/5115752848371405400?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6297249324455358452/posts/default/5115752848371405400?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SoftwareDevelopmentDynamics/~3/wuVMHEL7JQk/test-driven-development-and-its-flavors.html" title="Test-driven development and its flavors" /><author><name>Tomi Juhola</name><uri>http://www.blogger.com/profile/08818412135673974435</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://swdevdynamics.blogspot.com/2009/05/test-driven-development-and-its-flavors.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQFRX0ycSp7ImA9WxVTFEo.&quot;"><id>tag:blogger.com,1999:blog-6297249324455358452.post-6865823787391714772</id><published>2008-12-28T16:19:00.000+02:00</published><updated>2008-12-28T16:25:14.399+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-28T16:25:14.399+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="agile" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="general" /><title>Hello world</title><content type="html">As everyone who is somehow involved in software development, I also know that everything new should be started with simplest possible solution. In programming languages it usually is a application called "Hello World". So this is my hello world for my new blog.&lt;br /&gt;&lt;br /&gt;This blog is meant for more technical, software development related articles than my other blog, &lt;a href="http://managing-dynamics.blogspot.com"&gt;Managing dynamics&lt;/a&gt;. I plan to have at least few series of articles I'm about to write. First of all, I would like to introduce different Linux software development tools with a brief tutorial for all those. Second, I would like to go through agile software development practices and introduce tools that support them and tutorials to show what they are all about. So basically at least two different categories of articles will be published here: Agile and Linux.&lt;br /&gt;&lt;br /&gt;Hopefully, I'll have soon time to get this started...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6297249324455358452-6865823787391714772?l=swdevdynamics.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_gUGh82bWgTB7SNkCIb-bUci_t4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_gUGh82bWgTB7SNkCIb-bUci_t4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_gUGh82bWgTB7SNkCIb-bUci_t4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_gUGh82bWgTB7SNkCIb-bUci_t4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftwareDevelopmentDynamics/~4/lXjlS_jL1J0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://swdevdynamics.blogspot.com/feeds/6865823787391714772/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://swdevdynamics.blogspot.com/2008/12/hello-world.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6297249324455358452/posts/default/6865823787391714772?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6297249324455358452/posts/default/6865823787391714772?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SoftwareDevelopmentDynamics/~3/lXjlS_jL1J0/hello-world.html" title="Hello world" /><author><name>Tomi Juhola</name><uri>http://www.blogger.com/profile/08818412135673974435</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://swdevdynamics.blogspot.com/2008/12/hello-world.html</feedburner:origLink></entry></feed>

