all repos — h3rald @ 024f5ad26dd08a59273e644f9c1c0943f040c3c9

The sources of https://h3rald.com

Review of The Rails 3 Way.
h3rald h3rald@h3rald.com
Sun, 27 Mar 2011 13:36:09 +0200
commit

024f5ad26dd08a59273e644f9c1c0943f040c3c9

parent

03f3fe47baca08c5913a198fbe77869eb4602981

72 files changed, 339 insertions(+), 188 deletions(-)

jump to
M RulesRules

@@ -63,6 +63,7 @@ pdf_file = Pathname.new "#{Dir.pwd}/output#{item.identifier.gsub(/\/$/, '')}.pdf"

glyph_config @item glyph_pdf_for @item unless pdf_file.exist? glyph_article_for @item + Glyph.reset end end end
M content/archives/april-2006.textilecontent/archives/april-2006.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: april-2006 :title: "Archive: April 2006" +:permalink: april-2006 +:filters_pre: +- erb ----- <p>14 items were written in <em>April 2006</em>:</p>
M content/archives/april-2008.textilecontent/archives/april-2008.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: april-2008 :title: "Archive: April 2008" +:permalink: april-2008 +:filters_pre: +- erb ----- <p>2 items were written in <em>April 2008</em>:</p>
M content/archives/april-2009.textilecontent/archives/april-2009.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: april-2009 :title: "Archive: April 2009" +:permalink: april-2009 +:filters_pre: +- erb ----- <p>3 items were written in <em>April 2009</em>:</p>
M content/archives/april-2010.textilecontent/archives/april-2010.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: april-2010 :title: "Archive: April 2010" +:permalink: april-2010 +:filters_pre: +- erb ----- <p>2 items were written in <em>April 2010</em>:</p>
M content/archives/august-2006.textilecontent/archives/august-2006.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: august-2006 :title: "Archive: August 2006" +:permalink: august-2006 +:filters_pre: +- erb ----- <p>3 items were written in <em>August 2006</em>:</p>
M content/archives/august-2007.textilecontent/archives/august-2007.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: august-2007 :title: "Archive: August 2007" +:permalink: august-2007 +:filters_pre: +- erb ----- <p>1 item was written in <em>August 2007</em>:</p>
M content/archives/august-2008.textilecontent/archives/august-2008.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: august-2008 :title: "Archive: August 2008" +:permalink: august-2008 +:filters_pre: +- erb ----- <p>1 item was written in <em>August 2008</em>:</p>
M content/archives/december-2005.textilecontent/archives/december-2005.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: december-2005 :title: "Archive: December 2005" +:permalink: december-2005 +:filters_pre: +- erb ----- <p>9 items were written in <em>December 2005</em>:</p>
M content/archives/december-2007.textilecontent/archives/december-2007.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: december-2007 :title: "Archive: December 2007" +:permalink: december-2007 +:filters_pre: +- erb ----- <p>5 items were written in <em>December 2007</em>:</p>
M content/archives/december-2008.textilecontent/archives/december-2008.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: december-2008 :title: "Archive: December 2008" +:permalink: december-2008 +:filters_pre: +- erb ----- <p>1 item was written in <em>December 2008</em>:</p>
M content/archives/december-2010.textilecontent/archives/december-2010.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: december-2010 :title: "Archive: December 2010" +:permalink: december-2010 +:filters_pre: +- erb ----- <p>1 item was written in <em>December 2010</em>:</p>
M content/archives/february-2006.textilecontent/archives/february-2006.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: february-2006 :title: "Archive: February 2006" +:permalink: february-2006 +:filters_pre: +- erb ----- <p>2 items were written in <em>February 2006</em>:</p>
M content/archives/february-2009.textilecontent/archives/february-2009.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: february-2009 :title: "Archive: February 2009" +:permalink: february-2009 +:filters_pre: +- erb ----- <p>1 item was written in <em>February 2009</em>:</p>
M content/archives/january-2006.textilecontent/archives/january-2006.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: january-2006 :title: "Archive: January 2006" +:permalink: january-2006 +:filters_pre: +- erb ----- <p>2 items were written in <em>January 2006</em>:</p>
M content/archives/january-2007.textilecontent/archives/january-2007.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: january-2007 :title: "Archive: January 2007" +:permalink: january-2007 +:filters_pre: +- erb ----- <p>1 item was written in <em>January 2007</em>:</p>
M content/archives/january-2008.textilecontent/archives/january-2008.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: january-2008 :title: "Archive: January 2008" +:permalink: january-2008 +:filters_pre: +- erb ----- <p>1 item was written in <em>January 2008</em>:</p>
M content/archives/january-2009.textilecontent/archives/january-2009.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: january-2009 :title: "Archive: January 2009" +:permalink: january-2009 +:filters_pre: +- erb ----- <p>2 items were written in <em>January 2009</em>:</p>
M content/archives/january-2010.textilecontent/archives/january-2010.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: january-2010 :title: "Archive: January 2010" +:permalink: january-2010 +:filters_pre: +- erb ----- <p>1 item was written in <em>January 2010</em>:</p>
M content/archives/january-2011.textilecontent/archives/january-2011.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: january-2011 :title: "Archive: January 2011" +:permalink: january-2011 +:filters_pre: +- erb ----- <p>1 item was written in <em>January 2011</em>:</p>
M content/archives/july-2005.textilecontent/archives/july-2005.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: july-2005 :title: "Archive: July 2005" +:permalink: july-2005 +:filters_pre: +- erb ----- <p>1 item was written in <em>July 2005</em>:</p>
M content/archives/july-2006.textilecontent/archives/july-2006.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: july-2006 :title: "Archive: July 2006" +:permalink: july-2006 +:filters_pre: +- erb ----- <p>4 items were written in <em>July 2006</em>:</p>
M content/archives/july-2007.textilecontent/archives/july-2007.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: july-2007 :title: "Archive: July 2007" +:permalink: july-2007 +:filters_pre: +- erb ----- <p>5 items were written in <em>July 2007</em>:</p>
M content/archives/july-2008.textilecontent/archives/july-2008.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: july-2008 :title: "Archive: July 2008" +:permalink: july-2008 +:filters_pre: +- erb ----- <p>1 item was written in <em>July 2008</em>:</p>
M content/archives/july-2009.textilecontent/archives/july-2009.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: july-2009 :title: "Archive: July 2009" +:permalink: july-2009 +:filters_pre: +- erb ----- <p>1 item was written in <em>July 2009</em>:</p>
M content/archives/june-2005.textilecontent/archives/june-2005.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: june-2005 :title: "Archive: June 2005" +:permalink: june-2005 +:filters_pre: +- erb ----- <p>1 item was written in <em>June 2005</em>:</p>
M content/archives/june-2006.textilecontent/archives/june-2006.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: june-2006 :title: "Archive: June 2006" +:permalink: june-2006 +:filters_pre: +- erb ----- <p>2 items were written in <em>June 2006</em>:</p>
M content/archives/june-2007.textilecontent/archives/june-2007.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: june-2007 :title: "Archive: June 2007" +:permalink: june-2007 +:filters_pre: +- erb ----- <p>3 items were written in <em>June 2007</em>:</p>
M content/archives/june-2008.textilecontent/archives/june-2008.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: june-2008 :title: "Archive: June 2008" +:permalink: june-2008 +:filters_pre: +- erb ----- <p>4 items were written in <em>June 2008</em>:</p>
M content/archives/june-2009.textilecontent/archives/june-2009.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: june-2009 :title: "Archive: June 2009" +:permalink: june-2009 +:filters_pre: +- erb ----- <p>2 items were written in <em>June 2009</em>:</p>
M content/archives/june-2010.textilecontent/archives/june-2010.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: june-2010 :title: "Archive: June 2010" +:permalink: june-2010 +:filters_pre: +- erb ----- <p>2 items were written in <em>June 2010</em>:</p>
M content/archives/march-2006.textilecontent/archives/march-2006.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: march-2006 :title: "Archive: March 2006" +:permalink: march-2006 +:filters_pre: +- erb ----- <p>1 item was written in <em>March 2006</em>:</p>
M content/archives/march-2007.textilecontent/archives/march-2007.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: march-2007 :title: "Archive: March 2007" +:permalink: march-2007 +:filters_pre: +- erb ----- <p>2 items were written in <em>March 2007</em>:</p>
M content/archives/march-2008.textilecontent/archives/march-2008.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: march-2008 :title: "Archive: March 2008" +:permalink: march-2008 +:filters_pre: +- erb ----- <p>2 items were written in <em>March 2008</em>:</p>
M content/archives/march-2009.textilecontent/archives/march-2009.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: march-2009 :title: "Archive: March 2009" +:permalink: march-2009 +:filters_pre: +- erb ----- <p>4 items were written in <em>March 2009</em>:</p>
M content/archives/may-2006.textilecontent/archives/may-2006.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: may-2006 :title: "Archive: May 2006" +:permalink: may-2006 +:filters_pre: +- erb ----- <p>12 items were written in <em>May 2006</em>:</p>
M content/archives/may-2008.textilecontent/archives/may-2008.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: may-2008 :title: "Archive: May 2008" +:permalink: may-2008 +:filters_pre: +- erb ----- <p>1 item was written in <em>May 2008</em>:</p>
M content/archives/may-2009.textilecontent/archives/may-2009.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: may-2009 :title: "Archive: May 2009" +:permalink: may-2009 +:filters_pre: +- erb ----- <p>1 item was written in <em>May 2009</em>:</p>
M content/archives/may-2010.textilecontent/archives/may-2010.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: may-2010 :title: "Archive: May 2010" +:permalink: may-2010 +:filters_pre: +- erb ----- <p>1 item was written in <em>May 2010</em>:</p>
M content/archives/november-2005.textilecontent/archives/november-2005.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: november-2005 :title: "Archive: November 2005" +:permalink: november-2005 +:filters_pre: +- erb ----- <p>4 items were written in <em>November 2005</em>:</p>
M content/archives/november-2006.textilecontent/archives/november-2006.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: november-2006 :title: "Archive: November 2006" +:permalink: november-2006 +:filters_pre: +- erb ----- <p>1 item was written in <em>November 2006</em>:</p>
M content/archives/november-2007.textilecontent/archives/november-2007.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: november-2007 :title: "Archive: November 2007" +:permalink: november-2007 +:filters_pre: +- erb ----- <p>3 items were written in <em>November 2007</em>:</p>
M content/archives/november-2008.textilecontent/archives/november-2008.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: november-2008 :title: "Archive: November 2008" +:permalink: november-2008 +:filters_pre: +- erb ----- <p>3 items were written in <em>November 2008</em>:</p>
M content/archives/november-2009.textilecontent/archives/november-2009.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: november-2009 :title: "Archive: November 2009" +:permalink: november-2009 +:filters_pre: +- erb ----- <p>3 items were written in <em>November 2009</em>:</p>
M content/archives/november-2010.textilecontent/archives/november-2010.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: november-2010 :title: "Archive: November 2010" +:permalink: november-2010 +:filters_pre: +- erb ----- <p>1 item was written in <em>November 2010</em>:</p>
M content/archives/october-2007.textilecontent/archives/october-2007.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: october-2007 :title: "Archive: October 2007" +:permalink: october-2007 +:filters_pre: +- erb ----- <p>3 items were written in <em>October 2007</em>:</p>
M content/archives/october-2008.textilecontent/archives/october-2008.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: october-2008 :title: "Archive: October 2008" +:permalink: october-2008 +:filters_pre: +- erb ----- <p>1 item was written in <em>October 2008</em>:</p>
M content/archives/october-2009.textilecontent/archives/october-2009.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: october-2009 :title: "Archive: October 2009" +:permalink: october-2009 +:filters_pre: +- erb ----- <p>2 items were written in <em>October 2009</em>:</p>
M content/archives/september-2006.textilecontent/archives/september-2006.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: september-2006 :title: "Archive: September 2006" +:permalink: september-2006 +:filters_pre: +- erb ----- <p>1 item was written in <em>September 2006</em>:</p>
M content/archives/september-2007.textilecontent/archives/september-2007.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: september-2007 :title: "Archive: September 2007" +:permalink: september-2007 +:filters_pre: +- erb ----- <p>6 items were written in <em>September 2007</em>:</p>
M content/archives/september-2008.textilecontent/archives/september-2008.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: september-2008 :title: "Archive: September 2008" +:permalink: september-2008 +:filters_pre: +- erb ----- <p>1 item was written in <em>September 2008</em>:</p>
M content/archives/september-2009.textilecontent/archives/september-2009.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: september-2009 :title: "Archive: September 2009" +:permalink: september-2009 +:filters_pre: +- erb ----- <p>1 item was written in <em>September 2009</em>:</p>
M content/archives/september-2010.textilecontent/archives/september-2010.textile

