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 / inversion_of_control.md
Created August 1, 2026 10:02
Inversion of Control (IoC): a comprehensive guide

Inversion of Control (IoC): a comprehensive guide

CC0

Disclaimer: ChatGPT generated document.

Inversion of Control (IoC) is a software-design principle in which a component does not control the overall flow of execution or the creation/selection of its dependencies. Instead, some external mechanism—such as a framework, container, runtime, event loop, or orchestrator—controls those things and calls your code at the appropriate time.

The shortest useful description is:

@MangaD
MangaD / software_building_blocks.md
Created July 31, 2026 19:43
Software Building Blocks Explained: Libraries, Frameworks, Engines, SDKs, APIs, Runtimes, and More

Software Building Blocks Explained: Libraries, Frameworks, Engines, SDKs, APIs, Runtimes, and More

CC0

Disclaimer: ChatGPT generated document.

Software engineering is filled with terminology that often sounds similar but refers to very different concepts. Terms such as library, framework, engine, SDK, API, runtime, platform, and middleware are frequently used interchangeably by beginners, even though each describes a different role within a software system.

One reason for this confusion is that modern software products often belong to multiple categories simultaneously. For example, a game engine may also contain libraries, frameworks, an SDK, a runtime, a plugin system, and development tools. Likewise, a web framework may include dozens of libraries, command-line tools, templates, middleware, and a dependency injection container.

@MangaD
MangaD / production_software_engineering.md
Last active July 27, 2026 17:51
Why Do We Call It "Production" in Software Engineering?

Why Do We Call It "Production" in Software Engineering?

CC0

Disclaimer: ChatGPT generated document.

If you've spent any time around software engineers, you've probably heard phrases like:

  • "Don't test in production."
  • "The deployment to production failed."
@MangaD
MangaD / history_worlds_largest_computer_and_technological_companies.md
Created July 27, 2026 10:31
A History of the World's Largest Computer and Technology Companies (1911–Present)

A History of the World's Largest Computer and Technology Companies (1911–Present)

CC0

Disclaimer: ChatGPT generated document.

The history of the computer industry is, in many ways, the story of a handful of companies that each dominated a different era. Leadership shifted as computing evolved—from punch-card machines to mainframes, personal computers, the internet, smartphones, cloud computing, and AI.

Here's a chronological overview of the biggest and most influential computer-related companies.

@MangaD
MangaD / classes_of_computers.md
Created July 27, 2026 10:25
Classes of Computers: An Overview and Their History

Classes of Computers: An Overview and Their History

CC0

Disclaimer: ChatGPT generated document.

Computers can be classified in several ways, such as by their size, performance, purpose, or architecture. One of the oldest and most widely used classifications groups computers according to the scale of problems they are designed to solve and the number of users or tasks they can support. This historical classification includes categories such as supercomputers, mainframes, minicomputers, and personal computers, and has since expanded to include servers, workstations, mobile devices, and embedded systems.

Although advances in technology have blurred the boundaries between many of these categories—for example, a modern smartphone can outperform many computers from previous decades—the traditional classes remain useful for understanding the evolution of co

@MangaD
MangaD / cpp_type_inference.md
Created July 19, 2026 04:53
Type inference in C++

Type inference in C++

CC0

Disclaimer: ChatGPT generated document.

Type inference is the compiler’s ability to determine a type from surrounding code instead of requiring the programmer to spell it out. C++ does not have one unified inference mechanism; it has several related systems:

  • Template argument deduction
  • auto placeholder deduction
@MangaD
MangaD / systems_thinking_systems_programming.md
Created July 15, 2026 00:56
Systems Thinking and Systems Programming

Systems Thinking and Systems Programming

CC0

Disclaimer: ChatGPT generated document.

Understanding Software from the Whole System Down to the Machine

Modern software engineering operates across an extraordinary range of abstraction.

@MangaD
MangaD / cpp_dialects.md
Created July 13, 2026 18:50
C++: A Language of Many Dialects

C++: A Language of Many Dialects

CC0

Disclaimer: ChatGPT generated document.

Introduction

C++ is often described as a general-purpose or multi-purpose programming language. While this description is accurate, it is also somewhat incomplete. Many programming languages can be applied to a wide range of problems, yet relatively few exhibit the remarkable diversity found within the C++ ecosystem.

@MangaD
MangaD / failure_oriented_testing.md
Created July 12, 2026 17:39
Testing Software Beyond “It Works”: A Practical Guide to Failure-Oriented Testing

Testing Software Beyond “It Works”: A Practical Guide to Failure-Oriented Testing

CC0

Disclaimer: ChatGPT generated document.

Most developers instinctively write tests that prove their code works. That’s necessary — but it’s not sufficient.

Real-world software rarely fails because the “happy path” is broken.

@MangaD
MangaD / unix_awk.md
Created July 6, 2026 11:30
🧮 `awk` — the structured text processing powerhouse

🧮 awk — the structured text processing powerhouse

CC0

Disclaimer: ChatGPT generated document.

awk is where things level up.

If: