eigenclass logo
MAIN  Index  Search  Changes  PageRank  Login

The PostRailsMonkey Manifesto

I just found the following; some points hit the nail on the head but several are way off or needlessly controversial... any help debunking them?

update.png Manifestoes from other Rails factions and some technical details.

The PostRailsMonkey Manifesto:

  1. Rails is mature.
  2. flexibility is dead, it's so Web 1.0.
  3. those who seek maintainability in static typing are stupid.
  4. AJAX failed; really, it didn't scale.
  5. acts_as_fool gives a new meaning to Java.
  6. David Heinemeier Hansson once said those who believe that CRUD will enable DB independence are stupid. I also think that.
  7. find_by_name_and_sex_and_address_and_birthday_and_age scales.
  8. ActiveSupport signifies the end of performance.
  9. those who want to find meaning in programming are actually drones who think they are cool.
  10. David Heinemeier Hansson is hotter than Sergey Brin.

Allow me to address all the above at once:

require 'lgenerator'

generator = Generator.new do |g|
  g.start :body

  body.do {|e| e[:pointnum] = 0 }
  body.is :title, :points

  title.is "The ", :movement, " Manifesto:\n"

  movement.is do |e|
    r = ([:movement_prefix] * (1 + rand(3))) + [:rails_or_component, :movement_suffix]
    ret = e.expand(r)
    e[:movement] ||= ret
    ret
  end

  movement_prefix.is any(%w[Neo Para Sur Pata Super Meta Post Anti Non Cyber])

  movement_suffix.is "Coder" | "Developer" | "Maintainer" | "Monkey" | "Believer"

  rails_or_component.is any(%w[Rails RAILS ROR Ror ActionController ActiveRecord 
                               ActiveSupport])

  points.is {[:point] * (4 + rand(6))}

  point.is  {|e| [e[:pointnum] += 1, ". ", :statement, "\n"]}

  statement.define do
    is :big_thing, " ", "is dead" | "is gone" | "failed", "; " | ", ",
      :is_dead_explanation | [:qualifier, " ", :is_dead_explanation], "."
    is :big_thing, " is ", :pointless, "."
    is :big_thing, " cannot exist" | " is unstable" | " is fragile" | 
                   " will collapse", "."
    is :big_thing, " is nothing more than ", :mere_thing, "."
    is "there is no ", :nonbearable, "."
    is :those_who, " ", :do_silly_thing, " are ", :neg_qual_pl, "."
    is :those_who, " ", :do_silly_thing, " are ", 
       "" | [:qualifier, " "], :what_people_are, "."
    is :we, " are ", "" | ["only" | "just" | "simply", " "], 
       :what_people_are, "."
    is :big_guy, " is ", :what_big_guy_is, "."
    is :big_guy, " ", :what_big_guy_does, "."
    is [:big_guy, " says that " | " once said "] | 
       ["according to ", :big_guy, ", "], 
       :statement, " ", 
       ["And I ", "believe it." | "agree." | "concur."] | "I agree." | 
        "I concur." | "I also think that."
    13.times { is :tech_statement } # increased weight
  end

  qualifier.is "actually" | "in fact" | "definitely" | "most certainly" | 
               "probably"

  we.is "we" | [:movement, "s"]

  those_who.is "those who" | ["the ", :what_people_are_2, " who"]
  
  pointless.is "inconsequential" | "pointless" |"a myth" | "an illusion" |
               "a foolish dream" | "a fantasy" | "unattainable" |
               "delusional" | "not worth it"

  do_silly_thing.is ["believe that ", :silly_belief] |
                    ["seek " | (:adverb | " seek ") | "look for ", :ideal_attr] |
                    ["want to find " | "seek ", :ideal_attr, " in ", :big_thing] |
                    :use_or_do_non_rails

  # continued ...

  adverb.is "actively" | "constantly" | "primarily" | "proactively" | "only" | "always" |
            "never" | "simply" | "just"

  silly_belief.define do
    is :big_thing, " will save ", :big_thing
    is :big_thing, " will enable ", :big_thing
    is :big_thing, " is ", :beneficial
    is "there's a meaning to ", :big_thing
  end

  beneficial.is "transcendent" | "liberating" | "independent" | "free" | "unlimited" | "beneficial"

  neg_qual_pl.is "fools" | "idiots" | "unDRY" | "sick" | "doomed" | "stupid" |
                       "mistaken" | "liars" | "unworthy" | "silly" | "crazy"

  what_big_guy_does.define do
    is "owns me ", "shit" | "nothing" | "everything"
    is "surpasses" | "went beyond" | "goes beyond" | "outperformed", " ",
       :non_ror_big_guy
    is "made ", :non_ror_big_guy, " irrelevant"
    is "invented" | "redefined", " ", :big_thing
    is :kills_or_deprecates, " ", :big_thing | :non_rails_sw
  end

  what_big_entity_does.define do
    is "made ", :non_rails_sw, " irrelevant"
    is :kills_or_deprecates, " ", :big_thing | :non_rails_sw
  end

  what_big_guy_is.is "God" | "DRY" | "HOT" | "right" | "cool" |
    [:pos_pers_comparison, :non_ror_big_guy]

  pos_pers_comparison.is "smarter than " | "greater than " | 
                         "more humble than " | "more DRY than " |
                         "hotter than " | "sexier than "
                     
  non_ror_big_guy.is "God" | "Ghandi" | "Larry Page" | "Sergey Brin" |
                     "Bill Gates"

  big_thing.is any(%w[performance scalability flexibility vendor-independence
                      reliability fault-tolerance technology programming
                      design unit\ testing maintainability DB\ independence
                      CRUD static\ typing duck-typing AJAX])

  mere_thing.is "noise" | ["the background noise of ", :big_thing] |
                "a stupid game" | "a bad joke" | "an obscene jest"

  big_guy.is "DHH" | "Fowler" | "David Hansson" |
             "David Heinemeier\ Hasselhoff" | "David Heinemeier Hansson" | 
             "Steve Jobs"
  big_entity.is "37signals" | "Apple"

  nonbearable.is any(["end to the ", :endless_thing], 
                     *%w[escape free\ lunch spoon hope recovery Maxwell's\ Demon])

  endless_thing.is :endless_thing2 | ["continuum of ", :endless_thing2]
  endless_thing2.is "monotony" | "recursion" | "redundancy" | "typing"

  is_dead_explanation.define do
    is [:big_thing, " killed it"] | "it didn't scale" | "it crashed" | 
       "it failed"
    is "it's unDRY" | "it's so Web 1.0" | "it's so 90s"
    is "it was ", :pointless
  end

  what_people_are.define do
    is :neg_qual_pl
    is :what_people_are_2 | [:what_people_are_2, " who think they are ", :human_adj]
    is "victims of " | "enslaved by " | "subjugated by ", :big_thing
  end

  what_people_are_2.is "automata" | "drones" | "codemonkeys" | "sheeps" | "puppets"

  human_adj.is "conscious" | "free" | "intelligent" | "self-aware" | "cool" | "in"

  ideal_attr.is "coherency" | "consistency" | "symmetry" | "meaning" | "truth" |
                "peace" | "knowledge" | "performance" | "scalability" | 
                "maintainability" | "reliability"

  non_rails_sw.is "J2EE" | "Java" | "C++" | "PHP" | "C#" | "Django" | "Grails"

  use_or_do_non_rails.is ["use ", :non_rails_sw] | 
                         [("wrote " | "designed " | "engineered " | 
                           "developed " | "conceived " | "created " | "made "),
                          :non_rails_sw]

  tech_statement.define do
    is :rails_concept | :rails_or_component, " ", :is_the_shit, "."
    is  :rails_concept | :rails_or_component, " ", :is_the_shit, 
      " because it " | ", for it ", ["redefined ", :big_thing] | 
      ["made ", :big_thing, " ", "possible" | "fun" | "practical" | "easy"], "."
    5.times{ is :rails_or_concept_redefs_stuff } # increase weight
    is :rails_or_component, " ", :is_ready, "."
    is :rails_concepts, " ", :are_the_shit, "."
    is :rails_concepts, " ", :are_ready, "."
    is :non_rails_sw, " is ", :abstract_negative_qual, "."
    is :non_rails_sw, " is ", :mere_thing , " compared to ", :rails_or_component, "."
    is "as for " | "if you ask me about " | "I've been told about " | 
       "I've heard about ", :non_rails_sw, ", ", :is_dead_explanation, "."
    is :mac_stuff, " ", :is_the_shit, "."
  end

  rails_concept.is "connection pooling" | "CRUD" | "DRY" | "has_many" |
                   "has_many_and_belongs_to" | "has_many_and_belongs_to" |
                   "belongs_to" | "url_for" | "link_to_remote" |
                   "render_to_string" | "RJS" | "ERB" | "Mongrel" | "caching" |
                   :find_by_something |
                   :rails_testing | :acts_as_something | :validates_something

  rails_testing.is "functional" | "integration" | "acceptance" | "unit", " testing"

  rails_concepts.is "partials" | "associations" | "helpers" | "views" | "models" |
                    "controllers" | "plugins"

  acts_as_something.is "acts_as_ferret" | "acts_as_authenticated" | 
                       ["acts_as_", :neg_qual]

  neg_qual.is any(%w[fool idiot asshole])

  validates_something.is "validates_uniqueness_of" | "validates_length_of" | 
                         "validates_format_of"

  rails_or_concept_redefs_stuff.is :rails_concept | :rails_or_component, 
    " ", :kills_or_deprecates, " ", :big_thing | :non_rails_sw, "."

  find_by_something.is{
    fields = %w[name birthday cat_name phone_number address age sex].sort_by{rand}
    "find_by_" + fields[0, 1 + rand(fields.size)].join("_and_")
  }

  kills_or_deprecates.is "redefines" | "casts a shade of doubt over" | "deprecated" |
    "will kill" | "killed" | "enables" | "allows me to ignore" |
    "will save" | "signifies the end of" | "gives a new meaning to"

  mac_stuff.is "OSX" | "iPhone" | "TextMate" | "Safari" | "Dashboard"
                   
  is_the_shit.is "is the shit" | "rules" | "rocks" | "owns" | "scales" | 
                 "allows to serve #{5+rand(20)}M hits a day"
  are_the_shit.is "are the shit" | "rule" | "rock" | "own" | "scale" | 
                 "can help support #{10+rand(40)}M requests a day"

  is_ready.is "is enterprise-ready" | "is stable" | "is mature" | 
              ["is an improvement over ", :non_rails_sw] | "is ready" | "delivers" | 
              ["is as mature as ", :non_rails_sw]
  are_ready.is "are enterprise-ready" | "are stable" | "are ready" | "deliver"

  abstract_negative_qual.is any(%w[futile pointless overrated weak\ sauce uncool 
                                   so\ Web\ 1.0])
end

seed = (ARGV[0] || rand(100000000)).to_i
$stderr.puts "Seed: #{seed}"
srand(seed)
generator.static_check
puts generator.generate



lgenerator - Dr Nic (2007-03-26 (Mon) 09:37:35)

What/where is 'lgenerator'?

mfp 2007-03-26 (Mon) 16:49:02

Just an implementation of the above pseudo-BNF DSL, left as an exercise to the reader ;) (and also on my HD awaiting some minor cleanup before I show it).

UserID 2007-03-29 (Thr) 14:04:21

Who came up with the original manifesto? do you have a link to that? all google links point to your post. I'm confused. Is this some kind of sophisticated inside joke?

mfp 2007-03-29 (Thr) 15:33:46

a copy without an original...

lamby 2007-03-29 (Thr) 20:35:19

Would have been easier in polygen.


Terribly Believable - Ryan Mulligan (2007-03-26 (Mon) 22:55:21)

Wow. I believed that for a while. Though the manifesto comments lack continuity of some sort.

sean 2007-03-27 (Tue) 00:23:53

So.... Is the point that Rails-monkey critiques could be generated by a computer, or that critiquing Rails-monkeys is like shooting fish in such a small barrel that even a simple program will hit pretty often?

mfp 2007-03-29 (Thr) 04:06:45

Do I need a point? What about "there's so little information in most of the rants and enumerated lists you find in the blogsphere that they can be approximated by even a simple program", plus "we're so good at finding meaning where there was none", entailing the followup question "was there meaning there to begin with?" <=> "is meaning intrinsic or given by the observer", c.f. GEB.


No Title - Anonymous (2007-03-29 (Thr) 17:11:48)

Nice, but the code sucks, eh?



Last modified:2007/03/26 01:59:26
Keyword(s):[blog] [ruby] [frontpage] [rails] [manifesto] [language] [generator] [BNF]
References:[The Neo-Rails controversy and a language generator]