<?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>The Hobo Blog</title>
	<atom:link href="http://hobocentral.net/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://hobocentral.net/blog</link>
	<description>Hobo - the web app builder for Rails</description>
	<lastBuildDate>Wed, 25 Aug 2010 07:26:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>HoboFields and Rails 3</title>
		<link>http://hobocentral.net/blog/2010/08/24/hobofields-and-rails-3/</link>
		<comments>http://hobocentral.net/blog/2010/08/24/hobofields-and-rails-3/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 21:58:58 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://hobocentral.net/blog/?p=320</guid>
		<description><![CDATA[Update: I should of known better than to post this late at night. Now improved with actual working instructions!

Folks, thanks to Domizio&#8217;s great work, HoboFields is ready to try out with Rails 3. Here&#8217;s a quick guide to getting it installed and running the migration generator. You&#8217;ll need git to grab the latest code, as [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> I should of known better than to post this late at night. Now improved with actual working instructions!</p>

<p>Folks, thanks to Domizio&#8217;s great work, HoboFields is ready to try out with Rails 3. Here&#8217;s a quick guide to getting it installed and running the migration generator. You&#8217;ll need git to grab the latest code, as nothing has been released as a gem, but apart from that you won&#8217;t have to do anything too technical. Please note, Rails 3 RC2 just dropped today, but right now we&#8217;re still on RC1, so please make sure you have that version of Rails installed if you want to try this out.</p>

<p><span id="more-320"></span></p>

<p>OK, let&#8217;s grab the code:</p>

<pre><code>git clone http://github.com/tablatom/hobo.git
</code></pre>

<p>The Rails 3 work is happening on the cunningly named <code>rails3</code> branch, so you now need to</p>

<pre><code>cd hobo
git checkout origin/rails3
</code></pre>

<p>Next, we use Rake to generate and install the gems for HoboSupport and HoboFields.</p>

<pre><code>cd hobo_support
rake install
cd ../hobo_fields
rake install
</code></pre>

<p>That&#8217;s it! We&#8217;re ready to try a Rails 3 app with HoboFields. Assuming you have Rails 3 installed, use the new syntax for the <code>rails</code> command to create a new app:</p>

<pre><code>cd somewhere/for/your/test/app
rails new test_hobofields
cd test_hobofields
</code></pre>

<p>Now, the way to add a gem to a Rails 3 app, is to add the gem to Bundler&#8217;s <code>Gemfile</code>. Edit that file, and add this line, at the end:</p>

<pre><code>gem 'hobo_fields', '1.3.0.pre1'
</code></pre>

<p>If you now run</p>

<pre><code>rails generate
</code></pre>

<p>You should see two Hobo generators listed in the available generators. Let&#8217;s create a Hobo model (note the nice new namespaced generator syntax).</p>

<pre><code>rails generate hobo:model book name:string description:text
</code></pre>

<p>You can see the fields block has been added to the normal model template if you look at <code>app/models/book.rb</code>:</p>

<pre><code>class Book &lt; ActiveRecord::Base

  fields do
    name        :string
    description :text
  end

end
</code></pre>

<p>Now, let&#8217;s watch HoboFields work its magic and migrate the database for us.</p>

<pre><code>rails generate hobo:migration
</code></pre>

<p>At the prompt, choose &#8220;m&#8221;, then give the migration a name. If everything is going according to plan, the local SQLite development database should be migrated to include the <code>books</code> table. We can check at the SQLite prompt:</p>

<pre><code>rails dbconsole
</code></pre>

<p>Then at the SQLite prompt:</p>

<pre><code>.schema
</code></pre>

<p>You should see</p>

<pre><code>CREATE TABLE "books" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "description" text);
CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL);
CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version");
</code></pre>

