stupid ideas for many computers · @thagomizer_rb started get "/" for 127.0.0.1 at...

148
Stupid Ideas for Many Computers Aja Hammerly @thagomizer_rb

Upload: others

Post on 01-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

Stupid Ideas forMany Computers

Aja Hammerly@thagomizer_rb

Page 2: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

My first Ruby Conf

Page 3: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Page 4: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rbhttps://www.flickr.com/photos/jamisonjudd/2433102356/

Page 5: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Page 6: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Page 7: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

110% More

Bad Ideas

AT SCALE

Page 8: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

Aja Hammerly

@thagomizer_rb

http://www.thagomizer.com

http://github.com/thagomizer/StupidIdeas

Page 9: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

http://cloud.google.com/rubyOffice Hours:

Monday during the PM Break

Page 10: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Unless otherwise stated:all code is copyright Google and

licensed Apache V2

Page 11: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Stupid

Page 12: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Load Testing

Page 13: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Really Stupid ™Load Testing

Page 14: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m Processing by Rails::WelcomeController#index as HTML Rendered /Users/ajahammerly/.gem/repos/blog/gems/railties-4.1.8/lib/rails/templates/rails/welcome/index.html.erb (1.1ms) Completed 200 OK in 58ms (Views: 35.8ms | ActiveRecord: 0.0ms)

Started GET "/" for 127.0.0.1 at 2014-12-18 11:12:26 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m Processing by PostsController#index as HTML [1m[35mPost Load (0.1ms)[0m SELECT "posts".* FROM "posts" Rendered posts/index.html.erb within layouts/application (1.7ms) Completed 200 OK in 1101ms (Views: 1080.9ms | ActiveRecord: 0.1ms)

Started GET "/assets/scaffolds.css?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/posts.css?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/turbolinks.js?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/posts.js?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/" for 127.0.0.1 at 2014-12-18 11:14:31 -0800 Processing by PostsController#index as HTML Completed 500 Internal Server Error in 2ms

