Ciro's call hierarchy notation Updated 2025-07-16
This is a simple hierarchical plaintext notation Ciro Santilli created to explain programs to himself.
It is usuall created by doing searches in an IDE, and then manually selecting the information of interest.
It attempts to capture intuitive information not only of the call graph itself, including callbacks, but of when things get called or not, by the addition of some context code.
For example, consider the following pseudocode:
f1() {
}

f2(i) {
  if (i > 5) {
    f1()
  }
}

f3() {
  f1()
  f2_2()
}

f2_2() {
  for (i = 0; i < 10; i++) {

    f2(i)
  }
}

main() {
  f2_2()
  f3()
}
Supose that we are interested in determining what calls f1.
Then a reasonable call hierarchy for f1 would be:
f2(i)
  if (i > 5) {
    f1()

  f2_2()
    for (i = 0; i < 10; i++) {
      f2(i)

    main
    f3
f3()
  main()
Some general principles:
  • start with a regular call tree
  • to include context:
    • remove any blank lines from the snippet of interest
    • add it indented below the function
    • and then follow it up with a blank line
    • and then finally add any callers at the same indentation level
Ciro's everyone gets a raise story Updated 2025-07-16
Once upon a time, when Ciro worked at a company, one day the company decided to give everyone a 20% raise.
The likely reason was that Apple was coming to town, and was sucking the fuck out of the company's talent.
Nothing ever drove it so clearly into Ciro's heart the obvious fact that even for skilled jobs, companies don't pay you what you're worth. They pay you as little as possible so you won't quit to join someone else. It is pure market forces in play.
The annoying thing is that people are highly non-fungible, so much like painting auctions, you can only estimate your price by putting yourself on auction and seeing what people will pay for you, i.e. interviewing for new jobs.
Another point is that people have all sorts of stupid restrictions such as not wanting to work on certain areas for moral reasons, or not wanting to move away from a certain area they like. Companies will of course readily exploit such weakness to be able to pay less. Silly non-rational beings.
Ciro's nc HTTP test server Updated 2025-07-16
As per stackoverflow.com/a/52351480/895245 our standard test setup is:
while true; do
  resp=$"$(date): hello\n"
  len="$(printf '%s' "$resp" | wc -c)"
  printf "HTTP/1.1 200 OK\r\nContent-Length: $len\r\n\r\n${resp}\n" | nc -Nl 8000
done
Cirq Updated 2025-07-16
Cisco Updated 2025-07-16
Video 1.
Nerds 2.0.1 excerpt about Cisco (1998)
Source.
City of London Updated 2025-07-16
The City of London is an obscene thing. Its existence goes against the will of the greater part of society. All it takes is one glance to see how it is but a bunch of corruption. See e.g.: The Spiders' Web: Britain's Second Empire.
Clade Updated 2025-07-16
Cladogram Updated 2025-07-16
TODO vs Phylogenetic tree? www.visiblebody.com/blog/phylogenetic-trees-cladograms-and-how-to-read-them:
Cladograms and phylogenetic trees are functionally very similar, but they show different things. Cladograms do not indicate time or the amount of difference between groups, whereas phylogenetic trees often indicate time spans between branching points.
Classical computer Updated 2025-07-16
In the context of quantum computing of the 2020's, a "classical computer" is a computer that is not "quantum", i.e., the then dominating CMOS computers.
Classification of closed surfaces Updated 2025-07-16
So simple!! You can either:
A handle cancels out a Möbius strip, so adding one of each does not lead to a new object.
You can glue a Mobius strip into a single hole in dimension larger than 3! And it gives you a Klein bottle!
Intuitively speaking, they can be sees as the smooth surfaces in N-dimensional space (called an embedding), such that deforming them is allowed. 4-dimensions is enough to embed cover all the cases: 3 is not enough because of the Klein bottle and family.

Unlisted articles are being shown, click here to show only listed articles.