SlideShare una empresa de Scribd logo
1 de 73
Descargar para leer sin conexión
COMMUNICATION
IS A TECHNICAL SKILL
Sarah Allen

@ultrasaurus
MAKING SOFTWARE FUN
MAKING SOFTWARE FUN
EXAMPLESSOCIAL CHANGE
BUSINESS
OPEN SOURCE
COMMUNICATION PATTERNS
1. BIG VISION
2. CONCRETE STEP
3. THE PATH
SOCIAL CHANGE
BRIDGE FOUNDRY
Bridge Foundry
Workshops
DIVERSE TEAM
CHILDCARE
FOOD
INSTALLFEST
DAY OF CODING
Bridge Foundry
Workshops
DIVERSE TEAM
CHILDCARE
FOOD
INSTALLFEST
DAY OF CODING
Bridge Foundry
Workshops
DIVERSE TEAM
CHILDCARE
FOOD
INSTALLFEST
DAY OF CODING
Bridge Foundry
Workshops
DIVERSE TEAM
CHILDCARE
FOOD
INSTALLFEST
DAY OF CODING
Bridge Foundry
Workshops
DIVERSE TEAM
CHILDCARE
FOOD
INSTALLFEST
DAY OF CODING
Bridge Foundry
Workshops
MOVING THE NEEDLE: HOW SF RUBY GOT TO 18% — SARAH MEI
BUSINESS
FIREBASE
"HELP DEVELOPERS
BUILD BETTER APPS
AND GROW
SUCCESSFUL
BUSINESSES"
James Tamplin
FIFTEEN MINUTES
DEVELOPER PRODUCTIVITY
YOUR PRODUCT IS NOT JUST YOUR CODE
DOCUMENTATION, WEBSITE,
BLOG
GITHUB
STACK OVERFLOW
SOCIAL MEDIA
CONFERENCE TALKS, MEETUPS, HACKATHONS,
MAKE PEOPLE
FEEL POWERFUL
Judy Tuan presenting
Firebase app: Mobile Graffiti
OPEN SOURCE
RACK
CHRISTIAN NEUKIRCHEN
HTTP://CHNEUKIRCHEN.ORG/BLOG/ARCHIVE/2007/02/INTRODUCING-RACK.HTML
8 minutes on
Rack
based on a presentation by
Dan Webb (dan@danwebb.net)
@danwrong
http://slidesha.re/dan_on_rack
A Convention
If you have a
Ruby object...
that has a call method which takes
one argument...
app.call(env)
and that method returns an array
with 3 elements...
[200, { 'Content-Type' => 'text/plain' }, 'Hello World!']
then you can connect it to any web
server that supports Rack
	 	 require 'thin'
	 	 Rack::Handler::Thin.run(app, :Port => 4000)
and you've got
yourself a web
application
That's it.
For Example...
app = Proc.new do |env|
	 [200, { 'Content-Type' => 'text/plain' },
	 	 'Hello World!']
end
require 'rubygems'
require 'thin'
Rack::Handler::Thin.run(app, :Port => 4000)
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)
def call(env)
{
	 "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"
}
[200, { 'Content-Type' => 'text/plain' }, "Hello #{@name}!"]
Status Code
[200, { 'Content-Type' => 'text/plain' }, "Hello #{@name}!"]
HTTP Headers
[200, { 'Content-Type' => 'text/plain' }, "Hello #{@name}!"]
Response Body
Response body can be any
object that respond_to?(:each)
	 	 file = File.new('myfile.xml')
	 	 [200, { 'Content-Type' => 'application/xml' }, file]
