<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.5" -->
<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>The Hobo Blog</title>
	<link>http://hobocentral.net/blog</link>
	<description>Hobo - the web app builder for Rails</description>
	<pubDate>Tue, 29 Apr 2008 13:36:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.5</generator>
	<language>en</language>
			<item>
		<title>ActiveRecord behaviour with associations</title>
		<link>http://hobocentral.net/blog/2008/04/29/activerecord-behaviour-with-associations/</link>
		<comments>http://hobocentral.net/blog/2008/04/29/activerecord-behaviour-with-associations/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 13:36:24 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
		
		<category>Ruby Skills</category>

		<guid isPermaLink="false">http://hobocentral.net/blog/2008/04/29/activerecord-behaviour-with-associations/</guid>
		<description><![CDATA[The interaction between ActiveRecord and the database is very simple when working with a single record - it&#8217;s always pretty clear when the database is going to be changed. What about when you&#8217;re working with multiple records and associations? I did some experiments way back at the start of the Hobo project, but recently I [...]]]></description>
			<content:encoded><![CDATA[<p>The interaction between ActiveRecord and the database is very simple when working with a single record - it&#8217;s always pretty clear when the database is going to be changed. What about when you&#8217;re working with multiple records and associations? I did some experiments way back at the start of the Hobo project, but recently I wanted to check if anything had changed.</p>

<p>So I threw together some simple experiments, and turned on logging in the console. It&#8217;s a bit rough and certainly not exhaustive, but I formatted it in markdown out of habit and then though hey, I should post this, so here it is.</p>

<p>Is this stuff documented somewhere? I never found it if it is. I wonder if most Rails devs know about all this already.</p>

<p>This is all in Rail 2.0.2 BTW.</p>

<p><a id="more-201"></a></p>

<h2>Some simple models</h2>

<pre><code>class Post &lt; ActiveRecord::Base
  has_many :comments
  has_many :categorisations
  has_many :categories, :through =&gt; :categorisations
end

class Comment &lt; ActiveRecord::Base
  belongs_to :post
end

class Category &lt; ActiveRecord::Base
  has_many :categorisations
end

class Categorisation &lt; ActiveRecord::Base
  belongs_to :post
  belongs_to :category
end
</code></pre>

<h2><code>has_many</code> (not through)</h2>

<h3>Assigning to the array on a new record</h3>

<p>New comments are created along with a new post:</p>

<pre><code>&gt;&gt; p = Post.new
=&gt; #&lt;Post id: nil&gt;
&gt;&gt; p.comments = [Comment.new]
=&gt; [#&lt;Comment id: nil, post_id: nil&gt;]
&gt;&gt; p.save
  Post Create (0.000601)   INSERT INTO posts VALUES(NULL)
  Comment Create (0.000195)   INSERT INTO comments ("post_id") VALUES(1)
=&gt; true
</code></pre>

<h3>Appending to the array</h3>

<p>For a post that exists, the appended comments are created immediately:</p>

<pre><code>&gt;&gt; p
=&gt; #&lt;Post id: 1&gt;
&gt;&gt; p.comments &lt;&lt; Comment.new
  Comment Create (0.000481)   INSERT INTO comments ("post_id") VALUES(1)
=&gt; [#&lt;Comment id: 1, post_id: 1&gt;, #&lt;Comment id: 2, post_id: 1&gt;]
</code></pre>

<h3>Assigning to the array on an existing record</h3>

<p>Comments no longer in the array have their foreign_key set to NULL. (I&#8217;d guess this changes if you declare <code>:dependent =&gt; :destroy</code>, but I didn&#8217;t try it)</p>

<pre><code>&gt;&gt; p.comments
=&gt; [#&lt;Comment id: 1, post_id: 1&gt;, #&lt;Comment id: 2, post_id: 1&gt;]
&gt;&gt; p.comments = []
  Comment Update (0.001335)   UPDATE comments SET post_id = NULL WHERE (post_id = 1 AND id IN (1,2))
=&gt; []
</code></pre>

<p>New comments in the array are created immediately:</p>

<pre><code>&gt;&gt; p.comments = [Comment.new]
  Comment Create (0.000504)   INSERT INTO comments ("post_id") VALUES(1)
=&gt; [#&lt;Comment id: 3, post_id: 1&gt;]
</code></pre>

<p>Existing comments have their foreign key set</p>

<pre><code>&gt;&gt; p2 = Post.create
  Post Create (0.000820)   INSERT INTO posts VALUES(NULL)
=&gt; #&lt;Post id: 2&gt;
&gt;&gt; c = p.comments.first
=&gt; #&lt;Comment id: 3, post_id: 1&gt;
&gt;&gt; p2.comments = [c]
  Comment Load (0.000292)   SELECT * FROM comments WHERE (comments.post_id = 2) 
  Comment Update (0.000684)   UPDATE comments SET "post_id" = 2 WHERE "id" = 3
=&gt; [#&lt;Comment id: 3, post_id: 2&gt;]
</code></pre>

<h2><code>belongs_to</code></h2>

<p>When assigning <code>c.post</code> on an existing comment, the change is saved when the comment is saved:</p>

<pre><code>&gt;&gt; c.post == p2
=&gt; true
&gt;&gt; c.post = p
=&gt; #&lt;Post id: 1&gt;
&gt;&gt; c.save
  Comment Update (0.000778)   UPDATE comments SET "post_id" = 1 WHERE "id" = 3
=&gt; true
</code></pre>

<p>When assigning a <code>c.post</code> to a new post, the post is created when the comment is saved:</p>

<pre><code>&gt;&gt; c
=&gt; #&lt;Comment id: 3, post_id: 1&gt;
&gt;&gt; c.post = Post.new
=&gt; #&lt;Post id: nil&gt;
&gt;&gt; c.save
  Post Create (0.000464)   INSERT INTO posts VALUES(NULL)
  Comment Update (0.000148)   UPDATE comments SET "post_id" = 3 WHERE "id" = 3
=&gt; true
</code></pre>

<p>This happens the same way when the comment is new &#8212; both are created together:</p>

<pre><code>&gt;&gt; c = Comment.new
=&gt; #&lt;Comment id: nil, post_id: nil&gt;
&gt;&gt; c.post = Post.new
=&gt; #&lt;Post id: nil&gt;
&gt;&gt; c.save
  Post Create (0.000499)   INSERT INTO posts VALUES(NULL)
  Comment Create (0.000161)   INSERT INTO comments ("post_id") VALUES(4)
=&gt; true
</code></pre>

<h2><code>has_many :through</code></h2>

<h3>Assigning to the array has no effect:</h3>

<p>Assignment to <code>p.categories</code> where <code>p</code> is an existing post:</p>

<pre><code>&gt;&gt; p
=&gt; #&lt;Post id: 1&gt;
&gt;&gt; cat = Category.create
  Category Create (0.000427)   INSERT INTO categories VALUES(NULL)
=&gt; #&lt;Category id: 1&gt;
&gt;&gt; p.categories = [cat]
  Category Load (0.000289)   SELECT categories.* FROM categories INNER JOIN categorisations ON categories.id = categorisations.category_id WHERE ((categorisations.post_id = 1)) 
=&gt; [#&lt;Category id: 1&gt;]
&gt;&gt; p.save
=&gt; true
</code></pre>

<p>Note there were no changes to the categories table.</p>

<p>Assignment to <code>p.categories</code> where <code>p</code> is a new post:</p>

<pre><code>&gt;&gt; p = Post.new
=&gt; #&lt;Post id: nil&gt;
&gt;&gt; p.categories = [cat]
=&gt; [#&lt;Category id: 1&gt;]
&gt;&gt; p.save
  Post Create (0.000513)   INSERT INTO posts VALUES(NULL)
=&gt; true
</code></pre>

<p>Again, nothing happens to the categories table</p>

<h3>Appending to the array does have an effect</h3>

<p>Can&#8217;t append to a has-many-through on a new record:</p>

<pre><code>&gt;&gt; p = Post.new
=&gt; #&lt;Post id: nil&gt;
&gt;&gt; p.categories &lt;&lt; cat
ActiveRecord::HasManyThroughCantAssociateNewRecords: Cannot associate new records through 'Post#categorisations' on '#'. Both records must have an id in order to create the has_many :through record associating them.
</code></pre>

<p>Can append to a has-many-through on an existing record. The joining record is created immediately:</p>

<pre><code>&gt;&gt; p = Post.find(:first)
  Post Load (0.000365)   SELECT * FROM posts LIMIT 1
=&gt; #&lt;Post id: 1&gt;
&gt;&gt; p.categories
  Category Load (0.000294)   SELECT categories.* FROM categories INNER JOIN categorisations ON categories.id = categorisations.category_id WHERE ((categorisations.post_id = 1)) 
=&gt; []
&gt;&gt; p.categories &lt;&lt; cat
  Categorisation Create (0.000479)   INSERT INTO categorisations ("post_id", "category_id") VALUES(1, 1)
=&gt; [#&lt;Category id: 1&gt;]
</code></pre>

<p>But this is not allowed if the category is new:</p>

<pre><code>&gt;&gt; p.categories &lt;&lt; Category.new
ActiveRecord::HasManyThroughCantAssociateNewRecords: Cannot associate new records through 'Post#categorisations' on '#'. Both records must have an id in order to create the has_many :through record associating them.
</code></pre>

<p>Did you learn something?</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2008/04/29/activerecord-behaviour-with-associations/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hobo 0.7.5 released</title>
		<link>http://hobocentral.net/blog/2008/04/18/hobo-075-released/</link>
		<comments>http://hobocentral.net/blog/2008/04/18/hobo-075-released/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 18:21:08 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
		
		<category>Releases</category>

		<guid isPermaLink="false">http://hobocentral.net/blog/2008/04/18/hobo-075-released/</guid>
		<description><![CDATA[Hobo 0.7.5 is a fairly small release in terms of new features, but does tidy up a few things and fixes some bugs that were causing people trouble. The bigger news is that there&#8217;s a whole bunch of new documentation now available.



To upgrade simply

gem update hobo


or grab the files from github or the svn repo [...]]]></description>
			<content:encoded><![CDATA[<p>Hobo 0.7.5 is a fairly small release in terms of new features, but does tidy up a few things and fixes some bugs that were causing people trouble. The bigger news is that there&#8217;s a whole bunch of new documentation now available.</p>

<p><a id="more-200"></a></p>

<p>To upgrade simply</p>

<pre><code>gem update hobo
</code></pre>

<p>or grab the files from github or the svn repo and update your plugin directories.</p>

<p>A highlight of some of the changes.</p>

<ul>
<li>Autocompleters and in-place-editors have been broken for a while. They&#8217;re working again now</li>
<li>Some incompatibilities with older REXML versions have been addressed. DRYML should now work with REXML versions 3.1.4 to 3.1.7.3</li>
<li>The &#8220;permission denied&#8221; page should be working again.</li>
<li>The Clean theme works much better in IE6 now.</li>
<li>We&#8217;ve squished a pagination bug that was messing a few people up</li>
</ul>

<p>There&#8217;s a bunch more little changes &#8212; see the <a href="http://github.com/tablatom/hobo/tree/master/hobo/CHANGES.txt">changelog</a> for the full low-down.</p>

<p>Then on the tidying up side, there are two major changes. First, we&#8217;ve moved to gems for the whole of hobo. Installing the <code>hobo</code> gem should get you <code>hobosupport</code>, <code>hobofields</code> and <code>will_paginate</code>. As a result of this the <code>hobo</code> command no longer tries to fetch anything with subversion.</p>

<p>And we&#8217;ve made a change to the structure of the git repo. Because Hobo is really one project, with some sub-components available as spin-offs, it is really much better to have the whole thing in a single repo. So <a href="http://github.com/tablatom/hobo">github.com/tablatom/hobo</a> now also contains <code>hobosupport</code> and <code>hobofields</code> in sub-directories. The separate repos on github for HoboSupport and HoboFields will be deleted soon. The one downside is that you can no longer follow &#8220;edge Hobo&#8221; by using git sub-modules, because git doesn&#8217;t support partial exports. We&#8217;ll provide some rake tasks to make that easier at some point.</p>

<p>And then there&#8217;s the docs.</p>

<p>We&#8217;ve got the very beginnings of a complete reference to the Rapid tag libraries. At the moment it&#8217;s just generated from the source-code but all we need to do now is start adding in-line documentation comments. The format is probably not ideal either - it doesn&#8217;t lend itself to easily searching the whole library. We&#8217;ll improve that too in time.</p>

<p>The manual has been extended to include a fairly comprehensive guide to customising Hobo&#8217;s RESTful model controller. </p>

<p>James has added some great insights into working with DRYML in the third part of the POD tutorial and with some additions to the DRYML guide.</p>

<p>And finally there&#8217;s our first HOW-TO: adding an admin sub-site to a Hobo app. We&#8217;ve got a bunch more of these planned which should be very useful. </p>

<p>So! We&#8217;re making good on our promise to concentrate less on features and more on making Hobo accessible to others. Mind you, having said that, there&#8217;s a cracking new feature in the pipeline&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2008/04/18/hobo-075-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The state of the documentation</title>
		<link>http://hobocentral.net/blog/2008/04/12/the-state-of-the-documentation/</link>
		<comments>http://hobocentral.net/blog/2008/04/12/the-state-of-the-documentation/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 15:56:23 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
		
		<category>General</category>

		<guid isPermaLink="false">http://hobocentral.net/blog/2008/04/12/the-state-of-the-documentation/</guid>
		<description><![CDATA[While chatting in the hobo IRC channel yesterday, I realised that I should probably do a blog post on the state of the documentation. We&#8217;re far from done here. I don&#8217;t want anyone to get the false impression that you&#8217;re expected to figure out how to use Hobo from the tutorials and guides that we&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p>While chatting in the hobo IRC channel yesterday, I realised that I should probably do a blog post on the state of the documentation. We&#8217;re far from done here. I don&#8217;t want anyone to get the false impression that you&#8217;re expected to figure out how to use Hobo from the tutorials and guides that we&#8217;ve posted already.</p>

<p><a id="more-199"></a></p>

<p>If you wanted to use Hobo not so long ago, pretty much your only option was reading the source and asking questions. If you want to use Hobo now, you&#8217;ve got some reasonable docs to get you going, but you&#8217;ll <em>still</em> need to read some source (especially the DRYML libraries in vendor/plugins/hobo/taglibs). Eventually, you&#8217;ll be able to get by on the docs alone and everyone will be happy :-)</p>

<p>There&#8217;s all sorts of details that we haven&#8217;t documented at all, but there&#8217;s two really big gaps: customising your controllers and the Rapid tag library. What I really wanted to talk about in this post is Rapid.</p>

<p>Rapid, in my opinion, is the best part of Hobo. You could say (and in fact I think I did somewhere or other) that everything else in Hobo exists to make Rapid possible. The combination of development speed and flexibility that Rapid brings is something I can&#8217;t say I&#8217;ve seen anywhere else.</p>

<p>But there&#8217;s a catch. You have to know it. And there&#8217;s a lot to know: layers and layers of tags calling tags calling tags. If you know your way around it from top to bottom, you&#8217;re singing. If you don&#8217;t, you&#8217;re probably writing way more view code than you need to. </p>

<p>You should get a good sense of this from the <a href="/agility-tutorial">Agility tutorial</a>. Towards the end you&#8217;re asked to code up bits and pieces of DRYML. These snippets seem to add functionality that far outweighs their size, but you must be thinking &#8220;how was I supposed to know <em>that</em>?!&#8221;</p>

<p>Some folk seem perfectly happy to read the DRYML taglibs and find their way around that way, but we really, <em>really</em> need docs for this stuff.</p>

<p>This is not meant as an apology, and it&#8217;s not going to be a promise to deliver X by Y. It&#8217;s just to let you know that those docs are very much on the to do list (and near the top), and please don&#8217;t think that you&#8217;re expected to just know what to do.</p>

<p>An idea that came out of that IRC chat was to create a tutorial that starts with a full app, in &#8220;normal Rails&#8221; style, and goes through how to gradually Hoboize it. In the view layer we could explain how to factor out all the HTML into layers of DRYML tags. That would not only show how to use bits and pieces from Rapid, but would also illustrate <em>why</em> Rapid is like it is. It would throw a lot of light on the whole of Hobo in fact. Could be a lot of work though, so don&#8217;t hold your breath until it&#8217;s ready :-)</p>

<p>p.s. On the subject of docs I just noticed that the HoboSupport docs are messed up &#8212; there&#8217;s a whole bunch of pages that aren&#8217;t linked to. like <a href="/hobosupport/hobosupport/enumerable/">this one</a> for example. Will fix!</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2008/04/12/the-state-of-the-documentation/feed/</wfw:commentRss>
		</item>
		<item>
		<title>[Ruby Skills] * and where</title>
		<link>http://hobocentral.net/blog/2008/04/09/ruby-skills-and-where/</link>
		<comments>http://hobocentral.net/blog/2008/04/09/ruby-skills-and-where/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 14:00:16 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
		
		<category>Ruby Skills</category>

		<guid isPermaLink="false">http://hobocentral.net/blog/2008/04/09/ruby-skills-and-where/</guid>
		<description><![CDATA[This is the first post in a new category I&#8217;ve added to the blog: &#8220;Ruby Skills&#8221;. It&#8217;s a place for me to share Ruby tricks and tips I&#8217;ve picked up along the way. Sometimes, as with this post, I&#8217;ll post about the Ruby extensions in HoboSupport. Now that HoboSupport is available as a gem, you [...]]]></description>
			<content:encoded><![CDATA[<p>This is the first post in a new category I&#8217;ve added to the blog: &#8220;Ruby Skills&#8221;. It&#8217;s a place for me to share Ruby tricks and tips I&#8217;ve picked up along the way. Sometimes, as with this post, I&#8217;ll post about the Ruby extensions in HoboSupport. Now that HoboSupport is available as a gem, you can easily use these tricks in any Ruby project.</p>

<p><a id="more-198"></a></p>

<p>First up, two new Enumerable methods that HoboSupport adds: <code>*</code> and <code>where</code>. Attentive readers might be thinking &#8212; hang on, Array already defined <code>*</code>. Don&#8217;t worry, it still works.</p>

<p><code>*</code> is some syntactic sugar for <code>map</code>. The idea is that we use &#8216;dot&#8217; to call a method on <em>one</em> object, and we use &#8216;dot star&#8217; to call a method on a <em>whole collection</em> of objects, returning all the results in a new array.</p>

<p>Say <code>users</code> is an array of user objects, and we want all the names:</p>

<pre><code>users.*.name
</code></pre>

<p>Nice eh? You can pass arguments too:</p>

<pre><code>users.*.to_json(:only =&gt; [:first_name, :surname])
</code></pre>

<p>Note that you can&#8217;t do</p>

<pre><code>users.*.name.upcase
</code></pre>

<p>That would try to upcase the array. You&#8217;d have to do:</p>

<pre><code>users.*.name.*.upcase # Not very efficient though
</code></pre>

<p>Of course, as a good functional programmer, I wouldn&#8217;t dream of giving map some love while neglecting filter (better known in Ruby-land as <code>find_all</code> or <code>select</code>). So you can also do:</p>

<pre><code>users.where.active? # same as users.find_all {|u| u.active? }
</code></pre>

<p>There&#8217;s also <code>where_not</code></p>

<p>Given that the result is just an array, we can chain them. Want the names of all the inactive users?</p>

<pre><code>users.where_not.active?.*.name
</code></pre>

<p>Very handy in the console.</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2008/04/09/ruby-skills-and-where/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Welcome to the new hobocentral.net</title>
		<link>http://hobocentral.net/blog/2008/04/07/welcome-to-the-new-hobocentralnet/</link>
		<comments>http://hobocentral.net/blog/2008/04/07/welcome-to-the-new-hobocentralnet/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 16:41:56 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
		
		<category>General</category>

		<guid isPermaLink="false">http://hobocentral.net/blog/2008/04/07/welcome-to-the-new-hobocentralnet/</guid>
		<description><![CDATA[And finally&#8230; Here it is. The site has been restructured with a new front page that does a much better job of communicating what we&#8217;re all about. And there&#8217;s much more besides&#8230;



Hobo 0.7.4 is out. Please see the changes. Note that rubyforge seems to be having a very bad day. Downloading the gem files directy [...]]]></description>
			<content:encoded><![CDATA[<p>And finally&#8230; Here it is. The site has been restructured with a new front page that does a much better job of communicating what we&#8217;re all about. And there&#8217;s much more besides&#8230;</p>

<p><a id="more-197"></a></p>

<p>Hobo 0.7.4 is out. Please see the <a href="http://github.com/tablatom/hobo/tree/v0.7.4/hobo/CHANGES.txt">changes</a>. Note that rubyforge seems to be having a very bad day. Downloading the gem files directy from http://rubyforge.org/projects/hobo seems like a good option. You&#8217;ll need both <code>hobo</code> and <code>hobosupport</code>.</p>

<p>There are <em>two</em>, count them, <strong>two</strong> tutorials on the <a href="/docs">docs</a> page, as well as guides to the basics of DRYML and the Hobo generators.</p>

<p><a href="/plugins">The big breakup has begun</a>. The HoboSupport gem, and HoboFields plugin (with the migration-generator) are now available without the rest Hobo. Let the whole world be freed from the drudgery of writing migrations! As you&#8217;ll see, HoboSupport and HoboFields are tested and well documented. We&#8217;ve achieved both in one go using Python-style DocTests. More on those in a later post.</p>

<p>The source code now lives on GitHub at <a href="http://github.com/tablatom">http://github.com/tablatom</a>. This is a really fantastic step forward giving us:</p>

<ul>
<li>A super easy way for people to contribute code</li>
<li>A nice online browser for both the source code and commit trail</li>
<li>RSS feeds for commits</li>
<li>And even a wiki</li>
</ul>

<p>And of course, if you do the GitHub thing, you&#8217;ve got to do the Lighthouse thing too. Lighthouse is now the new <a href="http://hobo.lighthouseapp.com">Hobo issue tracker</a>.</p>

<p>BUT. More importantly than all that. This all marks the start of a new chapter in the life of Hobo. The documentation that&#8217;s available now is just the start. We&#8217;re now moving on to extracting DRYML as a separate plugin, which also means doctests for every last DRYML feature. Then it&#8217;ll be on to docs for the Rapid tag library.</p>

<p>The one thing that&#8217;s missing right now is screencasts. The old ones are still online but they&#8217;re so out of date that we&#8217;re not linking to them any more. A new series of screencasts based around the Agility tutorial will be created soon.</p>

<p>We <em>will</em> continue to add new features and functionality, and we <em>will</em> sill make breaking changes right up until 1.0, but the focus now is on stability, tests and documentation. Oh, and building a community of contributors. That means you!</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2008/04/07/welcome-to-the-new-hobocentralnet/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nearly there&#8230;</title>
		<link>http://hobocentral.net/blog/2008/03/31/nearly-there/</link>
		<comments>http://hobocentral.net/blog/2008/03/31/nearly-there/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 20:52:50 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
		
		<category>General</category>

		<guid isPermaLink="false">http://hobocentral.net/blog/2008/03/31/nearly-there/</guid>
		<description><![CDATA[So here I am at the Ruby Fools conference in Copenhagen, and I did say we were going to try and have some new stuff ready by now. We&#8217;re nearly there. Stay tuned over the next few days.



First off though, I better deflate your expectations a bit. I don&#8217;t know if this was my fault [...]]]></description>
			<content:encoded><![CDATA[<p>So here I am at the Ruby Fools conference in Copenhagen, and I did say we were going to try and have some new stuff ready by now. We&#8217;re <em>nearly</em> there. Stay tuned over the next few days.</p>

<p><a id="more-196"></a></p>

<p>First off though, I better deflate your expectations a bit. I don&#8217;t know if this was my fault for wording the last blog post badly, but a few people seem to have gained some pretty wild expectations about what&#8217;s coming. Terms like &#8220;fully documented&#8221; and even (<em>gasp</em>) &#8220;version 1.0&#8243; have been bouncing around. Sorry folks, there&#8217;s good stuff coming but I never meant to give you that idea. Apologies for any confusion.</p>

<p>What <em>is</em> coming is this &#8212; we are turning the corner and focussing our energy on making Hobo into something everyone can use. That means breaking it up into parts, and writing more documentation and tests. The process has begun, and the first installment is on the way. Here&#8217;s what we&#8217;re about to put out. (If you know where to look you&#8217;ll know that some of these things are in fact available already. We&#8217;re just holding off from the  &#8216;official&#8217; release so we can promote the new stuff properly in a few places).</p>

<ul>
<li>Hobo 0.7.4</li>
<li>HoboSupport as a separate gem (core Ruby extensions). With full docs!</li>
<li>HoboFields plugin. This is something a lot of people have asked for &#8212; the migration generator as a separate plugin. HoboFields will be well documented too :-)</li>
<li>Significant improvements to the current Hobo tutorial (the POD classified ads application)</li>
<li>An entirely new tutorial &#8212; this is the one I delivered today at the conference. It goes through the full development of an app for tracking an agile development process (sort of a mini Mingle). Runs to 13 pages when printed.</li>
<li>A DRYML guide covering all of the basic facilities that DRYML provides.</li>
<li>A revamped hobocentral.net</li>
<li>Very nice online access to the source-code and commit log (from a service you may have heard of)</li>
<li>A very nice ticketing system that won&#8217;t drown in spam like the last one (also from a service you may know)</li>
<li>Possibly some other stuff I&#8217;ve forgotten because this is all off the top of my head and it&#8217;s kinda late.</li>
</ul>

<p>So it&#8217;s not 1.0 and it&#8217;s not <em>fully</em> documented but I hope it&#8217;s enough to demonstrate that we&#8217;re serious about moving Hobo in the right direction now. And like I said, it&#8217;s <em>nearly</em> ready. Watch this space.</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2008/03/31/nearly-there/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Coming Soon&#8230;</title>
		<link>http://hobocentral.net/blog/2008/02/22/coming-soon/</link>
		<comments>http://hobocentral.net/blog/2008/02/22/coming-soon/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 13:32:29 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
		
		<category>General</category>

		<guid isPermaLink="false">http://hobocentral.net/blog/2008/02/22/coming-soon/</guid>
		<description><![CDATA[A quick post is in order to let you know why things are so quiet around here. We&#8217;re making some changes.

As promised, Hobo is being broken down into smaller sub-projects such as DRYML, the migration generator, the security system etc. etc. You&#8217;ll still be able to use Hobo as a whole but people will be [...]]]></description>
			<content:encoded><![CDATA[<p>A quick post is in order to let you know why things are so quiet around here. We&#8217;re making some changes.</p>

<p>As promised, Hobo is being broken down into smaller sub-projects such as DRYML, the migration generator, the security system etc. etc. You&#8217;ll still be able to use Hobo as a whole but people will be able to try out just the bits that interest them much more easily. </p>

<p>As promised, Hobo is going to be properly tested and documented. This is being done at the same time as the break-up into sub-projects. Each sub-project will be released complete with a decent test suite and documentation.</p>

<p>And finally, the current hobocentral.net website does a pretty poor job of expressing what the project is all about. We&#8217;ll be making some changes there too. </p>

<p>The break-up / test / document work is already well underway, but we&#8217;re holding off from any releasing anything until we&#8217;re a bit more prepared. The goal is to have our new face ready in time for the Ruby Fools conference in Denmark. That&#8217;s 31st March, so you don&#8217;t have to hold on for too long. In the mean time there probably won&#8217;t be any releases and the blog will be a bit quiet. We haven&#8217;t gone anywhere so you can still say hi in the forums and the #hobo channel. A new and much more mature chapter in the Hobo story is just around the corner - please hold tight :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2008/02/22/coming-soon/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hobo at RailsConf 2008</title>
		<link>http://hobocentral.net/blog/2008/01/30/hobo-at-railsconf-2008/</link>
		<comments>http://hobocentral.net/blog/2008/01/30/hobo-at-railsconf-2008/#comments</comments>
		<pubDate>Wed, 30 Jan 2008 11:46:20 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
		
		<category>General</category>

		<guid isPermaLink="false">http://hobocentral.net/blog/2008/01/30/hobo-at-railsconf-2008/</guid>
		<description><![CDATA[Seems it&#8217;s conference season :-)

We are very excited to be presenting a three hour hands-on Hobo tutorial at RailsConf in Portland, Oregon!
]]></description>
			<content:encoded><![CDATA[<p>Seems it&#8217;s conference season :-)</p>

<p>We are very excited to be presenting a <a href="http://en.oreilly.com/rails2008/public/schedule/detail/1895">three hour hands-on Hobo tutorial</a> at RailsConf in Portland, Oregon!</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2008/01/30/hobo-at-railsconf-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Fools!</title>
		<link>http://hobocentral.net/blog/2008/01/25/the-fools/</link>
		<comments>http://hobocentral.net/blog/2008/01/25/the-fools/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 22:48:15 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
		
		<category>General</category>

		<guid isPermaLink="false">http://hobocentral.net/blog/2008/01/25/the-fools/</guid>
		<description><![CDATA[The kind fools at the Ruby Fools Conference have invited me to give a presentation on Hobo in Copenhagen on April 2nd. This will be the third time I&#8217;ve stood up to talk about Hobo and both times it&#8217;s been really difficult to cover such a big topic in a short time. So I made [...]]]></description>
			<content:encoded><![CDATA[<p>The kind fools at the <a href="http://jaoo.dk/ruby-cph/conference/">Ruby Fools Conference</a> have invited me to give a presentation on Hobo in Copenhagen on April 2nd. This will be the third time I&#8217;ve stood up to talk about Hobo and both times it&#8217;s been really difficult to cover such a big topic in a short time. So I made a suggestion &#8212; how about a railsconf style three hour tutorial? To which they replied with an enthusiastic &#8220;yes!&#8221;.</p>

<p>Three hours should be enough time to build a complete Facebook clone and still have time for a relaxed chat about Danish history. Well, um, it should be enough time to build a decent demo app and get some experience with all of the main features of Hobo. Excellent! The tutorial is scheduled for March 31st, which I believe is the day before the presentations start. The tutorial is in addition to the one hour presentation which is on the 2nd.</p>

<p>Would be great to meet some more of you Hobo people face-to-face.</p>

<p>If you&#8217;re coming, say so in the comments :-)</p>

<p>Should be fun!</p>

<p>p.s. As I&#8217;m writing this the details they have for me on the conference website are kinda broken, and my face is that of a white fuzzy blob. Should all be fixed up shortly :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2008/01/25/the-fools/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hobo 0.7.2 released</title>
		<link>http://hobocentral.net/blog/2008/01/04/hobo-072-released/</link>
		<comments>http://hobocentral.net/blog/2008/01/04/hobo-072-released/#comments</comments>
		<pubDate>Fri, 04 Jan 2008 18:38:46 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
		
		<category>Releases</category>

		<guid isPermaLink="false">http://hobocentral.net/blog/2008/01/04/hobo-072-released/</guid>
		<description><![CDATA[This release is mainly about fixes - problems recently reported in the forums with the migration generator and validation error pages have been fixed. Of course we sneaked in a bunch of new features too, and James has been busy making the Clean theme even nicer.


CHANGELOG

]]></description>
			<content:encoded><![CDATA[<p>This release is mainly about fixes - problems recently reported in the forums with the migration generator and validation error pages have been fixed. Of course we sneaked in a bunch of new features too, and James has been busy making the Clean theme even nicer.</p>

<ul>
<li><a href="/gems/CHANGES.txt">CHANGELOG</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2008/01/04/hobo-072-released/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
