In 2020 Brazil for example, you are not allowed in theory to obtain a double nationality which you were not allowed to have as a birth right.
This means that Brazilian students e.g. in France, many of whom could easily obtain the French citizenship had to either chose between:
  • giving up their Brazilian citizenship. Who the fuck would do that? Brazilians love their country despite all!
  • not getting French citizenship. This meant in France having to come 6 AM once a year to some police station on some suburbia to stamp a piece of paper, plus having your VISA completely dependant on your employer for several years until you could obtain a permanent VISA, making it very hard to change jobs, and putting you in a constantly precarious position
  • keeping both citizenships, ignoring Brazilian law, which is extremely unlikely to sue you anyways for this bullshit law, and just hope for the best
Can you guess which option Brazilian students would usually pick?
As a poor country, you have to allow people to obtain multiple citizenship. Students are not going to go back because they don't have the foreign citizenship. They are just going to have to ensure shittier jobs for a few years, thus diminishing the chances that they will actually lean anything useful to bring back to your country later on.
By default, the setup runs on CPU only, not GPU, as could be seen by running htop. But by the magic of PyTorch, modifying the program to run on the GPU is trivial:
cat << EOF | patch
diff --git a/run.py b/run.py
index 104d363..20072d1 100644
--- a/run.py
+++ b/run.py
@@ -24,7 +24,8 @@ data_test = MNIST('./data/mnist',
 data_train_loader = DataLoader(data_train, batch_size=256, shuffle=True, num_workers=8)
 data_test_loader = DataLoader(data_test, batch_size=1024, num_workers=8)

-net = LeNet5()
+device = 'cuda'
+net = LeNet5().to(device)
 criterion = nn.CrossEntropyLoss()
 optimizer = optim.Adam(net.parameters(), lr=2e-3)

@@ -43,6 +44,8 @@ def train(epoch):
     net.train()
     loss_list, batch_list = [], []
     for i, (images, labels) in enumerate(data_train_loader):
+        labels = labels.to(device)
+        images = images.to(device)
         optimizer.zero_grad()

         output = net(images)
@@ -71,6 +74,8 @@ def test():
     total_correct = 0
     avg_loss = 0.0
     for i, (images, labels) in enumerate(data_test_loader):
+        labels = labels.to(device)
+        images = images.to(device)
         output = net(images)
         avg_loss += criterion(output, labels).sum()
         pred = output.detach().max(1)[1]
@@ -84,7 +89,7 @@ def train_and_test(epoch):
     train(epoch)
     test()

-    dummy_input = torch.randn(1, 1, 32, 32, requires_grad=True)
+    dummy_input = torch.randn(1, 1, 32, 32, requires_grad=True).to(device)
     torch.onnx.export(net, dummy_input, "lenet.onnx")

     onnx_model = onnx.load("lenet.onnx")
EOF
and leads to a faster runtime, with less user as now we are spending more time on the GPU than CPU:
real    1m27.829s
user    4m37.266s
sys     0m27.562s
Bought: 2017 for approximately 2400 pounds to be Ciro Santilli's main personal laptop.
Specs:
Identifiers:
Editor. As last time. And the one before. But now it is for real.
I guess ended up doing all the "how things should look like" features because they clarify what the website is supposed to do, and I already have my own content to bring it alive via ourbigbook --web upload.
But now I honestly feel that all the major elements of "how things should look like" have fallen into place.
And yeah, nobody else is never going to contribute as things are! WYSIWYG is a must.
I was really impressed by Trillium Notes. I should have checked it long ago. The UI is amazing, and being all Js-based, could potentially be reused for our purposes. The project itself is a single-person/full trust notetaking only for now however, so not a direct replacement to OurBigBook.
The approach many courses take to physics, specially "modern Physics" is really bad, this is how it should be taught:
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.
But we can't be lazy, there is no replacement to the why.
Related:
This is the only way to truly understand and appreciate the subject.
Understanding the experiments gets intimately entangled with basically learning the history of physics, which is extremely beneficial as also highlighted by Ron Maimon, related: there is value in tutorials written by early pioneers of the field.
"How we know" is a basically more fundamental point than "what we know" in the natural sciences.
In the Surely You're Joking, Mr. Feynman chapter O Americano, Outra Vez! Richard Feynman describes his experience teaching in Brazil in the early 1950s, and how everything was memorized, without any explanation of the experiments or that the theory has some relationship to the real world!
Although things have improved considerably since in Brazil, Ciro still feels that some areas of physics are still taught without enough experiments described upfront. Notably, ironically, quantum field theory, which is where Feynman himself worked.
Feynman gave huge importance to understanding and explaining experiments, as can also be seen on Richard Feynman Quantum Electrodynamics Lecture at University of Auckland (1979).
Video 1.
'Making' - the best way of learning science and technology by Manish Jain (2018)
Source.
System of units by Ciro Santilli 40 Updated 2025-07-16
The key thing in a good system of units is to define units in a way that depends only on physical properties of nature.
Ideally (or basically necessarily?) the starting point generally has to be discrete phenomena, e.g.
What we don't want is to have macroscopic measurement artifacts, (or even worse, the size of body parts! Inset dick joke) as you can always make a bar slightly more or less wide. And even metals evaporate over time! Though the mad people of the Avogadro project still attempted otherwise well into the 2010s!
Standards of measure that don't depend on artifacts are known as intrinsic standards.
Great overview of the earlier history of unit standardization.
Gives particular emphasis to the invention of gauge blocks.
Caesium standard by Ciro Santilli 40 Updated 2025-07-16
Uses the frequency of the hyperfine structure of caesium-133 ground state, i.e spin up vs spin down of its valence electron , to define the second.
International System of Units definition of the second since 1967, because this is what atomic clocks use.
TODO why does this have more energy than the hyperfine split of the hydrogen line given that it is further from the nucleus?
Natural units by Ciro Santilli 40 Updated 2025-07-16
A series of systems usually derived from the International System of Units that are more convenient for certain applications.

Pinned article: Introduction to the OurBigBook Project

Welcome to the OurBigBook Project! Our goal is to create the perfect publishing platform for STEM subjects, and get university-level students to write the best free STEM tutorials ever.
Everyone is welcome to create an account and play with the site: ourbigbook.com/go/register. We belive that students themselves can write amazing tutorials, but teachers are welcome too. You can write about anything you want, it doesn't have to be STEM or even educational. Silly test content is very welcome and you won't be penalized in any way. Just keep it legal!
We have two killer features:
  1. topics: topics group articles by different users with the same title, e.g. here is the topic for the "Fundamental Theorem of Calculus" ourbigbook.com/go/topic/fundamental-theorem-of-calculus
    Articles of different users are sorted by upvote within each article page. This feature is a bit like:
    • a Wikipedia where each user can have their own version of each article
    • a Q&A website like Stack Overflow, where multiple people can give their views on a given topic, and the best ones are sorted by upvote. Except you don't need to wait for someone to ask first, and any topic goes, no matter how narrow or broad
    This feature makes it possible for readers to find better explanations of any topic created by other writers. And it allows writers to create an explanation in a place that readers might actually find it.
    Figure 1.
    Screenshot of the "Derivative" topic page
    . View it live at: ourbigbook.com/go/topic/derivative
  2. local editing: you can store all your personal knowledge base content locally in a plaintext markup format that can be edited locally and published either:
    This way you can be sure that even if OurBigBook.com were to go down one day (which we have no plans to do as it is quite cheap to host!), your content will still be perfectly readable as a static site.
    Figure 2.
    You can publish local OurBigBook lightweight markup files to either https://OurBigBook.com or as a static website
    .
    Figure 3.
    Visual Studio Code extension installation
    .
    Figure 4.
    Visual Studio Code extension tree navigation
    .
    Figure 5.
    Web editor
    . You can also edit articles on the Web editor without installing anything locally.
    Video 3.
    Edit locally and publish demo
    . Source. This shows editing OurBigBook Markup and publishing it using the Visual Studio Code extension.
    Video 4.
    OurBigBook Visual Studio Code extension editing and navigation demo
    . Source.
  3. https://raw.githubusercontent.com/ourbigbook/ourbigbook-media/master/feature/x/hilbert-space-arrow.png
  4. Infinitely deep tables of contents:
    Figure 6.
    Dynamic article tree with infinitely deep table of contents
    .
    Descendant pages can also show up as toplevel e.g.: ourbigbook.com/cirosantilli/chordate-subclade
All our software is open source and hosted at: github.com/ourbigbook/ourbigbook
Further documentation can be found at: docs.ourbigbook.com
Feel free to reach our to us for any help or suggestions: docs.ourbigbook.com/#contact