Nella comunità ruby (che ahimé, non seguo come un tempo) c’è sempre stata un sacco di gente interessante. Oddio, il SNR è peggiorato molto negli ultimi due anni ma sorvoliamo.

Tra questa gente interessante, c’è chris, che:

  • programma da dio
  • in una dozzina di linguaggi
  • mi ha fatto scoprire che si può implementare call/pc con call/cc in un linguaggio imperativo
  • ha sense of humor
  • è dannatamente più giovane di me e ne sa il quadruplo, di tutto

Oggi, innalzo le lodi di chris blogs, il suo blog che compie tre anni, e dei due anni di Anarchaia, l’insalata mista più bella della rete.

Eh già, perché è stato lui ha inventare i tumblelog, per quanto credo che il nome l’abbia inventato _why. D’altronde ora c’è tumblr che ha un sacco successo, ma io ho sempre pensato che il tuo tumblelog devi scriverlo da te ;)

E siccome io ne ho scritt una dozzina e poi non li ho mai pubblicati, e siccome ne avevo uno che mi son dimenticato di postare nel’ultimo anno, eccovi il mio tumblelog minimale, che si ottiene mettendo questo codice in rub.rb in un’applicazione nitro.
Non so se funzioni ancora. Forse funziona con Ramaze.


require \'nitro_and_og\'
require \'glue/timestamped\'
require \'skin\'
require \'nitro/helper/feed\'
require \'part/admin\'
	
class Thing
  is Og::SchemaInheritanceBase, TimestampedOnCreate
  property :text, :control=>:textarea
  property :title
  def to_href
    \"/thing/#{oid}\"
  end
  def to_html
    %(<p class=\"thing\">#{text}</p>)
  end
end
	
def thing(p, &block)
  Class.new(Thing) do
    property p, String
    define_method :to_html, block
  end
end
	
Quote      = thing(:author)    {\"<blockquote>%s</blockquote>\"%text}
Irc        = thing(:channel)   {\"<pre>%s</pre><p>on %s</p>\"%[text,channel]}
Snippet    = thing(:language)  {\"<pre>%s</pre>\"%text}
Image      = thing(:url)       {\'<img src=\"%s\" alt=\"%s\"/><p>   %s</p>\'%[url,title,text]}
Link       = thing(:url)       {\'<a href=\"%s\">%s</a>, %s\'%[url,title,text]}
	
Og.setup # default sqlite
	
class Home < Nitro::Controller
  helper :feed, :pager
  def atom
    response.content_type = "application/atom+xml"
    build_atom  Thing.latest,
                :title => "Tum! Atom Feed",
                :base=> "http://my.domain.info"
  end
  def login(pass)
    session[:ADMIN]=true if pass == 'password'
  end
end
	
Nitro.run(Home)