<?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 &#187; Tom</title>
	<atom:link href="http://hobocentral.net/blog/author/admin/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>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>Hobo 0.8.8 released!</title>
		<link>http://hobocentral.net/blog/2009/06/24/hobo-088-released/</link>
		<comments>http://hobocentral.net/blog/2009/06/24/hobo-088-released/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 22:13:43 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://hobocentral.net/blog/2009/06/24/hobo-088-released/</guid>
		<description><![CDATA[Go grab Hobo 0.8.8 : )

Actually I only just published the gems so don&#8217;t forget that Rubyforge takes a while to get its act together.

I&#8217;m really posting this on behalf of Bryan who&#8217;s done pretty much all the work in this release &#8211; thanks Bryan! And thanks to Owen and the guys at Barquin for [...]]]></description>
			<content:encoded><![CDATA[<p>Go grab Hobo 0.8.8 : )</p>

<p>Actually I only <em>just</em> published the gems so don&#8217;t forget that Rubyforge takes a while to get its act together.</p>

<p>I&#8217;m really posting this on behalf of Bryan who&#8217;s done pretty much all the work in this release &#8211; thanks Bryan! And thanks to Owen and the guys at Barquin for their continued support.</p>

<p>This release is mostly bug fixes. The low-down, as usual, is in the <a href="/gems/CHANGES.txt">changelog</a></p>

<p>Oh one more thing. We liked the fresh new look in the previous post so much that it&#8217;s now the Hobo default. (that doesn&#8217;t mean you need ImageMagick, we just included the generated PNG files in the Clean theme)</p>

<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2009/06/24/hobo-088-released/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Super-easy cross-browser gradient backgrounds</title>
		<link>http://hobocentral.net/blog/2009/06/23/super-easy-cross-browser-gradient-backgrounds/</link>
		<comments>http://hobocentral.net/blog/2009/06/23/super-easy-cross-browser-gradient-backgrounds/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 22:30:24 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://hobocentral.net/blog/2009/06/23/super-easy-cross-browser-gradient-backgrounds/</guid>
		<description><![CDATA[

Hobo 0.8.8 is coming very soon, consisting mostly of bug fixes and bringing us that bit closer to the hallowed version 1.0. While we&#8217;re waiting, I though I&#8217;d quickly let you know about a very simple Rails plugin I knocked up that makes it extremely easy to add gradient background images to your stylesheets. (If [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://img.skitch.com/20090624-mkn8q4q4qpg74b54jfacmgbnie.jpg" alt="screen shot" title="" /></p>

<p>Hobo 0.8.8 is coming very soon, consisting mostly of bug fixes and bringing us that bit closer to the hallowed version 1.0. While we&#8217;re waiting, I though I&#8217;d quickly let you know about a very simple Rails plugin I knocked up that makes it extremely easy to add gradient background images to your stylesheets. (If you follow the hobousers group you&#8217;ve already seen a mention of this.)</p>

<p>For example:</p>

<pre><code>div.featured { background: url(/gradient_images/50:aaa:fff.png) repeat-x white; }
</code></pre>

<p>All that&#8217;s happening is that the plugin is rendering a PNG image on the fly; 1 pixel wide, 50 high, with a gradient from a light grey (<code>#aaa</code>) to white. It renders the image you would otherwise have to make yourself in Photoshop or whatever.</p>

<p>The general pattern for the image URL is:</p>

<pre><code>/gradient_images/&lt;height&gt;:&lt;start-color&gt;:&lt;end-color&gt;.&lt;format&gt;
</code></pre>

<p>Colours are 3 or 6 digit hex values, as in CSS. The format can be anything supported by ImageMagick (e.g. <code>png</code> or <code>jpg</code>).</p>

<p>You can also do multiple gradients in the same image, like this</p>

<pre><code>div.featured {
  height: 100px;
  background: url(/gradient_images/50:aaa:fff::50:fff:aaa.png) repeat-x 
}
</code></pre>

<p>That will give an image 100 pixels high fading from grey to white and back to grey.</p>

<p>Note that you only take the performance hit on the first request, after that the images will be served up directly by your web server thanks to Rails&#8217; page caching. You&#8217;ll see a bunch of image files in <code>public/gradient_images</code>.</p>

<p>Requires Rails 2.3 and RMagick.</p>

<p>The plugin is <a href="http://github.com/tablatom/gradient_server">available on github</a>.</p>

<p>UPDATE: We just threw up a <a href="http://github.com/Barquin/hobo-gradient-demo/tree/master">quick example app on github</a>. It&#8217;s great to see how much nicer you can make the default Hobo app look with <a href="http://github.com/Barquin/hobo-gradient-demo/blob/6e992076824d243f22a6c8d0aa73c997447050bf/public/stylesheets/application.css">just three CSS declarations</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2009/06/23/super-easy-cross-browser-gradient-backgrounds/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Hobo 1.0 Nears</title>
		<link>http://hobocentral.net/blog/2009/04/22/hobo-10-nears/</link>
		<comments>http://hobocentral.net/blog/2009/04/22/hobo-10-nears/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 18:01:14 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://hobocentral.net/blog/?p=222</guid>
		<description><![CDATA[Things may have been quiet on the blog, but those who&#8217;ve been following the hobousers google group or keeping an eye on the github commits will know that the Hobo project is just as active as ever. In fact we have a couple of news items for y&#8217;all 

First up, I&#8217;d like to give a [...]]]></description>
			<content:encoded><![CDATA[<p>Things may have been quiet on the blog, but those who&#8217;ve been following the hobousers google group or keeping an eye on the github commits will know that the Hobo project is just as active as ever. In fact we have a couple of news items for y&#8217;all </p>

<p>First up, I&#8217;d like to give a big welcome to Bryan Larsen, who is now working on Hobo full time. Bryan made some excellent contributions entirely off his own back, and he happened to come to the end of a previous project at just the right time so we snapped him up. A big thanks too to our good sponsors at <a href="http://barquin.com">Barquin International</a> for helping us to bring Bryan on to the team.</p>

<p>As requested on hobousers, we&#8217;re going to start putting out regular updates on the blog about the latest changes to the code; a sort of &#8220;This week in Edge Hobo&#8221;. Bryan will be helping out with these posts. </p>

<p>And the other little item of news is that we&#8217;ve started the push to Hobo 1.0. The feature set is frozen at this point, and we are working our way through bug fixes, improving the test coverage and docs. If you&#8217;ve got a pet bug that you want to see fixed in Hobo 1.0, make sure it&#8217;s <a href="http://hobo.lighthouseapp.com">ticketed</a>.</p>

<p>Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2009/04/22/hobo-10-nears/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Thanks</title>
		<link>http://hobocentral.net/blog/2008/12/10/thanks/</link>
		<comments>http://hobocentral.net/blog/2008/12/10/thanks/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 14:52:53 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://hobocentral.net/blog/2008/12/10/thanks/</guid>
		<description><![CDATA[Just had time to dash this off before heading out. I&#8217;ve already said a thank you to the team at Barquin, so I better not forget others who&#8217;ve helped out along the way!

Many thanks to Dr Nic for the early work in getting Hobo running as a gem, and for those super cool TextMate tricks. [...]]]></description>
			<content:encoded><![CDATA[<p>Just had time to dash this off before heading out. I&#8217;ve already said a thank you to the team at Barquin, so I better not forget others who&#8217;ve helped out along the way!</p>

<p>Many thanks to Dr Nic for the early work in getting Hobo running as a gem, and for those super cool TextMate tricks. And to Mathijs and Matt for many fixes and tweaks here and there. And of course Mr. James Garlick for a ton of commits in all areas of Hobo, contributions to the docs, and for making Hobo look good both on the outside (the Clean theme) and the inside (James is my API aesthetics consultant!)</p>

<p>Also a shout to Jason and Joel over at <a href="http://i5labs.com">i5labs</a>. These guys helped me out with a Hobo project that I got too busy to finish. If anyone out there needs development or help with a Hobo project, drop i5labs a line &#8211; they know what they&#8217;re doing. </p>

<p>Also thanks to Pete Ferne and the boys at <a href="http://jivatechnology.com/">Jiva</a>, for choosing Hobo for <a href="http://beanbaglearning.com/">Beanbag</a>, and for the many contributions to Hobo which they funded. I <em>am</em> going to do a proper post about Beanbag at some point &#8211; promise!</p>

<p>Finally a big thanks to everyone in the wider Hobo community for their involvement, large or small.</p>

<p>Merry Christmas &#8212; or whatever you will be celebrating &#8212; to all!</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2008/12/10/thanks/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Hobo 0.8.5 &#8211; bugfix release</title>
		<link>http://hobocentral.net/blog/2008/12/09/hobo-085-bugfix-release/</link>
		<comments>http://hobocentral.net/blog/2008/12/09/hobo-085-bugfix-release/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 18:08:03 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://hobocentral.net/blog/2008/12/09/hobo-085-bugfix-release/</guid>
		<description><![CDATA[I&#8217;ve just released Hobo 0.8.5. There was a problem with running Hobo as a gem which slipped into the short-lived 0.8.4 release. A few more fixes made it in to this release too, mostly in the new permissions system.

See the changes for the details. As always, remember that Rubyforge takes a good while to catch [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just released Hobo 0.8.5. There was a problem with running Hobo as a gem which slipped into the short-lived 0.8.4 release. A few more fixes made it in to this release too, mostly in the new permissions system.</p>

<p>See the <a href="/gems/CHANGES.txt">changes</a> for the details. As always, remember that Rubyforge takes a good while to catch up, so <code>gem update hobo</code> might not work for a while. You can download the gem files from Rubyforge manually though.</p>

<p>That&#8217;s pretty much me done for the year &#8212; I&#8217;m taking some time off now. And what a year it&#8217;s been. Progress has accelerated dramatically since our sponsors <a href="http://barquin.com/">Barquin International</a> came on board. We wouldn&#8217;t be remotely close to where we are now, especially in terms of <a href="http://cookbook.hobocentral.net">documentation</a>, without their support. So I&#8217;d like to say a very big thank you to Owen and the team over at Barquin.</p>

<p>It feels like we&#8217;re in great shape for a very exciting 2009 with Hobo. Just in time for the meltdown of the entire global economy. Heh &#8211; you win some you lose some : )</p>
]]></content:encoded>
			<wfw:commentRss>http://hobocentral.net/blog/2008/12/09/hobo-085-bugfix-release/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
