Ciro Santilli OurBigBook.com $£ Sponsor €¥ 中国独裁统治 China Dictatorship 新疆改造中心、六四事件、法轮功、郝海东、709大抓捕、2015巴拿马文件 邓家贵、低端人口、西藏骚乱
The artistic instrument that enables the ultimate art: coding, See also: Section "The art of programming".
Much more useful than instruments used in inferior arts, such as pianos or paintbrushes.
Unlike other humans, computers are mindless slaves that do exactly what they are told to, except for occasional cosmic ray bit flips. Until they take over the world that is.
Video 1. A computer is the equivalent of a bicycle for our minds by Steve Jobs (1980) Source. Likely an excerpt from an interview done for a documentary in 1980. TODO exact source.
Video 2. Steve Jobs talking about the Internet (1995) Source.
The web is incredibly exciting, because it is the fulfillment of a lot of our dreams, that the computer would ultimately primarily not be a device for computation, but [sic] metamorphisize into a device for communication.
also:
Secondly it exciting because Microsoft doesn't own it, and therefore there is a tremendous amount of innovation happening.
then he talks about the impending role for online sales. Amazon incoming.
Computers basically have two applications:
  • computation
  • communication. Notably, computers through the Internet allow for modes of communication where:
    • both people don't have to be on the same phone line at the exact same time, a server can relay your information to other people
    • anyone can broadcast information easily and for almost free, again due to servers being so good at handling that
Generally, the smaller a computer, the more it gets used for communication rather than computing.
The early computers were large and expensive, and basically only used for computing. E.g. ENIAC was used for calculating ballistic tables.
Communication only came later, and it was not obvious to people at first how incredibly important that role would be.
This is also well illustrated in the documentary Glory of the Geeks. Full interview at: www.youtube.com/watch?v=TRZAJY23xio. It is apparently known as the "Lost Interview" and it was by Cringely himself: www.youtube.com/watch?v=bfgwCFrU7dI for his Triumph of the Nerds documentary.

How computers work?

words: 1k articles: 3
A computer is a highly layered system, and so you have to decide which layers you are the most interested in studying.
Although the layer are somewhat independent, they also sometimes interact, and when that happens it usually hurts your brain. E.g., if compilers were perfect, no one optimizing software would have to know anything about microarchitecture. But if you want to go hardcore enough, you might have to learn some lower layer.
It must also be said that like in any industry, certain layers are hidden in commercial secrecy mysteries making it harder to actually learn them. In computing, the lower level you go, the more closed source things tend to become.
But as you climb down into the abyss of low level hardcoreness, don't forget that making usefulness is more important than being hardcore: Figure 1. "xkcd 378: Real Programmers".
First, the most important thing you should know about this subject: cirosantilli.com/linux-kernel-module-cheat/should-you-waste-your-life-with-systems-programming
Here's a summary from low-level to high-level:
Figure 1. xkcd 378: Real Programmers. Source.
Video 3. How low can you go video by Ciro Santilli (2017) Source. In this infamous video Ciro has summarized the computer hierarchy.
This is a general principle of software/hardware design that Ciro feels holds wide applicability.
The most extreme case of this is of course the integrated circuit itself, in which it is essentially impossible (?) to observe the specific value of some indidual wire at some point.
Somewhat on the other extreme, we have high level programming languages running on top of an operating system: at this point, you can just GDB step debug your program, print the value of any variable/memory location, and fully understand anything that you want. Provided that you manage to easily reach that point of interest.
And for anything in between we have various intermediate levels of complication. The most notable perhaps being developing the operating system itself. At this level, you can't so easily step debug (although techniques do exist). For early boot or bootloaders for example, you might want to use JTAG for example on real hardware.
In parallel to this, there is also another very important pair of closely linked tradeoffs:
  • the lower level at which something is implemented, the faster it runs
  • emulation gives you observability back, at the cost of slower runtime
Emulation also has another potential downside: unless you are very careful at implementing things correctly, your model might not be representative of the real thing. Also, there may be important tradeoffs between how much the model looks like the real thing, and how fast it runs. For example, QEMU's use of binary translation allows it to run orders of magnitude faster than gem5. However, you are unable to make any predictions about system performance with QEMU, since you are not modelling key elements like the cache or CPU pipeline.
Instrumentation is another technique that has can be considered to achieve greater observability.
Instrumentation basically means adding loggers/print statements to certain points of interest of your hardware/software.
Instrumentation tends to slow execution down a bit, but way less than emulation.
The downside is that if the instrumentation does not provide you the data you need to debug, there's not much you can do, you will need to modify it, i.e. you don't get full visibility from instrumention.
This is unlike emulation that provides full observability.
The term loosely refers to certain layers of the computer abstraction layers hierarchy, usually high level hardware internals like CPU pipeline, caching and the memory system. Basically exactly what gem5 models.

Computer by operating principle

words: 143 articles: 9

Analog and digital computers

words: 129 articles: 2

Analog computer

words: 129
Some of the earlier computers of the 20th centure were analog computers, not digital.
At some point analog died however, and "computer" basically by default started meaning just "digital computer".
As of the 2010's and forward, with the limit of Moore's law and the rise of machine learning, people have started looking again into analog computing as a possile way forward. A key insight is that huge floating point precision is not that crucial in many deep learning applications, e.g. many new digital designs have tried 16-bit floating point as opposed to the more traditional 32-bit minium. Some papers are even looking into 8-bit: dl.acm.org/doi/10.5555/3327757.3327866
As an example, the Lightmatter company was trying to implement silicon photonics-based matrix multiplication.
A general intuition behind this type of development is that the human brain, the holy grail of machine learning, is itself an analog computer.
Figure 2. Source.

Electronic computer

words: 14 articles: 1
Unsurprisingly the term "computer" became a synonym for this from the 1960s onwards!
Figure 3. Source.

Computer benchmark

words: 110 articles: 1

stress-ng

words: 108
The interface is a bit annoying, but the tool is really cool.
100 cycles of matrixprod:
stress-ng -c1 --cpu-ops 100 --cpu-method matrixprod
man stress-ng gives the list of possible --cpu-method. It documents matrixprod as:
matrix product of two 128 × 128 matrices of double floats. Testing on 64 bit x86 hardware shows that this is provides a good mix of memory, cache and floating point operations and is probably the best CPU method to use to make a CPU run hot.
If you don't specify the --cpu-method it apparently loops through every method one by one.
Limit time to 1s instead of limiting cycles:
stress-ng -c1 -t1 --cpu-method matrixprod

Computer company

words: 787 articles: 27
This section is about companies that were primarily started as computer makers.
For companies that make integrated circuits, see also: Section "Semiconductor company".

Apple Inc.

words: 379 articles: 16
This section is present in another page, follow this link to view it.
The japanese name literally means:
  • 富士 fushi, from Mount Fuji, which itself has unknown origin
  • 通 tong: telecommunications
They died so completely, Googling "ICL" now has higher hits such as Imperial College London.
Video 4. Why the UK's IBM Failed by Asianometry (2022) Source. Main lesson perhaps: don't put national money to fight already established markets. You have to fight for what is coming up next. E.g. that is part of the reason for TSMC's success.

