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
0
290
RPD: Reactive Patch Development
Presented at JSKongress 2016
Ulric Wilfred
November 28, 2016
Tweet
Share
More Decks by Ulric Wilfred
See All by Ulric Wilfred
Generative Animation with Elm
shamansir
0
200
The Future of Web UI Development
shamansir
0
120
iElm-Tech-JB.pdf
shamansir
0
91
"iElm"
shamansir
0
73
Elm Revolution
shamansir
0
95
Про Гит
shamansir
2
100
Elm: 2D and 3D Graphics
shamansir
1
520
RPD — Reactive Patch Development, Extended Cut
shamansir
0
180
Animatron Player API in Details v3
shamansir
0
430
Other Decks in Programming
See All in Programming
Preact、HooksとSignalsの両立 / Preact: Harmonizing Hooks and Signals
ssssota
1
540
Go1.24で testing.B.Loopが爆誕
kuro_kurorrr
0
150
Devinのメモリ活用の学びを自社サービスにどう組み込むか?
itarutomy
0
1.5k
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
6
3k
RailsでCQRS/ESをやってみたきづき
suzukimar
2
1.5k
複数ドメインに散らばってしまった画像…! 運用中のPHPアプリに後からCDNを導入する…!
suguruooki
0
420
Return of the Full-Stack Developer
simas
PRO
1
300
Day0 初心者向けワークショップ実践!ソフトウェアテストの第一歩
satohiroyuki
0
340
SLI/SLOの設定を進めるその前に アラート品質の改善に取り組んだ話
tanden
2
690
MCP世界への招待: AIエンジニアが創る次世代エージェント連携の世界
gunta
2
510
S3静的ホスティング+Next.js静的エクスポート で格安webアプリ構築
iharuoru
0
190
requirements with math
moony
0
510
Featured
See All Featured
Code Review Best Practice
trishagee
67
18k
Facilitating Awesome Meetings
lara
53
6.3k
Thoughts on Productivity
jonyablonski
69
4.5k
Unsuck your backbone
ammeep
669
57k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.7k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
134
33k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
21k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
15
1.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
We Have a Design System, Now What?
morganepeng
51
7.5k
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