SlideShare ist ein Scribd-Unternehmen logo
1 von 236
Ruby
                        Fun, Productive and Open-Source


                                        Eleanor McHugh
                                          @feyeleanor


Ruby: Fun, Productive and Open-Source                    http://slides.games-with-brains.net/
I am a programmer



Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
please don’t be scared!!!



Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
on today’s menu:




Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
on today’s menu:
              what is a programmer and how to become one




Ruby: Fun, Productive and Open-Source         http://slides.games-with-brains.net/
on today’s menu:
              what is a programmer and how to become one

              sharing ideas with a computer




Ruby: Fun, Productive and Open-Source         http://slides.games-with-brains.net/
on today’s menu:
              what is a programmer and how to become one

              sharing ideas with a computer

              first steps with the Ruby language




Ruby: Fun, Productive and Open-Source             http://slides.games-with-brains.net/
on today’s menu:
              what is a programmer and how to become one

              sharing ideas with a computer

              first steps with the Ruby language

              building confidence




Ruby: Fun, Productive and Open-Source             http://slides.games-with-brains.net/
on today’s menu:
              what is a programmer and how to become one

              sharing ideas with a computer

              first steps with the Ruby language

              building confidence

              sharing your creations as open-source


Ruby: Fun, Productive and Open-Source             http://slides.games-with-brains.net/
a word of caution:




Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
a word of caution:
              it’s 30+ years since I first started coding




Ruby: Fun, Productive and Open-Source              http://slides.games-with-brains.net/
a word of caution:
              it’s 30+ years since I first started coding

              and I’m a hacker, not a teacher




Ruby: Fun, Productive and Open-Source              http://slides.games-with-brains.net/
a word of caution:
              it’s 30+ years since I first started coding

              and I’m a hacker, not a teacher

              in fact this is my first ever beginners’ session




Ruby: Fun, Productive and Open-Source              http://slides.games-with-brains.net/
a word of caution:
              it’s 30+ years since I first started coding

              and I’m a hacker, not a teacher

              in fact this is my first ever beginners’ session

              so if I’m not making sense please stop me




Ruby: Fun, Productive and Open-Source              http://slides.games-with-brains.net/
a word of caution:
              it’s 30+ years since I first started coding

              and I’m a hacker, not a teacher

              in fact this is my first ever beginners’ session

              so if I’m not making sense please stop me

              and don’t be afraid to ask questions


Ruby: Fun, Productive and Open-Source              http://slides.games-with-brains.net/
spot the programmer



Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
programmers are:




Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
programmers are:
              curious




Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
programmers are:
              curious

              imaginative




Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
programmers are:
              curious

              imaginative

              playful




Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
programmers are:
              curious

              imaginative

              playful

              attentive




Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
programmers are:
              curious

              imaginative

              playful

              attentive

              persevering


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
they’re also human



Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
programmer myths:




Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
programmer myths:
              sometimes we really are wizards




Ruby: Fun, Productive and Open-Source           http://slides.games-with-brains.net/
programmer myths:
              sometimes we really are wizards

              or über-cool hackers




Ruby: Fun, Productive and Open-Source           http://slides.games-with-brains.net/
programmer myths:
              sometimes we really are wizards

              or über-cool hackers

              but mostly we’re maths-savvy writers




Ruby: Fun, Productive and Open-Source           http://slides.games-with-brains.net/
programmer myths:
              sometimes we really are wizards

              or über-cool hackers

              but mostly we’re maths-savvy writers

              we build models of an alternative reality




Ruby: Fun, Productive and Open-Source             http://slides.games-with-brains.net/
programmer myths:
              sometimes we really are wizards

              or über-cool hackers

              but mostly we’re maths-savvy writers

              we build models of an alternative reality

              then find words to describe these consistently


Ruby: Fun, Productive and Open-Source             http://slides.games-with-brains.net/
logic + language = code



Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Elric sent his mind into twisting tunnels of logic, across
endless plains of ideas, through mountains of symbolism
  and endless universes of alternate truths; he sent his
mind out further and further and as it went he sent with
 it the words [...] words that few of his contemporaries
                                         would understand...


                  - Elric of Melniboné, Michael Moorcock



 Ruby: Fun, Productive and Open-Source                         http://slides.games-with-brains.net/
getting started



Ruby: Fun, Productive and Open-Source       http://slides.games-with-brains.net/
1984



Ruby: Fun, Productive and Open-Source          http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
2012



Ruby: Fun, Productive and Open-Source          http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
writer’s block



Ruby: Fun, Productive and Open-Source              http://slides.games-with-brains.net/
`Don't stand there chattering to yourself like that,' Humpty Dumpty said, looking at
her for the first time,' but tell me your name and your business.'
`My name is Alice, but -- '
`It's a stupid name enough!' Humpty Dumpty interrupted impatiently. `What does it
mean?'
`must a name mean something?' Alice asked doubtfully.
`Of course it must,' Humpty Dumpty said with a sort laugh: `my name means the
shape I am -- and a good handsome shape it is, too. With a name like your, you might
be any shape, almost.'


                                   Through the Looking Glass, Lewis Carroll




  Ruby: Fun, Productive and Open-Source                                   http://slides.games-with-brains.net/
`I don't know what you mean by "glory,"' Alice said.
Humpty Dumpty smiled contemptuously. `Of course you don't -- till I tell you. I
meant "there's a nice knock-down argument for you!"'
`But "glory" doesn't mean "a nice knock-down argument,"' Alice objected.
`When I use a word,' Humpty Dumpty said in rather a scornful tone, `it means just
what I choose it to mean -- neither more nor less.'
`The question is,' said Alice, `whether you can make words mean so many different
things.'
`The question is,' said Humpty Dumpty, `which is to be master - - that's all.'


                                   Through the Looking Glass, Lewis Carroll




  Ruby: Fun, Productive and Open-Source                                   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
introducing ruby:




Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
introducing ruby:
              ruby is an interpreted language




Ruby: Fun, Productive and Open-Source           http://slides.games-with-brains.net/
introducing ruby:
              ruby is an interpreted language

              it can be used interactively




Ruby: Fun, Productive and Open-Source           http://slides.games-with-brains.net/
introducing ruby:
              ruby is an interpreted language

              it can be used interactively

              or programs can be loaded from plain text files




Ruby: Fun, Productive and Open-Source           http://slides.games-with-brains.net/
introducing ruby:
              ruby is an interpreted language

              it can be used interactively

              or programs can be loaded from plain text files

              it deals with ‘objects’ and their interactions




Ruby: Fun, Productive and Open-Source              http://slides.games-with-brains.net/
introducing ruby:
              ruby is an interpreted language

              it can be used interactively

              or programs can be loaded from plain text files

              it deals with ‘objects’ and their interactions

              and is designed to suit human sensibilities