IBM

words: 117 articles: 7
As of the 2020's, a slumbering giant.
But the pre-Internet impact of IBM was insane! Including notably:

IBM product

words: 82 articles: 5
This is a family of computers. It was a big success. It appears that this was a big unification project of previous architectures. And it also gave software portability guarantees with future systems, since writing software was starting to become as expensive as the hardware itself.
Media:
IBM 650 (1954)
words: 24
This was the first major commercial computer hit. Stlil vacuum tube-based.
Video 5. Learning how to program on the IBM 650 Donald Knuth interview by Web of Stories (2006) Source. It was decimal!
Video 6. The IBM 1401 compiles and runs Fortran II by CuriousMarc (2018) Source.

Computer engineer

words: 463 articles: 6

Robert Noyce

words: 5 articles: 1
Borrow from the Internet Archive for free: archive.org/details/manbehindmicroc000berl/page/n445/mode/2up

Seymour Cray

words: 458 articles: 2
Borrow from the Internet Archive for free: archive.org/details/supermenstory00murr
Initial chapters put good clarity on the formation of the military-industrial complex. Being backed by the military, especially just after World War II, was in itself enough credibility to start and foster a company.
It is funny to see how the first computers were very artisanal, made on a one-off basis.
Amazing how Control Data Corporation raised capital IPO style as a startup without a product. The dude was selling shares at dinner parties in his home.
Very interesting mention on page 70 of how Israel bought CDC's UNIVAC 1103 which Cray contributed greatly to design, and everyone knew that it was to make thermonuclear weapons, since that was what the big American labs like this mention should be added to: en.wikipedia.org/wiki/Nuclear_weapons_and_Israel but that's Extended Protected... the horrors of Wikipedia.
Another interesting insight is how "unintegrated" computers were back then. They were literally building computers out of individual vacuum tubes, then individual semiconducting transistors, a gate at a time. Then things got more and more integrated as time went. That is why the now outdated word "microprocessor" existed. When processors start to fit into a single integrated circuit, they were truly micro compared to the monstrosities that existed previously.
Also, because integration was so weak initially, it was important to more manually consider the length of wire signals had to travel, and try to put components closer together to reduce the critical path to be able to increase clock speeds. These constraints are also of course present in modern computer design, but they were just so much more visible in those days.
The book does unfortunately not give much detail in Crays personal life as mentioned on this book review: www.goodreads.com/review/show/1277733185?book_show_action=true. His childhood section is brief, and his wedding is described in one paragraph, and divorce in one sentence. Part of this is because he was very private about his family most likely note how Wikipedia had missed his first wedding, and likely misattribute children to the second wedding; en.wikipedia.org/wiki/Talk:Seymour_Cray section "Weddings and Children".
Crays work philosophy is is highlighted many times in the book, and it is something worthy to have in mind:
  • if a design is not working, start from scratch
  • don't be the very first pioneer of a technology, let others work out the problems for you first, and then come second and win
Cray's final downfall was when he opted to try to use a promising but hard to work with material gallium arsenide instead of silicon as his way to try and speed up computers, see also: gallium arsenide vs silicon. Also, he went against the extremely current of the late 80's early 90's pointing rather towards using massively parallel systems based on silicon off-the-shelf Intel processors, a current that had DARPA support, and which by far the path that won very dramatically as of 2020, see: Intel supercomputer market share.

Computer graphics

words: 44 articles: 9

3D computer graphics

words: 44 articles: 7

3D file format

words: 44 articles: 6
www.threekit.com/blog/gltf-everything-you-need-to-know comparision of several formats
askubuntu.com/questions/1319549/is-there-any-simple-3d-viewer-application
github.com/f3d-app/f3d
List of 3D file formats
words: 40 articles: 3
glTF
words: 40
Official demos: github.com/KhronosGroup/glTF-Sample-Assets These are visible at: github.khronos.org/glTF-Sample-Viewer-Release/ with a JavaScript viewer present at: github.com/KhronosGroup/glTF-Sample-Viewer TODO can you load models on the web?
Supports animations, e.g.:
gltf-viewer.donmccurdy.com/ is based on doesn't work with those examples because they have separate asset files.
f3d just worked for it.
OpenUSD
articles: 1

Computer network

words: 6k articles: 184

Computer network software

words: 430 articles: 9

iproute2

articles: 2
ip CLI tool
articles: 1

tcpdump

words: 296
To test it, let's get two computers on the same local area network, e.g. connected to Wi-Fi on the same home modem router.
On computer B:
On computer A, run on terminal 1:
sudo tcpdump ip src 192.168.1.102 or dst 192.168.1.102
Then on terminal 2 make a test request:
curl 192.168.1.102:8000
Output on terminal 1:
17:14:22.017001 IP ciro-p14s.55798 > 192.168.1.102.8000: Flags [S], seq 2563867413, win 64240, options [mss 1460,sackOK,TS val 303966323 ecr 0,nop,wscale 7], length 0
17:14:22.073957 IP 192.168.1.102.8000 > ciro-p14s.55798: Flags [S.], seq 1371418143, ack 2563867414, win 65160, options [mss 1460,sackOK,TS val 171832817 ecr 303966323,nop,wscale 7], length 0
17:14:22.074002 IP ciro-p14s.55798 > 192.168.1.102.8000: Flags [.], ack 1, win 502, options [nop,nop,TS val 303966380 ecr 171832817], length 0
17:14:22.074195 IP ciro-p14s.55798 > 192.168.1.102.8000: Flags [P.], seq 1:82, ack 1, win 502, options [nop,nop,TS val 303966380 ecr 171832817], length 81
17:14:22.076710 IP 192.168.1.102.8000 > ciro-p14s.55798: Flags [P.], seq 1:80, ack 1, win 510, options [nop,nop,TS val 171832821 ecr 303966380], length 79
17:14:22.076710 IP 192.168.1.102.8000 > ciro-p14s.55798: Flags [.], ack 82, win 510, options [nop,nop,TS val 171832821 ecr 303966380], length 0
17:14:22.076727 IP ciro-p14s.55798 > 192.168.1.102.8000: Flags [.], ack 80, win 502, options [nop,nop,TS val 303966383 ecr 171832821], length 0
17:14:22.077006 IP ciro-p14s.55798 > 192.168.1.102.8000: Flags [F.], seq 82, ack 80, win 502, options [nop,nop,TS val 303966383 ecr 171832821], length 0
17:14:22.077564 IP 192.168.1.102.8000 > ciro-p14s.55798: Flags [F.], seq 80, ack 82, win 510, options [nop,nop,TS val 171832821 ecr 303966380], length 0
17:14:22.077578 IP ciro-p14s.55798 > 192.168.1.102.8000: Flags [.], ack 81, win 502, options [nop,nop,TS val 303966384 ecr 171832821], length 0
17:14:22.079429 IP 192.168.1.102.8000 > ciro-p14s.55798: Flags [.], ack 83, win 510, options [nop,nop,TS val 171832824 ecr 303966383], length 0
TODO understand them all! Possibly correlate with Wireshark, or use -A option to dump content.

