Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
heyyyy it's your reading listtt
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.
2014 Topic Outline
- 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
Month-by-Month - The Interesting Stuff
- 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...?
Breakable toys / project ideas
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
- 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)
- 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/ )
Chunk these up into themes, organize by month. May have to revisit some many times.
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
"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 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 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 "Origins of Go Concurrency style by Rob Pike" Rob Pike explains Hoare's CSP paper https://www.youtube.com/watch?v=3DtUzH3zoFo 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
leveldb hooks/sublevel providing reactive queries? https://github.com/dominictarr/level-sublevel https://github.com/dominictarr/level-hooks http://docs.basho.com/riak/1.3.0/tutorials/choosing-a-backend/LevelDB/ "Replication in networked games: Overview (Part 1)" http://0fps.net/2014/02/10/replication-in-networked-games-overview-part-1/ Steve Vinoski on RPC http://qconlondon.com/dl/qcon-london-2009/slides/SteveVinoski_RPCAndItsOffspringConvenientYetFundamentallyFlawed.pdf * http://en.wikipedia.org/wiki/Fallacies_of_Distributed_Computing * A Note on Distributed Computing """ Provides amazingly lucid and detailed explanations for all these issues and more https://web.archive.org/web/20050512093033/http://research.sun.com/techrep/1994/smli_tr-94-29.pdf "RICON West Videos: Distributed Systems in Academia" http://basho.com/ricon-west-videos-distributed-systems-in-academia/ * So much good stuff: CRDTs, LVars, Raft * Datomic's 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" 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: Reading list: http://christophermeiklejohn.com/crdt/2014/07/22/readings-in-crdts.html 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 Logoot-undo: Distributed collaborative editing system on p2p networks http://www.researchgate.net/publication/233882440_Logoot-Undo_Distributed_Collaborative_Editing_System/file/9fcfd50c84f5194937.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 1978 Lamport Time, Clocks and the Ordering of Events in a Distributed System http://research.microsoft.com/en-us/um/people/lamport/pubs/time-clocks.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?
Misc / TODO organize this
_ 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
politics / economics
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://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)