Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Splitting up 8Ball and building/sharing components
Search
Mark Stuart
February 19, 2015
Programming
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Splitting up 8Ball and building/sharing components
Mark Stuart
February 19, 2015
More Decks by Mark Stuart
See All by Mark Stuart
JS@PayPal 2015 - Insanely fast rendering w/ Service Workers and Early Flushing
mstuart
0
1.1k
Midwest JS 2014 - Securing your Node.js & Single Page Apps
mstuart
2
370
enterJS 2014 - Securing your Node.js & Single Page Apps
mstuart
4
650
HTML5DevConf 2014 - Securing your JavaScript apps
mstuart
0
190
Other Decks in Programming
See All in Programming
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
3.2k
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
170
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
530
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
210
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
JRuby: Past, Present, and Future
headius
0
200
すこし踏み込む CancellationToken
htkym
2
1k
AHC070解法紹介
eijirou
0
130
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
360
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
570
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
930
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
540
Featured
See All Featured
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
66k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
430
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
The World Runs on Bad Software
bkeepers
PRO
72
12k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
The Cult of Friendly URLs
andyhume
79
7k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Transcript
Splitting up 8ball & Building & Sharing Components: Our Plan
for 2015
go/8ballcomponents
Part 1: App Split
What’s the plan?
Split up the app. Create more server-side modules. Package up
flows, dynamic and static components.
Building
Why split up the app?
Faster/easier releases Benefit #1 ! ! !
Independent releases. Can’t block each other. Less cross-team merge conflicts.
Improved focus Benefit #2 ! ! !
Remove the noise. Write small, focused modules. Better code, better
docs, better tests. Easier ramp up time for new devs.
More stable Benefit #3 ! ! !
Errors and crashes are more contained. Kinda sad, but this
is a nice feature. =)
Able to move forward Benefit #4 ! ! !
It’s hard to change a monolith. It’s easy to change
a small app. Easier to experiment.
Push Schedule 2/24 - settingsnodeweb LTS March - Credit App
LTS April - Transfer App LTS
Okay, so how do components fit into this?
Part 2: Components
Modularize the common parts. Reason #1 ! ! !
Modularize the common parts.
consumerweb-* modules
consumerweb-* TODOs Some failing unit tests. No ESLint. Need to
add CI ASAP. Any takers? =)
Create value ($$$) Reason #2 ! ! !
P2P and Add Bank everywhere. Drive more people to Consumer
Web.
Unified Login… Unified Add Bank?
Components are really tough.
Highly recommended!
No consistent UI platform. Difficult to share code with teams.
No Kraken for the UI. No consistent component APIs.
Delivering UI components
Web Components Option #1 ! ! !
End all be all? ! Encapsulation. Shadow DOM. Natural components.
None
iframes Option #2 ! ! !
The Good Parts (tm) Super old and works everywhere. Easy
to implement. Server-side or Client-side rendered. Encapsulated. UI platform agnostic. Communication via postMessage.
The Bad Parts You can’t pick what you want, you
get it all. Multiple versions of jQuery, etc. Could have performance implications.
Example: P2P 1-line iframe integration
<script src=“loader.js?path=/myaccount/transfer” /> 1. Fetches and loads loader.js 2. loader.js
scrapes off “path” from itself 3. Creates an iframe 4. Sets the iframe’s URL to the “path”
Great part is this is super re-usable. <script src=“loader.js?path=/myaccount/transfer/send” />
<script src=“loader.js?path=/myaccount/wallet/bank/add” /> <script src=“loader.js?path=/myaccount/settings/address” /> …
redirectUrl Option #3 ! ! !
Common pattern. Useful for flows (P2P, Add Bank, etc.) Least
amount of risk. Crappiest UX.
paypal.com/myaccount/transfer?redirectUrl=/merchant/home 1. Store redirectUrl in session. 2. /myaccount/transfer is rendered.
3. If the user exits, redirect to redirectUrl. 4. If the user completes, redirect to redirectUrl.
Next steps Split out as many apps as possible. Keep
building server-side modules. Build UI components for dust/Backbone. Hopefully within 2-3 months =)
Packaging components
Bower out. npm in.
component-creditmodule npm postinstall script Copies files into public/ ! dependencies,
peerDependencies
If you’d like to help out, let me know!