ArgumentError (wrong number of arguments (1 for 0)): app/controllers/posts_controller.rb:7:in `index'

Rendered /Users/ajahammerly/.gem/repos/blog/gems/actionpack-4.1.8/lib/action_dispatch/middleware/

Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:11 -0800

Started GET "/posts" for 127.0.0.1 at 2014-12-18 11:15:13 -0800 Processing by PostsController#index as HTML [1m[35mPost Load (0.1ms)[0m SELECT "posts".* FROM "posts" ORDER BY created_at DESC Rendered posts/index.html.erb within layouts/application (3.6ms) Completed 200 OK in 29ms (Views: 28.0ms | ActiveRecord: 0.1ms)

Started GET "/posts/new" for 127.0.0.1 at 2014-12-18 11:15:14 -0800 Processing by PostsController#new as HTML Rendered posts/_form.html.erb (2.5ms) Rendered posts/new.html.erb within layouts/application (3.6ms) Completed 200 OK in 37ms (Views: 36.1ms | ActiveRecord: 0.0ms)

Started POST "/posts" for 127.0.0.1 at 2014-12-18 11:15:22 -0800 Processing by PostsController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"sdU1eASFmHcNz/I+HRSnKOQfsvt/jMe/y65LHfABZRU=", "post"=>{"title"=>"Post 2", "body"=>"Stupid LDB"}, "commit"=>"Create Post"} [1m[36m (0.1ms)[0m [1mbegin transaction[0m [1m[35mSQL (0.2ms)[0m INSERT INTO "posts" ("body", "created_at", "title", "updated_at") VALUES (?, ?, ?, ?) [["body", "Stupid LDB"], ["created_at", "2014-12-18 19:15:22.628020"], ["title", "Post 2"], ["updated_at", "2014-12-18 19:15:22.628020"]] [1m[36m (0.7ms)[0m [1mcommit transaction[0m Redirected to http://localhost:3000/posts/2 Completed 302 Found in 4ms (ActiveRecord: 1.0ms)

Started GET "/posts/2" for 127.0.0.1 at 2014-12-18 11:15:22 -0800 Processing by PostsController#show as HTML Parameters: {"id"=>"2"} [1m[35mPost Load (0.1ms)[0m SELECT "posts".* FROM "posts" WHERE "posts"."id" = ? LIMIT 1 [["id", 2]] Rendered posts/show.html.erb within layouts/application (0.3ms) Completed 200 OK in 61ms (Views: 59.9ms | ActiveRecord: 0.1ms)

Started GET "/assets/scaffolds.css?body=1" for 127.0.0.1 at 2014-12-18 11:15:22 -0800

Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:22 -0800

Started GET "/assets/turbolinks.js?body=1" for Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m

Rendered posts/new.html.erb within layouts/application (14.7ms) Completed 200 OK in 41ms (Views: 39.7ms | ActiveRecord: 0.2ms)

Started POST "/posts" for 127.0.0.1 at 2014-12-18 11:15:11 -0800 Processing by PostsController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"sdU1eASFmHcNz/I+HRSnKOQfsvt/jMe/y65LHfABZRU=", "post"=>{"title"=>"Post 1", "body"=>"Blah blah blah"}, "commit"=>"Create Post"} [1m[35m (0.1ms)[0m begin transaction [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "posts" ("body", "created_at", "title", "updated_at") VALUES (?, ?, ?, ?)[0m [["body", "Blah blah blah"], ["created_at", "2014-12-18 19:15:11.521855"], ["title", "Post 1"], ["updated_at", "2014-12-18 19:15:11.521855"]] [1m[35m (0.7ms)[0m commit transaction Redirected to http://localhost:3000/posts/1 Completed 302 Found in 7ms (ActiveRecord: 1.2ms)

Started GET "/posts/1" for 127.0.0.1 at 2014-12-18 11:15:11 -0800 Processing by PostsController#show as HTML Parameters: {"id"=>"1"} [1m[36mPost Load (0.2ms)[0m [1mSELECT "posts".* FROM "posts" WHERE "posts"."id" = ? LIMIT 1[0m [["id", 1]] Rendered posts/show.html.erb within layouts/application (0.9ms) Completed 200 OK in 65ms (Views: 63.1ms | ActiveRecord: 0.2ms)

Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:11 -0800

Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:11 -0800

Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-12-18 11:15:11 -0800

Started GET "/assets/scaffolds.css?body=1" for 127.0.0.1 at 2014-12-18 11:15:11 -0800

Started GET "/assets/posts.css?body=1" for 127.0.0.1 at 2014-12-18 11:15:11 -0800

Started GET "/assets/turbolinks.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:11 -0800

Started GET "/assets/posts.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:11 -0800

Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:11 -0800

Started GET "/posts" for 127.0.0.1 at 2014-12-18

Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/posts.css?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/turbolinks.js?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/posts.js?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/" for 127.0.0.1 at 2014-12-18 11:14:31 -0800 Processing by PostsController#index as HTML Completed 500 Internal Server Error in 2ms

ArgumentError (wrong number of arguments (1 for 0)): app/controllers/posts_controller.rb:7:in `index'

Rendered /Users/ajahammerly/.gem/repos/blog/gems/actionpack-4.1.8/lib/action_dispatch/middleware/templates/rescues/_source.erb (0.6ms) Rendered /Users/ajahammerly/.gem/repos/blog/gems/actionpack-4.1.8/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (0.8ms) Rendered /Users/ajahammerly/.gem/repos/blog/gems/actionpack-4.1.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.1ms) Rendered /Users/ajahammerly/.gem/repos/blog/gems/actionpack-4.1.8/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (15.4ms)

Started GET "/" for 127.0.0.1 at 2014-12-18 11:15:03 -0800 Processing by PostsController#index as HTML [1m[36mPost Load (0.3ms)[0m [1mSELECT "posts".* FROM "posts" ORDER BY created_at DESC[0m Rendered posts/index.html.erb within layouts/application (1.8ms) Completed 200 OK in 31ms (Views: 28.8ms | ActiveRecord: 0.3ms)

Started GET "/assets/scaffolds.css?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Page 15: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

