However, many, many, many terrible horrors come with it:
Webdev's Creed by Ciro Santilli 37 Updated 2025-07-16
This is my stack. There are many like it, but this one is mine.
My stack is my best friend. It is my life. I must master it as I must master my life.
Without me, my stack is useless. Without my stack, I am useless. I must fire my requests true. I must shoot straighter than my hackers who are trying to kill me. I must shoot him before he shoots me. I will ...
My stack is human, even as I am human, because it is my life. Thus, I will learn it as a brother. I will learn its weaknesses, its strength, its parts, its accessories, its ORMs and its asset bundlers. I will keep my stack clean and ready, even as I am clean and ready. We will become part of each other. We will ...
Before God, I swear this creed. My stack and I are the defenders of my website. We are the masters of our enemy. We are the saviors of my life.
So be it, until victory is mine and there is no enemy, but peace!
Explanation: this is an allusion to the Rifleman's Creed. This particular version talks about the website stack chosen for a website, i.e. the libraries used.
Ciro Santilli has always felt that choosing a stack is an almost religious choice. It is perhaps part of why the prayer style of the original Rifleman's Creed resonates with the web stack choice.
It is very hard to know how things are going go, the ups and downs, before putting big hours into it.
And once you start, it is hard, though not impossible, to move away.
The same allusion would make sense with any complex library choice, but it is particularly apparent in web development since there are so many different web stacks to choose from. A bit like rifles, they are all somewhat fungible, though of course not as much.
This ISA basically completely dominated the smartphone market of the 2010s and beyond, but it started appearing in other areas as the end of Moore's law made it more economical logical for large companies to start developing their own semiconductor, e.g. Google custom silicon, Amazon custom silicon.
It is exciting to see ARM entering the server, desktop and supercomputer market circa 2020, beyond its dominant mobile position and roots.
Ciro Santilli likes to see the underdogs rise, and bite off dominant ones.
The excitement also applies to RISC-V possibly over ARM mobile market one day conversely however.
Basically, as long as were a huge company seeking to develop a CPU and able to control your own ecosystem independently of Windows' desktop domination (held by the need for backward compatibility with a billion end user programs), ARM would be a possibility on your mind.
Although it is impossible to understand without examples in mind, try to get familiar with the manuals as soon as possible.
Specially interesting is Figure 4-4 "Formats of CR3 and Paging-Structure Entries with 32-Bit Paging", which gives the key data structures.
What if Process 1 tries to access 0x00003000, which is not present?
The hardware notifies the software via a Page Fault Exception.
When an exception happens, the CPU jumps to an address that the OS had previously registered as the fault handler. This is usually done at boot time by the OS.
This could happen for example due to a programming error:
int *is = malloc(1);
is[2] = 1;
but there are cases where it is not a bug, for example in Linux when:
  • the program wants to increase its stack.
    It just tries to accesses a certain byte in a given possible range, and if the OS is happy it adds that page to the process address space, otherwise, it sends a signal to the process.
  • the page was swapped to disk.
    The OS will need to do some work behind the processes back to get the page back into RAM.
    The OS can discover that this is the case based on the contents of the rest of the page table entry, since if the present flag is clear, the other entries of the page table entry are completely left for the OS to to what it wants.
    On Linux for example, when present = 0:
    • if all the fields of the page table entry are 0, invalid address.
    • else, the page has been swapped to disk, and the actual values of those fields encode the position of the page on the disk.
In any case, the OS needs to know which address generated the Page Fault to be able to deal with the problem. This is why the nice IA32 developers set the value of cr2 to that address whenever a Page Fault occurs. The exception handler can then just look into cr2 to get the address.
The algorithmically minded will have noticed that paging requires associative array (like Java Map of Python dict()) abstract data structure where:
  • the keys are linear pages addresses, thus of integer type
  • the values are physical page addresses, also of integer type
The single level paging scheme uses a simple array implementation of the associative array:
  • the keys are the array index
  • this implementation is very fast in time
  • but it is too inefficient in memory
and in C pseudo-code it looks like this:
linear_address[0]      = physical_address_0
linear_address[1]      = physical_address_1
linear_address[2]      = physical_address_2
...
linear_address[2^20-1] = physical_address_N
But there another simple associative array implementation that overcomes the memory problem: an (unbalanced) k-ary tree.
A K-ary tree, is just like a binary tree, but with K children instead of 2.
Using a K-ary tree instead of an array implementation has the following trade-offs:
  • it uses way less memory
  • it is slower since we have to de-reference extra pointers
In C-pseudo code, a 2-level K-ary tree with K = 2^10 looks like this:
level0[0] = &level1_0[0]
    level1_0[0]      = physical_address_0_0
    level1_0[1]      = physical_address_0_1
    ...
    level1_0[2^10-1] = physical_address_0_N
