SlideShare a Scribd company logo
ULTIMATE DX USING JS AS
A PRIMARY LANGUAGE
Fatos Hoti / @hotifatos
WARNINGS!
Who am I?
- Fatos Hoti
- Pula, Croatia (Pola)
- Berlin, Germany
- Writing awful code that from time to time performs really good for cca. 10 years
- PHP developer who fell in love with JS
- Ready to take our love to the next level
As I said...
- I love JS
- I love the web
- Always wanted to do mobile, but….
- Java + OBJ-C
- Xcode + Android Studio
- Bad DX
What’s this DX sourcery you speak of...
- App / page reloading
- Typo breaking
- 100000000000 grunt/gulp tasks (JS)
- App recompling
- Doing stuff like it’s 2001
- In 2016 we can have : hot reloading, light config bundling, fast builds, fast
development iterations, CI...
- At least in the web…. Or is it JUST in the web
What tools are we going to use
- Express
- Socket.io
- ReactJS
- React-native
- Redux
- Babel
- Flexbox model
- Expect, mocha, chai
- ImmutableJS
Express & socket.io
- Universal rendering
- Real-time communication
- All stuff backend
React & React-Native
- View layer for all our clients
- React vs. react-native
- Why is react-native a good thing
- Why it’s different
React & React-Native
- NPM INSTALL WHATEVER
- TOTALLY ASYNC
- OPEN SOURCE COMPONENTS
- BLAZING FAST COMMUNITY
- OVER THE AIR UPDATES
- EXPOSING NATIVE MODULES
- NATIVE APIs
- NATIVE UI, MODULES, COMPONENTS...
Talking to native code
- http://facebook.github.io/react-native/docs/native-modules-ios.html
- http://facebook.github.io/react-native/docs/native-components-ios.html
- http://facebook.github.io/react-native/docs/native-modules-android.html
- http://facebook.github.io/react-native/docs/native-components-android.html
Redux
- Predictable container for JS apps
- Redux vs. Flux
- Data layer for our app
- Used in client-side as well as in server-side
- Small API
- Extra light
- Very very testable (Predictable)
- Awesome dev tools
Flexbox
- New and better way to write css
- SASS, stylus for web
- StyleSheet for mobile
- https://github.com/MicheleBertoli/css-in-js
Webpack
- The all mighty bundler of all things static
- Js, images, css (all flavors), json….
- Webpack-dev-server
- Building our web app
Babel
- Transpiler of all things JS
- Stage-0, react, es2015
- Classes, spread operators, fat arrow functions… everywhere
- Ability to target platforms
Testing
- Mocha, chai
- Expect (https://github.com/mjackson/expect)
- React-test-utils (https://facebook.github.io/react/docs/test-utils.html)
- Jest (http://facebook.github.io/jest/)
- Comes natural with redux
- Easiest TDD approach I’ve seen
How are we accomplishing it
- Higher order components
- Presentational / Dump platform specific components
- Platform specific loading
- Connection to the redux store
The good
- Great fun
- Good DX
- Fast(er) development
- Taking things to a new level
- Code reusability
- Skills reusability
- Covering all things internet
The bad
- Dependencies
- A lot of bad advice on the web
- Easy to get outdated
- No best practices
DEMO TIME
Where to go next?
- http://reactnative.com/
- http://docs.apphub.io/
- http://rnplay.org/
- https://github.com/GordyD/3ree
- http://www.flexboxdefense.com/
- https://getsiphon.com/
- http://graphql.org/
- https://facebook.github.io/relay/
- https://github.com/tosFa/react-cross-platform-boardgame-example
Recap
- Same DX in web and mobile
- Skill reusability
- Code reusability / Cross platform code
- Fast development
- One team to rule it all
- Money / Time saver
- Universal JS is no longer “just” server and browser
- Full stack in one language / ecosystem
- Coding is fun
Thank you
@hotifatos

More Related Content

What's hot

Introduction to Web Technology Stacks
Introduction to Web Technology StacksIntroduction to Web Technology Stacks
Introduction to Web Technology Stacks
Prakarsh -
 
N tier web applications
N tier web applicationsN tier web applications
N tier web applications
Mike Feltman
 
mod_php vs FastCGI vs FPM vs CLI
mod_php vs FastCGI vs FPM vs CLImod_php vs FastCGI vs FPM vs CLI
mod_php vs FastCGI vs FPM vs CLI
Jacques Woodcock
 
Php Training in Chandigarh
Php Training in ChandigarhPhp Training in Chandigarh
Php Training in Chandigarh
Sheetal Sharma
 
Elm 101
Elm 101Elm 101
Unobtrusive js
Unobtrusive jsUnobtrusive js
Unobtrusive js
bretticus
 
Java script202
Java script202Java script202
Java script202
Wasiq Zia
 
Language Barriers
Language BarriersLanguage Barriers
Language Barriers
Cristian Vat
 
Feltman js4 vfp
Feltman js4 vfpFeltman js4 vfp
Feltman js4 vfp
Mike Feltman
 
Golang #5: To Go or not to Go
Golang #5: To Go or not to GoGolang #5: To Go or not to Go
Golang #5: To Go or not to Go
Oliver N
 
Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...
Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...
Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...
Marie Smith
 
PHP and node.js Together
PHP and node.js TogetherPHP and node.js Together
PHP and node.js Together
Chris Tankersley
 
Developing cross platform desktop application with Ruby
Developing cross platform desktop application with RubyDeveloping cross platform desktop application with Ruby
Developing cross platform desktop application with Ruby
Anis Ahmad
 
WebAssembly and .NET
WebAssembly and .NETWebAssembly and .NET
WebAssembly and .NET
Joanna Lamch
 
Webpack & EcmaScript 6 (Webelement #32)
Webpack & EcmaScript 6 (Webelement #32)Webpack & EcmaScript 6 (Webelement #32)
Webpack & EcmaScript 6 (Webelement #32)
srigi
 
Ruby On Rails Presentation
Ruby On Rails PresentationRuby On Rails Presentation
Ruby On Rails Presentation
ChanHan Hy
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
Momentum Design Lab
 
Ruby On Rails Basics
Ruby On Rails BasicsRuby On Rails Basics
Ruby On Rails Basics
Amit Solanki
 
Introduction to Ruby on Rails
Introduction to Ruby on RailsIntroduction to Ruby on Rails
Introduction to Ruby on Rails
Amit Patel
 
Java script for foxpro developers
Java script for foxpro developersJava script for foxpro developers
Java script for foxpro developers
Mike Feltman
 

What's hot (20)

Introduction to Web Technology Stacks
Introduction to Web Technology StacksIntroduction to Web Technology Stacks
Introduction to Web Technology Stacks
 
N tier web applications
N tier web applicationsN tier web applications
N tier web applications
 
mod_php vs FastCGI vs FPM vs CLI
mod_php vs FastCGI vs FPM vs CLImod_php vs FastCGI vs FPM vs CLI
mod_php vs FastCGI vs FPM vs CLI
 
Php Training in Chandigarh
Php Training in ChandigarhPhp Training in Chandigarh
Php Training in Chandigarh
 
Elm 101
Elm 101Elm 101
Elm 101
 
Unobtrusive js
Unobtrusive jsUnobtrusive js
Unobtrusive js
 
Java script202
Java script202Java script202
Java script202
 
Language Barriers
Language BarriersLanguage Barriers
Language Barriers
 
Feltman js4 vfp
Feltman js4 vfpFeltman js4 vfp
Feltman js4 vfp
 
Golang #5: To Go or not to Go
Golang #5: To Go or not to GoGolang #5: To Go or not to Go
Golang #5: To Go or not to Go
 
Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...
Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...
Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...
 
PHP and node.js Together
PHP and node.js TogetherPHP and node.js Together
PHP and node.js Together
 
Developing cross platform desktop application with Ruby
Developing cross platform desktop application with RubyDeveloping cross platform desktop application with Ruby
Developing cross platform desktop application with Ruby
 
WebAssembly and .NET
WebAssembly and .NETWebAssembly and .NET
WebAssembly and .NET
 
Webpack & EcmaScript 6 (Webelement #32)
Webpack & EcmaScript 6 (Webelement #32)Webpack & EcmaScript 6 (Webelement #32)
Webpack & EcmaScript 6 (Webelement #32)
 
Ruby On Rails Presentation
Ruby On Rails PresentationRuby On Rails Presentation
Ruby On Rails Presentation
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
Ruby On Rails Basics
Ruby On Rails BasicsRuby On Rails Basics
Ruby On Rails Basics
 
Introduction to Ruby on Rails
Introduction to Ruby on RailsIntroduction to Ruby on Rails
Introduction to Ruby on Rails
 
Java script for foxpro developers
Java script for foxpro developersJava script for foxpro developers
Java script for foxpro developers
 

Similar to [4developers2016] The ultimate mobile DX using JS as a primary language (Fatos Hoti)

Donald Ferguson - Old Programmers Can Learn New Tricks
Donald Ferguson - Old Programmers Can Learn New TricksDonald Ferguson - Old Programmers Can Learn New Tricks
Donald Ferguson - Old Programmers Can Learn New Tricks
ServerlessConf
 
Expo - Zero to App.pptx
Expo - Zero to App.pptxExpo - Zero to App.pptx
Expo - Zero to App.pptx
😎 Anthony Kariuki
 
HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19
btopro
 
Introducing React to GraysOnline
Introducing React to GraysOnlineIntroducing React to GraysOnline
Introducing React to GraysOnline
Joseph Ni
 
Presentation of programming languages for beginners
Presentation of programming languages for beginnersPresentation of programming languages for beginners
Presentation of programming languages for beginners
Clement Levallois
 
Intro to appcelerator
Intro to appceleratorIntro to appcelerator
Intro to appcelerator
Dave Hudson
 
TRWResume-10-2016
TRWResume-10-2016TRWResume-10-2016
TRWResume-10-2016
Tommy Williams
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
Pierre Joye
 
HTML5 Can't Do That
HTML5 Can't Do ThatHTML5 Can't Do That
HTML5 Can't Do That
Nathan Smith
 
Flashback: QCon San Francisco 2012
Flashback: QCon San Francisco 2012Flashback: QCon San Francisco 2012
Flashback: QCon San Francisco 2012
Sergejus Barinovas
 
React Native A guide for front end developers
React Native A guide for front end developersReact Native A guide for front end developers
React Native A guide for front end developers
Arnold Camas
 
MEAN Stack - Google Developers Live 10/03/2013
MEAN Stack - Google Developers Live 10/03/2013MEAN Stack - Google Developers Live 10/03/2013
MEAN Stack - Google Developers Live 10/03/2013
Valeri Karpov
 
CVMaxSpoFormatIng
CVMaxSpoFormatIngCVMaxSpoFormatIng
CVMaxSpoFormatIng
Massimo Sposato
 
DSLs in JavaScript
DSLs in JavaScriptDSLs in JavaScript
DSLs in JavaScript
elliando dias
 
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
Codemotion
 
PHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the foolPHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the fool
Alessandro Cinelli (cirpo)
 
2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides
DuraSpace
 
Cross-Platform Mobile Development in Visual Studio
Cross-Platform Mobile Development in Visual StudioCross-Platform Mobile Development in Visual Studio
Cross-Platform Mobile Development in Visual Studio
bryan costanich
 
PHP is the King, nodejs is the Prince and Lua is the fool
PHP is the King, nodejs is the Prince and Lua is the foolPHP is the King, nodejs is the Prince and Lua is the fool
PHP is the King, nodejs is the Prince and Lua is the fool
Alessandro Cinelli (cirpo)
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :)
Sascha Sambale
 

Similar to [4developers2016] The ultimate mobile DX using JS as a primary language (Fatos Hoti) (20)

Donald Ferguson - Old Programmers Can Learn New Tricks
Donald Ferguson - Old Programmers Can Learn New TricksDonald Ferguson - Old Programmers Can Learn New Tricks
Donald Ferguson - Old Programmers Can Learn New Tricks
 
Expo - Zero to App.pptx
Expo - Zero to App.pptxExpo - Zero to App.pptx
Expo - Zero to App.pptx
 
HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19
 
Introducing React to GraysOnline
Introducing React to GraysOnlineIntroducing React to GraysOnline
Introducing React to GraysOnline
 
Presentation of programming languages for beginners
Presentation of programming languages for beginnersPresentation of programming languages for beginners
Presentation of programming languages for beginners
 
Intro to appcelerator
Intro to appceleratorIntro to appcelerator
Intro to appcelerator
 
TRWResume-10-2016
TRWResume-10-2016TRWResume-10-2016
TRWResume-10-2016
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
 
HTML5 Can't Do That
HTML5 Can't Do ThatHTML5 Can't Do That
HTML5 Can't Do That
 
Flashback: QCon San Francisco 2012
Flashback: QCon San Francisco 2012Flashback: QCon San Francisco 2012
Flashback: QCon San Francisco 2012
 
React Native A guide for front end developers
React Native A guide for front end developersReact Native A guide for front end developers
React Native A guide for front end developers
 
MEAN Stack - Google Developers Live 10/03/2013
MEAN Stack - Google Developers Live 10/03/2013MEAN Stack - Google Developers Live 10/03/2013
MEAN Stack - Google Developers Live 10/03/2013
 
CVMaxSpoFormatIng
CVMaxSpoFormatIngCVMaxSpoFormatIng
CVMaxSpoFormatIng
 
DSLs in JavaScript
DSLs in JavaScriptDSLs in JavaScript
DSLs in JavaScript
 
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
 
PHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the foolPHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the fool
 
2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides
 
Cross-Platform Mobile Development in Visual Studio
Cross-Platform Mobile Development in Visual StudioCross-Platform Mobile Development in Visual Studio
Cross-Platform Mobile Development in Visual Studio
 
PHP is the King, nodejs is the Prince and Lua is the fool
PHP is the King, nodejs is the Prince and Lua is the foolPHP is the King, nodejs is the Prince and Lua is the fool
PHP is the King, nodejs is the Prince and Lua is the fool
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :)
 

Recently uploaded

UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
jpupo2018
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
Postman
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 

Recently uploaded (20)

UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 

[4developers2016] The ultimate mobile DX using JS as a primary language (Fatos Hoti)

  • 1. ULTIMATE DX USING JS AS A PRIMARY LANGUAGE Fatos Hoti / @hotifatos
  • 3. Who am I? - Fatos Hoti - Pula, Croatia (Pola) - Berlin, Germany - Writing awful code that from time to time performs really good for cca. 10 years - PHP developer who fell in love with JS - Ready to take our love to the next level
  • 4. As I said... - I love JS - I love the web - Always wanted to do mobile, but…. - Java + OBJ-C - Xcode + Android Studio - Bad DX
  • 5. What’s this DX sourcery you speak of... - App / page reloading - Typo breaking - 100000000000 grunt/gulp tasks (JS) - App recompling - Doing stuff like it’s 2001 - In 2016 we can have : hot reloading, light config bundling, fast builds, fast development iterations, CI... - At least in the web…. Or is it JUST in the web
  • 6. What tools are we going to use - Express - Socket.io - ReactJS - React-native - Redux - Babel - Flexbox model - Expect, mocha, chai - ImmutableJS
  • 7. Express & socket.io - Universal rendering - Real-time communication - All stuff backend
  • 8. React & React-Native - View layer for all our clients - React vs. react-native - Why is react-native a good thing - Why it’s different
  • 9. React & React-Native - NPM INSTALL WHATEVER - TOTALLY ASYNC - OPEN SOURCE COMPONENTS - BLAZING FAST COMMUNITY - OVER THE AIR UPDATES - EXPOSING NATIVE MODULES - NATIVE APIs - NATIVE UI, MODULES, COMPONENTS...
  • 10. Talking to native code - http://facebook.github.io/react-native/docs/native-modules-ios.html - http://facebook.github.io/react-native/docs/native-components-ios.html - http://facebook.github.io/react-native/docs/native-modules-android.html - http://facebook.github.io/react-native/docs/native-components-android.html
  • 11. Redux - Predictable container for JS apps - Redux vs. Flux - Data layer for our app - Used in client-side as well as in server-side - Small API - Extra light - Very very testable (Predictable) - Awesome dev tools
  • 12. Flexbox - New and better way to write css - SASS, stylus for web - StyleSheet for mobile - https://github.com/MicheleBertoli/css-in-js
  • 13. Webpack - The all mighty bundler of all things static - Js, images, css (all flavors), json…. - Webpack-dev-server - Building our web app
  • 14. Babel - Transpiler of all things JS - Stage-0, react, es2015 - Classes, spread operators, fat arrow functions… everywhere - Ability to target platforms
  • 15. Testing - Mocha, chai - Expect (https://github.com/mjackson/expect) - React-test-utils (https://facebook.github.io/react/docs/test-utils.html) - Jest (http://facebook.github.io/jest/) - Comes natural with redux - Easiest TDD approach I’ve seen
  • 16. How are we accomplishing it - Higher order components - Presentational / Dump platform specific components - Platform specific loading - Connection to the redux store
  • 17. The good - Great fun - Good DX - Fast(er) development - Taking things to a new level - Code reusability - Skills reusability - Covering all things internet
  • 18. The bad - Dependencies - A lot of bad advice on the web - Easy to get outdated - No best practices
  • 20. Where to go next? - http://reactnative.com/ - http://docs.apphub.io/ - http://rnplay.org/ - https://github.com/GordyD/3ree - http://www.flexboxdefense.com/ - https://getsiphon.com/ - http://graphql.org/ - https://facebook.github.io/relay/ - https://github.com/tosFa/react-cross-platform-boardgame-example
  • 21. Recap - Same DX in web and mobile - Skill reusability - Code reusability / Cross platform code - Fast development - One team to rule it all - Money / Time saver - Universal JS is no longer “just” server and browser - Full stack in one language / ecosystem - Coding is fun