SlideShare une entreprise Scribd logo
1  sur  97
Télécharger pour lire hors ligne
@MichaelLNorth
Phoenix for
Rubyists
Rubyconf Brazil 2016
Mike North
CTO, Levanto Financial
image credit: http://phoenix-mask.deviantart.com/art/Ruby-Heart-s-Cutie-Mark-600784264
@MichaelLNorth
My Perspective
@MichaelLNorth
@MichaelLNorth
Origins
Chris McCord
dockyard.com
@MichaelLNorth
Origins
@MichaelLNorth
Concurrency
+
Rails
@MichaelLNorth
@MichaelLNorth
@MichaelLNorth
📱
📱
📱
📱
🗼
@MichaelLNorth
Ericsson AXE Switch
(1976 - Present)
@MichaelLNorth
📱
📱
📱
📱
🗼
@MichaelLNorth
🖥
📱
💻
☁
☁
@MichaelLNorth
🖥
📱
💻
☁ ☁
☁
@MichaelLNorth
Concurrency
📱
📱
📱
📱
🗼
@MichaelLNorth
Performance
RubyErlang
@MichaelLNorth
Fault
Tolerance
@MichaelLNorth
Beautiful
Syntax &
Developer
Ergonomics
@MichaelLNorth
Beautiful
Syntax &
Developer
Ergonomics
@MichaelLNorth
@MichaelLNorth
@MichaelLNorth
TL;DR
@MichaelLNorth
TL;DR
Functional
@MichaelLNorth
TL;DR
Functional
Immutable
@MichaelLNorth
TL;DR
Functional
Immutable
BEAM
@MichaelLNorth
TL;DR
Functional
Immutable
BEAM
Extensible
@MichaelLNorth
Apps
@MichaelLNorth
S
S
W
W
W
Hierarchy of Apps
@MichaelLNorth
|>
Pipe Forward
@MichaelLNorth
|>
@MichaelLNorth
val |> func
func(val)
@MichaelLNorth
val |> func(b)
func(val, b)
@MichaelLNorth
val
|> func(b)
|> other(c)
|> more(d)
more(other(func(val, b), c), d)
@MichaelLNorth
Connection
@MichaelLNorth
conn
Request Body
Request Params
Request Headers
Request Origin
Response Body
Response Status Code
Response Headers
new_conn
Request Body
Request Params
Request Headers
Request Origin
Response Body
Response Status Code
Response Headers
@MichaelLNorth
Phoenix,
Abbreviated
new_conn =
conn
|> MyApp.handleRequest
@MichaelLNorth
@MichaelLNorth
Start your app
Start your app (w/ CLI)
Create your DB
@MichaelLNorth
RakeBundler MIX
An Elixir App (with Phoenix 1.2)
Beam files
An Elixir App (with Phoenix 1.2)
App configuration
An Elixir App (with Phoenix 1.2)
Dependency Source Code
An Elixir App (with Phoenix 1.2)
Application (non-web)
An Elixir App (with Phoenix 1.2)
Elixir Package Manifest++
An Elixir App (with Phoenix 1.2)
JS Dependency Source
An Elixir App (with Phoenix 1.2)
JS Package Manifest
An Elixir App (with Phoenix 1.2)
DB stuff, Static assets
An Elixir App (with Phoenix 1.2)
Guess what this is
An Elixir App (with Phoenix 1.2)
Application (web)
An Elixir App (with Phoenix 1.2)
98% of your time
An Elixir App (with Phoenix 1.2)
Phoenix for Rubyists - Rubyconf Brazil 2016
Phoenix for Rubyists - Rubyconf Brazil 2016
@MichaelLNorth
Start the server
HTTP://LOCALHOST:4000
@MichaelLNorth
What’s going on?
URL
Pipeline Parameters Controller Action
@MichaelLNorth
Endpoint
@MichaelLNorth
Multiplexing
Socket
@MichaelLNorth
Serve static
assets
@MichaelLNorth
Request ID
@MichaelLNorth
Request Logging
@MichaelLNorth
Request body
normalization
into JSON
@MichaelLNorth
AJAX DELETE/
PATCH/PUT
@MichaelLNorth
AJAX HEAD
@MichaelLNorth
Session
@MichaelLNorthYour app’s router
@MichaelLNorth
Phoenix, Abbreviated
new_conn =
conn
|> Lots of plugs
|> Router
@MichaelLNorth
Routing
@MichaelLNorth
pipeline
(chain of plugs)
Content-type
Use session
Notifications
CSRF
x-frame, etc…
@MichaelLNorth
Scope
@MichaelLNorth
ActionControllerPathVerb
@MichaelLNorth
Controllers
@MichaelLNorth
RENDER
•Can specify a view, but we didn’t
•Default behavior: name-matching
render(conn, view, template, assigns)
RENDER
•Can specify a view, but we didn’t
•Default behavior: name-matching
render(conn, template, assigns)
Implied: use view with the same name
RENDER
•Can specify a view, but we didn’t
•Default behavior: name-matching
render(conn, template_or_assigns)
Implied: use view with the same name
@MichaelLNorth
Base
Controller
@MichaelLNorth
Filters
@MichaelLNorth
View Layer
@MichaelLNorth
web/controllers/page_controller.ex web/templates/page/index.html.eex
web/views/page_view.ex
@MichaelLNorth
@MichaelLNorth
Model Layer
mix phoenix.gen.model User 
users 
name:string 
username:string 
password_hash:string
Model Name
mix phoenix.gen.model User 
users 
name:string 
username:string 
password_hash:string
Table Name
mix phoenix.gen.model User 
users 
name:string 
username:string 
password_hash:string
Schema
model test
model
db migration
SCHEMA
CHANGESET STUFF
WEB/MODELS/USER.EX
Phoenix for Rubyists - Rubyconf Brazil 2016
@MichaelLNorth
Migrating
@MichaelLNorth
Migrating
• One-shot rewrites are
expensive and dangerous
• You suffer, your company
suffers, your users suffer
• Incremental change makes
everyone happier
@MichaelLNorth
Reverse Proxy
Rails Phoenix
@MichaelLNorth
Reverse Proxy
Phoenix Rails
@MichaelLNorth
Terraform
poteto/terraform
@MichaelLNorth
Phoenix is the future
@MichaelLNorth
You have an advantage
Phoenix is the future
@MichaelLNorth
You have an advantage
Phoenix is the future
Learn it, try it, use it!
@MichaelLNorth
•https://www.toptal.com/erlang/a-cloud-at-the-lowest-level-built-in-erlang
•https://en.wikipedia.org/wiki/Moore%27s_law
•https://theerlangelist.blogspot.in/2013/05/working-with-immutable-data.html
•https://www.amberbit.com/blog/2014/2/14/putting-ruby-on-rails-on-a-diet/
•https://www.technologyreview.com/s/601441/moores-law-is-dead-now-what/
IMAGE & DIAGRAM CREDITS
Thanks!
I’m available for elixir training &
consulting!
michael.l.north@gmail.com

