diff --git a/chapters/01_entry_points.md b/chapters/01_entry_points.md index 82f2ff6..2246bc8 100644 --- a/chapters/01_entry_points.md +++ b/chapters/01_entry_points.md @@ -26,11 +26,12 @@ When it comes to contents, the reader is often thought similar to who's writing: Whenever too much technical proficiency is required to even read documentation itself, knowledge results inaccesible and confined in the ivory tower. An important detail to notice here is that this is an antipattern that reinforces the segmentation between who is allowed in and who is not: only previously educated ones can access, while others are kept out. Not filtering information becomes a filter to who can engage with it. Contents need to be curated, that does not mean over-simplified or generalized, but rather made legible. -To cultivate legibility is but an easy task, especially when dealing with computer technology: a cards castle of abstractions built on top of other abstractions. -!!! note "need abstraction example" +![Structured in six columns: system, processing, memory, storage, networking, human interface. Organized with seven depth: from user space interfaces down to virtual, bridges, functional, devices control, hardware interfaces, electronics.](../img/kernel.png "Linux kernel map. Reminds me of the iceberg meme template.") -These abstractions are more than just metaphors: they are interconnected narrations and entwined plots and main characters at the same time. The purpose of an abstraction is to act as a symbol, as a mentally maneuverable concept, free from its technical implementation details. Yet the piling up of these structures makes for a dense forest with no clear path to follow in sight. Programming is the perfect rabbit hole because of the depth and complexity of each layer that makes up for the digital stack. +![On the iceberg tip Ubuntu, Nano, descending toward Manjaro, Fedora, down to Arch, Debian, dwm, Suckless, and in the depth gopher, plan 9, etc.](../img/iceberg.jpg "Linux iceberg meme.") + +To cultivate legibility is but an easy task, especially when dealing with computer technology: a cards castle of abstractions built on top of other abstractions. These abstractions are more than just metaphors: they are interconnected narrations and entwined plots and main characters at the same time. The purpose of an abstraction is to act as a symbol, as a mentally maneuverable concept, free from its technical implementation details. Yet the piling up of these structures makes for a dense forest with no clear path to follow in sight. Programming is the perfect rabbit hole because of the depth and complexity of each layer that makes up for the digital stack. Take a course such the one presented by Noam Nisan and Shimon Schocken in _From NAND to Tetris_, where they slowly build a programmable computer able to run the classic game starting from simple logic gates, so basically from microchips and electronics. One layer after the other, from boolean operations with 0 and 1 to registers and CPUs, from machine language to high level programming. Here one can try to unwind the coil and start understanding programming from scratch scratch, but this approach is best suited to a university curriculum, and it's often not real effective when facing real-world problems, with real-world constraints, and real-world circumstances. diff --git a/img/iceberg.jpg b/img/iceberg.jpg new file mode 100644 index 0000000..4c8c4e1 Binary files /dev/null and b/img/iceberg.jpg differ diff --git a/img/kernel.png b/img/kernel.png new file mode 100644 index 0000000..e6c3dfb Binary files /dev/null and b/img/kernel.png differ