0)): app/controllers/posts_controller.rb:7:in `index'

Rendered /Users/ajahammerly/.gem/repos/blog/gems/actionpack-4.1.8/lib/action_dispatch/middleware/templates/rescues/_source.erb (0.6ms) Rendered /Users/ajahammerly/.gem/repos/blog/gems/actionpack-4.1.8/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (0.8ms) Rendered /Users/ajahammerly/.gem/repos/blog/gems/actionpack-4.1.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.1ms) Rendered /Users/ajahammerly/.gem/repos/blog/gems/actionpack-4.1.8/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (15.4ms)

Started GET "/" for 127.0.0.1 at 2014-12-18 11:15:03 -0800 Processing by PostsController#index as HTML [1m[36mPost Load (0.3ms)[0m [1mSELECT "posts".* FROM "posts" ORDER BY created_at DESC[0m Rendered posts/index.html.erb within layouts/application (1.8ms) Completed 200 OK in 31ms (Views: 28.8ms | ActiveRecord: 0.3ms)

Started GET "/assets/scaffolds.css?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/assets/posts.css?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/assets/turbolinks.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/assets/posts.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/posts/new" for 127.0.0.1 at 2014-12-18 11:15:05 -0800 Processing by PostsController#new as HTML Rendered posts/_form.html.erb (12.2ms) Rendered posts/new.html.erb within layouts/application (14.7ms) Completed 200 OK in 41ms (Views: 39.7ms | ActiveRecord: 0.2ms)

Started GET "/assets/turbolinks.js?body=1" for Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m Processing by Rails::WelcomeController#index as HTML Rendered /Users/ajahammerly/.gem/repos/blog/gems/railties-4.1.8/lib/rails/templates/rails/welcome/index.html.erb (1.1ms) Completed 200 OK in 58ms (Views: 35.8ms | ActiveRecord: 0.0ms)

Started GET "/" for 127.0.0.1 at 2014-12-18 11:12:26 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m Processing by PostsController#index as HTML [1m[35mPost Load (0.1ms)[0m SELECT "posts".* FROM "posts" Rendered posts/index.html.erb within layouts/application (1.7ms) Completed 200 OK in 1101ms (Views: 1080.9ms | ActiveRecord: 0.1ms)

Started GET "/assets/scaffolds.css?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/posts.css?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/turbolinks.js?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/posts.js?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-12-18 11:12:28 -0800

Started GET "/" for 127.0.0.1 at 2014-12-18 11:14:31 -0800 Processing by PostsController#index as HTML Completed 500 Internal Server Error in 2ms

ArgumentError (wrong number of arguments (1 for 0)): app/controllers/posts_controller.rb:7:in `index'

Rendered /Users/ajahammerly/.gem/repos/blog/gems/actionpack-4.1.8/lib/action_dispatch/middleware/templates/rescues/_source.erb (0.6ms)

Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:11 -0800

Started GET "/posts" for 127.0.0.1 at 2014-12-18 11:15:13 -0800 Processing by PostsController#index as HTML [1m[35mPost Load (0.1ms)[0m SELECT "posts".* FROM "posts" ORDER BY created_at DESC Rendered posts/index.html.erb within layouts/application (3.6ms) Completed 200 OK in 29ms (Views: 28.0ms | ActiveRecord: 0.1ms)

Started GET "/posts/new" for 127.0.0.1 at 2014-12-18 11:15:14 -0800 Processing by PostsController#new as HTML Rendered posts/_form.html.erb (2.5ms) Rendered posts/new.html.erb within layouts/application (3.6ms) Completed 200 OK in 37ms (Views: 36.1ms | ActiveRecord: 0.0ms)