Contenu connexe

Tendances

Novidades Angular 4.x e CLI
Novidades Angular 4.x e CLI Novidades Angular 4.x e CLI
Novidades Angular 4.x e CLI Loiane Groner
 
Apache Flink Community Update March 2015
Apache Flink Community Update March 2015Apache Flink Community Update March 2015
Apache Flink Community Update March 2015Robert Metzger
 
Cloud-Native Batch Processing with Spring Batch 4
Cloud-Native Batch Processing with Spring Batch 4Cloud-Native Batch Processing with Spring Batch 4
Cloud-Native Batch Processing with Spring Batch 4VMware Tanzu
 
Building Web APIs with Elixir
Building Web APIs with ElixirBuilding Web APIs with Elixir
Building Web APIs with ElixirTom Davies
 
How to Build a Compelling Apple Watch App/Complication
How to Build a Compelling Apple Watch App/ComplicationHow to Build a Compelling Apple Watch App/Complication
How to Build a Compelling Apple Watch App/ComplicationKristina Fox
 
Building for, perceiving and measuring performance for mobile web
Building for, perceiving and measuring performance for mobile webBuilding for, perceiving and measuring performance for mobile web
Building for, perceiving and measuring performance for mobile webRobin Glen
 
The basic process of Ruby on Rails
The basic process of Ruby on RailsThe basic process of Ruby on Rails
The basic process of Ruby on RailsAlberto Lamana
 
Cloud Native Batch Processing
Cloud Native Batch ProcessingCloud Native Batch Processing
Cloud Native Batch ProcessingVMware Tanzu
 
EAIESB_OracleFusion_WeblogicInstallation
EAIESB_OracleFusion_WeblogicInstallationEAIESB_OracleFusion_WeblogicInstallation
EAIESB_OracleFusion_WeblogicInstallationVijay Reddy
 
Riot Games - Player Focused Pipeline - Stampedecon 2015
Riot Games - Player Focused Pipeline - Stampedecon 2015Riot Games - Player Focused Pipeline - Stampedecon 2015
Riot Games - Player Focused Pipeline - Stampedecon 2015sean_seannery
 
Creating a server side web app
Creating a server side web appCreating a server side web app
Creating a server side web appjeremyk23
 
TuleapCon2017 -Automating Jenkins build with Tuleap trackers
TuleapCon2017 -Automating Jenkins build with Tuleap trackersTuleapCon2017 -Automating Jenkins build with Tuleap trackers
TuleapCon2017 -Automating Jenkins build with Tuleap trackersTuleap
 
Autoscaling, Chef and New Relic
Autoscaling, Chef and New RelicAutoscaling, Chef and New Relic
Autoscaling, Chef and New RelicFernando Honig
 