Ruby: Fun, Productive and Open-Source              http://slides.games-with-brains.net/
the ruby dialogues



Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
commentary



Ruby: Fun, Productive and Open-Source            http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
classification



Ruby: Fun, Productive and Open-Source              http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
messages



Ruby: Fun, Productive and Open-Source              http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
references



Ruby: Fun, Productive and Open-Source                http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
# The Greeter class
   class Greeter
     def initialize(name)
       @name = name.capitalize
     end
    
     def salute
       puts "Hello #{@name}!"
     end
   end
    
   # Create a new object
   g = Greeter.new("world")
    
   # Output "Hello World!"
   g.salute


Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
dependencies



Ruby: Fun, Productive and Open-Source      http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
collections



Ruby: Fun, Productive and Open-Source                 http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
require 'open-uri'


   class WikiPage
    def initialize(*name)
      @name = name.collect { |n| n.capitalize }.join("_")
    end


    def display
      puts open("http://en.wikipedia.org/wiki/#{@name}").read
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.display




Ruby: Fun, Productive and Open-Source                       http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
files



Ruby: Fun, Productive and Open-Source          http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download()
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download())
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download()
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download())
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download()
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download())
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download())
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download())
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download)
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download)
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download)
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download)
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download)
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download)
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download)
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download)
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download)
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download)
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download)
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
class WikiPage
    def download
      open("http://en.wikipedia.org/wiki/#{@name}").read
    end


    def display
      puts download
    end


    def save
      File.open(@name + ".html", w) do |file|
        file.write(download)
      end
    end
   end


   WikiPage.new("ada", "lovelace").save
Ruby: Fun, Productive and Open-Source                      http://slides.games-with-brains.net/
page = WikiPage.new("ada", "lovelace")
   page.display
   page.save




Ruby: Fun, Productive and Open-Source       http://slides.games-with-brains.net/
page = WikiPage.new("ada", "lovelace")
   page.display
   page.save




Ruby: Fun, Productive and Open-Source       http://slides.games-with-brains.net/
page = WikiPage.new("ada", "lovelace")
   page.display
   page.save




Ruby: Fun, Productive and Open-Source       http://slides.games-with-brains.net/
properties



Ruby: Fun, Productive and Open-Source                http://slides.games-with-brains.net/
class WikiPage
    def initialize(*elements)
      self.name = *elements
    end


    def name= elements
      @name = elements.collect { |n| n.trim.capitalize }.join("_")
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.save
   page.name = "Grace", "Hopper"
   page.save




Ruby: Fun, Productive and Open-Source                                http://slides.games-with-brains.net/
class WikiPage
    def initialize(*elements)
      self.name = *elements
    end


    def name= elements
      @name = elements.collect { |n| n.trim.capitalize }.join("_")
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.save
   page.name = "Grace", "Hopper"
   page.save




Ruby: Fun, Productive and Open-Source                                http://slides.games-with-brains.net/
class WikiPage
    def initialize(*elements)
      self.name = *elements
    end


    def name= elements # elements should be an Array e.g: ["Ada", "Lovelace"]
      @name = elements.collect { |n| n.trim.capitalize }.join("_")
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.save
   page.name = "Grace", "Hopper"
   page.save




Ruby: Fun, Productive and Open-Source                                http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
class WikiPage
    def initialize(*elements)
      self.name = *elements
    end


    def name= elements
      @name = elements.collect { |n| n.trim.capitalize }.join("_")
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.save
   page.name = "Grace", "Hopper"
   page.save




Ruby: Fun, Productive and Open-Source                                http://slides.games-with-brains.net/
class WikiPage
    def initialize(*elements)
      self.name = *elements
    end


    def name= elements
      @name = elements.collect { |n| n.trim.capitalize }.join("_")
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.save
   page.name = "Grace", "Hopper"
   page.save




Ruby: Fun, Productive and Open-Source                                http://slides.games-with-brains.net/
class WikiPage
    def initialize(*elements)
      self.name = *elements
    end


    def name= elements
      @name = elements.collect { |n| n.trim.capitalize }.join("_")
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.save
   page.name = "Grace", "Hopper"
   page.save




Ruby: Fun, Productive and Open-Source                                http://slides.games-with-brains.net/
class WikiPage
    def initialize(*elements)
      self.name = *elements
    end


    def name= elements
      @name = elements.collect { |n| n.trim.capitalize }.join("_")
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.save
   page.name = "Grace", "Hopper"
   page.save




Ruby: Fun, Productive and Open-Source                                http://slides.games-with-brains.net/
class WikiPage
    def initialize(*elements)
      self.name = *elements
    end


    def name= elements
      @name = elements.collect { |n| n.trim.capitalize }.join("_")
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.save
   page.name = "Grace", "Hopper"
   page.save




Ruby: Fun, Productive and Open-Source                                http://slides.games-with-brains.net/
class WikiPage
    def initialize(*elements)
      self.name = *elements
    end


    def name= elements
      @name = elements.collect { |n| n.trim.capitalize }.join("_")
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.save
   page.name = "Grace", "Hopper"
   page.save




Ruby: Fun, Productive and Open-Source                                http://slides.games-with-brains.net/
class WikiPage
    def initialize(*elements)
      self.name = *elements
    end


    def name= elements
      @name = elements.collect { |n| n.trim.capitalize }.join("_")
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.save
   page.name = "Grace", "Hopper"
   page.save




Ruby: Fun, Productive and Open-Source                                http://slides.games-with-brains.net/
class WikiPage
    def initialize(*elements)
      self.name = *elements
    end


    def name= elements
      @name = elements.collect { |n| n.trim.capitalize }.join("_")
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.save
   page.name = "Grace", "Hopper"
   page.save




Ruby: Fun, Productive and Open-Source                                http://slides.games-with-brains.net/
class WikiPage
    def initialize(*elements)
      self.name = *elements
    end


    def name= elements
      @name = elements.collect { |n| n.trim.capitalize }.join("_")
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.save
   page.name = "Grace", "Hopper"
   page.save




Ruby: Fun, Productive and Open-Source                                http://slides.games-with-brains.net/
class WikiPage
    def initialize(*elements)
      self.name = *elements
    end


    def name= elements
      @name = elements.collect { |n| n.trim.capitalize }.join("_")
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.save
   page.name = "Grace", "Hopper"
   page.save




Ruby: Fun, Productive and Open-Source                                http://slides.games-with-brains.net/
class WikiPage
    def initialize(*elements)
      self.name = *elements
    end


    def name= elements
      @name = elements.collect { |n| n.trim.capitalize }.join("_")
    end
   end


   page = WikiPage.new("ada", "lovelace")
   page.save
   page.name = "Grace", "Hopper"
   page.save




Ruby: Fun, Productive and Open-Source                                http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
reuse



