SQL
genenerate_series Updated 2025-07-16 SQL transaction isolation level Updated 2025-07-16
Each transaction isolation level specifies what can or cannot happen when two queries are being run in parallel, i.e.: the memory semantics of the system.
Remember that queries can affects thousands of rows, and database systems like PostgreSQL can run multiple such queries at the same time.
Implementation specifics:
Particle decay Updated 2025-07-16
Can produce two entangled particles.
Type-II superconductor Updated 2025-07-16
SQLite import CSV Updated 2025-07-16
Steven Pruitt Updated 2025-07-16
TP-Link Archer VR2800 router Virgin Media Hub 3.0 Wifi setup Updated 2025-07-16
- "Operation mode" > "Wireless router mode" (was "DSL Modem/Router mode" by default).
- "Network" > "Internet" > "Add" > "Internet Connection Type" > "Dynamic IP" > "Save"
Custom configs we had, not sure if mandatory:
- Dynamic DHPC mode
- Unicast DHCP
Wait for TP link to fully reboot.
Connect port 4 of tp link (marked WAN/LAn) to port 1 of VM Hub (unmarked, but it is magic, has to be port 1).
Finally, AFTER everything else is setup, turn on the Hub and wait for a few minutes. It ONY WORKS if you turn it on after everything is setup.
Outcome:
- hub light turns purple: www.reddit.com/r/VirginMedia/comments/c703t6/purple_light_on_the_box/
- Archer WAN light turns on white. Not red. Red means error
- you have Wifi. Notably, the 5G Wifi is way way faster and reaches the WAN limit of 256 Mbps.
- Ethernet does not work anymore on either Hub nor Archer, Wifi only. But it doesn't matter because the 5G Wifi already reaches the speed limit.
Bibliography:
- community.virginmedia.com/t5/Forum-Archive/Connecting-Tp-link-archer-vr2800-to-Hub-3/td-p/4765927 This was The thread, the only one that clearly explained the fundamental importance of turn on off ordering by "jbrennand".
- community.tp-link.com/en/home/forum/topic/269540
- community.tp-link.com/en/home/forum/topic/170344
- community.virginmedia.com/t5/Gaming-Support/Connecting-Archer-VR2800-to-Hub-4/td-p/5246513
Traditional Chinese timekeeping Updated 2025-07-16
The actually had decimal time systems... why that didn't win!
x86 Paging Tutorial ARM Updated 2025-07-16
Information about ARM paging can be found at: cirosantilli.com/linux-kernel-module-cheat#arm-paging
Chemiosmosis Updated 2025-07-16
Ciro Santilli's bad old event memory Updated 2025-07-16
Ciro Santilli has a bad memory for events that happened a medium time ago, for example in order of months/years. Especially if they are one-off things that have no relation to anything else.
For example, Ciro never remembers which places he travelled to just once, and who was in each trip! He has images of several places he travelled to in his head, and would recognize them, but he just doesn't know where they were!
Another example, Ciro was looking at the carpet at their house, and asked where it came from. His wife replied immeidately: from Bercy shopping quarter in Paris about 10 years ago, and you took it on your back for a long walk until we could find the bus back home because we were concerned it wouldn't fit in the train!
The same goes for scenes from movies and passages from music, which explains why Ciro's art consumption focuses on innovative discrete "what happened" and "general gist" ideas, rather than, analog details such as colors and shapes.
Going back even further in time, Ciro starts to forget the less close friends he had, because the events start to fade away.
Paradoxically however, Ciro believes that this bad memory is one of his greatest strengths and key defining characteristics, because it leads Ciro to want to write down every interesting thing he learns, which motivated OurBigBook.com and his Stack Overflow contributions and his related Ciro Santilli's documentation superpowers.
It also somewhat leads Ciro to like physics and mathematics, because in these fields you "can deduce everything" from very few base principles, so if you forget them, it does not matter that much as you can re-deduce stuff over and over. Which is somewhat where the high flying bird attitude comes from. It is hard to go deep when you have to re-prove everything every time. But the upside is that anything that sticks, does so because it has a broad net to stick to, and therefore allows Ciro to make unusual and unexpected connections that others might not.
Ciro believes that there are two types of people, and most notably software engineers, which are basically data wranglers: those with bad memory and those with good memory.
Those with bad memory, tend to focus on automating and improving their processes a lot. They take much longer to do one-off specific deep knowledge tasks however.
The downside of the good memory ones is that sooner or later they will find tasks that no matter how much memory they have, they cannot solve without automation, and they will fail at those.
This dichotomy also explains why Ciro sucks at code reviews, but is rather the person who runs the interesting patches by himself and finds some critical problems that the more theoretical code reviewers missed.
If Ciro had become a scientist, he would without doubt be an experimentalist, just like in this reality he is a GDB/runtime person rather than a "static source analysis" person. Those who have bad memory prefer to just run experiments over and over and observe system state at runtime.
Other effects of having a bad memory include:
- code duplication, or a constant fear of it at least, because Ciro forgets that some functionality exists already
- meeting aversion, because everything that is not recorded will fade away
- passion for backward design, because by the time a piece of knowledge learnt in school might be useful (and 99.99% won't), it will have been long forgotten
Related: jakobschwichtenberg.com/about/ from Jakob Schwichtenberg:
In some sense, one of the biggest benefits I have over other people in physics is that I'm certainly not the smartest guy! I usually can't grasp complex issues very easily. So I have to break down complex ideas into smaller chunks to understand it myself. This means, whenever I describe something to others, everyone understands, because it's broken down into such simple terms.
On C2 wiki, therefore it cannot be wrong wiki.c2.com/?QuasiGreatTeacher:
Closure table Updated 2025-07-16
Krusader Updated 2025-07-16
The most powerful GUI file manager ever?? Infinite configurability??
Ciro Santilli wasted some time on it before he gave up on file managers altogether and started using only the CLI with a few aliases.
Lagrange's four-square theorem Updated 2025-07-16
x86 Paging Tutorial Copy-on-write Updated 2025-07-16
Those page faults only happen when a process tries to write to the page, and not read from it.
When Linux forks a process:
- instead of copying all the pages, which is unnecessarily costly, it makes the page tables of the two process point to the same physical address.
- it marks those linear addresses as read-only
- whenever one of the processes tries to write to a page, the makes a copy of the physical memory, and updates the pages of the two process to point to the two different physical addresses
Group axiom Updated 2025-07-16
List of systems programmers Updated 2025-07-16
Node.js SQLite bindings Updated 2025-07-16
x86 Paging Tutorial K-ary trees to the rescue Updated 2025-07-16
The algorithmically minded will have noticed that paging requires associative array (like Java
Map of Python dict()) abstract data structure where:The single level paging scheme uses a simple array implementation of the associative array:and in C pseudo-code it looks like this:
- the keys are the array index
- this implementation is very fast in time
- but it is too inefficient in memory
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_NBut there another simple associative array implementation that overcomes the memory problem: an (unbalanced) k-ary tree.
Using a K-ary tree instead of an array implementation has the following trade-offs:
In C-pseudo code, a 2-level K-ary tree with and we have the following arrays:
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_Nand 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:
Nazi Germany Updated 2025-07-16
There are unlisted articles, also show them or only show them.