How to Build a Compelling Apple Watch App
How to Build a Compelling Apple Watch AppHow to Build a Compelling Apple Watch App
How to Build a Compelling Apple Watch AppKristina Fox
 
TuleapCon2017-Tuleap-Tracker-Query-Langage
TuleapCon2017-Tuleap-Tracker-Query-LangageTuleapCon2017-Tuleap-Tracker-Query-Langage
TuleapCon2017-Tuleap-Tracker-Query-LangageTuleap
 
Apple Watch In-Depth
Apple Watch In-DepthApple Watch In-Depth
Apple Watch In-DepthKristina Fox
 
Building elements and experiences at Net-A-Porter
Building elements and experiences at Net-A-PorterBuilding elements and experiences at Net-A-Porter
Building elements and experiences at Net-A-PorterRobin Glen
 

Tendances (20)

Novidades Angular 4.x e CLI
Novidades Angular 4.x e CLI Novidades Angular 4.x e CLI
Novidades Angular 4.x e CLI
 
Apache Flink Community Update March 2015
Apache Flink Community Update March 2015Apache Flink Community Update March 2015
Apache Flink Community Update March 2015
 
Cloud-Native Batch Processing with Spring Batch 4
Cloud-Native Batch Processing with Spring Batch 4Cloud-Native Batch Processing with Spring Batch 4
Cloud-Native Batch Processing with Spring Batch 4
 
Building Web APIs with Elixir
Building Web APIs with ElixirBuilding Web APIs with Elixir
Building Web APIs with Elixir
 
How to Build a Compelling Apple Watch App/Complication
How to Build a Compelling Apple Watch App/ComplicationHow to Build a Compelling Apple Watch App/Complication
How to Build a Compelling Apple Watch App/Complication
 
Building for, perceiving and measuring performance for mobile web
Building for, perceiving and measuring performance for mobile webBuilding for, perceiving and measuring performance for mobile web
Building for, perceiving and measuring performance for mobile web
 
The basic process of Ruby on Rails
The basic process of Ruby on RailsThe basic process of Ruby on Rails
The basic process of Ruby on Rails
 
Cloud Native Batch Processing
Cloud Native Batch ProcessingCloud Native Batch Processing
Cloud Native Batch Processing
 
Selenium-4
Selenium-4Selenium-4
Selenium-4
 
EAIESB_OracleFusion_WeblogicInstallation
EAIESB_OracleFusion_WeblogicInstallationEAIESB_OracleFusion_WeblogicInstallation
EAIESB_OracleFusion_WeblogicInstallation
 
Riot Games - Player Focused Pipeline - Stampedecon 2015
Riot Games - Player Focused Pipeline - Stampedecon 2015Riot Games - Player Focused Pipeline - Stampedecon 2015
Riot Games - Player Focused Pipeline - Stampedecon 2015
 
Creating a server side web app
Creating a server side web appCreating a server side web app
Creating a server side web app
 
Akkurate Akka
Akkurate AkkaAkkurate Akka
Akkurate Akka
 
TuleapCon2017 -Automating Jenkins build with Tuleap trackers
TuleapCon2017 -Automating Jenkins build with Tuleap trackersTuleapCon2017 -Automating Jenkins build with Tuleap trackers
TuleapCon2017 -Automating Jenkins build with Tuleap trackers
 
Autoscaling, Chef and New Relic
Autoscaling, Chef and New RelicAutoscaling, Chef and New Relic
Autoscaling, Chef and New Relic
 
How to Build a Compelling Apple Watch App
How to Build a Compelling Apple Watch AppHow to Build a Compelling Apple Watch App
How to Build a Compelling Apple Watch App
 
TuleapCon2017-Tuleap-Tracker-Query-Langage
TuleapCon2017-Tuleap-Tracker-Query-LangageTuleapCon2017-Tuleap-Tracker-Query-Langage
TuleapCon2017-Tuleap-Tracker-Query-Langage
 
Naked in the Library 2011 KLA Presentation
Naked in the Library 2011 KLA PresentationNaked in the Library 2011 KLA Presentation
Naked in the Library 2011 KLA Presentation
 
Apple Watch In-Depth
Apple Watch In-DepthApple Watch In-Depth
Apple Watch In-Depth
 
Building elements and experiences at Net-A-Porter
Building elements and experiences at Net-A-PorterBuilding elements and experiences at Net-A-Porter
Building elements and experiences at Net-A-Porter
 

Similaire à Phoenix for Rubyists - Rubyconf Brazil 2016

Apache Solr Changes the Way You Build Sites
Apache Solr Changes the Way You Build SitesApache Solr Changes the Way You Build Sites
Apache Solr Changes the Way You Build SitesPeter
 
Write Once, Run Everywhere
Write Once, Run EverywhereWrite Once, Run Everywhere
Write Once, Run EverywhereMike North
 
