Writing of mine that does exactly what it says on the tin.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Electronics
From_CPU_Design_To_JavaScript
Not_Quite_A_Computer
.gitignore
Makefile
README.md
build.sh

README.md

Ruining The Magic

Some (in-progress) books that ruin the magic of computers.

Yeah, this is ridiculously freaking ambitious, but I need something to fill the endless free time I seem to have.

Possible Books

These are the books I'm considering writing. I'm still unsure of the order I'll write them in, and what I'll write vs what I'll find preexisting things to point people towards.

These books are intended to provide an overview of the subject matter, not detailed explanations. As such, there will be things that are left out. I'll do my best to include references to places you can learn more.

They will be kept as small as possible while explaining the basics of the subjects they discuss. Each book will build on the previous books, but I'll try to make them not rely on reading the previous ones if possible. (I'm not sure this is possible.)

Some may wind up being multiple smaller books; there's quite a bit of information to discuss.

  • Physics — the physics of how computers work, and what needs to be considered when working at such a small scale.
  • Electrical — analog electronics, digital electronics, and boolean algebra.
  • Not Quite A Computer — Walk-through of designing a calculator.
  • Hardware — memory, processor design, buses.

Software Books

  • Programming — what programming is, styles of it (functional, imperative, object-oriented, etc), explaing the relations of high-level → low-level (non-assembly variety) → assembly → machine code.
  • Browsers (as an avenue to discuss other things) — HTML, CSS, JS (misuses, features, problems, etc); network (sockets, HTTP, SSL/TLS), browser-specific aspects of rendering.
  • GUI frameworks — High-level overview of how they work, some commonly-used ones (GTK, Qt, Cocoa, whatever Windows uses, etc), common limitations/problems.
  • Rendering stack — Xorg, Wayland, etc.
  • Drivers
  • Kernels — purpose, types (monolithic, hybrid, microkernel) and designs thereof.
  • Bootloaders
  • Firmware/(U)EFI/BIOS

Virtualization, Chroots, and Jails

  • Chroots
  • FreeBSD Jails
  • Containers
    • Linux Containers (LXC)
      • Docker
    • Solaris Containers and Solaris Zones
  • Virtual Machines
    • Hypervisors (aka Virtual Machine Managers)

Design

  • Desktop metaphor — history, the gradual movement away from it over the years, alternatives to it, etc.

License

The content of this project itself is licensed under the Creative Commons Attribution-ShareAlike 4.0 license, and the underlying source code used to format and display that content is licensed under the MIT license.