+ All Categories
Transcript
Page 1: Future of Ruby on the Web

Spoiler Alert!

Page 2: Future of Ruby on the Web
Page 3: Future of Ruby on the Web

Dumbledore Dies!

Page 4: Future of Ruby on the Web

Welcome to Future Insights Live!!!

Page 5: Future of Ruby on the Web

Las Vegas

Page 6: Future of Ruby on the Web

"The Vegas"

Page 7: Future of Ruby on the Web
Page 8: Future of Ruby on the Web
Page 9: Future of Ruby on the Web

I am not always right.

Page 10: Future of Ruby on the Web

Future Insights Live

Page 11: Future of Ruby on the Web

Future Insights Live

Page 12: Future of Ruby on the Web

Future!Insights Live

Page 13: Future of Ruby on the Web

Future!Insights Live

Page 14: Future of Ruby on the Web

Future!Insights!Live

Hopefully?

Page 15: Future of Ruby on the Web

Future ofRubyRailsWeb

Page 16: Future of Ruby on the Web

I am not a Fortune Teller

Page 17: Future of Ruby on the Web

Agile Web Developer

Page 18: Future of Ruby on the Web
Page 19: Future of Ruby on the Web

Progress Is a Line

Page 20: Future of Ruby on the Web

Start At The Beginning

Page 21: Future of Ruby on the Web

Aaron Patterson

Page 22: Future of Ruby on the Web

@tenderlove

Page 23: Future of Ruby on the Web

Ruby Core Team

Page 24: Future of Ruby on the Web

Rails Core Team

Page 25: Future of Ruby on the Web

OMG!

INTERNET!

POINTS

Page 26: Future of Ruby on the Web
Page 27: Future of Ruby on the Web
Page 28: Future of Ruby on the Web
Page 29: Future of Ruby on the Web

FULL STACK ENGINEER

Page 30: Future of Ruby on the Web

AT&T, AT&T logo and all AT&T related marks are trademarks of AT&T Intellectual Property and/or AT&T affiliated companies.

Page 31: Future of Ruby on the Web

☑AdequateEverything. Adequately.

Page 32: Future of Ruby on the Web

Two Cats

Page 33: Future of Ruby on the Web

Gorbachev!Puff Puff!

Thunderhorse

Page 34: Future of Ruby on the Web

Sea-Tac!Facebook!YouTube

Page 35: Future of Ruby on the Web
Page 36: Future of Ruby on the Web

Extremely Shy

Page 37: Future of Ruby on the Web

Constant Failyour

Page 38: Future of Ruby on the Web

WWFMD?

Page 39: Future of Ruby on the Web
Page 40: Future of Ruby on the Web

Language Background

Page 41: Future of Ruby on the Web

School: C / C++

Page 42: Future of Ruby on the Web
Page 43: Future of Ruby on the Web

First OSS in 2002

Page 44: Future of Ruby on the Web

Lingua::EN::NameCase

Page 45: Future of Ruby on the Web
Page 46: Future of Ruby on the Web

SomethingFactoryFactoryFactoryBuilder

Page 47: Future of Ruby on the Web

SomethingFactoryFactoryFactoryBuilder

Page 48: Future of Ruby on the Web

No OSS in Java.

Page 49: Future of Ruby on the Web

I’ve never written Java for fun.

Page 50: Future of Ruby on the Web
Page 51: Future of Ruby on the Web
Page 52: Future of Ruby on the Web

My Birthday, in 2003

Page 53: Future of Ruby on the Web

Lesson: Use someone else’s credit card

Page 54: Future of Ruby on the Web

I was hooked.

Page 55: Future of Ruby on the Web
Page 56: Future of Ruby on the Web

High Productivity

Page 57: Future of Ruby on the Web

Startup World

Page 58: Future of Ruby on the Web

OSS Increased

Page 59: Future of Ruby on the Web

Corporate World

Page 60: Future of Ruby on the Web

AT&T, AT&T logo and all AT&T related marks are trademarks of AT&T Intellectual Property and/or AT&T affiliated companies.

Page 61: Future of Ruby on the Web

High Productivity

Page 62: Future of Ruby on the Web

Employment as OSS Developer

Page 63: Future of Ruby on the Web

Expense Reporting

Page 64: Future of Ruby on the Web

Expense Report Infinite Loop

Page 65: Future of Ruby on the Web

ConcurPDF

Page 66: Future of Ruby on the Web

"5 pages sent to …"

Page 67: Future of Ruby on the Web

PDF

Concur

Fax

Email

PDF

Page 68: Future of Ruby on the Web

High Productivity?

Page 69: Future of Ruby on the Web

I love my job.

Page 70: Future of Ruby on the Web

People Seek High Productivity

Page 71: Future of Ruby on the Web

Back to Future Predictions…

Page 72: Future of Ruby on the Web
Page 73: Future of Ruby on the Web

Future of Programming Languages

Page 74: Future of Ruby on the Web

Machine Code

[ op | rs | rt | rd |shamt| funct] 0 1 2 6 0 32 decimal 000000 00001 00010 00110 00000 100000 binary

Page 75: Future of Ruby on the Web

Assembly Language .arch msp430g2553 .cpu 430 .mpy none ! .section .init9,"ax",@progbits .p2align 1,0 .global main .type main,@function /*********************** * Function `main' ***********************/ main: mov.b #0, &__P1OUT mov.b &__CALBC1_1MHZ, &__BCSCTL1 mov.b &__CALDCO_1MHZ, &__DCOCTL bis.b #1, &__P1DIR bis.b #1, &__P1OUT mov #1, r15 .Lfe1: .size main,.Lfe1-main ;; End of function

Page 76: Future of Ruby on the Web

Freed us from binary