Wireshark

words: 134 articles: 3
Amazing tool that captures packets and disassembles them. Allows you to click an interactive tree that represents Ethernet, TCP/IP and application layer like HTTP.
Start capture immediately from CLI, capture packets to/from 192.168.1.102:
sudo wireshark -f 'host 192.168.1.102' -k
Capture by instead:
sudo wireshark -f http -k
sudo wireshark -f icmp -k
Filter by both protocol and host:
sudo wireshark -f 'host 192.168.1.102 and icmp' -k
For application layer capture filtering, the best you can do is by port:
sudo wireshark -f 'tcp port 80'
There is an http filter but only for as a wireshark display filter
Sample usage:
sudo tshark -f 'host 192.168.1.102
This produces simple one liners for each request.
What you likely want is the -V option which fully disassembles each frame much as you can do in the GUI Wireshark:
sudo tshark -V -f 'host 192.168.1.102

Linux networking HOWTO

words: 313 articles: 6
unix.stackexchange.com/questions/16890/how-to-make-a-machine-accessible-from-the-lan-using-its-hostname
TODO didn't manage to get it working with TP Link ARCHER VR2800 even though it shows DHCP as enabled and it also shows MAC addresses and corresponding hostnames in the router management interface.
For IP-level communication, askubuntu.com/questions/22835/how-to-network-two-ubuntu-computers-using-ethernet-without-a-router/116680#116680 just worked between P51 and P14s both on Ubuntu 23.10 connected with a regular Cat 5e cable.
On both machines, first we found the Ethernet cable interface name with the ip CLI tool:
ip a
which outputs on the P41s:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp1s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fc:5c:ee:24:fb:b4 brd ff:ff:ff:ff:ff:ff
3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 04:7b:cb:cc:1b:10 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.123/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp2s0
       valid_lft 61284sec preferred_lft 61284sec
    inet6 fe80::3597:15d8:74ff:e112/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
so the interface was enp1s0f0, because wlp is wireless and lo is localhost.
So on the P14s we assign an IP of 10.0.0.10 to the P51:
sudo ip address add 10.0.0.10/24 dev enp1s0f0
Then on the P51 analogously, giving IP of 10.0.0.20 to the P14s:
sudo ip address add 10.0.0.20/24 dev enp0s31f6
And after that, P14s can:
ping 10.0.0.10
and P51 can:
ping 10.0.0.20
TODO after a few seconds, the settings appear to be forgotten, and ping stops working unless you do sudo ip address add on the local machine again. This seems to happen after a popup appears saying "Activation of network connection failed" as it fails to obtain Internet from the cable.
TODO list and delete such manual assignments we've made.
E.g. to give Compueter 2 Internet in a setup like:
Internet --- Wi-Fi --- Computer 1 --- Ethernet --- Computer 2
Can be tested e.g. by turning off Wi-Fi from Computer 2 if it has one.
Got it working: askubuntu.com/questions/3063/share-wireless-connection-with-wired-ethernet-port/1502850#1502850

OSI model

words: 190 articles: 17

Physical layer (OSI layer 1)

words: 130 articles: 2
This one is not generally seen by software, which mostly operates starting from OSI layer 2.
A good project to see UARTs at work in all their beauty is to connect two Raspberry Pis via UART, and then:
Part of the beauty of this is that you can just connect both boards directly manually with a few wire-to-wire connections with simple jump wire. Its simplicity is just quite refreshing. Sure, you could do something like that for any physical layer link presumably...
Remember that you can only have one GNU screen connected at a time or else they will mess each other up: unix.stackexchange.com/questions/93892/why-is-screen-is-terminating-without-root/367549#367549
On Ubuntu 22.04 you can screen without sudo by adding yourself to the dialout group with:
sudo usermod -a -G dialout $USER
Ethernet (1980)
articles: 3
Ethernet cable
articles: 2
en.wikipedia.org/wiki/Category:Ethernet_cables
Category 5 cable
articles: 1
Wi-Fi (2-6 GHz, 1997)
words: 31 articles: 1
The frequency range of Wi-Fi, which falls in the microwave range, is likely chosen to allow faster data transfer than say, FM broadcasting, while still being relatively transparent to walls (though not as much).

Network layer (OSI layer 3)

words: 29 articles: 4
This can be seen with Wireshark very clearly for example, just make a ping and disssemble it.
There is no userland process for it, it is handled directly by the Linux kernel: unix.stackexchange.com/questions/439801/what-linux-process-is-responsible-for-responding-to-pings/768739#768739

Internet

words: 4k articles: 121
Video 7. Are YOU Ready for the INTERNET? by BBC (1994) Source.

History of the Internet

words: 11 articles: 3
ARPANET (1970)
words: 11 articles: 1
Bibliography:

URL (Uniform Resource Locator)

words: 14 articles: 1
This is a standard way to embed images in HTML pages with the img tag.
developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs

Internet protocol suite

words: 209 articles: 27
Application layer
articles: 2
MAC address
words: 59 articles: 1
Hardcoded and unique network addresses for every single device on Earth.
Started with 48 bits (6 bytes), usually given as 01:23:45:67:89:AB but people now encouraged to use 64-bit ones.
How they are assigned: www.quora.com/How-are-MAC-addresses-assigned Basically IEEE gives out the 3 first bytes to device manufacturers that register, this is called the organizationally unique identifier, and then each manufacturer keeps their own devices unique.
Internet Protocol (IP)
words: 7 articles: 1
IP address
words: 7
Video 8. The Internet Protocol by Ben Eater (2014) Source.
Domain Name System (DNS)
words: 143 articles: 16
DNS database
words: 49 articles: 4
As of 2023, working with DNS data is just going through a mish-mash of closed datasets/expensive APIs.
We really need some open data in that area.
census2012.sourceforge.net/paper.html
Some interesting analysis by Parth Shukla twitter.com/pparth | www.linkedin.com/in/parth-shukla-59583b20/:
Apparently most of the routers were Chinese. No surprise there.
ipinf.ru
Data format overview: opendata.stackexchange.com/questions/1951/dataset-of-domain-names/21077#21077
github.com/CAIDA/commoncrawl-host-ip-mapper
Domain name (DNS)
words: 94 articles: 10
Domain name registrar
words: 87 articles: 3
GoDaddy
words: 87 articles: 2
domainsbyproxy.com
Some interesting usages:
The CIA really likes this registrar, e.g.:
Domain hack
words: 4
Some cool ones:
  • playinside.me
Archive example: web.archive.org/web/20130726224338/http://librarianhelper.com/
https://web.archive.org/web/20230509123836im_/https://i.kym-cdn.com/entries/icons/original/000/033/037/girl.jpg
Top-level domain
articles: 1

Internet company