Started POST "/posts" for 127.0.0.1 at 2014-12-18 11:15:22 -0800 Processing by PostsController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"sdU1eASFmHcNz/I+HRSnKOQfsvt/jMe/y65LHfABZRU=", "post"=>{"title"=>"Post 2", "body"=>"Stupid LDB"}, "commit"=>"Create Post"} [1m[36m (0.1ms)[0m [1mbegin transaction[0m [1m[35mSQL (0.2ms)[0m INSERT INTO "posts" ("body", "created_at", "title", "updated_at") VALUES (?, ?, ?, ?) [["body", "Stupid LDB"], ["created_at", "2014-12-18 19:15:22.628020"], ["title", "Post 2"], ["updated_at", "2014-12-18 19:15:22.628020"]] [1m[36m (0.7ms)[0m [1mcommit transaction[0m Redirected to http://localhost:3000/posts/2 Completed 302 Found in 4ms (ActiveRecord: 1.0ms)

Started GET "/posts/2" for 127.0.0.1 at 2014-12-18 11:15:22 -0800 Processing by PostsController#show as HTML Parameters: {"id"=>"2"} [1m[35mPost Load (0.1ms)[0m SELECT "posts".* FROM "posts" WHERE "posts"."id" = ? LIMIT 1 [["id", 2]] Rendered posts/show.html.erb within layouts/application (0.3ms) Completed 200 OK in 61ms (Views: 59.9ms | ActiveRecord: 0.1ms)

Started GET "/assets/scaffolds.css?body=1" for 127.0.0.1 at 2014-12-18 11:15:22 -0800

Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:22 -0800

Started GET "/assets/turbolinks.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:22 -0800

Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-12-18 11:15:22 -0800

Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/assets/posts.css?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/assets/turbolinks.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/assets/posts.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:03 -0800

Started GET "/posts/new" for 127.0.0.1 at 2014-12-18 11:15:05 -0800 Processing by PostsController#new as HTML Rendered posts/_form.html.erb (12.2ms) Rendered posts/new.html.erb within layouts/application (14.7ms) Completed 200 OK in 41ms (Views: 39.7ms | ActiveRecord: 0.2ms)

Started POST "/posts" for 127.0.0.1 at 2014-12-18 11:15:11 -0800 Processing by PostsController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"sdU1eASFmHcNz/I+HRSnKOQfsvt/jMe/y65LHfABZRU=", "post"=>{"title"=>"Post 1", "body"=>"Blah blah blah"}, "commit"=>"Create Post"} [1m[35m (0.1ms)[0m begin transaction [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "posts" ("body", "created_at", "title", "updated_at") VALUES (?, ?, ?, ?)[0m [["body", "Blah blah blah"], ["created_at", "2014-12-18 19:15:11.521855"], ["title", "Post 1"], ["updated_at", "2014-12-18 19:15:11.521855"]] [1m[35m (0.7ms)[0m commit transaction Redirected to http://localhost:3000/posts/1 Completed 302 Found in 7ms (ActiveRecord: 1.2ms)

Started GET "/posts/1" for 127.0.0.1 at 2014-12-18 11:15:11 -0800 Processing by PostsController#show as HTML Parameters: {"id"=>"1"} [1m[36mPost Load (0.2ms)[0m [1mSELECT "posts".* FROM "posts" WHERE "posts"."id" = ? LIMIT 1[0m [["id", 1]] Rendered posts/show.html.erb within layouts/application (0.9ms) Completed 200 OK in 65ms (Views: 63.1ms | ActiveRecord: 0.2ms)

Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2014-12-18 11:15:11 -0800

Page 16: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Mechanize

Page 17: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Computers

Page 18: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

LOAD TESTING

Page 19: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Code

Page 20: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Not Good

Page 21: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

# HIDEOUS REG EX

Page 22: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

# HIDEOUS REG EX # # /Parameters:\s\{\"action\"=>\"(\w*)\",\s\"controller\"=>\"(\w*)\",\s(\"properties\"=>\".*)/ puts "require 'rubygems'" puts "require 'mechanize'" puts puts "server = 'http://' + ARGV[0]"

puts "agent = WWW::Mechanize.new" puts "login_pg = agent.get(server)"

File.open(ARGV[0]) do |log| log.each do |line| if line =~ /Parameters:\s\{\"action\"=>\"(\w*)\",\s\"controller\"=>\"(\w*)\",\s(\"properties\"=>\".*)/ if $2 == 'state_manager'

puts "page = agent.post(state_manager_url, #$3 )" elsif $1 == 'nextLesson' puts "page = agent.post(next_lesson_url, #$3 )" end end end end

Page 23: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

# HIDEOUS REG EX # # /Parameters:\s\{\"action\"=>\"(\w*)\",\s\"controller\"=>\"(\w*)\",\s(\"properties\"=>\".*)/ puts "require 'rubygems'" puts "require 'mechanize'" puts puts "server = 'http://' + ARGV[0]"

puts "agent = WWW::Mechanize.new" puts "login_pg = agent.get(server)"

File.open(ARGV[0]) do |log| log.each do |line| if line =~ /Parameters:\s\{\"action\"=>\"(\w*)\",\s\"controller\"=>\"(\w*)\",\s(\"properties\"=>\".*)/ if $2 == 'state_manager'

puts "page = agent.post(state_manager_url, #$3 )" elsif $1 == 'nextLesson' puts "page = agent.post(next_lesson_url, #$3 )" end end end end

Page 24: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

# HIDEOUS REG EX # # /Parameters:\s\{\"action\"=>\"(\w*)\",\s\"controller\"=>\"(\w*)\",\s(\"properties\"=>\".*)/ puts "require 'rubygems'" puts "require 'mechanize'" puts puts "server = 'http://' + ARGV[0]"

puts "agent = WWW::Mechanize.new" puts "login_pg = agent.get(server)"

File.open(ARGV[0]) do |log| log.each do |line| if line =~ /Parameters:\s\{\"action\"=>\"(\w*)\",\s\"controller\"=>\"(\w*)\",\s(\"properties\"=>\".*)/ if $2 == 'state_manager'

puts "page = agent.post(state_manager_url, #$3 )" elsif $1 == 'nextLesson' puts "page = agent.post(next_lesson_url, #$3 )" end end end end

Page 25: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

# HIDEOUS REG EX # # /Parameters:\s\{\"action\"=>\"(\w*)\",\s\"controller\"=>\"(\w*)\",\s(\"properties\"=>\".*)/ puts "require 'rubygems'" puts "require 'mechanize'" puts puts "server = 'http://' + ARGV[0]"

puts "agent = WWW::Mechanize.new" puts "login_pg = agent.get(server)"

File.open(ARGV[0]) do |log| log.each do |line| if line =~ /Parameters:\s\{\"action\"=>\"(\w*)\",\s\"controller\"=>\"(\w*)\",\s(\"properties\"=>\".*)/ if $2 == 'state_manager'

puts "page = agent.post(state_manager_url, #$3 )" elsif $1 == 'nextLesson' puts "page = agent.post(next_lesson_url, #$3 )" end end end end

Page 26: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Flexible

Page 27: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Load

Page 28: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Parallelism

Page 29: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

loop do end

Page 30: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

bash

Page 31: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Toasty Cheese Sandwichhttps://www.flickr.com/photos/chefdruck/4541489084

Page 32: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Cloud

Page 33: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Toasty Cheese Sandwichhttps://www.flickr.com/photos/chefdruck/4541489084

Page 34: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

DeploymentHackery

Page 35: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

VMs

Page 36: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

ssh

Page 37: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Feature!

Page 38: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Stupid?

Page 39: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Tweets & Emoji

Page 40: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

sen·ti·ment a·nal·y·sis (noun)the process of computationally identifying and categorizing opinions expressed in a piece of text, especially in order to determine whether the writer's attitude towards a particular topic, product, etc., is positive, negative, or neutral.

Page 41: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Hard

Page 42: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

"Sure, I'd love to"

Page 43: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

💩❤#👿😀

Page 44: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Positive Negative

❤ 💩

# 👿

😀

Page 45: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

30-30

# 😀❤💩👿

0-15 15

Page 46: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Tweets

Page 47: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Code

Page 48: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

tweetstream

Page 49: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

SENTIMENTS = { ":-)" => 10, "😀" => 30, "❤" => 25, "(:" => 5, "👿" => -30, ":-D" => 15, "#" => 7, "💩" => -15}

Page 50: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

def analyze tweet SENTIMENTS.each do |s, val| if tweet.include? s then sentiment += val end end end

Page 51: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Many Computers!

Page 52: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

rinda

Page 53: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

linda

Page 54: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Page 55: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Server

Page 56: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

require 'rinda/tuplespace'

URI = ARGV[0] || "druby://0.0.0.0:61676" DRb.start_service(URI, Rinda::TupleSpace.new) DRb.thread.join

Page 57: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

3 Worker Types

Page 58: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Server (Tuple Space)

Fetcher Analyzer Reducer

Page 59: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Server (Tuple Space)

Fetcher Analyzer Reducer

[:tweet, "My :-)"]

Page 60: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Server (Tuple Space)

Fetcher Analyzer Reducer

[:tweet, "My :-)"]

Page 61: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Server (Tuple Space)

Fetcher Analyzer Reducer

[:tweet, "My :-)"]

Page 62: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Server (Tuple Space)

Fetcher Analyzer Reducer

[:sentiment, 10]

Page 63: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Server (Tuple Space)

Fetcher Analyzer Reducer

[:sentiment, 10]

Page 64: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Server (Tuple Space)

Fetcher Analyzer Reducer[:sentiment, 10]

Page 65: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Server (Tuple Space)

Fetcher Analyzer Reducer

total_sentiment = 10

Page 66: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Fetcher

Page 67: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

[:tweet, "My tweets :-)"]

Page 68: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

require 'rinda/rinda'

DRb.start_service("druby://#{my_ip}:3000") ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, uri))

tf = TweetFetcher.new tf.fetch("emoji") { |text| ts.write([:tweet, text]) }

Page 69: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Analyzer(mapper)

Page 70: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

require "rinda/rinda" require "sentiments"

DRb.start_service("druby://#{my_ip}:3000") ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, URI))

loop do _, tweet = ts.take([:tweet, String]) sentiment = 0 SENTIMENTS.each do |s, val| if tweet.include? s then sentiment += val end end ts.write([:sentiment, sentiment]) end

Page 71: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

[:sentiment, 5]

Page 72: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Reducer

Page 73: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

require 'rinda/rinda'

DRb.start_service("druby://#{my_ip}:3000") ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, URI))

total_sentiment = 0

loop do _, sentiment = ts.take([:sentiment, Numeric]) total_sentiment += sentiment STDERR.puts "Final Sentiment: #{total_sentiment}" end

Page 74: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Making It Go

Page 75: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Containers

Page 76: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

8 Containers

Page 77: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

5 Vms

Page 78: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Page 79: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Kubernetes

Page 80: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Page 81: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Demo

Page 82: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

#RubyConfEmoji

Page 83: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Latin Squares

Page 84: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Latin SquareIn combinatorics and in experimental design, a Latin square is an n × n array filled with n different symbols, each occurring exactly once in each row and exactly once in each column.

Page 85: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

A B C D

D A B C

B C D A

C D A B

Page 86: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb https://en.wikipedia.org/wiki/File:Fisher-stainedglass-gonville-caius.jpg

Page 87: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Euler

Page 88: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Simple

Page 89: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

4 x 4

Page 90: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

576

Page 91: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

6 x 6

Page 92: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

812,851,200

Page 93: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

9 x 9

Page 94: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb https://en.wikipedia.org/wiki/Sudoku#/media/File:Sudoku-by-L2G-20050714.svg

Page 95: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

5,524,751,496,156,892,842,531,225,600

Page 96: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

~ 5 x 1027

Page 97: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Code

Page 98: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Sieve

Page 99: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Array#permute

Page 100: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

SIZE = ARGV[0].to_i || 6

permutes = (1..SIZE).to_a.permutation.map { |n| n } permutes.permutation(SIZE).each do |grid| pp grid end

Page 101: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

SIZE = ARGV[0].to_i || 6

permutes = (1..SIZE).to_a.permutation.map { |n| n } permutes.permutation(SIZE).each do |grid| pp grid end

Page 102: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

SIZE = ARGV[0].to_i || 6

permutes = (1..SIZE).to_a.permutation.map { |n| n } permutes.permutation(SIZE).each do |grid| pp grid end

Page 103: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

SIZE = ARGV[0].to_i || 6

permutes = (1..SIZE).to_a.permutation.map { |n| n } permutes.permutation(SIZE).each do |grid| pp grid end

Page 104: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

[[1, 2, 3, 4, 5], [1, 2, 3, 5, 4], [1, 5, 4, 2, 3], [5, 3, 4, 2, 1], [3, 2, 1, 5, 4]]

Page 105: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

[[1, 2, 3, 4, 5], [1, 2, 3, 5, 4], [1, 5, 4, 2, 3], [5, 3, 4, 2, 1], [3, 2, 1, 5, 4]]

Page 106: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

(n!)! / (n! - n)!

Page 107: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

O(n!!)

Page 108: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

~ 1 x 1050

Page 109: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

size = solution[0].length example = (1..size).to_a

correct = solution.all? { |row| row.sort == example } && solution.transpose.all? { |col| col.sort == example }

if correct then pp solution end

Page 110: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

size = solution[0].length example = (1..size).to_a

correct = solution.all? { |row| row.sort == example } && solution.transpose.all? { |col| col.sort == example }

if correct then pp solution end

Page 111: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

size = solution[0].length example = (1..size).to_a

correct = solution.all? { |row| row.sort == example } && solution.transpose.all? { |col| col.sort == example }

if correct then pp solution end

Page 112: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

size = solution[0].length example = (1..size).to_a

correct = solution.all? { |row| row.sort == example } && solution.transpose.all? { |col| col.sort == example }

if correct then pp solution end

Page 113: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

1050

Page 114: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

SCALE!!!!

Page 115: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

rinda

Page 116: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

[:possibility, [[3, 4, 2, 1], [2, 3, 1, 4], [1, 2, 4, 3], [4, 1, 3, 2] ]

Page 117: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

[:solution, [[3, 4, 2, 1], [2, 3, 1, 4], [1, 2, 4, 3], [4, 1, 3, 2] ]

Page 118: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Server

Page 119: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

require 'rinda/tuplespace'

URI = ARGV[0] || "druby://0.0.0.0:61676" DRb.start_service(URI, Rinda::TupleSpace.new) DRb.thread.join

Page 120: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Generator

Page 121: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

#!/usr/bin/env ruby

require 'rinda/rinda'

SIZE = ARGV[0].to_i || 6 URI = ARGV[1] || "druby://0.0.0.0:61676" DRb.start_service ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, URI))

permutes = (1..SIZE).to_a.permutation.map { |n| n } permutes.permutation(SIZE).each do |n| ts.write([:possiblity, n]) end

Page 122: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Checker

Page 123: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

require 'rinda/rinda' require 'pp'

URI = ARGV[0] || "druby://0.0.0.0:61676" DRb.start_service ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, URI))

loop do _, solution = ts.take([:possiblity, Array])

size = solution[0].length example = (1..size).to_a

correct = solution.all? { |row| row.sort == example } && solution.transpose.all? { |col| col.sort == example }

if correct then ts.write([:solution, solution]) pp solution break end end

Page 124: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Deployment

Page 125: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Same As Before

Page 126: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Page 127: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Page 128: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Page 129: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

💩❤#👿😀

Page 130: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Profound Thoughts

Page 131: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Useful

Page 132: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Useful

Page 133: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Well Engineered

Page 134: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Well Engineered

Page 135: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Correct Tool

Page 136: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Correct Tool

Page 137: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Fun

Page 138: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Yes

Page 139: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Fast

Page 140: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Power

Page 141: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Computer?

Page 142: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Limits

Page 143: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Distributed Systems Are

Fun & Easy

Page 144: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Fun

Page 145: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Thank You

Page 146: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb

Ryan DavisScott Windsor

Eric HodelBrian Dorsey

Page 147: Stupid Ideas for Many Computers · @thagomizer_rb Started GET "/" for 127.0.0.1 at 2014-12-18 11:10:33 -0800 [1m[36mActiveRecord::SchemaMigration Load (0.1ms) [0m [1mSELECT "schema_migrations".*

@thagomizer_rb