Page 77: Future of Ruby on the Web

Cvoid loop(void) { green(); dht * fridge = malloc(sizeof(dht)); read = dhtRead(fridge); ! if(DHT_OK == read) { WRITE_TEMP(fridge->rhIntegral, fridge->rhDecimal, fridge->tIntegral, fridge->tDecimal); } else { red(); WRITE_TEMP(99, 99, 99, 99); } delaySeconds(2); }

Page 78: Future of Ruby on the Web

Freed us from the instructions

Page 79: Future of Ruby on the Web

Javapublic IRubyObject start_document(ThreadContext context, IRubyObject version, IRubyObject tags, IRubyObject implicit) { boolean implicitBool = implicit.isTrue(); Map<String, String> tagsMap = null; ! RubyArray tagsAry = tags.convertToArray(); if (tagsAry.size() > 0) { tagsMap = new HashMap<String, String>(tagsAry.size()); for (int i = 0; i < tagsAry.size(); i++) { RubyArray tagsTuple = tagsAry.eltInternal(i).convertToArray(); if (tagsTuple.size() != 2) { throw context.runtime.newRuntimeError("tags tuple must be of length 2"); } IRubyObject key = tagsTuple.eltInternal(0); IRubyObject value = tagsTuple.eltInternal(1); tagsMap.put(key.asJavaString(), value.asJavaString()); } } ! return this; }

Page 80: Future of Ruby on the Web

Freed us from memory management.

Page 81: Future of Ruby on the Web

Rubydef start_document(context, version, tags, implicit) tagsMap = nil; ! tagsAry = Array(tags) if (tagsAry.size > 0) tagsMap = {} tagsAry.size.times do |i| tagsTuple = tagsAry.eltInternal(i) if (tagsTuple.size != 2) raise RuntimeError, "tags tuple must be of length 2" end key = tagsTuple.eltInternal(0); value = tagsTuple.eltInternal(1); tagsMap[key] = value end end end

Page 82: Future of Ruby on the Web

Freed us from Types

Page 83: Future of Ruby on the Web

We’ve eliminated

• Specific machine code • Particular CPU instructions • Memory management • Object Types

Page 84: Future of Ruby on the Web

What’s next?

Page 85: Future of Ruby on the Web
Page 86: Future of Ruby on the Web

Concurrency

Page 87: Future of Ruby on the Web

CPUs aren’t getting faster

Page 88: Future of Ruby on the Web

We’re getting more cores

Page 89: Future of Ruby on the Web

Today

lock.synchronize { # Manipulate some data }

Page 90: Future of Ruby on the Web

Today

pool = ThreadPool.new NUMBER_OF_CPU

Page 91: Future of Ruby on the Web

Thinking about this is a waste of time!

Page 92: Future of Ruby on the Web

Dealing with concurrency is CODE NOISE

Page 93: Future of Ruby on the Web

The computer should solve these problems FOR US!

Page 94: Future of Ruby on the Web

Distributed Systems

Page 95: Future of Ruby on the Web

Concurrency tomorrow will be like memory management today

Page 96: Future of Ruby on the Web

Future of Ruby

Page 97: Future of Ruby on the Web

Ruby will ADAPT.

Page 98: Future of Ruby on the Web

By STEALING

Page 99: Future of Ruby on the Web

Clojure, Haskell, Go

Page 100: Future of Ruby on the Web

GC was invented in 1959.

Page 101: Future of Ruby on the Web

GC was invented in 1959.

Page 102: Future of Ruby on the Web

1959!!!!!

Page 103: Future of Ruby on the Web

Java’s First Release: 1995

WTF?

Page 104: Future of Ruby on the Web

We can do better than 36 years!

Page 105: Future of Ruby on the Web

Ruby Will Adapt Ruby Will Change

Page 106: Future of Ruby on the Web

Future of Rails

Page 107: Future of Ruby on the Web

Freedom of Rails

Page 108: Future of Ruby on the Web

Where does a model go?

Page 109: Future of Ruby on the Web

How does it talk to the controller?

Page 110: Future of Ruby on the Web

What are our table names?

Page 111: Future of Ruby on the Web

What is the primary key name?

Page 112: Future of Ruby on the Web
Page 113: Future of Ruby on the Web

Convention over Configuration

Page 114: Future of Ruby on the Web

High Productivity

Page 115: Future of Ruby on the Web

The Web is Changing

Page 116: Future of Ruby on the Web

Computations are changing

Page 117: Future of Ruby on the Web

Ember.js / AngularJS

Page 118: Future of Ruby on the Web

btw, Ember.js is way better

Page 119: Future of Ruby on the Web

I have no idea what I’m talking about.

Page 120: Future of Ruby on the Web

The pendulum is done.

Page 121: Future of Ruby on the Web

Why is multi-core different than distributed computing?

Page 122: Future of Ruby on the Web

Why is distributed computing different than client/server?

Page 123: Future of Ruby on the Web

Practical Terms

Page 124: Future of Ruby on the Web

Better API support

Page 125: Future of Ruby on the Web

High Productivity

Page 126: Future of Ruby on the Web

Future of Web

Page 127: Future of Ruby on the Web

World’s Most Advanced Animated Gif Delivery System

Page 128: Future of Ruby on the Web

Future of the Web IS HERE!

Page 129: Future of Ruby on the Web

Future Favors High Productivity

Page 130: Future of Ruby on the Web

Higher Productivity for Languages

Page 131: Future of Ruby on the Web

Higher Productivity for Frameworks

Page 132: Future of Ruby on the Web

Higher Productivity for The Web

Page 133: Future of Ruby on the Web

Thank You!!💛💙💜💚❤️💗💛💙💜💚❤️💗


Top Related