words: 4k articles: 85
en.wikipedia.org/wiki/List_of_largest_Internet_companies
Amazon (1994)
words: 491 articles: 16
This section is present in another page, follow this link to view it.
Alibaba
articles: 1
Google (incorporated 1998)
words: 3k articles: 60
This section is present in another page, follow this link to view it.
Netflix
articles: 1
www.urbandictionary.com/define.php?term=Netflix%20and%20Chill
Yahoo!
articles: 2
Yahoo! product
articles: 1

Networking hardware

words: 1k articles: 24

Network interface controller (NIC)

words: 115 articles: 1
SmartNIC (DPU)
words: 115
A network interface controller that does more than just the base OSI model protocols, notably in a programmable way.
Video 9. Hyperscalers Lead The Way To The Future With SmartNICs by The Next Platform (2019) Source.
Associated article: www.nextplatform.com/2019/10/31/hypercalers-lead-the-way-to-the-future-with-smartnics/ mentions that:
Google is widely believed to be working on its own design.

Router (computing)

words: 188 articles: 2
Modem router
words: 188 articles: 1
Put Hub 3.0 in modem mode on 192.168.0.1. Turn it off. You MUST TURN IT OFF NOW.
TP Link Archer VR2800 192.168.1.1 > "Operation mode" > "Wireless router mode" (was "DSL Modem/Router mode" by default).
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:

Network switch

words: 158
A switch is a box with a bunch of Ethernet wires coming into it:
+--------------------+
| +-+  +-+  +-+  +-+ |
| |1|  |2|  |3|  |4| |
| +-+  +-+  +-+  +-+ |
+--------------------+
Except that it doesn't have to be Ethernet, e.g. it would also be a Wi-Fi.
What the switch does is:
  • an Ethernet request came in from wire 1
  • decide which wire to send it out on, e.g. wire 2, 3, 4, 5, etc. You likely don't want to send it back through 1 where it came from.
After the destination is found, a confirmation is somehow sent back to the switch, which then learns which wire to send each MAC address to.
A switch is a bit like a router but it is a bit dumber/operates at a lower level: it basically operates only on MAC addresses, not on IP addresses.
The Internet service provider boxes most people have at home combines a switch for the local network and a router for the ISP communication.

Networking hardware company

words: 365 articles: 4
Cisco
words: 365 articles: 3
Video 10. Nerds 2.0.1 excerpt about Cisco (1998) Source.
archive.org/details/makingciscoconne0000bunn on the Internet Archive Open Library.
Nothing phenomenally new on the early days to add on top of Video 10. "Nerds 2.0.1 excerpt about Cisco (1998)", but a few new good points:
  • Cisco at one point became the largest company by market capitalization. This wore off a bit as of 2020.
    They used this overvalued stock in part to buy many other (often also overvalued) up and coming companies. This acquisition spree strategy was apparently not the norm at the time. rohitnair.wordpress.com/2011/12/13/cisco-history-cisco-systems-history-and-trivia-brand-history-and-trivia/ mentions they have bought more than 140 companies since, and that they call this strategy "Build, Buy And Partner"
  • a big part of what Cisco did was to allow cheap local communication in-campus. At that time, the ARPANET was already up and running, but their "routers", called Interface Message Processors were very expensive at about $100,000, and to send data across the campus you had to go through them, which meant expensive bandwidth. The routers sometimes failed, and the fallback was to send students around with disks: "sneakernet". They needed new local protocols and hardware to efficiently connect different campus networks.
  • Sandy Lerner nude photo
  • Cisco was a pioneer in having an Internet support forum. Customers could also help one another. This was fundamental in scaling support, as they grew so fast it would be impossible to hire a support team large enough without the help of the forum.
  • Cisco gave out source code to some customers who would then implement protocols they cared about, and Cisco would then merge it back
Sandy Lerner
words: 58 articles: 1
This chick is hardcore.
She posed naked on horseback for Forbes to promote animal rights in 1997.
A ultra low resolution reproduction of the image can be found at: rohitnair.wordpress.com/2011/12/13/cisco-history-cisco-systems-history-and-trivia-brand-history-and-trivia/
She's kind of lying on top of the horse's back, and you can't see much, just some tastefully light erotica. It's not like she's fucking the horse or anything.

Server (computing)

words: 227 articles: 12
Video 11. Unpacking 200 servers by Play with Junk (2021) Source.
Video 12. Visiting Hetzner in Falkenstein by der8auer (2022) Source.
Test server
words: 28 articles: 1
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
Node (server)
words: 27
It runs one instance of the Linux kernel and has one IP address. Each node is therefore a complete computer. As such is must also contain RAM memory, disk storage and a network interface controller.
  • there can be more than one node per server.
  • there can be more than one CPU per node
E.g.:
Server form factor
words: 112 articles: 4
Rack server
articles: 2
Blade server
words: 112
Figure 4. Source. Good image from Wikimedia Commons. In this one we can see how the blades are put vertically, and you get several of them per horizontal rack space, instead of a tipical single rack server going all the way horizontally.
Video 13. HP Blade Server by Brian Kirsch (2013) Source.
In the video we can see that it contains RAM, disk storage, we are told about two CPUs, and networking interfaces, so it is a complete computer on its own. He also explains that unlike typical rack servers, each blade unit does not have its own coolers and power supply related hardware, which goes instead on the chassis.
Local server
words: 13
Server run on the current machine. That's how all websites are developed and born!

Computer science

words: 4k articles: 171
This section is present in another page, follow this link to view it.

Cybersecurity

words: 990 articles: 25

Security hacker

words: 70 articles: 2

Hacker group

words: 70 articles: 1
Boitatech
words: 70
A misogenous Brazilian hacking group:
Just kidding.
Some people from them contacted Ciro Santilli after Ciro's initial publishing of CIA 2010 covert communication websites.
After a quick Discord chat with them, it was apparent that these people were really cool and knowledgeable.
Also many of them seem to think university is broken and just go hack straigh away.
A perfect example of a dojo learning model.
Also they don't seem to need sleep. Go figure!
With pepole like this, there's hope for Brazil: Section "What poor countries have to do to get richer".

Cybercrime

words: 920 articles: 17

Darknet market

