X-Git-Url: http://info9.net/gitweb/?p=wiki.git;a=blobdiff_plain;f=tmarble%2Fposts%2F10000_Processes_in_Om.mdwn;h=8ee9868cebd175c289704659b4088531217c1ee8;hp=0000000000000000000000000000000000000000;hb=6070d1be6ead34d675204a0bd716dd75d87b04e7;hpb=e8810a75f7d4d6a8711858bc26c8ed145d53aec0 diff --git a/tmarble/posts/10000_Processes_in_Om.mdwn b/tmarble/posts/10000_Processes_in_Om.mdwn new file mode 100644 index 0000000..8ee9868 --- /dev/null +++ b/tmarble/posts/10000_Processes_in_Om.mdwn @@ -0,0 +1,43 @@ +# 10,000 Processes in Om + +I have just published [om-processes](om-processes) which +is a port of David Nolen's [10,000 Processes](swannodette-10k) +in [Clojurescript](clojurescript) to [Om](om). + +Clojurescript is a port of [Clojure](clojure) to JavaScript which +is especially well suited for running in a browser. Just as +Clojure offers a pleasant LISP on the JVM Clojurescript +offers (nearly the same) LISP in the browser. The performance +of Clojurescript is outstanding due to the massive optimizations +available from the [Google Closure compiler](closure). + +JavaScript, however, has some fundamental flaws... Top +among these are it is single threaded which leads to +an asynchronous callback style of "event programming". +Clojure's [core.async](core.async) offers a solution +in the form of [CSP](csp) style programming. Using core.async +one can *think* about coding in a more intuitive way. + +In [10,000 Processes](swannodette-10k) Nolen demonstrates +using core.async to simulate independent "threads" despite +the fact that the underlying platform has no native +support for threads. + +In [Om](om) Nolen leverages [Facebook's React](react) to +create a high performance, immutable model for client programming. + +The technical study [om-processes](om-processes) is simply +the fusion of all these ideas into one demonstration. +Who knew web development could be so much fun! + +[om-processes]: https://github.com/tmarble/om-processes +[swannodette-10k]: http://swannodette.github.io/2013/08/02/100000-processes/ +[clojurescript]: http://github.com/clojure/clojurescript +[om]: https://github.com/swannodette/om +[clojure]: http://clojure.org +[closure]: https://developers.google.com/closure/ +[core.async]: https://github.com/clojure/core.async/ +[csp]: http://en.wikipedia.org/wiki/Communicating_sequential_processes +[react]: http://facebook.github.io/react/ + +[[!taglink clojure clojurescript om]]