Program: Input -> Computation -> Output.
output = f(input)
C is effectively Assembly with syntactic sugar. C + Compiler/Assembler? = Assembly/machine code
Assembler vs compiler
- Basic CLI skills
- Learn vim
- PATH environment variable
- Variables in the CLI
- Compile a basic C program with GCC
- Operating System Development
- Network Programming
- What is UDP?
- Writing a TCP server in C
- Protocol design
- https://web.mit.edu/2.993/www/lectures/lecture5.html
- React.js
- Next.js App Development (client & server)
- Node.js (scripting and server)
- TypeScript
- Vanilla HTML/CSS – and abstractions.
- Serve HTML with a C server.
- CSS and Figma/Penpot
- Design Tokens
- Design Primitives (Component-Driven Development)
- Hardware Design
Start with practical CRUD app development while looping back to computer science essentials.
What is the destination, and what is the journey? From what are we starting with?
Start with writing a Next.js app on day 1, while understanding the fundamental concepts of how a computer works. How computers communicate with each other over a network. What is happening behind the scenes?
Distill primitives and core concepts from everything. Front-end dev can be described in the core primitives of Text
, View
, Image
. Design programs use the primitives of Rectangle
/Frame
, Text
, Image
. Code uses the primitives of string
, number
, etc. How can we apply common thinking to optimitally learn every concept and perform tasks with the minimal amount of work and learning? While having a deep understanding of the entire stack.
main.c
int main() {
return 1;
}
hello.c
int main(int argc, char *argv[]) {
printf("Hello, World!\n");
}
man 3 printf
Compiling a C program
gcc hello.c -o hello -Wall
(borrow concepts from the architecture world)
- https://www.youtube.com/watch?v=5avcps3bjlk – Design Thinking: How to Think Like an Architect (Roberts Architecture)
Research -> Problem Definition -> Developing Alternatives -> Evaluating Alternatives -> Selection -> Communication
(borrow concepts from the product design world)
- https://www.youtube.com/watch?v=uh8XaC0Y5MA – Connecting Unity Clients to a Dedicated Server | C# Networking Tutorial - Part 1
- Covers designing a communication protocol with UDP/TCP with a C# client and dedicated server in the context of game development.
- https://www.youtube.com/watch?v=N2bXEUSAiTI - what is programming (noob lessons!)
- LiveOverflow – https://www.youtube.com/watch?v=JGoUaCmMNpE – Writing a simple Program in C
- https://github.com/geohot/fromthetransistor