Ruby: Fun, Productive and Open-Source           http://slides.games-with-brains.net/
class WikiPage
    attr_reader :root


    def initialize(url)
      @root = url
    end


    def download
      open("#{@root}/#{@name}").read
    end
   end


   page = WikiPage.new "http://en.wikipedia.org/wiki"
   page.name = "ada", "lovelace"
   page.save
   page.name = "Grace", "Hopper"
   page.save
Ruby: Fun, Productive and Open-Source                   http://slides.games-with-brains.net/
class WikiPage
    attr_reader :root


    def initialize(url)
      @root = url
    end


    def download
      open("#{@root}/#{@name}").read
    end
   end


   page = WikiPage.new "http://en.wikipedia.org/wiki"
   page.name = "ada", "lovelace"
   page.save
   page.name = "Grace", "Hopper"
   page.save
Ruby: Fun, Productive and Open-Source                   http://slides.games-with-brains.net/
class WikiPage
    attr_reader :root


    def initialize(url)
      @root = url
    end


    def download
      open("#{@root}/#{@name}").read
    end
   end


   page = WikiPage.new "http://en.wikipedia.org/wiki"
   page.name = "ada", "lovelace"
   page.save
   page.name = "Grace", "Hopper"
   page.save
Ruby: Fun, Productive and Open-Source                   http://slides.games-with-brains.net/
class WikiPage
    attr_reader :root


    def initialize(url)
      @root = url
    end


    def download
      open("#{@root}/#{@name}").read
    end
   end


   page = WikiPage.new "http://en.wikipedia.org/wiki"
   page.name = "ada", "lovelace"
   page.save
   page.name = "Grace", "Hopper"
   page.save
Ruby: Fun, Productive and Open-Source                   http://slides.games-with-brains.net/
class WikiPage
    attr_reader :root


    def initialize(url)
      @root = url
    end


    def download
      open("#{@root}/#{@name}").read
    end
   end


   page = WikiPage.new "http://en.wikipedia.org/wiki"
   page.name = "ada", "lovelace"
   page.save
   page.name = "Grace", "Hopper"
   page.save
Ruby: Fun, Productive and Open-Source                   http://slides.games-with-brains.net/
class WikiPage
    attr_reader :root


    def initialize(url)
      @root = url
    end


    def download
      open("#{@root}/#{@name}").read
    end
   end


   page = WikiPage.new "http://en.wikipedia.org/wiki"
   page.name = "ada", "lovelace"
   page.save
   page.name = "Grace", "Hopper"
   page.save
Ruby: Fun, Productive and Open-Source                   http://slides.games-with-brains.net/
class WikiPage
    attr_reader :root


    def initialize(url)
      @root = url
    end


    def download
      open("#{@root}/#{@name}").read
    end
   end


   page = WikiPage.new "http://en.wikipedia.org/wiki"
   page.name = "ada", "lovelace"
   page.save
   page.name = "Grace", "Hopper"
   page.save
Ruby: Fun, Productive and Open-Source                   http://slides.games-with-brains.net/
class WikiPage
    attr_reader :root


    def initialize(url)
      @root = url
    end


    def download
      open("#{@root}/#{@name}").read
    end
   end


   page = WikiPage.new "http://en.wikipedia.org/wiki"
   page.name = "ada", "lovelace"
   page.save
   page.name = "Grace", "Hopper"
   page.save
Ruby: Fun, Productive and Open-Source                   http://slides.games-with-brains.net/
class WikiPage
    attr_reader :root


    def initialize(url)
      @root = url
    end


    def download
      open("#{@root}/#{@name}").read
    end
   end


   page = WikiPage.new "http://en.wikipedia.org/wiki"
   page.name = "ada", "lovelace"
   page.save
   page.name = "Grace", "Hopper"
   page.save
Ruby: Fun, Productive and Open-Source                   http://slides.games-with-brains.net/
class WikiPage
    attr_reader :root


    def initialize(url)
      @root = url
    end


    def download
      open("#{@root}/#{@name}").read
    end
   end


   page = WikiPage.new "http://en.wikipedia.org/wiki"
   page.name = "ada", "lovelace"
   page.save
   page.name = "Grace", "Hopper"
   page.save
Ruby: Fun, Productive and Open-Source                   http://slides.games-with-brains.net/
class WikiPage
    attr_reader :root


    def initialize(url)
      @root = url
    end


    def download
      open("#{@root}/#{@name}").read
    end
   end


   page = WikiPage.new "http://en.wikipedia.org/wiki"
   page.name = "ada", "lovelace"
   page.save
   page.name = "Grace", "Hopper"
   page.save
Ruby: Fun, Productive and Open-Source                   http://slides.games-with-brains.net/
class WikiPage
    attr_reader :root


    def initialize(url)
      @root = url
    end


    def download
      open("#{@root}/#{@name}").read
    end
   end


   page = WikiPage.new "http://en.wikipedia.org/wiki"
   page.name = "ada", "lovelace"
   page.save
   page.name = "Grace", "Hopper"
   page.save
Ruby: Fun, Productive and Open-Source                   http://slides.games-with-brains.net/
class WikiPage
    attr_reader :root


    def initialize(url)
      @root = url
    end


    def download
      open("#{@root}/#{@name}").read
    end
   end


   page = WikiPage.new "http://en.wikipedia.org/wiki"
   page.name = "ada", "lovelace"
   page.save
   page.name = "Grace", "Hopper"
   page.save
Ruby: Fun, Productive and Open-Source                   http://slides.games-with-brains.net/
class WikiPage
    attr_reader :root


    def initialize(url)
      @root = url
    end


    def download
      open("#{@root}/#{@name}").read
    end
   end


   page = WikiPage.new "http://en.wikipedia.org/wiki"
   page.name = "ada", "lovelace"
   page.save
   page.name = "Grace", "Hopper"
   page.save
Ruby: Fun, Productive and Open-Source                   http://slides.games-with-brains.net/
class WikiPage
    attr_reader :root


    def initialize(url)
      @root = url
    end


    def download
      open("#{@root}/#{@name}").read
    end
   end


   page = WikiPage.new "http://en.wikipedia.org/wiki"
   page.name = "ada", "lovelace"
   page.save
   page.name = "Grace", "Hopper"
   page.save
Ruby: Fun, Productive and Open-Source                   http://slides.games-with-brains.net/
class WikiPage
    attr_reader :root


    def initialize(url)
      @root = url
    end


    def download
      open("#{@root}/#{@name}").read
    end
   end


   page = WikiPage.new "http://en.wikipedia.org/wiki"
   page.name = "ada", "lovelace"
   page.save
   page.name = "Grace", "Hopper"
   page.save
Ruby: Fun, Productive and Open-Source                   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
hackety hack:




Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
hackety hack:
              once there was a freelance professor




Ruby: Fun, Productive and Open-Source          http://slides.games-with-brains.net/
hackety hack:
              once there was a freelance professor

              his name was _why? the lucky stiff




