Condensed matter physics Updated +Created
Condensed matter physics is one of the best examples of emergence. We start with a bunch of small elements which we understand fully at the required level (atoms, electrons, quantum mechanics) but then there are complex properties that show up when we put a bunch of them together.
Includes fun things like:
As of 2020, this is the other "fundamental branch of physics" besides to particle physics/nuclear physics.
Condensed matter is basically chemistry but without reactions: you study a fixed state of matter, not a reaction in which compositions change with time.
Just like in chemistry, you end up getting some very well defined substance properties due to the incredibly large number of atoms.
Just like chemistry, the ultimate goal is to do de-novo computational chemistry to predict those properties.
And just like chemistry, what we can actually is actually very limited in part due to the exponential nature of quantum mechanics.
Also since chemistry involves reactions, chemistry puts a huge focus on liquids and solutions, which is the simplest state of matter to do reactions in.
Condensed matter however can put a lot more emphasis on solids than chemistry, notably because solids are what we generally want in end products, no one likes stuff leaking right?
But it also studies liquids, e.g. notably superfluidity.
One thing condensed matter is particularly obsessed with is the fascinating phenomena of phase transition.
Figure 1.
xkcd 2933: Elementary Physics Paths
.
Video 1.
What Is Condensed matter physics? by Erica Calman
. Source. Cute. Overview of the main fields of physics research. Quick mention of his field, quantum wells, but not enough details.
Haskell Updated +Created
There are only two pre-requisites to using Haskell in 2020. You have to be an idealist. And you have to be a genius:
How computers work? Updated +Created
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:
Figure 1.
xkcd 378: Real Programmers
. Source.
Video 1.
How low can you go video by Ciro Santilli (2017)
Source. In this infamous video Ciro has summarized the computer hierarchy.
Linux Updated +Created
It ain't perfect, but it's decent enough.
From a technical point of view, it can do anything that Microsoft Windows can. Except being forcefully installed on every non-MacOS 2019 computer you can buy.
Ciro Santilli's conversion to Linux happened around 2012, and was a central part of Ciro Santilli's Open Source Enlightenment, since it fundamentally enables the discovery and contribution to open source software. Because what awesome open source person would waste time porting their amazing projects to closed source OSes?
Ciro's modest nature can be seen as he likes to compare this event Buddha's Great Renunciation.
Particularly interesting in the history of Linux is how it won out over the open competitors that were coming up in the time: MINIX (see the chat) and BSD Operating System that got legally bogged down at the critical growth moment.
Figure 1.
xkcd 619: Supported Features
. Source. This perfectly illustrates Linux development. First features that matter. Then useless features.
Video 1. Source. Just stop whatever you are doing, and watch this right now. "I'm on Linux, bitch, I thought you GNU". Fandom explanations. It is just a shame that the Bill Gates actor looks absolutely nothing like the real gates. Actually, the entire Gates/Jobs parts are good, but not genial. But the Linux one is.
Mathematician Updated +Created
Poet, scientists and warriors all in one? Conquerors of the useless.
A wise teacher from University of São Paulo once told the class Ciro Santilli attended an anecdote about his life:
I used to want to learn Mathematics.
But it was very hard.
So in the end, I became an engineer, and found an engineering solution to the problem, and married a Mathematician instead.
It turned out that, about 10 years later, Ciro ended up following this advice, unwittingly.
Figure 1.
xkcd 435: Fields arranged by purity
. Source.
Physicist Updated +Created
Figure 1.
xkcd 435: Fields arranged by purity
. Source.
Physics Updated +Created
Physics (like all well done science) is the art of predicting the future by modelling the world with mathematics.
And predicting the future is the first step towards controlling it, i.e.: engineering.
Ciro Santilli doesn't know physics. He writes about it partly to start playing with some scientific content for: OurBigBook.com, partly because this stuff is just amazingly beautiful.
Ciro's main intellectual physics fetishes are to learn quantum electrodynamics (understanding the point of Lie groups being a subpart of that) and condensed matter physics.
Every science is Physics in disguise, but the number of objects in the real world is so large that we can't solve the real equations in practice.
Luckily, due to emergence, we can use uglier higher level approximations of the world to solve many problems, with the complex limits of applicability of those approximations.
Therefore, such higher level approximations are highly specialized, and given different names such as:
As of 2019, all known physics can be described by two theories:
Unifying those two into the theory of everything one of the major goals of modern physics.
Figure 1.
xkcd 435: Fields arranged by purity
. Source. Reductionism comes to mind.
Figure 2.
Physically accurate genie by Psychomic
. Source. This sane square composition from: www.reddit.com/r/funny/comments/u08dw3/nice_guy_genie/.
The development cycle time is your God Updated +Created
A slow development test cycle will kill your software.
New developers won't want to learn your project, because they would rather shoot themselves.
This means that build time, and the time to run tests, must be short.
5 seconds to rebuild is the maximum upper limit.
Of course, at some point software gets large enough that things won't fit anymore in 5 seconds. But then you must have either some kind of build caching, or options to do partial builds/tests that will bring things down to that 5 second mark.
You also have to spend some time profiling execution and build from scratch times.
A slow build from scratch will mean that your continuous integration costs a lot, money that could be invested in a new developer!
It also means that people won't bother to reproduce bugs on given commits, or bisect stuff.
One anecdote comes to mind. Ciro Santilli was trying to debug something, and more experience colleague came over.
To reproduce a problem, ciro was running one command, wait 5 seconds, run a second command, wait 5 seconds, run a third command:
cmd1
# wait 5 seconds
cmd2
# wait 5 seconds
cmd3
The first thing the colleague said: join those three commands into one:
cmd1;cmd2;cmd3
And so, Ciro was enlightened.
Figure 1.
xkcd 303: Compiling
. Source. They should be benchmarking and fixing their shitty build system instead.
The side effects of ambitious goals are often the most valuable thing achieved Updated +Created
A quote by Ciro's Teacher R.:
Sometimes, even if our end goals are too far from reality, the side effects of trying to reach them can have meaningful impact.
If the goals are not ambitious enough, you risk not even having useful side effects so show in the end!
By doing the prerequisites of the impossible goal you desire, maybe the next generation will be able to achieve it.
This is basically why Ciro Santilli has contributed to Stack Overflow, which has happened while was doing his overly ambitious projects and notice that all kinds of basic pre-requisites were not well explained anywhere.
This is especially effective when you use backward design, because then you will go "down the dependency graph of prerequisites" and smoothen out any particularly inefficient points that you come across.
Going into such productive procrastination is also known informally as yak shaving.
There are of course countless examples of such events:
  • youtu.be/qrDZhAxpKrQ?t=174 Blitzscaling 11: Patrick Collison on Hiring at Stripe and the Role of a Product-Focused CEO by Greylock (2015)
The danger of this approach is of course spending too much time on stuff that will not be done enough times to be worth it, as highlighted by several xkcds:
Figure 1.
xkcd 974: The general problem
. Source.
Figure 2.
xkcd 1205: Is it worth the time
. Source.
Figure 3.
xkcd 1319: Automation
. Source.
Yet another Updated +Created
You aren't gonna need it Updated +Created
Sometimes you are really certain that something is a required substep for another thing that is coming right afterwards.
When things are this concrete, fine, just do the substep.
But you have to always beware of cases where "I'm sure this will be needed at some unspecified point in the future", because such points tends to never happen.
YAGNI is so fundamental, there are several closely related concepts to it:
Figure 1.
xkcd 2730: Code Lifespan
. Source.