A Cloud Journey - Move to the Oracle Cloud
A Cloud Journey - Move to the Oracle CloudA Cloud Journey - Move to the Oracle Cloud
A Cloud Journey - Move to the Oracle CloudMarkus Michalewicz
 
Lessons Learned: From Java EE to Spring Cloud in the context of Activiti OSS
Lessons Learned: From Java EE to Spring Cloud in the context of Activiti OSSLessons Learned: From Java EE to Spring Cloud in the context of Activiti OSS
Lessons Learned: From Java EE to Spring Cloud in the context of Activiti OSSMauricio (Salaboy) Salatino
 
Deploying Next Gen Systems with Zero Downtime
Deploying Next Gen Systems with Zero DowntimeDeploying Next Gen Systems with Zero Downtime
Deploying Next Gen Systems with Zero DowntimeTwilio Inc
 
Scaling your apps with Kubernetes and Docker - TheConf 2018
Scaling your apps with Kubernetes and Docker - TheConf 2018Scaling your apps with Kubernetes and Docker - TheConf 2018
Scaling your apps with Kubernetes and Docker - TheConf 2018Erick Wendel
 
Master the New Core of Drupal 8 Now: with Symfony and Silex
Master the New Core of Drupal 8 Now: with Symfony and SilexMaster the New Core of Drupal 8 Now: with Symfony and Silex
Master the New Core of Drupal 8 Now: with Symfony and SilexRyan Weaver
 
Politics Ain’t Beanbag: Using APEX, ML, and GeoCoding In a Modern Election Ca...
Politics Ain’t Beanbag: Using APEX, ML, and GeoCoding In a Modern Election Ca...Politics Ain’t Beanbag: Using APEX, ML, and GeoCoding In a Modern Election Ca...
Politics Ain’t Beanbag: Using APEX, ML, and GeoCoding In a Modern Election Ca...Jim Czuprynski
 
Streaming to a New Jakarta EE
Streaming to a New Jakarta EEStreaming to a New Jakarta EE
Streaming to a New Jakarta EEJ On The Beach
 
Streaming to a new Jakarta EE
Streaming to a new Jakarta EEStreaming to a new Jakarta EE
Streaming to a new Jakarta EEMarkus Eisele
 
Integrating Search Driven Content in SharePoint 2013/2016/O365
Integrating Search Driven Content in SharePoint 2013/2016/O365Integrating Search Driven Content in SharePoint 2013/2016/O365
Integrating Search Driven Content in SharePoint 2013/2016/O365Eric Overfield
 
CI/CD and Asset Serving for Single Page Apps
CI/CD and Asset Serving for Single Page AppsCI/CD and Asset Serving for Single Page Apps
CI/CD and Asset Serving for Single Page AppsMike North
 
Atmosphere 2016 - Diptanu Choudhury - Taming the public clouds with nomad
Atmosphere 2016 - Diptanu Choudhury - Taming the public clouds with nomadAtmosphere 2016 - Diptanu Choudhury - Taming the public clouds with nomad
Atmosphere 2016 - Diptanu Choudhury - Taming the public clouds with nomadPROIDEA
 
Lessons Learnt From Working With Rails
Lessons Learnt From Working With RailsLessons Learnt From Working With Rails
Lessons Learnt From Working With Railsmartinbtt
 
APEX Alpe Adria Mike Hichwa Keynote April 11th 2019- Zagreb
APEX Alpe Adria Mike Hichwa Keynote April 11th 2019- ZagrebAPEX Alpe Adria Mike Hichwa Keynote April 11th 2019- Zagreb
APEX Alpe Adria Mike Hichwa Keynote April 11th 2019- ZagrebMichael Hichwa
 
_Python Ireland Meetup - Serverless ML - Dowling.pdf
_Python Ireland Meetup - Serverless ML - Dowling.pdf_Python Ireland Meetup - Serverless ML - Dowling.pdf
_Python Ireland Meetup - Serverless ML - Dowling.pdfJim Dowling
 
Chicago AWS user group meetup - May 2014 at Cohesive
Chicago AWS user group meetup - May 2014 at CohesiveChicago AWS user group meetup - May 2014 at Cohesive
Chicago AWS user group meetup - May 2014 at CohesiveCloudCamp Chicago
 
Chicago AWS user group meetup - May 2014 at Cohesive
Chicago AWS user group meetup - May 2014 at CohesiveChicago AWS user group meetup - May 2014 at Cohesive
Chicago AWS user group meetup - May 2014 at CohesiveAWS Chicago
 
How Shutl Delivers Even Faster Using Neo4J
How Shutl Delivers Even Faster Using Neo4JHow Shutl Delivers Even Faster Using Neo4J
How Shutl Delivers Even Faster Using Neo4JC4Media
 

Similaire à Phoenix for Rubyists - Rubyconf Brazil 2016 (20)

