Home
Jason Morrison edited this page Apr 7, 2014
·
41 revisions
This started as a sprawling file in my ~/log folder. I enjoyed sharing it with people by emailing them a Dropbox share URL, but maybe this wiki will be more fun.
- Topics start at the bottom of this page.
- At the start of a new month, some topics get moved into that month
- At the end of the month, I write a summary
Thoughts on this stuff? Open issues or email me or something.
Read the Introduction page for context, my inspiration, and notation.
- Focus in programming: Clojure, FP, distributed systems, concurrency models, CLJS, FRP, CSP
- Focus elsewhere: finance/investing, communication/interpersonal
sequenced: -+-> Clojure/FP -+--> CSP, core.async, distributed systems
\ \-> CLJS, Mori ->
\--> FRP, React-----------------\-> Om
- 2014 January - planning
- 2014 February - Meteor, React, FRP. Non-programming: Little Blue Book.
- 2014 March - Clojure, FP, core.async. Non-programming: Intelligent Investor?
- 2014 April - CLJS, Mori, Om. Non-programming: game theory?
- 2014 May - CSP, other concurrencies? Actor model?
- 2014 June - Distributed systems? XMPP?
- And then...?
We can all benefit by doing occasional “toy” programs, when artificial restrictions are set up, so that we are forced to push our abilities to the limit.
—Donald Knuth, The Art of Computer Programming
— Apprenticeship Patterns: "Breakable Toy"
- chromuxinator - tmuxinator for chrome
- dataflow/logic programming:
- build something like fez: http://flippinawesome.org/2014/02/24/using-grunt-consider-fez/
- small game
- monopoly game http://weblog.raganwald.com/2006/06/my-favourite-interview-question.html
- "maze chaser" etc
- first just player vs computer (webworker agents?)
- then multiplayer
- then allow editing agent code? in shared space?
- https://github.com/mizzao/meteor-sharejs + ace-editor; run a multi-agent simulation + chat room?
- osx: watch file, blink in menu when updated
- wiki? (distributed, browser persist or otherwise)
- https://github.com/ericclemmons/grunt-react
- nice log recorder for selenium-driven chrome (chromedriver)
- can I use meteor-sync as bb underlying transport?
- https://github.com/andyyoung/Process-Monitor-for-Chrome - expose to JS land to share/record
- idea: start meteor + react chat app?
- idea: start clojure lobste.rs friend-finder-client for their invite system?
- idea: group chat & doc annotate?
- idea: detect talking in a vox stream?
- https://github.com/latentflip/hark ( via http://simplewebrtc.com/ )
- https://github.com/shriphani/Listener/blob/master/VAD.py
- http://www.speech.kth.se/prod/publications/files/3437.pdf
- http://teacher.buet.ac.bd/shihab/CSE474/Papers/10.1.1.93.3453.pdf
- http://sipi.usc.edu/~ortega/WaveletPapers/speech_music1.pdf
- http://wiki.freeswitch.org/wiki/VAD_and_CNG
- http://stackoverflow.com/questions/5367214/any-simple-vad-implementation
Chunk these up into themes, organize by month. May have to revisit some many times.
See ~/log/0000-00-00-books-reading-films
why education is so difficult and contentious - egan via bret victor
x http://www.sfu.ca/~egan/Difficult-article.html
_ http://www.youtube.com/watch?v=0QFDzRkmiUE
learning in depth - egan via victor
_ http://www.sfu.ca/~egan/Learningdepth.html
_ http://www.youtube.com/watch?v=KDAOKJpg2fM
http://blogs.kqed.org/mindshift/2014/01/do-rigid-college-admissions-leave-room-for-creative-thinkers/
http://www.ultrasaurus.com/2008/12/situated-learning-through-open-source/
http://oxcheps.new.ox.ac.uk/Publications/Resources/OxCHEPS_OP1_08.pdf
http://educationnext.org/education-and-economic-growth/
https://groups.google.com/forum/#!topic/philosophy-in-a-time-of-software/
http://www.partiallyexaminedlife.com/
http://users.aber.ac.uk/dgc/Documents/S4B/sem01.html
continental philosophy reading list: https://gist.github.com/steveklabnik/4017292
_ what was that game theory book? where did I find the recommendation?
It was this:
http://www.amazon.com/Games-Strategy-Third-Edition-Avinash/dp/0393931129
But maybe get this instead:
http://www.amazon.com/Thinking-Strategically-Competitive-Business-Politics/dp/0393310353
ClojureScript: Up And Running
http://shop.oreilly.com/product/0636920025139.do
https://github.com/bodil/cljs-noderepl
how to start cljs, react, om
http://adamsolove.com/js/clojure/2014/01/06/om-experience-report.html
FRP/CLJS implementations
http://kevinoncode.blogspot.com/2013/05/a-short-survey-on-state-of-functional.html
https://github.com/swannodette/lt-cljs-tutorial
Om at Clojure/West 2014
https://www.youtube.com/watch?v=DMtwq3QtddY
More Om at Clojure/West 2014:
https://www.youtube.com/watch?v=78akckfpvnQ
- via http://www.digitalcld.com/cld/clojurewest-2014-presentation-the-functional-final-frontier-clojure-and-ui-development/
om tutorials
https://github.com/swannodette/om/wiki
(hipchat alternative) kandan client: from sf cljs meetup:
http://www.meetup.com/SF-Clojurescript-Meetup/events/164121132/
https://github.com/sgrove/omchaya
chess with om
https://twitter.com/swannodette/status/432588577424556032
https://github.com/danieroux/rubyfuza2014/blob/master/src/rubyfuza/core.cljs
http://www.slideshare.net/danieroux/rubyfuza-2014
https://github.com/swannodette/mori
cljs data structures into javascript land
https://github.com/jellea/muuuuu
music sharing web app in om
http://clojure.org/data_structures
http://en.wikipedia.org/wiki/Persistent_data_structure#Examples_of_persistent_data_structures
?? papers on persistent/immutable data structures
Notes on state split:
https://groups.google.com/forum/#!topic/clojurescript/QuTjNgVl7do
""" Definitely open to alternate ideas but I won't budge on the fundamental split:
""" a) application state
""" b) component local state
""" c) side information
More threads:
https://groups.google.com/forum/#!searchin/clojurescript/om$20
On component communication:
https://groups.google.com/forum/#!searchin/clojurescript/om$20/clojurescript/NlaYPfQBW2I/oiFkVLZYafMJ
""" If I was to describe the difference between Om and Reagent it would be that Om
""" is draconian about component modularity in order to encourage component reuse.
""" Directly manipulating the app state from a component in Om is a anti-pattern.
""" Components communicating with each other via functions is also an anti pattern
""" (use channels).
:: are there analogies into a marionette structure? model updates vs fn-callback vs venting
"Concurrency is not Parallelism" by Rob Pike at Waza
http://www.youtube.com/watch?v=f6kdp27TYZs
"Google I/O 2012 - Go Concurrency Patterns"
http://www.youtube.com/watch?v=f6kdp27TYZs
"Advanced Go Concurrency Patterns"
http://blog.golang.org/advanced-go-concurrency-patterns
DVVs:
http://haslab.uminho.pt/tome/files/dvvset-dais.pdf
https://github.com/ricardobcl/Dotted-Version-Vectors#real-world-with-riak
https://twitter.com/ricardo_tome
https://twitter.com/ricardo_tome/status/448776768158437376
CPS (not CSP)! and monadic futures
http://robotlolita.github.io/2014/03/20/a-monad-in-practicality-controlling-time.html
CSP: Communicating Sequential Processes
http://swannodette.github.io/2013/07/12/communicating-sequential-processes/
using csp for UI
http://swtch.com/~rsc/thread/cws.pdf
http://alleystoughton.us/eXene/1991-ml-workshop.pdf
How it is extended in core.async:
http://clojure.com/blog/2013/06/28/clojure-core-async-channels.html
http://www.usingcsp.com/cspbook.pdf hoare
~/Dropbox/Library-mine/cspbook.pdf
related algebras, books:
http://theory.stanford.edu/~rvg/process.html
how does this get distributed? erlang gen-server/gen-event etc? other models?
distributed core.async for JVM and CLJ:
http://blog.paralleluniverse.co/2013/07/19/quasar-pulsar-0-2-0-distributed-actors-supervisors/
Joy of Clojure Chapter 11 "Mutation" - "When to use Atoms, Refs, Futures, Promises, Locks, Agents, ..."
http://joyofclojure.com/
via http://pepijndevos.nl/how-reify-works-and-how-to-write-a-custom-typ/index.html
Patterns in concurrency
http://parlab.eecs.berkeley.edu/wiki/patterns/patterns
Actors
https://github.com/levjj/sweet-actors/blob/master/README.md
STM?
http://en.wikipedia.org/wiki/Software_transactional_memory
List of resources:
http://www.haskell.org/haskellwiki/Software_transactional_memory
Causality:
Causal Ordering:
http://scattered-thoughts.net/blog/2012/08/16/causal-ordering/
"Causality is expensive"
http://www.bailis.org/blog/causality-is-expensive-and-what-to-do-about-it/
""" I’ll defer a full description and discussion of causality to the expansive literature
* here’s a survey: http://aqualab.cs.northwestern.edu/component/attachments/download/302
* and here’s my favorite: http://www.vs.inf.ethz.ch/publ/papers/holygrail.pdf
"Local state is poison"
http://awelonblue.wordpress.com/2012/10/21/local-state-is-poison/
OT:
http://en.wikipedia.org/wiki/Operational_transformation
https://neil.fraser.name/writing/sync/
https://github.com/share/ShareJS/wiki
https://github.com/share/ottypes/wiki/JSON-operations
What would "Backbone-Relational-Models-operations" look like?
https://github.com/codeparty/racer
How does OT related to Pedestal?
https://github.com/pedestal/samples/blob/master/slides/pedestal-intro-slides.pdf
Diff two JSON docs to get a series of OT patches:
https://www.npmjs.org/package/jsondiff-share-ops
CRDT:
Can do perform arbitrary JSON ops with CRDT? Not yet (open research), use OT:
https://groups.google.com/forum/#!topic/sharejs/6tUJgkrQcmE
But maybe CRDT *is* usable, see James Halliday:
https://plus.google.com/+PaulIrish/posts/QWCjx8ZqaD2
https://github.com/dominictarr/crdt
https://github.com/substack/wizard-game
https://github.com/substack/seaport
https://github.com/dominictarr/scuttlebutt
http://vimeo.com/52653286
See also "Gossip Protocol" http://www.cs.cornell.edu/home/rvr/papers/flowgossip.pdf re scuttlebutt
More on CRDT:
A comprehensive study of Convergent and Commutative Replicated Data Types
http://hal.upmc.fr/docs/00/55/55/88/PDF/techreport.pdf
Making Operation-based CRDTs Operation-based
http://gsd.di.uminho.pt/members/cbm/ps/crdtOpsMiddleware.pdf
Mering OT and CRDT Algorithms
http://hal.inria.fr/docs/00/95/71/67/PDF/main.pdf
More stuff:
"RICON West Videos: Distributed Systems in Academia"
http://basho.com/ricon-west-videos-distributed-systems-in-academia/
* So much good stuff: CRDTs, LVars, Raft
Kafka design docs:
https://kafka.apache.org/documentation.html
especially:
https://kafka.apache.org/documentation.html#replication
* Datomic backed by Riak:
http://www.youtube.com/watch?v=VD9UCfQohQE
https://groups.google.com/forum/#!msg/datomic/zSpKRRPow_M/qn9rzt_nN5UJ
* recent blog post "what level distributed systems engineer" - what background material is there?
http://blog.incubaid.com/2012/03/28/the-game-of-distributed-systems-programming-which-level-are-you/
_ read & take notes
_ revisit in +2 months, read & take notes
* what models of concurrecy / distributed systems are there? why are there different ones?
* "concurrency is not the problem, shared mutable state is" - reference?
Raft "In Search of an Understandable Consensus Algorithm"
https://ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf
etcd (built atop Raft):
https://github.com/coreos/etcd
Riak Concepts
http://docs.basho.com/riak/1.2.0/references/appendices/concepts/
Riak handbook
http://riakhandbook.com/
BOOM Analytics: Exploring Data-Centric, Declarative Programming for the Cloud
http://db.cs.berkeley.edu/papers/eurosys10-boom.pdf
Podcast: Think Distributed
http://thinkdistributed.io/
http://christophermeiklejohn.com/distributed/systems/2013/07/12/readings-in-distributed-systems.html
In Search of an Understandable Consensus Algorithm Diego Ongaro, John Ousterhout 2013
https://ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf
A Simple Totally Ordered Broadcast Protocol Benjamin Reed, Flavio P. Junqueira 2008
http://labs.yahoo.com/files/ladis08.pdf
Paxos Made Live - An Engineering Perspective Tushar Deepak Chandra, Robert Griesemer, Joshua Redstone 2007
http://research.google.com/pubs/pub33002.html
The Chubby Lock Service for Loosely-Coupled Distributed Systems Mike Burrows 2006
http://static.googleusercontent.com/media/research.google.com/en/us/archive/chubby-osdi06.pdf
Paxos Made Simple Leslie Lamport 2001
http://www.cs.utexas.edu/users/lorenzo/corsi/cs380d/past/03F/notes/paxos-simple.pdf
Impossibility of Distributed Consensus with One Faulty Process Michael Fischer, Nancy Lynch, Michael Patterson 1985
http://macs.citadel.edu/rudolphg/csci604/ImpossibilityofConsensus.pdf
The Byzantine Generals Problem Leslie Lamport 1982
http://www.cs.cornell.edu/courses/cs614/2004sp/papers/lsp82.pdf
"Large-scale computation without synchronisation"
https://syncfree.lip6.fr/
* find examples of distributed systems and compare "pass messages to single linearizing choke point" vs
"everybody makes state changes and respects their permissions which are later double-checked"
- KRTconf, XMPP, etc.?
-- I made that note on 3/2. I'm slowly learning the vocabulary and sets of concepts related to this.
I was asking in context of a multiuser collaborative application. I think the question is related
to http://en.wikipedia.org/wiki/Strong_consistency optimistic/speculative ops -> weak consistency?
http://martinfowler.com/bliki/CQRS.html
""" I think you're looking at this the wrong way. Have you considered some kind of
""" event sourcing strategy to separate your reads from your writes? Sounds like
""" you're working on the sole basis that the write store is always the read store.
""" From the little information that you've given, it sounds like that could
""" potentially give you better flexibility and make choosing data stores easier.
"""
""" (...) like a CQRS solution.
-- https://groups.google.com/forum/#!topic/liftweb/Z8TOtB5nngU
http://martinfowler.com/bliki/CQRS.html
This could apply easily in a Flux approach with read Stores vs write Stores?
Out of the Tar Pit
http://shaffner.us/cs/papers/tarpit.pdf
""" We identify common causes of complexity and discuss general approaches
""" which can be taken to eliminate them where they are accidental in nature. To
""" make things more concrete we then give an outline for a potential
""" complexity-minimizing approach based on functional programming and Codd's
""" relational model of data.
Updated Lampson's Hints for Computer Systems Design
http://www.heidelberg-laureate-forum.org/blog/video/lecture-friday-september-27-butler-w-lampson/
From "http://www.allthingsdistributed.com/2013/12/updated-hints.html"
""" by Butler Lampson where he talks about the learnings of the past decades
""" that helped him to update his excellent 1983 "Hints for computer system
""" design". The presentation was part of the Heidelberg Laureate Forum helt in
""" September of this year. At the Forum many of the Abel, Fields and Turing
""" Laureates held presentations. Our most famous computer scientists like Fernando
""" Carbato, Stephen Cook, Edward Feigenbaum, Juris Hartmanis, John Hopcroft, Alan
""" Kay, Vinton Cerf, etc. were all at the Forum.
Javascript Allongé
https://leanpub.com/javascript-allonge
https://leanpub.com/javascript-allonge/read - free
ilya grigorik http://chimera.labs.oreilly.com/books/1230000000545/ch18.html#_configuring_message_order_and_reliability
progfun Coursera class
SICP
Education reading ~/log/2012-03-10-edu-safari
stream processing / distributed processing / "big data"
http://manning.com/marz/
http://www.eecs.berkeley.edu/Pubs/TechRpts/2012/EECS-2012-259.pdf
REST / transports
fielding thesis
http://rocket.github.io/
meteor DDP
https://github.com/codeparty/racer via derbyjs
From "Apprenticeship Patterns":
> Find and read RFC 2616, which describes HTTP1.1, and RFC 707, which
> describes the state of the art in Remote Procedure Call technology as of
> January 1976. Armed with your deeper knowledge of HTTP, try to implement a
> client and a server for RFC 707. When you feel you have a good understanding of
> the trade-offs made by the editors of RFC 707, examine a modern open source
> implementation of the same ideas, such as the Apache Thrift framework that
> powers Facebook. Then, from your informed vantage point, write a blog post
> describing the evolution of our knowledge regarding remote procedure calls and
> distributed systems over the last three decades. Now, go and read Steve
> Vinoski’s articles about RPC. Do you now have doubts about the depth of your
> understanding? Write a blog post about your doubts and your current level of
> understanding.
_ bibliography of Apprenticeship_Patterns.pdf
* psychology of computer programming
* pair programming illuminated
* becoming a technical leader
_ peopleware?
_ heath brothers - made to stick (re-read, last read ~2008), decisions ?
http://www.confreaks.com/videos/2488-railsconf2013-how-to-talk-to-developers
berkshire hathaway reports
In ~/Dropbox/Library-mine:
* 2006 Graham Intelligent Investor, Revised Edition, The
* 2010 Greenblatt Little Book That Still Beats the Market, The
* Discussion:
http://www.bogleheads.org/forum/viewtopic.php?p=599845
http://boards.fool.com/magic-formula-investing-117512.aspx
The Unwinding: An Inner History of the New America
http://www.amazon.com/dp/B00ANI9GIQ
The Alchemists: Three Central Bankers and a World on Fire
http://www.amazon.com/dp/B008EKOGKS
Lawrence in Arabia: War, Deceit, Imperial Folly and the Making of the Modern Middle East
http://www.amazon.com/dp/B00BH0VSPI
War is a Racket: The Antiwar Classic by America's Most Decorated Soldier
http://www.amazon.com/dp/B003XRDBJY
The Autobiography of Malcolm X
http://www.amazon.com/Autobiography-Malcolm-X/dp/B000BMG58I
The Rise of Theodore Roosevelt
http://www.amazon.com/Theodore-Roosevelt-Modern-Library-Nonfiction-ebook/dp/B004DEPH3E
http://www.amazon.com/Introduction-Neuropsychopharmacology-Leslie-Iversen-ebook/dp/B0060L8QCM/ref=tmm_kin_title_0
JavaScript Object.observe and ChangeSummary, constraint-based programming
https://www.youtube.com/watch?v=VO--VXFJnmE
http://worrydream.com/Links2013/
Visualization and Cognition: Drawing Things Together (1986)
Knowledge in Pieces (1988)
Analogy as the Core of Cognition (2001)
Simulation and its Discontents (2009)
* Why education is so difficult and contentious (2001)
* Other Egan pieces
Naya's Quest (2013)
Clock Of The Long Now: Time And Responsibility (2000)
The Origin of Consciousness in the Breakdown of the Bicameral Mind (1977)
An Interview with David Hestenes (2012)
* Notes for a Modeling Theory of Science, Cognition and Instruction (2006)
Modeling Games in the Newtonian World (1991)
An Interview with Carver Mead (2001)
Collective Electrodynamics (2002)
* The Engelbart Hypothesis: dialogs with Douglas Engelbart (2009)
Improving Our Ability to Improve: A Call for Investment in a New Future (2003)
Alan Kay
Putting Turing To Work (2013)
Normal Considered Harmful (2009)
SCIx keynote presentation (2012)
The Center of “Why?” (2004)