If there is one thing that makes Ciro Santilli learn German, this is it (the Romance language are all the same, so reading them is basically covered for Ciro already).
A computer is a highly layered system, and so you have to decide which layers you are the most interested in studying.
Although the layer are somewhat independent, they also sometimes interact, and when that happens it usually hurts your brain. E.g., if compilers were perfect, no one optimizing software would have to know anything about microarchitecture. But if you want to go hardcore enough, you might have to learn some lower layer.
It must also be said that like in any industry, certain layers are hidden in commercial secrecy mysteries making it harder to actually learn them. In computing, the lower level you go, the more closed source things tend to become.
But as you climb down into the abyss of low level hardcoreness, don't forget that making usefulness is more important than being hardcore: Figure 1. "xkcd 378: Real Programmers".
First, the most important thing you should know about this subject: cirosantilli.com/linux-kernel-module-cheat/should-you-waste-your-life-with-systems-programming
Here's a summary from low-level to high-level:
- semiconductor physical implementation this level is of course the most closed, but it is fun to try and peek into it from any openings given by commercials and academia:
- photolithography, and notably photomask design
- register transfer level
- interactive Verilator fun: Is it possible to do interactive user input and output simulation in VHDL or Verilog?
- more importantly, and much harder/maybe impossible with open source, would be to try and set up a open source standard cell library and supporting software to obtain power, performance and area estimates
- Are there good open source standard cell libraries to learn IC synthesis with EDA tools? on Quora
- the most open source ones are some initiatives targeting FPGAs, e.g. symbiflow.github.io/, www.clifford.at/icestorm/
- qflow is an initiative targeting actual integrated circuits
- microarchitecture: a good way to play with this is to try and run some minimal userland examples on gem5 userland simulation with logging, e.g. see on the Linux Kernel Module Cheat:This should be done at the same time as books/website/courses that explain the microarchitecture basics.
- instruction set architecture: a good approach to learn this is to manually write some userland assembly with assertions as done in the Linux Kernel Module Cheat e.g. at:
- github.com/cirosantilli/linux-kernel-module-cheat/blob/9b6552ab6c66cb14d531eff903c4e78f3561e9ca/userland/arch/x86_64/add.S
- cirosantilli.com/linux-kernel-module-cheat/x86-userland-assembly
- learn a bit about calling conventions, e.g. by calling C standard library functions from assembly:
- you can also try and understand what some simple C programs compile to. Things can get a bit hard though when
-O3
is used. Some cute examples:
- executable file format, notably executable and Linkable Format. Particularly important is to understand the basics of:
- address relocation: How do linkers and address relocation work?
- position independent code: What is the -fPIE option for position-independent executables in GCC and ld?
- how to observe which symbols are present in object files, e.g.:
- how C++ uses name mangling What is the effect of extern "C" in C++?
- how C++ template instantiation can help reduce link time and size: Explicit template instantiation - when is it used?
- operating system. There are two ways to approach this:
- learn about the Linux kernel Linux kernel. A good starting point is to learn about its main interfaces. This is well shown at Linux Kernel Module Cheat:
- system calls
- write some system calls in
- pure assembly:
- C GCC inline assembly:
- write some system calls in
- learn about kernel modules and their interfaces. Notably, learn about to demystify special files such
/dev/random
and so on: - learn how to do a minimal Linux kernel disk image/boot to userland hello world: What is the smallest possible Linux implementation?
- learn how to GDB Step debug the Linux kernel itself. Once you know this, you will feel that "given enough patience, I could understand anything that I wanted about the kernel", and you can then proceed to not learn almost anything about it and carry on with your life
- system calls
- write your own (mini-) OS, or study a minimal educational OS, e.g. as in:
- learn about the Linux kernel Linux kernel. A good starting point is to learn about its main interfaces. This is well shown at Linux Kernel Module Cheat:
- programming language
From the abstract:Ciro Santilli couldn't agree more... notably students must have a flexible choice of what to learn.
Much money, his student went on to say, is spent by various Governments in attempting to discover those people whose thorough education may be expected to bring in a return of value to the State, and the question how best to discover latent genius is an eminently practical one. After cogitation, Prof. Ostwald came to the conclusion that it is those students who cannot be kept on the rails - that is, who are not contented with methodical teaching - who have within them the seeds of genius
The approach many courses take to physics, specially "modern Physics" is really bad, this is how it should be taught:
- start by describing experiments that the previous best theory did not explain, see also: Section "Physics education needs more focus on understanding experiments and their history"
- then, give the final formula for the next best theory
- then, give all the important final implications of that formula, and how it amazingly describes the experiments. In particular this means: doing physics means calculating a number
- then, give some mathematical intuition on the formulas, and how the main equation could have been derived
- finally, then and only then, start deriving the outcomes of the main formula in detail
This is likely because at some point, experiments get more and more complicated, and so people are tempted to say "this is the truth" instead of "this is why we think this is the truth", which is much harder.
Related:
- settheory.net/learnphysics and www.youtube.com/watch?v=5MKjPYuD60I&list=PLJcTRymdlUQPwx8qU4ln83huPx-6Y3XxH from settheory.net
- math.ucr.edu/home/baez/books.html by John Baez. Mentions:Ciro Santilli is trying to change that: OurBigBook.com.
This webpage doesn't have lots of links to websites. Websites just don't have the sort of in-depth material you need to learn technical subjects like advanced math and physics — at least, not yet. To learn this stuff, you need to read lots of books
- web.archive.org/web/20210324182549/http://jakobschwichtenberg.com/one-thing/ by Jakob Schwichtenberg
How to teach Exams and homework are useless, only projects matter Updated 2025-06-02 +Created 1970-01-01
See: Section "Exam".
The only thing that matters is that students aim towards the goals described at explain how to make money with the lesson.
Any "homework for which the student cannot use existing resources available online" is a waste of time.
The ideal way to go about it is to reach some intermediate milestone, and then document it. You don't have to do the hole thing! Just go until your patience with it runs out. But while you are doing it, go as deep and wide as you possibly can, without mercy.
This is actually how Ciro Santilli learns new subjects he is curious about, even as an adult! Some examples:
Tell students to:
- make suggestions to the course material themselves, since you have used text and published your source.Review their suggestions, and accept the best ones.
- answer the questions of other students on your online forum. Let them work instead of you.
Praise those that do this very highly, and give them better grades if you have that superpower.
Whatever you do, even if it is playing video games: if you manage to produce related content that will interest other people, and possibly allow you to get paid, it will much much fun to do that thing.
How to teach Publish your material even if it is not perfect Updated 2025-06-02 +Created 1970-01-01
Just make it very clear what you've tried, what you observed, and what you don't understand if anything at all.
This will already open up room for others to come and expand on your attempt, and you are more likely to learn the answers to your questions as they do.
And there's a good chance someone who knows more than you will come along and correct or teach you something new about the subject. For example, this has happened countless times to Ciro Santilli when doing Ciro Santilli's Stack Overflow contributions.
Perfect is the enemy of good.
Examples of famous fails:
- QED and the men who made it: Dyson, Feynman, Schwinger, and Tomonaga by Silvan Schweber (1994) chapter 7.11 "Epilogue" mentions how Julian Schwinger has lots of unpublished notes, or that his collaborators had to write most of the stuff down themselves in the end because he felt they were not perfect enough
Ciro Santilli often sees all those genius who are much smarter than him making shitty forum/mailing list posts, they need to learn this:
- The apparently most important one liner error message must appear in the title, and fuller apparently relevant logs must appear on the body
- These are an important part of the minimal working example.
- For build errors, you must give your OS and compiler version and version of any relevant external library
Ciro Santilli feels it is not for his generation though, and that is one of the philosophical things that saddens him the most in this world.
On the other hand, Ciro's playing with the Linux kernel and other complex software which no single human can every fully understand cheer him up a bit. But still, the high level view, that we can have...
For now, Ciro's 2D reinforcement learning games.
Created by Dr. Rod Nave from Georgia State University, where he worked from 1968 after his post-doc in North Wales on molecular spectroscopy.
While there is value to that website, it always feels like it falls a bit too short as too "encyclopedic" and too little "tutorial-like". Most notably, it has very little on the history of physics/experiments.
Ciro Santilli likes this Rod, he really practices some good braindumping, just look at how he documented his life in the pre-social media Internet dark ages: hyperphysics.phy-astr.gsu.edu/Nave-html/nave.html
The website evolved from a HyperCard stack, as suggested by the website name, mentioned at: hyperphysics.phy-astr.gsu.edu/hbase/index.html.
Shame he was too old for CC BY-SA, see "Please respect the Copyright" at hyperphysics.phy-astr.gsu.edu/hbase/index.html.
exhibits.library.gsu.edu/kell/exhibits/show/nave-kell-hall/capturing-a-career has some good photo selection focused on showing the department, and has an interview.
Kell hall is a building of GSU that was demolished in 2019: atlanta.curbed.com/2020/1/31/21115980/gsu-georgia-state-atlanta-kell-hall-demolition-park-library-north
A few of the "I'd rather starve and do what I love than work some bullshit job people":
- www.youtube.com/watch?v=dD5hYCN-tmU&t Worldyman, German skater. Ciro Santilli said hi at: www.youtube.com/watch?v=dD5hYCN-tmU&lc=Ugz_QQOwrRG5Wjm52hp4AaABAg His reply suggests mental illness unfortunately:
Including notably schools that follows Ciro Santilli's ideas as shown at how to teach.
- The National Science Institute, The Geek Group: came to Ciro Santilli's attention due to their Bitcoin activity: www.youtube.com/watch?v=cuIRvn89988
They do some really fun hardcore mathy stuff over there!
Ciro Santilli interned at Inria Centre at Université Côte d'Azur in the early 2010's. It was a disaster, largely his own fault, but also due to our broken educational system. But they do have awesome things as well.
Ciro Santilli is just too old to understand what the point of that website is compared to Twitter. There must be one, right?
Also, it is impossible to use it on the browser without a cell phone, similar critique as Section "Messaging software that force you to have a mobile phone" but a bit more aggravating, because, well, you would expect creators want people to see their stuff on a browser unlike private messages?
Searcing beauty is a painful thing. You just keep endlessly looking for that one new insight that will blow your mind.
The key missing point would be "usefulness". See also: Section "Art".
Found through Google with no direct relation known to Ciro Santilli:
- en.wikipedia.org/wiki/Santilli: Wikipedia page of the glorious family, Santillis with their own Wikipedia page:
- Ruggero Santilli: "fringe science guy", by far dominates Google as of 2019. Created the respectable R.M. Santilli Foundation
- Ray Santilli made a fake 1995 alien autopsy movie, YouTube sample: www.youtube.com/watch?v=sVcaT2QnoDs
- Ivana Santilli: Canadian singer, pop-electric-chill: www.youtube.com/watch?v=hQRuVN0H8dM
- accounts on important websites
- github.com/santilli anonymous GitHub as of 2019
- santilli.com/ for rent by realnames.com/ (wiki page) as of 2019
- Also Brazilian and tech related like Ciro Santilli.
- www.youtube.com/user/TheOverthrowShow thepetesantillishow.com/ Pete Santilli, American Conservative news commentator show, makes Ciro cringe of boredom. At least he has a passion.
Possibly related variants:
- Santillo:
- Will Santillo who makes somewhat artistic porn photos. His website with several free demos: santillophotography.com/
- www.linkedin.com/in/ciro-santillo-2025a6ba/ a "Ciro Santillo", github.com/Ciruxx, also a programmer
- Santilly, a town in Saône-et-Loire department, France
- santilly.com/ redirects to www.pompes-funebres-santilly.com/fr/, a French funerary service