Kardashev scale Updated +Created
Kronecker delta Updated +Created
Ciro Santilli's hardware / Lenovo ThinkPad P51 (2017) log Updated +Created
  • battery life:
    • 2023-04: on-browser streaming + light browsing on Ubuntu 22.10: about 2h45. Too low! Gotta try buying a new battery.
  • 2022-01-04 updated firmward after noticing that ubuntu 21.10 does not wake up from suspend seemed to happen every time when not connected to external power. dmidecode diff excerpt:
     BIOS Information
            Vendor: LENOVO
    -       Version: N1UET40W (1.14 )
    -       Release Date: 09/28/2017
    +       Version: N1UET71W (1.45 )
    +       Release Date: 07/18/2018
    used the "Ubuntu Software" GUI as mentioned at: support.lenovo.com/gb/en/solutions/ht510810-how-to-do-software-updates-linux. Kudos for making this accessible to newbs.
    After doing that, another update became available to: 0.1.56, clicked it and was much faster than the previous one, and didn't auto reboot. After manual reboot, dmidecode diffed again:
     BIOS Information
            Vendor: LENOVO
    -       Version: N1UET71W (1.45 )
    -       Release Date: 07/18/2018
    +       Version: N1UET82W (1.56 )
    +       Release Date: 08/12/2021
    plus a bunch of other lines.
  • 2021-06-05 upgraded to Ubuntu 21.04 with a clean install from an ISO. Selected
    • "Minimal installation"
    • "Erase disk and install Ubuntu". Notably, this erased the Microsoft Windows that came with the computer and was never used not even once
    • "Erase disk ans use ZFS"
    • Encrypt the new Ubuntu installation for security
    After this, the GUI felt fast, who would have thought that erasing a bunch of stuff would make the system faster!
    lsblk contains:
    zd0               230:0    0   500M  0 disk
    └─keystore-rpool  253:0    0   484M  0 crypt /run/keystore/rpool
    nvme0n1           259:0    0 476.9G  0 disk
    ├─nvme0n1p1       259:1    0   512M  0 part  /boot/efi
    ├─nvme0n1p2       259:2    0     2G  0 part
    │ └─cryptoswap    253:1    0     2G  0 crypt
    ├─nvme0n1p3       259:3    0     2G  0 part
    └─nvme0n1p4       259:4    0 472.4G  0 part
    and lsblk -f:
    zd0               crypto_LUKS 2
    └─keystore-rpool  ext4        1.0   keystore-rpool
    nvme0n1
    ├─nvme0n1p1       vfat        FAT32
    ├─nvme0n1p2       crypto_LUKS 2
    │ └─cryptoswap
    ├─nvme0n1p3       zfs_member  5000  bpool
    └─nvme0n1p4       zfs_member  5000  rpoo
    Then:
    grep '[rb]pool' /proc/mounts
    contains:
    rpool/ROOT/ubuntu_uvs1fq / zfs rw,relatime,xattr,posixacl 0 0
    rpool/USERDATA/ciro_czngbg /home/ciro zfs rw,relatime,xattr,posixacl 0 0
    rpool/USERDATA/root_czngbg /root zfs rw,relatime,xattr,posixacl 0 0
    rpool/ROOT/ubuntu_uvs1fq/srv /srv zfs rw,relatime,xattr,posixacl 0 0
    rpool/ROOT/ubuntu_uvs1fq/usr/local /usr/local zfs rw,relatime,xattr,posixacl 0 0
    rpool/ROOT/ubuntu_uvs1fq/var/games /var/games zfs rw,relatime,xattr,posixacl 0 0
    rpool/ROOT/ubuntu_uvs1fq/var/log /var/log zfs rw,relatime,xattr,posixacl 0 0
    rpool/ROOT/ubuntu_uvs1fq/var/lib /var/lib zfs rw,relatime,xattr,posixacl 0 0
    rpool/ROOT/ubuntu_uvs1fq/var/mail /var/mail zfs rw,relatime,xattr,posixacl 0 0
    rpool/ROOT/ubuntu_uvs1fq/var/snap /var/snap zfs rw,relatime,xattr,posixacl 0 0
    rpool/ROOT/ubuntu_uvs1fq/var/www /var/www zfs rw,relatime,xattr,posixacl 0 0
    rpool/ROOT/ubuntu_uvs1fq/var/spool /var/spool zfs rw,relatime,xattr,posixacl 0 0
    rpool/ROOT/ubuntu_uvs1fq/var/lib/AccountsService /var/lib/AccountsService zfs rw,relatime,xattr,posixacl 0 0
    rpool/ROOT/ubuntu_uvs1fq/var/lib/NetworkManager /var/lib/NetworkManager zfs rw,relatime,xattr,posixacl 0 0
    rpool/ROOT/ubuntu_uvs1fq/var/lib/apt /var/lib/apt zfs rw,relatime,xattr,posixacl 0 0
    rpool/ROOT/ubuntu_uvs1fq/var/lib/dpkg /var/lib/dpkg zfs rw,relatime,xattr,posixacl 0 0
    bpool/BOOT/ubuntu_uvs1fq /boot zfs rw,nodev,relatime,xattr,posixacl 0 0
    which gives an idea of how the above map to mountpoints.
    Had two GUI freezes since installation, a fixed images shows no matter what I do, possibly graphics only, but impossible to tell (next time I'll try SSH access). No Nvidia drivers installed yet.
2020-06-06: dropped some lemon juice on the bottom left of touchpad. Bottom left button not working anymore... I'm an idiot. There are many other alternatives, but very aggravating, I'll replace it for sure. Can't find the exact replacement part or any videos showing its replacement online easliy, dang. For the T430: www.youtube.com/watch?v=F3lzV9uXRjU Asked at: forums.lenovo.com/t5/ThinkPad-P-and-W-Series-Mobile-Workstations/P51-left-bottom-button-below-trackpad-mouse-left-click-stopped-working-possible-to-replace/m-p/5019903 Also I could not access it because you need to remove the HDD first: www.youtube.com/watch?v=5Klawxc7T_Y and I can't pull it out even with considerable force, unlike in the video... And OMG, those button caps are impossible to re-install once removed!!! Then when I put the whole thing back together, the upper buttons were not working anymore. FUUUUUUUUCK. When first opening I pulled on it without properly removing the cap and it came off, but it didn't look broken in any way and I put it back in. Keyboard works thank God, so right black connector is fine, left white one oppears to be the one for upper keys and trackpoint, both of which stopped working. The hardware manual confirms that they are both part of the same device, so basically a mouse :-) TODO can it be bought separately from te keyboard? Doesn't look like it, photo of keyboard part includes those buttons. The manual also confirms that the bottom buttons are one device with the trackpad "trackpad with buttons", thus forming the second entire mouse.
2019-04-17: popup asking about "ThinkPad P51 Management Engine Update" from from 182.29.3287 to 184.60.3561, said yes.
Ubuntu 17.10 setup after buying it:
Battery life shown by Ubuntu battery app after installation:
  • before NVIDIA driver setup: 8h
  • after: 6.5h
Diameter Updated +Created
ELF Hello World Tutorial / Section header table Updated +Created
Array of Elf64_Shdr structs.
Each entry contains metadata about a given section.
e_shoff of the ELF header gives the starting position, 0x40 here.
e_shentsize and e_shnum from the ELF header say that we have 7 entries, each 0x40 bytes long.
So the table takes bytes from 0x40 to 0x40 + 7 + 0x40 - 1 = 0x1FF.
Some section names are reserved for certain section types: www.sco.com/developers/gabi/2003-12-17/ch4.sheader.html#special_sections e.g. .text requires a SHT_PROGBITS type and SHF_ALLOC + SHF_EXECINSTR
Running:
readelf -S hello_world.o
outputs:
There are 7 section headers, starting at offset 0x40:

Section Headers:
  [Nr] Name              Type             Address           Offset
       Size              EntSize          Flags  Link  Info  Align
  [ 0]                   NULL             0000000000000000  00000000
       0000000000000000  0000000000000000           0     0     0
  [ 1] .data             PROGBITS         0000000000000000  00000200
       000000000000000d  0000000000000000  WA       0     0     4
  [ 2] .text             PROGBITS         0000000000000000  00000210
       0000000000000027  0000000000000000  AX       0     0     16
  [ 3] .shstrtab         STRTAB           0000000000000000  00000240
       0000000000000032  0000000000000000           0     0     1
  [ 4] .symtab           SYMTAB           0000000000000000  00000280
       00000000000000a8  0000000000000018           5     6     4
  [ 5] .strtab           STRTAB           0000000000000000  00000330
       0000000000000034  0000000000000000           0     0     1
  [ 6] .rela.text        RELA             0000000000000000  00000370
       0000000000000018  0000000000000018           4     2     4
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings), l (large)
  I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
  O (extra OS processing required) o (OS specific), p (processor specific)