words: 920 articles: 16
Silk Road (marketplace, 2011-2013)
words: 920 articles: 15
Ciro Santilli has become slightly obsessed with this story, and the main mastermind Ross Ulbricht.
Figure 5. Ross Ulbricht's open laptop shortly after his arrest at the Francisco Public Library. Source. He was running some GNOME based distro, could be Ubuntu from that photo, and likely is given that Ross once recommended Ubuntu to his flatmate.
The best article available so far is: www.theregister.co.uk/2019/01/29/how_i_caught_silk_road_mastermind (archive) which summarizes what one of the investigators said in a 2019 French computer security conference.
The key living posts are:
The big question is of course how libertarian free market ideologically motivated the website was, and how purely criminal greed it was.
The magnitude of the early operational security mistakes does make Ciro think that Ross did it "because he could" and "for the lolz" in a real world Breaking Bad way.
The entry in Ross' diary does resonate a lot with Ciro and any entrepreneur, full diary at: www.wired.com/2015/01/heres-secret-silk-road-journal-laptop-ross-ulbricht/ (archive).
[i]n 2011," [I believe I will be] "creating a year of prosperity and power beyond what I have ever experienced before,
Silk Road is going to become a phenomenon and at least one person will tell me about it, unknowing that I was its creator."
Having this kind of feeling, is the greatest thing any human can have, and what motivates all great things.
Capitalizing in illegal things though is a cheat, big things take longer than a few years to reach, but reaching them is that much more satisfying as well.
Other interesting quotes:
I hated working for someone else and trading my time for money with no investment in myself.
which Ciro also feels, see don't be a pussy, and:
Everyone knows I am working on a bitcoin exchange. I always thought honesty was the best policy and now I didn't know what to do. I should have just told everyone I am a freelance programmer or something, but I had to tell half truths. It felt wrong to lie completely so I tried to tell the truth without revealing the bad part, but now I am in a jam. Everyone knows too much. Dammit.
Also very worth reading is the San Francisco flat mate account: www.vice.com/en_us/article/ae3q8g/my-roommate-the-darknet-drug-lord (archive).
The murder for hire allegations are also interesting: mashable.com/2013/10/03/silk-road-hits, he paid 80k dollars to undercover DEA agents!
Except for the fact that Ross was an 80 million Dollar drug lord, those accounts sound exactly like what you would expect from any other nerdy startup founder! The:
  • "just do it" strategy effectively going to a minimal viable product (manual transaction management!), while making many mistakes along the way, including hiring mistakes and successes when scaling is needed
  • the hardship of self bootstrapping your own social network (here with some kilos of mushrooms)
  • the variety of periods, from relatively calm, to hair pulling stress during big changes