For Example...
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
[200, {
	 'Content-Type' => 'audio/mp3',
	 'Content-Length' => file.length.to_s
}, file]
Common interface
• Passenger
• Mongrel
• CGI
• SCGI
• FastCGI
• Thin
• Ebb
• Fuzed
• Webrick
• Litespeed
Write once,
serve however...
Michael Basial: Light Bulb
https://www.flickr.com/photos/basial/3010044632/
WHAT WE DOCOMMUNICATION
ADOPTION OF LANGUAGES WITH NEW POWERS
ERLANG
CLOJURE
SCALA
GO
RUST
SWIFT
ELIXIR
ELM
FUNCTIONAL
ELIXIR ERLANG VM (2012)
ELM JAVASCRIPT (2012)
SCALA JAVA VM (2003)
CLOJURE JAVAVM (2007)
SWIFTiOS/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)
LEARN A NEW LANGUAGE
LEARN A NEW LANGUAGE
MAKE A NEW LANGUAGE
CODE IS
COMMUNICATION
WHAT WILL
YOU SAY?
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

Más contenido relacionado

Similar a Communication is a Technical Skill

Browser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom MenaceBrowser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom Menace
Nicholas Zakas
 
Truth About Websites: Why Squarespace vs WordPress for Small Business
Truth About Websites: Why Squarespace vs WordPress for Small BusinessTruth About Websites: Why Squarespace vs WordPress for Small Business
Truth About Websites: Why Squarespace vs WordPress for Small Business
ComBridges
 
Behavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using CucumberBehavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using Cucumber
KMS Technology
 

Similar a Communication is a Technical Skill (20)

Api pain points
Api pain pointsApi pain points
Api pain points
 
Browser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom MenaceBrowser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom Menace
 
Workshop KrakYourNet2016 - Web applications hacking Ruby on Rails example
Workshop KrakYourNet2016 - Web applications hacking Ruby on Rails example Workshop KrakYourNet2016 - Web applications hacking Ruby on Rails example
Workshop KrakYourNet2016 - Web applications hacking Ruby on Rails example
 
Open source-secret-sauce-rit-2010
Open source-secret-sauce-rit-2010Open source-secret-sauce-rit-2010
Open source-secret-sauce-rit-2010
 
RoR Workshop - Web applications hacking - Ruby on Rails example
RoR Workshop - Web applications hacking - Ruby on Rails exampleRoR Workshop - Web applications hacking - Ruby on Rails example
RoR Workshop - Web applications hacking - Ruby on Rails example
 
Truth About Websites: Why Squarespace vs WordPress for Small Business
Truth About Websites: Why Squarespace vs WordPress for Small BusinessTruth About Websites: Why Squarespace vs WordPress for Small Business
Truth About Websites: Why Squarespace vs WordPress for Small Business
 
The Expanding Nature of SEO (MarTech 2016)
The Expanding Nature of SEO (MarTech 2016)The Expanding Nature of SEO (MarTech 2016)
The Expanding Nature of SEO (MarTech 2016)
 
Open Data, Visualization & Usability for Online News Delivery
Open Data,  Visualization &  Usability for  Online News DeliveryOpen Data,  Visualization &  Usability for  Online News Delivery
Open Data, Visualization & Usability for Online News Delivery
 
Behavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using CucumberBehavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using Cucumber
 
Connecting to the Pulse of the Planet with the Twitter Platform
Connecting to the Pulse of the Planet with the Twitter PlatformConnecting to the Pulse of the Planet with the Twitter Platform
Connecting to the Pulse of the Planet with the Twitter Platform
 
Enabling Lean IT with AWS by Carlos Condé at the Lean IT Summit 2014
Enabling Lean IT with AWS by Carlos Condé at the Lean IT Summit 2014Enabling Lean IT with AWS by Carlos Condé at the Lean IT Summit 2014
Enabling Lean IT with AWS by Carlos Condé at the Lean IT Summit 2014
 
APIdays Helsinki 2019 - API Versioning with REST, JSON and Swagger with Thoma...
APIdays Helsinki 2019 - API Versioning with REST, JSON and Swagger with Thoma...APIdays Helsinki 2019 - API Versioning with REST, JSON and Swagger with Thoma...
APIdays Helsinki 2019 - API Versioning with REST, JSON and Swagger with Thoma...
 
8 Minutes On Rack
8 Minutes On Rack8 Minutes On Rack
8 Minutes On Rack
 
Building sustainable RESTFul services
Building sustainable RESTFul servicesBuilding sustainable RESTFul services
Building sustainable RESTFul services
 
