Skip to content

Instantly share code, notes, and snippets.

@JCotton1123
Last active August 29, 2015 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JCotton1123/7da304f8ad7b6497075a to your computer and use it in GitHub Desktop.
Save JCotton1123/7da304f8ad7b6497075a to your computer and use it in GitHub Desktop.
course material

Basics

  • Markdown (its becoming ubiquitous)
  • Basic system concepts
    • What is an Operating System and what does it provide?
    • Kernel vs user-land
  • Basic networking concepts
    • Stack (TCP/IP)
      • Layers
      • TCP ports
      • IP Routing
      • IP Subnetting
    • DNS
  • Regular expressions

Unix

  • SSH
  • Learn a text editor - preferably vi(m)
  • User/group management
    • Managing user/groups
    • File ownership/permissions
  • Commands
    • grep, find, du, sed, etc
    • Everything is a file
      • stdin, stderr, stdout
      • pipes
      • /proc
  • Bash
  • Package management
  • Filesystem structure
  • Advanced SSH
    • SSH keys
    • Remote execution
    • Port forwarding
  • init process
  • Differences between various Nixs
    • Unix vs Linux (FreeBSD vs RHEL)
    • RHEL derivatives vs Debian derivatives

Programming

  • Different paradigms: OO vs functional vs imperative
  • Teach a few languages
    • Python, JS, Bash
  • Version control
    • Concepts
    • Teach them git
  • Testing
    • Automated tests (unit tests, integration tests, end to end tests)
    • TDD
  • SQL
    • SQL language
    • Maybe diverge a bit and explain DSLs and the trade-offs (thinking specifically about turning the SQL into a execution plan)
  • SQL & NoSQL
    • Schema vs schemaless
  • Separating application configuration from the application code

HTTP

  • Standarizing as the universal protocol
  • Explain the protocol
  • Application side
    • HTML, CSS, JS, DOM
    • Frameworks
      • REST
      • Server-side (MVC)
      • Client-side (MVVM)
  • Operations side
    • Web server
    • Load-balancer

Operations

  • System Administration
    • Network concentration
      • Interface configurations
      • Firewall configuration (iptables)
      • Netstat & routes
    • System concentration
      • Cron
      • MTA (preferably postfix)
      • File limits
      • Syslog
    • Monitoring
    • Backups
  • Common stacks
    • Apache, PHP, MySQL
    • Nginx, Python, Postgresql
    • Apache, Passenger, Ruby
  • Configuration management
    • Puppet, Chef, Ansible
  • Application deployment
    • Continuous Integration/Deployment
    • Frameworks
      • git push w/ deploy via deploy key
      • Fabric or Ansible
    • Challenges & techniques for dealing with them
      • Keeping your app up (Spin up/spin down, removing and adding node back to a load-balancer, etc)
      • Schema updates (using views to mask schema updates)
      • Handling errors and rollbacks
  • Troubleshooting errors and performance bottlenecks
    • iostat, sar (RHEL), etc
    • strace, gdb (maybe)

Application architecture & scaling

Application architecture

  • Monolith
  • Three-tier
  • SOA & microservices

Scaling

  • Basics of distributed systems
  • Vertical vs horizontal scaling
  • Techniques for scaling application services and datastores
  • Challenges (latency, service discovery, etc)

Blog posts worth reading

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment