- Introduction
- Debugging Grimoire - The Tome Of Cursed Knowledge
- 1. DevOps ☁️
- 1.1. Set Up SSH for GitHub
- 1.2. Minimal Docker Image for Ruby
- 1.3. Deploying mdBook to Github Pages with GitHub Actions
- 1.4. Cloud Run & GitHub Actions CI/CD Setup
- 1.5. How to Use Google Cloud Domain Mapping to setup a Custom Domain to your container
- 1.6. How to Host Images (or other files) on Google Cloud Storage
- 2. Virtualization
- 2.1. Set Up PostgreSQL in a Google Cloud VM using Docker Compose
- 2.2. Create an HMAC Server API for the VM
- 2.3. Set up a LAMP server
- 2.4. Virt Manager Install on Arch Linux
- 2.5. Using Virt Manager and Samba to retrieve old songs
- 3. Linux 🐧
- 3.1. Debian Firewall Configuration With nftables
- 3.2. Arch Linux Ufw Configuration
- 3.3. Linux Process Management
- 3.4. Build Something From Source
- 4. Database 🐘
- 4.1. PostgreSQL Local Setup Guide
- 4.2. How to Setup Rate Limiting in PostgreSQL
- 4.3. How to Boot Up Redis on Debian
- 5. General Cheat Sheet 💡
- 5.1. NeoVim Cheat Sheet
- 5.2. GitHub Cheat Sheet
- 5.3. YAML Cheat Sheet
- 6. Programming Languages 🖥️
- 6.1. Bash 🐚
- 6.1.1. Bash Completion Tool
- 6.1.2. Grep Guide
- 6.1.3. Curl Guide
- 6.1.4. Example scripts
- 6.1.4.1. Fizzbuzz but cursed
- 6.1.4.2. DNA Hamming
- 6.1.4.3. Bob
- 6.1.4.4. Scrabble Score Counter
- 6.1.4.5. Armstrong Numbers
- 6.2. C 🏗️
- 6.2.1. Debugging and Build Tools
- 6.2.1.1. Usage of Makefiles
- 6.2.1.2. Usage of GDB
- 6.2.1.3. Usage of Valgrind
- 6.2.1.4. Usage of GCC/Clang Sanitizer Flags
- 6.2.2. Fundamentals
- 6.2.2.1. Usage of enums
- 6.2.2.2. Usage of cases (switch-case)
- 6.2.2.3. Employee Salary and SSN Generator
- 6.2.2.4. Sea Elephants Weight Generator
- 6.2.2.5. Poker Monte Carlo Simulation
- 6.2.2.6. Bubble Sort
- 6.2.2.7. C as a CLI Tool
- 6.2.2.8. File I/O and Rational Numbers
- 6.2.3. Data Structures
- 6.2.3.1. Simple Linked List
- 6.2.3.2. Working With Linked Lists
- 6.2.3.3. Doubly Linked List and Merge Sort
- 6.2.3.4. Binary Tree
- 6.2.4. ncurses
- 6.2.4.1. Getting Started
- 6.2.4.2. User Input in Menu and Arrow Keys
- 6.2.4.3. A Rogue Like Game Engine
- 6.2.4.4. Input Modes, Color Witchcraft, Ctrl+char
- 6.2.4.5. MenuBar with Submenus
- 6.2.4.6. Utilities
- 6.2.4.7. Color palettes, Chars and Lines
- 6.3. C++ 🤖
- 6.3.1. Fundamentals
- 6.3.1.1. Arrays
- 6.3.1.2. Structures
- 6.3.1.3. Pointers
- 6.3.1.4. Referencing
- 6.3.1.5. Pointer to Struct
- 6.3.1.6. Functions
- 6.3.1.7. Parameter Passing Methods
- 6.3.1.8. Array As Parameter
- 6.3.1.9. Struct As Parameter
- 6.3.2. OOP
- 6.3.2.1. Converting a C program to C++ OOP
- 6.3.2.2. Monolithic Program to Modular C++ Class
- 6.3.2.3. OOP with Scope Resolution Operators
- 6.3.2.4. Operator Overloading
- 6.3.2.5. Deep Copy Constructor
- 6.3.2.6. Templates
- 6.3.2.7. More About Templates
- 6.3.2.8. Inheritance and derived classes
- 6.3.2.9. Inheritance and Polymorphism
- 6.3.2.10. Virtual Function Behavior
- 6.3.2.11. Shapes with OOP
- 6.3.2.12. Move Semantics
- 6.3.2.13. Move Semantics pt.2
- 6.3.3. Recursion
- 6.3.4. Modern C++ Features
- 6.3.4.1. Functional Objects
- 6.3.4.2. Ordered Map vs Unordered Map
- 6.3.4.3. Non Mutating Algorithm: find()
- 6.3.4.4. Lambda expressions: for_each
- 6.3.4.5. Bidirectional iterator: is_palindrome
- 6.3.4.6. Tuples
- 6.3.4.7. Smart Pointers
- 6.3.5. Example Algorithms
- 6.3.5.1. Dijkstra's algorithm
- 6.3.5.2. Output a Random Graph
- 6.3.5.3. Poker Monte Carlo Simulation
- 6.3.5.4. Kruskal's MST
- 6.3.5.5. Depth First vs. Breadth First Search
- 6.3.5.6. Alpha Beta Pruning
- 6.3.5.7. Reverse Polish Notation
- 6.3.5.8. Referential Garbage Collection
- 6.3.6. The Boost Library
- 6.3.6.1. Boost.filesystem: Printing Stats About Files and Directories
- 6.3.6.2. Boost.Asio: TCP Daytime Client
- 6.3.6.3. Boost.Asio: TCP Daytime Server
- 6.3.6.4. Boost.Asio: UDP Daytime Client
- 6.3.6.5. Boost.Asio: UDP Daytime Server
- 6.4. Go 🐹
- 6.4.1. The Birthday Paradox
- 6.4.2. Rock Paper Scissors
- 6.4.3. Employee Salary Parser
- 6.4.4. Mergesort Algorithm
- 6.4.5. Straight Flush Calculation
- 6.4.6. Doubly Linked List and Palindrome Checker
- 6.4.7. 3D Shape Calculator Using Interfaces
- 6.4.8. Philosopher's Problem
- 6.4.9. Genstack and Testing in Go
- 6.4.10. Dijkstra's Algorithm in Go
- 6.5. Haskell 🧙
- 6.5.1. Fundamentals
- 6.5.1.1. Fundamentals
- 6.5.1.2. Basic Types
- 6.5.1.3. Basic Types 2
- 6.5.2. Functions
- 6.5.2.1. Introduction to Functions
- 6.5.2.2. Function Definition with Patterns
- 6.5.2.3. Function Definition with Guards
- 6.5.2.4. Local Definitions
- 6.5.2.5. Function Currying
- 6.5.2.6. Solved Functions
- 6.5.3. Tuples
- 6.5.3.1. Introduction to Tuples
- 6.5.3.2. Access to Tuples
- 6.5.3.3. Decomposition of Tuples into Patterns
- 6.5.3.4. Empty Tuples
- 6.5.4. Lists
- 6.5.4.1. Introduction to Lists
- 6.5.4.2. Construction and Implementation
- 6.5.4.3. Lists and Patterns
- 6.5.4.4. Syntax in Patterns
- 6.5.4.5. Texts
- 6.5.4.6. Common List Functions
- 6.5.4.7. Solved List Functions
- 6.6. Python 🐍
- 6.6.1. Fundamentals
- 6.6.1.1. User Input
- 6.6.1.2. Lists
- 6.6.1.3. List Operations
- 6.6.1.4. Loops
- 6.6.1.5. Tuples
- 6.6.1.6. Dicts
- 6.6.1.7. Dict Operations
- 6.6.1.8. Sets
- 6.6.1.9. Unpacking
- 6.6.1.10. Generators
- 6.6.1.11. OOP
- 6.6.1.12. Imports
- 6.6.1.13. Error Handling
- 6.6.1.14. Function Decorators
- 6.6.1.15. Lambdas
- 6.6.2. Working with Python Projects
- 6.6.2.1. Using pip and venv
- 6.6.2.2. Setting up Poetry
- 6.6.2.3. Setting up UV
- 6.6.2.4. Python Repository Setup
- 6.6.3. Standard Library
- 6.6.3.1. Typing Library: Type Hints
- 6.6.3.2. Itertools
- 6.6.3.3. Itertools pt.2
- 6.6.3.4. Itertools pt.3
- 6.6.3.5. Functools: Caching
- 6.6.3.6. Functools: Partial & Reduce
- 6.6.3.7. Functools: Wrappers
- 6.6.3.8. Functools: Dispatches and Ordering
- 6.7. Ruby 💎
- 6.7.1. Ruby Fundamentals
- 6.7.2. OOP
- 6.7.3. :params vs @instance_variables
- 6.7.4. Ruby's Functional Paradigms
- 6.7.5. Setup a Redis Rate Limiter Middleware in Ruby
- 6.7.6. Use SQLite as Your Rate Limiter in Ruby
- 6.7.7. Quick Sinatra Setup
- 6.7.8. ERB with HTMX
- 6.7.9. Clean Pagination in Sinatra
- 6.8. SQL 📊
- 6.8.1. Part 1 - Fundamentals
- 6.8.2. Part 2 - GROUP BY
- 6.8.3. Part 3 - JOIN
- 6.8.4. Part 4 - CASE
- 6.8.5. Part 5 - Subqueries