communication is a technical skill

73
COMMUNICATION IS A TECHNICAL SKILL Sarah Allen @ultrasaurus

Upload: sarah-allen

Post on 21-Jan-2017

1.523 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Communication is a Technical Skill

COMMUNICATION IS A TECHNICAL SKILL

Sarah Allen@ultrasaurus

Page 2: Communication is a Technical Skill
Page 3: Communication is a Technical Skill
Page 4: Communication is a Technical Skill
Page 5: Communication is a Technical Skill
Page 6: Communication is a Technical Skill
Page 7: Communication is a Technical Skill
Page 8: Communication is a Technical Skill
Page 9: Communication is a Technical Skill
Page 10: Communication is a Technical Skill
Page 11: Communication is a Technical Skill
Page 12: Communication is a Technical Skill
Page 13: Communication is a Technical Skill

MAKING SOFTWARE FUN

Page 14: Communication is a Technical Skill

MAKING SOFTWARE FUN

Page 15: Communication is a Technical Skill

EXAMPLESSOCIAL CHANGE BUSINESS OPEN SOURCE

Page 16: Communication is a Technical Skill

COMMUNICATION PATTERNS

1. BIG VISION 2. CONCRETE STEP 3. THE PATH

Page 17: Communication is a Technical Skill

SOCIAL CHANGEBRIDGE FOUNDRY

Page 18: Communication is a Technical Skill
Page 19: Communication is a Technical Skill

Bridge Foundry Workshops

Page 20: Communication is a Technical Skill

DIVERSE TEAM CHILDCARE FOOD INSTALLFEST DAY OF CODING Bridge Foundry Workshops

Page 21: Communication is a Technical Skill

DIVERSE TEAM CHILDCARE FOOD INSTALLFEST DAY OF CODING Bridge Foundry Workshops

Page 22: Communication is a Technical Skill

DIVERSE TEAM CHILDCARE FOOD INSTALLFEST DAY OF CODING Bridge Foundry Workshops

Page 23: Communication is a Technical Skill

DIVERSE TEAM CHILDCARE FOOD INSTALLFEST DAY OF CODING Bridge Foundry Workshops

Page 24: Communication is a Technical Skill

DIVERSE TEAM CHILDCARE FOOD INSTALLFEST DAY OF CODING Bridge Foundry Workshops

Page 25: Communication is a Technical Skill

MOVING THE NEEDLE: HOW SF RUBY GOT TO 18% — SARAH MEI

Page 26: Communication is a Technical Skill

BUSINESSFIREBASE

Page 27: Communication is a Technical Skill

"HELP DEVELOPERS BUILD BETTER APPS AND GROW SUCCESSFUL BUSINESSES"James Tamplin

Page 28: Communication is a Technical Skill
Page 29: Communication is a Technical Skill
Page 30: Communication is a Technical Skill

FIFTEEN MINUTESDEVELOPER PRODUCTIVITY

Page 31: Communication is a Technical Skill

YOUR PRODUCT IS NOT JUST YOUR CODE

DOCUMENTATION, WEBSITE, BLOG GITHUB STACK OVERFLOW SOCIAL MEDIA CONFERENCE TALKS, MEETUPS, HACKATHONS,

Page 32: Communication is a Technical Skill
Page 33: Communication is a Technical Skill
Page 34: Communication is a Technical Skill
Page 35: Communication is a Technical Skill

MAKE PEOPLE FEEL POWERFUL

Judy Tuan presenting Firebase app: Mobile Graffiti

Page 36: Communication is a Technical Skill

OPEN SOURCERACK

Page 37: Communication is a Technical Skill

CHRISTIAN NEUKIRCHEN

HTTP://CHNEUKIRCHEN.ORG/BLOG/ARCHIVE/2007/02/INTRODUCING-RACK.HTML

Page 38: Communication is a Technical Skill

8 minutes on

Rackbased on a presentation byDan Webb ([email protected])@danwronghttp://slidesha.re/dan_on_rack

Page 39: Communication is a Technical Skill
Page 40: Communication is a Technical Skill
Page 41: Communication is a Technical Skill
Page 42: Communication is a Technical Skill

A Convention

Page 43: Communication is a Technical Skill

If you have a Ruby object...

Page 44: Communication is a Technical Skill

that has a call method which takes one argument...

app.call(env)

Page 45: Communication is a Technical Skill

and that method returns an array with 3 elements...

[200, { 'Content-Type' => 'text/plain' }, 'Hello World!']

Page 46: Communication is a Technical Skill

then you can connect it to any web server that supports Rack

require 'thin' Rack::Handler::Thin.run(app, :Port => 4000)

Page 47: Communication is a Technical Skill

and you've got yourself a web application

Page 48: Communication is a Technical Skill

That's it.

Page 49: Communication is a Technical Skill

For Example...

Page 50: Communication is a Technical Skill

app = Proc.new do |env| [200, { 'Content-Type' => 'text/plain' }, 'Hello World!'] end

require 'rubygems' require 'thin'Rack::Handler::Thin.run(app, :Port => 4000)

Page 51: Communication is a Technical Skill

class HelloWorld def initialize(name) @name = name end