<p>Score! And did you notice? Domizio even gave us a <em>colored</em> prompt in the migration generator. Too much : )</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2010/08/24/hobofields-and-rails-3/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Hobo and Rails 3</title>
		<link>http://hobocentral.net/blog/2010/08/06/hobo-and-rails-3/</link>
		<comments>http://hobocentral.net/blog/2010/08/06/hobo-and-rails-3/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 15:35:17 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://hobocentral.net/blog/?p=313</guid>
		<description><![CDATA[If you&#8217;re paying attention, you&#8217;ll know Domizio Demichelis as the contributor of some big improvements to Hobo&#8217;s internationalisation. Well Domizio has jumped in and is now taking over from where Bryan left off in the push to Rails 3 compatibility. Welcome aboard Domizio!

Domizio is going to let us know how he&#8217;s getting on via some [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re paying attention, you&#8217;ll know Domizio Demichelis as the contributor of some big improvements to Hobo&#8217;s internationalisation. Well Domizio has jumped in and is now taking over from where Bryan left off in the push to Rails 3 compatibility. Welcome aboard Domizio!</p>

<p>Domizio is going to let us know how he&#8217;s getting on via some short posts here on the blog. He just sent me his first thoughts, so over to Domizio:</p>

<p><span id="more-313"></span></p>

<h2>Porting Hobo to Rails 3</h2>

<p>The new Rails 3 compatible version of Hobo is on the go. It has been 15 days now that I am involved in the project, and it looks very challenging. Rails 3 introduces a lot of improvements, but also a lot of changes that inevitably break the legacy code. Hobo is not an exception: it is deeply interacting with the Rails internals, so the last version got deeply broken as well. </p>

<p>I can only guess the huge amount of work that it will take to make it work, but the result will absolutely be worth the effort: thanks to Rails 3 the new Hobo will have less code, less monkey patching and more efficiency and flexibility.</p>

<h2>Hobo becomes a Rails 3 engine.</h2>

<p>Thanks to rails 3 engine capability a lot of code has moved to better places and will be loaded at a better time. All the patches to the frameworks are loaded right after the framework with <code>ActiveSupport.on_load</code> hooks. All the code that needs reloading in developer mode has its own place to live in the <code>config.to_prepare</code> blocks. The programmer will have more choices to configure Hobo internals with the <code>config.hobo.*</code> configuration variables, the code will be more organized and easier to maintain.</p>

<h2>New routes system for Hobo 1.3</h2>

<p>The old ModelRouter has gone: it was drawing routes directly. The new system generates its own roues file and adds it to the <code>routes_reloader.paths</code>, so no monkey patching is needed anymore. The <code>hobo_routes.rb</code> file may be analized by the programmer that can eventually override any route in the regular <code>routes.rb</code> file.</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2010/08/06/hobo-and-rails-3/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>git subtree</title>
		<link>http://hobocentral.net/blog/2010/07/28/git-subtree/</link>
		<comments>http://hobocentral.net/blog/2010/07/28/git-subtree/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 15:32:16 +0000</pubDate>
		<dc:creator>Bryan Larsen</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://hobocentral.net/blog/?p=308</guid>
		<description><![CDATA[Although the blog has been quiet of late, one only has to look at the mailing list to see how busy the Hobo world is.   I&#8217;d like to give a shout-out to Matt and Kevin and everybody else who are patiently answering questions there.   The Hobo user community rocks!  But [...]]]></description>
			<content:encoded><![CDATA[<p>Although the blog has been quiet of late, one only has to look at the <a href="http://groups.google.com/group/hobousers">mailing list</a> to see how busy the Hobo world is.   I&#8217;d like to give a shout-out to Matt and Kevin and everybody else who are patiently answering questions there.   The Hobo user community rocks!  But a quiet blog does give the wrong impression sometimes.</p>

<p>I&#8217;ve got a few other things Hobo related that I hoped to blog about but aren&#8217;t ready yet, but there&#8217;s nothing stopping me from using this blog to point out tools that will make your Hobo experience better, is there?</p>

<p>Most of the Hobo and Ruby on Rails community uses git for version control.  Git is awesome, but there are two common pain points:  its learning curve, and submodules.</p>

<p>I won&#8217;t go into the problems with git submodules here.   If you&#8217;ve got a small project with only one developer and you never need to modify your submodules, you&#8217;re unlikely to run into problems, but as you add developers and start modifying the modules, hassles quickly creep in.</p>

<p>In the past, when you added a plugin to your project, you basically had two options:  copy the files into your project with script/plugin or link the files in using git submodules.</p>

<p>Now you can get the best of both worlds.  With <a href="http://github.com/apenwarr/git-subtree.git">git subtree</a> you get the behaviour of a copy, but you can still easily update the plugin and even extract changes to the plugin to push the changes upstream.</p>

<p>For instance, to add Hobo as a plugin to your project:</p>

<pre><code>git subtree add --squash --prefix=vendor/plugins/hobo git://github.com/tablatom/hobo.git master
</code></pre>

<p>You can then update the plugin with:</p>

<pre><code>git subtree pull --squash --prefix=vendor/plugins/hobo git://github.com/tablatom/hobo.git master
</code></pre>

<p>If you make changes to the Hobo in your app, you can extract them and send them to us with:</p>

<pre><code>git subtree split --prefix=vendor/plugins/hobo --branch hobo-master
git push git@github.com:someuser/hobo.git hobo-master:master
</code></pre>

<p>(Replace <i>someuser</i> with your github username).  And then send us a pull request.</p>

<p>Git subtree is not yet part of git itself, but hopefully it soon will be.  Even if it does not, it isn&#8217;t doing anything crazy or unorthodox to your repository, so I wouldn&#8217;t worry about using it.</p>

<p>Two other alternatives to git subtree are <a href="http://wiki.github.com/evilchelu/braid/">Braid</a> and <a href="http://piston.rubyforge.org/">Piston</a>.  They use similar strategies under the hood.  However, I&#8217;ve found git subtree to work better for me.</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2010/07/28/git-subtree/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Interview for InfoQ</title>
		<link>http://hobocentral.net/blog/2010/07/01/interview-for-infoq/</link>
		<comments>http://hobocentral.net/blog/2010/07/01/interview-for-infoq/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 13:08:47 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://hobocentral.net/blog/?p=300</guid>
		<description><![CDATA[A while back I was approached by Paul Blair who was interested in doing an email interview about Hobo for InfoQ. That interview went out a few weeks back and is available here.

The actual interview was quite a bit longer than the version that got published, and the full version is probably of interest to [...]]]></description>
			<content:encoded><![CDATA[<p>A while back I was approached by Paul Blair who was interested in doing an email interview about Hobo for InfoQ. That interview went out a few weeks back and is available <a href="http://www.infoq.com/news/2010/05/hobo-10">here</a>.</p>

<p>The actual interview was quite a bit longer than the version that got published, and the full version is probably of interest to anyone interested in Hobo, so I&#8217;m posting it here in full.</p>

<p><span id="more-300"></span></p>

<p><em>How would you describe Hobo in a few words?</em></p>

<p>Hobo is a collection of extensions to Ruby on Rails designed to make coding Rails apps even quicker and easier than it is already. We&#8217;re taking ideas that Rails pioneered, like <em>convention over configuration</em>, and pushing them much, much further.</p>

<p><em>What led you to develop Hobo?</em></p>

<p>It started pretty much as soon as I started learning Rails, back in 2006. I quickly found that I was extremely productive in Rails, except for the view layer. I had been experimenting with tag languages since as early as 1995 (browsing with Netscape version 1!) and had some ideas stored up. I was learning Ruby at the same time, and as I started experimenting, I quickly realised what a great language it is for this kind of thing. I was hooked. The Hobo project took off from the momentum that Ruby gave me.</p>

<p><em>Who is using Hobo? How big is the community?</em></p>

<p>We&#8217;ve had over 2,000 downloads of Hobo 1.0 and we&#8217;re approaching 500 members of the mailing list. It&#8217;s growing pretty quickly at the moment. As for who they are, we&#8217;ve had all sorts, from hobbyists to NASA. It&#8217;s especially popular with people that would love to create a Rails app but are a little intimidated by how much they have to learn in order to get to their finish line. With Hobo they can see that their goal is within reach.</p>

<p>I&#8217;m very happy to say that the Hobo community is very friendly. Newcomers are always welcome, and no one will tell you to RTFM!</p>

<p><em>What kinds of application is Hobo used for? Why would someone choose Hobo over Rails? Is Hobo useful for developing enterprise/business apps, or is it more for individuals making personal sites? Would professional web developers use Hobo?</em></p>

<p>Hobo can really be used anywhere that Rails can. The sweet-spot is for smaller projects and prototypes &#8211; that&#8217;s where the speed-up is most noticeable. With the professional folk, some love the power it gives them, and some seemingly prefer to do things at a slightly lower &#8216;hands-on&#8217; level. Actually we&#8217;ve worked very hard to make sure you can always go &#8216;under the hood&#8217; and can change anything that you could with regular Rails, but there is a learning-curve to be surmounted before you get to that point.</p>

<p><em>How does Hobo differ from other similar tools which are available, such as ActiveScaffold or Streamlined (or even make_resourceful and other REST controller frameworks)? Is Hobo just another scaffolding framework?</em></p>

<p>In my opinion Hobo is entirely different from these tools. I&#8217;ve written about this several times over the history of the project because obviously there&#8217;s a perceived similarity. Scaffolding frameworks are very useful in situations where rough-and-ready is good enough. For example, as a stop-gap while you&#8217;re working, or in an admin site that your public users won&#8217;t see. Hobo is for your whole app. You can start with the out-of-the-box UI, which is already closer to a usable site than you might expect, and from there you can gradually tweak anything and everything until you have exactly the user-experience you&#8217;re after.</p>

<p><em>Your site features two books devoted to Hobo. Why does Hobo require two books&#8217; worth of documentation? Is the learning curve steep?</em></p>

<p>Hobo is a big project. There&#8217;s a lot to learn but you only need to learn a little to be up and running and productive. The more particular you choose to be about fine-tuning your app, the further along that learning curve you&#8217;ll need to go. In practice it tends to be the people that build several Hobo apps that decide to learn the details. </p>

<p><em>How many plugins are included in Hobo? Is there more to Hobo than the three plugins HoboFields, HoboSupport, and DRYML? What are the external dependencies? Does Hobo require any native extensions? Can I run it under JRuby?</em></p>

<p>Actually DRYML <em>still</em> hasn&#8217;t been separated, although Bryan Larsen has pretty much done the work now as part of his efforts to support Rails 3. So we have HoboSupport, HoboFields, and Hobo itself which includes DRYML. We rely on will-paginate for pagination and that&#8217;s about it. There are no native extensions, and it runs fine under JRuby.</p>

<p><em>Do we really need another markup language? What does DRYML do for the user that, say, partials in Rails wouldn&#8217;t?</em></p>

<p>DRYML is the part of Hobo that I&#8217;m most proud of &#8212; I believe it brings some significant and important innovations to the table. It&#8217;s main strength is allowing view-code fragments to be packaged up for re-use, without sacrificing flexibility down the line. I think any discerning hacker who&#8217;s written a lot of Rails view code knows that we need something better. Projects like Seaside (for Smalltalk) and Erector make low-level languages like ERB and HAML look very primitive.</p>

<p>The important idea in DRYML is nested parameterisation. Imagine method A calls method B which calls method C, and in your code, which is using A, you realise you need to tweak a parameter to C. If that parameter is not exposed by both B and A in turn, you&#8217;re sunk. With DRYML you can &#8220;drill down&#8221; and add that extra parameter to C. In regular code this would be total chaos, but in view-code where all you&#8217;re ever doing is generating fragments of HTML, without side-effects, it works wonderfully. You can remove that breadcrumb link, inside that latest-news widget, inside your blog&#8217;s index page, without ever having to repeat any of the intermediate HTML code.</p>

<p><em>If a developer uses HoboFields to specify fields in the model classes, how does HoboFields maintain compatibility with ActiveRecord, which is looking to create those fields by querying the database? Wouldn&#8217;t this break ActiveRecord? What are the advantages and disadvantages of moving away from Rails&#8217; philosophy of generating the model dynamically from the database columns?</em></p>

<p>It doesn&#8217;t break any aspect of ActiveRecord. ActiveRecord still creates the fields by interrogating the database. The fields block in a HoboFields model is used by our <em>migration generator</em>. Originally it wasn&#8217;t used at runtime at all. The migration generator essentially does a &#8216;diff&#8217; of your database and your field declarations, and writes both the up and down migrations for you. So for example, if you want to rename a field, you literally go to the model and rename it, and then run the migration generator. Job done. ActiveRecord carries on as normal, taking the field name from the (now updated) database.</p>

<p>Once that was working we realised that the fields block was a great place to add a few more conveniences, like some nice shorthands for validations (e.g. <code>name :string, :required</code>).</p>

<p>I&#8217;ve honestly not encountered any down-sides at all. There&#8217;s really no need for anyone to write migrations by hand any more.</p>

<p><em>If I add a new field to a model, HoboFields creates a new migration to add a column to the database. How does it keep track of what additional migrations it needs to create? Isn&#8217;t this process fragile?</em></p>

<p>There&#8217;s nothing to keep track of. You run the generator, it creates a migration that will bring your database into line with your code. Once you&#8217;ve run that migration you can sanity-check by running the migration generator again and it will say &#8220;Database and models match &#8211; nothing to change&#8221;. It&#8217;s rock-solid. The one issue that is a challenge for any tool that attempts this is that you can&#8217;t tell the difference between an add/remove and a rename. For example, the migration generator sees a column in the database called &#8216;name&#8217; that&#8217;s missing from the model, and a field in the model called &#8216;title&#8217; for which there is no column. Did you remove the &#8216;name&#8217; field (and hence want all the name data to be dropped) and add a new one called &#8216;title&#8217;, or did you rename &#8216;name&#8217; to &#8216;title&#8217;? It&#8217;s impossible to tell. One solution is to require the developer to include some kind of hint in the source code, which could later be removed, but that&#8217;s clunky. In the end I realised that there was a simple solution &#8211; just ask! So the migration generator is interactive: is this an add/remove or a rename. It only asks when there is ambiguity.</p>

<p><em>What are HoboFields Rich Types? What kinds of types are there?</em></p>

<p>A rich type allows you to capture higher level information about your data, such as &#8220;this is an email address&#8221;, or &#8220;this is Markdown formatted text&#8221;. You know that information when you are coding your model, so it&#8217;s a shame not to capture it. Doing so allows you to do some nice tricks, like rendering Markdown text correctly as HTML without having to do a thing in your view code, or getting validations for email addresses. These things happen automatically as soon as you tell HoboFields the type of your fields. You can very easily add your own rich types.</p>

<p><em>Does Hobo add tools for building AJAX applications over and above what&#8217;s provided with Rails?</em></p>

<p>Yes. In Rails, if you have a fragment of a page that needs to be updated via AJAX, you have to factor that out into a partial &#8211; a separate template file. Sometimes they are ridiculously small and you can end up with unmanageably large numbers of them. DRYML has the concept of a <em>part</em>, which is a section of your template that is marked as something you want to update. There&#8217;s no need to go to a separate file. Even better, in many cases Hobo knows how to update the part for you. You can just annotate, say, an ajax form or button, with <code>update="foo"</code> where &#8216;foo&#8217; is the name of your part, and it just works &#8212; the page is updated according to the new state of the database after the ajax operation is complete. To be honest that&#8217;s one of the more magical features in Hobo &#8212; perhaps too magical for some people&#8217;s tastes. But it&#8217;s totally optional.</p>

<p><em>What makes the 1.0 release a milestone release?</em></p>

<p>It means we stopped adding features and focused on documentation and stability until we felt ready to say, OK, all sorts of people can feel comfortable using this now. We&#8217;ve also made a commitment to not make major breaking changes without a grace period of warning messages, very much as with Rails.</p>

<p><em>How do you see Hobo evolving after 1.0?</em></p>

<p>To be honest I feel that this is now up to the community. There are a million ideas to explore, but which ones get done depends on what people want, and what people are going to contribute. We&#8217;ve just had a fantastic contribution to the internationalisation support, and to be frank that wasn&#8217;t on my radar at all. It&#8217;s great to see the project gain it&#8217;s own momentum like that.</p>

<p>*The Hobo site says that Barquin International sponsors Hobo. Was Barquin involved with Hobo from its inception? What does Barquin&#8217;s support enable that you wouldn&#8217;t have if you were simply an open-source project without funding? *</p>

<p>The project had already been going for about two years when Owen Dall of Barquin spotted us and decided to get on board. To be clear, we&#8217;re not talking about VC-like funding here, with a long line of zeros. Barquin supported myself, and later Bryan Larsen to work on the code and still be able to pay the rent. Progress accelerated a great deal compared to fitting the project in on the side. I&#8217;m married with kids so the days when I could stay up all night working on a hobby are long gone. We also learned a lot by watching a company picking up Hobo and training their team. We were able to make the learning curve a lot more pleasant as a direct result of that experience. More recently, the project to create the Hobo books came entirely from Barquin. Some of my words were used, from documentation I&#8217;d written already, and for that I got authorship credit, but in truth the books happened entirely because of Owen and Jeff over at Barquin. The community has benefited enormously of course, so all in all we&#8217;re extremely grateful.</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2010/07/01/interview-for-infoq/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hobo 1.0.1 Released</title>
		<link>http://hobocentral.net/blog/2010/06/01/hobo-1-0-1-released/</link>
		<comments>http://hobocentral.net/blog/2010/06/01/hobo-1-0-1-released/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 10:35:22 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://hobocentral.net/blog/?p=296</guid>
		<description><![CDATA[Just pushed to rubygems.org &#8211; Hobo 1.0.1. This release contains some bug fixes and performance enhancements. Just

gem update hobo


There are two speedups: one that reduces the number of database accesses by Matt Jones and one that speeds up compilation of
DRYML by Petteri Räty.

If you&#8217;re interested in the details of what got fixed, take a look [...]]]></description>
			<content:encoded><![CDATA[<p>Just pushed to rubygems.org &#8211; Hobo 1.0.1. This release contains some bug fixes and performance enhancements. Just</p>

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

<p>There are two speedups: one that reduces the number of database accesses by Matt Jones and one that speeds up compilation of
DRYML by Petteri Räty.</p>

<p>If you&#8217;re interested in the details of what got fixed, take a look at the <a href="http://github.com/tablatom/hobo/tree/v1.0.1">commit log on github</a>.</p>

<p>Thanks very much to everyone who contributed!</p>

<p>Meanwhile work continues on Hobo 1.1. Watch this space : )</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2010/06/01/hobo-1-0-1-released/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Hobo 1.0 Released!</title>
		<link>http://hobocentral.net/blog/2010/02/23/hobo-1-0-released/</link>
		<comments>http://hobocentral.net/blog/2010/02/23/hobo-1-0-released/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 03:43:31 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://hobocentral.net/blog/?p=283</guid>
		<description><![CDATA[We did it! More than three years after the original open-source release of the Hobo beta, version 1.0 is finally here.

Go get it!

gem update hobo


or

gem install hobo


I for one never thought it would take that long! But then the project has changed such a lot. In the early days we thought the automatic UI provided [...]]]></description>
			<content:encoded><![CDATA[<p>We did it! More than three years after the original open-source release of the Hobo beta, version 1.0 is finally here.</p>

<p>Go get it!</p>

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

<p>or</p>

<pre><code>gem install hobo
</code></pre>

<p>I for one never thought it would take that long! But then the project has changed such a lot. In the early days we thought the automatic UI provided by Hobo would be a good starting point, but not much more. As we went on we noticed more and more patterns in web UIs, patterns we could capture in Hobo. As a result you can now get a surprisingly usable app for almost no effort beyond creating your models.</p>

<p>Of course from there you can customise things to your heart&#8217;s content &#8211; that was the goal right from the start and it hasn&#8217;t changed.</p>

<p>Along the way we added some killer features too. Writing migrations by hand is pretty much a thing of the past in Hobo apps, since we added the <a href="http://cookbook.hobocentral.net/manual/hobofields">migration generator</a> (also available with the rest of Hobo!). Hobo&#8217;s <a href="http://cookbook.hobocentral.net/manual/lifecycles">lifecycles</a> make it so much easier to implement multi-step processes, you get a UI to your lifecycles with little or no code, and there&#8217;s even support for secure links in email messages (for implementing things like forgotten-password and account-activation).</p>

<p>We&#8217;ve also put a huge effort into getting Hobo documented. We&#8217;ve built a community driven documentation site &#8211; <a href="http://cookbook.hobocentral.net">cookbook.hobocentral.net</a>, which is also the home of the extensive <a href="http://cookbook.hobocentral.net/manual/toc">manual</a>. There&#8217;s a new introductory <a href="http://hobocentral.net">screencast</a>. Oh and there&#8217;s two <a href="/books">books</a> available to download, and a third on the way!</p>

<p>Perhaps more importantly than any of that, there&#8217;s a thriving and very friendly <a href="http://staging.hobocentral.net/community/">community</a>. One of the most consistent comments we get from developers is how much they appreciated all the help and support they got while building their first Hobo app.  Be sure to check out all the cool <a href="/gallery/">apps</a> they&#8217;ve built.</p>

<p>For myself personally, and on behalf of the whole Hobo community, a huge thank-you goes out to all the people that helped us get here. In the beginning there was <a href="http://line.co.uk">Line Learning &amp; Communications</a> and <a href="http://jivatechnology.com/">Jiva Technology</a>, who contributed enormously by choosing Hobo for major projects, and of course my coding partner on those projects and the early version of Hobo, James Garlick. James&#8217; keen sense of aesthetics has had huge impact on the design of Hobo, inside and out. We had a good laugh too!</p>

<p>Today of course there&#8217;s Owen Dall, Ramon Barquin, and the team at <a href="http://barquin.com">Barquin International</a>. Owen spotted us at an early stage. He saw in Hobo a vision for the future and took a big bet on us. Barquin&#8217;s sponsorship has made Hobo 1.0 possible. Thanks Owen! There are too many people in the open-source community to thank individually, but a mention has to go to core contributors Matt Jones and Bryan Larsen &#8212; as you know, it&#8217;s been you guys much more than me that have polished things off, fixed the bugs, and got us to 1.0. And in the background all along, unseen by most, is my business partner, coach, cheerleader, agony-uncle and general strategist, the one and only <a href="http://redferret.net">Mr. Nigel Powell</a>. Well done everyone!</p>

<p>At this point it is customary to say &#8220;and this is only the beginning!&#8221;. In this case however, it&#8217;s not just an up-beat signing off remark. I&#8217;ve not actually been committing loads of code to Hobo in the last few months while Matt and Bryan have got us to 1.0. The reason is, I&#8217;ve been in the back room, quietly tinkering, tweaking, experimenting, honing. The next chapter in this story could just be a game-changer. Stay tuned.</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2010/02/23/hobo-1-0-released/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>New release candidate</title>
		<link>http://hobocentral.net/blog/2010/01/26/new-release-candidate/</link>
		<comments>http://hobocentral.net/blog/2010/01/26/new-release-candidate/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 15:41:41 +0000</pubDate>
		<dc:creator>Bryan Larsen</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://hobocentral.net/blog/?p=279</guid>
		<description><![CDATA[We fixed a few minor bugs, so I&#8217;ve put out a new release candidate.  Please try it in your application so we can release 1.0 as soon as possible.  Thanks.  See the change log for the details.
]]></description>
			<content:encoded><![CDATA[<p>We fixed a few minor bugs, so I&#8217;ve put out a new release candidate.  Please try it in your application so we can release 1.0 as soon as possible.  Thanks.  See the <a href="http://github.com/tablatom/hobo/commits/v0.9.106">change log</a> for the details.</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2010/01/26/new-release-candidate/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hobo 1.0RC3</title>
		<link>http://hobocentral.net/blog/2010/01/21/hobo-1-0rc3/</link>
		<comments>http://hobocentral.net/blog/2010/01/21/hobo-1-0rc3/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 18:34:06 +0000</pubDate>
		<dc:creator>Bryan Larsen</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://hobocentral.net/blog/?p=276</guid>
		<description><![CDATA[I&#8217;m pleased to announce the release of Hobo 1.0RC3 (AKA 0.9.104).  We hope that this will be the last release candidate before 1.0.

A large amount of the effort between the last two releases has gone into testing and into the documentation.

Here&#8217;s the changelog:

#604:

The new input-many introduced in 0.9.103 had issues with >10 elements,
several issues [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to announce the release of Hobo 1.0RC3 (AKA 0.9.104).  We hope that this will be the last release candidate before 1.0.</p>

<p>A large amount of the effort between the last two releases has gone into testing and into the <a href="http://cookbook.hobocentral.net/manual/toc">documentation</a>.</p>

<p>Here&#8217;s the changelog:</p>

<p><a href="https://hobo.lighthouseapp.com/projects/8324/tickets/604">#604</a>:</p>

<p>The new input-many introduced in 0.9.103 had issues with >10 elements,
several issues running with IE7 and an issue with its javascript
callbacks.</p>

<p><a href="https://hobo.lighthouseapp.com/projects/8324/tickets/537">#537</a>:</p>

<p><code>x._?.to_s</code> now returns nil rather than a blank string</p>

<p><a href="https://hobo.lighthouseapp.com/projects/8324/tickets/592">#592</a>: </p>

<p>If you previously had a snippet such as this:</p>

<pre><code>&lt;table fields="this, date, account.login"&gt;
  &lt;login-view:&gt;
    ...
  &lt;/login-view:&gt;
&lt;/table&gt;
</code></pre>

<p>You now have to use:</p>

<pre><code>&lt;table fields="this, date, account.login"&gt;
  &lt;account-login-view:&gt;
    ...
  &lt;/account-login-view:&gt;
&lt;/table&gt;
</code></pre>

<p>The same change has been applied to <code>&lt;field-list&gt;</code></p>

<p><a href="https://hobo.lighthouseapp.com/projects/8324/tickets/568">#568</a>:</p>

<p><code>hobo_index</code> now supports the <code>:scope</code> option</p>

<p>See also the <a href="http://github.com/tablatom/hobo/commits/v0.9.104">git log</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2010/01/21/hobo-1-0rc3/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Hobo 1.0RC2 released</title>
		<link>http://hobocentral.net/blog/2009/12/10/hobo-1-0rc2-released/</link>
		<comments>http://hobocentral.net/blog/2009/12/10/hobo-1-0rc2-released/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 17:42:48 +0000</pubDate>
		<dc:creator>Bryan Larsen</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://hobocentral.net/blog/?p=272</guid>
		<description><![CDATA[Warning

If you are on Rails 2.3.5 and are running Hobo as a plugin,
please check out bug
#574
for a workaround you need to apply to your Rakefile.

Bugs

This release fixes a couple of serious bugs:
565
and
567.

Input-Many &#38; has-many :through

The &#60;input-many&#62; tag in Rapid has been replaced with a version
ported from the &#60;hjq-input-many&#62; tag in Hobo-JQuery.  This brings
the following [...]]]></description>
			<content:encoded><![CDATA[<h3>Warning</h3>

<p>If you are on Rails 2.3.5 and are running Hobo as a plugin,
please check out bug
<a href="https://hobo.lighthouseapp.com/projects/8324/tickets/574-rails-235-b0rks-our-rake-tasks-running-on-edge-hobo">#574</a>
for a workaround you need to apply to your Rakefile.</p>

<h3>Bugs</h3>

<p>This release fixes a couple of serious bugs:
<a href="https://hobo.lighthouseapp.com/projects/8324-hobo/tickets/565">565</a>
and
<a href="https://hobo.lighthouseapp.com/projects/8324-hobo/tickets/567">567</a>.</p>

<h3>Input-Many &amp; has-many :through</h3>

<p>The <code>&lt;input-many&gt;</code> tag in Rapid has been replaced with a version
ported from the <code>&lt;hjq-input-many&gt;</code> tag in Hobo-JQuery.  This brings
the following enhancements:</p>

<ul>
<li>it supports 0 length associations</li>
<li>input-many&#8217;s may be nested inside of other input-many&#8217;s</li>
<li>it allows the (+) and (-) buttons to be customized</li>
<li>it provides a default for the <code>item</code> parameter</li>
<li>it copies from a template rather than cloning the current item and clearing it</li>
<li>the template may be overridden</li>
<li>id&#8217;s of textareas and selects and other non-input&#8217;s are adjusted properly</li>
<li>classdata for inner elements updated</li>
</ul>

<p>The new <code>&lt;input-many&gt;</code> tag differs from <code>&lt;hjq-input-many&gt;</code> in that:</p>

<ul>
<li>it&#8217;s written in prototype.js rather than in jquery</li>
<li>it doesn&#8217;t have the delayed initialization feature</li>
<li>the name of the main parameter is <code>default</code> rather than <code>item</code></li>
<li>hjq-input-many allows you to provide javascript callbacks.
input-many fires rapid:add, rapid:change and rapid:remove events
that can be hooked.</li>
</ul>

<p>You will have to ensure that your hobo-rapid.js and clean.css files
are updated in your application.</p>

<h3>Changes</h3>

<p>There were other minor bugs fixed.  See <a href="http://github.com/tablatom/hobo/commits/v0.9.103">the github log</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2009/12/10/hobo-1-0rc2-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Brown Paper Bags required</title>
		<link>http://hobocentral.net/blog/2009/12/02/brown-paper-bags-required/</link>
		<comments>http://hobocentral.net/blog/2009/12/02/brown-paper-bags-required/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 02:44:40 +0000</pubDate>
		<dc:creator>Bryan Larsen</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://hobocentral.net/blog/?p=267</guid>
		<description><![CDATA[Even though I&#8217;m sure I did a smoke test on the gem before releasing, 0.9.100 was an epic fail.  Please download 0.9.102.

You know, one thing I&#8217;ve significantly improved in Hobo since taking over maintenance from Tom has been the test suite.  Regardless, I seem to consistently require brown paper bag releases, but I [...]]]></description>
			<content:encoded><![CDATA[<p>Even though I&#8217;m sure I did a smoke test on the gem before releasing, 0.9.100 was an epic fail.  Please download 0.9.102.</p>

<p>You know, one thing I&#8217;ve significantly improved in Hobo since taking over maintenance from Tom has been the test suite.  Regardless, I seem to consistently require brown paper bag releases, but I don&#8217;t see any of them in Tom&#8217;s history.</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2009/12/02/brown-paper-bags-required/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