August 10th, 2009 Pete De Mulle Twitter
August 10th, 2009 Pete De Mulle TwitterAugust 10th, 2009 Pete De Mulle Twitter
August 10th, 2009 Pete De Mulle Twitter
 
FVCP - Facebook , Twitter and Meetup API / Widgets
FVCP - Facebook , Twitter and Meetup API / WidgetsFVCP - Facebook , Twitter and Meetup API / Widgets
FVCP - Facebook , Twitter and Meetup API / Widgets
 
Spyware/Malware FVCP
Spyware/Malware  FVCPSpyware/Malware  FVCP
Spyware/Malware FVCP
 
Elasticsearch sur Azure : Make sense of your (BIG) data !
Elasticsearch sur Azure : Make sense of your (BIG) data !Elasticsearch sur Azure : Make sense of your (BIG) data !
Elasticsearch sur Azure : Make sense of your (BIG) data !
 
Apps for Science - Elsevier Developer Network Workshop 201102
Apps for Science - Elsevier Developer Network Workshop 201102Apps for Science - Elsevier Developer Network Workshop 201102
Apps for Science - Elsevier Developer Network Workshop 201102
 
Website Accessibility 101
Website Accessibility 101Website Accessibility 101
Website Accessibility 101
 

Más de Sarah Allen

Más de Sarah Allen (20)

Internet security: a landscape of unintended consequences
Internet security: a landscape of unintended consequencesInternet security: a landscape of unintended consequences
Internet security: a landscape of unintended consequences
 
RTMP: how did we get to now? (Demuxed 2019)
RTMP: how did we get to now? (Demuxed 2019)RTMP: how did we get to now? (Demuxed 2019)
RTMP: how did we get to now? (Demuxed 2019)
 
Improving Federal Government Services
Improving Federal Government ServicesImproving Federal Government Services
Improving Federal Government Services
 
Transparency Wins
Transparency WinsTransparency Wins
Transparency Wins
 
A Short History of Computers
A Short History of ComputersA Short History of Computers
A Short History of Computers
 
Making Software Fun
Making Software FunMaking Software Fun
Making Software Fun
 
Power of Transparency
Power of TransparencyPower of Transparency
Power of Transparency
 
Designing for Fun
Designing for FunDesigning for Fun
Designing for Fun
 
Ruby in the US Government for Ruby World Conference
Ruby in the US Government for Ruby World ConferenceRuby in the US Government for Ruby World Conference
Ruby in the US Government for Ruby World Conference
 
Identities of Dead People
Identities of Dead PeopleIdentities of Dead People
Identities of Dead People
 
Let's pretend
Let's pretendLet's pretend
Let's pretend
 
3 Reasons Not to Use Ruby
3 Reasons Not to Use Ruby 3 Reasons Not to Use Ruby
3 Reasons Not to Use Ruby
 
Ruby Nation: Why no haz Ruby?
Ruby Nation: Why no haz Ruby?Ruby Nation: Why no haz Ruby?
Ruby Nation: Why no haz Ruby?
 
Why no ruby in gov?
Why no ruby in gov?Why no ruby in gov?
Why no ruby in gov?
 
People Patterns or What I learned from Toastmasters
People Patterns or What I learned from ToastmastersPeople Patterns or What I learned from Toastmasters
People Patterns or What I learned from Toastmasters
 
Blazing Cloud: Agile Product Development
Blazing Cloud: Agile Product DevelopmentBlazing Cloud: Agile Product Development
Blazing Cloud: Agile Product Development
 
Crowdsourced Transcription Landscape
Crowdsourced Transcription LandscapeCrowdsourced Transcription Landscape
Crowdsourced Transcription Landscape
 
Lessons Learned Future Thoughts
Lessons Learned Future ThoughtsLessons Learned Future Thoughts
Lessons Learned Future Thoughts
 
Mobile Web Video
Mobile Web VideoMobile Web Video
Mobile Web Video
 
Elementary Computer History
Elementary Computer HistoryElementary Computer History
Elementary Computer History
 

Último

Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 

Último (20)

Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 

Communication is a Technical Skill