slides-students-C03.pdf
slides-students-C03.pdfslides-students-C03.pdf
slides-students-C03.pdf
 
Apache Solr Changes the Way You Build Sites
Apache Solr Changes the Way You Build SitesApache Solr Changes the Way You Build Sites
Apache Solr Changes the Way You Build Sites
 
Write Once, Run Everywhere
Write Once, Run EverywhereWrite Once, Run Everywhere
Write Once, Run Everywhere
 
A Cloud Journey - Move to the Oracle Cloud
A Cloud Journey - Move to the Oracle CloudA Cloud Journey - Move to the Oracle Cloud
A Cloud Journey - Move to the Oracle Cloud
 
Lessons Learned: From Java EE to Spring Cloud in the context of Activiti OSS
Lessons Learned: From Java EE to Spring Cloud in the context of Activiti OSSLessons Learned: From Java EE to Spring Cloud in the context of Activiti OSS
Lessons Learned: From Java EE to Spring Cloud in the context of Activiti OSS
 
Deploying Next Gen Systems with Zero Downtime
Deploying Next Gen Systems with Zero DowntimeDeploying Next Gen Systems with Zero Downtime
Deploying Next Gen Systems with Zero Downtime
 
Scaling your apps with Kubernetes and Docker - TheConf 2018
Scaling your apps with Kubernetes and Docker - TheConf 2018Scaling your apps with Kubernetes and Docker - TheConf 2018
Scaling your apps with Kubernetes and Docker - TheConf 2018
 
Master the New Core of Drupal 8 Now: with Symfony and Silex
Master the New Core of Drupal 8 Now: with Symfony and SilexMaster the New Core of Drupal 8 Now: with Symfony and Silex
Master the New Core of Drupal 8 Now: with Symfony and Silex
 
Politics Ain’t Beanbag: Using APEX, ML, and GeoCoding In a Modern Election Ca...
Politics Ain’t Beanbag: Using APEX, ML, and GeoCoding In a Modern Election Ca...Politics Ain’t Beanbag: Using APEX, ML, and GeoCoding In a Modern Election Ca...
Politics Ain’t Beanbag: Using APEX, ML, and GeoCoding In a Modern Election Ca...
 
Streaming to a New Jakarta EE
Streaming to a New Jakarta EEStreaming to a New Jakarta EE
Streaming to a New Jakarta EE
 
Streaming to a new Jakarta EE
Streaming to a new Jakarta EEStreaming to a new Jakarta EE
Streaming to a new Jakarta EE
 
Integrating Search Driven Content in SharePoint 2013/2016/O365
Integrating Search Driven Content in SharePoint 2013/2016/O365Integrating Search Driven Content in SharePoint 2013/2016/O365
Integrating Search Driven Content in SharePoint 2013/2016/O365
 
CI/CD and Asset Serving for Single Page Apps
CI/CD and Asset Serving for Single Page AppsCI/CD and Asset Serving for Single Page Apps
CI/CD and Asset Serving for Single Page Apps
 
Atmosphere 2016 - Diptanu Choudhury - Taming the public clouds with nomad
Atmosphere 2016 - Diptanu Choudhury - Taming the public clouds with nomadAtmosphere 2016 - Diptanu Choudhury - Taming the public clouds with nomad
Atmosphere 2016 - Diptanu Choudhury - Taming the public clouds with nomad
 
Lessons Learnt From Working With Rails
Lessons Learnt From Working With RailsLessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
 
APEX Alpe Adria Mike Hichwa Keynote April 11th 2019- Zagreb
APEX Alpe Adria Mike Hichwa Keynote April 11th 2019- ZagrebAPEX Alpe Adria Mike Hichwa Keynote April 11th 2019- Zagreb
APEX Alpe Adria Mike Hichwa Keynote April 11th 2019- Zagreb
 
_Python Ireland Meetup - Serverless ML - Dowling.pdf
_Python Ireland Meetup - Serverless ML - Dowling.pdf_Python Ireland Meetup - Serverless ML - Dowling.pdf
_Python Ireland Meetup - Serverless ML - Dowling.pdf
 
Chicago AWS user group meetup - May 2014 at Cohesive
Chicago AWS user group meetup - May 2014 at CohesiveChicago AWS user group meetup - May 2014 at Cohesive
Chicago AWS user group meetup - May 2014 at Cohesive
 
Chicago AWS user group meetup - May 2014 at Cohesive
Chicago AWS user group meetup - May 2014 at CohesiveChicago AWS user group meetup - May 2014 at Cohesive
Chicago AWS user group meetup - May 2014 at Cohesive
 
How Shutl Delivers Even Faster Using Neo4J
How Shutl Delivers Even Faster Using Neo4JHow Shutl Delivers Even Faster Using Neo4J
How Shutl Delivers Even Faster Using Neo4J
 

Plus de Mike North

