Life Beyond Rails: Creating Cross Platform Ruby Apps
-
Upload
tristan-gomez -
Category
Technology
-
view
174 -
download
2
Transcript of Life Beyond Rails: Creating Cross Platform Ruby Apps
![Page 1: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/1.jpg)
Life Beyond RailsBuilding Cross Platform Applications
![Page 2: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/2.jpg)
DEMO
![Page 3: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/3.jpg)
@parasquidChief Problem Solver
at Mindvalley
![Page 4: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/4.jpg)
![Page 5: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/5.jpg)
Why not Ruby on the browser and on
mobile?
![Page 6: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/6.jpg)
![Page 7: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/7.jpg)
![Page 8: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/8.jpg)
Dead end product
![Page 9: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/9.jpg)
![Page 10: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/10.jpg)
So what if voyager can go to Mars, or dive in the ocean
So what if your hackathon was written in JS that runs on both server and client
So what if your legacy code was written in Ruby (cross platform!)
![Page 11: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/11.jpg)
Can you reuse a significant portion of the code you wrote?
![Page 12: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/12.jpg)
Cross platform is useless if your code
can't be reused.
![Page 13: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/13.jpg)
Reuse of prior work across multiple platforms is the
biggest reason why you want cross platform support
![Page 14: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/14.jpg)
![Page 15: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/15.jpg)
![Page 16: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/16.jpg)
![Page 17: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/17.jpg)
“cross platform” is mostly solved in the
physical world
![Page 18: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/18.jpg)
![Page 19: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/19.jpg)
cable
usb powerbank
usb camera
usb phone
usb ereader
![Page 20: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/20.jpg)
![Page 21: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/21.jpg)
• How does this work?
• Which things can I use this with?
• What can this do?
![Page 22: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/22.jpg)
• How does this work?
• Which things can I use this with?
• What can this do?Encapsulation
Polymorphism
![Page 23: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/23.jpg)
![Page 24: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/24.jpg)
(DESCRIPTOR)
![Page 25: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/25.jpg)
• open()• close()• read()• write()• seek()
![Page 26: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/26.jpg)
You’re not a beautiful or unique snowflake.-Tyler Durden, Fight Club
![Page 27: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/27.jpg)
–Linus Torvalds
“Use common tools tooperate on different things.”
![Page 28: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/28.jpg)
principle: common tools operating on different things
technique: polymorphism
![Page 29: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/29.jpg)
![Page 30: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/30.jpg)
![Page 31: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/31.jpg)
![Page 32: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/32.jpg)
![Page 33: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/33.jpg)
Surface Area of the API is small
![Page 34: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/34.jpg)
![Page 35: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/35.jpg)
![Page 36: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/36.jpg)
principle: information hiding
technique: encapsulation
![Page 37: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/37.jpg)
Oooh. But I already know OOP.
![Page 38: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/38.jpg)
OOP is about programming with
objects
![Page 39: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/39.jpg)
OOP is about programming with
objects
![Page 40: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/40.jpg)
OOP is about the organization of your
program
![Page 41: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/41.jpg)
• Procedural• Object Oriented• Functional• Prototype based• Rails-way based• Hybrid / Combination
How are things
connected?
![Page 42: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/42.jpg)
![Page 43: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/43.jpg)
![Page 44: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/44.jpg)
Rails is omakase.I [am] … the head chef of the
omakase experience that is Rails-DHH
![Page 45: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/45.jpg)
To Rails or not to Rails
![Page 46: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/46.jpg)
![Page 47: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/47.jpg)
–Kent Beck
In a connected system, elements are highly available to each other (via global
state, for example). Adding the first feature to a connected system is cheap. All the resources you need are available.
However, the cost of all those connections is that subsequent features are very likely to interact with previous features, driving
up the cost of development over time.
![Page 48: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/48.jpg)
–Kent Beck
A modular design has connections deliberately kept to a minimum. The cost for the first feature is likely to be higher than in the connected system, because
you need to find the necessary resources and bring them together, possibly re-
modularizing in the process. Features are much less likely to interact in a modular
system, though, leading to a steady stream of features at relatively constant
cost.
![Page 49: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/49.jpg)
![Page 50: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/50.jpg)
Stay on the connected curve until the climb phase, then switch to the
modular curve.Kent Beck
![Page 51: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/51.jpg)
![Page 52: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/52.jpg)
App
Rails
request-response
![Page 53: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/53.jpg)
App
TelnetWeb sockets
streaming
![Page 54: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/54.jpg)
App
RubyMotion
mobile
![Page 55: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/55.jpg)
App
Opal
browser
![Page 56: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/56.jpg)
App
mRuby
hardware
![Page 57: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/57.jpg)
![Page 58: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/58.jpg)
![Page 59: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/59.jpg)
![Page 60: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/60.jpg)
![Page 61: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/61.jpg)
![Page 62: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/62.jpg)
![Page 63: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/63.jpg)
Programming is the act of managing
complexity.
![Page 64: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/64.jpg)
Programming is the act of managing
complexity.
![Page 65: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/65.jpg)
Programming is the act of managing
complexity.
![Page 66: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/66.jpg)
Write flexible, maintainable,reusable code
![Page 67: Life Beyond Rails: Creating Cross Platform Ruby Apps](https://reader037.fdocuments.in/reader037/viewer/2022110218/58f30f121a28ab647f8b461b/html5/thumbnails/67.jpg)
@parasquidChief Problem Solver
at Mindvalley