The struct represented by each entry is:
typedef struct {
    Elf64_Word  sh_name;
    Elf64_Word  sh_type;
    Elf64_Xword sh_flags;
    Elf64_Addr  sh_addr;
    Elf64_Off   sh_offset;
    Elf64_Xword sh_size;
    Elf64_Word  sh_link;
    Elf64_Word  sh_info;
    Elf64_Xword sh_addralign;
    Elf64_Xword sh_entsize;
} Elf64_Shdr;
Mono Updated +Created
One, single. Actual word: μόνος.
The impact of the work is greater when you examine what one single new technology would do to existing society, as in Primer (2004), rather than "start on a society with severl new technologies", like in Star Wars.
ViaScience Updated +Created
Those guys are really good, Ciro Santilli especially enjoyed their quantum mechanics playlist: www.youtube.com/playlist?list=PL193BC0532FE7B02C
The quantum electrodynamics one was a bit too slow paced for Ciro unfortunately, too much groundwork and too little results.
Accompanying website with a tiny little bit of code: viascience.org/what.html
TODO: authors and their affiliation.
Videos licensed as CC BY-SA, those guys are so good.
activatedgeek/LeNet-5 run on GPU Updated +Created
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
Dictionary Updated +Created
Dietterich Labs Updated +Created
Unfortunately the channel is too obsessed with mathematical detail (which it does amazingly), and does not give enough examples/application/intuition, which is what would be useful to most people, thus falling too much on the hardcore side of the missing link between basic and advanced.
This channel does have on merit however: compared to other university courses, it is much more direct, which might mean that you get to something interesting before you got bored to death, Section "You can learn more from older students than from faculty" comes to mind.
Videos generally involves short talks + a detailed read-through of a pre-prepared PDF. Dietterich has refused however giving the PDF or LaTeX source as of 2020 on comments unfortunately... what a wasted opportunity for society. TODO find the comment. Sam, if you ever Google yourself to this page, let's make a collab on OurBigBook.com and fucking change education forever man.
Video 1.
The Ultimate Goal Of My YouTube Channel by Dietterich Labs (2020)
Source. In this video Dietterich gives his ideal for the channel. Notably, he describes how the few experimental videos he has managed to make were done in a opportunistic way from experiments that were happening around him. This resonated with Ciro Santilli's ideas from videos of all key physics experiments.
Video 2.
Sam Dietterich interview by Dietterich Labs (2022)
Source. TODO find patience to watch and summarize key points.
Video 3.
The Sting Of Soft Corruption: My College Experience by Dietterich Labs
. Source. Academia is broken video.
Max Planck Updated +Created
Protein folding Updated +Created
QED manifesto Updated +Created
If Ciro Santilli ever becomes rich, he's going to solve this with: website front-end for a mathematical formal proof system, promise.
AGI research has become a taboo in the early 21st century Updated +Created
Due to the failures of earlier generations, which believed that would quickly achieve AGI, leading to the AI winters, 21st researchers have been very afraid of even trying it, rather going only for smaller subste problems like better neural network designs, at the risk of being considered a crank.
While there is fundamental value in such subset problems, the general view to the final goal is also very important, we will likely never reach AI without it.
This is voiced for example in Superintelligence by Nick Bostrom (2014) section "Opinions about the future of machine intelligence" which in turn quotes Nils Nilsson:
There may, however, be a residual cultural effect on the AI community of its earlier history that makes many mainstream researchers reluctant to align themselves with over-grand ambition. Thus Nils Nilsson, one of the old-timers in the field, complains that his present-day colleagues lack the boldness of spirit that propelled the pioneers of his own generation:
Concern for "respectability" has had, I think, a stultifying effect on some AI researchers. I hear them saying things like, "AI used to be criticized for its flossiness. Now that we have made solid progress, let us not risk losing our respectability." One result of this conservatism has been increased concentration on "weak AI" - the variety devoted to providing aids to human
thought - and away from "strong AI" - the variety that attempts to mechanize human-level intelligence
Nilsson’s sentiment has been echoed by several others of the founders, including Marvin Minsky, John McCarthy, and Patrick Winston.
Domain name Updated +Created
Matter wave Updated +Created
Merck Group Updated +Created

There are unlisted articles, also show them or only show them.