Programming is fundamentally about stable memory states that change only through logical operations.

The concept of state spans multiple levels of abstraction from memory state and variable state to server state and system state. State is notably observed in files and folders which contain all conventional code and multimedia. It touches real products such as web applications, desktop apps, mobile apps, operating systems, industrial controls, device drivers, and electronic firmware.

Start simple, focus on maintainable code and flexible architecture, build on elegance and reliability, then scale with functional modularity and real-time replication.

Key Starting Concepts - Analog vs Digital States, Volatile vs Non-volatile Memory, Logic Gates (esp. NAND Gates), Binary Switches and State Exponentiation, Standards for Memory Access and Data Interpretation (understand protocols), Encoding vs Decoding (see ASCII and Hexadecimal), Code Libraries, Computer Languages and Syntax, Order of Code Execution.

Servers - Think of servers like normal computers without the monitor/mouse/keyboard. They are bare metal (single physical computer) or virtualized (simulation of a computer within a physical computer) into one or multiple virtual servers. Virtual private servers (VPS) allocate fixed portions of the physical hardware to guarantee a certain level of performance. Virtual shared servers have no physical allocation and therefore cannot guarantee any performance for any single server. Servers are on-prem (on the premises of the company building), colo (co-located with servers of other companies in a datacenter), or cloud (renting from a server hosting provider). Servers have several exterior ports that send/receive external data (ex. typical web servers talk about SSH connections on port 22, HTTP content on port 80, HTTPS content on port 443) using certain protocols (ex. TCP and UDP for IP traffic). See 5 Common Server Setups | Article by DigitalOcean.

IP Address - IP addresses enable servers to identify and talk with each other distinctly. Internet service providers (ISPs) buy IP addresses from the Internet Assigned Numbers Authority (IANA); then they assign them to your computer by adding a new record with a fresh IP address and your modem's MAC address into their routing database.

Web Server Program - Classic decision between Apache and Nginx. Choose Nginx. It is simple to configure and excels at serving static content. See Comparison by DigitalOcean.

Database Program - Typically associated with in-drive databases (stored on non-volatile disk instead of volatile memory). Complex decision across relational or non-relational data, support for database transactions, concurrent load handling, replication. Popular comparison between MySQL and PostgreSQL. For web development, choose MySQL. It is the most commonly used relational database management system (RDMS), performs write operations efficiently, and scales pretty well. See Why Uber Switched From PostgreSQL to MySQL. For embedded development, choose SQLite. It's good for single-user applications and supports high read operations.

Security Concepts - Attack Vectors, Encryption vs Decryption, Hashing and Salting, Symmetric vs Asymmetric Encryption, Cryptographic Signatures (ex. with private key).

Assorted Resources

MX Toolbox - Assorted online sysadmin tools

Apache Cassandra - High-scalability NoSQL Database - Great for storing centralized logs and other NoSQL-appropriate data. Searching can be augmented by tools like Amazon ElasticSearch. - [Netflix 1] [Netflix 2] [DataStax 1]

Redis - In-memory datastore. Excellent for scaling cache-appropriate data away from the database such as with auth tokens. Use as a stateless alternative to session variables.

RabbitMQ - Data-messaging Queue

KeepAlived - High-availability Routing