Web Security: A Primer for Developers
Web Security: A Primer for DevelopersWeb Security: A Primer for Developers
Web Security: A Primer for DevelopersMike North
 
A Debugging Adventure: Journey through Ember.js Glue
A Debugging Adventure: Journey through Ember.js GlueA Debugging Adventure: Journey through Ember.js Glue
A Debugging Adventure: Journey through Ember.js GlueMike North
 
Anatomy of a Progressive Web App
Anatomy of a Progressive Web AppAnatomy of a Progressive Web App
Anatomy of a Progressive Web AppMike North
 
Web and Native: Bridging the Gap
Web and Native: Bridging the GapWeb and Native: Bridging the Gap
Web and Native: Bridging the GapMike North
 
The Road to Native Web Components
The Road to Native Web ComponentsThe Road to Native Web Components
The Road to Native Web ComponentsMike North
 
Enemy of the state
Enemy of the stateEnemy of the state
Enemy of the stateMike North
 
Phoenix for Rubyists
Phoenix for RubyistsPhoenix for Rubyists
Phoenix for RubyistsMike North
 
Write Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js MunichWrite Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js MunichMike North
 
Delightful UX for Distributed Systems
Delightful UX for Distributed SystemsDelightful UX for Distributed Systems
Delightful UX for Distributed SystemsMike North
 
Modern, Scalable, Ambitious apps with Ember.js
Modern, Scalable, Ambitious apps with Ember.jsModern, Scalable, Ambitious apps with Ember.js
Modern, Scalable, Ambitious apps with Ember.jsMike North
 
Ember addons, served three ways
Ember addons, served three waysEmber addons, served three ways
Ember addons, served three waysMike North
 
User percieved performance
User percieved performanceUser percieved performance
User percieved performanceMike North
 
User-percieved performance
User-percieved performanceUser-percieved performance
User-percieved performanceMike North
 
Compose all the things (Wicked Good Ember 2015)
Compose all the things (Wicked Good Ember 2015)Compose all the things (Wicked Good Ember 2015)
Compose all the things (Wicked Good Ember 2015)Mike North
 
Async JavaScript in ES7
Async JavaScript in ES7Async JavaScript in ES7
Async JavaScript in ES7Mike North
 
Test like a pro with Ember.js
Test like a pro with Ember.jsTest like a pro with Ember.js
Test like a pro with Ember.jsMike North
 
Modern Web UI - Web components
Modern Web UI - Web componentsModern Web UI - Web components
Modern Web UI - Web componentsMike North
 

Plus de Mike North (17)

Web Security: A Primer for Developers
Web Security: A Primer for DevelopersWeb Security: A Primer for Developers
Web Security: A Primer for Developers
 
A Debugging Adventure: Journey through Ember.js Glue
A Debugging Adventure: Journey through Ember.js GlueA Debugging Adventure: Journey through Ember.js Glue
A Debugging Adventure: Journey through Ember.js Glue
 
Anatomy of a Progressive Web App
Anatomy of a Progressive Web AppAnatomy of a Progressive Web App
Anatomy of a Progressive Web App
 
Web and Native: Bridging the Gap
Web and Native: Bridging the GapWeb and Native: Bridging the Gap
Web and Native: Bridging the Gap
 
The Road to Native Web Components
The Road to Native Web ComponentsThe Road to Native Web Components
The Road to Native Web Components
 
Enemy of the state
Enemy of the stateEnemy of the state
Enemy of the state
 
Phoenix for Rubyists
Phoenix for RubyistsPhoenix for Rubyists
Phoenix for Rubyists
 
Write Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js MunichWrite Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js Munich
 
Delightful UX for Distributed Systems
Delightful UX for Distributed SystemsDelightful UX for Distributed Systems
Delightful UX for Distributed Systems
 
Modern, Scalable, Ambitious apps with Ember.js
Modern, Scalable, Ambitious apps with Ember.jsModern, Scalable, Ambitious apps with Ember.js
Modern, Scalable, Ambitious apps with Ember.js
 
Ember addons, served three ways
Ember addons, served three waysEmber addons, served three ways
Ember addons, served three ways
 
User percieved performance
User percieved performanceUser percieved performance
User percieved performance
 
User-percieved performance
User-percieved performanceUser-percieved performance
User-percieved performance
 
Compose all the things (Wicked Good Ember 2015)
Compose all the things (Wicked Good Ember 2015)Compose all the things (Wicked Good Ember 2015)
Compose all the things (Wicked Good Ember 2015)
 
Async JavaScript in ES7
Async JavaScript in ES7Async JavaScript in ES7
Async JavaScript in ES7
 
Test like a pro with Ember.js
Test like a pro with Ember.jsTest like a pro with Ember.js
Test like a pro with Ember.js
 
Modern Web UI - Web components
Modern Web UI - Web componentsModern Web UI - Web components
Modern Web UI - Web components
 

Dernier