level0[1] = &level1_1[0]
    level1_1[0]      = physical_address_1_0
    level1_1[1]      = physical_address_1_1
    ...
    level1_1[2^10-1] = physical_address_1_N
...
level0[N] = &level1_N[0]
    level1_N[0]      = physical_address_N_0
    level1_N[1]      = physical_address_N_1
    ...
    level1_N[2^10-1] = physical_address_N_N
and we have the following arrays:
  • one directory, which has 2^10 elements. Each element contains a pointer to a page table array.
  • up to 2^10 pagetable arrays. Each one has 2^10 4 byte page entries.
and it still contains 2^10 * 2^10 = 2^20 possible keys.
K-ary trees can save up a lot of space, because if we only have one key, then we only need the following arrays:
  • one directory with 2^10 entries
  • one pagetable at directory[0] with 2^10 entries
  • all other directory[i] are marked as invalid, don't point to anything, and we don't allocate pagetable for them at all
Just like a classic programmer does not need to understand the intricacies of how transistors are implemented and CMOS semiconductors, the quantum programmer does not understand physical intricacies of the underlying physical implementation.
For this reason programming a quantum computer is much like programming a classical combinatorial circuit as you would do with SPICE, verilog-or-vhdl, in which you are basically describing a graph of gates that goes from the input to the output
For this reason, we can use the words "program" and "circuit" interchangeably to refer to a quantum program
Also remember that and there is no no clocks in combinatorial circuits because there are no registers to drive; and so there is no analogue of clock in the quantum system either,
Another consequence of this is that programming quantum computers does not look like programming the more "common" procedural programming languages such as C or Python, since those fundamentally rely on processor register / memory state all the time.
Quantum programmers can however use classic languages to help describe their quantum programs more easily, for example this is what happens in Qiskit, where you write a Python program that makes Qiskit library calls that describe the quantum program.
Hadamard gate by Ciro Santilli 37 Updated 2025-07-16
The Hadamard gate takes or (quantum states with probability 1.0 of measuring either 0 or 1), and produces states that have equal probability of 0 or 1.
Equation 1.
Hadamard gate matrix
.
Figure 1.
Hadamard gate symbol
. Source.
Whenever Ciro Santilli walks in front of a school and sees the tall gates it makes him sad. Maybe 8 year olds need gates. But do we need to protect 15 year olds like that? Students should be going out to see the world, both good and evil not hiding from it! We should instead be guiding them to the world. But instead, we are locking them up in brainwashing centers.
Video "The Purpose of Education by Noam Chomsky (2012)" puts it well, education can be either be:
He has spoken about that infinitely, e.g. from when he was thin: www.youtube.com/watch?v=JVqMAlgAnlo
Bibliography:
dumps.wikimedia.org/enwiki/latest/enwiki-latest-category.sql.gz contains a list of categories. It only contains the categories and some counts, but it doesn't contain the subcategories and pages under each category, so it is a bit pointless.
The SQL first defines the table:
CREATE TABLE `category` (
  `cat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `cat_title` varbinary(255) NOT NULL DEFAULT '',
  `cat_pages` int(11) NOT NULL DEFAULT 0,
  `cat_subcats` int(11) NOT NULL DEFAULT 0,
  `cat_files` int(11) NOT NULL DEFAULT 0,
  PRIMARY KEY (`cat_id`),
  UNIQUE KEY `cat_title` (`cat_title`),
  KEY `cat_pages` (`cat_pages`)
) ENGINE=InnoDB AUTO_INCREMENT=249228235 DEFAULT CHARSET=binary ROW_FORMAT=COMPRESSED;
followed by a few humongous inserts:
INSERT INTO `category` VALUES (2,'Unprintworthy_redirects',1597224,20,0),(3,'Computer_storage_devices',88,11,0)
which we can see at: en.wikipedia.org/wiki/Category:Computer_storage_devices
Se see that en.wikipedia.org/wiki/Category:Computer_storage_devices_by_company
so it contains only categories.
We can check this with:
sed -s 's/),/\n/g' enwiki-latest-category.sql | grep Computer_storage_devices
and it shows:
(3,'Computer_storage_devices',88,11,0
(521773,'Computer_storage_devices_by_company',6,6,0
There doesn't seem to be any interlink between the categories, only page and subcategory counts therefore.
Docker (software) by Ciro Santilli 37 Updated 2025-07-16
Docker is good.
As a lightweight virtualization however, it does break more often than full proper virtualization like QEMU after some updates.
The images also appear to randomly update slightly and break things, even though you've specified e.g.:
FROM ubuntu:20.04
tx e3e37ed5c1de2631c147bd39429e42ff634e95b7d72423bc32d6c6b9d8eef8ee (2014-07-01):
For my first official Journal entry I've decided to archive some old poetry. Here are a few of the computational poems I've created using cyphers.
Figure 1.
Shiemaa&Vincent.jpg
. Source.
Message:
"Even if we tried to do it on purpose, never would have we succeeded." My beloved Vincent.
TODO identify Shiemaa and Vincent.
Figure 2.
BikeLady.jpg
. Source.
This seems to be a novel work uploaded by its creator artist Allen Vandever according to EMBII.[ref].
Figure 3.
Arecibo_message.svg
. Source.
An "artificially" colored visualization of the Arecibo message ripped from Wikipedia: en.wikipedia.org/wiki/File:Arecibo_message.svg (with attribution).
The cool thing about this image is that it highlights the striking parallels between the encoding of the Arecibo message with crypto graffiti, because in both cases people were creating undocumented new ways of communicating with strangers on a new medium in those early blockchain days.
The associated message contains the Arecibo message as ASCII 0's and 1's. When properly cut at the newlines, they draw the message as ASCII art, as the original Arecibo encoding intends, here's a version with the 0's replaced by spaces to make it more readabale:
      1 1 1 1
  1 1     1 1       1
1   1   1   1  1 11  1
1 1 1 1 1 1 1 1  1  1

            11
          11 1
          11 1
          1 1 1
          11111

11    111   11    11
1             11  1
11 1   11   11    11 1
11111 11111 11111 11111

    1                 1

    1                 1
11111             11111

11    11    111   11
1       1         1
11 1    11   111  11 1
11111 11111 11111 11111

    1      11         1
          11
    1     11          1
11111     11      11111
          11
  1        1        1
    1      11       1
    11    11      1
      11   1    11
          11  11
      11   1    11
    11    11      1
    1      1        1
  1       11        1
  1        11        1
  1         1       1
  1       1       1
    1            11
    11        11
  1   111 1 11
  1       1
  1     11111
  1    1 111 1  1 11 11
      1  111  1  111111
1 111    111     11 111
          1 1     111 11
  1      1 1     111111
  1      1 1     11
  1     11 11

  111     1
  111 1 1   1 1 1 1 1 1
  111         1 1 1 1
              1 1
        11111
      111111111
    111       111
    11           11
  11 1         1 11
  11  11       11  11
  1   1 1     1 1   1
  1   1  1   1  1   1
      1   1 1   1
      1    1    1
      1         1
        1  1 1
  1111  11111 1  1111
Figure 4.
He sleeps in a temple.jpg
. tx 460ed23bea89176cdfe18e13fce51ad5386ad8e3e1f7d6f5b4711b3be97b0502 block 360565 (2015-06-12). EMBII claimed on Twitter that he took this photo in Auckland, New Zealand. The shop on the right corner has a sign that starts with "Bo" and searching for "Auckland Bo" gave us the "The body shop" on the corner of Queen Street and Darby Street. Some things changed between 2015 and 2024, notably the bench is gone and the shop on the left corner changed, but we can go back in time in Google Street View to 2015 which further confirms the location.
Figure 5.
PIA17563.jpg
. Source.
Associated message:
NASA: A purple nebula, in honor of #Prince, who passed away today. Image: Crab #Nebula, as Seen by Herschel and #Hubble Image credit: ESA/Herschel/PACS/MESS Key Programme Supernova Remnant Team; #NASA, ESA and Allison Loll/Jeff Hester (Arizona State University) #PIA17563
Figure 6.
Dr_Craig_Wright.jpg
. Source.
The image is present e.g. at: www.kitguru.net/channel/jon-martindale/australian-man-claims-he-is-satoshi-nakamoto-bitcoin-creator/ It was inscribed about two months after Craig publicly claimed that he is Satoshi.
This is a relatively unusual AtomSea & EMBII upload as it does not have the common toplevel transaction, everything, text + image fits into a single transaction. This is perhaps why the image is relatively low resolution to have a smaller size.
Figure 7.
YellowRobot.jpg
. Source.
Photography by EMBII, original art by TODO.
The associated message reads:
Chiharu and I found this little yellow robot while exploring Chicago. It will be covered by tar or eventually removed but this tribute will remain. N 41.880778 E -87.629210
This is one of Ciro's favorite AtomSea & EMBII uploads. This is the cutest thing ever, and perfectly encapsules the "medium as an artform" approach to blockchain art. More Chiharu stalking at: ILoveYouMore.jpg.
At twitter.com/EMBII4U/status/1615389973343268871 EMBII announced that he would be giving off shares of that image on a Bitcoin-based NFT sale system he's making called Sup!?, and in December 2023 gave 2/300 shares to Ciro Santilli. Amen. The transaction list can be seen on the web UI at: p2fk.io/GetObjectByAddress/1KUyhHLrK1ckY8W7Qu31h6gFkXoihWHMzi?mainnet=true&verbose=true It had unfortunately never sold as of 2025, the only activity was EMBII giving off some shares and two listings of 1/300 for 1 BTC. Poor EMBII!
Other possibly novel EMBII street photography:
Audio:

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