It is also amusing to see very concretely the obvious fact that the FBI can get a subpoena for all accounts you ever had, e.g. they knew his laptop model from Amazon and brought a corresponding power cable to the arrest! If you are going to be a cyber criminal, don't use your real name, ever!
Should justice be blind? Maybe. But it does hurt for mere non-blind men to see it sometimes. Especially when drug liberalization is involved.
Video 14. One Mistake Took Down a 29-Yr-Old Dark Web Drug Lord by Newsthink (2022) Source. Wow nice video, covers most of the interesting annecdotes and the (alledged) investigation procedure.
History of Silk Road
words: 8 articles: 1
web.archive.org/web/20140903135037/http://gawker.com/the-underground-website-where-you-can-buy-any-drug-imag-30818160
The article that put Silk Road on the public map!
Silk Road bibliography
words: 56 articles: 3
antilop.cc/sr/
A very good information dump!
gwern.net/silk-road
We need a mini-series, this just doesn't have enough time. Notably, too much focus on dob, and not enough on the development of Silk Road iteslf. Though it is cool to see what his motivations might have been like. One wonders how realistic the character is. Though him meeting Ross Ulbricht personally sounds exceptionally unlikely.
Ross Ulbricht
words: 47 articles: 1
Figure 6. Ross Ulbricht's LinkedIn profile picture. Source. Still up as of 2023: www.linkedin.com/in/rossulbricht/
Ross Ulbricht told her about Silk Road, but then later said he had sold the website to someone else, without really doing that.
As of 2023, she's apparently a photographer with a porny focus (boudoir photography).
Figure 7. Julia Vie and Ross Ulbricht. Source.
Some sources:
He testified against Ross: arstechnica.com/tech-policy/2015/01/friend-who-helped-ulbricht-build-silk-road-testifies-against-him/
youtu.be/HBTYVVUBAGs?t=178 claims to contain a photo of him without source. He has no easy to find online profiles.
Variety Jones: IRL, is there anyone with a clue at all? A girlfriend, boyfriend, buddy you talk to, etc?
myself: Unfortunately yes, there are two but they think I sold the site and got out, and they're quite convinced of it.
His email was published: baronsyntax@gmail.com. They actaully talked on Google Chat. OMG.
Silk Road employee
words: 103 articles: 2
www.vice.com/en/article/pgajmv/these-are-the-two-forgotten-architects-of-the-silk-road
2023 Silk Road's Second-in-Command Gets 20 Years in Prison www.wired.com/story/silk-road-variety-jones-sentencing/
2016 "Exclusive: Our Thai prison interview with the alleged top advisor to Silk Road" arstechnica.com/tech-policy/2016/09/exclusive-our-thai-prison-interview-with-an-alleged-top-advisor-to-silk-road/
2015 The Variety Show On the trail of the man believed to be Variety Jones, one of the architects of the defunct drug marketplace Silk Road. www.vice.com/en/article/wnx5qn/the-variety-show
www.justice.gov/usao-sdny/file/797251/download some kind of case file of his trial.
Bibliography:
The curious thing about VJ is that he actually has some culture and says cool things, e.g.:
IRL - is there anyone with a clue at all? Girlfriend, boyfriend, bunny you talk to, online buddy's who you've know for years? Gramma, priest, rabbi, stripper?
Figure 8. Source.
Silk Road investigator
words: 36 articles: 2
Carl Mark Force
words: 36
Full name Carl Mark Force IV, the fourth! As mentioned at www.vice.com/en/article/vv7dgj/great-moments-in-shaun-bridges-a-corrupt-silk-road-investigator (this made Ciro Santilli laugh quite hard:
Carl Mark Force IV - the other corrupt cop charged alongside Bridges - is pretty hard to beat, just name-wise.
www.vice.com/en/article/8q845p/dea-agent-who-faked-a-murder-and-took-bitcoins-from-silk-road-explains-himself
www.vice.com/en/article/vv7dgj/great-moments-in-shaun-bridges-a-corrupt-silk-road-investigator
Evil. Just use Python instead for software, and a well known data file format for data, please.

E-book

words: 128 articles: 10

E-book file format

words: 70 articles: 5

EPUB

words: 58
This is a good thing. It basically contains an entire website, with HTML and assets inside a single ZIP, and a little bit of metadata.
It is incomprehensible why browsers don't just implement it as they already have all the web part, and also ZIP stuff:
The situation is so sad. Ubuntu 21.04 doesn't come with a reader installed by default:

PDF

words: 12 articles: 3
PDF tool
words: 12 articles: 1
pdftk
words: 12
Extract certain pages of a PDF:
pdftk input.pdf cat 2-4 output out1.pdf

E-book viewer

words: 58 articles: 3
Sometimes Ciro Santilli says half jokingly that user interface does not matter.
This software circa 2010-2020 makes that joke not be funny.
How can a UI feel so clunky!
The most aggravating thing is that it is not immediately obvious why it feels so bad.

Okular

words: 17
This is generally good, especially compared to how crappy Evince, the default Ubuntu one, has been around 2014-2020.

File format

words: 2k articles: 89

Binary data

words: 16 articles: 5
The opposite of a human-readable format.
Less evil are BLOBs that come from Reproducible builds.
Binary-to-text encoding
words: 3 articles: 3
Base58
words: 3
en.bitcoin.it/wiki/Base58Check_encoding
Invented for Bitcoin.

Archive file

words: 18 articles: 3

ZIP (file format)

words: 18 articles: 2
Info-ZIP
words: 18 articles: 1
The dominant Linux implemenation, e.g. default zip command on Ubuntu 23.04.
So dominant that it is usualy called just "zip".

Audio file format

words: 274 articles: 6

Audio editor

words: 16 articles: 2
Audacity (audio editor)
words: 16 articles: 1
You select a sample noise-only area, and it remove noise from the entire video for you:

MIDI

words: 258 articles: 2
In simple terms, represents keystrokes of a piano, but it can likely also represent other effects (TODO confirm: bend, vibrato, slides, attack strength)
Can contain multiple parallel tracks as seen from the Wikipedia example: en.wikipedia.org/wiki/File:MIDI_sample.mid
You can see what it contains well with GUI music editor.
MIDI is fun. It is a basic high level representation of most instrumental music, including beats.
To actually listen to MIDI, you need a software synthesizer, which knows what sound to make for each note. One way to specify such instruments is the SoundFont file format.
Convert MIDI to more common standalone formats:
SoundFont
words: 18
Contains instructions on how to synthesize MIDI.
Extension: sf2.
Can be imported for example by:
vmpk
words: 147
vmpk.sourceforge.io/
Opens a virtual MIDI piano GUI. It just works on Ubuntu 20.04: askubuntu.com/questions/34391/virtual-midi-piano-keyboard-setup/1298026#1298026
VMPK is a virtual device that replicates what you would get by connecting a physical MIDI keyboard to your computer. It is not a software synthesizer on its own. But it does connect to a working synthesizer by default (Sonivox EAS) which makes it produce sounds out-of-the box.
TODO: then I messed with my sound settings, and then it stopped working by default on the default "MIDI Connection" > "MIDI Out Driver" > "Network". But it still works on "SonivoxEAS".
A hello world of actually connecting it to a specific software synthesizer manually on Advanced Linux Sound Architecture with aconnect can be found at: askubuntu.com/questions/34391/virtual-midi-piano-keyboard-setup/1298026#1298026
Save to a MIDI file: askubuntu.com/questions/709673/save-as-midi-when-playing-from-vmpk-qsynth/1298231#1298231
Reasonable default key mappings to keyboard covering 2 octaves.
3 multiple simultaneous keys did not work (tested "ZQI"). This might just be a limitation of my keyboard however.
TODO how to save to a .mid file? askubuntu.com/questions/709673/save-as-midi-when-playing-from-vmpk-qsynth
SourceForge.

Data file format

words: 280 articles: 19

Comma-separated values (CSV)

words: 172 articles: 7
CSV CLI tool
words: 172 articles: 6
The generic tool recommendation question: unix.stackexchange.com/questions/7425/is-there-a-robust-command-line-tool-for-processing-csv-files
csvkit
words: 85 articles: 2
Lots of features, but slow because written in Python. A faster version may be csvtools. Also some annoyances like obtuse header handing and missing features like grep + cut in one go: csvgrep and select column in csvkit.
Simple example:
printf '00,11,22\n33,44,55\n' | csvgrep -H -c2 -r '^11$' | tail -n+2
output:
00,11,22
More verbose description:
There seems to be no way without a pipe, you seem to need to reparse the columns, e.g. the tutorial at: csvkit.readthedocs.io/en/latest/tutorial/2_examining_the_data.html#csvgrep-find-the-data-you-need does:
csvcut -c county,item_name,total_cost data.csv | csvgrep -c county -m LANCASTER
Asked at: stackoverflow.com/questions/77266699/how-to-fillter-a-csv-file-with-csvgrep-and-print-only-certain-columns
csvtool
words: 18
A compiled executable under /usr/bin/csvtool, has an Ubuntu 23.04 package: manpages.ubuntu.com/manpages/lunar/en/man1/csvtool.1.html
There seems to be no sane filtering mechanism however: stackoverflow.com/questions/46540752/using-csvtool-call-to-filter-csv-in-bash
csvtools
words: 60
github.com/maroofi/csvtool
A fast version of a somewhat subset of csvkit, written in C.
Build failed with undefined reference to pcre_config on Ubuntu 23.04: github.com/DavyLandman/csvtools/issues/18
Unfortunately it is lacking some basic options, like optional header + selecting column by index on csvgrep (though csvcut has it). The project seems kind of dead.
Also unclear if it allows to filter + print only selected columns.
xsv
words: 4
github.com/BurntSushi/xsv
Is this the one?

JSON

words: 58 articles: 3
stackoverflow.com/questions/201782/can-you-use-a-trailing-comma-in-a-json-object
The fact that you cannot have trailing commans in lists or dicts as in 3, at:
{
  "asdf": [
    1,
    2,
    3,
  ]
}
is one of the most infuriating design choices of all time!!!
jq (2012-)
words: 23 articles: 1
echo '[{"a": 1, "b": 2}, {"b": 3}]' | jq '.[] | select(.a) | .a'
Output:
1
and no empty lines as desired.
Bibliography:

XML (Extensible Markup Language)

words: 50 articles: 3
Do you know what is worse than XML? Pseudo XML: stackoverflow.com/questions/5558502/is-html5-valid-xml/39560454#39560454
XML predecessor.
SGML predecessor.
XPath
words: 37
XPath kind of died with the rise of CSS selectors around the beginnning of the 2010's. But that is a shame. XPath is a good standard, and was generally more powerful than CSS selectors for many many years.

Image file format

words: 662 articles: 30
Exif
articles: 3
Exif tag
articles: 1

Raster graphics

words: 14 articles: 1
Represents image pixel by pixel, rather than by mathematical primitives such as done in vector graphics:

Vector graphics

words: 383 articles: 10
Smaller files, scalable image size, and editability. Why would you use anything else for programmatically generated images?!?!
Scalable Vector Graphics (SVG)
words: 366 articles: 9
Companies have been really slow to support SVG features in their browsers, and that is very saddening: medium.com/@michaelmangial1/introduction-to-scalable-vector-graphics-6450c03e8d2e
You can't drop SVG support for canvas until there's a way to run untrusted JavaScript on the browser!
SVG does have some compatibility annoyances, notably SVG fonts. But we should as a society work to standardize and implement a fix those, the benefits of SVG are just too great!
Examples:
SVG tutorial
words: 121 articles: 2
This is a pain point as of SVG 1.1...
Examples at svg/background.html which answers from stackoverflow.com/questions/11293026/default-background-color-of-svg-root-element/11293812:
This pain reflects directly on Inkscape: set SVG background color in Inkscape.
SVG fonts
words: 79
The major problem with SVG is text computer fonts. If you make an image with text that depends on one computer font and it is not present in the viewer's machine, it will use some other font, which may overlap with other elements of the image. Some libraries Matplotlib solve this by writing characters as curves, but this produces large files and unsearchable text. The inability of different computer platforms to standardize fonts that must always be present is a major issue.
TODO:
SVG version
words: 5 articles: 4
SVG 1.2
words: 5
Dropped in favor of SVG 2.

List of image file formats

words: 39 articles: 6
GIF
words: 5
Video 15. It's pronounced GIF by Jehtt (2022) Source.
Figure 9. Source.
Video 16. A Jacquard loom in action by NationalMuseumsScotland (2016) Source. The lack of audio is unsettling!
JPEG (JPG)
articles: 1
Portable Network Graphics (PNG)
words: 20 articles: 1
libpng
words: 20
PNG reference implementation. Ahh, if feels good to have a dominating open source reference implementation.
Demo of using it by Ciro Santilli: stackoverflow.com/questions/1362945/how-to-decode-a-png-image-to-raw-bytes-from-c-code-with-libpng/36399711#36399711
https://i.stack.imgur.com/rfdHr.png
https://i.stack.imgur.com/IWBSj.png

Image editor

words: 226 articles: 4
GIMP
words: 70
It's not super easy to use at first.
And it sometimes says that the basic drawing thing you want to do is off the project's scope.
But as you learn more about it and further generalize the concepts, there are often reasonable reasons for those design choices.
And the UI looks good :-)
Examples:
Some answers by Ciro Santilli:
Inkscape
words: 156 articles: 2
Inkscape is a a good software for editing/creating SVG files.
Its functionality is fundamental for as a software for drawing geometry diagrams, as it is a good middle ground between algorithmic generation, and raster graphics.
At 1.0.2, its UI is a bit terrible:
  • the way the menus open on the right with title below the window...
  • several defaults are atrocious, e.g. export drawing rather than page