ASME BPVC 2023 Section I para leer y entender
ASME BPVC 2023 Section I para leer y entenderASME BPVC 2023 Section I para leer y entender
ASME BPVC 2023 Section I para leer y entenderjuancarlos286641
 
Clutches and brkesSelect any 3 position random motion out of real world and d...
Clutches and brkesSelect any 3 position random motion out of real world and d...Clutches and brkesSelect any 3 position random motion out of real world and d...
Clutches and brkesSelect any 3 position random motion out of real world and d...sahb78428
 
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...amrabdallah9
 
Renewable Energy & Entrepreneurship Workshop_21Feb2024.pdf
Renewable Energy & Entrepreneurship Workshop_21Feb2024.pdfRenewable Energy & Entrepreneurship Workshop_21Feb2024.pdf
Renewable Energy & Entrepreneurship Workshop_21Feb2024.pdfodunowoeminence2019
 
Best-NO1 Best Rohani Amil In Lahore Kala Ilam In Lahore Kala Jadu Amil In Lah...
Best-NO1 Best Rohani Amil In Lahore Kala Ilam In Lahore Kala Jadu Amil In Lah...Best-NO1 Best Rohani Amil In Lahore Kala Ilam In Lahore Kala Jadu Amil In Lah...
Best-NO1 Best Rohani Amil In Lahore Kala Ilam In Lahore Kala Jadu Amil In Lah...Amil baba
 
How to Write a Good Scientific Paper.pdf
How to Write a Good Scientific Paper.pdfHow to Write a Good Scientific Paper.pdf
How to Write a Good Scientific Paper.pdfRedhwan Qasem Shaddad
 
Landsman converter for power factor improvement
Landsman converter for power factor improvementLandsman converter for power factor improvement
Landsman converter for power factor improvementVijayMuni2
 
IT3401-WEB ESSENTIALS PRESENTATIONS.pptx
IT3401-WEB ESSENTIALS PRESENTATIONS.pptxIT3401-WEB ESSENTIALS PRESENTATIONS.pptx
IT3401-WEB ESSENTIALS PRESENTATIONS.pptxSAJITHABANUS
 
Graphics Primitives and CG Display Devices
Graphics Primitives and CG Display DevicesGraphics Primitives and CG Display Devices
Graphics Primitives and CG Display DevicesDIPIKA83
 
Guardians and Glitches: Navigating the Duality of Gen AI in AppSec
Guardians and Glitches: Navigating the Duality of Gen AI in AppSecGuardians and Glitches: Navigating the Duality of Gen AI in AppSec
Guardians and Glitches: Navigating the Duality of Gen AI in AppSecTrupti Shiralkar, CISSP
 
UNIT4_ESD_wfffffggggggggggggith_ARM.pptx
UNIT4_ESD_wfffffggggggggggggith_ARM.pptxUNIT4_ESD_wfffffggggggggggggith_ARM.pptx
UNIT4_ESD_wfffffggggggggggggith_ARM.pptxrealme6igamerr
 
nvidia AI-gtc 2024 partial slide deck.pptx
nvidia AI-gtc 2024 partial slide deck.pptxnvidia AI-gtc 2024 partial slide deck.pptx
nvidia AI-gtc 2024 partial slide deck.pptxjasonsedano2
 
Dev.bg DevOps March 2024 Monitoring & Logging
Dev.bg DevOps March 2024 Monitoring & LoggingDev.bg DevOps March 2024 Monitoring & Logging
Dev.bg DevOps March 2024 Monitoring & LoggingMarian Marinov
 
Transforming Process Safety Management: Challenges, Benefits, and Transition ...
Transforming Process Safety Management: Challenges, Benefits, and Transition ...Transforming Process Safety Management: Challenges, Benefits, and Transition ...
Transforming Process Safety Management: Challenges, Benefits, and Transition ...soginsider
 
Vertical- Machining - Center - VMC -LMW-Machine-Tool-Division.pptx
Vertical- Machining - Center - VMC -LMW-Machine-Tool-Division.pptxVertical- Machining - Center - VMC -LMW-Machine-Tool-Division.pptx
Vertical- Machining - Center - VMC -LMW-Machine-Tool-Division.pptxLMW Machine Tool Division
 
Lecture 1: Basics of trigonometry (surveying)
Lecture 1: Basics of trigonometry (surveying)Lecture 1: Basics of trigonometry (surveying)
Lecture 1: Basics of trigonometry (surveying)Bahzad5
 
دليل تجارب الاسفلت المختبرية - Asphalt Experiments Guide Laboratory
دليل تجارب الاسفلت المختبرية - Asphalt Experiments Guide Laboratoryدليل تجارب الاسفلت المختبرية - Asphalt Experiments Guide Laboratory
دليل تجارب الاسفلت المختبرية - Asphalt Experiments Guide LaboratoryBahzad5
 
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdf
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdfSummer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdf
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdfNaveenVerma126
 