Ruby: Fun, Productive and Open-Source              http://slides.games-with-brains.net/
hackety hack:
              once there was a freelance professor

              his name was _why? the lucky stiff

              and he only taught by fated appointment




Ruby: Fun, Productive and Open-Source              http://slides.games-with-brains.net/
hackety hack:
              once there was a freelance professor

              his name was _why? the lucky stiff

              and he only taught by fated appointment

              he wrote hackety hack for little coders




Ruby: Fun, Productive and Open-Source              http://slides.games-with-brains.net/
hackety hack:
              once there was a freelance professor

              his name was _why? the lucky stiff

              and he only taught by fated appointment

              he wrote hackety hack for little coders

              and created shoes along the way


Ruby: Fun, Productive and Open-Source              http://slides.games-with-brains.net/
shoes:




Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
shoes:
              a self-contained GUI toolkit for Ruby




Ruby: Fun, Productive and Open-Source           http://slides.games-with-brains.net/
shoes:
              a self-contained GUI toolkit for Ruby

              which works on mac, linux and windows




Ruby: Fun, Productive and Open-Source           http://slides.games-with-brains.net/
shoes:
              a self-contained GUI toolkit for Ruby

              which works on mac, linux and windows

              designed for simple desktop applications




Ruby: Fun, Productive and Open-Source           http://slides.games-with-brains.net/
shoes:
              a self-contained GUI toolkit for Ruby

              which works on mac, linux and windows

              designed for simple desktop applications

              not a web app so no html, css or javascript




Ruby: Fun, Productive and Open-Source            http://slides.games-with-brains.net/
shoes:
              a self-contained GUI toolkit for Ruby

              which works on mac, linux and windows

              designed for simple desktop applications

              not a web app so no html, css or javascript

              but uses similar elements and concepts


Ruby: Fun, Productive and Open-Source            http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
a shoes app



Ruby: Fun, Productive and Open-Source                 http://slides.games-with-brains.net/
Shoes.app do
   	    para "Hello, World!"
   end




Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Shoes.app do
   	    para "Hello, World!"
   end




Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
    background maroon
    para "Scrape Mediawiki", :align => "center", :size => "xx-large"
   end




Ruby: Fun, Productive and Open-Source                            http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
    background maroon
    para "Scrape Mediawiki", :align => "center", :size => "xx-large"
   end




Ruby: Fun, Productive and Open-Source                            http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
    background maroon
    para "Scrape Mediawiki", :align => "center", :size => "xx-large"
   end




Ruby: Fun, Productive and Open-Source                            http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
    background maroon
    para "Scrape Mediawiki", :align => "center", :size => "xx-large"
   end




Ruby: Fun, Productive and Open-Source                            http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
    background maroon
    para "Scrape Mediawiki", :align => "center", :size => "xx-large"
   end




Ruby: Fun, Productive and Open-Source                            http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
    background maroon
    para "Scrape Mediawiki", :align => "center", :size => "xx-large"
   end




Ruby: Fun, Productive and Open-Source                            http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
    background maroon
    para "Scrape Mediawiki", :align => "center", :size => "xx-large"
    stack do
      flow :margin => 10 do
        caption "Subject:"
        @article = edit_line :width => -200
      end
    end
   end




Ruby: Fun, Productive and Open-Source                            http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
    background maroon
    para "Scrape Mediawiki", :align => "center", :size => "xx-large"
    stack do
      flow :margin => 10 do
        caption "Subject:"
        @article = edit_line :width => -200
      end
    end
   end




Ruby: Fun, Productive and Open-Source                            http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
    background maroon
    para "Scrape Mediawiki", :align => "center", :size => "xx-large"
    stack do
      flow :margin => 10 do
        caption "Subject:"
        @article = edit_line :width => -200
      end
    end
   end




Ruby: Fun, Productive and Open-Source                            http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
    background maroon
    para "Scrape Mediawiki", :align => "center", :size => "xx-large"
    stack do
      flow :margin => 10 do
        caption "Subject:"
        @article = edit_line :width => -200
      end
    end
   end




Ruby: Fun, Productive and Open-Source                            http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
    background maroon
    para "Scrape Mediawiki", :align => "center", :size => "xx-large"
    stack do
      flow :margin => 10 do
        caption "Subject:"
        @article = edit_line :width => -200
      end
    end
   end




Ruby: Fun, Productive and Open-Source                            http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
    background maroon
    para "Scrape Mediawiki", :align => "center", :size => "xx-large"
    stack do
      flow :margin => 10 do
        caption "Subject:"
        @article = edit_line :width => -200
      end
    end
   end




Ruby: Fun, Productive and Open-Source                            http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
    background maroon
    para "Scrape Mediawiki", :align => "center", :size => "xx-large"
    stack do
      flow :margin => 10 do
        caption "Subject:"
        @article = edit_line :width => -200
      end
    end
   end




Ruby: Fun, Productive and Open-Source                            http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
    background maroon
    para "Scrape Mediawiki", :align => "center", :size => "xx-large"
    stack do
      flow :margin => 10 do
        caption "Subject:"
        @article = edit_line :width => -200
        button "Download", :width => 120 do
        end
      end
    end
   end




Ruby: Fun, Productive and Open-Source                            http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
    background maroon
    para "Scrape Mediawiki", :align => "center", :size => "xx-large"
    stack do
      flow :margin => 10 do
        caption "Subject:"
        @article = edit_line :width => -200
        button "Download", :width => 120 do
        end
      end
    end
   end




Ruby: Fun, Productive and Open-Source                            http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
       @wiki = WikiPage.new "http://en.wikipedia.org/wiki"
       background maroon
       para "Scrape Mediawiki", :align => "center", :size => "xx-large"
       stack do
        flow :margin => 10 do
         caption "Subject:"
         @article = edit_line :width => -200
         button "Download", :width => 120 do
   	     	    @wiki.save
         end
        end
       end
   end




Ruby: Fun, Productive and Open-Source                               http://slides.games-with-brains.net/
Shoes.app :title => "Mediawiki Article Scraper" do
       @wiki = WikiPage.new "http://en.wikipedia.org/wiki"
       background maroon
       para "Scrape Mediawiki", :align => "center", :size => "xx-large"
       stack do
        flow :margin => 10 do
         caption "Subject:"
         @article = edit_line :width => -200
         button "Download", :width => 120 do
   	     	    @wiki.save
         end
        end
       end
   end




Ruby: Fun, Productive and Open-Source                               http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/
Covers Ruby 1.9.1




                                                                                                         David A. Black




                                                                                                           MANNING




                                          Practical
                                          Ruby Projects
                                          Ideas for the Eclectic Programmer

                                                        Learn advanced programming techniques and
                                                        explore Ruby’s full potential through a varied
                                                        series of exciting projects




                                          Topher Cyll