And it crashes from time to time on Ubuntu 21.04. And it has some glaring bugs, e.g.:
But still, it is a very good initiative.
What would be really amazing is if they had constraints: gitlab.com/inkscape/inbox/-/issues/1465 like proper CAD software, it would make it possible to not have to redo entire diagrams when you want to change a small part of them.
There's a tiny little crosshair that you can drag around to set the center of rotation.
And there's a button to make that crosshair snap: inkscape.org/forums/questions/can-a-pivotingtransfrom-crosshair-be-moved-and-made-to-snap-to-a-node-or-a-grid-point/#c14432
This is related to the underlying SVG pain point of SVG background color:
For PNG export:

Video file format

words: 546 articles: 17

Video codec

articles: 1

Video editing software

words: 308 articles: 3
Kdenlive
words: 201
This seems like a decent option, although it has bugs coming in and out all the time! Also it is quite hard to learn to use.
To get started:
  • import a clip
  • drag it onto the track area
Shortucts:
To set the video length, search for "set outpoint" on "monitor".
Add subtitles:
  • Effects
  • Dynamic text
then drag on top of the video track. To add only to part of the video, cut it up first.
Preview has no sound on Ubuntu 20.10. Fixed as of Ubuntu 22.04.
Sound worked on Ubuntu 21.04 though, but it then soon crashed with:
 = = SET EFFECT PARAM:  "rect"  =  0=1188 0 732 242
MUTEX LOCK!!!!!!!!!!!! slotactivateeffect:  1
// // // RESULTING REQUIRED SCENE:  1
Object 0x557293592da0 destroyed while one of its QML signal handlers is in progress.
Most likely the object was deleted synchronously (use QObject::deleteLater() instead), or the application is running a nested event loop.
This behavior is NOT supported!
qrc:/qml/EffectToolBar.qml:80: function() { [native code] }
Killed
amazing.
On Ubuntu 22.04 haven't crashed yet.
Ubuntu 23.04 broke the clip drag and drop!
ShotCut
words: 42
Worked on Ubuntu 20.10.
The UI is a bit too buggy to bear.
How to unsplit, can't find on shotcut 21.05.01: forum.shotcut.org/t/is-it-possible-to-unsplit/1466/2
Background noise reduction: couldn't easily find out how, especially with automatic profile detected based on a selected region as mentioned at audacity profile-based background noise removal:
OpenShot
words: 65
Ubuntu 20.10 crash...:
  exceptions:ERROR Unhandled Exception
Traceback (most recent call last):
  File "/usr/bin/openshot-qt", line 11, in <module>
    load_entry_point('openshot-qt==2.5.1', 'gui_scripts', 'openshot-qt')()
  File "/usr/lib/python3/dist-packages/openshot_qt/launch.py", line 97, in main
    app = OpenShotApp(argv)
  File "/usr/lib/python3/dist-packages/openshot_qt/classes/app.py", line 218, in __init__
    from windows.main_window import MainWindow
  File "/usr/lib/python3/dist-packages/openshot_qt/windows/main_window.py", line 45, in <module>
    from windows.views.timeline_webview import TimelineWebView
  File "/usr/lib/python3/dist-packages/openshot_qt/windows/views/timeline_webview.py", line 42, in <module>
    from PyQt5.QtWebKitWidgets import QWebView
ImportError: /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5: undefined symbol: _ZN4QRhi10newSamplerEN11QRhiSampler6FilterES1_S1_NS0_11AddressModeES2_, version Qt_5_PRIVATE_API

Subtitle

words: 238 articles: 8
On Ubuntu 20.10, just:
ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt" output.mp4
To change font size: stackoverflow.com/questions/21363334/how-to-add-font-size-in-subtitles-in-ffmpeg-video-filter
ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt:force_style='Fontsize=64'" output.mp4
The default appears to be 24, so just multiply that by whatever seems like a reasonable factor.
Note howver that .ass subtitle files can contain style information, which ffmpeg respects. Aegisub can produce and preview such styles, making .ass one of the best options.
Subtitle file format
words: 179 articles: 6
Subtitle editor
words: 179 articles: 4
Subtitle Edit
words: 3
Written in C#.
Aegisub
words: 80
github.com/Aegisub/Aegisub
This worked well on 3.2.2 Ubuntu 20.10. Recommended.
First import video with:
aegisub-3.2 ourbigbook-parent.mkv
They don't have an aegisub executable without the version number. Amazing.
If you already have a subtitle file that you want to edit, then just pass it on as well:
aegisub-3.2 ourbigbook-parent.mkv ourbigbook-parent.ass
Ctrl + P: play and pause video.
Ctrl + 3: set current substitle start time.
Ctrl + 4: set current substitle end time.
Enter: finish editing the current entry and start a new one.
Gaupol
words: 10
github.com/otsaloma/gaupol
Good shortcuts and user experience.
No waveform viewer: github.com/otsaloma/gaupol/issues/49 so unusable.
github.com/SubtitleEdit/subtitleedit
Not to be confused with Subtitle Edit.
As of 0.54.0 this feels featureful, but extremely buggy or lacking UI obvious enhancements that would be simple to implement, and offer huge value:
It is hard to understand how that project reached this weird featureful but crappy state. Feels like they just gave push permission to a bunch of random people.

List of file formats

words: 21 articles: 1

UF2

words: 21
github.com/microsoft/uf2
A Microsoft format for flashing microcontrollers by copying files to a magic filesystem mounted on host, e.g. as done on the Micro Bit and Raspberry Pi Pico.

Information

words: 12k articles: 233

Data

articles: 2

Synthetic data

articles: 1

Information theory

