1. Introduction
  2. Debugging Grimoire - The Tome Of Cursed Knowledge
  3. 1. DevOps ☁️
    1. 1.1. Set Up SSH for GitHub
    2. 1.2. Minimal Docker Image for Ruby
    3. 1.3. Deploying mdBook to Github Pages with GitHub Actions
    4. 1.4. Cloud Run & GitHub Actions CI/CD Setup
    5. 1.5. How to Use Google Cloud Domain Mapping to setup a Custom Domain to your container
    6. 1.6. How to Host Images (or other files) on Google Cloud Storage
  4. 2. Virtualization
    1. 2.1. Set Up PostgreSQL in a Google Cloud VM using Docker Compose
    2. 2.2. Create an HMAC Server API for the VM
    3. 2.3. Set up a LAMP server
    4. 2.4. Virt Manager Install on Arch Linux
    5. 2.5. Using Virt Manager and Samba to retrieve old songs
  5. 3. Linux 🐧
    1. 3.1. Debian Firewall Configuration With nftables
    2. 3.2. Arch Linux Ufw Configuration
    3. 3.3. Linux Process Management
    4. 3.4. Build Something From Source
  6. 4. Database 🐘
    1. 4.1. PostgreSQL Local Setup Guide
    2. 4.2. How to Setup Rate Limiting in PostgreSQL
    3. 4.3. How to Boot Up Redis on Debian
  7. 5. General Cheat Sheet 💡
    1. 5.1. NeoVim Cheat Sheet
    2. 5.2. GitHub Cheat Sheet
    3. 5.3. YAML Cheat Sheet
  8. 6. Programming Languages 🖥️
    1. 6.1. Bash 🐚
      1. 6.1.1. Bash Completion Tool
      2. 6.1.2. Grep Guide
      3. 6.1.3. Curl Guide
      4. 6.1.4. Example scripts
        1. 6.1.4.1. Fizzbuzz but cursed
        2. 6.1.4.2. DNA Hamming
        3. 6.1.4.3. Bob
        4. 6.1.4.4. Scrabble Score Counter
        5. 6.1.4.5. Armstrong Numbers
    2. 6.2. C 🏗️
      1. 6.2.1. Debugging and Build Tools
        1. 6.2.1.1. Usage of Makefiles
        2. 6.2.1.2. Usage of GDB
        3. 6.2.1.3. Usage of Valgrind
        4. 6.2.1.4. Usage of GCC/Clang Sanitizer Flags
      2. 6.2.2. Fundamentals
        1. 6.2.2.1. Usage of enums
        2. 6.2.2.2. Usage of cases (switch-case)
        3. 6.2.2.3. Employee Salary and SSN Generator
        4. 6.2.2.4. Sea Elephants Weight Generator
        5. 6.2.2.5. Poker Monte Carlo Simulation
        6. 6.2.2.6. Bubble Sort
        7. 6.2.2.7. C as a CLI Tool
        8. 6.2.2.8. File I/O and Rational Numbers
      3. 6.2.3. Bitwise Operators
        1. 6.2.3.1. Bitwise Pt. 1
        2. 6.2.3.2. Bitwise Pt. 2
        3. 6.2.3.3. Bitwise Pt. 3
      4. 6.2.4. Data Structures
        1. 6.2.4.1. Simple Linked List
        2. 6.2.4.2. Working With Linked Lists
        3. 6.2.4.3. Doubly Linked List and Merge Sort
        4. 6.2.4.4. Binary Tree
      5. 6.2.5. ncurses
        1. 6.2.5.1. Getting Started
        2. 6.2.5.2. User Input in Menu and Arrow Keys
        3. 6.2.5.3. A Rogue Like Game Engine
        4. 6.2.5.4. Input Modes, Color Witchcraft, Ctrl+char
        5. 6.2.5.5. MenuBar with Submenus
        6. 6.2.5.6. Utilities
        7. 6.2.5.7. Color palettes, Chars and Lines
    3. 6.3. C++ 🤖
      1. 6.3.1. Fundamentals
        1. 6.3.1.1. Structures
        2. 6.3.1.2. Functions
        3. 6.3.1.3. Parameter Passing Methods
        4. 6.3.1.4. Array As Parameter
        5. 6.3.1.5. Struct As Parameter
        6. 6.3.1.6. Operator Overloading
      2. 6.3.2. Pointers
        1. 6.3.2.1. Pointers Intro
        2. 6.3.2.2. Referencing
        3. 6.3.2.3. Pointer to Struct
        4. 6.3.2.4. Smart Pointers
      3. 6.3.3. Templates
        1. 6.3.3.1. Function Templates & Class Templates
        2. 6.3.3.2. Template Type Deduction
        3. 6.3.3.3. Template Type Parameters by Reference
        4. 6.3.3.4. Template Specialization
        5. 6.3.3.5. Variadic Templates
      4. 6.3.4. Concepts
        1. 6.3.4.1. Concepts Intro
        2. 6.3.4.2. Build Your Own Concepts
        3. 6.3.4.3. The Requires Clause
        4. 6.3.4.4. Logical Combination of Concepts
        5. 6.3.4.5. Concepts and Auto
      5. 6.3.5. OOP
        1. 6.3.5.1. Converting a C program to C++ OOP
        2. 6.3.5.2. Monolithic Program to Modular C++ Class
        3. 6.3.5.3. OOP with Scope Resolution Operators
        4. 6.3.5.4. Deep Copy Constructor
        5. 6.3.5.5. Inheritance and derived classes
        6. 6.3.5.6. Inheritance and Polymorphism
        7. 6.3.5.7. Virtual Function Behavior
        8. 6.3.5.8. Shapes with OOP
      6. 6.3.6. Lambdas
        1. 6.3.6.1. Lambdas Intro
        2. 6.3.6.2. Lambdas Capture Lists
        3. 6.3.6.3. Lambdas Capture All In Context
        4. 6.3.6.4. Functional Objects
      7. 6.3.7. Move Semantics
        1. 6.3.7.1. Move Semantics
        2. 6.3.7.2. Move Semantics pt.2
      8. 6.3.8. Algorithms & Data Structures
        1. 6.3.8.1. Ordered Map & Unordered Map
        2. 6.3.8.2. Tuples
        3. 6.3.8.3. Recursion
          1. 6.3.8.3.1. How Recursion works (tracing)
          2. 6.3.8.3.2. How Recursion uses stack
          3. 6.3.8.3.3. Time Complexity of Recursion
          4. 6.3.8.3.4. Static and Global in Recursion
          5. 6.3.8.3.5. Tail Recursion
          6. 6.3.8.3.6. Head Recursion
          7. 6.3.8.3.7. Tree Recursion
          8. 6.3.8.3.8. Indirect Recursion
          9. 6.3.8.3.9. Nested Recursion
          10. 6.3.8.3.10. Sum of Natural Numbers
          11. 6.3.8.3.11. Factorial
          12. 6.3.8.3.12. Power
          13. 6.3.8.3.13. Taylor Series
          14. 6.3.8.3.14. Taylor Series (Horner)
          15. 6.3.8.3.15. Fibonacci Series
          16. 6.3.8.3.16. Combination Formula
          17. 6.3.8.3.17. Tower of Hanoi
        4. 6.3.8.4. Arrays
          1. 6.3.8.4.1. Intro to Arrays
          2. 6.3.8.4.2. Static vs Dynamic Arrays
          3. 6.3.8.4.3. Increase Array Size
          4. 6.3.8.4.4. 2D Arrays
          5. 6.3.8.4.5. Arrays in Compilers
          6. 6.3.8.4.6. 2D Arrays in Compilers
          7. 6.3.8.4.7. 3D / nD Arrays in Compilers
        5. 6.3.8.5. Arrays ADT
          1. 6.3.8.5.1. Display Array
          2. 6.3.8.5.2. Inserting in Array
          3. 6.3.8.5.3. Deleting from Array
          4. 6.3.8.5.4. Linear & Binary Search
          5. 6.3.8.5.5. Get, Set, Avg, Max
          6. 6.3.8.5.6. Reverse & Shift
          7. 6.3.8.5.7. Check sorted Arrays
          8. 6.3.8.5.8. Merge Arrays
          9. 6.3.8.5.9. Set Operations
          10. 6.3.8.5.10. Menu Driver Program
          11. 6.3.8.5.11. Menu Driver Program
          12. 6.3.8.5.12. Convert C array Program to C++
      9. 6.3.9. Multi-Threading
        1. 6.3.9.1. Concurrency Intro
          1. 6.3.9.1.1. Introduction
          2. 6.3.9.1.2. Motivation
          3. 6.3.9.1.3. Overview
          4. 6.3.9.1.4. Threaded Program Structure
          5. 6.3.9.1.5. History
          6. 6.3.9.1.6. Launching a Thread
          7. 6.3.9.1.7. Thread Function with Arguments
          8. 6.3.9.1.8. Computer with Single Processor
          9. 6.3.9.1.9. Computer with Single Processor and Cache
          10. 6.3.9.1.10. Computer with Multiple Processors
          11. 6.3.9.1.11. Synchronization Issues
        2. 6.3.9.2. Getting Started with Threads
          1. 6.3.9.2.1. System Thread Interface
          2. 6.3.9.2.2. std::thread Class
          3. 6.3.9.2.3. Managing a Thread
          4. 6.3.9.2.4. Multiple Threads
          5. 6.3.9.2.5. Data Races
          6. 6.3.9.2.6. Data Race Consequences
        3. 6.3.9.3. Working with Shared Data
          1. 6.3.9.3.1. Critical Sections
          2. 6.3.9.3.2. Mutex Introduction
          3. 6.3.9.3.3. Mutex Class
          4. 6.3.9.3.4. Internally Synchronized Class
          5. 6.3.9.3.5. std::lock_guard
          6. 6.3.9.3.6. std::unique_lock
          7. 6.3.9.3.7. Timeouts and Mutexes
          8. 6.3.9.3.8. Multiple Reader, Single Writer
          9. 6.3.9.3.9. Shared Mutex
          10. 6.3.9.3.10. Shared Data Initialization
          11. 6.3.9.3.11. Thread Local Data
          12. 6.3.9.3.12. Lazy Initialization
          13. 6.3.9.3.13. Double-checked Locking
          14. 6.3.9.3.14. Deadlock
          15. 6.3.9.3.15. Deadlock Practical
          16. 6.3.9.3.16. Deadlock Avoidance
          17. 6.3.9.3.17. Deadlock Avoidance Practical
          18. 6.3.9.3.18. Livelock
          19. 6.3.9.3.19. Livelock Practical
        4. 6.3.9.4. Thread Synchronization
          1. 6.3.9.4.1. Thread Coordination
          2. 6.3.9.4.2. Thread Coordination Practical
          3. 6.3.9.4.3. Condition Variables
          4. 6.3.9.4.4. Condition Variables w Predicate
          5. 6.3.9.4.5. Condition Variables Practical
          6. 6.3.9.4.6. Future & Promises
          7. 6.3.9.4.7. Future & Promises Class
          8. 6.3.9.4.8. Future & Promises Examples
          9. 6.3.9.4.9. Promises and Multiple Waiting Threads
        5. 6.3.9.5. Atomic
          1. 6.3.9.5.1. Integer Operations and Threads
          2. 6.3.9.5.2. Atomic Types
          3. 6.3.9.5.3. Atomic Operations
          4. 6.3.9.5.4. Lock-free Programming
          5. 6.3.9.5.5. Lock-free Programming Practical
        6. 6.3.9.6. Asychronous
          1. 6.3.9.6.1. Asychronous Programming
          2. 6.3.9.6.2. Packaged Task
          3. 6.3.9.6.3. Async Function
          4. 6.3.9.6.4. Async and Launch Options
          5. 6.3.9.6.5. Choosing Thread Object
        7. 6.3.9.7. Parallelism
          1. 6.3.9.7.1. Overview
          2. 6.3.9.7.2. Data Parallelism
          3. 6.3.9.7.3. Standard Algorithms
          4. 6.3.9.7.4. Execution Policies
          5. 6.3.9.7.5. Algo & Exec Policies
          6. 6.3.9.7.6. New Parallel Algorithms
          7. 6.3.9.7.7. Parallel Algorithms Practical
        8. 6.3.9.8. Data Structures for Concurrency
          1. 6.3.9.8.1. Data Structures & Concurrency
          2. 6.3.9.8.2. Shared Pointer
          3. 6.3.9.8.3. Monitor Class
          4. 6.3.9.8.4. Semaphore
          5. 6.3.9.8.5. Concurrent Queue
          6. 6.3.9.8.6. Concurrent Queue w Condition Variable
          7. 6.3.9.8.7. Thread Pools
          8. 6.3.9.8.8. Thread Pools Implementation
          9. 6.3.9.8.9. Thread Pools Multiple Queues
          10. 6.3.9.8.10. Thread Pools Work Stealing
      10. 6.3.10. Example Algorithms
        1. 6.3.10.1. Non Mutating Algorithm: find()
        2. 6.3.10.2. Bidirectional iterator: is_palindrome
        3. 6.3.10.3. Dijkstra's algorithm
        4. 6.3.10.4. Output a Random Graph
        5. 6.3.10.5. Poker Monte Carlo Simulation
        6. 6.3.10.6. Kruskal's MST
        7. 6.3.10.7. Depth First vs. Breadth First Search
        8. 6.3.10.8. Alpha Beta Pruning
        9. 6.3.10.9. Reverse Polish Notation
        10. 6.3.10.10. Referential Garbage Collection
      11. 6.3.11. Libraries
        1. 6.3.11.1. The Boost Library
          1. 6.3.11.1.1. Boost.filesystem: Printing Stats About Files and Directories
          2. 6.3.11.1.2. Boost.Asio: TCP Daytime Client
          3. 6.3.11.1.3. Boost.Asio: TCP Daytime Server
          4. 6.3.11.1.4. Boost.Asio: UDP Daytime Client
          5. 6.3.11.1.5. Boost.Asio: UDP Daytime Server
    4. 6.4. Common Lisp 👽
      1. 6.4.1. Run Code From the Terminal
      2. 6.4.2. Portacle / Emacs
      3. 6.4.3. Lisp Basics
        1. 6.4.3.1. Lisp Syntax & Eval Model
        2. 6.4.3.2. Variables
        3. 6.4.3.3. Conditionals
      4. 6.4.4. Data Structures
        1. 6.4.4.1. Create Lists, plists, alists
        2. 6.4.4.2. List Manipulation
        3. 6.4.4.3. Working with Strings
        4. 6.4.4.4. Arrays & Vectors
        5. 6.4.4.5. The Cons cell
        6. 6.4.4.6. Compound Data Structures, test and key
        7. 6.4.4.7. Hash Tables
      5. 6.4.5. Iteration
        1. 6.4.5.1. List & Vector Iteration
        2. 6.4.5.2. Hash Table Iteration
        3. 6.4.5.3. Fixed / Infinite Iteration
      6. 6.4.6. All About Functions
        1. 6.4.6.1. Named Functions
        2. 6.4.6.2. Funcall and Apply
    5. 6.5. Go 🐹
      1. 6.5.1. The Birthday Paradox
      2. 6.5.2. Rock Paper Scissors
      3. 6.5.3. Employee Salary Parser
      4. 6.5.4. Mergesort Algorithm
      5. 6.5.5. Straight Flush Calculation
      6. 6.5.6. Doubly Linked List and Palindrome Checker
      7. 6.5.7. 3D Shape Calculator Using Interfaces
      8. 6.5.8. Philosopher's Problem
      9. 6.5.9. Genstack and Testing in Go
      10. 6.5.10. Dijkstra's Algorithm in Go
    6. 6.6. Haskell 🧙
      1. 6.6.1. Fundamentals
        1. 6.6.1.1. Fundamentals
        2. 6.6.1.2. Basic Types
        3. 6.6.1.3. Basic Types 2
      2. 6.6.2. Functions
        1. 6.6.2.1. Introduction to Functions
        2. 6.6.2.2. Function Definition with Patterns
        3. 6.6.2.3. Function Definition with Guards
        4. 6.6.2.4. Local Definitions
        5. 6.6.2.5. Function Currying
        6. 6.6.2.6. Solved Functions
      3. 6.6.3. Tuples
        1. 6.6.3.1. Introduction to Tuples
        2. 6.6.3.2. Access to Tuples
        3. 6.6.3.3. Decomposition of Tuples into Patterns
        4. 6.6.3.4. Empty Tuples
      4. 6.6.4. Lists
        1. 6.6.4.1. Introduction to Lists
        2. 6.6.4.2. Construction and Implementation
        3. 6.6.4.3. Lists and Patterns
        4. 6.6.4.4. Syntax in Patterns
        5. 6.6.4.5. Texts
        6. 6.6.4.6. Common List Functions
        7. 6.6.4.7. Solved List Functions
      5. 6.6.5. Higher Order Functions
        1. 6.6.5.1. Introduction to HOF
        2. 6.6.5.2. Anonymous Functions
        3. 6.6.5.3. Sections
        4. 6.6.5.4. Solved Higher Order Functions - Pt.1
        5. 6.6.5.5. Solved Higher Order Functions - Pt.2
      6. 6.6.6. Infinite Lists
        1. 6.6.6.1. Solved Infinite Lists Functions
      7. 6.6.7. Types and Typeclasses
        1. 6.6.7.1. Introduction to Types and Typeclasses
        2. 6.6.7.2. Custom Data Types
      8. 6.6.8. Binary Trees
        1. 6.6.8.1. Fundamentals of Binary Trees
        2. 6.6.8.2. Solved Binary Trees Problems
    7. 6.7. Python 🐍
      1. 6.7.1. Fundamentals
        1. 6.7.1.1. User Input
        2. 6.7.1.2. Lists
        3. 6.7.1.3. List Operations
        4. 6.7.1.4. Loops
        5. 6.7.1.5. Tuples
        6. 6.7.1.6. Dicts
        7. 6.7.1.7. Dict Operations
        8. 6.7.1.8. Sets
        9. 6.7.1.9. Unpacking
        10. 6.7.1.10. Generators
        11. 6.7.1.11. OOP
        12. 6.7.1.12. Imports
        13. 6.7.1.13. Error Handling
        14. 6.7.1.14. Function Decorators
        15. 6.7.1.15. Lambdas
      2. 6.7.2. Working with Python Projects
        1. 6.7.2.1. Using pip and venv
        2. 6.7.2.2. Setting up Poetry
        3. 6.7.2.3. Setting up UV
        4. 6.7.2.4. Python Repository Setup
      3. 6.7.3. Standard Library
        1. 6.7.3.1. Typing Library: Type Hints
        2. 6.7.3.2. Itertools
        3. 6.7.3.3. Itertools pt.2
        4. 6.7.3.4. Itertools pt.3
        5. 6.7.3.5. Functools: Caching
        6. 6.7.3.6. Functools: Partial & Reduce
        7. 6.7.3.7. Functools: Wrappers
        8. 6.7.3.8. Functools: Dispatches and Ordering
    8. 6.8. Ruby 💎
      1. 6.8.1. Ruby Fundamentals
      2. 6.8.2. OOP
      3. 6.8.3. :params vs @instance_variables
      4. 6.8.4. Ruby's Functional Paradigms
      5. 6.8.5. Setup a Redis Rate Limiter Middleware in Ruby
      6. 6.8.6. Use SQLite as Your Rate Limiter in Ruby
      7. 6.8.7. Quick Sinatra Setup
      8. 6.8.8. ERB with HTMX
      9. 6.8.9. Clean Pagination in Sinatra
    9. 6.9. SQL 📊
      1. 6.9.1. Part 1 - Fundamentals
      2. 6.9.2. Part 2 - GROUP BY
      3. 6.9.3. Part 3 - JOIN
      4. 6.9.4. Part 4 - CASE
      5. 6.9.5. Part 5 - Subqueries

Debugging Grimoire

Bitwise Operators

Video link