@@ -1,9 +1,9 @@

----- -:filters_pre: -- erb :type: page -:permalink: september-2010 :title: "Archive: September 2010" +:permalink: september-2010 +:filters_pre: +- erb ----- <p>3 items were written in <em>September 2010</em>:</p>
M content/articles/distributed-programming-with-ruby-review.glyphcontent/articles/distributed-programming-with-ruby-review.glyph

@@ -50,7 +50,7 @@ ]

pt[I|Standard Library| -This part is the most important of all: it gives you the very basics about Distributed Programming and it describes the "building blocks" (\.&[drb] and &[rinda]) used in nearly all the other libraries described in the book. If you want you can skip some chapters in the other parts of the book, but make sure this part is crystal clear in your head before proceeding any further. +This part is the most important of all: it gives you the very basics about Distributed Programming and it describes the "building blocks" (\/&[drb] and &[rinda]) used in nearly all the other libraries described in the book. If you want you can skip some chapters in the other parts of the book, but make sure this part is crystal clear in your head before proceeding any further. ] pt[II|Third-Party Frameworks and Libraries| If you read part I, you're probably a bit disappointed by DRb and Rinda and the amount of code you have to write to make simple things work in a distributed environment. The good news is that there are some Ruby gems out there that can make life simpler:

@@ -108,7 +108,7 @@

section[ @title[Final Thoughts] txt[ -This is one of those books I'd like to see a second edition of. Partly because there are some relatively new gems which have been left out (\.=>[http://github.com/kwi/BrB|BrB], for example), partly because this is a rather hot topic at the moment, and different solutions are popping out at a rather extreme rate. +This is one of those books I'd like to see a second edition of. Partly because there are some relatively new gems which have been left out (\/=>[http://github.com/kwi/BrB|BrB], for example), partly because this is a rather hot topic at the moment, and different solutions are popping out at a rather extreme rate. The decision to write about mainly about gems was bold but necessary, and I'd really like to see more authors doing that, but with extra care. From reading this book, you understand that there's no _silver bullet_ when it comes to Distributed Programming, but rather different tools to do different jobs.
M content/articles/glyph-020-released.glyphcontent/articles/glyph-020-released.glyph

@@ -24,7 +24,7 @@

section[@title[What &[G] code looks like] Earlier this week I =>[http://blog.h3rald.com/making-a-custom-vim-syntax-file|blogged] about my new =>[http://github.com/h3rald/stash/blob/master/.vim/syntax/glyph.vim|&[G] vim syntax file]. I've been using it for a while, and all I can say is that it really helps! Here's what it looks like: -image[\.$[site.root]/img/pictures/glyph_syntax.png] +image[\/$[site.root]/img/pictures/glyph_syntax.png] I'm sorry for the Emacs and TextMate folks, but I only use Vim, so I only made a Vim syntax file. Anyhow, &[G] grammar is very simple, so rolling out your own syntax file for your favorite editor shouldn't be too hard. ]

@@ -43,7 +43,7 @@

For those of you using the awesome =>[http://nanoc.stoneship.org|nanoc] static site generator, here's a few source files you may want to take a look at: * =>[http://github.com/h3rald/h3rald/blob/master/lib/glyph-data.rb|lib/glyph-data.rb] -- How to update configuration settings. * =>[http://github.com/h3rald/h3rald/blob/master/lib/glyph-filter.rb|lib/glyph-data.rb] -- a simple &[G] filter. -* =>[http://github.com/h3rald/h3rald/blob/master/Rules|Rules] -- a rule using the @\.&[G]#compile@ method to generate PDF files. +* =>[http://github.com/h3rald/h3rald/blob/master/Rules|Rules] -- a rule using the @\/&[G]#compile@ method to generate PDF files. ] section[@title[Auto-regeneration]
M content/articles/glyph-030-released.glyphcontent/articles/glyph-030-released.glyph

@@ -43,7 +43,7 @@ p[Glyph now supports named attributes as well as positional parameters. This is particularly handy when you want to create macros with a lot of optional arguments: in this case, positional parameters are not great. As a result, for example, the code[section] macro now takes an optional code[title] and code[id] attributes, rather than two parameters]

p[Attributes look like macros, but they all start with a code[@] character. For example, see the the following image, showing this very section:] - image[\.$[site.root]/img/pictures/updated_glyph_syntax.png] + image[\/$[site.root]/img/pictures/updated_glyph_syntax.png] ] section[
M content/articles/glyph-040-released.glyphcontent/articles/glyph-040-released.glyph

@@ -31,7 +31,7 @@ @src[topic_file.glyph]

] =] txt[ -Note the code[@src] attribute? It basically includes the specified topic file. So by creating a @document.glyph@ file like =>[http://github.com/h3rald/glyph/blob/master/book/document.glyph|this], you can create a tidy table of contents (not a single @include@ macro) _and_ get a website for free. Glyph, as usual, takes care of anything for you, especially links between topics. Just link away like you did so far, nothing changes from previous versions, it will just work as expected (\.=>[/glyph/book/compiling/compiling.html#web_output|read more]). +Note the code[@src] attribute? It basically includes the specified topic file. So by creating a @document.glyph@ file like =>[http://github.com/h3rald/glyph/blob/master/book/document.glyph|this], you can create a tidy table of contents (not a single @include@ macro) _and_ get a website for free. Glyph, as usual, takes care of anything for you, especially links between topics. Just link away like you did so far, nothing changes from previous versions, it will just work as expected (\/=>[/glyph/book/compiling/compiling.html#web_output|read more]). ] ] section[
M content/articles/leading-lean-software-development.glyphcontent/articles/leading-lean-software-development.glyph

@@ -27,7 +27,7 @@ * _Your Shot_, i.e. some questions and exercises for the readers

image[@style[float:right]?[output?[pdf]|$[site.root]]/img/pictures/books/leadingleanswdev.jpg] -In total, the book contains 24 frames constituting the "Big Picture", which is actually a very powerful framework for lean software leadership. You can read the book's TOC =>[http://www.poppendieck.com/llsd.htm|online] on the Poppendieck website and read the book's Introduction (\.=>[http://www.poppendieck.com/pdfs/LLSD_intro.pdf|PDF link]) on the whole concept of _framing_ (yes, both the authors do love photography!). +In total, the book contains 24 frames constituting the "Big Picture", which is actually a very powerful framework for lean software leadership. You can read the book's TOC =>[http://www.poppendieck.com/llsd.htm|online] on the Poppendieck website and read the book's Introduction (\/=>[http://www.poppendieck.com/pdfs/LLSD_intro.pdf|PDF link]) on the whole concept of _framing_ (yes, both the authors do love photography!). When I started my career as a technical writer I used to love carefully-structured, simmetrical manuals. After a while, however, I understood that such rigorous structuring can even be dangerous if it becomes an obsession: you end up adding extra "padding writing" to make sections roughly match in length, or you start cutting down some other parts, for the same reason. Writing well-balanced books is hard, but I must say that the authors do a very good job with this book: it flows very naturally while keeping to its rigorous structure. ]
M content/articles/randal-schwartz.glyphcontent/articles/randal-schwartz.glyph

@@ -3,16 +3,15 @@ :type: article

:date: 2010-11-14 13:35:29.046412 +01:00 :title: A pizza with Randal Schwartz :subtitle: Talking about open source, programming, emacs and technical writing -:popular: true :intro: | I am an avid "FLOSS Weekly":http://twit.tv/FLOSS listener. Sometimes I may fall behind by a few episodes, but I normally manage to catch up: Randal Schwartz' show is by far my favorite podcast. You can imagine my reaction when I discovered that Randal was in Genoa, my city, ready to leave for yet another "InsightCruise":http://www.insightcruises.com/: I had to meet the guy, at all costs! It turned out to be easier than I thought: I simply "asked him":http://twitter.com/#!/h3rald/status/28962418438 if he fancied a pizza out on the way back from his cruise, and he said yes. - - I also decided to invite "Claudio Perrone":http://www.agilesensei.com/ as well, seeing that he's back in Genoa on one of his Agile/Lean gigs. He said he didn't know much about Perl, but he'd have liked to come as well. So there I was lining up a dinner out with two IT gurus at the same time. :extended_intro: | + I also decided to invite "Claudio Perrone":http://www.agilesensei.com/ as well, seeing that he's back in Genoa on one of his Agile/Lean gigs. He said he didn't know much about Perl, but he'd have liked to come as well. So there I was lining up a dinner out with two IT gurus at the same time. + Randal was staying at the "Bristol Palace Hotel":http://www.hotelbristolpalace.it/, and we met him at the lobby bar. In the end I persuaded my wife to come along as well, although she doesn't know much about Perl either. We shook hands with Capt. Neil [Bauman, of InsightCruises.com] and a few others of the cruise gang, then we were off to the restaurant.

@@ -27,9 +26,9 @@ :image: /img/pictures/rls/rls3_mini.png

:pdf: true ----- ?[output?[html|html5]| - rw:[q|<q>"{{0}}"</q>] + def:[q|<q>"{{0}}"</q>] ] -rw:[blockquote|<blockquote>"{{0}}"</blockquote>] +def:[blockquote|<blockquote>"{{0}}"</blockquote>] $[document.intro]

@@ -44,7 +43,7 @@ textile_section[

@title[Something more about Randal] =>[http://www.stonehenge.com/merlyn/|Randal Schwartz] is a world-famous Perl guru, author of the =>[http://www.oreillynet.com/pub/au/335|best Perl programming] on the market, and a very prolific =>[http://www.stonehenge.com/merlyn/columns.html|column writer]. -Randal is not a full-time writer though (\.q[writing books doesn't pay]). His day job consists in being a "guru on-demand": you can hire him to fix your code, refractor complex enterprise applications, or simply provide useful advice to IT managers. +Randal is not a full-time writer though (\/q[writing books doesn't pay]). His day job consists in being a "guru on-demand": you can hire him to fix your code, refractor complex enterprise applications, or simply provide useful advice to IT managers. Being the host of FLOSS Weekly is not a job, and Randal doesn't do it for the money of course, but for passion: q[I'm trying my best to do one show per week, even when I am away], he said, and he does go off traveling around the world a lot! q[Once I was at home for 8 weeks and it felt really strange. I kept thinking I had to pack to go somewhere else]. He's been on nearly every Geek/Insight Cruises (51, if I remember correctly) and his =>[http://www.stonehenge.com/merlyn/dot-plan.txt|travel plan] is always very busy.
M content/articles/reflections-on-management.glyphcontent/articles/reflections-on-management.glyph

@@ -25,13 +25,13 @@ Generally, I don't bother writing anything about the authors in my reviews: you can easily find this kind of information online if you want to. I'll make an exception in this case, you'll understand why as you read along.

=>[http://www.sei.cmu.edu/watts/index.cfm?WT.ac=watts|&[author]] was a true legend in Software Engineering, he's often referred to as _The Father of Software Quality_. He worked at IBM for 27 years and eventually became Vice President of Technical Development. In the 80s, he arrived at the =>[http://www.sei.cmu.edu/|Software Engineering Institute (SEI)] where he developed some key development processes of our time: the Software Capability Maturity Model (CMM), the Personal Software Process (PSP), and the Team Software Process (TSP). He received many awards, culminating with the _National Medal of Technology_ in 2005. -He wrote several books focusing mainly on software development and managing software projects through his PSP and TSP methodologies. _\.&[title] &mdash; How to Manage Your Software Projects, Your Teams, Your Boss, and Yourself_ was the last book published while he was alive. =>[http://www.informit.com/title/0321624505|Leadership, Teamwork, and Trust: Building a Competitive Software Capability], co-authored with James W. Over, was published posthumously. +He wrote several books focusing mainly on software development and managing software projects through his PSP and TSP methodologies. _\/&[title] &mdash; How to Manage Your Software Projects, Your Teams, Your Boss, and Yourself_ was the last book published while he was alive. =>[http://www.informit.com/title/0321624505|Leadership, Teamwork, and Trust: Building a Competitive Software Capability], co-authored with James W. Over, was published posthumously. &[author] =>[http://www.sei.cmu.edu/newsitems/Humphrey_obituary.cfm|died] on October 28, 2010. ] textile_section[ @title[Structure and Organization] -In many ways, _\.&[title]_ can be seen as the _summa_ of Humphrey's work on PSP, TSP and management of software projects, condensed in a very readable 288-page-book, co-written with =>[http://www.sei.cmu.edu/about/people/wrt.cfm|William R. Thomas], Senior Technical Writer and manager of SEI's Technical Publications Team. +In many ways, _\/&[title]_ can be seen as the _summa_ of Humphrey's work on PSP, TSP and management of software projects, condensed in a very readable 288-page-book, co-written with =>[http://www.sei.cmu.edu/about/people/wrt.cfm|William R. Thomas], Senior Technical Writer and manager of SEI's Technical Publications Team. image[@style[float:right]?[output?[pdf]|$[site.root]]/img/pictures/books/reflmgmt.jpg]
M content/articles/succeeding-with-agile-review.glyphcontent/articles/succeeding-with-agile-review.glyph

@@ -19,7 +19,7 @@ &:[S|_Scrum_]

&:[ag|_agile_] &:[links| * =>[http://www.mountaingoatsoftware.com/topics/scrum|Introduction to &[S] - An Agile Process] -* =>[http://en.wikipedia.org/wiki/\.&[S]_(development)|&[S] (Wikipedia Page)] +* =>[http://en.wikipedia.org/wiki/\/&[S]_(development)|&[S] (Wikipedia Page)] * =>[http://www.scrumalliance.org/|&[S] Alliance] * =>[http://www.scrum.org/|&[S].org] ]
M content/articles/take-back-your-site-with-nanoc.textilecontent/articles/take-back-your-site-with-nanoc.textile

@@ -8,17 +8,19 @@ - writing

date: 2009-09-15 13:32:51.049000 +02:00 permalink: take-back-your-site-with-nanoc title: "Take back your site, with nanoc!" +subtitle: How I turned H3RALD.com into a 100% static, hassle-free web site filters_pre: - erb - redcloth toc: true -popular:true -summary: "A quick overview on the nanoc site compiler, and how I turned my Typo-powered dynamic site into a static one, discovering the pleasures of blogging 'like a hacker'." +popular: true +intro: | + Back in 2004, when I bought the h3rald.com domain, this site was static. At the time I hardly knew HTML and CSS, nevermind server-side languages, so I remember creating a _pseudo-template_ for the web site layout and using it whenever I wanted to create a new page, to preserve the overall look-and-feel. This was a crude and inefficient strategy, of course: whenever I changed the layout I had to replicate the change in all the pages of the site &ndash; the whole eight of them. +extended_intro: | + Five years later, after rebuilding this web site "seven times":/h3rald/ using different backends (PHP + CakePHP, Ruby + Rails + Typo, etc.), I decided to make it static again, this time with a twist. It all started when I read a "post":http://tom.preston-werner.com/2008/11/17/blogging-like-a-hacker.html by Tom Preston-Warner ("GitHub":http://www.github.com co-founder) that I finally decided to give it a try. Today, the 8th release of this web site is 100% static: if you load any page, there's no server-side interpretation going on, you're just browsing a plain HTML page, at most with a few AJAX calls. But let's start from the beginning... ----- -Back in 2004, when I bought the h3rald.com domain, this site was static. At the time I hardly knew HTML and CSS, nevermind server-side languages, so I remember creating a _pseudo-template_ for the web site layout and using it whenever I wanted to create a new page, to preserve the overall look-and-feel. This was a crude and inefficient strategy, of course: whenever I changed the layout I had to replicate the change in all the pages of the site &ndash; the whole eight of them. -Five years later, after rebuilding this web site "seven times":/h3rald/ using different backends (PHP + CakePHP, Ruby + Rails + Typo, etc.), I decided to make it static again, this time with a twist. It all started when I read a "post":http://tom.preston-werner.com/2008/11/17/blogging-like-a-hacker.html by Tom Preston-Warner ("GitHub":http://www.github.com co-founder) that I finally decided to give it a try. Today, the 8th release of this web site is 100% static: if you load any page, there's no server-side interpretation going on, you're just browsing a plain HTML page, at most with a few AJAX calls. But let's start from the beginning... h3. Why I don't need a blog platform
A content/articles/the-rails3-way-review.glyph

@@ -0,0 +1,84 @@

+----- +:type: article +:title: "Book Review: The Rails 3 Way" +:tags: ["review", "books", "rails"] +:date: 2011-03-26 13:16:46.694283 +01:00 +:subtitle: aka The (Rails) Bible, 2nd Edition +:image: /img/pictures/books/rails3way/cover.jpg +:toc: true +:permalink: the-rails3-way-review +:pdf: true +:intro: | + Obie did it, again. With the second edition of his former masterpiece, _The Rails Way_, he managed to outdo himself delivering a new, even more useful, Rails Bible. Wether you're a Ruby on Rails professional like him or just an enthusiast, this book is pretty much everything you need to learn how to master the third release of DHH(David Heinameier Hansson)'s Ruby web framework. + + "The Rails 3 Way":http://tr3w.com/ is no ordinary second edition. If you already own _The Rails Way_, you'll be pleasantly surprised that this is a different, more polished book. While something had to remain the same, there's a lot of new content in its 708 pages, and even the old content has been rewritten or at least revised. + + It doesn't matter whether you already know Rails 2.x or you're jumping straight into the Rails 3 world, if you use Rails, you can't miss this book. +:extended_intro: | + I started the "review of the first edition":http://www.h3rald.com/articles/the-rails-way-review/ with a quote from my fiancée (now wife) on how pointless programming books are, especially those dealing with newish technologies: they tend to go out of date fairly quickly. While this still holds true, there's not much you can do about it, except maybe purchasing a digital edition of the book instead. However, if you want to keep a good Rails reference book by your side, this has to be the one. +----- +$[document.intro] +&:[title|The Rails 3 Way] +&:[author|Obie Fernandez] +&:[img-path|/img/pictures/books/rails3way] + +§txt[ + @title[What's New] + + left-fig[&[img-path]/compare.jpg|The Rails Way vs. The Rails 3 Way] + +If you put _\/&[title]_ and the original _The Rails Way_ one next to the other, you can see that the new book is considerably shorter: about 200 pages less. This doesn't mean it contains less information, quite the opposite: the new book contains a lot more stuff with less _fluff_. Obie managed to reduce digressions to a bare minimum and focus on providing more informative content to the readers using less text. Think of it as a _fat-free_ book. + +While no _What's new in Rails 3_ section is included in the book, Obie points out the new stuff when needed (but not always). An example is chapter 12, _Ajax on Rails_, in which changes introduced by Rails 3 clearly stand out, especially the section on Unobtrusive JavaScript (UJS). + +Although the book is divided into chapters, it can also be divided into parts (each dealing with a specific theme) simply by looking at the front edge. According to this theme-based partitioning, Active Record makes up for nearly _a quarter_ of the book (173 pages), followed by _Active Support API_ appendix and the _All About Helpers_ chapter. + +Another nice addition that can really make the difference when you're in a hurry is the _Method Index_, which is separate from the main Index. It seems to account for all the methods in all (or at least the most important) classes in Rails. I didn't check method by method, but it is pretty comprehensive nonetheless, based on some quick spot checking. + +] +§txt[ + @title[Contents] + + right-fig[&[img-path]/sections.jpg|Active Record makes up for over 24% of the book] + +The first thing you notice once you read the first few pages, is that this book is _even more opinioned_ than its predecessor. + +quote[Even though Rails 3 is less opinionated than early versions, in that it allows for easy reconfiguration of Rails assumptions, this book is more opinionated than ever.|Obie Fernandez|Introduction to _The Rails Way_] + +In other words, you won't find an ERb view in the whole book (Haml rulez!) and if you don't like RSpec... well, you'd better skip Chapter 18 altogether. + +The other big difference with traditional Ruby and Rails books is the amount of reference to third-party code, mainly rubygems. Rails comes with no authentication functionality? So what: =>[https://github.com/binarylogic/authlogic|Authlogic] and =>[https://github.com/plataformatec/devise|Devise] are great for the job, go check them out! Do you need to test your Active Mailer emails? =>[https://github.com/bmabey/email-spec|email-spec] is all you need. + +I was actually surprised to find so much content not strictly related to Rails in this book: the first chapter starts off with =>[http://gembundler.com/|Bundler] (now a Rails dependency, however), Chapter 2 (Routes) mentions =>[http://rack.rubyforge.org/|Rack], and so does Chapter 4 (Controllers). If you want a nice and to-the-point practical introduction to =>[http://relishapp.com/rspec|RSpec], the first part of Chapter 18 covers that. + + left-fig[&[img-path]/reference.jpg|About 40% of the book is reference material] + +Then there's reference material. Plenty of it, a good 40% I daresay. The good thing is that (unlike the first edition) it won't bore you to death: take Chapter 5 (Working with Active Record) for example, you'll fly through find-related methods so swiftly you'll regret when it's over. Active Support? I didn't read every line of Appendix B, but when I want to know something about inflection methods I will know exactly where to find them, and what to expect: the method signature, a few lines of text, and a short example at most. + +My only regret? Cheat sheets. Or better, the lack of them. More tables, please! Granted, the web is full of Rails cheat sheets, but a few of them at the end of the book or even in a separate foldable add-on like in the =>[http://www.pragprog.com/titles/tpp/the-pragmatic-programmer|Pragmatic Programmer] can't hurt. + +Finally, some words about the code examples. The code/text ratio is almost 1:1, but Obie's choice of _not_ turning this book into a huge tutorial by implementing a single example application was absolutely right: The code snippets used in throughout the book are concise and relevant to the text around them and won't distrupt your reading. If you want to play with them, they're even =>[https://github.com/obie/tr3w_time_and_expenses|on GitHub] for you to clone and fork. +] +§txt[ + @title[Organization and Writing Style] + + right-fig[&[img-path]/flick.jpg|Yes, it's a long book. But you don't<br/>have to read it from start to finish!] + +_\/&[title]_ is a book for Rails professionals. If you don't know Ruby or if you never heard of Ruby on Rails, this book is _not_ for you. It won't teach you what MVC is, it won't waste time on explaining _convention over configuration_, it won't even describe the structure of a Rails app! If you're newcomer to Rails... well, that's what =>[http://ruby.railstutorial.org/|The Rails Tutorial] is for. + +To be honest, I'm with Obie on this. If this book had been beginner-friendly, it would have been even longer than the previous edition, and probably more boring. Instead, by assuming that the reader has been already initiated to the world of Ruby and Rails, the author can dive into the framework straight away. Moreover, chapters are not ordered by difficulty: they don't need to be, they need to be ordered in a way that makes sense for a Rails developer. + +Once again, this book includes personal sidebars used to voice the opinion of one of the co-authors or Rails gurus: there are plenty of "_Yehuda_ says", "_Xavier_ says", "_Durran_ says", and so on. Nothing new there, it's just a nice way to provide the reader with authoritative opinions on some matters. + +As I progressed through the book, I started noticing how Obie anticipated my questions and doubts: I found this to be a remarkable feature of this book, and an excellent way to make the readers feel they are on the same page with the author. If something should not be done because it may cause you problems, the author won't hold back. See page 214, "Extra Columns on *has_and_belongs_to_many* Join Tables", for example: it's a cool feature, but it can cause all sort of annoyances, and the bottom line is: use *has_many :through* instead, if you need extra columns on join tables. + +] +§txt[ + @title[Conclusion] + +_\/&[title]_ remains the _de facto_ reference book for Rails. I was quite pleased to see that Obie improved it so much, compared to the first edition. Sure, it cannot be recommended to absolute beginners, but it's not a big problem: if you're new to Rails, all you have to do is browse around and read a few basic tutorials first. + +What I really missed was a _What's New_ section, or something like that. The new stuff that was introduced in Ruby on Rails v3 is seamlessly blended with all the rest, which is great if you're tackling the framework for the first time, but not so much when you already read tons of books on Rails 2.x. I would have tagged content specific to Rails 3 in some way at least, for example with labels on the side of each page. Or maybe have a short introductory chapter covering the new features, and directions on where to find them in the book. + +Overall, _\/&[title]_ is a great book, and if you plan on using Rails 3 for your next web site, it deserves a special place on your desk. +]
M content/home.erbcontent/home.erb

@@ -91,7 +91,7 @@ %>

</section><!-- #main-content-right end --> </section><!-- #main-content end --> <section class="right" id="secondary-content"> - <%= render 'article_intro', :item => popular[1], :classes => "two-columns hyphenate", :extended => true %> + <%= render 'article_intro', :item => popular[0], :classes => "two-columns hyphenate", :extended => true %> <article class="feature"> <header> <p>FEATURED CONTENT</p>

@@ -105,7 +105,7 @@ <p>Glyph enables you to minimize text duplication, focus on content rather than presentation, manage references seamlessly and automate tedious tasks through a simple but effective macro language, specifically geared towards customization and extensibility. <a href="/glyph/">&raquo;&nbsp;<strong>Read&nbsp;More</strong></a></p>

</section> </article> <section class="left" id="secondary-content-left"> - <%= render 'article_intro', :item => popular[0], :classes => "hyphenate", :extended => false %> + <%= render 'article_intro', :item => popular[1], :classes => "hyphenate", :extended => false %> <%= render 'article_intro', :item => popular[3], :classes => "hyphenate", :extended => false %> </section><!-- #secondary-content-left end --> <section class="right border-left" id="secondary-content-right">
M content/styles/_content.scsscontent/styles/_content.scss

@@ -154,12 +154,12 @@ border-bottom: 1px solid $light-gray;

width: 100%; } img { - margin: 1em; + margin: 0.6em; } - .right, img[style="float:right;"] { + .right, img[style="float:right;"], figure[style="float:right;"] { margin: 1em 0 1em 1em; } - .left, img[style="float:left;"] { + .left, img[style="float:left;"], figure[style="float:left;"] { margin: 1em 1em 1em 0; } blockquote, q {

@@ -188,6 +188,25 @@ h2 {

margin-bottom:10px; } } + +/* Figures */ + +figcaption { + color: #8F6B17; + font-style: italic; + padding: 0; + margin: 0 0.6em; +} + +figure { + padding: 0; + display: auto; + border: 1px solid #ccc; + img { + margin-bottom: 0; + } +} + /* Lists */
M lib/data.glyphlib/data.glyph

@@ -1,7 +1,7 @@

--[-------------------- Snippets ------------------------] &:[G|Glyph] --[-------------------- Macros --------------------------] -rw:[h3rald.article| +def:[h3rald.article| article[ @pubdate[$[document.date]] @head[

@@ -25,6 +25,29 @@ margin-bottom: 2em;

padding-bottom: 2em; border-bottom: 1px solid #000; } + div.caption { + color: #8F6B17; + font-style: italic; + padding: 0; + margin: 0 0.6em; + } + + .figure { + padding: 0; + border: 1px solid #ccc; + display: block; + } + .figure img { + margin-bottom: 0; + } + .left { float: left; } + .right { float: right; } + .right, img\[style="float:right;"\], .figure\[style="float:right;"\] { + margin: 1em 0 1em 1em; + } + .left, img\[style="float:left;"\], .figure\[style="float:left;"\] { + margin: 1em 1em 1em 0; + } @page { @top { content: string(book-title);

@@ -42,14 +65,38 @@ ]

{{content}} ] ] -rw:[pt| +def:[pt| section[@title[Part {{0}}: {{1}}] txt[{{2}}] ] ] -rw:[quote| +def:[quote| blockquote[ {{0}} ] - ?[{{1}}|p[@style[margin-left: 4em]&ndash; {{1}}\.?[{{2}}|, cite[{{2}}]]]] + ?[{{1}}|p[@style[margin-left: 4em]&ndash; {{1}}\/?[{{2}}|, cite[{{2}}]]]] +] +def:[float-img| + image[@class[{{1}}]$[site.root]{{0}}] +] +def:[float-fig| + figure[@style[float:{{2}};]$[site.root]{{0}}|{{1}}] +] +def:[left-img| + float-img[{{0}}|left] +] +def:[right-img| + float-img[{{0}}|right] +] +def:[center-img| + float-img[{{0}}|center] +] +def:[left-fig| + float-fig[{{0}}|{{1}}|left] +] +def:[right-fig| + float-fig[{{0}}|{{1}}|right] +] +def:[center-fig| + float-fig[{{0}}|{{1}}|center] ]
M lib/glyph_context.rblib/glyph_context.rb

@@ -8,13 +8,12 @@ Glyph['document.date'] = item[:date].strftime "%A, %d %B %Y"

Glyph['document.title'] = item[:title] Glyph['document.subtitle'] = item[:subtitle] Glyph['document.author'] = "Fabio Cevasco" - Glyph['site.root'] = "" Glyph.filter Glyph.file_load("#{Dir.pwd}/lib/data.glyph") end def glyph_pdf_for(item) - Glyph['output.pdf.generator'] = "prince" Glyph['document.output'] = 'pdf' + Glyph['output.pdf.generator'] = "prince" Glyph['site.root'] = ".." f = Pathname.new "#{Dir.pwd}/output#{item.identifier.gsub(/\/$/, '')}.glyph" f.parent.mkpath

@@ -37,9 +36,9 @@ end

def glyph_article_for(item) Glyph['document.output'] = 'html5' + Glyph['site.root'] = "" filter :glyph layout 'default' - Glyph.reset end end