Dernier (20)

ASME BPVC 2023 Section I para leer y entender
ASME BPVC 2023 Section I para leer y entenderASME BPVC 2023 Section I para leer y entender
ASME BPVC 2023 Section I para leer y entender
 
Lecture 2 .pptx
Lecture 2                            .pptxLecture 2                            .pptx
Lecture 2 .pptx
 
Clutches and brkesSelect any 3 position random motion out of real world and d...
Clutches and brkesSelect any 3 position random motion out of real world and d...Clutches and brkesSelect any 3 position random motion out of real world and d...
Clutches and brkesSelect any 3 position random motion out of real world and d...
 
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...
 
Renewable Energy & Entrepreneurship Workshop_21Feb2024.pdf
Renewable Energy & Entrepreneurship Workshop_21Feb2024.pdfRenewable Energy & Entrepreneurship Workshop_21Feb2024.pdf
Renewable Energy & Entrepreneurship Workshop_21Feb2024.pdf
 
Best-NO1 Best Rohani Amil In Lahore Kala Ilam In Lahore Kala Jadu Amil In Lah...
Best-NO1 Best Rohani Amil In Lahore Kala Ilam In Lahore Kala Jadu Amil In Lah...Best-NO1 Best Rohani Amil In Lahore Kala Ilam In Lahore Kala Jadu Amil In Lah...
Best-NO1 Best Rohani Amil In Lahore Kala Ilam In Lahore Kala Jadu Amil In Lah...
 
How to Write a Good Scientific Paper.pdf
How to Write a Good Scientific Paper.pdfHow to Write a Good Scientific Paper.pdf
How to Write a Good Scientific Paper.pdf
 
Landsman converter for power factor improvement
Landsman converter for power factor improvementLandsman converter for power factor improvement
Landsman converter for power factor improvement
 
IT3401-WEB ESSENTIALS PRESENTATIONS.pptx
IT3401-WEB ESSENTIALS PRESENTATIONS.pptxIT3401-WEB ESSENTIALS PRESENTATIONS.pptx
IT3401-WEB ESSENTIALS PRESENTATIONS.pptx
 
Graphics Primitives and CG Display Devices
Graphics Primitives and CG Display DevicesGraphics Primitives and CG Display Devices
Graphics Primitives and CG Display Devices
 
Guardians and Glitches: Navigating the Duality of Gen AI in AppSec
Guardians and Glitches: Navigating the Duality of Gen AI in AppSecGuardians and Glitches: Navigating the Duality of Gen AI in AppSec
Guardians and Glitches: Navigating the Duality of Gen AI in AppSec
 
UNIT4_ESD_wfffffggggggggggggith_ARM.pptx
UNIT4_ESD_wfffffggggggggggggith_ARM.pptxUNIT4_ESD_wfffffggggggggggggith_ARM.pptx
UNIT4_ESD_wfffffggggggggggggith_ARM.pptx
 
nvidia AI-gtc 2024 partial slide deck.pptx
nvidia AI-gtc 2024 partial slide deck.pptxnvidia AI-gtc 2024 partial slide deck.pptx
nvidia AI-gtc 2024 partial slide deck.pptx
 
計劃趕得上變化
計劃趕得上變化計劃趕得上變化
計劃趕得上變化
 
Dev.bg DevOps March 2024 Monitoring & Logging
Dev.bg DevOps March 2024 Monitoring & LoggingDev.bg DevOps March 2024 Monitoring & Logging
Dev.bg DevOps March 2024 Monitoring & Logging
 
Transforming Process Safety Management: Challenges, Benefits, and Transition ...
Transforming Process Safety Management: Challenges, Benefits, and Transition ...Transforming Process Safety Management: Challenges, Benefits, and Transition ...
Transforming Process Safety Management: Challenges, Benefits, and Transition ...
 
Vertical- Machining - Center - VMC -LMW-Machine-Tool-Division.pptx
Vertical- Machining - Center - VMC -LMW-Machine-Tool-Division.pptxVertical- Machining - Center - VMC -LMW-Machine-Tool-Division.pptx
Vertical- Machining - Center - VMC -LMW-Machine-Tool-Division.pptx
 
Lecture 1: Basics of trigonometry (surveying)
Lecture 1: Basics of trigonometry (surveying)Lecture 1: Basics of trigonometry (surveying)
Lecture 1: Basics of trigonometry (surveying)
 
دليل تجارب الاسفلت المختبرية - Asphalt Experiments Guide Laboratory
دليل تجارب الاسفلت المختبرية - Asphalt Experiments Guide Laboratoryدليل تجارب الاسفلت المختبرية - Asphalt Experiments Guide Laboratory
دليل تجارب الاسفلت المختبرية - Asphalt Experiments Guide Laboratory
 
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdf
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdfSummer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdf
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdf
 

Phoenix for Rubyists - Rubyconf Brazil 2016