Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RPD: Reactive Patch Development
Search
Ulric Wilfred
November 28, 2016
Programming
320
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RPD: Reactive Patch Development
Presented at JSKongress 2016
Ulric Wilfred
November 28, 2016
More Decks by Ulric Wilfred
See All by Ulric Wilfred
Declarative UI in Elm (2026) @ Elm Camp
shamansir
0
1
Generative Animation with Elm
shamansir
0
250
The Future of Web UI Development
shamansir
0
160
iElm-Tech-JB.pdf
shamansir
0
130
"iElm"
shamansir
0
100
Elm Revolution
shamansir
0
110
Про Гит
shamansir
2
170
Elm: 2D and 3D Graphics
shamansir
1
560
RPD — Reactive Patch Development, Extended Cut
shamansir
0
240
Other Decks in Programming
See All in Programming
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
230
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
150
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
510
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
270
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
140
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
220
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
350
スマートグラスで並列バイブコーディング
hyshu
0
290
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
480
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
160
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
110
act1-costs.pdf
sumedhbala
0
210
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.4k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
150
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
How to train your dragon (web standard)
notwaldorf
97
6.7k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
480
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Mobile First: as difficult as doing things right
swwweet
225
10k
Docker and Python
trallard
47
3.9k
Producing Creativity
orderedlist
PRO
348
40k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Transcript
Anton ‘shamansir’ Kotenko JetBrains GmbH (Ulric Wilfred)
RPD Framework Flow Programming for Everyone for Everyone http://shamansir.github.io/rpd
None
None
Examples: http://shamansir.github.io/rpd/examples
Styles:
* SVG and HTML rendering * Very Simple API *
Lightweight * Built using Functional Programming principles * Easy to create Toolkits * Easy to implement Rendering and define Styles * Easy to connect to other libs (Sound, Animation etc.) * Supports any async stuff w/Reactive Streams
var patch = Rpd.addPatch(‘Title’);
var node = patch.addNode(‘jb/voronoi’);
var inlet = node.inlets[‘source’];
var inlet = node.addInlet(‘core/any’, ‘source’);
inlet.receive(loadImage(‘myImage.jpg’));
outlet.connect(someInlet);
outlet.send(Kefir.later(1000, ‘foo’));
Rpd.nodetype(‘my/sum’, { inlets: { a: { type: ‘core/number’ }, b:
{ type: ‘core/number’ } }, outlet: { sum: { type: ‘core/number’ } }, process: function(inlets) { return { sum: inlets.a + inlets.b } } });
Rpd.nodetype(‘my/sum’, { inlets: { a: { type: ‘core/number’ }, b:
{ type: ‘core/number’ } }, outlet: { sum: { type: ‘core/number’ } }, process: function(inlets) { return { sum: Kefir.later( 1000, inlets.a + inlets.b ); } } });
Rpd.noderender(‘my/sum’, ‘svg’, { first: function(bodyElm) { … }, always: function(bodyElm,
inlets, outlets) { bodyElm.innerText = inlets.a + inlets.b + outlets.sum; } });
Rpd.nodetype(‘my/sum’, function() { return { inlets: { … }, outlet:
{ … }, process: function(…) { … } } });
Rpd.noderenderer(‘my/sum’, ‘svg’, function() { return { first: function(…) { …
}, always: function(…) { … } }; });
RPD Framework Flow Programming for Everyone for Everyone http://shamansir.github.io/rpd