functional rotterdam-20-09-16
TRANSCRIPT
NumerryVisualisation made easy
@adrienhaxaire
Motivations
Motivation: Learn functional programming
1. Want to keep improving myself
2. Already know procedural and object oriented programming
3. Emacs Lisp
Motivation: Learn modern web development
1. Researcher in geoengineering turned scientific developer
2. Web development is the norm
3. Front end, UI/UX
4. Full stack
Motivation: Personal pain point
Motivation: Personal pain point
1. Many existing tools, yet all for desktop (except Sage)
2. Ease of use: text file, drag and drop, from the repl
3. Sharing
Yay! I have found a
nice side project!
Stack
Stack: backend
Stack: backend
Why: prototyping
Stack: backend
Stack: backend
Stack: Frontend
Stack: Frontend
Tweet
Design
Constraint: language agnostic
1. Should work with any language
2. Or no language at all: drag and drop & terminal
3. Incentive for clients in many languages
4. Avoid trapping myself into the idioms of a language -> standards
Constraint: language agnostic
Not a Single Page Application
Constraint: open source
1. Can be installed, not an app only
2. Users! How to handle authentication, security?
3. Data: local, global, replication?
System
Code
core.cljStart the websocket server
Update from RethinkDB
Define the websocket
RethinkDB’s changefeed
Async or not, optional argument
Ugly but works for now!
yes, hard-coded for debug
plot.js:46026 Uncaught InvalidStateError: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.
Recap
1. Found a nice project to burn my spare time in happiness
2. Full package: Clojure, RethinkDB, ClojureScript, Reagent
3. Advices/help welcome!
4. Links: Github, blog posts, Twitter