1. Python virtues critique
1.1. Beautiful is better than ugly
1.1.1. Ruby emphasizes more Elegance
1.1.1.1. syntax that reduces clutter
1.1.1.2. makes it closer to natural language
1.2. Explicit is better than implicit
1.2.1. thinks it's wrong
1.2.1.1. "implicit is better than explicit"
1.3. ..
1.4. There should be 1 & preferrably only 1 way to do it
1.4.1. Ruby like Perl prefers having many ways
1.4.2. Rails tho says there's a recommended way
1.4.2.1. & it's difficult to do it otherwise
2. Q&A
2.1. What else is written in Ruby besides Rails
2.1.1. Puppet
2.1.2. Micro frameworks
2.1.2.1. Sinatra
2.1.3. Rake
2.1.3.1. like make but in Ruby
2.1.4. Capistrano
2.1.4.1. like fabric
2.1.5. build tools for Java
3. gem
3.1. just works
3.2. e.g.
3.2.1. sudo gem install astrails-safe
3.3. repos
3.3.1. Rubyforge
3.3.1.1. 8K gems
3.3.2. GutHub
3.3.2.1. 7K gems
3.3.3. GemCutter
3.3.3.1. same
3.4. if you're looking for something, someone probably did it
3.5. Python has more libraries
3.5.1. due to legacy
4. Programming Languages
4.1. Lisp at the top
4.2. Python & Ruby very similar
4.2.1. Ruby is a step ahead of Python
4.3. Erlang better for concurrenct computation
4.4. mentions
4.4.1. Paul Graham's concept of Blah language paradox
4.5. indentation
4.5.1. likes Python's
4.5.2. thinks it created antagonism that hurted adoption
5. Blocks
5.1. like lambda but supporting also statements
5.2. enables creating DSL's that non-programmers can understand & even modify
5.3. e.g.
5.3.1. Untitled
5.3.2. x_times(10, lambda {|x| puts x})
5.3.2.1. or using shortcut
5.3.2.1.1. x_times(10) {|x| puts x}
5.4. useful for nested blocks
5.4.1. looks more like configuration file
5.5. enables functionality similar to macro's e,g, in Lisp
5.5.1. thos less effective - lousy performance
6. Monkey patching
6.1. Unlike Python, Ruby allows & encourages it
6.1.1. e.g.
6.1.1.1. 3.megabytes
6.1.1.1.1. => 3145728
6.1.1.2. [audience critique]
6.1.1.2.1. hard to trace where is it implemented
6.1.1.2.2. hard to maintain
6.1.1.3. 10.monthes.from_now
6.1.1.4. 5.minutes.ago.utc
6.2. enables creating beautiful DSL's
6.2.1. useful for readable unit-testing
6.2.1.1. Untitled
7. DSL's
7.1. not requiring paranthesis, makes the code much less cluttered, & similar to very readable configuration file
7.2. example
7.2.1. code of Astrails-safe
7.2.1.1. looks like config file
7.2.1.2. indeed very readable
7.2.2. Untitled
8. Elegance
8.1. close to english as much as possible
9. Magic
9.1. doesn't agree with
9.1.1. explicit is better than implicit
9.1.1.1. if so, write in Java
9.1.1.1.1. Java requires IDE, while dynamic languages can be edited in Notepad without a problem
10. Title
10.1. Ruby Magic
10.1.1. why is it awesome
10.1.1.1. contrary to Python common thinking
11. Method missing
11.1. If method not found, an event occurs that you can implement
11.2. e.g.
11.2.1. User:find_by_company("Astrails")
11.2.2. f.flickr.activity.userPhotos('timeframe' => '10d')
11.3. works by levels
11.4. used daily, to extend objects with methods
11.4.1. creates very readable code
11.5. exists in Python too
11.5.1. taken from SmallTalk