def call(env) [200, { 'Content-Type' => 'text/plain' }, "Hello #{@name}!"] end end

require 'rubygems' require 'rack'Rack::Handler::Mongrel.run(HelloWorld.new("Dan"), :Port => 4000)

Page 52: Communication is a Technical Skill

def call(env)

Page 53: Communication is a Technical Skill

{ "SERVER_NAME"=>"localhost", "HTTP_ACCEPT_ENCODING"=>"gzip,deflate", "HTTP_USER_AGENT"=>"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en- GB; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4", "PATH_INFO"=>"/", "SCRIPT_NAME"=>"", "SERVER_PROTOCOL"=>"HTTP/1.1", "HTTP_ACCEPT_LANGUAGE"=>"en-gb,en;q=0.5", "HTTP_HOST"=>"localhost:4000", "REMOTE_ADDR"=>"127.0.0.1", "HTTP_KEEP_ALIVE"=>"300", "REQUEST_PATH"=>"/", "SERVER_SOFTWARE"=>"thin 0.8.2 codename Double Margarita", "HTTP_ACCEPT_CHARSET"=>"ISO-8859-1,utf-8;q=0.7,*;q=0.7", "HTTP_VERSION"=>"HTTP/1.1", "REQUEST_URI"=>"/", "SERVER_PORT"=>"4000", "QUERY_STRING"=>"", "GATEWAY_INTERFACE"=>"CGI/1.2", "HTTP_ACCEPT"=>"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "HTTP_CONNECTION"=>"keep-alive", "REQUEST_METHOD"=>"GET"}

Page 54: Communication is a Technical Skill

[200, { 'Content-Type' => 'text/plain' }, "Hello #{@name}!"]

Status Code

Page 55: Communication is a Technical Skill

[200, { 'Content-Type' => 'text/plain' }, "Hello #{@name}!"]

HTTP Headers

Page 56: Communication is a Technical Skill

[200, { 'Content-Type' => 'text/plain' }, "Hello #{@name}!"]

Response Body

Page 57: Communication is a Technical Skill

Response body can be any object that respond_to?(:each)

file = File.new('myfile.xml') [200, { 'Content-Type' => 'application/xml' }, file]

Page 58: Communication is a Technical Skill

For Example...

Page 59: Communication is a Technical Skill

class StreamingFile def initialize(file) @file = file end

def length File.size(@file) end

def last_modified File.mtime(@file).rfc822 end

def each File.open(@file, "rb") do |file| while part = file.read(8192) yield part end File.delete(@file) end end

Page 60: Communication is a Technical Skill

[200, { 'Content-Type' => 'audio/mp3', 'Content-Length' => file.length.to_s}, file]

Page 61: Communication is a Technical Skill

Common interface

Page 62: Communication is a Technical Skill

• Passenger

• Mongrel

• CGI

• SCGI

• FastCGI

• Thin

• Ebb

• Fuzed

• Webrick

• Litespeed

Page 63: Communication is a Technical Skill

Write once, serve however...

Page 64: Communication is a Technical Skill

Michael Basial: Light Bulbhttps://www.flickr.com/photos/basial/3010044632/

Page 65: Communication is a Technical Skill

WHAT WE DOCOMMUNICATION

Page 66: Communication is a Technical Skill
Page 67: Communication is a Technical Skill

ADOPTION OF LANGUAGES WITH NEW POWERS

ERLANG CLOJURE SCALA GO RUST SWIFT ELIXIR ELM

Page 68: Communication is a Technical Skill

FUNCTIONAL

ELIXIR ERLANG VM (2012) ELM JAVASCRIPT (2012) SCALA JAVA VM (2003)

CLOJURE JAVAVM (2007)

SWIFT iOS/Mac/Linux (2014)

HASKELL - 1990 ERLANG - 1986 ML - 1973 LISP - 1958

C - 1972 COBOL - 1959 FORTRAN - 1956

GO (2009)

JAVA - 1995 C++ - 1983OBJECTIVE C - 1984

SMALLTALK - 1972

JAVASCRIPT - 1995 RUBY - 1995

IMPERATIVEOBJECT-ORIENTED

RUST (2010)

Page 69: Communication is a Technical Skill

LEARN A NEW LANGUAGE

Page 70: Communication is a Technical Skill

LEARN A NEW LANGUAGE

MAKE A NEW LANGUAGE

Page 71: Communication is a Technical Skill

CODE IS COMMUNICATION

Page 72: Communication is a Technical Skill

WHAT WILL YOU SAY?

Page 73: Communication is a Technical Skill

PHOTO CREDITS

▸ 13) Isaiah van Hunen: Face (original 1)https://www.flickr.com/photos/isaiah115/7301506118 https://creativecommons.org/licenses/by-sa/2.0/

▸ 14) photo by Lee Lundrigan

▸ 32) https://firebase.googleblog.com/2013/05/firebase-at-angelhack-sf-2013.html

▸ 64) Michael Basial: Light Bulb https://www.flickr.com/photos/basial/3010044632/

▸ 66) Wizard: http://mortal-affairs.wikia.com/wiki/Wizards