Skip to content
Jason Morrison edited this page Apr 7, 2014 · 41 revisions

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.

Introduction

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

Apprenticeship Patterns: "Breakable Toy"

Future Topics

Chunk these up into themes, organize by month. May have to revisit some many times.

non-tech books

See ~/log/0000-00-00-books-reading-films

education

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/

philosophy, postmodernism

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

math, logic

_ 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

"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

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/

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

Distributed Systems


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"
    https://ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf
  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

* 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.?

Misc / TODO organize this

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.

speaking/communications/management/interpersonal

_ 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

finance

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

biology/pharmacology

http://www.amazon.com/Introduction-Neuropsychopharmacology-Leslie-Iversen-ebook/dp/B0060L8QCM/ref=tmm_kin_title_0

meta: lists

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)