<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog - ShiftEleven &#187; agile</title>
	<atom:link href="http://shifteleven.com/articles/tag/agile/feed" rel="self" type="application/rss+xml" />
	<link>http://shifteleven.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sat, 19 Sep 2009 11:19:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0-alpha</generator>
		<item>
		<title>Previewing Beast: the open source Rails forum</title>
		<link>http://shifteleven.com/articles/2006/09/02/previewing-beast-the-open-source-rails-forum</link>
		<comments>http://shifteleven.com/articles/2006/09/02/previewing-beast-the-open-source-rails-forum#comments</comments>
		<pubDate>Sat, 02 Sep 2006 14:23:58 +0000</pubDate>
		<dc:creator>K. Adam Christensen</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[beast]]></category>
		<category><![CDATA[forum]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://dev.fecalrod.com/articles/2006/09/02/previewing-beast-the-open-source-rails-forum</guid>
		<description><![CDATA[Beast is a nice, light-weight forum written in Rails.  From what I can gather, the overall goal is to make something work with only 500 lines of code, and I think that could happen with this.  It is open source, and can easily be checked out
I did check it out and I have [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://beast.caboo.se/">Beast</a> is a nice, light-weight forum written in Rails.  From what I can gather, the overall goal is to make something work with only 500 lines of code, and I think that could happen with this.  It is open source, and can easily be <a href="http://svn.techno-weenie.net/projects/beast/.">checked out</a></p>
<p>I did check it out and I have to say that I&#8217;m impressed.  It is using the rails edge and is trying out some of the REST(representational state transfer)ful stuff all the while adhering to the philosophies of CRUD(create, read, update, delete).  I have wanted to look into a good example of a rails project using REST, and this code base is great for that.  What&#8217;s more is that it&#8217;s not very difficult to wrap your head around all of the code of the site, due to the small code base and nice abstraction of the code.</p>
<p><span id="more-7"></span></p>
<p>While reading up on this new forum, I came across a <a href="http://www.onekay.com/blog/archives/11/trackback/">post</a> in which the writer was interested in Beast because of the marketing tag-line, written in _under 500 lines_.  He goes on to raise some points on why that philosophy rubs him the wrong way, but I have different views on his points.</p>
<h3>Obscure Code</h3>
<p>This certainly can be the case in many instances.  I have seen a <a href="http://www.webmonkey.com/webmonkey/code/97/18/code2.txt">chat server written in 4 lines</a> of <a href="http://www.perl.org">perl</a> <a href="#PerlChat">code</a>.  That thing is a horrible mess.  That said, I think Beast suffers no where near the extent on that.  It does make use of writing out small methods to the whole line; and being that ruby can lend itself well to being understood when read aloud, it&#8217;s not that obscure.  I will say that in order to read some of these lines, you will have to be somewhat familiar with the <a href="http://wiki.rubygarden.org/Ruby/page/show/RubyIdioms.">idioms of ruby</a></p>
<h3>Included Libraries</h3>
<p><a href="http://www.onekay.com/blog/archives/author/marc/">Marc</a> makes the point of noting that just because you have written 500 lines of code, doesn&#8217;t mean that the project is 500 lines of code is you use frameworks and plugins and other libraries.  Mathematically, I agree; however, there is a difference in code that is apart of your project from that code abstracted to external uses.  You could also then argue that 50 lines in <a href="http://java.sun.com">Java</a> is actually more because you have to think about all of the code that was used to make all of the Java classes as well as that to make the engine but that shouldn&#8217;t matter.  The only thing that really matters is the 50 lines of code that are doing what you need to get the job done.</p>
<h3>Arbitrary Restriction</h3>
<p>It&#8217;s true, the number of lines of code really don&#8217;t matter to a machine; but to make claims that it isn&#8217;t more useful is untrue. Part of keeping code small is that it keeps it agile.  One way to keep the lines of code small in number is to not rewrite functionality.  Not repeating your code keeps your edits quick and you have the ability to change functionality faster. While setting the number at 500 may be weird, trying to adhere to keeping extraneous code out is a good thing.  Now if the project warrents lifting that 500 line cap and then code stays committed to the 500 limit, therefor kludging up things or doing this half-assed, then that is truly absurd.</p>
<h3>Feature loss</h3>
<p>I do not think that you have to lose features in order to make this work.  I think the restrictions can be liberating.  500 lines of code: that means there cannot be all of the bells and whistles; not until the core code is in place.  In order for the forum to work, the core functionality has to be in place, and since the 500 lines are the limit, then it means that the other pieces of scope have to wait.  I&#8217;m not going to say that Marc&#8217;s situation of poorly-implemented code can (and often does) happen, but I think with Beast, they have the right approach.</p>
<p>Beast is shaping up to be a really nice forum, something that you can use the ground work for and build higher if need be.  It&#8217;s simple and elegant and a fine example of a rails project.</p>
<h3>Notes</h3>
<p><a name="PerlChat">Perl Chat</a> written in 4 lines</p>
<pre class="perl" title="code">#!/usr/local/bin/perl -- minchat: run and telnet to port 5555 - bslesins
sub p{print@_}$SIG{CHLD}=sub{wait};socket S,2,2,6;bind S,pack(Snx12,2,5555);
listen S,5;while(accept C,S){if(!fork){open(STDOUT,"&gt;&amp;C");p"name:";$n=substr
,0,-2;$f=fork||exec"tail -f chatlog";open W,"&gt;&gt;chatlog";select(W);$|=1;p
"[$n here]\r\n";while(){p"$n&gt; $_";}p"[$n gone]\r\n";kill 15,$f;exit}}</pre>
]]></content:encoded>
			<wfw:commentRss>http://shifteleven.com/articles/2006/09/02/previewing-beast-the-open-source-rails-forum/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Getting Real Review</title>
		<link>http://shifteleven.com/articles/2006/09/01/getting-real-review</link>
		<comments>http://shifteleven.com/articles/2006/09/01/getting-real-review#comments</comments>
		<pubDate>Fri, 01 Sep 2006 20:07:16 +0000</pubDate>
		<dc:creator>K. Adam Christensen</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[37signals]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[book]]></category>

		<guid isPermaLink="false">http://dev.fecalrod.com/articles/2006/09/01/getting-real-review</guid>
		<description><![CDATA[I have come across the works of Pete Wright as I have come to know him somewhat.  He does a lot of agile and XP(eXtreme Programming) development, and that is something that I have been wanting to learn more about.  While reading through his blog, he mentioned a book, Getting Real so I [...]]]></description>
			<content:encoded><![CDATA[<p>I have come across the works of <a href="http://peterwright.blogspot.com/,">Pete Wright</a> as I have come to know him somewhat.  He does a lot of agile and XP(eXtreme Programming) development, and that is something that I have been wanting to learn more about.  While reading through his blog, he mentioned a book, <span style="text-decoration: underline;"><a href="https://gettingreal.37signals.com/,">Getting Real</a></span> so I had to take a look and review it over.</p>
<p>The book is a publication from the fine folks at <a href="http://www.37signals.com/">37signals</a> and brings to light some of their coding philosophies, such as how they do agile development.  It is a cheap book and you can achieve instant gratification from purchasing it online because the book is currently only available as a PDF download.  The voice of the book takes a stand and casts a very bright light in order to bring out the contrast of other methods of software development and project management.  The authors like to shock you up a bit by making claims of saying <strong>&#8220;no&#8221;</strong> to your customers or saying <strong>&#8220;no&#8221;</strong> to project meetings.  It&#8217;s like a cold shower for your brain, and once it has gotten its attention, it reasons with you as to why you would want to say no in certain situations and why you would want to say yes.</p>
<p><span id="more-62"></span></p>
<p>As a developer, the philosophies in this book are empowering.  A lot of times, my projects experience some scope creep, where wouldn&#8217;t it be cool if it did <em>this</em> or while we are at it, let&#8217;s add <em>that</em>.  This is fine, but as deadlines approach, you start having this juggling act you have to do where you give up one thing to make another happen, often times leading to everything being in half-assed. <span style="text-decoration: underline;">Getting Real</span>&#8217;s point of view is to cut back some of the scope and make sure that the basics work. &#8220;Build half a product, not a half-ass product&#8221;.  If those extras really needed to be in, they will make it in eventually, in a new iteration.</p>
<p>By doing this, it also allows you to focus on what is important.  Adding some new sorting feature is definitely less important than making sure that the data it&#8217;s sorting is correct.  And this is where a lot of the agile philosophy comes in.  Start with the most basic functionality needed first, usually the HTML(hypertext markup language).  The HTML is the interface for your application, and that&#8217;s everything that&#8217;s important to your users. For the first round of HTML, everything doesn&#8217;t have to be pixel perfect just yet.  Once that is done, then building out the basic functionality to link everything together can be built, focusing on the main aspects of the backbone of the application.  For instance, if you are doing a blog, the functionality to write the blog is more important that that of displaying the blog because you can&#8217;t display it if you can&#8217;t write it.</p>
<p>All in all, this was a good read and it is a fairly quick read.  While there are many PDF pages, a lot of it is filled with quotes from all sorts of people.  If you ignore the quotes, you could finish it in a night or two.  You will do it a little injustice, as the quotes and little stories really bring home the points of the book.  I am going to try to use the lesson of this book to apply this to my next software project.</p>
]]></content:encoded>
			<wfw:commentRss>http://shifteleven.com/articles/2006/09/01/getting-real-review/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
