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 / web_vs_native_apps_performance_efficiency_and_security.md
Created August 3, 2026 18:29
Are Web-Based Applications Less Efficient Than Native Applications?

Are Web-Based Applications Less Efficient Than Native Applications?

CC0

Disclaimer: ChatGPT generated document.

The common question “Are web apps slower than native apps?” is usually answered too narrowly.

Most discussions focus on perceived speed: how quickly a page loads, whether scrolling is smooth, or whether a button responds immediately. Those factors matter, but they cover only one part of the comparison. An application can feel fast while consuming significantly more memory, performing more background work, using more battery, creating more network traffic, and exposing a larger attack surface than an equivalent native application.

@MangaD
MangaD / documentation_tools_compared.md
Created August 3, 2026 16:23
Choosing a Documentation Tool: Doxygen, Sphinx, AsciiDoc, LaTeX, and the Major Alternatives

Choosing a Documentation Tool: Doxygen, Sphinx, AsciiDoc, LaTeX, and the Major Alternatives

CC0

Disclaimer: ChatGPT generated document.

Choosing a documentation tool is more complicated than selecting the product with the longest feature list. Tools such as Doxygen, Sphinx, AsciiDoc, MkDocs, Docusaurus, and LaTeX are often compared directly, but they do not all solve the same problem.

Some tools extract reference documentation from source code. Others are designed for writing manuals, tutorials, and architecture guides. Some specialize in documentation websites, while others focus on high-quality printed documents or scientific publishing.

@MangaD
MangaD / terminal_user_interfaces.md
Created August 3, 2026 12:12
The Complete Guide to Terminal User Interfaces (TUIs)

The Complete Guide to Terminal User Interfaces (TUIs)

CC0

Disclaimer: ChatGPT generated document.

A TUI (Terminal User Interface) is an interactive user interface rendered inside a terminal. It occupies the middle ground between a traditional command-line interface (CLI) and a graphical user interface (GUI): keyboard-centric, script-friendly and remote-friendly like a CLI, but with windows/panels, menus, tables, forms, dialogs, mouse support, colors, scrolling, and sometimes even graphics.

Modern TUIs have undergone something of a renaissance. Rust, Go, Python, C++, JavaScript, .NET, and other ecosystems now have sophisticated frameworks, while modern terminals support Unicode, 24-bit color, hyperlinks, mouse events, advanced keyboard protocols, and—in some terminals—actual images.

@MangaD
MangaD / shell_editors.md
Created August 2, 2026 16:55
Main Shell Editors: A Guide to Terminal-Based Text Editors

Main Shell Editors: A Guide to Terminal-Based Text Editors

CC0

Disclaimer: ChatGPT generated document.

If you're working in a Unix/Linux shell, the "main" text editors are generally vi/vim, nano, and emacs. More recently, Neovim and editors like Helix have also become popular. Here's how they compare.

Editor Best for Learning curve Usually installed
@MangaD
MangaD / cpp_rules_of_decltype.md
Created August 2, 2026 15:24
The Rules of `decltype` in C++

The Rules of decltype in C++

CC0

Disclaimer: ChatGPT generated document.

decltype in C++ has a surprisingly small set of rules, but one special case makes it look complicated.

The key is to separate two rule sets.

@MangaD
MangaD / cpp_top_level_vs_low_level_const_qualification.md
Created August 2, 2026 15:22
Top-Level vs Low-Level `const` Qualification in C++

Top-Level vs Low-Level const Qualification in C++

CC0

Disclaimer: ChatGPT generated document.

In C++, low-level and top-level const qualification describe where a const applies, especially with pointers.

Top-level qualification

@MangaD
MangaD / cpp_std_move_implementation.md
Created August 2, 2026 15:11
How `std::move` Creates an Rvalue Reference in C++

How std::move Creates an Rvalue Reference in C++

CC0

Disclaimer: ChatGPT generated document.

The key point is that std::move does not actually move anything, and it doesn't create a new object. It simply casts an expression to an rvalue reference, allowing move constructors or move assignment operators to be selected.

A simplified implementation looks like this:

@MangaD
MangaD / cpp_forward_reference_vs_rvalue_reference.md
Created August 2, 2026 15:05
C++ Forwarding Reference vs. Rvalue Reference: What's the Difference?

C++ Forwarding Reference vs. Rvalue Reference: What's the Difference?

CC0

Disclaimer: ChatGPT generated document.

The terms forwarding reference and rvalue reference are closely related because they both use && syntax, but they behave differently depending on the context.

Feature Rvalue Reference Forwarding Reference
@MangaD
MangaD / cpp_professional_ecosystem.md
Created August 1, 2026 11:52
The Professional C++ Ecosystem: A Comprehensive Guide to the Resources Every C++ Developer Should Know

The Professional C++ Ecosystem: A Comprehensive Guide to the Resources Every C++ Developer Should Know

CC0

Disclaimer: ChatGPT generated document.

One of the defining characteristics of the C++ community is that it has built a remarkably rich ecosystem around the language. Unlike many newer languages that have a single official website and a centralized package manager, C++ has evolved over four decades. Its knowledge is distributed across standards committees, books, conferences, blogs, compiler vendors, open-source libraries, and a passionate community of experts.

As a result, experienced C++ developers often reference things like cppreference, Godbolt, WG21 papers, CppCon talks, or Effective Modern C++ as though everyone knows what they are. If you're new to the professional C++ world, these references can feel like insider jargon.

@MangaD
MangaD / progressive_delivery.md
Created August 1, 2026 11:42
Progressive Delivery: Modern Techniques for Safe Software Releases

Progressive Delivery: Modern Techniques for Safe Software Releases

CC0

Disclaimer: ChatGPT generated document.

Modern software development has shifted away from the traditional approach of deploying a new version of an application to every user simultaneously. While this "big bang" deployment model is simple, it carries significant risk: if a defect reaches production, every user is affected, and recovering can be time-consuming and disruptive.

To address these challenges, organizations have adopted a collection of practices known as progressive delivery. Progressive delivery is a software deployment strategy that gradually exposes new features or versions to users while continuously monitoring system health and user experience. Rather than viewing deployment as a single event, progressive delivery treats it as a controlled, observable process that minimizes risk and enables rapid recovery.