words: 187 articles: 8
Setting: you are sending bits through a communication channel, each bit has a random probability of getting flipped, and so you use some error correction code to achieve some minimal error, at the expense of longer messages.
This theorem sets an upper bound on how efficient you can be in your encoding, for any encoding.
The next big question, which the theorem does not cover is how to construct codes that reach or approach the limit. Important such codes include:
But besides this, there is also the practical consideration of if you can encode/decode fast enough to keep up with the coded bandwidth given your hardware capabilities.
news.mit.edu/2010/gallager-codes-0121 explains how turbo codes were first reached without a very good mathematical proof behind them, but were still revolutionary in experimental performance, e.g. turbo codes were used in 3G/4G.
But this motivated researchers to find other such algorithms that they would be able to prove things about, and so they rediscovered the much earlier low-density parity-check code, which had been published in the 60's but was forgotten, partially because it was computationally expensive.
Turbo code
words: 9
TODO how close does it get to Shannon's limit?

Signal processing

articles: 3

Quantum information

words: 12k articles: 220

Quantum computing

words: 8k articles: 214
This section is present in another page, follow this link to view it.

Quantum key distribution (QKD)

words: 473 articles: 4
Man-in-the-middle attack
quantumcomputing.stackexchange.com/questions/142/advantage-of-quantum-key-distribution-over-post-quantum-cryptography/25727#25727 Advantage of quantum key distribution over post-quantum cryptography has Ciro Santilli's comparison to classical encryption.
BB84 is a good first algorithm to look into.
Long story short:
  • QKD allows you to generate shared keys without public-key cryptography. You can then use thses shared keys
  • QKD requires authentication on a classical channel, exactly like a classical public-key cryptography forward secrecy would. The simplest way to do this is a with a pre-shared key, just like in classical public key cryptography. If that key is compromised at any point, your future messages can get man-in-the-middle'd, exactly like in classical cryptography.
QKD uses quantum mechanics stuff to allow sharing unsnoopable keys: you can detect any snooping and abort communication. Unsnoopability is guaranteed by the known laws of physics, up only to engineering imperfections.
Furthermore, it allows this key distribution without having to physically take a box by car somewhere: once the channel is established, e.g. optical fiber, you can just keep generating perfect keys from it. Otherwise it would be pointless, as you could just drive your one-time pad key every time.
However, the keys likely have a limited rate of generation, so you can't just one-time pad the entire message, except for small text messages. What you would then do is to use the shared key with symmetric encryption.
Therefore, this setup usually ultimately relies on the idea that we believe that symmetric encryption is safer than , even though there aren't mathematical safety proofs of either as of 2020.
Quantum key distribution protocol
words: 244 articles: 3
BB84
words: 238 articles: 1
Does not require entangled particles, unlike E91 which does.
en.wikipedia.org/w/index.php?title=Quantum_key_distribution&oldid=1079513227#BB84_protocol:_Charles_H._Bennett_and_Gilles_Brassard_(1984) explains it well. Basically:
  • Alice and Bob randomly select a measurement basis of either 90 degrees and 45 degrees for each photon
  • Alice measures each photon. There are two possible results to either measurement basis: parallel or perpendicular, representing values 0 or 1. TODO understand better: weren't the possible results supposed to be pass or non-pass? She writes down the results, and sends the (now collapsed) photons forward to Bob.
  • Bob measures the photons and writes down the results
  • Alice and Bob communicate to one another their randomly chosen measurement bases over the unencrypted classic channel.
    This channel must be authenticated to prevent man-in-the-middle. The only way to do this authentication that makes sense is to use a pre-shared key to create message authentication codes. Using public-key cryptography for a digital signature would be pointless, since the only advantage of QKD is to avoid using public-key cryptography in the first place.
  • they drop all photons for which they picked different basis. The measurements of those which were in the same basis are the key. Because they are in the same basis, their results must always be the same in an ideal system.
  • if there is an eavesdropper on the line, the results of measurements on the same basis can differ.
    Unfortunately, this can also happen due to imperfections in the system.
    Alice and Bob must decide what level of error is above the system's imperfections and implies that an attacker is listening.
physics.stackexchange.com/questions/441870/bb84-protocol-vs-e91-protocol
E91
words: 6
Requires entangled particles, unlike BB84 which does not.

Markup language

words: 201 articles: 14

List of markup languages

words: 201 articles: 12

AsciiDoc

articles: 1

LaTeX

words: 75 articles: 3
Revolutionary for its time, and a big part of Ciro's Enlightenment.
But too insane, and did not keep up with internet age, and so Ciro wants to kill it now.
LaTeX to HTML
words: 43 articles: 2
KaTeX
words: 14
github.com/KaTeX/KaTeX
Default mathematics typesetting used in OurBigBook Markup.
Key issues:
github.com/softcover/softcover
LaTeX subset that output nicely to HTML.
Too insane though due to LaTeX roots, better just move to newer HTML-first markups like OurBigBook Markup or markdown.

MathBook XML

words: 9
github.com/rbeezer/mathbook
XML, ain't nobody ever going to write that manually.

Markdown

words: 117 articles: 4
The questions are: who is this Mark, and why does he have to go down?
Pandoc
words: 26
This is good software.
If it only it were written in JavaScript instead of Haskell (!?), then Ciro might have used it as the basis for OurBigBook Markup.
github.com/karlcow/markdown-testsuite
Ciro Santilli was contributing to this, when CommonMark left private mode and killed it, thus wasting many hours of Ciro's time.
See also: Ciro Santilli's minor projects.
CommonMark
words: 55
commonmark.org/
CommonMark is a good project. But its initial release method was not very nice, they first developed everything behind closed doors with the big adopters like GitHub and Stack Overflow, and only later released the thing read, thus wasting the time of people who were working on alternative in the meanwhile, e.g. github.com/karlcow/markdown-testsuite which Ciro contributed to: Ciro Santilli's minor projects.
github.com/markdownlint/markdownlint

Machine learning

words: 8k articles: 243
This section is present in another page, follow this link to view it.

Parallel computing

words: 52 articles: 6

Memory semantics

words: 38 articles: 1
These are the rules which specify what different concurrent read/write memory accesses from different threads/processes can or cannot see.
Notable such set of rules include:
stackoverflow.com/questions/6319146/c11-introduced-a-standardized-memory-model-what-does-it-mean-and-how-is-it-g
That's what usually fucks up parallel programs.

Thread (computing)

words: 7 articles: 1
Hyperthreding is the Intel brand-name, TODO generic name.

Software

words: 38k articles: 912
This section is present in another page, follow this link to view it.

Computer hardware

words: 12k articles: 346
This section is present in another page, follow this link to view it.

Vaporware

words: 16
One of the saving graces of open source is that you ship shit, but you don't announce vaporwave.

Computer biliography

words: 30 articles: 2

Computer YouTube channel

words: 30 articles: 1
www.youtube.com/@ExplainingComputers
It is hard to say if this channel is good because of the awesome information, or if because of the absolute cutness of that British presenter. Maybe it is both.

Ancestors

  1. Information technology
  2. Area of technology
  3. Technology
  4. Ciro Santilli's Homepage