Ruby: Fun, Productive and Open-Source   http://slides.games-with-brains.net/

Weitere ähnliche Inhalte

Andere mochten auch

Ataa citywire april 2010
Ataa citywire april 2010Ataa citywire april 2010
Ataa citywire april 2010
guest0d4183
 
Las hamacas encantadas
Las hamacas encantadasLas hamacas encantadas
Las hamacas encantadas
lupistrupiso
 

Andere mochten auch (11)

Рій "ЗАХИСНИКИ", ЗОШ №20
Рій "ЗАХИСНИКИ", ЗОШ №20Рій "ЗАХИСНИКИ", ЗОШ №20
Рій "ЗАХИСНИКИ", ЗОШ №20
 
SmartDriver
SmartDriver SmartDriver
SmartDriver
 
Konsten att arbeta med inbound marketing
Konsten att arbeta med inbound marketingKonsten att arbeta med inbound marketing
Konsten att arbeta med inbound marketing
 
Ataa citywire april 2010
Ataa citywire april 2010Ataa citywire april 2010
Ataa citywire april 2010
 
Mision
MisionMision
Mision
 
система виховної роботи
система виховної роботисистема виховної роботи
система виховної роботи
 
Al Fazl International 9th September 2016 - Weekly
Al Fazl International 9th September 2016 - WeeklyAl Fazl International 9th September 2016 - Weekly
Al Fazl International 9th September 2016 - Weekly
 
Be happy! Счастье - это просто выбор.
Be happy! Счастье - это просто выбор.Be happy! Счастье - это просто выбор.
Be happy! Счастье - это просто выбор.
 
フィリピン・バギオ(Baguio) 入門書 by バギオ英語学校協会 BESA
フィリピン・バギオ(Baguio) 入門書 by バギオ英語学校協会 BESAフィリピン・バギオ(Baguio) 入門書 by バギオ英語学校協会 BESA
フィリピン・バギオ(Baguio) 入門書 by バギオ英語学校協会 BESA
 
Las hamacas encantadas
Las hamacas encantadasLas hamacas encantadas
Las hamacas encantadas
 
ayman2
ayman2ayman2
ayman2
 

Ähnlich wie Ruby: Fun, Productive and Open Source

Ähnlich wie Ruby: Fun, Productive and Open Source (6)

The Art and Science of Computer Conversation: Talkabot 2016
The Art and Science of Computer Conversation: Talkabot 2016The Art and Science of Computer Conversation: Talkabot 2016
The Art and Science of Computer Conversation: Talkabot 2016
 
The Art and Science of Computer Conversation: Talkabot 2016
The Art and Science of Computer Conversation: Talkabot 2016The Art and Science of Computer Conversation: Talkabot 2016
The Art and Science of Computer Conversation: Talkabot 2016
 
July SF Ruby Meetup at SlideShare!
July SF Ruby Meetup at SlideShare!July SF Ruby Meetup at SlideShare!
July SF Ruby Meetup at SlideShare!
 
Coffee House Creative
Coffee House CreativeCoffee House Creative
Coffee House Creative
 
Gamify your classroom!
Gamify your classroom!Gamify your classroom!
Gamify your classroom!
 
Ruby for Beginner
Ruby for BeginnerRuby for Beginner
Ruby for Beginner
 

Mehr von Eleanor McHugh

Mehr von Eleanor McHugh (20)

[2023] Putting the R! in R&D.pdf
[2023] Putting the R! in R&D.pdf[2023] Putting the R! in R&D.pdf
[2023] Putting the R! in R&D.pdf
 
Generics, Reflection, and Efficient Collections
Generics, Reflection, and Efficient CollectionsGenerics, Reflection, and Efficient Collections
Generics, Reflection, and Efficient Collections
 
The Relevance of Liveness - Biometrics and Data Integrity
The Relevance of Liveness - Biometrics and Data IntegrityThe Relevance of Liveness - Biometrics and Data Integrity
The Relevance of Liveness - Biometrics and Data Integrity
 
The Browser Environment - A Systems Programmer's Perspective [sinatra edition]
The Browser Environment - A Systems Programmer's Perspective [sinatra edition]The Browser Environment - A Systems Programmer's Perspective [sinatra edition]
The Browser Environment - A Systems Programmer's Perspective [sinatra edition]
 
The Browser Environment - A Systems Programmer's Perspective
The Browser Environment - A Systems Programmer's PerspectiveThe Browser Environment - A Systems Programmer's Perspective
The Browser Environment - A Systems Programmer's Perspective
 
Go for the paranoid network programmer, 3rd edition
Go for the paranoid network programmer, 3rd editionGo for the paranoid network programmer, 3rd edition
Go for the paranoid network programmer, 3rd edition
 
An introduction to functional programming with Go [redux]
An introduction to functional programming with Go [redux]An introduction to functional programming with Go [redux]
An introduction to functional programming with Go [redux]
 
An introduction to functional programming with go
An introduction to functional programming with goAn introduction to functional programming with go
An introduction to functional programming with go
 
Implementing virtual machines in go & c 2018 redux
Implementing virtual machines in go & c 2018 reduxImplementing virtual machines in go & c 2018 redux
Implementing virtual machines in go & c 2018 redux
 
Identity & trust in Monitored Spaces
Identity & trust in Monitored SpacesIdentity & trust in Monitored Spaces
Identity & trust in Monitored Spaces
 
Don't Ask, Don't Tell - The Virtues of Privacy By Design
Don't Ask, Don't Tell - The Virtues of Privacy By DesignDon't Ask, Don't Tell - The Virtues of Privacy By Design
Don't Ask, Don't Tell - The Virtues of Privacy By Design
 
Don't ask, don't tell the virtues of privacy by design
Don't ask, don't tell   the virtues of privacy by designDon't ask, don't tell   the virtues of privacy by design
Don't ask, don't tell the virtues of privacy by design
 
Anonymity, identity, trust
Anonymity, identity, trustAnonymity, identity, trust
Anonymity, identity, trust
 
Going Loopy - Adventures in Iteration with Google Go
Going Loopy - Adventures in Iteration with Google GoGoing Loopy - Adventures in Iteration with Google Go
Going Loopy - Adventures in Iteration with Google Go
 
Distributed Ledgers: Anonymity & Immutability at Scale
Distributed Ledgers: Anonymity & Immutability at ScaleDistributed Ledgers: Anonymity & Immutability at Scale
Distributed Ledgers: Anonymity & Immutability at Scale
 
Hello Go
Hello GoHello Go
Hello Go
 
Go for the paranoid network programmer, 2nd edition
Go for the paranoid network programmer, 2nd editionGo for the paranoid network programmer, 2nd edition
Go for the paranoid network programmer, 2nd edition
 
