Slide 1

Slide 1 text

& RUBY ON RAILS The Future of the Open Web

Slide 2

Slide 2 text

THE OPEN WEB RUBY RUBY ON RAILS 1 2

Slide 3

Slide 3 text

1 2 3

Slide 4

Slide 4 text

nicolasrapp.com THE OPEN WEB

Slide 5

Slide 5 text

Knowledge Communication Work Social connections News Tool for political change RICHARD DARELL — bitrebels.com

Slide 6

Slide 6 text

“The Internet’s great promise is to make the world’s information universally accessible and useful.” (GARY WOLF)

Slide 7

Slide 7 text

“OPENNESS”

Slide 8

Slide 8 text

OPEN STANDARDS Non-proprietary Content, implementation and access

Slide 9

Slide 9 text

vs. EXAMPLE

Slide 10

Slide 10 text

PHILOSOPHY Decentralization Transparency Hackability Openness From Gift Economies to Free Markets Third-Party Innovation Civil Society and Discourse End-User Usability and Integration BRAD NEUBERG — codinginparadise.org

Slide 11

Slide 11 text

STATE OF THE UNION

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

THE WEB IN 2014 Threats and Opportunities

Slide 14

Slide 14 text

“I love the Internet, and I love that you can say whatever you want.” (JOAN RIVERS)

Slide 15

Slide 15 text

SURVEILLANCE

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

“The NSA’s surveillance programme is prompting many US writers to abandon topics that could be deemed too sensitive” (DAVE EGGERS, theguardian.com)

Slide 18

Slide 18 text

CENSORSHIP

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

GOVERNMENT ONLINE

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

NET NEUTRALITY

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

CYBER ACTIVISM

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

SECURITY

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

“TECHNOMONOPOLIES”

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

POST–INDUSTRIAL SOCIETIES

Slide 33

Slide 33 text

CROWD SOURCING & FUNDING

Slide 34

Slide 34 text

THE WEB AS SOCIAL NORMALIZER

Slide 35

Slide 35 text

THE WEB IN 2014 Design and Technology

Slide 36

Slide 36 text

MOBILE & OFFLINE FIRST

Slide 37

Slide 37 text

ASYNCHRONOUS WEB

Slide 38

Slide 38 text

THE INTERNET OF THINGS

Slide 39

Slide 39 text

BIG (SOCIAL) DATA

Slide 40

Slide 40 text

MONETIZATION IN A MULTISCREEN PARADIGM

Slide 41

Slide 41 text

RUBY & RUBY ON RAILS

Slide 42

Slide 42 text

Yukihiro “Matz” Matsumoto

Slide 43

Slide 43 text

“I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy. That is the primary purpose of Ruby language.” (MATZ)

Slide 44

Slide 44 text

PRINCIPLES Programmer happiness Principle of least astonishment Human readable Beautiful syntax

Slide 45

Slide 45 text

ECOSYSTEM RubyGems, Bundler & Rake Multiple implementations (MRI, JRuby, Rubinius, mruby, MacRuby, Topaz, …) Solid Standard Library

Slide 46

Slide 46 text

COMMUNITY MINASWAN Self reflective Open Quirky

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

OBJECT–ORIENTED

Slide 49

Slide 49 text

5.times { print "We love Ruby" }

Slide 50

Slide 50 text

class Animal def eat(food) puts "Animal eating" end end my_animal = Animal.new animal.eat # => "Animal eating"

Slide 51

Slide 51 text

class Dog < Animal def eat(food) puts "Dog eating" super end end

Slide 52

Slide 52 text

module Stomach def digest(food) # ... end end

Slide 53

Slide 53 text

class Dog < Animal include Stomach end my_dog = Dog.new dog.digest

Slide 54

Slide 54 text

-199.abs # => 199 "Foobar".split("").uniq.sort.join # => "abFor" nil.class # => "NilClass"

Slide 55

Slide 55 text

DYNAMICALLY TYPED (DUCK–TYPING)

Slide 56

Slide 56 text

if dog.is_a? Animal dog.eat end dog.eat if dog.respond_to?(:eat)

Slide 57

Slide 57 text

MONKEY–PATCHING (DUCK–PUNCHING)

Slide 58

Slide 58 text

“… if it walks like a duck and talks like a duck, it’s a duck, right? So if this duck is not giving you the noise that you want, you’ve got to just punch that duck until it returns what you expect.”

Slide 59

Slide 59 text

class String def yell "#{self.upcase}!" end end "hello".yell # => "HELLO!"

Slide 60

Slide 60 text

META–PROGRAMMING

Slide 61

Slide 61 text

class Greeter def method_missing(name, *args) name = name.to_s if name =~ /^hello_/ puts "Hello, #{name.gsub(/^hello_/, '')}!" else super end end end Greeter.new.hello_john # => "Hello, john!"

Slide 62

Slide 62 text

BLOCKS & LAMBDAS

Slide 63

Slide 63 text

[1, 2, 3].map { |i| i ** 2 } # => [1, 4, 9]

Slide 64

Slide 64 text

def greet(&block) # ... greeting = yield("John") # ... end greet do |name| "Hello, #{name}!" end

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

PRINCIPLES Open Source MVC CoC DRY Opinionated

Slide 67

Slide 67 text

CONTROLLER MODEL VIEW

Slide 68

Slide 68 text

FEATURES Generators ORM Restful routing Included web server

Slide 69

Slide 69 text

ROUTES CONTROLLER ACTION

Slide 70

Slide 70 text

$ gem install rails $ rails new blog $ cd blog $ rails generate scaffold post title content:text $ rake db:migrate $ rails server

Slide 71

Slide 71 text

[CODE TOUR]

Slide 72

Slide 72 text

RUBY ON RAILS AND THE OPEN WEB

Slide 73

Slide 73 text

THREATS AND OPPORTUNITIES

Slide 74

Slide 74 text

EMPOWERMENT

Slide 75

Slide 75 text

“The solution is open source. By building together open, free, secure systems, we can go around such surveillance, and then one country doesn't have to solve the problem by itself.” (MIKKO HYPPÖNEN)

Slide 76

Slide 76 text

Open Source A strong, independent community Well developed ecosystem

Slide 77

Slide 77 text

DECENTRALIZATION

Slide 78

Slide 78 text

Availability Deployment Development speed

Slide 79

Slide 79 text

SECURITY

Slide 80

Slide 80 text

Convention over configuration Open Source Ecosystem

Slide 81

Slide 81 text

DESIGN AND TECHNOLOGY

Slide 82

Slide 82 text

OPENNESS

Slide 83

Slide 83 text

Rails API RESTful by default Database agnosticism

Slide 84

Slide 84 text

SHIFTING TOWARDS THE CLIENT

Slide 85

Slide 85 text

Sass CoffeeScript Asset Pipeline Turbolinks

Slide 86

Slide 86 text

ASYNCHRONOUS WEB

Slide 87

Slide 87 text

SSE JRuby Threadsafe by default Celluloid Live streaming

Slide 88

Slide 88 text

@polarblau