A place to store articles etc that I feel contain important information.
Mental models I repeatedly find useful https://medium.com/@yegg/mental-models-i-find-repeatedly-useful-936f1cc405d#.6ho9gcqsd
https://find.xyz/map/product-management-search-engine
Interactive version of SICP: https://xuanji.appspot.com/isicp/
These are general articles that I would encourage engineers working beside me to know about and to understand.
###SourceMaking https://sourcemaking.com/
An online reference covering several important books. It has a summary of Martin Fowler's Refactoring (Code Smells, Refactorings etc) and the Gang Of Four's Design Patterns. It also has a simple UML reference.
https://arxiv.org/abs/1702.01715
http://sahandsaba.com/nine-anti-patterns-every-programmer-should-be-aware-of-with-examples.html
Covers a few important look-outs. This is not code anti-patterns per-se but more on the human side (eg Pre-Optimization).
http://dannorth.net/introducing-bdd/
This is an important article in my opinion - a lot of developers working with xUnit will tend to call their tests "testSomething." Starting your test names with "should" helps to direct people to focusing on the behavior.
I thought this was a really good read. Both the articles, and the comments. Worth stewing with this for a bit.
Article: http://danluu.com/postmortem-lessons/
Comments: https://news.ycombinator.com/item?id=10090806
PostMortems: https://pinboard.in/u:peakscale/t:postmortem/
http://klinger.io/post/180989912140/managing-remote-teams-a-crash-course
This is an excellent blog to get you started. The general recipe is good to understand.
https://martin.kleppmann.com/2015/05/11/please-stop-calling-databases-cp-or-ap.html
CAP is a very important concept to understand in distributed computing. It's also important to understand its limits. This article gives a good introduction to help you understand CAP.
Replicated Data Types http://hal.upmc.fr/inria-00555588/document
This paper discusses a principled type for using in eventually consistent systems.
http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf
This paper describes the Amazon Dynamo DB and how it handles distributing data across nodes and gossiping changes to a cluster's topology. Cassandra would be an example of an datastore that is heavily influenced by the Dynamo paper.
These articles are tremendously useful for understanding how different technologies deal with (or moreso fail to deal with) network partitions. I would keep this close by if you're clustering most anything.
http://www.typesafe.com/resources/video/introducing-reactive-streams
This is a good overview of Reactive Streams and asynchronous non-blockind "back-pressure." Push based distributed systems can potentially overwhelm services, causing messages to be dropped or nodes could crash. Back-pressure allows us to pull messages as a service is able to handle the messages instead of overwhelming downstream systems.
http://videlalvaro.github.io/2015/12/learning-about-distributed-systems.html
Overview of concepts.
http://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html Discussion about fencing, redlock etc. Thought it was a nice discussion of issues related to lock expiry. Salvatore responded http://antirez.com/news/101
https://lars.hupel.info/topics/crdt/01-intro.html
https://medium.com/walmartlabs/building-domain-driven-microservices-af688aa1b1b8
https://www.chrisstucchio.com/blog/2013/actors_vs_futures.html
I do believe this is a good rule of thumb, but see also Extra and Cameo pattern as I don't always agree. Actors have other use cases where they improve design. I would say use actors for state and distribution. See the Extra and Cameo Pattern (below.)
http://www.slideshare.net/shinolajla/effective-akka-scalaio
I don't 100% agree with the "Don't use Actors for Concurrency." Jamie Allen writes about the Extra and Cameo patterns in his book "Effective Akka" - if you're collecting together data from multiple datasources, actors can be used to produce cleaner solutions without Ask/Futures - these patterns produce better solutions than futures alone and get rid of timeout stacktraces in your logs. These slides cover the patterns or grab a copy of the book.
Note also that there is a great simplified actor dsl for temporary actors! http://doc.akka.io/docs/akka/snapshot/scala/actordsl.html
Scala-based load testing tool http://gatling.io/
Restful API testing - delays and codes http://apps.testinsane.com/rte/
Self paced SICP: http://www.cs61as.org/index.html
Timekeeping in VMs http://www.vmware.com/files/pdf/Timekeeping-In-VirtualMachines.pdf
"My First 10 minutes on a server" - securing ubuntu http://www.codelitt.com/blog/my-first-10-minutes-on-a-server-primer-for-securing-ubuntu/
has a bunch of references to look through/curate http://the-paper-trail.org/blog/distributed-systems-theory-for-the-distributed-systems-engineer/ http://book.mixu.net/distsys/
#Resources A huge list of free books https://github.com/vhf/free-programming-books