Going Loopy: Adventures in Iteration with Go
Going Loopy: Adventures in Iteration with GoGoing Loopy: Adventures in Iteration with Go
Going Loopy: Adventures in Iteration with Go
 
Finding a useful outlet for my many Adventures in go
Finding a useful outlet for my many Adventures in goFinding a useful outlet for my many Adventures in go
Finding a useful outlet for my many Adventures in go
 
Anonymity, trust, accountability
Anonymity, trust, accountabilityAnonymity, trust, accountability
Anonymity, trust, accountability
 

Kürzlich hochgeladen

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

Ruby: Fun, Productive and Open Source

  • 1. Ruby Fun, Productive and Open-Source Eleanor McHugh @feyeleanor Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 2. I am a programmer Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 3. please don’t be scared!!! Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 4. on today’s menu: Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 5. on today’s menu: what is a programmer and how to become one Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 6. on today’s menu: what is a programmer and how to become one sharing ideas with a computer Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 7. on today’s menu: what is a programmer and how to become one sharing ideas with a computer first steps with the Ruby language Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 8. on today’s menu: what is a programmer and how to become one sharing ideas with a computer first steps with the Ruby language building confidence Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 9. on today’s menu: what is a programmer and how to become one sharing ideas with a computer first steps with the Ruby language building confidence sharing your creations as open-source Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 10. a word of caution: Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 11. a word of caution: it’s 30+ years since I first started coding Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 12. a word of caution: it’s 30+ years since I first started coding and I’m a hacker, not a teacher Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 13. a word of caution: it’s 30+ years since I first started coding and I’m a hacker, not a teacher in fact this is my first ever beginners’ session Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 14. a word of caution: it’s 30+ years since I first started coding and I’m a hacker, not a teacher in fact this is my first ever beginners’ session so if I’m not making sense please stop me Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 15. a word of caution: it’s 30+ years since I first started coding and I’m a hacker, not a teacher in fact this is my first ever beginners’ session so if I’m not making sense please stop me and don’t be afraid to ask questions Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 16. spot the programmer Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 17. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 18. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 19. programmers are: Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 20. programmers are: curious Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 21. programmers are: curious imaginative Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 22. programmers are: curious imaginative playful Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 23. programmers are: curious imaginative playful attentive Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 24. programmers are: curious imaginative playful attentive persevering Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 25. they’re also human Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 26. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 27. programmer myths: Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 28. programmer myths: sometimes we really are wizards Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 29. programmer myths: sometimes we really are wizards or über-cool hackers Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 30. programmer myths: sometimes we really are wizards or über-cool hackers but mostly we’re maths-savvy writers Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 31. programmer myths: sometimes we really are wizards or über-cool hackers but mostly we’re maths-savvy writers we build models of an alternative reality Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 32. programmer myths: sometimes we really are wizards or über-cool hackers but mostly we’re maths-savvy writers we build models of an alternative reality then find words to describe these consistently Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 33. logic + language = code Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 34. Elric sent his mind into twisting tunnels of logic, across endless plains of ideas, through mountains of symbolism and endless universes of alternate truths; he sent his mind out further and further and as it went he sent with it the words [...] words that few of his contemporaries would understand... - Elric of Melniboné, Michael Moorcock Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 35. getting started Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 36. 1984 Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 37. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 38. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 39. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 40. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 41. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 42. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 43. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 44. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 45. 2012 Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 46. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 47. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 48. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 49. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 50. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 51. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 52. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 53. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 54. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 55. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 56. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 57. writer’s block Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 58. `Don't stand there chattering to yourself like that,' Humpty Dumpty said, looking at her for the first time,' but tell me your name and your business.' `My name is Alice, but -- ' `It's a stupid name enough!' Humpty Dumpty interrupted impatiently. `What does it mean?' `must a name mean something?' Alice asked doubtfully. `Of course it must,' Humpty Dumpty said with a sort laugh: `my name means the shape I am -- and a good handsome shape it is, too. With a name like your, you might be any shape, almost.' Through the Looking Glass, Lewis Carroll Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 59. `I don't know what you mean by "glory,"' Alice said. Humpty Dumpty smiled contemptuously. `Of course you don't -- till I tell you. I meant "there's a nice knock-down argument for you!"' `But "glory" doesn't mean "a nice knock-down argument,"' Alice objected. `When I use a word,' Humpty Dumpty said in rather a scornful tone, `it means just what I choose it to mean -- neither more nor less.' `The question is,' said Alice, `whether you can make words mean so many different things.' `The question is,' said Humpty Dumpty, `which is to be master - - that's all.' Through the Looking Glass, Lewis Carroll Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 60. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 61. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 62. introducing ruby: Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 63. introducing ruby: ruby is an interpreted language Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 64. introducing ruby: ruby is an interpreted language it can be used interactively Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 65. introducing ruby: ruby is an interpreted language it can be used interactively or programs can be loaded from plain text files Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 66. introducing ruby: ruby is an interpreted language it can be used interactively or programs can be loaded from plain text files it deals with ‘objects’ and their interactions Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 67. introducing ruby: ruby is an interpreted language it can be used interactively or programs can be loaded from plain text files it deals with ‘objects’ and their interactions and is designed to suit human sensibilities Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 68. the ruby dialogues Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 69. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 70. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 71. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 72. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 73. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 74. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 75. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 76. commentary Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 77. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 78. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 79. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 80. classification Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 81. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 82. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 83. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 84. messages Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 85. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 86. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 87. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 88. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 89. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 90. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 91. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 92. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 93. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 94. references Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 95. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 96. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 97. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 98. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 99. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 100. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 101. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 102. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 103. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 104. # The Greeter class class Greeter   def initialize(name)     @name = name.capitalize   end     def salute     puts "Hello #{@name}!"   end end   # Create a new object g = Greeter.new("world")   # Output "Hello World!" g.salute Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 105. dependencies Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 106. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 107. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 108. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 109. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 110. collections Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 111. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 112. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 113. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 114. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 115. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 116. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 117. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 118. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 119. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 120. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 121. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 122. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 123. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 124. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 125. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 126. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 127. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 128. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 129. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 130. require 'open-uri' class WikiPage def initialize(*name) @name = name.collect { |n| n.capitalize }.join("_") end def display puts open("http://en.wikipedia.org/wiki/#{@name}").read end end page = WikiPage.new("ada", "lovelace") page.display Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 131. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 132. files Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 133. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download() end def save File.open(@name + ".html", w) do |file| file.write(download()) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 134. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download() end def save File.open(@name + ".html", w) do |file| file.write(download()) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 135. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download() end def save File.open(@name + ".html", w) do |file| file.write(download()) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 136. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download end def save File.open(@name + ".html", w) do |file| file.write(download()) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 137. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download end def save File.open(@name + ".html", w) do |file| file.write(download()) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 138. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download end def save File.open(@name + ".html", w) do |file| file.write(download) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 139. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download end def save File.open(@name + ".html", w) do |file| file.write(download) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 140. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download end def save File.open(@name + ".html", w) do |file| file.write(download) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 141. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download end def save File.open(@name + ".html", w) do |file| file.write(download) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 142. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download end def save File.open(@name + ".html", w) do |file| file.write(download) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 143. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download end def save File.open(@name + ".html", w) do |file| file.write(download) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 144. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download end def save File.open(@name + ".html", w) do |file| file.write(download) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 145. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download end def save File.open(@name + ".html", w) do |file| file.write(download) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 146. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download end def save File.open(@name + ".html", w) do |file| file.write(download) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 147. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download end def save File.open(@name + ".html", w) do |file| file.write(download) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 148. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download end def save File.open(@name + ".html", w) do |file| file.write(download) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 149. class WikiPage def download open("http://en.wikipedia.org/wiki/#{@name}").read end def display puts download end def save File.open(@name + ".html", w) do |file| file.write(download) end end end WikiPage.new("ada", "lovelace").save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 150. page = WikiPage.new("ada", "lovelace") page.display page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 151. page = WikiPage.new("ada", "lovelace") page.display page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 152. page = WikiPage.new("ada", "lovelace") page.display page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 153. properties Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 154. class WikiPage def initialize(*elements) self.name = *elements end def name= elements @name = elements.collect { |n| n.trim.capitalize }.join("_") end end page = WikiPage.new("ada", "lovelace") page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 155. class WikiPage def initialize(*elements) self.name = *elements end def name= elements @name = elements.collect { |n| n.trim.capitalize }.join("_") end end page = WikiPage.new("ada", "lovelace") page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 156. class WikiPage def initialize(*elements) self.name = *elements end def name= elements # elements should be an Array e.g: ["Ada", "Lovelace"] @name = elements.collect { |n| n.trim.capitalize }.join("_") end end page = WikiPage.new("ada", "lovelace") page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 157. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 158. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 159. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 160. class WikiPage def initialize(*elements) self.name = *elements end def name= elements @name = elements.collect { |n| n.trim.capitalize }.join("_") end end page = WikiPage.new("ada", "lovelace") page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 161. class WikiPage def initialize(*elements) self.name = *elements end def name= elements @name = elements.collect { |n| n.trim.capitalize }.join("_") end end page = WikiPage.new("ada", "lovelace") page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 162. class WikiPage def initialize(*elements) self.name = *elements end def name= elements @name = elements.collect { |n| n.trim.capitalize }.join("_") end end page = WikiPage.new("ada", "lovelace") page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 163. class WikiPage def initialize(*elements) self.name = *elements end def name= elements @name = elements.collect { |n| n.trim.capitalize }.join("_") end end page = WikiPage.new("ada", "lovelace") page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 164. class WikiPage def initialize(*elements) self.name = *elements end def name= elements @name = elements.collect { |n| n.trim.capitalize }.join("_") end end page = WikiPage.new("ada", "lovelace") page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 165. class WikiPage def initialize(*elements) self.name = *elements end def name= elements @name = elements.collect { |n| n.trim.capitalize }.join("_") end end page = WikiPage.new("ada", "lovelace") page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 166. class WikiPage def initialize(*elements) self.name = *elements end def name= elements @name = elements.collect { |n| n.trim.capitalize }.join("_") end end page = WikiPage.new("ada", "lovelace") page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 167. class WikiPage def initialize(*elements) self.name = *elements end def name= elements @name = elements.collect { |n| n.trim.capitalize }.join("_") end end page = WikiPage.new("ada", "lovelace") page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 168. class WikiPage def initialize(*elements) self.name = *elements end def name= elements @name = elements.collect { |n| n.trim.capitalize }.join("_") end end page = WikiPage.new("ada", "lovelace") page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 169. class WikiPage def initialize(*elements) self.name = *elements end def name= elements @name = elements.collect { |n| n.trim.capitalize }.join("_") end end page = WikiPage.new("ada", "lovelace") page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 170. class WikiPage def initialize(*elements) self.name = *elements end def name= elements @name = elements.collect { |n| n.trim.capitalize }.join("_") end end page = WikiPage.new("ada", "lovelace") page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 171. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 172. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 173. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 174. reuse Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 175. class WikiPage attr_reader :root def initialize(url) @root = url end def download open("#{@root}/#{@name}").read end end page = WikiPage.new "http://en.wikipedia.org/wiki" page.name = "ada", "lovelace" page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 176. class WikiPage attr_reader :root def initialize(url) @root = url end def download open("#{@root}/#{@name}").read end end page = WikiPage.new "http://en.wikipedia.org/wiki" page.name = "ada", "lovelace" page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 177. class WikiPage attr_reader :root def initialize(url) @root = url end def download open("#{@root}/#{@name}").read end end page = WikiPage.new "http://en.wikipedia.org/wiki" page.name = "ada", "lovelace" page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 178. class WikiPage attr_reader :root def initialize(url) @root = url end def download open("#{@root}/#{@name}").read end end page = WikiPage.new "http://en.wikipedia.org/wiki" page.name = "ada", "lovelace" page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 179. class WikiPage attr_reader :root def initialize(url) @root = url end def download open("#{@root}/#{@name}").read end end page = WikiPage.new "http://en.wikipedia.org/wiki" page.name = "ada", "lovelace" page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 180. class WikiPage attr_reader :root def initialize(url) @root = url end def download open("#{@root}/#{@name}").read end end page = WikiPage.new "http://en.wikipedia.org/wiki" page.name = "ada", "lovelace" page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 181. class WikiPage attr_reader :root def initialize(url) @root = url end def download open("#{@root}/#{@name}").read end end page = WikiPage.new "http://en.wikipedia.org/wiki" page.name = "ada", "lovelace" page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 182. class WikiPage attr_reader :root def initialize(url) @root = url end def download open("#{@root}/#{@name}").read end end page = WikiPage.new "http://en.wikipedia.org/wiki" page.name = "ada", "lovelace" page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 183. class WikiPage attr_reader :root def initialize(url) @root = url end def download open("#{@root}/#{@name}").read end end page = WikiPage.new "http://en.wikipedia.org/wiki" page.name = "ada", "lovelace" page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 184. class WikiPage attr_reader :root def initialize(url) @root = url end def download open("#{@root}/#{@name}").read end end page = WikiPage.new "http://en.wikipedia.org/wiki" page.name = "ada", "lovelace" page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 185. class WikiPage attr_reader :root def initialize(url) @root = url end def download open("#{@root}/#{@name}").read end end page = WikiPage.new "http://en.wikipedia.org/wiki" page.name = "ada", "lovelace" page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 186. class WikiPage attr_reader :root def initialize(url) @root = url end def download open("#{@root}/#{@name}").read end end page = WikiPage.new "http://en.wikipedia.org/wiki" page.name = "ada", "lovelace" page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 187. class WikiPage attr_reader :root def initialize(url) @root = url end def download open("#{@root}/#{@name}").read end end page = WikiPage.new "http://en.wikipedia.org/wiki" page.name = "ada", "lovelace" page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 188. class WikiPage attr_reader :root def initialize(url) @root = url end def download open("#{@root}/#{@name}").read end end page = WikiPage.new "http://en.wikipedia.org/wiki" page.name = "ada", "lovelace" page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 189. class WikiPage attr_reader :root def initialize(url) @root = url end def download open("#{@root}/#{@name}").read end end page = WikiPage.new "http://en.wikipedia.org/wiki" page.name = "ada", "lovelace" page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 190. class WikiPage attr_reader :root def initialize(url) @root = url end def download open("#{@root}/#{@name}").read end end page = WikiPage.new "http://en.wikipedia.org/wiki" page.name = "ada", "lovelace" page.save page.name = "Grace", "Hopper" page.save Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 191. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 192. hackety hack: Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 193. hackety hack: once there was a freelance professor Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 194. hackety hack: once there was a freelance professor his name was _why? the lucky stiff Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 195. hackety hack: once there was a freelance professor his name was _why? the lucky stiff and he only taught by fated appointment Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 196. hackety hack: once there was a freelance professor his name was _why? the lucky stiff and he only taught by fated appointment he wrote hackety hack for little coders Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 197. hackety hack: once there was a freelance professor his name was _why? the lucky stiff and he only taught by fated appointment he wrote hackety hack for little coders and created shoes along the way Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 198. shoes: Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 199. shoes: a self-contained GUI toolkit for Ruby Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 200. shoes: a self-contained GUI toolkit for Ruby which works on mac, linux and windows Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 201. shoes: a self-contained GUI toolkit for Ruby which works on mac, linux and windows designed for simple desktop applications Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 202. shoes: a self-contained GUI toolkit for Ruby which works on mac, linux and windows designed for simple desktop applications not a web app so no html, css or javascript Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 203. shoes: a self-contained GUI toolkit for Ruby which works on mac, linux and windows designed for simple desktop applications not a web app so no html, css or javascript but uses similar elements and concepts Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 204. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 205. a shoes app Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 206. Shoes.app do para "Hello, World!" end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 207. Shoes.app do para "Hello, World!" end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 208. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 209. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 210. Shoes.app :title => "Mediawiki Article Scraper" do background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 211. Shoes.app :title => "Mediawiki Article Scraper" do background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 212. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 213. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 214. Shoes.app :title => "Mediawiki Article Scraper" do background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 215. Shoes.app :title => "Mediawiki Article Scraper" do background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 216. Shoes.app :title => "Mediawiki Article Scraper" do background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 217. Shoes.app :title => "Mediawiki Article Scraper" do background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 218. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 219. Shoes.app :title => "Mediawiki Article Scraper" do background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" stack do flow :margin => 10 do caption "Subject:" @article = edit_line :width => -200 end end end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 220. Shoes.app :title => "Mediawiki Article Scraper" do background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" stack do flow :margin => 10 do caption "Subject:" @article = edit_line :width => -200 end end end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 221. Shoes.app :title => "Mediawiki Article Scraper" do background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" stack do flow :margin => 10 do caption "Subject:" @article = edit_line :width => -200 end end end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 222. Shoes.app :title => "Mediawiki Article Scraper" do background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" stack do flow :margin => 10 do caption "Subject:" @article = edit_line :width => -200 end end end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 223. Shoes.app :title => "Mediawiki Article Scraper" do background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" stack do flow :margin => 10 do caption "Subject:" @article = edit_line :width => -200 end end end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 224. Shoes.app :title => "Mediawiki Article Scraper" do background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" stack do flow :margin => 10 do caption "Subject:" @article = edit_line :width => -200 end end end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 225. Shoes.app :title => "Mediawiki Article Scraper" do background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" stack do flow :margin => 10 do caption "Subject:" @article = edit_line :width => -200 end end end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 226. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 227. Shoes.app :title => "Mediawiki Article Scraper" do background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" stack do flow :margin => 10 do caption "Subject:" @article = edit_line :width => -200 button "Download", :width => 120 do end end end end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 228. Shoes.app :title => "Mediawiki Article Scraper" do background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" stack do flow :margin => 10 do caption "Subject:" @article = edit_line :width => -200 button "Download", :width => 120 do end end end end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 229. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 230. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 231. Shoes.app :title => "Mediawiki Article Scraper" do @wiki = WikiPage.new "http://en.wikipedia.org/wiki" background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" stack do flow :margin => 10 do caption "Subject:" @article = edit_line :width => -200 button "Download", :width => 120 do @wiki.save end end end end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 232. Shoes.app :title => "Mediawiki Article Scraper" do @wiki = WikiPage.new "http://en.wikipedia.org/wiki" background maroon para "Scrape Mediawiki", :align => "center", :size => "xx-large" stack do flow :margin => 10 do caption "Subject:" @article = edit_line :width => -200 button "Download", :width => 120 do @wiki.save end end end end Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 233. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 234. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 235. Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/
  • 236. Covers Ruby 1.9.1 David A. Black MANNING Practical Ruby Projects Ideas for the Eclectic Programmer Learn advanced programming techniques and explore Ruby’s full potential through a varied series of exciting projects Topher Cyll Ruby: Fun, Productive and Open-Source http://slides.games-with-brains.net/

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. \n
  129. \n
  130. \n
  131. \n
  132. \n
  133. \n
  134. \n
  135. \n
  136. \n
  137. \n
  138. \n
  139. \n
  140. \n
  141. \n
  142. \n
  143. \n
  144. \n
  145. \n
  146. \n
  147. \n
  148. \n
  149. \n
  150. \n
  151. \n
  152. \n
  153. \n
  154. \n
  155. \n
  156. \n
  157. \n
  158. \n
  159. \n
  160. \n
  161. \n
  162. \n
  163. \n
  164. \n
  165. \n
  166. \n
  167. \n
  168. \n
  169. \n
  170. \n
  171. \n
  172. \n
  173. \n
  174. \n
  175. \n
  176. \n
  177. \n
  178. \n
  179. \n
  180. \n
  181. \n
  182. \n
  183. \n
  184. \n
  185. \n
  186. \n
  187. \n
  188. \n
  189. \n
  190. \n
  191. \n
  192. \n
  193. \n
  194. \n
  195. \n
  196. \n
  197. \n
  198. \n
  199. \n
  200. \n
  201. \n
  202. \n
  203. \n
  204. \n
  205. \n
  206. \n
  207. \n
  208. \n
  209. \n
  210. \n
  211. \n
  212. \n
  213. \n
  214. \n
  215. \n
  216. \n
  217. \n
  218. \n
  219. \n
  220. \n
  221. \n
  222. \n
  223. \n
  224. \n
  225. \n
  226. \n
  227. \n
  228. \n
  229. \n