Skip to content

Instantly share code, notes, and snippets.

View MangaD's full-sized avatar
📚
studying

David Gonçalves MangaD

📚
studying
View GitHub Profile
@MangaD
MangaD / cpp_using_typedef.md
Created August 25, 2026 15:40
C++ `using`, `typedef`, and Type Aliases: A Practical Guide

C++ using, typedef, and Type Aliases: A Practical Guide

CC0

Disclaimer: ChatGPT generated document.

C++ gives you several mechanisms for introducing names for types and related entities. At first glance, constructs such as typedef and using can look like little more than conveniences for shortening long type names:

typedef unsigned long long ull;
@MangaD
MangaD / docker_vms_containers_images_explained.md
Last active August 23, 2026 18:42
Virtual Machines, Docker Containers, Images, and Dockerfiles

Virtual Machines, Docker Containers, Images, and Dockerfiles

CC0

Disclaimer: ChatGPT generated document.

Virtual machines and containers solve a similar problem: how can we run applications in isolated environments without letting them interfere with each other?

The major difference is what they virtualize.

@MangaD
MangaD / architecture_decisions_and_records.md
Created August 23, 2026 12:47
Architecture Decisions (ADs) and Architecture Decision Records (ADRs) in Software Engineering

Architecture Decisions (ADs) and Architecture Decision Records (ADRs) in Software Engineering

CC0

Disclaimer: ChatGPT generated document.

An architecture decision (AD) is a significant design choice about a software system’s architecture. An architecture decision record (ADR) is the document that captures that decision, its context, and why it was made.

Architecture Decision (AD)

@MangaD
MangaD / gitlab_cicd_first_principles.md
Created August 22, 2026 23:04
GitLab CI/CD From First Principles

GitLab CI/CD From First Principles

CC0

Disclaimer: ChatGPT generated document.

GitLab can feel confusing to a beginner because several different systems are presented through one interface.

A repository lives in GitLab. A pipeline is defined in GitLab. Jobs appear in GitLab. Logs appear in GitLab. Yet the commands in those jobs may actually execute on another computer, inside a virtual machine, a Docker container, or even a Kubernetes cluster.

@MangaD
MangaD / cpp_predefined_identifiers_and_macros.md
Last active August 21, 2026 13:30
Predefined Identifiers and Macros in C++: Standard, Portable, and Compiler-Specific

Predefined Identifiers and Macros in C++: Standard, Portable, and Compiler-Specific

CC0

Disclaimer: ChatGPT generated document.

C++ has several different kinds of “names supplied by the implementation,” and they are easy to mix together. The clean taxonomy is:

  1. Standard predefined identifiers — supplied by the C++ language, but not macros.
  2. Standard predefined macros — guaranteed by ISO C++ under their specified conditions.
@MangaD
MangaD / software_development_platform_landscape.md
Created August 20, 2026 18:29
The Software Development Platform Landscape: From Bug Trackers to Integrated DevOps

The Software Development Platform Landscape: From Bug Trackers to Integrated DevOps

CC0

Disclaimer: ChatGPT generated document.

Software development relies on much more than source code alone. Behind almost every engineering organization is a collection of systems for tracking bugs, reviewing code, managing source repositories, planning work, running automated tests, deploying software, and coordinating releases.

Over the past three decades, the tools used for these jobs have changed considerably. Earlier software organizations commonly assembled their development infrastructure from specialized products: Bugzilla for defect tracking, Review Board or Gerrit for code review, CVS, Subversion, Perforce, or Git for source control, and Jenkins for automated builds and testing. Each system addressed a relatively well-defined part of the development lifecycle.

@MangaD
MangaD / neovim_vs_vim.md
Created August 20, 2026 00:03
Neovim vs. Vim: A Thorough and Complete Feature & Architecture Diff

Neovim vs. Vim: A Thorough and Complete Feature & Architecture Diff

CC0

Disclaimer: ChatGPT generated document.

The important caveat is that the answer has changed substantially over time.

In 2015–2018, “Neovim can do X, Vim can't” included asynchronous jobs, terminals, channels, etc. Modern Vim has acquired many analogous features. As of August 2026, with current Neovim 0.12 versus Vim 9.2, the genuinely important differences are mostly about architecture, APIs, Lua, Tree-sitter, LSP, UI extensibility, and the plugin ecosystem, rather than basic editing capability. (Neovim)

@MangaD
MangaD / cpp_core_dumps.md
Created August 11, 2026 16:38
Core Dumps in C/C++: A Comprehensive Guide to Crash Analysis and Debugging

Core Dumps in C/C++: A Comprehensive Guide to Crash Analysis and Debugging

CC0

Disclaimer: ChatGPT generated document.

A core dump is a snapshot of a process at or near the moment it crashes. In C and C++, it is one of the most useful artifacts for debugging failures that are hard to reproduce, especially segmentation faults, aborts, illegal instructions, assertion failures, memory corruption, and crashes that occur only in production.

What a core dump contains

@MangaD
MangaD / taxonomy_programming_languages.md
Created August 11, 2026 09:53
A Comprehensive Taxonomy of Programming Language Concepts, Features, and Tooling

A Comprehensive Taxonomy of Programming Language Concepts, Features, and Tooling

CC0

Disclaimer: ChatGPT generated document.

Programming languages can look very different on the surface, but underneath they are built from many of the same recurring concepts. C++ has templates and RAII, Java has interfaces and garbage collection, Rust has traits and ownership, Haskell has algebraic data types and type classes, Python has dynamic typing and comprehensions, and JavaScript has prototypes and promises. These features differ in syntax and implementation, but they often solve the same fundamental problems: how to represent data, organize code, control execution, manage memory, express abstraction, handle errors, and coordinate concurrent work.

This taxonomy is intended as a broad, language-independent map of that territory. It distinguishes the core language from the standard library, runtime

@MangaD
MangaD / clangd.md
Created August 9, 2026 10:38
clangd and Language Servers: History, Architecture, LSP, and How Modern Code Intelligence Works

clangd and Language Servers: History, Architecture, LSP, and How Modern Code Intelligence Works

CC0

Disclaimer: ChatGPT generated document.

The useful way to understand clangd is to first understand the larger idea it belongs to: language servers and the Language Server Protocol (LSP).

At a high level: